首页软件基础教程GeoPandas【GeoPandas空间数...

【GeoPandas空间数据分析】10.交互式地图(Interactive mapping)


本系列文章是根据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




除了静态图,GeoPandas还可以创建基于 folium 库的交互式地图。

创建用于交互式的地图需要使用 explore() 方法。

01

加载示例数据


本次以全国县区刑侦区划数据为例:

1>>> china = gpd.read_file("./datasets/china/china_counties.shp")
2
3>>> gdf = china[:30]
4
5>>> gdf.plot()

02

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”等。

03

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

结果如下所示:


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments