GDAL CreateFeature不会向图层添加要素

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

我正在Ubuntu 17.10上运行Python 2.7,并通过apt安装了osgeo v2.2.1。

我的代码加载osgeo,1)尝试创建一个具有1个图层和1个字段的shapefile,2)创建一个多边形(4点几何),然后3)将多边形添加到shapefile的图层中。一切顺利,直到我使用layer.CreateFeature(feature)的第三个功能时为止:

driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open(shapefile_name,-1)
srs = osr.SpatialReference()
srs.ImportFromEPSG(4326)
layer = ds.GetLayer()
print "layer",layer,", number of features :",layer.GetFeatureCount()

此打印:

layer <osgeo.ogr.Layer; proxy of <Swig Object of type 'OGRLayerShadow *' at 0x7f79aa499c90> > , number of features : 0

然后我从已经创建并预先传递给函数的多边形创建几何:

defn = layer.GetLayerDefn()

geom = ogr.CreateGeometryFromWkb(poly)
print "geom",geom

此打印:

geom POLYGON ((-106 24 0,-100 26 0,-103 20 0,-106 20 0))

然后继续创建功能的代码:

feat = ogr.Feature(defn)
feat.SetField('polygon_id', polygon_name)
feat.SetGeometry(geom)
print feat
print "Created feature",feat.GetField('polygon_id')

此功能已创建:

<osgeo.ogr.Feature; proxy of <Swig Object of type 'OGRFeatureShadow *' at 0x7f35cd988d50> >
Created feature polygon_1

但是当我将其添加到图层时,什么也没有发生:

layer.CreateFeature(feat)
print "number of features : ",layer.GetFeatureCount()

打印:

number of features :  0

我想念什么?

python gis gdal ogr osgeo
1个回答
0
投票

我也对此问题感到鼓舞,但

打印“特征数:”,layer.GetFeatureCount()

效果很好,显示有340个功能,

但是打开shapefile,有0个要素,地图上没有显示任何东西……

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