- 数据准备:线矢量数据(shp格式),包含NAME字段(存储要素的名称)
- 处理结果:将每个要素保存为单个矢量数据,矢量数据以NAME字段的值命名
import geopandas as gpd
import os
input_shp = r"C:\Users\Desktop\Temp\河道线.shp"
output_dir = r"C:\Users\Desktop\Temp\要素分割"
os.makedirs(output_dir, exist_ok=True)
gdf = gpd.read_file(input_shp)
if 'NAME' not in gdf.columns:
raise ValueError("输入SHP中不存在'NAME'字段!")
for name, group in gdf.groupby('NAME'):
safe_name = ''.join(
c if c.isalnum() or c in (' ', '_', '-') else '_'
for c in str(name).strip()
)
output_path = os.path.join(output_dir, f"{safe_name}.shp")
try:
group.to_file(output_path, encoding='utf-8')
print(f"已导出: {output_path}")
except Exception as e:
print(f"导出失败({name}): {str(e)}")
print("处理完成!共导出 {} 个文件".format(len(gdf['NAME'].unique())))