¿Por qué QGIS no detecta CRS del archivo .prj?

9

Tengo una serie de cuadrículas hexagonales de 1 km que cubren varios condados en los Estados Unidos en una base de datos postgreSQL / postGIS. Cada cuadrícula tiene el CRS EPSG: 3857, y la capa de los condados tiene EPSG: 3857. Al ver las cuadrículas con los condados en QGIS, todo parece grandioso.

Pero ... para compartir estas cuadrículas con colegas, tuve que exportarlas a archivos de forma usando ogr2ogr. Al verlos en QGIS, cada cuadrícula parece desplazada unos 20 km más o menos, y QGIS establece automáticamente el CRS en EPSG: 3395 (que no es el CRS del proyecto).

Cuando exporto las tablas postGIS como archivos de forma desde QGIS , el archivo .prj se ve exactamente igual que los archivos de forma exportados ogr2ogr , pero las tablas exportadas postGIS se muestran correctamente. Noté que QGIS crea un archivo .qpj al exportar archivos shape desde QGIS , por lo que he llegado a la conclusión de que QGIS está ignorando el .prj y está buscando un .qpj. ¿Por qué no puede leer el .prj sin un .qpj? Otros archivos de forma (como los del Censo de EE. UU.) No tienen un .qpj, pero QGIS los muestra correctamente.

He encontrado una solución al guardar un default.qpj y crear un nuevo .qpj a partir de esto para cada archivo que se exporta usando ogr2ogr, pero esto parece desordenado y obviamente no es reproducible, ya que solo funciona para EPSG: 3857.

Nota al margen: estoy usando QGIS 2.0.1.

EDITAR:

Aquí está el comando ogr2ogr que utilicé:

ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1

Contenido del .prj:

PROJCS ["WGS_84_Pseudo_Mercator", GEOGCS ["GCS_WGS_1984", DATUM ["D_WGS_1984", SPHEROID ["WGS_1984", 6378137,298.257223563]], PRIMEM ["Greenwich", 0], UNIDAD [32] [32], 0.09, 1932, 25 " ["Mercator"], PARÁMETRO ["central_meridian", 0], PARÁMETRO ["false_easting", 0], PARAMETER ["false_northing", 0], UNIT ["Meter", 1], PARAMETER ["standard_parallel_1", 0.0] ]

Contenido del .qpj:

PROJCS ["WGS 84 / Pseudo-Mercator", GEOGCS ["WGS 84", DATUM ["WGS_1984", SPHEROID ["WGS 84", 6378137,298.257223563, AUTORIDAD ["EPSG", "7030"]], AUTORIDAD [" EPSG "," 6326 "]], PRIMEM [" Greenwich ", 0, AUTORIDAD [" EPSG "," 8901 "]], UNIDAD [" grado ", 0.0174532925199433, AUTORIDAD [" EPSG "," 9122 "]], AUTORIDAD ["EPSG", "4326"]], PROYECCIÓN ["Mercator_1SP"], PARAMETER ["central_meridian", 0], PARAMETER ["scale_factor", 1], PARAMETER ["false_easting", 0], PARAMETER ["false_northing" , 0], UNIDAD ["metro", 1, AUTORIDAD ["EPSG", "9001"]], EJE ["X", ESTE], EJE ["Y", NORTE], EXTENSIÓN ["PROJ4", "+ proj = merc + a = 6378137 + b = 6378137 + lat_ts = 0.0 + lon_0 = 0.0 + x_0 = 0.0 + y_0 = 0 + k = 1.0 + unidades = m + nadgrids = @ null + wktext + no_defs "], AUTORIDAD [" EPSG "," 3857 "]]

EDITAR :

El problema se resolvió convirtiendo EPSG: 3857's a EPSG: 2163 en todos mis scripts. Sin embargo, todavía no estoy seguro de cuál es el problema, ya que las cuadrículas se muestran correctamente en QGIS cuando se cargaron originalmente desde una tabla postgreSQL (con EPSG: 3857).

Mi solución probó ser cruda como pensé, ya que mi colega no pudo usar el archivo en ArcGIS, que no leía el .prj o el .qpj correctamente.

haff
fuente
¿Se puede agregar el comando ogr2ogr?
alphabetasoup
¿También puede publicar el contenido de los archivos .prj y .qpj?
mkennedy
1
Puede haber capacidades limitadas en esa "Proyección Web Mercator WGS84 en una esfera auxiliar" en.wikipedia.org/wiki/Web_Mercator .. A diferencia del Mercator elipsoidal y el Mercator esférico, el Web Mercator no es muy conforme debido a su uso de elipsoidal coordenadas geográficas de referencia contra una proyección esférica.
huckfinn
@huckfinn Cambié todos los EPSG: 3857's a EPSG: 2163's en mi script y mi problema ahora está resuelto. Todavía no estoy seguro de por qué esto es así, ya que todas las cuadrículas se muestran correctamente cuando se cargan desde las tablas postgreSQL con EPSG: 3857. Gracias por el consejo.
haff

Respuestas:

4

La EPSG:3857definición es un truco sucio para obtener la proyección que Google inventó en el software SIG moderno. Es una combinación de esfera y elipsoide que no se usa en proyecciones "normales". Desafortunadamente, cada software usa otra forma de adaptarlo.

QGIS usa el archivo .qpj, ARCGIS el WKT en el archivo .prj y GDAL la definición del proj.4. El archivo .qpj incorpora la definición proj.4 en la definición WKT.

La forma más segura de lidiar con estos problemas es evitar Google Mercator. Puede utilizar mejor su plano estatal local, UTM o algunas proyecciones Lambert o Albers de todo el continente.

AndreJ
fuente
Bueno saber. Gracias por tu respuesta. Sin embargo, he notado que cuando exporto un archivo de forma con EPSG 2163 usando ogr2ogr, no se crea .qpj, pero QGIS todavía lo lee correctamente. Así que supongo que QGIS leerá información de un .prj en ausencia de un .qpj. Además, las proyecciones de los planos estatales funcionarán muy bien si operan solo en un estado, pero mis guiones toman códigos fips del condado de muchos estados, por lo que un plano estatal no sería práctico en mi caso.
haff
1
QGIS generalmente funciona bien con el archivo .prj, pero no con los archivos proyectados de World Merctaor que provienen de otro software. El CRS más adecuado siempre depende del tamaño del área de estudio. EPSG 2163 debería estar bien para su tarea.
AndreJ