Hello,
I have trouble transforming a datasource from one srs to another. I am
using the python bindings and gdal 1.6.0 on Windows. Problem is,
whatever I do to the datasource and the contained feature geometries,
the coordinates just don't get transformed. My code, from what I've
figured out so far:
def transform_datasource(datasource, source_epsg_id, target_epsg_id):
source_srs = osr.SpatialReference()
source_srs.ImportFromEPSG(source_epsg_id)
target_srs = osr.SpatialReference()
target_srs.ImportFromEPSG(target_epsg_id)
transformation = osr.CoordinateTransformation(source_srs, target_srs)
target_driver = ogr.GetDriverByName('Memory')
target_datasource = target_driver.CreateDataSource('')
for layer_index in xrange(datasource.GetLayerCount()):
source_layer = datasource.GetLayer(layer_index)
target_datasource.CopyLayer(source_layer, source_layer.GetName())
target_layer = target_datasource.GetLayer(layer_index)
for feature_index in xrange(source_layer.GetFeatureCount()):
source_feature = source_layer.GetFeature(feature_index)
target_feature = target_layer.GetFeature(feature_index)
geometry = source_feature.GetGeometryRef()
target_geometry = geometry.Clone()
target_geometry.Transform(transformation)
target_feature.SetGeometry(target_geometry)
return target_datasource
My testing setup: Load a Shapefile, transform it from epsg 31466 to 4326
and save as GeoJSON. Saving as GeoJSON works, but not the transformation:
shp_path = 'xyz.shp'
shp_driver = driver_by_name('ESRI Shapefile')
shp_datasource = open_datasource(shp_driver, shp_path, False)
path1 = '%s.geojson' % ''.join(random.choice(string.ascii_letters)
for i in xrange(7))
# see function above
transformed = transform_datasource(shp_datasource, 31466, 4326)
geojson_datasource = convert_datasource(transformed, 'GeoJSON', path1)
transformed.Release()
geojson_datasource.Release()
Many thanks for tipps, why nothing happens when transforming. I looked
already at the python version of ogr2ogr, but I don't understand well
what's going on in there ...
Frank
--
Frank BRONIEWSKI
METRICO s.à r.l.
géomètres
technologies d'information géographique
rue des Romains 36
L-5433 NIEDERDONVEN
tél.: +352 26 74 94 - 28
fax.: +352 26 74 94 99
http://www.metrico.lu
_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev