import webbrowser as wb
import folium
from folium.plugins import HeatMap, MiniMap, MarkerCluster
import numpy as np
# 绘制热力图
def draw_heatmap(map):
data = (
np.random.normal(size=(100, 3)) *
np.array([[1, 1, 1]]) +
np.array([[30, 104, 1]])
).tolist()
HeatMap(data).add_to(map)
# 增加小地图
def draw_minimap(map):
minimap = MiniMap(toggle_display=True,
tile_layer='Stamen Watercolor',
position='topleft',
width=100,
height=100)
map.add_child(minimap)
# 在地图上绘制无边框圆形,填充颜色
def draw_CircleMarker(loc, radius, map):
folium.CircleMarker(
location=loc,
radius=radius,
color="cornflowerblue",
stroke=False,
fill=True,
fill_opacity=0.6,
opacity=1,
popup="{} 像素".format(radius),
tooltip=str(loc),
).add_to(map)
# 在地图上绘制一个小Info标记物
def draw_icon(map, loc):
mk = folium.features.Marker(loc)
pp = folium.Popup(str(loc))
ic = folium.features.Icon(color="blue")
mk.add_child(ic)
mk.add_child(pp)
map.add_child(mk)
# 在地图上绘制一个圆圈
def draw_Circle(map, loc, radius):
folium.CircleMarker(
location=loc,
radius=radius,
color="red",
weight=3,
fill=False,
fill_opacity=0.6,
opacity=1,
).add_to(map)
# 绘制可缩放的标记物数字指示
def draw_MarkerCluster(map, loc):
marker_cluster = MarkerCluster().add_to(map)
folium.Marker(
location=loc,
popup="弹窗消息1",
icon=folium.Icon(color="green", icon="ok-sign"),
).add_to(marker_cluster)
folium.Marker(
location=loc,
popup="弹窗消息2",
icon=folium.Icon(color="red", icon="remove-sign"),
).add_to(marker_cluster)
folium.Marker(
location=loc,
popup="弹窗消息3",
icon=None,
).add_to(marker_cluster)
def draw_line(map, loc1, loc2):
kw = {"opacity": 1.0, "weight": 6}
folium.PolyLine(
smooth_factor=10,
locations=[loc1, loc2],
color="red",
tooltip="连线两个经纬度点",
**kw,
).add_to(map)
def draw_lines(map, coordinates):
folium.PolyLine(
smooth_factor=50,
locations=coordinates,
color="#FF0000",
weight=2,
tooltip="连接多个城市之间的线",
).add_to(map)
folium.PolyLine(
smooth_factor=50,
locations=coordinates,
color="grey",
tooltip="灰色的线条",
weight=5,
).add_to(map)
if __name__ == '__main__':
latlngs = [[39.929986, 116.395645], # 北京中心点经纬度
[31.249162, 121.487899], # 上海中心点经纬度
[23.120049, 113.30765], # 广州中心点经纬度
[22.546054, 114.025974], # 深圳中心点经纬度
[30.679943, 104.067923]] # 成都中心点经纬度
map = folium.Map([30., 104.], # 地图中心
tiles='stamentoner', # stamentoner,Stamen Watercolor,OpenStreetMap'
zoom_start=6)
draw_heatmap(map)
draw_minimap(map)
draw_CircleMarker(loc=latlngs[0], radius=20, map=map)
draw_MarkerCluster(map, latlngs[1])
draw_Circle(map, latlngs[2], radius=15)
draw_icon(map, latlngs[3])
draw_line(map, latlngs[0], latlngs[4])
draw_lines(map, latlngs)
map.save('m.html')
wb.open('m.html')
代码运行后如同所示:
更多folium示例请查阅 https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/
python:地理地图folium标记物icon,圆圈,圆形,热力图,经纬度点之间的线绘制import webbrowser as wbimport foliumfrom folium.plugins import HeatMap, MiniMap, MarkerClusterimport numpy as np# 绘制热力图def draw_heatmap(map): data = ( np.random.normal(size=(100, 3)) .
博主最近发现了python中一个好玩的包叫basemap,使用这个包可以绘制地图。值得说一下的是,basemap还没有pip检索,因此不能直接使用pip install basemap,来安装这个包。所以需要自己把下面两个包自行下载,然后在该目录下使用pip安装。
pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
basemap-1.1.0-cp36-cp36m-win_amd64.whl
先上个效果图,可以发现这个工具包还是很强大的,下面介绍下怎么在地图上标注出经纬度的地点。
整个画图流程分为两部分,第一部分是绘制一个世界地图,代码如下:
from mp
folium是python的一个用来绘制地图,并在地图上打点,画圈,做颜色标记的工具类。简单易学,和pandas可以很好的融合,是居家必备良品。
一 基本功能演示
import folium
import webbrowser
m=folium.Map(location=[40.009867,116.485994],zoom_start=10) # 绘制地图,确定聚焦点
folium.Mar...
学习笔记:
python decod()和encode()
初学
python爬虫,遇到了网页的编码转换,对其中decode()方法不是说十分的了解,从网上查阅相关的资料后了解到,encode()是对字符串进行转码的方法,decode()是对字符串进行解码的方法。从网上爬取的网页源码大多会设置页面的encoding为utf-8,所以从网页上爬取的网页要进行decode(‘UTF-8’)解码。
使用Folium制作相册地图
folium是JavaScript上著名的交互式地图库leaflet.js为Python提供的接口,通过它,我们可以在Python端调用leaflet的相关功能。
leaflet通过内建的OpenStreetMap或自行获取的osm资源和地图原件来进行地理信息内容的可视化,以及制作优美的可交互地图。其语法格式是通过不断添加图层元素来定义一个Map对象,最后以几种方式将Map对象展现出来。
在定义了所有图层内容之后,folium会生成一个html文件,我们可以在浏览器中打开它,也
control_scale=True)
ls =
folium.PolyLine(locations=[[38.68, 115.67], [38.85, 115.48], [38.65, 115.37], [38.68, 115.67]],
color='red'.
input = open('C:\\Users\\Administrator\\Desktop\\a.txt','r')
text=input.read()
list = re.split('\n',text)
location = []
for element in list:
location.append([re.split('\|',element)[3],re.
要在地图上标记各个点,可以使用Python的地图库进行实现。这里推荐使用folium库,它能够生成交互式地图,并支持在地图上添加标记等元素。
下面是一个示例代码,其中包含了如何在地图上标记若干个点的方法:
```python
import folium
# 创建地图对象
m = folium.Map(location=[39.9, 116.4], zoom_start=10)
# 标记各个点
points = [(39.9, 116.4), (39.8, 116.5), (40.0, 116.6)]
for p in points:
folium.Marker(location=p).add_to(m)
# 保存地图
m.save('map.html')
在代码中,首先创建了一个地图对象,设置了地图的中心点和缩放级别。然后,定义了需要标记的点的经纬度坐标,使用循环遍历各个点,并在地图上添加标记。最后,将地图保存为HTML文件。
这里使用的folium库还支持在标记上添加弹出窗口、自定义标记样式等功能,具体可以参考官方文档。
Elasticsearch报错: received plaintext http traffic on an https channel, closing connection ...
avi9111:
Elasticsearch报错: received plaintext http traffic on an https channel, closing connection ...
avi9111:
Windows环境下搭建nginx文件下载服务器
执剑问道:
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base d
一枚学渣斗学霸:
Unable to make field private final java.lang.String java.io.File.path accessible: module java.base d
hello.kitty: