Как лучше автоматизировать процесс обработки shp файлов
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Как лучше автоматизировать процесс обработки shp файлов
Ситуация следующая:
Имею систему с установленной Windows 7, QGIS.
Занимаюсь подготовкой ОСМ данных для преобразования в сценарий для симулятора FlightGear.
Процесс выглядит примерно так:
Выкачиваю интересующие области (к примеру Петербург и Ленобласть).
В QGIS объединяю по отдельности файлы разных категорий (water-line, highway, landuse и т.д.).
Далее отдельно каждый объединенный файл делю по какому-либо ОСМ-признаку (к примеру дороги по тегу highway, предварительно отделив все тоннели). А полученные shp файлы уже помещаю каждый в свою отдельную папку (требуется для конструктора сценария для ФГ).
При скачивани обновленной выгрузки весь процесс приходится делать заново вручную. Хотелось бы автоматизировать данные преобразования, желательно через командную строку в *.bat файле.
Возможно ли это? Достаточно ли для этого QGIS, или нужен какой-либо другой ГИС-пакет?
Спасибо!
Имею систему с установленной Windows 7, QGIS.
Занимаюсь подготовкой ОСМ данных для преобразования в сценарий для симулятора FlightGear.
Процесс выглядит примерно так:
Выкачиваю интересующие области (к примеру Петербург и Ленобласть).
В QGIS объединяю по отдельности файлы разных категорий (water-line, highway, landuse и т.д.).
Далее отдельно каждый объединенный файл делю по какому-либо ОСМ-признаку (к примеру дороги по тегу highway, предварительно отделив все тоннели). А полученные shp файлы уже помещаю каждый в свою отдельную папку (требуется для конструктора сценария для ФГ).
При скачивани обновленной выгрузки весь процесс приходится делать заново вручную. Хотелось бы автоматизировать данные преобразования, желательно через командную строку в *.bat файле.
Возможно ли это? Достаточно ли для этого QGIS, или нужен какой-либо другой ГИС-пакет?
Спасибо!
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как лучше автоматизировать процесс обработки shp файлов
Редактор материалов, модератор форума
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Как лучше автоматизировать процесс обработки shp файлов
Положить данные в PostgreSQL-базу через osm2pgsql и выдергивать данные через ogr2ogr разными sql-запросами в batch-файле?
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Спасибо за наводку!
Появился вопрос. Выполняю такую команду:
В ответ вылетает сообщение об ошибке:
В чем моя ошибка?
Появился вопрос. Выполняю такую команду:
Код: Выделить всё
ogr2ogr -where "HIGHWAY=motorway" d:\fg_edit\gis\osm_motorway\osm_motorway.shp d:\fg_edit\gis\RU-LEN\highway-line.shp
Для проверки открываю в QGIS искомый файл, кликаю в нужную дорогу для получения информации о ней, и там есть поле HIGHWAY=motorway.ERROR 1: 'motorway' not recognised as an available field.
FAILURE: SetAttributeFilter<HIGHWAY=motorway> failed.
В чем моя ошибка?
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как лучше автоматизировать процесс обработки shp файлов
Попробуйте так:
Код: Выделить всё
ogr2ogr -where "HIGHWAY='motorway'" d:\fg_edit\gis\osm_motorway\osm_motorway.shp d:\fg_edit\gis\RU-LEN\highway-line.shp
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Ура! Заработала!!! Спасибо!!!
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Словил странный глюк ogr2ogr:
скачал 3 региона - Санкт-Петербург, Ленинградскую область и Карелию.
Далее:
В итоге в /RU-LEN/water-polygon.shp содержится склейка всех 3-х регионов. Далее:
И вот water-polygon-cut.shp почему-то пустой, хотя и занимает 1 мб. Попутно обрабатываются таким же способом еще 7 shp файлов, они обрезаются нормально.
Что это может быть? Система теперь Ubuntu 12.04. ogr2ogr поставился вместе с qgis.
скачал 3 региона - Санкт-Петербург, Ленинградскую область и Карелию.
Далее:
Код: Выделить всё
ogr2ogr -update -append ./RU-LEN/water-polygon.shp ./RU-KR/water-polygon.shp
ogr2ogr -update -append ./RU-LEN/water-polygon.shp ./RU-SPE/water-polygon.shp
Код: Выделить всё
ogr2ogr -clipsrc 30 60 31 61 ./RU-LEN/water-polygon-cut.shp ./RU-LEN/water-polygon.shp
Что это может быть? Система теперь Ubuntu 12.04. ogr2ogr поставился вместе с qgis.
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как лучше автоматизировать процесс обработки shp файлов
Вы точно уверены, что shp-файл "пустой"? Приведите вывод командыSoitanen писал(а): И вот water-polygon-cut.shp почему-то пустой, хотя и занимает 1 мб.
Код: Выделить всё
ogrinfo -al -so water-polygon-cut.shp
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Код: Выделить всё
$ ogrinfo -al -so water-polygon-cut.shp
INFO: Open of `water-polygon-cut.shp'
using driver `ESRI Shapefile' successful.
Layer name: water-polygon-cut
Geometry: Polygon
Feature Count: 0
Extent: (0.000000, 0.000000) - (0.000000, 0.000000)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_84",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]]
OSM_ID: Real (11.0)
NAME: String (64.0)
NATURAL: String (7.0)
WATERWAY: String (9.0)
WETLAND: String (11.0)
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как лучше автоматизировать процесс обработки shp файлов
Выложите заархивированный шейп water-polygon.shp (с *.shx и *.dbf), надо посмотреть, в чём может быть дело.
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Выкладываю: http://yadi.sk/d/DZEzJfdh0Hwgv (сюда не пролез).
-
- Гуру
- Сообщения: 5173
- Зарегистрирован: 26 сен 2009, 16:26
- Репутация: 792
- Ваше звание: званий не имею
- Откуда: Москва
Re: Как лучше автоматизировать процесс обработки shp файлов
При запуске ogr2ogr пропущен флаг "-skipfailures", об этом говорится в ошибке:
Если исп-ть этот флаг, получается что надо:
Код: Выделить всё
$ ogr2ogr -clipsrc 30 60 31 61 water-polygon-cut.shp water-polygon.shp
Warning 1: One or several characters couldn't be converted correctly from UTF-8 to ISO-8859-1.
This warning will not be emitted anymore
ERROR 1: Attempt to write non-polygon (POINT) geometry to POLYGON type shapefile.
ERROR 1: Terminating translation prematurely after failed
translation of layer water-polygon (use -skipfailures to skip errors)
Код: Выделить всё
$ ogrinfo -al -so water-polygon-cut.shp
INFO: Open of `water-polygon-cut.shp'
using driver `ESRI Shapefile' successful.
Layer name: water-polygon-cut
Geometry: Polygon
Feature Count: 1533
Extent: (30.000000, 60.000000) - (31.000000, 61.000000)
Layer SRS WKT:
GEOGCS["GCS_WGS_1984",
DATUM["WGS_1984",
SPHEROID["WGS_84",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]]
OSM_ID: Real (11.0)
NAME: String (64.0)
NATURAL: String (7.0)
WATERWAY: String (9.0)
WETLAND: String (11.0)
Редактор материалов, модератор форума
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Огромное спасибо!
У меня сообщение об ошибке про UTF-8 занимало более 1000 строк и он других сообщений об ошибках не выдавал. Потому и не знал про -skipfailures.
У меня сообщение об ошибке про UTF-8 занимало более 1000 строк и он других сообщений об ошибках не выдавал. Потому и не знал про -skipfailures.
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Новый вопрос возник.
Утилита, которая потом обрабатывает shp файлы очень плохо переваривает геометрию типа MULTILINESRTING (так мне объяснили сами ее создатели). И действительно, она часто вылетала с моими исходными данными.
Я пробовал ставить в вызов ogr2ogr -nlt LINESTRING, но это не помогло. Для чистоты эксперимента переделал MULTILINESTRING в LINESTRING вручную в QGIS (Vector->Geometry tools->Multipart to single parts). Как можно автоматизировать данный процесс в скрипте на баше?
Утилита, которая потом обрабатывает shp файлы очень плохо переваривает геометрию типа MULTILINESRTING (так мне объяснили сами ее создатели). И действительно, она часто вылетала с моими исходными данными.
Я пробовал ставить в вызов ogr2ogr -nlt LINESTRING, но это не помогло. Для чистоты эксперимента переделал MULTILINESTRING в LINESTRING вручную в QGIS (Vector->Geometry tools->Multipart to single parts). Как можно автоматизировать данный процесс в скрипте на баше?
-
- Интересующийся
- Сообщения: 42
- Зарегистрирован: 21 авг 2012, 18:18
- Репутация: 0
Re: Как лучше автоматизировать процесс обработки shp файлов
Нашел, что можно использовать QGIS API без запуска самого QGIS, написав скрипт на Питоне.
Начало у меня такое:
А вот что делать дальше - никак не пойму. Пытаюсь врубиться в http://qgis.org/api/classQgsGeometry.html, но тоже ничего в голову не лезет.
Может как-то можно посмотреть, какие команды отдаются в QGIS API, когда я работаю с графическим интерфейсом, чтобы на их основе потом написать свой скрипт?
Начало у меня такое:
Код: Выделить всё
from qgis.core import *
QgsApplication.setPrefixPath("/usr", True)
QgsApplication.initQgis()
vlayer = QgsVectorLayer("m.shp", "motorway", "ogr")
if not vlayer.isValid():
print "Layer failed to load!"
QgsApplication.exitQgis()
Может как-то можно посмотреть, какие команды отдаются в QGIS API, когда я работаю с графическим интерфейсом, чтобы на их основе потом написать свой скрипт?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя