Загрузка полигонов в QGIS
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Загрузка полигонов в QGIS
Добрый день!
Мне нужно загрузить набор точек в виде полигонов в QGIS. У меня есть только координаты точек в СК Trans Mercator. Как я понял нужно иметь файл, например, такого формата:
altay
1
84.0024871826 49.0830841064
84.0024871826 52.668598175
89.8699798584 52.668598175
89.8699798584 49.0830841064
84.0024871826 49.0830841064
END
END
или нет?
Но когда я пытаюсь добавить данные как новый векторный слой мне всё время пишут, что файл не является источником данных. У меня получается загружать данные только как точки через модуль Delimeted text, а мне нужно как полигоны. Подскажите, пожалуйста, формат данных и модуль через который можно загрузить.
Мне нужно загрузить набор точек в виде полигонов в QGIS. У меня есть только координаты точек в СК Trans Mercator. Как я понял нужно иметь файл, например, такого формата:
altay
1
84.0024871826 49.0830841064
84.0024871826 52.668598175
89.8699798584 52.668598175
89.8699798584 49.0830841064
84.0024871826 49.0830841064
END
END
или нет?
Но когда я пытаюсь добавить данные как новый векторный слой мне всё время пишут, что файл не является источником данных. У меня получается загружать данные только как точки через модуль Delimeted text, а мне нужно как полигоны. Подскажите, пожалуйста, формат данных и модуль через который можно загрузить.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Загрузка полигонов в QGIS
Если полигонов не много - можно составить их описание в формате WKT и c помощью ogr2ogr сконвертировать в шейп. Можно попробывать закинуть данные в БД PostGIS и там встроенными функциями попытаться собрать полигоны. Приложите ваш набор, если не сложно.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Спасибо за ответ. Полигонов не много. А как устроен этот формат WKT?
Пример одного из полигонов такой:
507812.00 7531812.00
508212.00 7531812.00
508212.00 7531212.00
508612.00 7531212.00
508612.00 7530612.00
510012.00 7530612.00
510012.00 7530012.00
511412.00 7530012.00
511412.00 7529412.00
512012.00 7529412.00
512012.00 7528812.00
512612.00 7528812.00
512612.00 7528212.00
513412.00 7528212.00
513412.00 7527612.00
514212.00 7527612.00
514212.00 7525812.00
514887.00 7525812.00
514887.00 7525712.00
515012.00 7525712.00
515012.00 7525212.00
515687.00 7525212.00
515687.00 7525112.00
515812.00 7525112.00
515812.00 7524812.00
515787.00 7524812.00
Пример одного из полигонов такой:
507812.00 7531812.00
508212.00 7531812.00
508212.00 7531212.00
508612.00 7531212.00
508612.00 7530612.00
510012.00 7530612.00
510012.00 7530012.00
511412.00 7530012.00
511412.00 7529412.00
512012.00 7529412.00
512012.00 7528812.00
512612.00 7528812.00
512612.00 7528212.00
513412.00 7528212.00
513412.00 7527612.00
514212.00 7527612.00
514212.00 7525812.00
514887.00 7525812.00
514887.00 7525712.00
515012.00 7525712.00
515012.00 7525212.00
515687.00 7525212.00
515687.00 7525112.00
515812.00 7525112.00
515812.00 7524812.00
515787.00 7524812.00
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Загрузка полигонов в QGIS
лангольеры под окном жрали время ом-ном-ном
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Загрузка полигонов в QGIS
Вид записи полигона в формате WKT:
где первая скобка (1 1,5 1,5 5,1 5,1 1) - внешняя граница, а вторая (2 2, 3 2, 3 3, 2 3,2 2) - внутренняя (в случае полигона с "дыркой"). Важно: координаты первой и последней точек должны совпадать, что видно из привеленного пример: 1 1 для внешней и 2 2 для внутренней границ.
Предположим, что "дырок" в ваших полигонах нет. Дальше порядок действий следующий:
1) Допустим файл list.txt содержит координаты узлов полигона в виде:
Я набросал небольшой скриптик (назовём его txt2wkt.py) на python, конвертирующий эти данные в csv файл, содержащий WKT описание полигона:
Имя первого столбца обязательно должно быть WKT, это позволит упростить дальнейшую конвертацию в shp без использования vrt драйвера. Поле index со значением 'foo' введено для работы ogr2ogr (при одном поле файл не распознается как csv). Строка: обеспечивает совпадение координат первой и последней точки границы полигона.
Запускается скрипт командой:
где wkt.csv - выходной файл
2) Остается сконвертировать полученный csv в шейп, это делается командой:
Думаю идея понятна. Если что не ясно - спрашивайте.
Код: Выделить всё
POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))
Предположим, что "дырок" в ваших полигонах нет. Дальше порядок действий следующий:
1) Допустим файл list.txt содержит координаты узлов полигона в виде:
Код: Выделить всё
507812.00 7531812.00
508212.00 7531812.00
508212.00 7531212.00
508612.00 7531212.00
508612.00 7530612.00
Код: Выделить всё
import sys
PolyVertexList = open(sys.argv[1], "r")
WKTPolygon = open(sys.argv[2], "wt")
WKTPolygon.write('WKT,index'+'\n')
WKTPolygon.write('\"POLYGON((')
for line in PolyVertexList:
WKTPolygon.write(str(line).rstrip('\n')+',')
PolyVertexList.seek(0, 0);
WKTPolygon.write(PolyVertexList.read().split('\n')[1]+'))\",foo')
PolyVertexList.close()
WKTPolygon.close()
Код: Выделить всё
WKTPolygon.write(PolyVertexList.read().split('\n')[1]+'))\",foo')
Запускается скрипт командой:
Код: Выделить всё
txt2wkt.py list.txt wkt.csv
2) Остается сконвертировать полученный csv в шейп, это делается командой:
Код: Выделить всё
ogr2ogr output.shp wkt.csv
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Спасибо Вам большое! Вроде бы всё понял, буду пробовать.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Начал пробовать, но понял, что я ещё мало понимаю в устройстве QGIS, да и надо учиться программировать.
Я понял смысл скрипта, но я не знаю куда его нужно засунуть, чтобы программа поняла на что ссылаться. И в какой консоле запускать скрипт и соответственно потом конверт? Я пробовал во вкладке Модули-Консоль Python написать txt2wkt.py list.txt wkt.csv (ну вместо list - моё название файла), но это наверное неправильно. И ещё: где должен лежать исходный файл txt?
Я понял смысл скрипта, но я не знаю куда его нужно засунуть, чтобы программа поняла на что ссылаться. И в какой консоле запускать скрипт и соответственно потом конверт? Я пробовал во вкладке Модули-Консоль Python написать txt2wkt.py list.txt wkt.csv (ну вместо list - моё название файла), но это наверное неправильно. И ещё: где должен лежать исходный файл txt?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Загрузка полигонов в QGIS
QGIS тут как бы совсем не причем. Давайте по порядку.
1) Установите QGIS с помощью OSGeo4W (описано здесь), вместе с QGIS установятся библиотеки GDAL/OGR и соответствующие утилиты (нам будет нужна ogr2ogr), также будет установлен Python.
2) Если при установке были выбраны пути по умолчанию, то у вас появится каталог c:\OSGeo4W\. В нем есть файл OSGeo4W.bat - этот файл запуска консоли OSGeo4W. Вот в этой консоли и выполняйте скрипт на питоне (для удобства файл самого скрипта и файл list.txt можете положить в c:\OSGeo4W\).
3) В этой же консоли производите конвертирование с помощью ogr2ogr.
4) После того как получите шейп - вот тогда открывайте его в QGIS.
Да, все вышеописанное относится к MS Windows.
P.S. Если Вам удобно - можете задавать вопросы в irc (http://gis-lab.info/irc.html).
1) Установите QGIS с помощью OSGeo4W (описано здесь), вместе с QGIS установятся библиотеки GDAL/OGR и соответствующие утилиты (нам будет нужна ogr2ogr), также будет установлен Python.
2) Если при установке были выбраны пути по умолчанию, то у вас появится каталог c:\OSGeo4W\. В нем есть файл OSGeo4W.bat - этот файл запуска консоли OSGeo4W. Вот в этой консоли и выполняйте скрипт на питоне (для удобства файл самого скрипта и файл list.txt можете положить в c:\OSGeo4W\).
3) В этой же консоли производите конвертирование с помощью ogr2ogr.
4) После того как получите шейп - вот тогда открывайте его в QGIS.
Да, все вышеописанное относится к MS Windows.
P.S. Если Вам удобно - можете задавать вопросы в irc (http://gis-lab.info/irc.html).
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Спасибо за разъяснения. QGIS у меня был установлен именно таким образом.
Я наверное уже надоел, что так туплю, но...
Я попробовал в консоле OSGeo4W.bat выполнить С:\OSGeo4W\txt2wkt.py list.txt wkt.csv, предварительно положив в эту папку файл list.txt (с координатами) и файл txt2wkt.py (правда может этот файл я сделал неправильно, так как потом при запуске появилось сообщение:"Не удалось открыть файл txt2wkt.py", что нужно выбрать вручную или через инет программу для его открытия). Может быть Python не установился, поскольку этот файл не распознается.
Чтобы получить txt2wkt.py я открыл блокнот, скопировал туда текст кода, сохранил и потом поменял разрешение .txt на .py
Я наверное уже надоел, что так туплю, но...
Я попробовал в консоле OSGeo4W.bat выполнить С:\OSGeo4W\txt2wkt.py list.txt wkt.csv, предварительно положив в эту папку файл list.txt (с координатами) и файл txt2wkt.py (правда может этот файл я сделал неправильно, так как потом при запуске появилось сообщение:"Не удалось открыть файл txt2wkt.py", что нужно выбрать вручную или через инет программу для его открытия). Может быть Python не установился, поскольку этот файл не распознается.
Чтобы получить txt2wkt.py я открыл блокнот, скопировал туда текст кода, сохранил и потом поменял разрешение .txt на .py
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
И ещё: я создал файл типа wkt вручную и попытался запустить в (OSGeo4W.bat) консоле ogr2ogr output.shp wkt.csv.
Было написано, что org2org не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Может быть он отдельно устанавливается?
Было написано, что org2org не является внутренней или внешней командой, исполняемой программой или пакетным файлом. Может быть он отдельно устанавливается?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Загрузка полигонов в QGIS
Здравствуйте. Вы все делаете правильно!
Добавьте в переменную окружения PATH строку:
Во всяком случае ogr2ogr должен запуститься. С питоном будем смотреть дальше.
Добавьте в переменную окружения PATH строку:
Код: Выделить всё
c:\OSGeo4W\apps\gdal-dev\bin\;c:\OSGeo4W\bin\
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Здравствуйте! Это опять я 
Папки gdal-dev у меня нет вообще, поэтому такой путь я думаю изначально не верен, org2org.exe у меня расположен по такому пути C:\OSGeo4W\apps\gdal-16\bin. Но, к сожалению, после набора C:\OSGeo4W\apps\gdal-16\bin\ogr2ogr output.shp wkt.csv всё равно пишет, что "apps\gdal-16\bin\ogr2ogr" не является внутр. или внеш командой и т.д.
Параллельно возникла идея конвертации шейпа (.shp) точек (а не txt, csv и т.д.) в полигон. Может это в QGis можно проще осуществить?

Папки gdal-dev у меня нет вообще, поэтому такой путь я думаю изначально не верен, org2org.exe у меня расположен по такому пути C:\OSGeo4W\apps\gdal-16\bin. Но, к сожалению, после набора C:\OSGeo4W\apps\gdal-16\bin\ogr2ogr output.shp wkt.csv всё равно пишет, что "apps\gdal-16\bin\ogr2ogr" не является внутр. или внеш командой и т.д.
Параллельно возникла идея конвертации шейпа (.shp) точек (а не txt, csv и т.д.) в полигон. Может это в QGis можно проще осуществить?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Загрузка полигонов в QGIS
1. Если отсутствует каталог gdal-dev, значит не стоит пакет gdal-dev, скачайте установщик OSGeo4W и установите его (находится в категории Libs). В этом пакете находится самая последняя версия GDAL/OGR, в которой как раз присутствуют нужные вам возможности.
2. ogr2ogr у вас не запускается потому что вы пишите ogr2ogr вместо ogr2ogr.exe. Советую все-таки поставить gdal-dev и прописать переменные окружения как я писал ранее.
3. Точки в полигоны - посмотрите Инструменты - Обработка - Выпуклые оболочки.
2. ogr2ogr у вас не запускается потому что вы пишите ogr2ogr вместо ogr2ogr.exe. Советую все-таки поставить gdal-dev и прописать переменные окружения как я писал ранее.
3. Точки в полигоны - посмотрите Инструменты - Обработка - Выпуклые оболочки.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 27 фев 2010, 12:29
- Репутация: 0
Re: Загрузка полигонов в QGIS
Спасибо.
Ура! После установки пакета gdal-dev ogr2ogr сработал и создал файл! (Я и до того писал ogr2ogr.exe просто видимо в тех папках свои заморочки)
Всё получилось. И я догадался, что чтобы запустить скрипт (по аналогии с остальными файлами в папка QGIS) нужно было писать немножно не так (хотя может можно и так, но у меня не получалось) как Вы писали txt2wkt.py list.txt wkt.csv.
А нужно было создать файл txt2wkt.bat
и написать txt2wkt.bat list.txt wkt.csv
Спасибо ещё раз! Без Вас я бы точно не разобрался.
Ура! После установки пакета gdal-dev ogr2ogr сработал и создал файл! (Я и до того писал ogr2ogr.exe просто видимо в тех папках свои заморочки)
Всё получилось. И я догадался, что чтобы запустить скрипт (по аналогии с остальными файлами в папка QGIS) нужно было писать немножно не так (хотя может можно и так, но у меня не получалось) как Вы писали txt2wkt.py list.txt wkt.csv.
А нужно было создать файл txt2wkt.bat

Спасибо ещё раз! Без Вас я бы точно не разобрался.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя