geopandas 在保存到文件时重命名列

问题描述 投票:0回答:1

我正在尝试使用 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 内核。我也尝试在保存之前再次明确重命名这些列,但结果似乎总是一样的。

geopandas shapefile
1个回答
0
投票

shapefile 格式对 10 个字符的列名有硬性限制。该限制包含在格式规范中并来自 ESRI,而不是提供 shp 驱动程序的 geopandas 或 Fiona 的错误。

参见例如GIS StackExchange:绕过形状文件中字段名称的 10 个字符限制? 讨论选项。

由于这个 10 个字符的限制,geopandas 必须先重命名您的列,然后才能重写它们,这会导致您看到的名称更改。如果您想继续使用这些列名并让它们往返磁盘,您将需要使用不同的文件格式。

© www.soinside.com 2019 - 2024. All rights reserved.