You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GeoPandas GeoDataFrame多边形面积计算及投影问题求助

解决GeoPandas多边形面积(平方米)计算问题

问题根源

  • 用EPSG:4326(WGS84经纬度坐标系)直接计算的area是平方度,属于地理坐标系的虚拟单位,没有实际空间面积意义。
  • 重投影到EPSG:32610出错是因为这个UTM投影针对的是北纬10°-16°的区域,你的多边形在赤道附近(0°-2°纬度),不在该投影的有效范围内,导致坐标转换异常出现Inf值。

正确实现步骤

  1. 匹配对应投影坐标系
    赤道附近(0°纬度)的区域要选UTM第1带的投影:EPSG:32601(WGS 84 / UTM zone 1N),这个投影的单位是米,能直接计算平方米面积。

  2. 批量重投影GeoDataFrame
    别单独转换单个几何对象,对整个GeoDataFrame执行重投影,保证CRS元数据和所有几何同步更新。

  3. 计算平方米面积
    重投影完成后,直接调用geometry.area就能得到以平方米为单位的面积值。

完整可运行代码

import geopandas as gpd
from shapely.geometry import Polygon

# 创建示例多边形
poly1 = Polygon([(0,0), (1,0), (1,1), (0,1)])
poly2 = Polygon([(1,1), (2,1), (2,2), (1,2)])

# 构建GeoDataFrame,初始CRS设为EPSG:4326
data = {'name': ['Polygon 1', 'Polygon 2'], 'geometry': [poly1, poly2]}
df = gpd.GeoDataFrame(data, crs='EPSG:4326')

# 重投影到适配的UTM投影(EPSG:32601)
df_proj = df.to_crs('EPSG:32601')

# 计算平方米面积并新增列存储
df_proj['area_sqm'] = df_proj.geometry.area

# 输出结果
print(df_proj[['name', 'area_sqm']])

额外提示

  • UTM投影按经度每6°分一个带,还要区分南北半球,得根据数据实际地理位置选对应带;嫌手动查麻烦的话,可以用utm库自动匹配合适的投影。
  • 如果数据覆盖全球或跨多个UTM带,推荐用等面积投影(比如EPSG:6933),避免UTM带的区域限制。

内容的提问来源于stack exchange,提问作者kms

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:25:10