Mam ponad sto warstw danych w formacie shapefile, które chcę załadować do bazy danych PostGIS. Wszystkie są w tej samej projekcji, ale reprezentują różne warstwy danych, więc nie mają tego samego schematu.
Jaki jest najbardziej efektywny czasowo sposób zbiorczej konwersji wszystkich tych plików do mojej bazy danych PostGIS (w systemie Windows 7)?
AKTUALIZACJA: Importowanie zbiorcze w pgAdmin3 „Program do przesyłania plików kształtów PostGIS” (jak wspomniano poniżej) jest teraz domyślnie dostępny w PostGIS 2.0 .
Odpowiedzi:
Jeśli chcesz trzymać się GUI, nowsza wersja pgAdmin ma Shapefile Loader, który może być używany jako ładunek zbiorczy
źródło
Jeśli masz komputer z systemem Windows, możesz użyć dobrej technologii
CMD.EXE
z kilkoma ezoterycznymi pętlami. Upewnij się, że robisz to w katalogu „zawierającym” tylko pliki shp / sql, które musisz załadować.Najpierw utwórz pliki modułu ładującego SQL (założyłem również, że masz dane Lat / Long WGS84 z 4326 .. zaktualizuj to do SRS):
Następnie sprawdź pliki SQL, aby upewnić się, że dobrze wyglądają, a następnie wykonaj podobną pętlę:
bash
Odpowiednik dla POSIX ludowej (Linux, Mac OS X, itp) jest coś takiego:następnie
lub obie części połączone w jedną pętlę, jeśli nie musisz przechowywać
.sql
plików tymczasowych :źródło
for f in *.shp do shp2pgsql -s 4326 %f public.'basename $f .shp' > 'basename $f .shp'.sql | psql -h myserver -d mydb -U myuser done
>
części przekierowującej, ponieważ psuje to|
część potoku), o ile masz pewność, że SQL przekazany do psql jest poprawny. Twierdziłbym, że nie jest to lepsze, ponieważ nie ma zapisu danych w formacie SQL.Możesz także użyć tego pojedynczego polecenia, które znacznie ułatwia zapętlanie i nie wymaga osobnego tworzenia .sql,
źródło
Możesz także spojrzeć na SPIT , który jest wtyczką modułu ładującego PostGIS dla QGIS
źródło