Esri uygulamaları olmadan coğrafi veri tabanının PostGIS'e taşınması?


39

Esri uygulamalarını yüklemek zorunda kalmadan coğrafi veri tabanını PostGIS'e nasıl yükleyebileceğimi söyleyebilir misiniz?

Çevrimiçi olarak bulduğum çözüm GDB'yi SHP'ye dönüştürmek için ArcGIS kullanmak ve ardından SHP'yi PostGIS'e aktarmaktan bahsetti.


Cevabınız için çok teşekkür ederim. MYE geçerli bir çözüm olabilir, ancak bunu çok pahalı bir çözüm olarak görüyoruz. 14 günlük bir deneme süresinin bir göç için yetersiz olduğunu düşünüyoruz. GDAL betikleri veya GeoKettle gibi başka araçlarla tecrübesi olan var mı? Saygılarımızla.
SonOfabox

FME Desktop, göç verileri için en iyi çözümdür

Yanıtlar:


37

Müşterilerim için her zaman yaparım.

Verilerinizi FileGDB veya Shapefiles dosyalarına boşaltın ve ardından aşağıdaki komutu uygulayın:

ESRI Shapefiles için:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname kullanıcı = postgres" myshapefile.shp

FileGDB için:

ogr2ogr -f "PostgreSQL" PG: "dbname = mydbname kullanıcı = postgres" myFileGDB.gdb

FileGDB için, FileGDB sürücüsünün kurulu olduğundan emin olmanız gerekir. İle yapmak:

Ogrinfo - biçemler

hangi FileGDB 'nin kurulu olduğunu söylemesi gereken bir yere


OGR için FileGDB sürücüsünün kurulumu hakkında daha fazla bilgi verebilir misiniz?
RyanDalton

7
Windows için en kolay yol trac.osgeo.org/osgeo4w dir . Filegdb paketini arayın (önümüzdeki hafta hata düzeltmeleriyle güncellemek üzereyim). Linux veya Mac iseniz, ben anında bu bina için kullanmak aşağıdaki komut dosyasını değiştirebilirsiniz (install_filegdb bakınız) gist.github.com/2955440
Ragi Yaser Burhum

@RyanDalton ve nasıl gittiğini bana bildirin :)
Ragi Yaser Burhum

1
Bu işlemle meta verilere ne olur? Örneğin, sadece koordinat sisteminden daha fazlasını tutan FGDC meta verileri vb.
Oliver Burdekin

ogr2ogr varsayılan olarak yazmaz , ancak koda bakarak, bu bilgiyi okumak için SQL isteminde çalıştırabileceğiniz özel bir "GetLayerDefinition" komutu olduğunu görüyorum. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"ESRI XML meta verilerini o
db'deki

7

Bunu denemedim, bu yüzden çalıştığını doğrulayamıyorum, ancak Dosya Geodatabase API'si , verileri Geodatabase dosyasından SHP'ye (ve dolayısıyla PostGIS'den) vermenize izin verebilir. Belgeler diyor ki:

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

Teşekkürler Stephen, bir API olduğunu bilmek faydalıdır, ancak muhtemelen insanların bunu otomatik olarak yapan, yazmış olduğu herhangi bir araç yoksa, muhtemelen deneyeceğiz.
Gerson Galang

6
GEodatabase API'niz varsa, doğrudan GDAL kullanarak da dönüştürebilirsiniz: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw 08:11

2
Bazı Dikkat: ESRI tarafından geliştirilen API ve araçlara dayalı araçlar, yalnızca ArcGIS 10 veya daha yeni sürümlerinde kullanılmak üzere oluşturulan veya dönüştürülen Dosya GDB (.gdb) ile çalışır. Daha önceki Kişisel GDB (.mdb) sürümleri için destek, daha önceki programlama çabalarından gelir ve verilere ve araca bağlı olarak çalışabilir.
V Stuart Foote

@johanvdw Birkaç gün önce trac.osgeo.org/gdal/wiki/FileGDB’yi yukarıdaki bağlantıyı izlemeden önce bu bağlantıdaki talimatlar benim için işe yaramadığından denedim. Ubuntu 10.04'ümdeki en son gdal 1.8.1 sürümünü denedim, ancak bu dosya GeoDB eklentisini gdal'a yüklemiyordu. "--With-fgdb = / usr / local / FileGDB_API" ve "--with-fgdb = / usr / local" komutlarını "with-fgdb" parametresinde ne kullanmam gerektiğini belirlemediği için denedim ama hiçbir şey işe yaramadı.
Gerson Galang

GCG: aynı sayfayı oluşturur: (/ usr / local / FileGDB_API dosyasını FileGDB_API_ <version> .tar.gz ile çıkardığınız yerle değiştirin)
johanvdw

5

Esri dosya coğrafi veritabanı API yalnızca 10.x kullanılarak oluşturulan dosya coğrafi veritabanlarıyla çalışır - eski sürümler GDAL, QGIS veya açık dosya coğrafi veritabanı API'sine bağlı başka bir şeyle çalışmaz . Eski Kişisel Coğrafi Veritabanları, MS Access'e bağlıdır ve mevcut okuyucular ve kodlar vardır.

10.x bir dosya coğrafi veritabanınız varsa, katmanı FileGDB'den okuyabilir ve PostGIS'e tek bir ogr2ogr komutu ile yükleyebilirsiniz ( belgelere bakın ):

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

Bunu yapabilmek için VS2010 express sürümünü indirmek ve kendi GDAL, ogr eklentisini ve açık dosya coğrafi veritabanı API'sini 1.3 oluşturmak zorunda kaldım.

Yapamadığım şey, esri yazılımı kullanmadan eski bir 9.x dosya geodatabase'i geçirmektir (atm'de mevcut değil) - Geçemiyorum ...

HRESULT = -2147220965, errorText = "GeoDatabase'in bu sürümü geçersiz veya güncel değil."

... 9.x "gdb" yi yalnızca 10.x "gdb" yi destekleyen açık API ile açmaya çalışırken.


OpenFileGDB içeren en son sürümler (2014 ortası) ogr2ogr ESRI File Geodatabases'in en azından eski sürümünü okuyabilir .
c.gutierrez

2

Henüz kendim denemedim, ben sadece bu rastlamak vermedi öğretici (şekil dosyası olan -> PostGIS) "olarak adlandırılan açık kaynak geoETL yazılımı kullanan Mekansal Veri Entegratörü ". Esri GDB'yi destekleyip desteklemediğinden emin değilim, ancak ESRI ürünlerini kullanmadan GDB'den PostGIS'e benzer bir dönüşüm yapmak için bu ürünü kullanıp kullanamayacağınızı araştırmaya değer olabilir.

Duyduğum diğer ETL paketleri, Güvenli Yazılımdan ($, çok popüler) ve GeoKettle'ten (açık kaynaklı) gelen FME ve Spatial ETL wikipedia sayfasında daha birçok referans .

EDIT : Biraz daha kazı yaptıktan sonra, SDI doğrudan EsriGDB'nin okunmasını desteklemiyor gibi görünüyor , ancak mevcut OGR dosya formatlarını okuyabilir .


2

FWIW çalışmaları postgis yükleyicisine GDB yaratmaya devam ediyor. Bu, GDB bağları olan son GDAL bagajına bağlıdır. Derleme ve kendimi deneme şansım olmadı ama PostGIS 2.0 çıkmadan önce çıkacağını umuyorum.

Çıkış - http://trac.osgeo.org/postgis/browser/spike/pramsey/postgis2fgdb

Muhtemelen Paul'a bununla nerede olduğunu bulmak için PostGIS haber grubu hakkında bir buzz verebilirsiniz. http://www.postgis.org/mailman/listinfo/postgis-users

Kişisel GeoDatabase formatı için, GDAL bu para cezasını okuyabilir ve genellikle kişisel geodb'den veri aktarmak için kullandığım şeydir.


0

Burada kendi soruma cevap verip bir süre önce buraya gönderdim ...

Çevrimiçi bulduğum bir diğer seçenek (yukarıdaki önerilere ek olarak), daha sonra manüel olarak postgres içine almak için kullanabileceğiniz SQL betiğini döken pgdbf'yi ( https://github.com/kstrauser/pgdbf ) kullanmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.