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.