Sudah disarankan agar saya mengajukan pertanyaan ini lagi, tetapi mungkin kata-kata berbeda dari bagaimana cara Massal memuat beberapa shapefile ke PostGIS .
Saya baru mengenal postgis dan sql tetapi saya ingin menggunakan postgis sebagai budak (untuk saat ini) untuk ArcSDE. Karena itu yang saya cari adalah bantuan untuk mengetahui bagaimana cara saya mengunggah data ArcSDE ke PostGIS setiap malam.
Saya dapat menghasilkan skrip python untuk mengekspor data ArcSDE ke SHP setiap malam, tetapi saya kemudian tidak yakin bagaimana untuk kemudian mengunggah file SHP yang diekspor ke PostGIS, menimpa yang sudah ada di postgis semua sebagai tugas otomatis (file batch saya kira ).
Rencana besar saya adalah mengganti ArcSDE / ArcGIS tepat waktu dengan PostGIS, QGIS dan GeoServer atau MapServer.
sumber
Jawaban:
Daripada melakukan DB -> file -> konversi DB, di mana Esri Shapefile adalah komponen berbasis file perantara, mungkin lebih baik menyelidiki DB lebih langsung -> transfer DB. Ada beberapa alat di luar sana yang dapat melakukan ini, tapi saya hanya berfokus pada alat GDAL / OGR open source .
Dengan asumsi Anda memiliki Server Windows, Anda dapat dengan mudah menginstal GDAL / OGR menggunakan OSGeo4W . Dengan mode Instalasi Tingkat Lanjut, Anda memiliki kemampuan untuk memilih konfigurasi paket khusus, seperti driver SDE (lihat daftar paket ini untuk memastikan ada kecocokan yang cocok untuk versi SDE Anda - hanya versi SDE yang didukung 9.0 hingga 9.2). Paket-paket ini hanya header dan pembungkus, dan mengharuskan Anda untuk menginstal perpustakaan SDE, yang harus Anda miliki pada CD / DVD ROM, dan memastikan variabel PATH secara tepat diatur untuk GDAL / OGR untuk menemukannya. Instalasi yang berhasil akan menampilkan "SDE" di suatu tempat dengan perintah berikut dalam shell OSGeo4W:
ogr2ogr --formats
Setelah Anda mengkonfigurasi GDAL / OGR, Anda dapat menggunakan beberapa alat:
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version]
(Anda juga dapat menjelajahi berbagai-append
,-overwrite
atau-update
opsi)Peringatan utama untuk metode ini adalah rumitnya pengaturan.
sumber
shp2pgsql
,psql
, dllPostGIS memiliki loader bernama shp2pgsql yang dapat Anda gunakan untuk memuat shapefile ke dalam database PostGIS. Salah satu opsinya ("-d") menjatuhkan tabel database yang ada sebelum memuat data. Seharusnya cukup sederhana untuk membuat file batch atau skrip yang dapat di-loop melalui semua shapefile dan memuatnya untuk Anda.
Jika Anda ingin lebih menyukainya, Anda dapat menginstal GDAL, dan menggunakan alat OGR (yang memiliki konektor ArcSDE) dan melewatkan ekspor shapefile. Info tentang konektor ArcSDE dapat ditemukan di sini .
sumber
Saya tahu saya terlambat ke pesta tetapi ada opsi lain untuk ini yang menghindari memiliki 2 database.
Anda dapat memiliki ArcSDE di atas Postgresql + Postgis. Ini akan menjadi tuanmu dan hanya db.
ArcSDE dapat dikonfigurasi untuk menggunakan geometri postgis dan bukan st_geometries (hak milik ESRI).
Ini berarti Anda kemudian dapat menggunakan alat postgis apa pun untuk secara langsung menggunakan tabel spasial yang dimuat / diedit ArcSDE, karena sebenarnya itu adalah tabel asli postgis.
Misalnya Anda dapat menggunakan qgis untuk terhubung ke database postgis secara langsung dan membaca data yang sama seperti arcgis melalui arcsde.
sumber
Pendekatan lain adalah dengan menggunakan ETL spasial seperti Geokettle (open source).
http://www.spatialytics.org/projects/geokettle/
Saya menggunakan Geokettle untuk memindahkan data antara sql server dan PostGIS sepanjang waktu. Namun, sementara itu bekerja dengan baik dengan PostGIS ada tantangan ketika bekerja dengan tipe data spasial SQL Server (lihat petunjuk di bawah). Juga, ini mengasumsikan Anda menyimpan geometri SDE sebagai tipe data spasial asli SQL Server. Anda dapat melakukan ini dengan kata kunci Geometri saat memuat data melalui ArcCatalog.
Petunjuk 1: ketika memilih data DARI server sql, terapkan .STAsText () ke bidang geometri atau Geokettle akan tersedak pada tipe data server sql.
Petunjuk 2: Saat memasukkan data ke dalam sql server, Anda harus memasukkan geometri sebagai teks ke dalam bidang teks. Kemudian gunakan langkah sql untuk menambahkan kolom geometri baru (jika perlu) dan mengisinya dari geometri teks. Dengan begitu Anda menggunakan SQL Server untuk membangun geometri dari representasi teks standar OGC dari geometri.
Petunjuk 3: Pastikan untuk mendaftarkan tabel spasial baru Anda dengan SDE.
sumber
Pertimbangkan pengaturan replikasi basis data pada 9,3 db asli.
Itu tidak berfungsi sebaik 10 yang baru tetapi ...
meniru itu ke sde lain di postgresql menggunakan pg_geometry tipe data postgis.
Berikut adalah beberapa bantuan esri
CATATAN: Ini akan memerlukan lisensi duplikat jika kedua dbs tidak berada di mesin yang sama
sumber
Anda dapat menulis ArcObjects ke:
A) buang basis data arcsde Anda; B) Kode c # biasa untuk menghasilkan sql shp2pgsql; C) Kode c # biasa untuk membuang tabel lama; D) Biasa c # untuk mengeksekusi semua shp2pgsql ke postgresql Anda;
Anda dapat menggunakan driver npgsql untuk mencapai ini, menjalankan fungsi dan pernyataan sql langsung ke dalam database postgis Anda;
sumber
Apa geometri ArcSDE Anda ( penyimpanan Geodatabase dalam database relasional )? Dalam skenario seperti itu, Anda dapat mempertimbangkan menggunakan tipe ST_Geometry dan kemudian menggunakan replikasi PostGre / PostGIS ( PostGIS Replication @ FOSS4G ) alat. Skema ini mungkin memiliki keuntungan menggunakan fitur ArcSDE / ArcGIS / geodatabase untuk edisi (basis data edisi) dan alat sumber terbuka untuk difusi (replikasi basis data difusi).
sumber