首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中将OGR图层与属性表合并

在Python中将OGR图层与属性表合并
EN

Stack Overflow用户
提问于 2019-02-26 23:21:16
回答 1查看 902关注 0票数 0

这是从Python GDAL/OGR cookbook在Python中合并OGR层的示例。

https://pcjericks.github.io/py-gdalogr-cookbook/vector_layers.html#merge-ogr-layers

代码语言:javascript
复制
import os, ogr, osr

outputMergefn = 'merge.shp'
directory = "/Users/UserName/Downloads/"
fileStartsWith = 'test'
fileEndsWith = '.shp'
driverName = 'ESRI Shapefile'
geometryType = ogr.wkbPolygon

out_driver = ogr.GetDriverByName( driverName )
if os.path.exists(outputMergefn):
   out_driver.DeleteDataSource(outputMergefn)
out_ds = out_driver.CreateDataSource(outputMergefn)
out_layer = out_ds.CreateLayer(outputMergefn, geom_type=geometryType)

fileList = os.listdir(directory)

for file in fileList:
    if file.startswith(fileStartsWith) and file.endswith(fileEndsWith):
        print file
        ds = ogr.Open(directory+file)
        lyr = ds.GetLayer()
        for feat in lyr:
           out_feat = ogr.Feature(out_layer.GetLayerDefn())
           out_feat.SetGeometry(feat.GetGeometryRef().Clone())
           out_layer.CreateFeature(out_feat)
           out_feat = None
           out_layer.SyncToDisk()

不过,本例并没有合并属性表。有没有办法在Python中使用OGR来做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2019-10-05 11:26:06

它复制目标shapefile中存在的字段的属性。

代码语言:javascript
复制
def merge(target, source):
    #layer of target shp
    driver = ogr.GetDriverByName("ESRI Shapefile")
    ds_t = driver.Open(target, 1)
    tr_layer = ds_t.GetLayer()

    # layer of soruce shp
    driver = ogr.GetDriverByName("ESRI Shapefile")
    ds_s = driver.Open(source, 0)
    sr_layer = ds_s.GetLayer()

    #copy features:
    for f in sr_layer:
        defn=tr_layer.GetLayerDefn()
        out_feat = ogr.Feature(defn)

        for i in range(0, defn.GetFieldCount()):
            out_feat.SetField(defn.GetFieldDefn(i).GetNameRef(),f.GetField(i))

        out_feat.SetGeometry(f.GetGeometryRef().Clone())
        tr_layer.CreateFeature(out_feat)
        out_feat=None  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54888796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档