Как я могу получить шейп-файл из запроса postgis?

44

Мои данные находятся в базе данных PostGIS. Я хотел бы создать шейп-файл из запроса. Как я могу это сделать?

rudivonstaden
источник

Ответы:

86

Рекомендуемый способ сделать это - использовать утилиту pgsql2shp , которая должна быть установлена ​​вместе с PostGIS. Обратите внимание, что вы должны включить столбец геометрии в запрос.

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

Пример (создает qds_cnt.shpв текущем каталоге):

$ 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].

Если вы хотите сохранить всю таблицу как шейп-файл, просто используйте имя таблицы в качестве запроса.

Вы также можете использовать утилиту ogr2ogr , но она имеет больше зависимостей, поэтому не должна быть первой опцией. Если вы определились, эквивалентная команда будет:

$ 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'"

Смотрите также

rudivonstaden
источник
Можно ли использовать pgsql2shpдля экспорта представления в шейп-файл?
Рикардо Баррос Лоуренсо
8

У меня недостаточно очков репутации, чтобы комментировать ответ rudivonstaden, но я бы добавил, что написание команд sql прописными буквами имеет значение для pgsql2shp.

Например, это не будет работать:

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

тогда как это будет работать:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
pandorabob
источник
7

В зависимости от того, какую часть данных вы хотите экспортировать, другой способ - использовать qgis или аналогичный продукт: там вы открываете соединение через postgis и выбираете интересующие вас данные; тогда вы сохраняете как шейп-файл ...

Если вы хотите экспортировать автоматически и / или большие части данных, rudivonstaden предоставил соответствующие решения!

Имя
источник