Menambahkan shapefile ke database PostGIS

30

Saya bisa membuat database Postgresql dan kemudian saya jalankan,

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

Jadi sekarang dapatkah saya mengimpor shapefile secara langsung? Apakah ini perintah yang benar,

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

Saya tidak yakin bagaimana membuat struktur basis data, apakah itu tidak memerlukan tabel? Saya akhirnya perlu menambahkan banyak beban shapefile dan apakah ada perintah untuk melakukan itu?

Sam007
sumber

Jawaban:

49

Coba shp2pgsql. Sintaks dasarnya seperti:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h PEMBAWA ACARA -d DATABASE -U PENGGUNA

Saya selalu menemukan lembar contekan ini dari http://www.bostongis.com bermanfaat. Jika Anda gulir ke bawah sedikit, Anda akan menemukan contoh sederhana tentang cara memuat data.

Semoga ini bisa membantu.

Stophface
sumber
Tapi saya tidak punya meja. Tabel dan skema apa yang harus saya buat?
Sam007
1
Jika Anda melihat pada lembar contekan , (-d|-a|-c|-p)adalah bendera untuk tabel. Jika Anda tidak menentukan apa pun, itu akan memilih -csecara default (membuat tabel baru dan mengisinya). Adapun SRID, saya tidak tahu - itu tergantung pada proyeksi data Anda. Jika Anda memiliki .projfile yang datang dengan shapefile, Anda dapat memeriksa proyeksi itu di prj2epsg.org/search . Semoga ini bisa membantu ..
terima kasih atas jawabannya @Haziq. Saya hanya bingung dari mana -cdatangnya? Saya mencoba shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranhtetapi saya mendapatkan kesalahan dpaste.com/834563
Sam007
Saya pikir -charus pergi setelah -s 4326, dan sebelum /var/www/geo/shapefile/PimaPine.shp.. Sintaksnya adalah shp2pgsql [OPTIONS] shapefile [schema.]table. Apakah mengubah posisi -cefek masih dalam kesalahan?
Tidak ada kesalahan yang sama. Mungkin juga menghadapi kesalahan ROLLBACK Bung untuk ini, gis.stackexchange.com/questions/41807/…
Sam007
4

Ahh! Belum bisa berkomentar!

Apa yang diposting Haziq akan menjadi cara baris perintah yang benar untuk melakukannya, Sam.

TABEL adalah apa pun yang Anda ingin beri nama dan akan menjadi nama yang akan digunakan saat memanggilnya dari kueri, tabel akan dihasilkan setelah impor.

Jika Anda menjadi malas seperti saya, saya hanya menggunakan SPIT (Shapefile to PostGIS Import Tool) yang luar biasa yang tersedia sebagai plugin QGIS untuk mengimpor semua shapefile saya sekarang. Dengan asumsi Anda menggunakan QuantumGIS seperti yang Anda katakan sebelumnya Anda menggunakan OpenGeo.

RomaH
sumber
1
masalahnya saya tidak punya GUI. Saya bekerja di Server Ubuntu dari jarak jauh.
Sam007
SPIT akan bekerja dari jarak jauh, saya lakukan sepanjang waktu dari kantor ke rumah saya DB, Anda hanya perlu mengisi informasi koneksi seperti yang Anda lakukan untuk login di psql.
RomaH
Bagaimana cara saya menjalankannya
Sam007
Yah saya berasumsi Anda mengambil file shp lokal dan meletakkannya di server jauh Anda. Anda akan memulai QGIS dan menggunakan plugin SPIT pada mesin lokal Anda, sambungkan server jarak jauh Anda dan unggah.
RomaH
Semua file shp saya ada di server
Sam007