Ich habe eine Anzahl von 1 km großen sechseckigen Gittern, die verschiedene Grafschaften in den Vereinigten Staaten in einer postgreSQL / postGIS-Datenbank abdecken. Jedes Gitter hat das CRS-EPSG: 3857 und die Grafschaftsschicht hat das EPSG: 3857. Wenn Sie die Raster mit den Landkreisen in QGIS anzeigen, sieht alles großartig aus.
Aber ... um diese Gitter mit Kollegen zu teilen, musste ich sie mit ogr2ogr in Shapefiles exportieren. Wenn Sie diese in QGIS anzeigen, sieht jedes Raster etwa 20 km nach oben verschoben aus, und QGIS setzt das CRS automatisch auf EPSG: 3395 (was nicht das Projekt-CRS ist).
Wenn ich die postGIS - Daten - Tabellen als Shape - Dateien exportieren von QGIS , die .prj - Datei sieht genau die gleichen wie die ogr2ogr exportiert Shape - Dateien , aber die postGIS - Daten exportierten Tabellen werden korrekt angezeigt. Ich habe festgestellt, dass QGIS beim Exportieren von Shapefiles aus QGIS eine .qpj-Datei erstellt. Daher bin ich zu dem Schluss gekommen, dass QGIS die .prj-Datei ignoriert und stattdessen nach einer .qpj-Datei sucht. Warum kann es die .prj nicht ohne .qpj lesen? Andere Shapefiles (wie die aus der US-Volkszählung) haben keine .qpj, aber QGIS zeigt diese korrekt an.
Ich habe eine Problemumgehung gefunden, indem ich eine default.qpj gespeichert und daraus eine neue .qpj für jede Datei erstellt habe, die mit ogr2ogr exportiert wird. Dies scheint jedoch chaotisch und offensichtlich nicht reproduzierbar zu sein, da es nur für EPSG: 3857 funktioniert.
Nebenbemerkung: Ich verwende QGIS 2.0.1.
BEARBEITEN:
Hier ist der Befehl ogr2ogr, den ich verwendet habe:
ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1
Inhalt der .prj:
PROJCS ["WGS_84_Pseudo_Mercator", GEOGCS ["GCS_WGS_1984", DATUM ["D_WGS_1984", SPHEROID ["WGS_1984", 6378137,298.257223563]], PRIMEM ["Greenwich", 0], UNIT ["Mercator"], PARAMETER ["central_meridian", 0], PARAMETER ["false_easting", 0], PARAMETER ["false_northing", 0], UNIT ["Meter", 1], PARAMETER ["standard_parallel_1", 0.0] ]]
Inhalt der .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, AUTHORITY [" EPSG "," 8901 "]], UNIT [" Degree ", 0.0174532925199433, AUTHORITY [" EPSG "," 9122 "], AUTHORITY ["EPSG", "4326"]], PROJECTION ["Mercator_1SP"], PARAMETER ["central_meridian", 0], PARAMETER ["scale_factor", 1], PARAMETER ["false_easting", 0], PARAMETER ["false_northing" , 0], UNIT ["meter", 1, AUTHORITY ["EPSG", "9001"]], AXIS ["X", EAST], AXIS ["Y", NORTH], EXTENSION ["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 + Einheiten = m + Nadgrids = @ null + wktext + no_defs "], AUTHORITY [" EPSG "," 3857 "]]
EDIT :
Das Problem wurde gelöst, indem die EPSG: 3857 in allen meinen Skripten in EPSG: 2163 konvertiert wurden. Ich bin mir immer noch nicht sicher, wo das Problem liegt, da die Gitter in QGIS korrekt angezeigt wurden, als sie ursprünglich aus einer postgreSQL-Tabelle geladen wurden (mit EPSG: 3857).
Meine Problemumgehung erwies sich als grob, da ich dachte, dass dies der Fall war, da mein Kollege die Datei in ArcGIS nicht verwenden konnte, da die .prj- oder die .qpj-Datei nicht richtig gelesen wurde.
Antworten:
Die
EPSG:3857
Definition ist ein schmutziger Hack, um die von Google erfundene Projektion in moderne GIS-Software zu bekommen. Es ist eine Kombination aus Kugel und Ellipsoid, die von "normalen" Projektionen nicht verwendet wird. Leider verwendet jede Software eine andere Methode, um sie anzupassen.QGIS verwendet die .qpj-Datei, ARCGIS die WKT in der .prj-Datei und GDAL die proj.4-Definition. Die .qpj-Datei enthält die proj.4-Definition in der WKT-Definition.
Der sicherste Weg, um mit solchen Problemen umzugehen, besteht darin, Google Mercator zu vermeiden. Sie können besser Ihr lokales State Plane, UTM oder einige kontinentweite Lambert- oder Albers-Projektionen verwenden.
quelle