我正在尝试使用 GeoPandas 在本地保存一个形状文件,最好是压缩文件,但是我尝试了压缩和未压缩的方法。我注意到在本地保存文件然后读回文件后,三列发生了变化,最重要的是“geom”恢复为“geometry”,“parcel_apn_2”现在是“parcel_a_1”,“fips_county”是现在'fips_count'。我错过了会导致这种行为的东西吗?
保存前检查列名:
# shp_prior_to_writing is the original GeoDataFrame
shp_prior_to_writing.columns
退货...
Index(['xref_id', 'fips_state', 'fips_county', 'county', 'parcel_apn',
'parcel_apn_2', 'address', 'city', 'state', 'zip', 'src_id', 'latitude',
'longitude', 'geom'],
dtype='object')
然后在本地写入相同的文件...
shp_prior_to_writing.to_file('test_shp.shp', driver='ESRI Shapefile')
并在...中阅读它
same_shape_file=gpd.read_file('test_shp.shp')
same_shape_file.columns
退货...
Index(['xref_id', 'fips_state', 'fips_count', 'county', 'parcel_apn',
'parcel_a_1', 'address', 'city', 'state', 'zip', 'src_id', 'latitude',
'longitude', 'geometry'],
dtype='object')
我试过压缩与未压缩。我试过没有明确设置任何驱动程序(我相信无论如何它默认为 ESRI Shapefile),我试过在我的笔记本中重新启动 Jupyter 内核。我也尝试在保存之前再次明确重命名这些列,但结果似乎总是一样的。
shapefile 格式对 10 个字符的列名有硬性限制。该限制包含在格式规范中并来自 ESRI,而不是提供 shp 驱动程序的 geopandas 或 Fiona 的错误。
参见例如GIS StackExchange:绕过形状文件中字段名称的 10 个字符限制? 讨论选项。
由于这个 10 个字符的限制,geopandas 必须先重命名您的列,然后才能重写它们,这会导致您看到的名称更改。如果您想继续使用这些列名并让它们往返磁盘,您将需要使用不同的文件格式。