Ho un numero di griglie esagonali da 1 km che coprono varie contee degli Stati Uniti in un database postgreSQL / postGIS. Ogni griglia ha il CRS EPSG: 3857 e il livello delle contee ha EPSG: 3857. Quando si visualizzano le griglie con le contee in QGIS, tutto sembra grandioso.
Ma ... per condividere queste griglie con i colleghi, ho dovuto esportarle in shapefile usando ogr2ogr. Visualizzandoli in QGIS, ogni griglia sembra spostarsi di circa 20 km circa e QGIS imposta automaticamente il CRS su EPSG: 3395 (che non è il CRS del progetto).
Quando esporto le tabelle postGIS come shapefile da QGIS , il file .prj ha lo stesso aspetto dei file shape esportati da ogr2ogr , ma le tabelle esportate postGIS vengono visualizzate correttamente. Ho notato che QGIS crea un file .qpj durante l'esportazione di file di forma da QGIS , quindi sono giunto alla conclusione che QGIS sta ignorando il .prj e cerca invece un .qpj. Perché non riesce a leggere il .prj senza un .qpj? Altri shapefile (come quelli del censimento degli Stati Uniti) non hanno un .qpj ma QGIS li visualizza correttamente.
Ho trovato una soluzione alternativa salvando un default.qpj e creando un nuovo .qpj da questo per ogni file che esporta usando ogr2ogr, ma questo sembra disordinato e ovviamente non riproducibile in quanto funziona solo per EPSG: 3857.
Sidenote: sto usando QGIS 2.0.1.
MODIFICARE:
Ecco il comando ogr2ogr che ho usato:
ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1
Contenuti del .prj:
PROJCS [ "WGS_84_Pseudo_Mercator", GEOGCS [ "GCS_WGS_1984", DATUM [ "D_WGS_1984", SPHEROID [ "WGS_1984", 6378137,298.257223563]], PRIMEM [ "Greenwich", 0], unità [ "Degree", ,017453292519943295]], PROIEZIONE [ "Mercator"], PARAMETRO [ "central_meridian", 0], PARAMETRO [ "false_easting", 0], PARAMETRO [ "false_northing", 0], UNIT [ "Meter", 1], PARAMETRO [ "standard_parallel_1", 0,0] ]
Contenuto di .qpj:
PROJCS ["WGS 84 / Pseudo-Mercator", GEOGCS ["WGS 84", DATUM ["WGS_1984", SPHEROID ["WGS 84", 6378137,298.257223563, AUTHORITY ["EPSG", "7030"]], AUTHORITY [" EPSG", "6326"]], PRIMEM [ "Greenwich", 0, l'autorità [ "EPSG", "8901"]], unità [ "grado", ,0174532925199433, Autorità [ "EPSG", "9122"]], l'autorità [ "EPSG", "4326"]], PROIEZIONE [ "Mercator_1SP"], PARAMETRO [ "central_meridian", 0], PARAMETRO [ "scale_factor", 1], PARAMETRO [ "false_easting", 0], PARAMETRO [ "false_northing" , 0], UNIT [ "meter", 1, l'autorità [ "EPSG", "9001"]], AXIS [ "X", EST], AXIS [ "Y", NORD], ESTENSIONE [ "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 + unità = m + nadgrids = @ null + wktext + no_defs "], AUTHORITY [" EPSG "," 3857 "]]
MODIFICA :
Il problema è stato risolto convertendo l'EPSG: 3857 in EPSG: 2163 in tutti i miei script. Non sono ancora sicuro di quale sia il problema, poiché le griglie sono state visualizzate correttamente in QGIS quando originariamente caricate da una tabella postgreSQL (con EPSG: 3857).
La mia soluzione alternativa si è rivelata rozza come pensavo, dato che il mio collega non è stato in grado di utilizzare il file in ArcGIS, che non ha letto correttamente il .prj o il .qpj.