При чтении слоя из соединения OGR PostGIS я могу получить SpatialReference слоя, но возможно ли получить значение EPSG? Есть ли документация по этому поводу?
Например:
lyr = conn.GetLayerByName(tbl) # Where conn is OGR PG connection
srs = ly.GetSpatialRef()
print srs
Возвращает:
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]]
Итак, как мне получить значение EPSG для проекции? Например:
srs.GetEPSG()
print srs
27700
Я пытался srs.GetAttrValue('AUTHORITY')
, но это только возвращается 'EPSG'
.
I've tried srs.GetAttrValue('AUTHORITY'), but this just returns 'EPSG'
что правильно. EPSG является авторитетомОтветы:
Это немного скрыто , но в GetAttrValue () есть второй параметр, который возвращает значение по этому порядковому номеру . Так что я могу сделать:
Немного поиграв, я обнаружил, что вы можете получить значение для любого параметра, используя канал
|
в качестве разделителя пути:Который может быть полезен при поиске географической системы координат проектируемой системы координат:
источник
Вот фрагмент кода, который работал для меня:
источник
SpatialReference.GetAuthorityCode()
принимаетNone
в качестве параметра, который находит узел полномочий в корневом элементе (то есть, в зависимости от ситуации, прогнозируемый / географический). То же относится и кGetAuthorityName()
:источник