Saya memiliki sejumlah grid heksagonal 1 km yang mencakup berbagai negara di Amerika Serikat dalam database postgreSQL / postGIS. Setiap grid memiliki CRS EPSG: 3857, dan layer county memiliki EPSG: 3857. Saat melihat kisi-kisi dengan kabupaten di QGIS, semuanya tampak megah.
Tapi ... untuk membagikan kisi-kisi ini dengan kolega, saya harus mengekspornya ke shapefile menggunakan ogr2ogr. Melihat ini di QGIS, masing-masing kisi terlihat didorong sekitar 20 km atau lebih, dan QGIS secara otomatis mengatur CRS ke EPSG: 3395 (yang bukan merupakan proyek CRS).
Ketika saya mengekspor tabel postGIS sebagai shapefile dari QGIS , file .prj terlihat persis sama dengan ogr2ogr yang diekspor shapefile , tetapi tabel yang diekspor postGIS ditampilkan dengan benar. Saya perhatikan bahwa QGIS membuat file .qpj ketika mengekspor shapefile dari QGIS , jadi saya sampai pada kesimpulan bahwa QGIS mengabaikan .prj dan mencari .qpj sebagai gantinya. Mengapa tidak bisa membaca .prj tanpa .qpj? Shapefile lain (seperti yang dari Sensus AS) tidak memiliki .qpj tetapi QGIS menampilkannya dengan benar.
Saya telah menemukan solusi dengan menyimpan default.qpj dan membuat .qpj baru dari ini untuk setiap file yang mengekspor menggunakan ogr2ogr, tetapi ini tampak berantakan dan jelas tidak dapat direproduksi karena hanya berfungsi untuk EPSG: 3857.
Sidenote: Saya menggunakan QGIS 2.0.1.
EDIT:
Inilah perintah ogr2ogr yang saya gunakan:
ogr2ogr -f "ESRI Shapefile" /home/matt/data/hex_grid_1 PG:'dbname=mydb user=matt' hex_grid_1
Isi dari .prj:
PROJCS ["WGS_84_Pseudo_Mercator", GEOGCS ["GCS_WGS_1984", DATUM ["D_WGS_1984", SPHEROID ["WGS_1984", 6378137,298.257223563]], PRIMEM ["Greenwich", 0,0932, 992] ["Mercator"], PARAMETER ["central_meridian", 0], PARAMETER ["false_easting", 0], PARAMETER ["false_northing", 0], UNIT ["Meter", 1], PARAMETER ["standard_parallel_1", 0,0] ]
Isi dari .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 [" derajat ", 0,0174532925199433, OTORITAS [" EPSG "," 9122 "]], OTORITAS ["EPSG", "4326"]], PROYEKSI ["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", UTARA], PERPANJANGAN ["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 "], OTORITAS [" EPSG "," 3857 "]]
EDIT :
Masalahnya dipecahkan dengan mengubah EPSG: 3857 menjadi EPSG: 2163 di semua skrip saya. Saya masih tidak yakin apa masalahnya karena kisi-kisi ditampilkan dengan benar di QGIS ketika awalnya diambil dari tabel postgreSQL (dengan EPSG: 3857).
Solusi saya terbukti kasar seperti yang saya kira, karena rekan saya tidak dapat menggunakan file di ArcGIS, yang tidak membaca .prj atau .qpj dengan benar.
Jawaban:
The
EPSG:3857
definisi adalah hack kotor untuk mendapatkan proyeksi bahwa Google diciptakan ke dalam perangkat lunak GIS modern. Ini kombinasi bola dan ellipsoid yang tidak digunakan oleh proyeksi "normal". Sayangnya, setiap perangkat lunak menggunakan cara lain untuk mengadaptasinya.QGIS menggunakan file .qpj, ARCGIS the WKT dalam file .prj dan GDAL definisi proj.4. File .qpj menggabungkan definisi proj.4 ke dalam definisi WKT.
Cara teraman untuk mengatasi masalah tersebut adalah dengan menghindari Google Mercator. Anda bisa lebih baik menggunakan proyeksi State Plane, UTM, atau proyeksi Lambert atau Albers di seluruh benua.
sumber