GDAL / Python: ¿Cómo obtengo el nombre del sistema de coordenadas de SpatialReference?

18

En Python, usando GDAL, extraje la proyección de un ráster como una cadena WKT de la siguiente manera:

wkt = dataset.GetProjection()
# wkt is 'PROJCS["GDA_1994_Transverse_Mercator",GEOGCS["GDA_1994",DATUM["GDA_1994",SPHEROID["GRS_1980",6378137,298.2572221010002],TOWGS84[0,0,0,0,0,0,0]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",117],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",10000000],UNIT["Meter",1]]'

Usando la cadena WKT, puedo crear una instancia de SpatialReference de la siguiente manera:

src = osr.SpatialReference()
src.ImportFromWkt(wkt)

Esto es fácil. Puedo extraer varios parámetros de la proyección src, como la zona UTM, etc., con bastante facilidad. Pero no puedo entender cómo extraer algo como el nombre de la proyección, es decir "GDA_1994_Transverse_Mercator". Seguramente esto debe ser posible, pero la documentación de la API de Python también puede ser inexistente para todo el uso que es.

¿Cómo extraigo los nombres de la proyección y el sistema de coordenadas geográficas?

hendra
fuente

Respuestas:

46

Consulte el tutorial de Proyecciones de OGR y la clase OGRSpatialReference . En particular, el método GetAttrValue .

Aquí hay un ejemplo trabajado.

from osgeo import gdal,osr
ds=gdal.Open(r'SOMERASTER.TIF')
prj=ds.GetProjection()
print prj

srs=osr.SpatialReference(wkt=prj)
if srs.IsProjected:
    print srs.GetAttrValue('projcs')
print srs.GetAttrValue('geogcs')

Para mi trama, esto imprime:

PROJCS["WGS 84 / UTM zone 55N",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",147],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32655"]]
'WGS 84 / UTM zone 55N'
'WGS 84'
usuario2856
fuente