Zasugerowano, że zadam to pytanie jeszcze raz, ale być może sformułowane inaczej niż jak Zbiorcze ładowanie wielu plików kształtów do PostGIS .
Jestem nowy w Postgis i SQL, ale chcę używać PostGIS jako niewolnika (na razie) ArcSDE. Dlatego szukam pomocy w przebudzeniu, jak mogę co wieczór zajmować się przesyłaniem wsadowym danych ArcSDE do PostGIS.
Mogę stworzyć skrypt Pythona do eksportowania danych ArcSDE do SHP co noc, ale nie jestem pewien, jak następnie wsadowo przesłać wyeksportowane pliki SHP do PostGIS, zastępując te, które już istniały w Postgis, jako zadanie automatyczne (chyba plik wsadowy ).
Moim wielkim planem jest zastąpienie ArcSDE / ArcGIS na czas PostGIS, QGIS i GeoServer lub MapServer.
postgis
enterprise-geodatabase
geosmile
źródło
źródło
Odpowiedzi:
Zamiast konwersji DB -> plik -> DB, w której Esri Shapefiles są komponentem opartym na plikach pośrednika, warto zbadać bardziej bezpośredni transfer DB -> DB. Istnieje kilka narzędzi, które mogą to zrobić, ale skupiam się tylko na narzędziach GDAL / OGR typu open source .
Zakładając, że masz Windows Server, możesz łatwo zainstalować GDAL / OGR za pomocą OSGeo4W . W trybie instalacji zaawansowanej możesz wybrać niestandardowe konfiguracje pakietów, takie jak sterownik SDE (zapoznaj się z listą pakietów, aby upewnić się, że pasują one do twojej wersji SDE - obsługiwane są tylko wersje SDE 9.0 do 9.2). Te pakiety są tylko nagłówkami i opakowaniami i wymagają zainstalowania bibliotek SDE, które powinieneś mieć na dysku CD / DVD ROM, i upewnienia się, że zmienne PATH są odpowiednio ustawione, aby GDAL / OGR je znalazł. Pomyślna instalacja pokaże gdzieś „SDE” za pomocą następującego polecenia w powłoce OSGeo4W:
ogr2ogr --formats
Po skonfigurowaniu GDAL / OGR możesz użyć kilku narzędzi:
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version]
(można również zbadać różne-append
,-overwrite
lub-update
opcji)Głównym zastrzeżeniem tej metody jest to, że jej konfiguracja jest skomplikowana.
źródło
shp2pgsql
,psql
itpPostGIS ma moduł ładujący o nazwie shp2pgsql , którego można użyć do załadowania plików shapefile do bazy danych PostGIS. Jedna z jego opcji („-d”) usuwa istniejącą tabelę bazy danych przed załadowaniem danych. Utworzenie pliku wsadowego lub skryptu, który może przechodzić przez wszystkie pliki kształtów i ładować je dla Ciebie, powinno być dość proste.
Jeśli chcesz uzyskać bardziej wyszukane informacje, możesz zainstalować GDAL i użyć narzędzi OGR (które mają złącze ArcSDE) i pominąć eksport pliku shapefile. Informacje na temat złącza ArcSDE można znaleźć tutaj .
źródło
Wiem, że jestem spóźniony na imprezę, ale jest na to inna opcja, która pozwala uniknąć posiadania 2 baz danych.
Możesz mieć ArcSDE na Postgresql + Postgis. To byłby twój master i tylko db.
ArcSDE można skonfigurować do korzystania z geometrii postgis, a nie st_geometries (zastrzeżonych przez ESRI).
Oznacza to, że możesz następnie użyć dowolnego narzędzia Postgis, aby bezpośrednio korzystać z załadowanych / edytowanych tabel przestrzennych ArcSDE, ponieważ w rzeczywistości są to tabele rodzime Postgis.
Na przykład możesz użyć qgis, aby połączyć się bezpośrednio z bazą danych Postgis i odczytać te same dane, co arcgis przez arcsde.
źródło
Innym podejściem byłoby użycie przestrzennego ETL, takiego jak Geokettle (open source).
http://www.spatialytics.org/projects/geokettle/
Używam Geokettle do ciągłego przesyłania danych między serwerem SQL a PostGIS. Jednak, choć działa dobrze z PostGIS, istnieją problemy podczas pracy z typem danych przestrzennych SQL Server (patrz wskazówki poniżej). Zakłada się również, że przechowujesz geometrie SDE jako rodzimy typ danych przestrzennych SQL Server. Można to zrobić za pomocą słowa kluczowego Geometry podczas ładowania danych przez ArcCatalog.
Wskazówka 1: podczas wybierania danych z serwera sql zastosuj .STAsText () do pola geometrii lub Geokettle zadławi się typem danych serwera sql.
Wskazówka 2: Wstawiając dane do serwera SQL, należy wstawić geometrię jako tekst do pola tekstowego. Następnie użyj kroku sql, aby dodać nową kolumnę geometrii (w razie potrzeby) i wypełnić ją z geometrii tekstu. W ten sposób używasz SQL Server do budowania geometrii ze standardowej reprezentacji tekstowej geometrii OGC.
Wskazówka 3: Zarejestruj nową tabelę przestrzenną w SDE.
źródło
Rozważ skonfigurowanie replikacji bazy danych na oryginalnym pliku db o wartości 9.3.
Nie działa tak dobrze, jak nowa 10, ale ...
powiela to do innego sde w postgresql przy użyciu typu danych postgis pg_geometry.
Oto pomoc esri
UWAGA: Będzie to wymagać duplikatów licencji, jeśli oba dbs nie są na tym samym komputerze
źródło
Możesz pisać ArcObjects na:
A) zrzuć bazę danych arcsde; B) Zwykły kod c # do generowania sql shp2pgsql; C) Zwykły kod c # do zrzucania starych tabel; D) Zwykły c #, aby wykonać wszystkie shp2pgsql do postgresql;
Aby to osiągnąć, możesz użyć sterownika npgsql, wykonując funkcje i instrukcje SQL bezpośrednio w bazie danych Postgis;
źródło
Jaka jest twoja geometria ArcSDE ( pamięć Geodatabase w relacyjnych bazach danych )? W takim scenariuszu możesz rozważyć użycie typu ST_Geometry, a następnie użyć narzędzi do replikacji PostGre / PostGIS ( PostGIS Replication @ FOSS4G ). Ten schemat może mieć tę zaletę, że korzysta z funkcji ArcSDE / ArcGIS / geodatabase do edycji (baza danych edycji) i narzędzi open source do rozpowszechniania (replikowana baza danych rozpowszechniania).
źródło