Migrujesz dane geobazy do PostGIS bez aplikacji Esri?

39

Czy możesz mi powiedzieć, jak mogę załadować dane z geobazy do PostGIS bez konieczności instalowania aplikacji Esri?

Rozwiązanie, które znalazłem w Internecie, mówiło o użyciu ArcGIS do konwersji GDB na SHP, a następnie importowaniu SHP do PostGIS.

Gerson Galang
źródło
Bardzo dziękuję za odpowiedź. FME może być prawidłowym rozwiązaniem, ale uważamy to za bardzo drogie rozwiązanie. Uważamy, że 14-dniowy okres próbny jest niewystarczający do migracji. Czy ktoś ma doświadczenie z innymi narzędziami, takimi jak skrypty GDAL lub GeoKettle? Pozdrowienia.
SonOfabox,
FME Desktop to najlepsze rozwiązanie do migracji danych

Odpowiedzi:

37

Robię to cały czas dla moich klientów.

Zrzuć dane do FileGDB lub Shapefiles, a następnie wykonaj następujące polecenie:

W przypadku plików kształtu ESRI:

ogr2ogr -f „PostgreSQL” PG: „dbname = moja_nazwa_użytkownika = postgres” myshapefile.shp

W przypadku FileGDB:

ogr2ogr -f „PostgreSQL” PG: „dbname = moja_nazwa użytkownik = postgres” mojaFileGDB.gdb

W przypadku FileGDB musisz się upewnić, że sterownik FileGDB jest zainstalowany. Robisz to za pomocą:

ogrinfo --formats

który powinien pokazać FileGDB gdzieś, by powiedzieć, że jest zainstalowany.

Ragi Yaser Burhum
źródło
Czy możesz podać więcej szczegółów na temat instalacji sterownika FileGDB dla OGR?
RyanDalton,
7
Najłatwiejszym sposobem dla systemu Windows jest trac.osgeo.org/osgeo4w Poszukaj pakietu filegdb (zamierzam go zaktualizować za pomocą poprawek błędów w przyszłym tygodniu). Jeśli korzystasz z systemu Linux lub Mac, możesz zmodyfikować następujący skrypt, którego używam do budowania go w locie (patrz install_filegdb) gist.github.com/2955440
Ragi Yaser Burhum
@RyanDalton i daj mi znać, jak to idzie :)
Ragi Yaser Burhum
1
Co dzieje się z metadanymi w tym procesie? Na przykład metadane FGDC, które zawierają więcej niż tylko układ współrzędnych itp.
Oliver Burdekin
ogr2ogr nie napisze go domyślnie , ale patrząc na kod widzę, że istnieje specjalne polecenie „GetLayerDefinition”, które można wykonać w wierszu polecenia SQL, aby odczytać te informacje. ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"
zrzuciłby
7

Nie próbowałem tego, więc nie mogę zweryfikować, czy to działa, ale interfejs API Geodatabase API może pozwolić na eksport danych z pliku Geodatabase do SHP (i stąd PostGIS). Dokumentacja mówi:

With the API you can... Read and write data
Stephen Lead
źródło
Dzięki Stephen, warto wiedzieć, że istnieje interfejs API, ale prawdopodobnie spróbujemy tego, jeśli tak naprawdę nie ma żadnego narzędzia napisanego przez ludzi, które robi to automatycznie.
Gerson Galang,
6
Jeśli masz interfejs API plików GEodatabase, możesz również dokonać konwersji bezpośrednio za pomocą GDAL: trac.osgeo.org/gdal/wiki/FileGDB
johanvdw
2
Pewna ostrożność: opracowany przez ESRI interfejs API i oparte na nim narzędzia będą działać tylko z plikiem GDB (.gdb) utworzonym lub przekonwertowanym do użycia w ArcGIS 10 lub nowszym. Obsługa wcześniejszych wersji Personal GDB (.mdb) pochodzi z wcześniejszych prac programistycznych i może działać w zależności od danych i narzędzia.
V Stuart Foote,
@ johanvdw Kilka dni temu wypróbowałem trac.osgeo.org/gdal/wiki/FileGDB, zanim opublikowałem moje pytanie powyżej, ponieważ instrukcje dla tego linku również nie działały. Wypróbowałem najnowszą gdal 1.8.1 na moim Ubuntu 10.04, ale to nie wydawało się, aby zainstalować wtyczkę File GeoDB w gdal. Próbowałem „--with-fgdb = / usr / local / FileGDB_API” i „--with-fgdb = / usr / local”, ponieważ ich dokumentacja nie była jasna w określaniu, co powinienem użyć w parametrze „with-fgdb” ale nic nie działało.
Gerson Galang,
GCG: utwórz tę samą stronę: (zamień / usr / local / FileGDB_API na gdziekolwiek wyodrębniłeś FileGDB_API_ <wersja> .tar.gz)
johanvdw
5

Interfejs API geobazy danych Esri działa tylko z geobazami plików utworzonymi przy użyciu wersji 10.x - starsze wersje nie będą działać z GDAL, QGIS ani żadnymi innymi funkcjami zależnymi od otwartego interfejsu API geobazy danych . Stare osobiste Geobazy zależą od MS Access, dostępne są czytniki i kod.

Jeśli posiadasz geobazę plików 10.x, możesz odczytać warstwę z FileGDB i załadować do PostGIS za pomocą pojedynczego polecenia ogr2ogr ( patrz dokumentacja ):

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

W tym celu musiałem również pobrać wersję ekspresową VS2010 i zbudować własną GDAL, wtyczkę ogr oraz 1.3 otwartego pliku API geobazy.

To, czego nie byłem w stanie zrobić, to migracja starszej geobazy danych z pliku 9.x bez korzystania z oprogramowania esri (niedostępnego dla mnie w bankomacie) - nie mogę przejść obok ...

HRESULT = -2147220965, errorText = "To wydanie GeoDatabase jest nieprawidłowe lub nieaktualne."

... podczas próby otwarcia 9.x „gdb” z otwartym API, który obsługuje tylko 10.x „gdb”.

Alexis Brooker
źródło
Najnowsze wersje (połowa 2014 r.) Ogr2ogr z OpenFileGDB mogą przynajmniej czytać starszą wersję plików geodezyjnych ESRI.
c.gutierrez
2

Chociaż sam jeszcze tego nie próbowałem, właśnie natknąłem się na ten samouczek (który jest shapefile -> PostGIS), który korzysta z oprogramowania geoETL typu open source o nazwie „ Spatial Data Integrator ”. Nie jestem pewien, czy obsługuje Esri GDB, czy nie, ale warto sprawdzić, czy możesz użyć tego produktu do wykonania podobnej konwersji z GDB na PostGIS bez korzystania z produktów ESRI.

Inne pakiety ETL, o których słyszałem, to FME z Safe Sofware ($, bardzo popularny) i GeoKettle (open-source), a także wiele innych odnośników na stronie Wikipedii Spatial ETL .

EDYCJA : Po dokładniejszym zagłębieniu wygląda na to, że SDI nie obsługuje bezpośrednio odczytu EsriGDB , ale może czytać dostępne formaty plików OGR .

RyanDalton
źródło
2

Trwają prace FWIW nad stworzeniem GDB do programu ładującego postgis. Zależy to od najnowszego łącza GDAL, które ma powiązania GDB. Nie miałem okazji się skompilować i spróbować, ale mam nadzieję, że zanim PostGIS 2.0 zostanie wydany.

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

Prawdopodobnie możesz zadzwonić do Paula w grupie dyskusyjnej PostGIS, aby dowiedzieć się, gdzie on jest z tym. http://www.postgis.org/mailman/listinfo/postgis-users

W przypadku osobistego formatu GeoDatabase GDAL może odczytać to dobrze i tego zwykle używam do eksportowania danych z osobistego geodb.

LR1234567
źródło
0

Odpowiadając na moje pytanie tutaj, które tutaj zamieściłem tutaj ...

Inną opcją, którą znalazłem w Internecie (oprócz powyższych sugestii) jest użycie pgdbf ( https://github.com/kstrauser/pgdbf ), który zrzuca skrypt SQL, którego można następnie użyć do ręcznego wejścia do Postgres.

Gerson Galang
źródło