MapModule模块 基于folium的二次封装,让绘图更简洁

news2024/11/14 22:04:13

背景

开源库 GpsAndMapMapModule 模块基于 folium 模块进行了二次封装,引入 GpsModule 模块中的GPS坐标类作为数据基础,集成了10+种地图瓦片可以直接添加引用,提供了直观便利的图层管理功能。

引入模块

pip install GpsAndMap

模块结构

MapModule 模块提供了以下类型的定义

  • 【颜色名】枚举定义
  • 【热力点类】定义
  • 【图标样式类】定义
  • 【提示样式类】定义
  • 【消息样式类】定义
  • 【封闭图形样式类】定义
  • 【线条样式类】定义
  • 【线上文本样式类】定义
  • 【网页标题样式类】定义
  • 【图标标记类】定义
  • 【圆圈标记类】定义
  • 【正多边形标记类】定义
  • 【蚂蚁路径标记类】定义
  • 【矩形标记类】定义
  • 【多边形标记类】定义
  • 【折线类】定义
  • 【参考线类】定义
  • 【热力层类】定义
  • 【图层类】定义
  • 【地图类】定义

依赖说明

GpsAndMap 依赖于以下模块:

  • DebugInfo
  • folium
  • 其它标准库

开源地址

GpsAndMap开源于:GpsAndMap

功能说明与示例代码

👉MapModule 模块支持folium.Map对象生成与对应的html文档生成,支持简单的图层管理

👉MapModule 模块支持添打点(Marker)标记, 圆圈(Circle)标记, 多边形/正多边形(Polygon)标记,折线(PolyLine)标记,以及这些标记上附带的弹窗消息,提示消息,以及样式信息

👉MapModule 模块支持添加热力图,支持添加经度参考线,支持添加纬度参考线

👉MapModule 模块支持添加坐标拾取,鼠标打点,鼠标绘图,蚂蚁路径等folium.plugins功能

👉MapModule 模块支持直接添加和使用10+种瓦片底图,包括google, 高德系列, 智图GeoQ系列

👇 以代码演示了如何向地图中添加指定的瓦片底图, 并将Map对象保存为html以供阅览

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类(中心点=常用坐标.北京市).添加瓦片.高德地图().智图GeoQ().地图

地图.保存html(目标路径='.').打开()

👆以上生成的html地图如下👇,可以看到有高德地图和智图GeoQ两个瓦片图层
GpsAndMap 之 MapModule 模块  瓦片图层效果

👇 以下代码添加了所有支持的瓦片图,可以看到当前总共支持直接添加13种不同的瓦片底图。

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.添加所有.地图

地图.保存html(目标路径='.')

GpsAndMap 之 MapModule 模块  瓦片图层效果

👇下面的代码,我们在北京市位置添加一个基地图标

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.智图GeoQ().地图

地图.添加基地(常用坐标.北京市)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  基地的图标效果

👇下面的代码中,我们通过图标标记类来添加基地图标,在图标标记类中,我们通过消息样式,图标样式,提示样式, 详细的定义了所添加的图标标记的样式

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.智图GeoQ().地图

地图.添加基地(图标标记类(位置=常用坐标.北京市,
              消息=消息样式类(消息='我是北京,中国欢迎您!', 默认显示=True),
              图标=图标样式类(名称='glyphicon-arrow-right', 颜色=颜色名., 角度_度=-45),
              提示=提示样式类(消息='45度仰望天窗', 粘性=True)
              ))

# 图标的名称,你可以在这里找到一些常用的图标
# https://v3.bootcss.com/components/

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  图标标记 弹窗消息 提示消息效果

👇下面的代码中, 我们添加了一个图层(我的图层), 在这个图层上, 我们分别在上海的位置添加了一个圆圈,在常州的位置添加了一个正三角形,在南通的位置添加了一个图标,在南京的位置添加了一个正方形.这些标记分别使用了不同的颜色样式和线条样式

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

我的图层 = 地图.添加图层(图层名称='我的图层', 默认显示=True)

# 在上海位置添加一个圆圈标记
上海的圆圈 = 圆圈标记类(位置=常用坐标.上海市, 半径px=15, 圆圈=封闭图形样式类(线条宽度=3, 线条颜色=颜色名.))
地图.添加标记(我的图层, 上海的圆圈)

# 在常州位置添加一个正三角形标记
常州的三角形 = 正多边形标记类(位置=常用坐标.常州市, 边数=3, 半径px=25, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))
地图.添加标记(我的图层, 常州的三角形)

# 在南通位置添加一个图标(Marker)标记
南通的图标 = 图标标记类(位置=常用坐标.南通市, 图标=图标样式类(名称='glyphicon-fire', 颜色=颜色名.绿))
地图.添加标记(我的图层, 南通的图标)

# 在南京位置添加一个正方形标记
南京的正方形 = 正多边形标记类(位置=常用坐标.南京市, 边数=4, 半径px=25, 角度deg=45, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))
地图.添加标记(我的图层, 南京的正方形)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  圆圈标记 图标标记 正多边形标记效果

👇下面的代码中, 我们将上海,常州,南通和南京的这些标记点添加到折线类中,在地图上绘制一条折线

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

我的图层 = 地图.添加图层(图层名称='我的图层', 默认显示=True)

# 在上海位置添加一个圆圈标记
上海的圆圈 = 圆圈标记类(位置=常用坐标.上海市, 半径px=15, 圆圈=封闭图形样式类(线条宽度=3, 线条颜色=颜色名.))

# 在常州位置添加一个正三角形标记
常州的三角形 = 正多边形标记类(位置=常用坐标.常州市, 边数=3, 半径px=25, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))

# 在南通位置添加一个图标(Marker)标记
南通的图标 = 图标标记类(位置=常用坐标.南通市, 图标=图标样式类(名称='glyphicon-fire', 颜色=颜色名.绿))

# 在南京位置添加一个正方形标记
南京的正方形 = 正多边形标记类(位置=常用坐标.南京市, 边数=4, 半径px=25, 角度deg=45, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))

# 生成一个折线类对象
折线 = 折线类(线条样式=线条样式类(颜色=颜色名.深绿, 宽度=3, 透明度=0.75))

# 把以上位置的标记添加到折线中来
折线.添加路径点(上海的圆圈)
折线.添加路径点(常州的三角形)
折线.添加路径点([南通的图标, 南京的正方形])

# 把折线添加到图层上
地图.添加标记(我的图层, 折线)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  折线效果

👆以上代码中,我们在折线类中,定义蚂蚁路径样式,就可以在这条折线上显示蚂蚁如下效果了,修改代码如下👇:

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

# 生成一个折线类对象, 并在这个折线上显示蚂蚁路径
折线 = 折线类(线条样式=线条样式类(颜色=颜色名.深绿, 宽度=3, 透明度=0.75), 蚂蚁路径=蚂蚁路径标记类(显示=True))

GpsAndMap 之 MapModule 模块  折线上的蚂蚁路径效果

👇依然是上海,常州,南通,南京,下面的代码在这几个位置之间绘制了一个多边形,并定义了这个多边形的样式

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

我的图层 = 地图.添加图层(图层名称='我的图层', 默认显示=True)

# 在上海位置添加一个圆圈标记
上海的圆圈 = 圆圈标记类(位置=常用坐标.上海市, 半径px=15, 圆圈=封闭图形样式类(线条宽度=3, 线条颜色=颜色名.))

# 在常州位置添加一个正三角形标记
常州的三角形 = 正多边形标记类(位置=常用坐标.常州市, 边数=3, 半径px=25, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))

# 在南通位置添加一个图标(Marker)标记
南通的图标 = 图标标记类(位置=常用坐标.南通市, 图标=图标样式类(名称='glyphicon-fire', 颜色=颜色名.绿))

# 在南京位置添加一个正方形标记
南京的正方形 = 正多边形标记类(位置=常用坐标.南京市, 边数=4, 半径px=25, 角度deg=45, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))

# 生成一个多边形象,
多边形 = 多边形标记类(图形=封闭图形样式类(线条颜色=颜色名., 线条宽度=3, 填充色=颜色名., 填充透明度=0.8))

# 把以上位置的标记添加到多边形中来
多边形.添加角点(上海的圆圈)
多边形.添加角点(常州的三角形)
多边形.添加角点([南通的图标, 南京的正方形])

# 把折线添加到图层上
地图.添加标记(我的图层, 多边形)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  多边形效果

👆同样的,在上面的代码中, 我们在多边形样式中添加蚂蚁路径样式,即可实现蚂蚁路径的效果,如下👇:

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

# 生成一个多边形象, 并在这个多边形上定义蚂蚁路径样式
多边形 = 多边形标记类(图形=封闭图形样式类(线条颜色=颜色名., 线条宽度=3, 填充色=颜色名., 填充透明度=0.8), 蚂蚁路径=蚂蚁路径标记类(显示=True))

GpsAndMap 之 MapModule 模块  多边形蚂蚁路径效果

👇下面的代码在以上海,南京为对角线,添加了一个矩形

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

我的图层 = 地图.添加图层(图层名称='我的图层', 默认显示=True)

# 在上海位置添加一个圆圈标记
上海的圆圈 = 圆圈标记类(位置=常用坐标.上海市, 半径px=15, 圆圈=封闭图形样式类(线条宽度=3, 线条颜色=颜色名.))

# 在南京位置添加一个正方形标记
南京的正方形 = 正多边形标记类(位置=常用坐标.南京市, 边数=4, 半径px=25, 角度deg=45, 图形=封闭图形样式类(线条宽度=3, 填充色=颜色名., 填充透明度=0.5))

# 生成一个矩形对象,
矩形 = 矩形标记类()

# 把以上位置的标记添加到矩形中来
矩形.添加角点(上海的圆圈)
矩形.添加角点(南京的正方形)

# 把折线添加到图层上
地图.添加标记(我的图层, 矩形)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  矩形标记效果

👇 下面的代码,我们在太湖的中心,绘制了一个半径为 31km 的圆圈, 可以看到太湖的大概半径为31km. 我们在定义圆圈时,使用了半径m这个参数,这个参数使得所绘制的圆圈半径是真实的地理半径值,单位是m

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

我的图层 = 地图.添加图层(图层名称='我的图层', 默认显示=True)

# 在高德地图上拾取太湖中心的坐标
太湖中心坐标 = GPS坐标类(120.2601, 31.2132, GPS坐标系类型.高德地图坐标)

地图.添加基地(太湖中心坐标)

# 在上海位置添加一个圆圈标记
太湖中心 = 圆圈标记类(位置=太湖中心坐标, 半径m=31000, 圆圈=封闭图形样式类(线条宽度=3, 线条颜色=颜色名.))

# 把折线添加到图层上
地图.添加标记(我的图层, 太湖中心)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  太湖 圆圈标记

👇下面的代码模拟了长三角几个地市的经济数据,通过热力图绘制在地图上,以演示热力层的使用方法

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.高德地图().地图

地图.添加基地(常用坐标.北京市)

# 在地图上添加一个热力层图层
热力层 = 地图.添加热力层(图层名称='演示经济数据', 默认显示=True)

# 以下模拟几个地市的经济数据,以演示热力图效果
地图.添加热力点(热力层, 热力点类(常用坐标.上海市, 1250))
地图.添加热力点(热力层, 热力点类(常用坐标.昆山市, 1000))
地图.添加热力点(热力层, 热力点类(常用坐标.苏州市, 1200))
地图.添加热力点(热力层, 热力点类(常用坐标.无锡市, 870))
地图.添加热力点(热力层, 热力点类(常用坐标.南通市, 650))
地图.添加热力点(热力层, 热力点类(常用坐标.常州市, 700))
地图.添加热力点(热力层, 热力点类(常用坐标.泰州市, 500))
地图.添加热力点(热力层, 热力点类(常用坐标.镇江市, 580))
地图.添加热力点(热力层, 热力点类(常用坐标.杨州市, 754))
地图.添加热力点(热力层, 热力点类(常用坐标.南京市, 1100))


地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  热力图效果
GpsAndMap 之 MapModule 模块  热力图效果

👇下面的代码中,我们分别在北京位置添加了参考纬线(北纬39.89度线), 在上海位置添加了参考经线(东经121.48度线), 在西安位置添加了参考经纬线(东经108.94, 北纬34.34)

# -*- coding:UTF-8 -*-

# region 引入必要依赖
from GpsAndMap.MapModule import *

# endregion

地图 = 地图类().添加瓦片.智图GeoQ水系().地图

地图.添加基地(常用坐标.北京市)
地图.添加基地(常用坐标.上海市)
地图.添加基地(常用坐标.西安市)

地图.添加参考经线(常用坐标.上海市)
地图.添加参考纬线(常用坐标.北京市)
地图.添加参考经纬线(常用坐标.西安市)

地图.保存html(目标路径='.').打开()

GpsAndMap 之 MapModule 模块  参考线效果

小结

以上就是今天分享的关于开源库 GpsAndMap 中的 MapModule 模块相关功能的介绍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1014174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将整数S按照指定的进制输出为RR的数据类型为字符串numpy.base_repr

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将整数S按照指定的进制输出为R R的数据类型为字符串 numpy.base_repr 下列代码最后一次输出的结果是? import numpy as np num 10 print("【显示】num:", …

考研408 | 【计算机组成原理】 数据的表示和运算

进位计数制 十进制计数法&#xff1a; 推广&#xff1a;r进制计数法 任意进制-->十进制&#xff1a; 二进制<-->八进制、十六进制&#xff1a; 各种进制的常见书写方式&#xff1a; 十进制-->任意进制&#xff1a; 十进制-->二进制&#xff08;拼凑法&#xff…

七个LLM的狼人杀之夜

深度学习自然语言处理 原创作者&#xff1a;Winnie 在最新一篇论文中&#xff0c;研究团队让一群大语言模型(LLM)开了一局狼人杀游戏。通过多种Prompt方法集成&#xff0c;LLM不仅成功地参与了游戏&#xff0c;还涌现出了信任、欺诈和领导力等团体能力。 Paper: Exploring Larg…

校园网web免认真,大量服务器

服务器加满了&#xff0c;没有几个人来&#xff0c;传点图片看实力 什么方法解web认证方式校园网&#xff1f; 一般的校园网是对学生免费开放的&#xff0c;假如你是学生输入学号密码上网就是了&#xff0c;假如你不是那就是想蹭网了&#xff0c;再假如你不想让管理员或上网行为…

idea部署javaSE项目(awt+swing项目)/idea导入eclipse的javaSE项目

一.idea打开项目 选择需要部署的项目 二、设置JDK 三、引入数据库驱动包 四、执行sql脚本 四、修改项目的数据库连接 找到数据库连接文件 五.其他系统实现 JavaSwing实现学生选课管理系统 JavaSwing实现学校教务管理系统 JavaSwingsqlserver学生成绩管理系统 JavaSwing用…

【mysql】1044 - Access denied for user ‘root‘@‘%‘ to database ‘test_job‘

登录mysql 为新建的库创建账号和授权 创建和授权命令 grant all on test_job.* to job% identified by 12345;flush privileges; 返回信息 grant all on test_job.* to job% identified by 12345 > 1044 - Access denied for user root% to database test_job > 查询…

vscode和HBuilderx设置快捷键注释

一、vscode设置快捷键注释 1.打开vscode&#xff0c;使用快捷键&#xff1a;ctrlshiftp mac的话快捷键是&#xff1a;commandshiftp 然后在行中输入snippets 2.选择“新建”&#xff0c;选择将要配置的文件类型&#xff08;以vue类型为例&#xff09;我这里创建的名字为vue.…

数据安全至上:使用API接口定期备份设备的维修保养记录

在设备管理中&#xff0c;维修保养记录是非常宝贵的信息&#xff0c;不仅记录了设备的维修历史&#xff0c;还有助于未来的决策和分析。然而&#xff0c;数据丢失或损坏可能会导致重大问题。为了确保数据的安全性&#xff0c;定期备份是必不可少的。本文将详细介绍如何使用API接…

牛客: BM7 链表中环的入口结点

牛客: BM7 链表中环的入口结点 文章目录 牛客: BM7 链表中环的入口结点题目描述题解思路题解代码 题目描述 题解思路 用一个哈希表存储链表节点,遍历链表,将节点加入哈希表,如果该节点在哈希表中出现过,意味着该节点是入口节点 题解代码 package mainfunc EntryNodeOfLoop(p…

etcd之读性能主要影响因素

1、Raft模块-线性读ReadIndex-节点之间的RTT延时、磁盘IO 线性读时Follower节点首先会向Raft 模块发送ReadIndex请求&#xff0c;此时Raft模块会先向各节点发送心跳确认&#xff0c;一半以上节点确认 Leader 身份后由leader节点将已提交日志索引 (committed index) 封装成 Rea…

Linux下如何查看正在运行的Nginx使用的配置文件

Linux下如何查看正在运行的Nginx使用的配置文件 1. 查看nginx的进程id2. 查询对应端口的nginx路径3. 使用-t参数获取改进程对应的配置文件路径nginx命令 1. 查看nginx的进程id #查询nginx是9000端口的PID netstat -lntup | grep 90002. 查询对应端口的nginx路径 ll /proc/150…

万兆网络变压器(网络滤波器/脉冲变压器)在光模块产品上的应用

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;随着5G网络技术的发展&#xff0c;万物互联的愿景变得越来越现实&#xff0c;在网络技术高速发展的过程中&#xff0c;网络设备和元器件的发展也在适应着这种技术变化&#xff0c;其中的光电器件&#xff1a;光模块…

回顾多线程

1.线程有几种状态 public enum State {//新生NEW,//运行RUNNABLE,//阻塞BLOCKED,//等待WAITING,//超时等待TIMED_WAITING,//终止TERMINATED;} 2.wait和sleep的区别 1.来自不同的类 wait>Object类 sleep > Thread类 2.关于锁的释放 wait 会释放锁&#xff0c; s…

智能远程监考方案助力企业考试化繁为简

在音视频数字化之旅中&#xff0c;轻装上阵。 近年来&#xff0c;在数字化浪潮之下&#xff0c;远程考试频繁成为各领域热词&#xff0c;各企业也纷纷改革求新&#xff0c;将原本的企业内部考试转移到线上&#xff0c;从而获取更低廉的组考成本&#xff0c;更高的管理效率&…

程序和进程

一些基本概念&#xff1a; 进程的状态转换

Ardupilot — EKF3使用光流室内定位代码梳理

文章目录 前言 1 Copter.cpp 1.1 void IRAM_ATTR Copter::fast_loop() 1.2 void Copter::read_AHRS(void) 1.3 对象ahrs说明 2 AP_AHRS_NavEKF.cpp 2.1 void AP_AHRS_NavEKF::update(bool skip_ins_update) 2.2 void AP_AHRS_NavEKF::update_EKF3(void) 2.3 对象EKF3说…

LeetCode【27. 移除元素】

为国捐躯赴战场&#xff0c;丹心可并日争光。 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺…

[面试] 15道最典型的k8s面试题

文章目录 在 Kubernetes 中&#xff0c;有以下常见的资源对象&#xff1a;1.什么是 Kubernetes&#xff1f;它的主要特点是什么&#xff1f;2. Kubernetes 中的 Pod 是什么&#xff1f;它的作用是什么&#xff1f;3.Kubernetes 中的 Deployment 和 StatefulSet 有何区别&#x…

无涯教程-JavaScript - MATCH函数

描述 MATCH函数在单元格范围内搜索指定的项目,然后返回该项目在该范围内的相对位置。 当您需要某个项目在范围中的位置而不是项目本身时,请使用MATCH而不是LOOKUP函数之一。如。您可以使用MATCH函数为INDEX函数的row_num参数提供一个值。 语法 MATCH (lookup_value, lookup…

【送书活动】大模型赛道如何实现华丽的弯道超车

文章目录 导读前言AI/ML 模型训练任务对数据平台的需求01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率&#xff0c;降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署 核心密码01 通过数据抽象化统一数据孤岛02 通过分布…