当前位置: 首页 > news >正文

Python GIS 开发里最核心的4个基础组件(理论+实操篇)

文章目录

    • 1. GeoPandas
    • 2. Shapely
    • 3. Fiona
    • 4. PyProj
    • 5,总结

Geopandas、Shapely、Fiona和 Pyproj 这四个库是 Python GIS 开发里最核心的基础组件,它们关系密切,但分工不同。

1. GeoPandas

  1. Python 中的 空间数据分析库,相当于 Pandas + GIS 功能。
  • 基于 Pandas DataFrame 扩展,支持空间几何数据类型(点、线、面),存储在 geometry 列里。

  • 内置与 Shapely、Fiona、Pyproj 紧密结合,完成数据读取、几何计算、坐标转换。

  • 支持常见 GIS 格式(Shapefile、GeoJSON、GPKG、PostGIS 等)。

  • 与 Matplotlib 集成,可以快速可视化地理数据。

  1. 用途:
  • 读取/保存矢量数据(shp、geojson)

  • 空间操作:缓冲区、叠加、裁剪、空间连接

  • 属性表操作:类似 Pandas 的数据处理(groupby、merge)

  • 快速可视化地图

  1. 示例:
import geopandas as gpdgdf = gpd.read_file("roads.shp")
print(gdf.head())
gdf.plot()

2. Shapely

  1. 几何对象与空间运算库。
  • 提供 Python 里的几何对象(Point、LineString、Polygon 等)。

  • 实现各种 几何操作:缓冲区(buffer)、并集(union)、交集(intersection)、差集(difference)、长度/面积计算。

  • GeoPandas 的 geometry 列底层就是 Shapely 对象。

  • 不关心数据存取,只负责几何计算。

  1. 用途:
  • 判断几何关系(相交、包含、相离等)

  • 构造复杂几何形状

  • 做空间运算,比如缓冲区或空间裁剪

  1. 示例:
from shapely.geometry import Point, Polygonp = Point(1, 1)
poly = Polygon([(0,0), (2,0), (2,2), (0,2)])
print(poly.contains(p))  # True
buffered = p.buffer(1.0)  # 生成圆形缓冲区

3. Fiona

  1. Python 的 GIS 数据读写库,主要处理矢量数据文件。
  • 基于 GDAL/OGR 封装,提供更 Pythonic 的 API。

  • 专注于文件 I/O(读取/写入 Shapefile、GeoJSON、GPKG 等)。

  • 读取数据时,返回 字典形式(feature),属性和几何分开。

  • GeoPandas 其实就是调用 Fiona 来读写文件。

  1. 用途:
  • 打开 Shapefile/GeoJSON 文件

  • 遍历 feature 属性和几何

  • 写出新的矢量文件

  1. 示例:
import fionawith fiona.open("roads.shp") as src:for feature in src:print(feature["properties"], feature["geometry"])

4. PyProj

  1. Python 的 坐标投影转换库,是 PROJ 库的封装。
  • 负责 坐标系定义、投影变换、坐标转换。

  • 支持 EPSG 号(如 EPSG:4326 WGS84、EPSG:3857 Web Mercator)。

  • GeoPandas 在 .to_crs() 时,底层就是用 PyProj。

  • 可用于批量点坐标的投影转换。

  1. 用途:
  • 经纬度 → 投影坐标 (WGS84 → UTM)

  • 坐标系统变换(如 WGS84 → CGCS2000)

  • 大地测量计算(测距、测方位角等)

  1. 示例:
from pyproj import Transformer# WGS84 经纬度 → UTM Zone 33N
transformer = Transformer.from_crs("EPSG:4326", "EPSG:32633", always_xy=True)
lon, lat = 12.4924, 41.8902  # 罗马斗兽场
x, y = transformer.transform(lon, lat)
print(x, y)

5,总结

  • Fiona → 负责 读写 空间数据文件

  • Shapely → 负责 几何对象与空间运算

  • PyProj → 负责 坐标系统与投影转换

  • GeoPandas → 把上面三者结合起来,提供类似 Pandas 的 一站式空间数据处理

举例:读取一个 Shapefile → 转投影 → 做缓冲区 → 保存

import geopandas as gpdgdf = gpd.read_file("roads.shp")       # Fiona
gdf = gdf.to_crs(epsg=32640)           # PyProj
gdf["buffer"] = gdf.buffer(100)        # Shapely
gdf.to_file("roads_buffer.shp")        # Fiona

GeoPandas 与 Fiona / Shapely / PyProj 的关系图
在这里插入图片描述

Fiona (IO) + Shapely (Geometry) + PyProj (CRS) = GeoPandas (完整 GIS DataFrame)

在这里插入图片描述


“人的一生会经历很多痛苦,但回头想想,都是传奇”。


http://www.dtcms.com/a/394890.html

相关文章:

  • 关于跨域和解决方案
  • 学习日报 20250921|LoadingCache
  • 聚力赋能|竹云受邀出席2025华为全联接大会
  • 抓取 Dump 文件与 WinDbg 使用详解:定位 Windows 程序异常的利器
  • 计算机组成原理:指令周期
  • 老题新解|简单算术表达式求值
  • RustFS与其他新兴存储系统(如SeaweedFS)相比有哪些优势和劣势?
  • WPS标点符号换行问题解决
  • 开发团队的文档自动化革命:WPS+cpolar实战录
  • 【Linux】文本编辑器Vim
  • flink1.18下游配置多个sink
  • 如何删除 MySQL 数据库中的所有数据表 ?
  • win10加域后,控制面板中的,internet 时间就没有了
  • Unity移动平台笔记
  • 【图像算法 - 27】基于YOLOv12与OpenCV的无人机智能检测系统
  • html css js网页制作成品——圣罗兰护肤html+css+js 4页附源码
  • 21届-3年-Java面经-华为od
  • 计算机视觉(opencv)实战三十一——CascadeClassifier 详解与实战人脸检测
  • 计算机视觉:基于YOLOv11 实例分割与OpenCV 在 Java 中的实现图像实例分割
  • 【实战】Spring Boot 3.x整合Redis:注解式缓存与分布式锁最佳实践
  • 密钥耳语-一个轻量、易备份、支持命令行与图形界面的口令派生加密工具 具有 CLI 和 GUI 的轻量级密码衍生加密工具
  • AI重塑流量背后,微软广告打造下一代广告生态
  • 低代码数字化时代的开发新范式
  • 微信小程序“无损去水印精灵”技术解析大纲
  • 少儿舞蹈小程序(18)订单确认
  • Uniapp X 打包抖音小程序教程
  • uni-app中实现在input的placeholder中添加图标
  • vue面试题集锦
  • 基于Springboot+UniApp+Ai实现模拟面试小工具十二:模拟面试功能实现
  • 基于Springboot+UniApp+Ai实现模拟面试小工具十一:主页功能及简历上传功能实现