Мои данные находятся в базе данных PostGIS. Я хотел бы создать шейп-файл из запроса. Как я могу это сделать?
44
Рекомендуемый способ сделать это - использовать утилиту 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'"
Смотрите также
pgsql2shp
для экспорта представления в шейп-файл?У меня недостаточно очков репутации, чтобы комментировать ответ rudivonstaden, но я бы добавил, что написание команд sql прописными буквами имеет значение для pgsql2shp.
Например, это не будет работать:
тогда как это будет работать:
источник
В зависимости от того, какую часть данных вы хотите экспортировать, другой способ - использовать qgis или аналогичный продукт: там вы открываете соединение через postgis и выбираете интересующие вас данные; тогда вы сохраняете как шейп-файл ...
Если вы хотите экспортировать автоматически и / или большие части данных, rudivonstaden предоставил соответствующие решения!
источник