<div dir="ltr">Hi -<div>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. <br><br><p class="MsoNormal" style="font-size:12.8px">#earlier<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">driver = ogr.GetDriverByName('ESRI Shapefile')<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">dataSource = driver.Open(inshp, 1)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">layer = dataSource.GetLayer()<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">    idfield = ogr.FieldDefn('INFLD', <span style="color:rgb(0,0,0);font-size:12.8px">ogr</span><span class="gmail-o" style="font-size:12.8px;color:rgb(102,102,102)">.</span><span class="gmail-n" style="font-size:12.8px;color:rgb(51,51,51)">OFTInteger</span>)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">    layer.CreateField(idfield)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">dataSource = None<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px"><u></u> <u></u></p><p class="MsoNormal" style="font-size:12.8px">#later<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">driver = ogr.GetDriverByName('ESRI Shapefile')<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">dataSource = driver.Open(inshp, 1)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">layer = dataSource.GetLayer()<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">layerDefinition = layer.GetLayerDefn()<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">flds = [layerDefinition.GetFieldDefn(<wbr>i).GetName()<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">        for i in range(layerDefinition.<wbr>GetFieldCount())]<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">for feature in layer:<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">    for fld in flds:<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">        ...<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">        print fld,somevalue,type(somevalue) # --> <u></u><u></u><span style="font-size:12.8px">INFLD -9 <type 'int'></span></p><p class="MsoNormal" style="font-size:12.8px">        feature.SetField(fld,<wbr>somevalue) # produces error (see below)<u></u></p><p class="MsoNormal" style="font-size:12.8px">    layer.SetFeature(feature)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">    feature = None<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">dataSource = None</p><br><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">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. </p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">    feature.SetField(fld,<span style="font-size:12.8px"> somevalue</span>)<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">  File "C:\PROGRA~1\QGIS2~1.18\apps\<wbr>Python27\lib\site-packages\<wbr>osgeo\ogr.py", line 4273, in SetField<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">    return _ogr.Feature_<wbr>SetFieldInteger64(self, fld_index, args[1])<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">TypeError: in method 'Feature_SetFieldInteger64', argument 2 of type 'int'<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">This is what ogrinfo reports on that field..</p><p class="MsoNormal" style="font-size:12.8px">ogrinfo -so INSHP.shp<u></u><u></u></p><p class="MsoNormal" style="font-size:12.8px">INFLD: Integer (9.0)</p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">It seems that it won't take the integer of -9 into the field.</p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">So, I am fairly new at using the ogr bindings. </p><p class="MsoNormal" style="font-size:12.8px">My thoughts are</p><p class="MsoNormal" style="font-size:12.8px">1) Am I closing the shapefile properly from the earlier step? </p><p class="MsoNormal" style="font-size:12.8px">2) Looking at ogr.py 4273, it seems that there is a field type difference <span style="font-size:12.8px">'Feature_SetFieldInteger64' vs regular int. </span></p><p class="MsoNormal" style="font-size:12.8px"><span style="font-size:12.8px"><br></span></p><p class="MsoNormal" style="font-size:12.8px"><span style="font-size:12.8px">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. </span></p><p class="MsoNormal" style="font-size:12.8px"><span style="font-size:12.8px"> </span></p><p class="MsoNormal" style="font-size:12.8px"><br></p><p class="MsoNormal" style="font-size:12.8px">Thanks!</p><p class="MsoNormal" style="font-size:12.8px">-Mike</p></div></div>