Lors de la lecture d'une couche à partir d'une connexion OGR PostGIS, je peux obtenir la référence spatiale de la couche, mais est-il possible d'obtenir la valeur EPSG? Existe-t-il une documentation à ce sujet?
Par exemple:
lyr = conn.GetLayerByName(tbl) # Where conn is OGR PG connection
srs = ly.GetSpatialRef()
print srs
Retour:
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]]
Alors, comment puis-je obtenir la valeur EPSG pour la projection? Par exemple:
srs.GetEPSG()
print srs
27700
J'ai essayé srs.GetAttrValue('AUTHORITY')
, mais cela revient juste 'EPSG'
.
I've tried srs.GetAttrValue('AUTHORITY'), but this just returns 'EPSG'
qui est correct. EPSG est l'autoritéRéponses:
C'est un peu enterré, mais il y a un deuxième paramètre à GetAttrValue () qui renvoie la valeur à cet ordinal. Je peux donc faire:
Après un peu de jeu, j'ai trouvé que vous pouvez obtenir la valeur de n'importe quel paramètre en utilisant un tuyau
|
comme séparateur de chemin:Qui peut être utile pour trouver le système de coordonnées géographiques d'un CS projeté:
la source
Voici un extrait de code qui a fonctionné pour moi:
la source
SpatialReference.GetAuthorityCode()
prendNone
comme paramètre, qui trouve un nœud d'autorité sur l'élément racine (c'est-à-dire projeté / géographique selon le cas). Il en va de même pourGetAuthorityName()
:la source