Beim Lesen eines Layers aus einer OGR-PostGIS-Verbindung kann ich die räumliche Referenz des Layers abrufen. Ist es jedoch möglich, den EPSG-Wert abzurufen? Gibt es dazu Unterlagen?
Beispielsweise:
lyr = conn.GetLayerByName(tbl) # Where conn is OGR PG connection
srs = ly.GetSpatialRef()
print srs
Kehrt zurück:
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]]
Wie erhalte ich den EPSG-Wert für die Projektion? Z.B:
srs.GetEPSG()
print srs
27700
Ich habe es versucht srs.GetAttrValue('AUTHORITY')
, aber das kommt gerade zurück 'EPSG'
.
I've tried srs.GetAttrValue('AUTHORITY'), but this just returns 'EPSG'
welches ist richtig. EPSG ist die BehördeAntworten:
Es ist etwas vergraben, aber es gibt einen zweiten Parameter für GetAttrValue (), der den Wert an dieser Ordnungszahl zurückgibt. Also kann ich tun:
Nach einigem Herumspielen habe ich festgestellt, dass Sie den Wert für jeden Parameter mithilfe einer Pipe
|
als Pfadtrennzeichen abrufen können:Was beim Auffinden des geografischen Koordinatensystems eines projizierten CS hilfreich sein kann:
quelle
Hier ist ein Codeausschnitt, der für mich funktioniert hat:
quelle
SpatialReference.GetAuthorityCode()
NimmtNone
als Parameter, der einen Berechtigungsknoten auf dem Stammelement findet (dh je nach Bedarf projiziert / geografisch). Gleiches gilt fürGetAuthorityName()
:quelle