GeoPandas是一个基于pandas,针对地理数据做了特别支持的第三方模块。
它继承pandas.Series和pandas.Dataframe,实现了GeoSeries和GeoDataFrame类,使得其操纵和分析平面几何对象非常方便。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command 空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端运行命令安装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
由于geopandas涉及到许多第三方依赖,pip安装起来非常麻烦。因此在本教程中,我只推荐使用conda安装geopandas:
代码语言:javascript复制conda install geopandas
一行语句即可完成安装。
2.基本使用
设定坐标绘制简单的图形:
这些变量所形成的图形如下:
这里有一个重要且强大的用法,通过area属性,geopandas能直接返回这些图形的面积:
代码语言:javascript复制>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
不仅如此,通过plot属性函数,你还可以直接生成matplotlib图。
代码语言:javascript复制>>> g.plot()
通过matplot的pyplot,可以将图片保存下来:
代码语言:javascript复制import matplotlib.pyplot as plt
g.plot()
plt.savefig("test.png")
学会上面的基本用法, 我们就可以进行简单的地图绘制及面积的计算了。
3.绘制并算出每个省的面积
此外,它最大的亮点是可以通过 Fiona(底层实现,用户不需要管),读取比如ESRI shapefile(一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式)。
如代码所示,通过read_file你可以读取shx、gpkg、geojson等数据。读取出来的图形如下:
同样,这个shapefile是省级行政区的,每一个省级行政区都被划分为一个区块,因此可以一行语句算出每个省级行政区所占面积:
代码语言:javascript复制print(maps.area)
# 0 4.156054e 11
# 1 1.528346e 12
# 2 1.487538e 11
# 3 4.781135e 10
# 4 1.189317e 12
# 5 1.468277e 11
# 6 1.597052e 11
# 7 9.770609e 10
# 8 1.385692e 11
# 9 1.846538e 11
# 10 1.015979e 11
# ... ...
怎么样,是不是很酷?它还有许多更库的特性,欢迎阅读官方文档: https://geopandas.readthedocs.io/