在python中使用OGR合并图层文件的方法。

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

我是python的新手,正试图更自如地使用python自动化GIS任务。感谢任何帮助

我有两个包含点的图层,我想用python中的Ogr把它们合并成一个图层。下面是我在一个网站上找到的代码,但是它给我的是一个错误信息

属性错误:'NoneType'对象没有属性'GetLayer'。

我认为导致这个错误的行是这样的。

ds = ogr.Open(directory + file)

我想知道为什么在这一步什么都没有生成,我也想知道是否有更好的方法来使用gdalogr python合并图层。

outputMergefn = 'Merge.shp'
directory = "C:/Users/Robin/Documents/Python Final Project/Final_Project/Output"
filestartswith = 'C'
FileEndsWith = '.shp'
drivername = 'ESRI Shapefile'
geometrytype = ogr.wkbMultiPoint
ptdriver = ogr.GetDriverByName('ESRI Shapefile')

if os.path.exists(outputMergefn):
    ptdriver.DeleteDataSource(outputMergefn)
out_ds = ptdriver.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)
        if ds is None:
            print "This is None"
        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_layer.SyncToDisk()
python merge layer gdal ogr
1个回答
1
投票

有一个目录的问题。在你指定的目录下,不存在一个shapefile。这就是为什么 GetLayer() 函数给出了一个错误。因为根据目录,数据源应该是shapefile,但由于目录错误,数据源不是shapefile(可能是一个文件夹或其他文件)。而当数据源不是一个shapefile的时候,那么函数 GetLayer() 无法使用。

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