Страница 1 из 1
Выгрузки в shp по полигонам
Добавлено: 25 фев 2012, 12:46
oleg
Есть задача регулярной выгрузки нескольких слоёв в шейп (или sqllite) по границам полигонов. Исходные слои - разных типов геометрии. Полигоны границ выгрузок могут пересекаться, могут иметь общую границу. Конечный результат вижу, как папки или архивы с шейп-файлами, имеющими в названии имя полигона границ и время выгрузки или номер. Буду признателен за ссылки и советы.
Re: Выгрузки в shp по полигонам.
Добавлено: 25 фев 2012, 15:48
Voltron
Не очень понял причем тут PostgreSQL, ну кроме того, что данные хранятся в этой базе. Задача легко решается при помощи OGR (либо через Python-интерфейс либо через командный файл). Ну или расширение для QGIS если нужны «кнопачки»
Re: Выгрузки в shp по полигонам
Добавлено: 25 фев 2012, 22:06
oleg
Voltron, спасибо! Прошу перенести тему в "Свободные, бесплатные, открытые ГИС".
В поиске решение в форме скрипта для OSGeo4W. Представляю себе настройку скрипта, как простую правку в текстовом редакторе - параметры доступа, вход - база, путь выхода. При работе сохраняются все таблицы указанной базы (баз?) в отдельные шейп-файлы либо в SQLite. Должно быть полезно многим.
Замечания и дополнения приветствуются.
Re: Выгрузки в shp по полигонам
Добавлено: 14 мар 2013, 11:19
HasT
Необходимо было выполнять данную задачу (в БД PostgGIS были загружены shp-слои через модуль SPIT/QGIS, SRID 4326), сделал bat-файл со следующим содержимым:
Код: Выделить всё
C:\OSGeo4W\OSGeo4W.bat ogr2ogr -overwrite -f "ESRI Shapefile" D:\layers PG:"host=hostname dbname=databasename user=username password=password" -t_srs EPSG:4326
- выгрузка слоев в каталог D:\layers с перезаписью файлов (-overwrite) при каждом запуске bat-файла из БД databasename. Выполнение bat-файла выполнялось через Планировщик задач в заданное время. Через некоторое время для всех выгружаемых слоев из БД в каталоге, слои SHX стали размером 1КБ (при загрузке в QGIS слоя не было отображения геометрии, пустая таблица атрибутов). Тогда сделал bat-файл для выгрузки слоёв из БД с указанием имени каждого слоя:
Код: Выделить всё
CALL C:\OSGeo4W\OSGeo4W.bat ogr2ogr -overwrite -f "ESRI Shapefile" D:\layers PG:"host=hostname dbname=databasename user=username password=password" LayerA
CALL C:\OSGeo4W\OSGeo4W.bat ogr2ogr -overwrite -f "ESRI Shapefile" D:\layers PG:"host=hostname dbname=databasename user=username password=password" LayerB
CALL C:\OSGeo4W\OSGeo4W.bat ogr2ogr -overwrite -f "ESRI Shapefile" D:\layers PG:"host=hostname dbname=databasename user=username password=password" LayerC