I'm running Python 2.7 on Ubuntu 17.10, with osgeo v2.2.1 installed via apt.
My code loads osgeo and 1) tries to create a shapefile with 1 layer and 1 field, 2) create a polygon (4 points geometry), then 3) add the polygon to the shapefile's layer. Everything runs without trouble until the third function when I use 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()
This prints :
layer <osgeo.ogr.Layer; proxy of <Swig Object of type 'OGRLayerShadow *' at 0x7f79aa499c90> > , number of features : 0
I then create a geometry from the polygon I already created and passed to the function beforehand :
defn = layer.GetLayerDefn()
geom = ogr.CreateGeometryFromWkb(poly)
print "geom",geom
This prints :
geom POLYGON ((-106 24 0,-100 26 0,-103 20 0,-106 20 0))
Code then goes on to create the feature :
feat = ogr.Feature(defn)
feat.SetField('polygon_id', polygon_name)
feat.SetGeometry(geom)
print feat
print "Created feature",feat.GetField('polygon_id')
This feature is created :
<osgeo.ogr.Feature; proxy of <Swig Object of type 'OGRFeatureShadow *' at 0x7f35cd988d50> >
Created feature polygon_1
But when I add it to the layer, nothing happens :
layer.CreateFeature(feat)
print "number of features : ",layer.GetFeatureCount()
Prints :
number of features : 0
What did I miss ?