Moje dane znajdują się w bazie danych PostGIS. Chciałbym wygenerować plik kształtu z zapytania. Jak mogę to zrobić?
44
Zalecanym sposobem na to jest użycie narzędzia pgsql2shp , które powinno być zainstalowane z PostGIS. Pamiętaj, że musisz uwzględnić kolumnę geometrii w zapytaniu.
$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"
Przykład (tworzy qds_cnt.shp
w bieżącym katalogu):
$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
Initializing...
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].
Jeśli chcesz zapisać całą tabelę jako plik kształtu, po prostu użyj nazwy tabeli jako zapytania.
Możesz także użyć narzędzia ogr2ogr , ale ma on więcej zależności, więc nie powinna być pierwszą opcją. Jeśli zostaniesz ustalony, równoważne polecenie to:
$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
Zobacz też
pgsql2shp
do wyeksportowania widoku do pliku kształtu?Nie mam wystarczającej liczby punktów reputacji, aby skomentować odpowiedź rudivonstaden, ale dodałbym, że pisanie poleceń sql dużymi literami ma znaczenie dla pgsql2shp.
Na przykład to nie zadziała:
mając na uwadze, że to zadziała:
źródło
W zależności od danych, które chcesz wyeksportować, innym sposobem jest użycie qgis lub podobnego produktu: tam otworzysz połączenie z postgis i wybierzesz dane, które Cię interesują; następnie zapisujesz jako plik kształtu ...
Jeśli chcesz eksportować automatycznie i / lub duże części danych, rudivonstaden podał odpowiednie rozwiązania!
źródło