遥感&GIS:合并两个矢量shp文件

合并两个矢量shp文件
代码:

from osgeo import ogr

def merge_shapefiles(input_shapefile1, input_shapefile2, output_shapefile):
    # 打开第一个 Shapefile
    ds1 = ogr.Open(input_shapefile1)
    if ds1 is None:
        raise Exception(f"无法打开 Shapefile 文件: {input_shapefile1}")

    # 打开第二个 Shapefile
    ds2 = ogr.Open(input_shapefile2)
    if ds2 is None:
        raise Exception(f"无法打开 Shapefile 文件: {input_shapefile2}")

    # 获取第一个图层
    layer1 = ds1.GetLayer()

    # 获取第二个图层
    layer2 = ds2.GetLayer()

    # 创建输出 Shapefile
    driver = ogr.GetDriverByName("ESRI Shapefile")
    if driver is None:
        raise Exception("无法获取ESRI Shapefile驱动程序")

    output_ds = driver.CreateDataSource(output_shapefile)
    if output_ds is None:
        raise Exception(f"无法创建 Shapefile 文件: {output_shapefile}")

    # 创建新的图层
    output_layer = output_ds.CreateLayer("merged", geom_type=ogr.wkbPolygon)

    # 复制第一个图层的字段到新图层
    for i in range(layer1.GetLayerDefn().GetFieldCount()):
        field_defn = layer1.GetLayerDefn().GetFieldDefn(i)
        output_layer.CreateField(field_defn)

    # 复制第一个图层的要素到新图层
    for feature in layer1:
        output_layer.CreateFeature(feature)

    # 复制第二个图层的字段到新图层
    for i in range(layer2.GetLayerDefn().GetFieldCount()):
        field_defn = layer2.GetLayerDefn().GetFieldDefn(i)
        output_layer.CreateField(field_defn)

    # 复制第二个图层的要素到新图层
    for feature in layer2:
        output_layer.CreateFeature(feature)

    # 关闭数据源
    ds1 = None
    ds2 = None
    output_ds = None
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值