Saya mungkin melakukan sesuatu yang salah di sini, tetapi:
Jika saya mengimpor beberapa shapefile ke database PostGIS menggunakan shp2pgsql , saya harus terlebih dahulu mencari tahu SRID / EPSG dari shapefile itu. Saya pikir ini, minimal, proses dua langkah. Pertama-tama saya menanyakan shapefile seperti ini:
>ogrinfo -al -so someshapefile.shp
yang mengembalikan informasi proyeksi teks terkenal (wkt), tetapi sedikit verbose dan agak buram [bagi saya]. Sesuatu seperti:
GEOGCS["NAD83",
DATUM["North_American_Datum_1983",
SPHEROID["GRS 1980",6378137,298.257222101,
AUTHORITY["EPSG","7019"]],
AUTHORITY["EPSG","6269"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4269"]]
Saya kemudian biasanya menjalankan info wkt melalui alat konversi seperti Prj2EPSG untuk menemukan EPSG / SRID.
Pada titik ini, saya dapat mengimpor shapefile menggunakan:
>shp2pgsql -I -s 4269 someshapefile.shp <schema>.<table> | psql -U <user> -d <dbname> -h <hostaddress> -p 5432
Catatan, saya menentukan SRID dengan -s
bendera.
Jika, saya menjalankan shp2pgsql tanpa menentukan SRID, tidak ada proyeksi yang ditetapkan dan saya pikir kolom geom harus diperbarui secara manual untuk memasukkan proyeksi.
Atau, saya bisa melewatkan pencarian, dan cukup gunakan ogr2ogr :
>ogr2ogr -f "PostgreSQL" "PG:host=<hostaddress> user=<user> dbname=<dbname> password=<password>" "C:/shapefile.shp" -nln <schema>.<table>
yang tampaknya mengatur denda proyeksi, mungkin mengekstraksi secara otomatis dari sumber shapefile / prj.
Pertanyaan
Jadi apa kerugian menggunakan ogr2ogr? Apakah sebenarnya ada flag sehingga shp2pgsql secara otomatis mengekstrak dan mengatur proyeksi yang tepat juga? Jika tidak, mengapa tidak?
Tambahan
Ada yang menarik, mungkin sedikit tanggal, analisis komparatif menggunakan ogr2ogr vs shp2pgsql tersedia di naturalgis.pt . Ini menunjukkan untuk data sampel khusus mereka, bahwa ogr2ogr berkinerja lebih baik secara signifikan pada dataset kecil , tetapi shp2pgsql berkinerja lebih baik pada dataset yang lebih besar .
Saya tidak merasa ini memberikan jawaban yang pasti. Basis kode mungkin telah berevolusi, meningkatkan kinerja masing-masing. Mereka hanya menguji set kecil sampel data. Dataset representatif "besar" sebenarnya tidak terlalu besar. Juga, ini terutama membahas masalah kinerja, yang tentunya mempengaruhi kegunaan, tetapi pertanyaan awal lebih tertarik pada persyaratan input pengguna terkait usability.
Jawaban:
Tanpa berbicara dengan pengembang shp2pgsql, jawaban saya adalah berdasarkan opini, tetapi setidaknya shp2pgsql jauh lebih mudah tanpa deteksi otomatis proyeksi. Bagian utama dari kode sumber adalah sekitar 1800 baris http://postgis.net/docs/doxygen/2.2/d8/da3/shp2pgsql-core_8c_source.html dan ia melakukan apa yang penting: mengubah geometri dan atribut dari shapefile ke PostGIS.
Dalam sumber GDAL kode yang hanya menangani menafsirkan file .prj ESRI adalah 2700 baris https://github.com/OSGeo/gdal/blob/master/gdal/ogr/ogr_srs_esri.cpp .
Pro dan kontra:
Bagi pengguna sudut pandang, keuntungan utama shp2pgsql adalah:
Kerugian utama dari shp2pgsql adalah hanya mendukung shapefile.
GDAL dan ogr2ogr memberikan fungsionalitas yang sama untuk shapefile daripada shp2pgsql tetapi GDAL dapat menangani puluhan format vektor yang berbeda https://gdal.org/ogr_formats.html dan memberikan lebih banyak pilihan untuk memilih dan memproses data selama konversi. Namun, dengan GDAL
sumber