本系列文章是根据GeoPandas
官方文档翻译整理,学习任何一个Python第三方库,其官方文档都是最好的学习资料。相比网络搜索得到的一些资料,官方文档是权威的一手资料,其内容全面、准确可靠。通过官方文档入手,能够保证学习认知不会有大偏差。在学习完官方文档后,可以在寻找其他资料进一步学习。
点击“阅读原文”或者直接访问下方链接,查看翻译整理的“GeoPandas 0.12.2 中文文档”。
https://www.mizhushare.com/docs
-
可以通过百度网盘获取,需要在本地配置代码运行环境:
链接:https://pan.baidu.com/s/185Qs6RpVhyP2nm9VV39Ehw?pwd=mnsj
提取码:mnsj
-
前往GitHub详情页面,单击 code 按钮,选择Download ZIP选项:
https://github.com/returu/geopandas
创建用于交互式的地图需要使用 explore() 方法。
加载示例数据:
本次以全国县区刑侦区划数据为例:
1>>> china = gpd.read_file("./datasets/china/china_counties.shp")
2
3>>> gdf = china[:30]
4
5>>> gdf.plot()
GeoDataFrame.explore():
-
直接调用 explore() 方法:
1>>> gdf.explore()
生成以下形式,将鼠标悬停在某个几何对象处,会显示相关内容:
默认地图地图为OpenStreetMap。
因此,需要注意的是,数据的CRS要与地图地图一致。
-
参数设置:
交互式绘图提供了与静态绘图大体相同的功能,并在此基础上增加了一些功能。
例如,下面使用数据中的“NAME”列绘制choropleth图。
1>>> gdf.explore(column="NAME", # 用于绘制分级统计图choropleth的列
2 tooltip="PAC", # 当鼠标悬停时显示的列的值,例如:PAC 110106
3 popup = True, # 当为True时,鼠标点击几何对象时会显示全部列的信息
4 tiles = "CartoDB positron", # 设置地图底图,默认为OpenStreetMap
5 cmap = "tab20", # 定义颜色
6 style_kwds = {"color":"black"}, # 设置黑色边框
7 )
结果如下所示:
当鼠标悬停时在仅显示“PAC”列的信息,但在点击会时显示所有值。
tiles参数用于指定folium支持的地图底图,包括“OpenStreetMap”、 “Stamen Terrain”、“Stamen Toner“、“Stamen Watercolor”、“CartoDB positron”、“CartoDB dark matter”等。
folium.Map对象:
explore() 方法返回一个 folium.Map对象,该对象也可以直接传递(就像在 plot() 中使用 ax 一样)。
例如,在下面的示例中,可以在同一张地图上绘制两个 GeoDataFrame,并使用 folium 添加图层控件。
还可以在地图中更改背景底图。
1# 加载点数据
2>>> points = gpd.read_file("./datasets/china/china_counties_points.shp")
3>>> points = points[:30]
4
5>>> import folium
6
7>>> m = gdf.explore(
8 column="Shape_Area", # make choropleth based on "BoroName" column
9 scheme="naturalbreaks", # 自然间断点
10 k=10, # 划分为 10 类
11 legend_kwds=dict(colorbar=False), # 不使用colorbar
12 name="行政区划" # 地图中的图层名称
13)
14
15>>> points.explore(m=m,# 直接传递folium.Map对象
16 color="red",
17 marker_kwds={"fill":True , "radius":10 , "size":5},# 设置点的显示样式
18 tooltip="NAME",# 当鼠标悬停时显示的列的值
19 tooltip_kwds=dict(labels=False),# 当鼠标悬停时不显示列名
20 name="points" # 地图中的图层名称
21 )
22
23# 指定地图底图
24>>> folium.TileLayer("Stamen Terrain" , control=True).add_to(m)
25# 添加图层控件,以便在地图中切换图层
26>>> folium.LayerControl().add_to(m)
27
28m
结果如下所示:
本篇文章来源于微信公众号: 码农设计师