[ PROMPT_NODE_26638 ]
geometric-operations
[ SKILL_DOCUMENTATION ]
# 几何操作
GeoPandas 通过集成 Shapely 提供广泛的几何操作功能。
## 构造操作
从现有几何图形创建新几何图形:
### 缓冲区 (Buffer)
创建表示距离内所有点的几何图形:
python
# 固定距离缓冲区
buffered = gdf.geometry.buffer(10)
# 负缓冲区 (侵蚀)
eroded = gdf.geometry.buffer(-5)
# 带分辨率参数的缓冲区
smooth_buffer = gdf.geometry.buffer(10, resolution=16)
### 边界 (Boundary)
获取低维边界:
python
# 多边形 -> 线串, 线串 -> 多点
boundaries = gdf.geometry.boundary
### 质心 (Centroid)
获取每个几何图形的中心点:
python
centroids = gdf.geometry.centroid
### 凸包 (Convex Hull)
包含所有点的最小凸多边形:
python
hulls = gdf.geometry.convex_hull
### 凹包 (Concave Hull)
包含所有点的最小凹多边形:
python
# 比率参数控制凹度 (0 = 凸包, 1 = 最凹)
concave_hulls = gdf.geometry.concave_hull(ratio=0.5)
### 包络矩形 (Envelope)
最小轴对齐矩形:
python
envelopes = gdf.geometry.envelope
### 简化 (Simplify)
降低几何复杂度:
python
# 使用 Douglas-Peucker 算法及容差
simplified = gdf.geometry.simplify(tolerance=10)
# 保留拓扑 (防止自相交)
simplified = gdf.geometry.simplify(tolerance=10, preserve_topology=True)
### 分段 (Segmentize)
向线段添加顶点:
python
# 添加顶点并指定最大线段长度
segmented = gdf.geometry.segmentize(max_segment_length=5)
### 合并 (Union All)
将所有几何图形组合成单个几何图形:
python
# 合并所有要素
unified = gdf.geometry.union_all()
## 仿射变换
坐标的数学变换:
### 旋转 (Rotate)
python
# 绕原点 (0, 0) 旋转指定角度
rotated = gdf.geometry.rotate(angle=45, origin='center')
# 绕自定义点旋转
rotated = gdf.geometry.rotate(angle=45, origin=(100, 100))
### 缩放 (Scale)
python
# 均匀缩放
scaled = gdf.geometry.scale(xfact=2.0, yfact=2.0)
# 带原点缩放
scaled = gdf.geometry.scale(xfact=2.0, yfact=2.0, origin='center')
### 平移 (Translate)
python
# 移动坐标
translated = gdf.geometry.translate(xoff=100, yoff=50)
### 倾斜 (Skew)
python
# 剪切变换
skewed = gdf.geometry.skew(xs=15, ys=0, origin='center')
### 自定义仿射变换
python
from shapely import affinity
# 应用 6 参数仿射变换