Jak mogę uzyskać plik shapefile z zapytania postgis?

44

Moje dane znajdują się w bazie danych PostGIS. Chciałbym wygenerować plik kształtu z zapytania. Jak mogę to zrobić?

rudivonstaden
źródło

Odpowiedzi:

86

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.shpw 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ż

rudivonstaden
źródło
Czy można użyć pgsql2shpdo wyeksportowania widoku do pliku kształtu?
Ricardo Barros Lourenço
8

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:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

mając na uwadze, że to zadziała:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
pandorabob
źródło
7

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!

Imię
źródło