Mengapa QGIS tidak mendeteksi CRS dari file .prj?

9

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.

haff
sumber
Bisakah Anda menambahkan perintah ogr2ogr?
alphabetasoup
Bisakah Anda juga memposting konten file .prj dan .qpj?
mkennedy
1
Mungkin ada kemampuan terbatas pada "WGS84 Web Mercator Projection on a Auxiliary Sphere" en.wikipedia.org/wiki/Web_Mercator .. Tidak seperti Mercator ellipsoidal dan Mercator bola, Web Mercator tidak cukup sesuai karena penggunaan ellipsoidal datum koordinat geografis terhadap proyeksi bola.
huckfinn
@huckfinn Saya mengubah semua EPSG: 3857 menjadi EPSG: 2163 dalam skrip saya dan masalah saya sekarang terpecahkan. Saya masih tidak yakin mengapa ini karena semua grid ditampilkan dengan benar ketika diambil dari tabel postgreSQL dengan EPSG: 3857. Terima kasih atas tipnya.
haff

Jawaban:

4

The EPSG:3857definisi 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.

AndreJ
sumber
Senang mendengarnya. Terima kasih atas jawaban anda. Namun saya perhatikan bahwa ketika saya mengekspor file bentuk dengan EPSG 2163 menggunakan ogr2ogr, tidak ada .qpj dibuat, namun QGIS masih membacanya dengan benar. Jadi saya berasumsi bahwa QGIS akan membaca info dari .prj tanpa adanya .qpj. Juga, proyeksi pesawat negara akan bekerja dengan baik jika beroperasi hanya dalam satu negara, tetapi skrip saya mengambil kode county fips dari banyak negara, sehingga pesawat negara bagian tidak akan praktis dalam kasus saya.
haff
1
QGIS biasanya berfungsi baik dengan file .prj, tetapi tidak dengan World Merctaor yang memproyeksikan file yang berasal dari perangkat lunak lain. CRS yang paling cocok selalu tergantung pada ukuran area studi. EPSG 2163 seharusnya tidak masalah untuk tugas Anda.
AndreJ