Python实战:利用GeoPandas计算各省面积

闻溪
闻溪
发布时间:2026-10-15| 5人浏览过
原创

本文介绍如何使用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相关内容,请搜索本站历史文章或继续浏览后续文章,感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。