GDAL / Python: Comment puis-je obtenir le nom du système de coordonnées à partir de SpatialReference?

18

En Python, en utilisant GDAL, j'ai extrait la projection d'un raster sous forme de chaîne WKT comme suit:

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]]'

En utilisant la chaîne WKT, je peux créer une instance SpatialReference comme suit:

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

C'est facile. Je peux extraire plusieurs paramètres de la projection src, comme la zone UTM, etc., assez facilement. Mais je ne peux pas comprendre comment extraire quelque chose comme le nom de la projection, c'est-à-dire "GDA_1994_Transverse_Mercator". Cela doit sûrement être possible, mais la documentation de l'API Python peut également être inexistante pour toute l'utilisation qu'elle est.

Comment extraire les noms de la projection et du système de coordonnées géographiques?

Hendra
la source

Réponses:

46

Voir le didacticiel Projections OGR et la classe OGRSpatialReference . En particulier, la méthode GetAttrValue .

Voici un exemple concret.

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')

Pour mon raster, cela 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'
user2856
la source