1 votos

Gdalinfo y QuantumGIS no reconocen Spatial Reference aunque Python sí lo hace

Aplico la siguiente referencia espacial a un archivo:

spatialRef = osr.SpatialReference()
spatialRef.ImportFromEPSG(3411)    
outraster.SetProjection(spatialRef.ExportToWkt() )

geotransform = (-3850000.0, 25000.0 ,0.0 ,5850000.0, 0.0, -25000.0)
outraster.SetGeoTransform(geotransform)

Si utilizo "icechart.GetGeoTransform()" y "icechart.GetProjection()" en Python, la salida parece correcta.

>>>icechart = gdal.Open(r'C:\Users\max\Desktop\test\icechart_persistencemap.tif')
>>>icechart.GetProjection()
'PROJCS["NSIDC_Sea_Ice_Polar_Stereographic_North",GEOGCS["GCS_Unspecified datum based upon 
the Hughes 1980 ellipsoid",DATUM["D_",SPHEROID["Hughes_1980",6378273,298.279411123064]],
PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Stereographic_North_P
ole"],PARAMETER["standard_parallel_1",70],PARAMETER["central_meridian",-45],PARAMETER
["false_easting",0],PARAMETER["false_northing",0],UNIT["Meter",1]]'

>>>icechart.GetGeoTransform()
(-3850000.0, 25000.0, 0.0, 5850000.0, 0.0, -25000.0)

Sin embargo, gdalinfo me dice que no hay ninguna Referencia Espacial definida, tampoco lo hace QuantumGIS.

Cuando obtengo la Proyección y Geotransformación de otro archivo, en lugar de definirla manualmente, gdalinfo encuentra la Referencia Espacial:

outraster.SetGeoTransform(icechart.GetGeoTransform())
outraster.SetProjection(icechart.GetProjection())

También cuando reproyecto el raster de arriba con gdalwarp, gdalinfo y QGIS reconocen la Referencia Espacial:

os.system('gdalwarp -s_srs EPSG:3411 -tr 25000 -25000 -t_srs EPSG:3575 -of GTiff ' 
+ infile + ' ' + outfile) 

¿Qué hay de malo en las primeras líneas de código de este post? ¿Algún consejo?

0voto

Max Puntos 195

Parece que he encontrado una respuesta, aunque no sé por qué.

Esto NO funciona:

spatialRef = osr.SpatialReference()
spatialRef.ImportFromEPSG(3411)
outraster.SetProjection(spatialRef.ExportToWkt() )
outband.FlushCache()

Sin embargo, esto sí funciona:

spatialRef = osr.SpatialReference()
spatialRef.ImportFromProj4('+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs')
outraster.SetProjection(spatialRef.ExportToWkt() )
outband.FlushCache()

¿Podría ser que a gdal no le guste la representación Wkt de EPSG:3411 pero esté contento con la creada a partir de la versión proj4? ( Proj4 y WKT están tomados de aquí o de la biblioteca gdal).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X