线矢量分割

  • 数据准备:线矢量数据(shp格式),包含NAME字段(存储要素的名称)
  • 处理结果:将每个要素保存为单个矢量数据,矢量数据以NAME字段的值命名
# -*- coding: utf-8 -*-
import geopandas as gpd
import os

# 输入输出路径
input_shp = r"C:\Users\Desktop\Temp\河道线.shp"  # 替换为你的线状SHP路径
output_dir = r"C:\Users\Desktop\Temp\要素分割"     # 输出目录

# 创建输出目录
os.makedirs(output_dir, exist_ok=True)

# 读取SHP文件
gdf = gpd.read_file(input_shp)

# 检查是否存在NAME字段
if 'NAME' not in gdf.columns:
    raise ValueError("输入SHP中不存在'NAME'字段!")

# 按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")
    
    # 导出为独立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())))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值