如何将GeoPandas中CRS对应的面积单位转换为平方米?
问题解答
你当前计算得到的面积数值单位是平方度,没有实际使用意义,原因是你使用的EPSG:4269属于地理坐标系,这类坐标系用经纬度标识位置,默认单位是度,因此.area属性返回的面积单位就是平方度,和官方文档描述的「面积单位和当前CRS单位一致」规则匹配。
要得到以平方米为单位的面积,你需要将矢量数据转换为单位为米的投影坐标系,针对你研究的苏必利尔湖所在的北美区域,推荐两类适配的投影:
- 等面积投影:EPSG:5070(北美阿尔伯斯等面积投影),面积计算精度更高,线性单位为米
- UTM投影:EPSG:26915(NAD83 / UTM zone 15N),适配苏必利尔湖所在的经度范围,线性单位为米
修改后的代码示例如下:
import geopandas as gpd water = gpd.read_file("/Users/user/Downloads/tlgdb_2020_a_us_areawater.gdb") lakeSup = water.loc[water['FULLNAME'].str.contains('Lk Superior', na=False)] # 替换原有坐标系转换逻辑,转成单位为米的投影坐标系,这里以EPSG:5070为例 lakeSup = lakeSup.to_crs(epsg=5070) # 此时计算得到的area字段单位就是平方米 lakeSup['area'] = lakeSup.area print(lakeSup.head(10))
如果你的研究区域不在北美,只需要替换为适配目标区域、线性单位为米的投影坐标系即可,避免投影变形导致面积计算误差。
内容的提问来源于stack exchange,提问作者user12379114
相关产品推荐
相关产品推荐

