Python实战:利用GeoPandas计算各省面积
本文介绍如何使用Python的GeoPandas库处理地理数据。通过安装依赖,利用GeoSeries和GeoDataFrame创建几何对象,并直接调用area属性计算图形面积。进一步演示如何读取ESRI Shapefile格式的省级行政区数据,批量计算并输出每个省份的具体面积数值。

GeoPandas是一个基于pandas构建的第三方模块,专门针对地理空间数据提供了增强支持。
它继承自pandas.Series和pandas.DataFrame,实现了GeoSeries和GeoDataFrame两个核心类,从而极大地简化了对平面几何对象的操作与分析流程。
1. 环境准备
在开始之前,请确保你的电脑已成功安装Python和pip工具。
你可以选择以下任意一种方式来安装项目所需的依赖库:
1. Windows系统:打开命令提示符(Cmd),路径为 开始 -> 运行 -> 输入CMD。
2. macOS系统:打开终端(Terminal),可通过command+空格搜索Terminal打开。
3. 若使用VSCode编辑器或PyCharm,可直接点击界面下方的Terminal标签页进行操作。
由于geopandas依赖众多第三方库,使用pip安装往往较为繁琐。因此,本教程强烈推荐使用conda进行安装:
conda install geopandas
只需执行一行命令即可完成安装。
2. 基础用法
首先设定坐标来绘制简单的几何图形:
import geopandas
from shapely.geometry import Polygon
p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
g = geopandas.GeoSeries([p1, p2, p3])
# g:
# result:
# 0 POLYGON ((0 0, 1 0, 1 1, 0 0))
# 1 POLYGON ((0 0, 1 0, 1 1, 0 1, 0 0))
# 2 POLYGON ((2 0, 3 0, 3 1, 2 1, 2 0))
# dtype: geometry
由上述变量生成的图形结构如下所示:

这里展示了一个关键且强大的功能:通过调用area属性,geopandas可以直接返回这些几何图形的面积值:
>>> print(g.area)
0 0.5
1 1.0
2 1.0
dtype: float64
此外,利用plot属性函数,你还可以直接生成基于matplotlib的可视化图表。
>>> g.plot()
借助matplotlib的pyplot模块,可以将生成的图片保存至本地:
import matplotlib.pyplot as plt
g.plot()
plt.savefig("test.png")
掌握上述基本用法后,我们即可进行简单的地图绘制及面积计算工作。
3. 绘制并计算每个省的面积
此外,其核心亮点在于能够通过Fiona(底层实现机制,用户无需关心)读取ESRI shapefile文件。这是一种用于存储地理要素几何位置及属性信息的非拓扑简单格式。
import geopandas
import matplotlib.pyplot as plt
from shapely.geometry import Polygon
maps = geopandas.read_file('1.shx')
# 读取的数据格式类似于
# geometry
# 0 POLYGON ((1329152.341 5619034.278, 1323327.591...
# 1 POLYGON ((-2189253.375 4611401.367, -2202922.3...
# 2 POLYGON ((761692.092 4443124.843, 760999.873 4...
# 3 POLYGON ((-34477.046 4516813.963, -41105.128 4...
# ... ...
maps.plot()
plt.savefig("test.png")
如代码所示,使用read_file函数可以读取shx、gpkg、geojson等多种格式的数据。读取后的图形数据如下:

同样地,该shapefile包含省级行政区数据,每个省份被划分为一个独立区块,因此只需一行语句即可算出每个省级行政区所占的面积:
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
# ... ...
至此,关于Python实战利用GeoPandas计算各省面积的介绍已完成。如需了解更多Python与GeoPandas相关内容,请搜索本站历史文章或继续浏览后续文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









