Memigrasikan data geodatabase ke PostGIS tanpa aplikasi Esri?


39

Bisakah Anda memberi tahu saya bagaimana saya bisa memuat data geodatabase ke PostGIS tanpa harus menginstal aplikasi Esri?

Solusi yang saya temukan online berbicara tentang menggunakan ArcGIS untuk mengkonversi GDB ke SHP dan kemudian mengimpor SHP ke PostGIS.


Terimakasih banyak atas jawaban Anda. FME bisa menjadi solusi yang valid, tetapi kami menganggapnya sebagai solusi yang sangat mahal. Kami berpikir bahwa masa uji coba 14 hari tidak cukup untuk migrasi. Adakah yang punya pengalaman dengan alat lain, seperti skrip GDAL atau GeoKettle? Salam.
SonOfabox

Desktop FME adalah solusi terbaik untuk data migrasi

Jawaban:


37

Saya melakukannya sepanjang waktu untuk klien saya.

Buang data Anda ke FileGDB atau Shapefile lalu jalankan perintah berikut:

Untuk Shapefile ESRI:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myshapefile.shp

Untuk FileGDB:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname user = postgres" myFileGDB.gdb

Untuk FileGDB, Anda perlu memastikan bahwa driver FileGDB diinstal. Anda melakukannya dengan:

ogrinfo - format

yang seharusnya menunjukkan FileGDB di suatu tempat untuk memberi tahu Anda itu diinstal.


Bisakah Anda memberikan rincian lebih lanjut tentang menginstal driver FileGDB untuk OGR?
RyanDalton

7
Cara termudah untuk Windows adalah trac.osgeo.org/osgeo4w Cari paket filegdb (saya akan memperbaruinya dengan perbaikan bug minggu depan). Jika Anda menggunakan Linux atau Mac, Anda dapat memodifikasi skrip berikut yang saya gunakan untuk membangunnya dengan cepat (lihat install_filegdb) gist.github.com/2955440
Ragi Yaser Burhum

@RyanDalton dan beri tahu saya bagaimana kelanjutannya :)
Ragi Yaser Burhum

1
Apa yang terjadi pada metadata dengan proses ini? Misalnya metadata FGDC yang menampung lebih dari sekadar sistem koordinat, dll.
Oliver Burdekin

ogr2ogr tidak akan menulisnya secara default , tetapi dengan melihat kodenya, saya melihat bahwa ada perintah "GetLayerDefinition" khusus yang dapat Anda jalankan di SQL prompt untuk membaca informasi ini. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"akan membuang metadata XML ESRI ke bidang dalam db itu
Ragi Yaser Burhum

7

Saya belum mencoba ini jadi tidak bisa memverifikasi itu berhasil, tetapi File Geodatabase API memungkinkan Anda untuk mengekspor data dari file Geodatabase ke SHP (dan kemudian PostGIS). Dokumentasi mengatakan:

With the API you can... Read and write data

Terima kasih Stephen, berguna untuk mengetahui bahwa ada API tetapi kami mungkin akan mencobanya jika tidak benar-benar ada alat di luar sana yang ditulis orang yang melakukan ini secara otomatis.
Gerson Galang

6
Jika Anda memiliki File GEodatabase API, Anda dapat mengonversi secara langsung menggunakan GDAL juga: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw

2
Beberapa Perhatian: ESRI mengembangkan API, dan alat-alat berdasarkan itu, hanya akan bekerja dengan File GDB (.gdb) yang dibuat atau dikonversi untuk digunakan di ArcGIS 10 atau yang lebih baru. Dukungan untuk versi Personal GDB (.mdb) sebelumnya berasal dari upaya pemrograman sebelumnya dan dapat bekerja tergantung pada data dan alat.
V Stuart Foote

@johanvdw Saya mencoba trac.osgeo.org/gdal/wiki/FileGDB beberapa hari yang lalu sebelum memposting pertanyaan saya di atas karena instruksi pada tautan itu tidak bekerja untuk saya juga. Saya mencoba gdal 1.8.1 terbaru di Ubuntu 10.04 saya tetapi sepertinya tidak menginstal plugin File GeoDB ke gdal. Saya mencoba "--with-fgdb = / usr / local / FileGDB_API" dan "--with-fgdb = / usr / local" karena dokumentasinya tidak jelas dalam menentukan apa yang harus saya gunakan dalam parameter "with-fgdb" tapi tidak ada yang berhasil.
Gerson Galang

GCG: bentuk halaman yang sama: (ganti / usr / local / FileGDB_API dengan tempat Anda mengekstraksi FileGDB_API_ <version> .tar.gz)
johanvdw

5

API file geodatabase Esri hanya berfungsi dengan file geodatabases yang dibuat menggunakan 10.x - versi yang lebih lama tidak akan berfungsi dengan GDAL, QGIS atau apa pun yang bergantung pada file open API geodatabase . Personal Geodatabases lama bergantung pada MS Access dan ada pembaca dan kode yang tersedia.

Jika Anda memiliki geodatabase file 10.x Anda dapat membaca layer dari FileGDB dan memuat ke PostGIS dengan perintah ogr2ogr tunggal ( lihat dokumentasi ):

ogr2ogr -overwrite -skipfailures -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"

Untuk melakukan ini, saya juga harus mengunduh VS2010 express edition dan membangun GDAL saya sendiri, ogr plugin dan 1.3 file API geodatabase yang terbuka.

Apa yang saya tidak dapat lakukan adalah melakukan migrasi geodatabase file 9.x yang lebih lama tanpa menggunakan perangkat lunak esri (tidak tersedia bagi saya atm) - Saya tidak dapat melewati ...

HRESULT = -2147220965, errorText = "Rilis GeoDatabase ini tidak valid atau ketinggalan zaman."

... ketika mencoba untuk membuka 9.x "gdb" dengan API terbuka yang hanya mendukung 10.x "gdb".


Versi terbaru (pertengahan 2014) dari ogr2ogr dengan OpenFileGDB setidaknya dapat membaca versi ESRI File Geodatabases yang lebih lama.
c.gutierrez

2

Meskipun saya belum mencobanya sendiri, saya baru saja menemukan tutorial ini (yang merupakan shapefile -> PostGIS) yang menggunakan perangkat lunak geoETL open-source yang disebut " Spatial Data Integrator ". Saya tidak yakin apakah ini mendukung Esri GDB atau tidak, tetapi mungkin perlu diselidiki lebih lanjut untuk melihat apakah Anda dapat menggunakan produk ini untuk melakukan konversi yang serupa dari GDB ke PostGIS tanpa menggunakan produk ESRI.

Paket ETL lain yang saya dengar adalah FME dari Safe Sofware ($, sangat populer) dan GeoKettle (open-source), serta banyak lagi referensi tentang halaman wikipedia Spatial ETL .

EDIT : Setelah menggali sedikit lebih jauh, sepertinya SDI tidak secara langsung mendukung pembacaan EsriGDB , tetapi dapat membaca format file OGR yang tersedia .


2

Pekerjaan FWIW sedang berlangsung untuk membuat GDB ke postgis loader. Ini tergantung pada trunk GDAL terbaru yang memiliki binding GDB. Belum punya kesempatan untuk mengkompilasi dan mencoba sendiri tetapi berharap sebelum PostGIS 2.0 keluar.

lihat - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Anda mungkin dapat memberi Paul buzz di newsgroup PostGIS untuk mencari tahu di mana dia dengan ini. http://www.postgis.org/mailman/listinfo/postgis-users

Untuk format Personal GeoDatabase, GDAL dapat membaca denda itu dan itulah yang biasanya saya gunakan untuk mengekspor data dari geodb pribadi.


0

Menjawab pertanyaan saya sendiri di sini yang saya posting di sini beberapa waktu lalu ...

Opsi lain yang saya temukan online (selain saran di atas) adalah menggunakan pgdbf ( https://github.com/kstrauser/pgdbf ) yang membuang skrip SQL yang dapat Anda gunakan untuk menelan postgres secara manual.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.