Moje dane znajdują się w bazie danych PostGIS. Chciałbym wygenerować plik kształtu z zapytania. Jak mogę to zrobić?
Moje dane znajdują się w bazie danych PostGIS. Chciałbym wygenerować plik kształtu z zapytania. Jak mogę to zrobić?
Odpowiedzi:
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ż
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'"
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!
pgsql2shp
do wyeksportowania widoku do pliku kształtu?