Tämmöstä virhettä tuuttaa:
…/ogr2osm/ogr2osm.py K2444L.xml -t mtk-gml.py
running with ElementTree on Python 2.5+
Preparing to convert file ‘K2444L.xml’ to ‘/Volumes/My Book/Karttahommat/Maastotietokanta/tmp/K2444L.osm’.
Will try to detect projection from source metadata, or fall back to EPSG:4326
Successfully loaded ‘mtk-gml’ translation method (‘/Volumes/My Book/Karttahommat/Maastotietokanta/ogr2osm/ogr2osm-translations/mtk-gml.py’).
Using user filterLayer
Using default filterFeature
Using default filterTags
Using user filterFeaturePost
Using default preOutputTransform
Parsing data
Processing layer ‘Jyrkanne’
Detected projection metadata:
PROJCS[“ETRS89 / TM35FIN(E,N)”,
GEOGCS[“ETRS89”,
DATUM[“European_Terrestrial_Reference_System_1989”,
SPHEROID[“GRS 1980”,6378137,298.257222101,
AUTHORITY[“EPSG”,“7019”]],
TOWGS84[0,0,0,0,0,0,0],
AUTHORITY[“EPSG”,“6258”]],
PRIMEM[“Greenwich”,0,
AUTHORITY[“EPSG”,“8901”]],
UNIT[“degree”,0.0174532925199433,
AUTHORITY[“EPSG”,“9122”]],
AUTHORITY[“EPSG”,“4258”]],
PROJECTION[“Transverse_Mercator”],
PARAMETER[“latitude_of_origin”,0],
PARAMETER[“central_meridian”,27],
PARAMETER[“scale_factor”,0.9996],
PARAMETER[“false_easting”,500000],
PARAMETER[“false_northing”,0],
UNIT[“metre”,1,
AUTHORITY[“EPSG”,“9001”]],
AXIS[“Easting”,EAST],
AXIS[“Northing”,NORTH],
AUTHORITY[“EPSG”,“3067”]]
Traceback (most recent call last):
File “…/ogr2osm/ogr2osm.py”, line 612, in
parseData(data)
File “…/ogr2osm/ogr2osm.py”, line 295, in parseData
parseLayer(translations.filterLayer(layer))
File “…/ogr2osm/ogr2osm.py”, line 356, in parseLayer
parseFeature(translations.filterFeature(ogrfeature, fieldNames, reproject), fieldNames, reproject)
File “…/ogr2osm/ogr2osm.py”, line 377, in parseFeature
translations.filterFeaturePost(feature, ogrfeature, ogrgeometry)
File “…/ogr2osm/translations/mtk-gml.py”, line 73, in filterFeaturePost
feature.tags = mtk_features.get(ogrfeature[‘kohdeluokka’], mtk_default)(ogrfeature)
TypeError: ‘Feature’ object has no attribute ‘getitem’
Edittiä:
Laitan tämän tänne siltä varalta, että joku tuskailee saman asian kanssa.
Oli tänään hieman aikaa taas ihmetellä tätä ongelmaa. Kuten virheilmoituskin sanoo niin Feature luokalla (ogr.py tiedostossa) ei tosiaan ole getitem funkkaria. Raavin hieman päätäni ja luin Pythonista ja kokeilin seuraavaa:
ogrfeature.items()
Tämä tulostaa key-value parit nätisti joten se kohdeluokka siellä on, mutta jostain syystä sitä ei saa sieltä ulos. Feature luokalla on kuitenkin getattr funktio jolla pitäisi saada value ulos joten kokeilin:
ogrfeature.getattr(‘kohdeluokka’)
Ja kas, tämä toimii!
Mutta… jos tämä muilla toimii ilman säätämistäkin niin vian täytyy olla jossain muualla, eikö? Defaulttina voi epäillä liian vanhaa softaversiota. Minulla oli pygdal:n versio 1.8.1. joten tutkailin uudempia versiota. Ja kuinka ollakaan, jo seuraavassa versiossa (1.9.2) Feature luokalle oli lisätty tuo getitem.
Asensin uudemman GDAL:n (ja pygdal:n) yms. ja nyt homma toimii ilman säätämistä.