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

Pythoner 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/396153.html

相关文章:

  • 有哪些做鞋机设备的网站网站建设是怎么赚钱的
  • 封面型网页网站有哪些内容ui设计是什么职业
  • 有什么网站可以做家装长治网站制作怎么做
  • 人群密集检测技术:智能视觉赋能公共安全管理新范式
  • 一文读懂 RNN 循环神经网络
  • 如何做漫画赚钱的网站桂林北站有核酸检测点吗
  • 建设网站工作报告国外做任务网站有哪些
  • 七、MyBatis(一)
  • asp网站安装网站关键词优化教程
  • 虚拟主机Ubuntu操作系统的安装和基础软件安装及配置教程
  • 网站建设的特征网络营销的工具和方法有哪些
  • 建设学校网站需求分析外贸网站建设如何做呢
  • Java IO 流详解:从原理到实战的全方位指南
  • 株洲网站优化网站设计实训心得体会
  • wordpress下拉菜单联动seo优化的常用手法
  • 多点网络网站制作系统荣成信用建设网站
  • 购物网站建设所需软件公司如何建设一个网站
  • 天津网站开发网站做英语陪同翻译兼职的网站
  • 做烘焙网站怎么样创建微信公众号
  • 漂亮的数据型网站wordpress文章页面宽度
  • 车载DoIP架构 --- 车辆声明报文间隔
  • 并发场景下使用 HashMap 可能出现死循环的原因?
  • 单链表/双链表/循环链表
  • 如何网站专题策划志愿服务网站开发
  • 宁波建设监理协会网站中国建设招标工程网站
  • PyQt5 中 LineEdit 控件数据的批量存储与读取
  • 商城网站需要多少空间四川建设厅的网站
  • 陕西建设银行缴费网站全球网络营销公司排名
  • 超快轻量级离线翻译服务器MTranServer在腾讯云轻量应用服务器上的全流程部署指南
  • 山东网站优化推广手机软件开发学什么