Hi -
I have a script which at one point adds fields to a shapefile, then at
another time updates those fields. This happens a couple times through this
whole process.
#earlier
driver = ogr.GetDriverByName('ESRI Shapefile')
dataSource = driver.Open(inshp, 1)
layer = dataSource.GetLayer()
idfield = ogr.FieldDefn('INFLD', ogr.OFTInteger)
layer.CreateField(idfield)
dataSource = None
#later
driver = ogr.GetDriverByName('ESRI Shapefile')
dataSource = driver.Open(inshp, 1)
layer = dataSource.GetLayer()
layerDefinition = layer.GetLayerDefn()
flds = [layerDefinition.GetFieldDefn(i).GetName()
for i in range(layerDefinition.GetFieldCount())]
for feature in layer:
for fld in flds:
...
print fld,somevalue,type(somevalue) # --> INFLD -9 <type 'int'>
feature.SetField(fld,somevalue) # produces error (see below)
layer.SetFeature(feature)
feature = None
dataSource = None
This is the error I get. All of this (later part) is inside a function.
However when I run the function in IDLE, it works.
feature.SetField(fld, somevalue)
File "C:\PROGRA~1\QGIS2~1.18\apps\Python27\lib\site-packages\osgeo\ogr.py",
line 4273, in SetField
return _ogr.Feature_SetFieldInteger64(self, fld_index, args[1])
TypeError: in method 'Feature_SetFieldInteger64', argument 2 of type 'int'
This is what ogrinfo reports on that field..
ogrinfo -so INSHP.shp
INFLD: Integer (9.0)
It seems that it won't take the integer of -9 into the field.
So, I am fairly new at using the ogr bindings.
My thoughts are
1) Am I closing the shapefile properly from the earlier step?
2) Looking at ogr.py 4273, it seems that there is a field type
difference 'Feature_SetFieldInteger64'
vs regular int.
Any pointers on how to move past this would be good. I won't be able to
look at the error till Monday, so I might not be able to answer any follow
up questions till then.
Thanks!
-Mike
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev