[FWTools] python ogr - setField attribute error
David Fawcett
david.fawcett at gmail.com
Mon Oct 23 11:35:29 EDT 2006
I am bastardizing Matt Perry's text2shp.py and running into an error.
I am taking values from a text file and building a shapefile. The error
occurs when I try to set the value of first field of a feature. I am not
sure what would cause this error.
Below is the shell output. The first list printed is the column names, the
second list is the field types. The last line before the error is the column
number and the value to be inserted into that field (print colNum,
cols[colNum]).
D:\datascripts>python csv2shp.py
['stn_type', 'stn_name', 'X', 'Y', 'col_meth', 'col_date', 'org_name',
'org_type
', 'gnd_elev', 'uniq_id', 'tos_elev', 'bos_elev', 'comments']
[4, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4]
0 Monitoring Well
Traceback (most recent call last):
File "csv2shp.py", line 129, in ?
f.setField(colNum, cols[colNum])
File "C:\PROGRA~1\FWTOOL~1.5\pymod\ogr.py", line 755, in __getattr__
raise AttributeError, name
AttributeError: setField
__________________________________________-
here is the relevant part of the script
__________________________________________
ds = driver.CreateDataSource(outputFile)
layer = ds.CreateLayer(outputFile, geom_type=ogr.wkbPoint)
print colNames
print colTypes
#create fields
for j in range(len(colNames)):
fd = ogr.FieldDefn(colNames[j].strip(), colTypes[j])
fd.SetWidth(maxWidth[j] + 12)
fd.SetPrecision(precision[j]+1)
layer.CreateField(fd)
#second pass through data file
myFile = open(inputFile, 'r')
#skip the header row
line = myFile.readline()
#read the first data row
line = myFile.readline()
while line:
cleanline = line.replace('\n','')
cols = cleanline.split(delimiter)
#create the feature
f= ogr.Feature(feature_def=layer.GetLayerDefn())
# Fill in the attribute fields
for colNum in range(len(cols)):
print colNum, cols[colNum]
f.setField(colNum, cols[colNum]) # this is line 129 where
the error is being raised
# if there is a coordinate, use it to create a geometry
if cols[xColNum] and cols[yColNum]:
x = float(cols[xColNum])
y = float(cols[yColNum])
#create point feature
wkt = 'POINT(%f %f)' % (x,y)
g = ogr.CreateGeometryFromWkt(wkt)
f.SetGeometryDirectly(g)
layer.CreateFeature(f)
f.Destroy()
#destroying the data source closes the output shapefile
ds.Destroy()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/fwtools/attachments/20061023/ac47876f/attachment.html
More information about the FWTools
mailing list