Al leer una capa desde una conexión OGR PostGIS, puedo obtener la referencia espacial de la capa, pero ¿es posible obtener el valor EPSG? ¿Hay alguna documentación de esto?
Por ejemplo:
lyr = conn.GetLayerByName(tbl) # Where conn is OGR PG connection
srs = ly.GetSpatialRef()
print srs
Devoluciones:
PROJCS["OSGB 1936 / British National Grid",
GEOGCS["OSGB 1936",
DATUM["OSGB_1936",
SPHEROID["Airy 1830",6377563.396,299.3249646,
AUTHORITY["EPSG","7001"]],
AUTHORITY["EPSG","6277"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4277"]],
UNIT["metre",1,
AUTHORITY["EPSG","9001"]],
PROJECTION["Transverse_Mercator"],
PARAMETER["latitude_of_origin",49],
PARAMETER["central_meridian",-2],
PARAMETER["scale_factor",0.9996012717],
PARAMETER["false_easting",400000],
PARAMETER["false_northing",-100000],
AUTHORITY["EPSG","27700"],
AXIS["Easting",EAST],
AXIS["Northing",NORTH]]
Entonces, ¿cómo obtengo el valor EPSG para la proyección? P.ej:
srs.GetEPSG()
print srs
27700
Lo he intentado srs.GetAttrValue('AUTHORITY')
, pero esto solo vuelve 'EPSG'
.
I've tried srs.GetAttrValue('AUTHORITY'), but this just returns 'EPSG'
cual es correcta. EPSG es la autoridadRespuestas:
Está un poco enterrado, pero hay un segundo parámetro para GetAttrValue () que devuelve el valor en ese ordinal. Entonces puedo hacer:
Después de jugar un poco, descubrí que puede obtener el valor de cualquier parámetro utilizando una tubería
|
como separador de ruta:Que puede ser útil para encontrar el sistema de coordenadas geográficas de un CS proyectado:
fuente
Aquí hay un fragmento de código que me ha funcionado:
fuente
SpatialReference.GetAuthorityCode()
tomaNone
como parámetro, que encuentra un nodo de autoridad en el elemento raíz (es decir, proyectado / geográfico según corresponda). Lo mismo se aplica aGetAuthorityName()
:fuente