Часто нам нужно из точечного слоя получить таблицу с координатами точек и атрибутивной информацией. Например, мы наставили точки по спутниковому снимку создав точечный shape-файл или выгрузили GPX-файл из GPS-навигатора и теперь хотим получить точки в виде таблицы с координатами и атрибутами точек
Рассмотрим несколько вариантов как это сделать в открытом ПО, доступном для всех:
- Экспортировать в CSV-файл (таблица в формате «Текст с разделителями») в QGIS
- Добавить поля геометрии и скопировать атрибутивную таблицу через буфер обмена
- Добавить поля геометрии и экспортировать в табличный формат XLSX или ODS
- Использовать ogr2ogr через текстовый терминал или в скрипте
- On-line курс QGIS от новичка до профессионала
Поехали:
1) Экспортировать в CSV-файл (таблица в формате «Текст с разделителями») в QGIS
Этот метод наиболее распространенный, т. к. поддерживается QGIS довольно давно и во многих других ГИС-программах. Кроме всего прочего, CSV-файлы без дополнительных манипуляций можно загружать в программы статистической обработки, такие как R и PAST.
Далее, нужно правой кнопкой мышки нажать по названию слоя в панели слоев, и в контекстном меню выбрать пункт «Сохранить как»
В открывшемся окне настройки сохранения нужно:
- выбрать результирующий формат — Comma Separated Value (CSV);
- указать путь сохранения файла;
- выбрать систему координат результирующего файла, если хотим получить традиционные градусы долготы/широты то нужно выбрать WGS 84 (EPSG:4326);
- указать кодировку создаваемого файла, лучше взять в привычку всегда использовать «utf-8», чтобы не было путаницы и проблем с кириллическими шрифтами в дальнейшем;
- указать тип записи геометрии. Если нужно первым записать координату X перед Y то выбираем GEOMETRY: AS_XY, но доступны и другие варианты: AS_YX, AS_XYZ, AS_WKT, <По умолчанию> (не создает полей геометрии);
- указать разделитель полей SEPARATOR: TAB, COMMA или SEMICOLON (я обычно выбираю TAB, чтоб не меньше было путаницы в дальнейшем).
Далее, открываем созданный файл в табличном редакторе. Я предпочитаю использовать LibreOffice или OpenOffice, в них хорошо реализован импорт/экспорт в различные форматы и можно явно указать кодировку файла, а также они бесплатны. Нажимаем кнопку «Открыть» или комбинацию клавиш <Ctrl> + <O>. Выбираем созданный на предыдущем шаге CSV-файл.
Далее смотрим чтобы была выбрана кодировка и разделитель указанные нами на предыдущем шаге. В нашем случае это кодировка – Unicode (utf-8) и разделитель – табуляция. Внизу окна есть область предпросмотра таблицы в которой видно корректность разбиения на столбцы.
После нажатия <Ok> таблица открывается в интерфейсе табличного редактора.
Как видим, в ней присутствуют поля с координатами долготы (X) и широты (Y) в системе координат WGS84. Далее с этими данными мы можем манипулировать как с обычными табличными данными — копировать, редактировать, сортировать, округлять, считать и т.д.
2) Добавить поля геометрии и скопировать атрибутивную таблицу через буфер обмена
Так же возможен вариант получить координаты точек в таблице без создания новых файлов. Для этого нам нужно добавить поля геометрии в атрибутивную таблицу имеющегося файла.
Исходная атрибутивная таблица не содержит видимых полей с координатами точек.
Для того, чтоб добавить поля геометрии, выбираем меню «Вектор» - «Обработка геометрии» - «Экспортировать / добавить поле геометрии»
У нас откроется окно с настройками инструмента «Экспортировать / добавить поле геометрии». В нем нужно:
- выбрать исходный векторный слой. Если в проекте загружен 1 векторный слой, то не будет возможности выбирать, а если несколько слоев, то будет подставлен самый первый по алфавиту, – нужно быть внимательным!!
- выбрать систему координат для создаваемых полей. По умолчанию предлагается выбрать систему координат слоя, но так же есть и вариант «Система координат проекта». В нашем случае подойдет вариант «Система координат слоя», т. к. нам нужны координаты в СК WGS 84 (EPSG:4326) и слой у нас имеет такую же СК. А если бы наш слой имел какую-нибудь другую СК, например «WGS 84 / Pseudo Mercator (EPSG:3857)», а нам нужны были координаты в WGS 84 (EPSG:4326), то мы могли бы изменить СК проекта на нужную нам WGS 84 (EPSG:4326) и при создании полей геометрии выбрать вариант «Система координат проекта».
- указать, создавать ли нам новый shape-файл или записать новые поля в имеющемся файле.
Указав нужные параметры нажимаем «Ок». Если мы добавляем поля с описанием геометрии в имеющийся слой, то всплывет предупреждение, что QGIS не поддерживает одновременный доступ к одному источнику данных из нескольких потоков, и попросит убедится что атрибутивная таблица этого слоя закрыта. Если вы уверены что хотите продолжить, жмите "ОК".
Всплывет сообщение что ваш слой обновлен. И в таблицу атрибутов точечного слоя будут добавлены поля «XCOORD» и «YCOORD». В поле «XCOORD» будут градусы долготы, а в «YCOORD» – широты.
Инструмент «Экспортировать / добавить поле геометрии» примечателен тем, что при помощи него можно не только добавить поля с координатами для точечного слоя, но и тем что при помощи него можно работать так-же с линейными и полигональными слоями. В линейный слой будет добавлено поле «LENGTH». В полигональный слой будут добавлены поля «AREA» и «PERIMETER» – площадь и периметр соответственно. Следует учитывать, что добавленные поля будут иметь значения в единицах измерения системы координат, для метрических СК это будут метры, а для географических – градусы.
Далее нужно выделить нужные объекты, можно в таблице, на карте инструментами выделения, инструментом «выделить по атрибутам» или используя пространственные запросы. Открыть таблицу атрибутов слоя и скопировать выделение в буфер обмена, нажав кнопку «Копировать выделение» или комбинацию клавиш <Ctrl>+<C>.
Далее запускаем табличный редактор, выделяем первую ячейку для вставки и вставляем в него выделение, нажав <Ctrl>+<V>. После этого откроется окно «Импорт текста» в котором обычно все параметры корректно подхватываются по умолчанию, но если что есть и возможность дополнительных настроек.
Далее мы можем работать с этими данными уже в интерфейсе табличного редактора.
3) Добавить поля геометрии и экспортировать в табличный формат XLSX или ODS
Этот способ по сути является не отдельным способом, а продолжением предыдущего. Суть его в том, что после расчета полей геометрии сохраняем слой или только выделение сразу в XLSX или ODS формат. Для этого, в точечный слой добавляем поля с координатами как описано выше (при помощи инструмента «Экспортировать / добавить поле геометрии») и в списке слоев жмем правой кнопкой мышки по этому слою. Из контекстного меню выбираем пункт «Сохранить как».
В открывшемся окне выбираем формат XLSX или ODS.
Для справки:
- XLSX (Office Open XML) – формат таблиц по умолчанию для приложений Microsoft Office 2007 и более поздних.
- ODS (OpenDocument Spreadsheet) – это электронные таблицы формата OpenDocument, родной формат электронных таблиц для программах типа LibreOffice или OpenOffice.
Этот способ работает только в версиях QGIS 2.14 и выше, т. к. в более ранних версиях из коробки возможность работы с XLSX или ODS отсутствовала. Если вам хочется использовать его в более ранних версиях QGIS, то нужно установить дополнительный модуль XyTools.
4) Использовать ogr2ogr через текстовый терминал или в скрипте.
Если у вас десятки - сотни файлов с точками, например, вы сезон собирали по полям информацию и после каждого выхода скидывали с GPS-навигатора точки на компьютер, и ваши коллеги скинули вам точки с GPS, и все это богатство нужно конвертировать в таблицы для дальнейшей работы, то как быть в таком случае? Делать это вручную через графический интерфейс практически бессмысленная трата времени, ведь это действие можно доверить скрипту, который по очереди переберет все ГИС-файлы и конвертирует их в таблицы, а время потратить на что-то более интеллектуальное.
Если у вас на компьютере уже установлен QGIS то вместе с ним так же установлена и библиотека GDAL/OGR. Эта библиотека содержит множество программ и позволяет работать со множеством растровых и векторных ГИС-форматов. Для наших целей мы будем использовать утилиту ogr2ogr. Эта утилита предназначена для конвертации векторных данных. Описание можно посмотреть на официальном сайте, а примеры использования на сайте gis-lab.info.
Мы же рассмотрим скрипт для экспорта путевых точек из GPX-файлов в CSV-таблицы. Данный скрипт работает следующим образом. Мы складываем множество GPX-файлов скинутых с GPS-навигатора в одну папку. Важным условием является то, чтоб не было пробелов в названиях файлов. В эту же папку кладем файл скрипта и запускаем скрипт, дважды кликнув по нему мышкой.
В ходе исполнения скрипта в папке с GPX-файлами появляются CSV-файлы (таблицы), которые называются так же как и исходные файлы, но имеют другое расширение.
В созданных CSV-файлах, разделитель колонок – запятая. Это нужно указать при открытии в табличном редакторе.
Как видим, в созданных CSV-файлах присутствуют поля «X» и «Y». Так же есть полезные поля «ele» – высота по GPS, «name» – название точки, «time» – время (в некоторых моделях GPS — время постановки точки, а в некоторых – время выгрузки из прибора), «cmt» – комментарий (в некоторые навигаторы сюда пишут время постановки точки), «desc» – описание создаваемое на некоторых навигаторах. Кроме них есть еще множество полей специфичных для GPX-формата.
Теперь рассмотрим сам скрипт для Linux и Windows.
Для Linux
скрипт это
текстовый файл с
расширением «.sh»
и имеет
следующее содержание:
#!/bin/sh
for fname1 in *.gpx
do fname2="$(basename $fname1 .gpx)"
ogr2ogr -f CSV $fname2 $fname2.gpx -lco GEOMETRY=AS_XY
mv ./$fname2/waypoints.csv ./$fname2.csv
rm -r ./$fname2
done
В Linux нужно скрипт сначала сделать исполняемым при помощи команды chmod +x convert_GPX-CSV_waypoints.shАрхив со скриптом для Linux можно скачать от сюда.
В Windows ситуация немного сложнее, это связано с тем что при установке QGIS, утилита ogr2ogr не записывается в переменную среды и ее сразу нельзя вызвать короткой командой ogr2ogr и требуются дополнительные манипуляции.
Скрипт для Windows это текстовый файл с расширением «.bat». Для его создания нужно в папке с GPX-файлами создать пустой текстовый документ с расширением «.txt».
Открыть этот текстовый файл в блокноте или каком то другом более продвинутом текстовом редакторе, например Notepad++.
Вставить в него следующее содержание:
@echo off
SET ogr2ogr="C:\Program Files\QGIS Lyon\bin\ogr2ogr.exe"
for %%f in (*.gpx) do (
echo %%f
%ogr2ogr% -f "CSV" out.csv %%f -lco GEOMETRY=AS_XY
rename out.csv %%f.csv
del tracks.csv
del route_points.csv
del track_points.csv
del routes.csv
pause
Обратите внимание на вторую строчку: SET ogr2ogr="C:\Program Files\QGIS Lyon\bin\ogr2ogr.exe"На моем компьютере путь к утилите ogr2ogr: C:\Program Files\QGIS Lyon\bin\ogr2ogr.exe У вас на компьютере он может немного отличаться. Проверьте где у вас на компьютере эта утилита, и подставьте свой путь к ней.
Сохранить и закрыть. После этого переименовать файл, изменив расширение «.txt» на «.bat».
Потом дважды клацнув по созданному bat-файлу откроется окно командной строки, в котором будут выдаваться сообщения про процесс конвертации. По результату завершения процесса нужно будет нажать любую клавишу на клавиатуре и окно закроется. В случае каких-либо ошибок сообщения будут тут-же.
В результате выполнения скрипта в папке с GPX-файлами появятся CSV-файлы.
Если вы хотите оперативно получать советы по решению задач в QGIS добавляйтесь в очень полезный Telegram-группу "QGIS взаимопомощь". В это чате уже более полутары тысяч участников, и постоянно идет активное общение и взаимопомощь!
QGIS взаимопомощь✊
Комментариев нет:
Отправить комментарий