Ao ler uma camada de uma conexão OGR PostGIS, posso obter o SpatialReference da camada, mas é possível obter o valor EPSG? Existe alguma documentação sobre isso?
Por exemplo:
lyr = conn.GetLayerByName(tbl) # Where conn is OGR PG connection
srs = ly.GetSpatialRef()
print srs
Devoluções:
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]]
Então, como obtenho o valor EPSG para a projeção? Por exemplo:
srs.GetEPSG()
print srs
27700
Eu tentei srs.GetAttrValue('AUTHORITY')
, mas isso apenas retorna 'EPSG'
.
I've tried srs.GetAttrValue('AUTHORITY'), but this just returns 'EPSG'
qual é correto. EPSG é a autoridadeRespostas:
Está um pouco enterrado, mas há um segundo parâmetro em GetAttrValue () que retorna o valor nesse ordinal. Então eu posso fazer:
Depois de um pouco de brincadeira, descobri que você pode obter o valor de qualquer parâmetro usando um pipe
|
como separador de caminho:O que pode ser útil para encontrar o sistema de coordenadas geográficas de um CS projetado:
fonte
Aqui está um trecho de código que funcionou para mim:
fonte
SpatialReference.GetAuthorityCode()
tomaNone
como parâmetro, que encontra um nó de autoridade no elemento raiz (por exemplo, projetado / geográfico, conforme apropriado). O mesmo se aplica aGetAuthorityName()
:fonte