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.
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.
Odpowiedzi:
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.
ogr2ogr -f "PostgreSQL" PG:"dbname=mydbname user=postgres" SanDiegoData.gdb -sql "GetLayerDefinition Parcels"
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
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”.
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 .
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.
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.