Geopandas 一行代码算出每个省的面积

2020-11-11 10:09:57 浏览数 (1)

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/

0 人点赞