2 votos

¿Cómo puede un sistema de referencia espacial estar dañado por OSR mientras es válido por QGIS?

Tengo esta definición del sistema de referencia de coordenadas:

GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],VERTCS["NAVD_1988_Foot_US",VDATUM["North_American_Vertical_Datum_1988"],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Foot_US",0.3048006096012192]

Ejecuto esta prueba utilizando el módulo python osr para comprobar si la definición de proyección es válida.

import osr
srs = osr.SpatialReference()
srs.ImportFromESRI(['GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],VERTCS["NAVD_1988_Foot_US",VDATUM["North_American_Vertical_Datum_1988"],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Foot_US",0.3048006096012192]]'])
srs.Validate()

Esto produce 5, que es OGRError para datos corruptos.

Cuando utilizo esta misma cadena para validar la definición de crs en QGIS me dice que la definición del proyecto es válida. enter image description here ¿Cómo puede un sistema de referencia espacial estar dañado por OSR mientras es válido por QGIS?

2voto

5ulo Puntos 186

Según la OSR, la validación no es exhaustiva, compruébelo a continuación:

public int Validate​()

Validar tokens SRS. Este método intenta verificar que el sistema de referencia espacial está bien formado y consta de tokens conocidos. La validación no es exhaustiva.

Devoluciones:
0 en caso de éxito. En caso contrario, lanza una RuntimeException() (o un código de error si se ha llamado a DontUseExceptions()).

Puede añadir el siguiente código para obtener el código EPSG y comprobarlo:

import osr
srs = osr.SpatialReference()
srs.ImportFromESRI(['GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],VERTCS["NAVD_1988_Foot_US",VDATUM["North_American_Vertical_Datum_1988"],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Foot_US",0.3048006096012192]]'])

srs.AutoIdentifyEPSG()
code = srs.GetAuthorityCode(None)

Referencia:
https://gdal.org/java/org/gdal/osr/SpatialReference.html#Validate--

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X