Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

Географическая привязка данных в QGIS


QGIS - современная, активно развиваемая пользовательская ГИС с открытым исходным кодом. В числе других функций этой программы - возможность географической привязки растровых данных. Эта статья является пошаговой иллюстрацией процесса привязки с помощью QGIS. Этот инструмент не идеален, но представляет вполне работоспособную альтернативу проприетарным пакетам для работы с ГИС.

Инструмент использует ряд преобразований реализованных через GDAL.

Перед началом работы, убедитесь, что:

Разделитель целой и дробной части в системе - точка, а не запятая, иначе возможно появление ошибки "Невозможно расчитать трансформацию", если привязка проходит без проблем, то разделитель можно не менять (замечено в Windows 7 64bit).

Названия рабочих папок и самих растров не содержат кириллицы и пробелов.

Оба этих совета носят рекомендательный характер и их стоит учесть, если у вас возникают проблемы при привязке. Вполне возможно, у вас не возникнет их не возникнет.

Растр используемый для примера в этой статье можно загрузить вот здесь.

Содержание

1 Запуск QGIS и модуля привязки

2 Загрузка исходных данных

3 Расстановка точек привязки

3.1 Источники координат

3.1.1 Координаты с уже загруженных привязанных данных

3.1.2 Координаты из внешнего источника

3.1.3 Координаты с самого изображения

3.2 Создание точек

4 Трансформация

[править]Запуск QGIS и модуля привязки

QGIS можно загрузить с официального сайта или установить с помощью установщика OSGeo4W (рекомендуется, описание установки). Модуль географической привязки данных называется Привязка растров (GDAL) (Georeferencer GDAL) и запускается через Модули\Привязка растров (Plugins\Georeferencer). Если этого модуля в меню Модули нет, необходимо сначала подключить его через Модули\Управление модулями (Plugins\Plugin manager).

НЕ нашли? Не то? Что вы ищете?

Описание: Включение модуля привязки

А потом запустить:

Описание: модуль привязки

[править]Загрузка исходных данных

После запуска модуля привязки появится окно привязчика данных разделенное на две части: часть данных и часть таблицы точек привязки. В самом начале, так как никаких данных еще не загружено, окно и таблицы пустые.

Описание: модуль привязки

Для начала привязки, загрузим в вид данных привязываемый растровый файл, он может находится в любом распространенном графическом формате (gif, jpeg, tif и др.), для этого выберем Файл\Открыть растр. Если ваш файл не может быть загружен, обычно это является свидетельством особенности растра, необычного сжатия или цветовой системы, в этом случае - просто пересохраните его в формат TIF:

Описание: привязываемы файл

[править]Расстановка точек привязки

Дальнейшая работа по сбору точек привязки происходит в области с загруженным растром, поэтому вы можете захотеть его максимально увеличить. Процесс привязки заключается в создании нескольких опорных точек, для которых известны их реальные координаты.

Точки создаются инструментом добавить точку (Add Point) Описание: добавить точку. При этом исходные координаты привязываемого изображения получаются автоматически, а опорные (те, к которым осуществляется привязка, нужно откуда-то получить).

[править]Источники координат

Источник координат может быть любой набор данных, сервис или что-то иное, где можно получить координаты в явном виде. Например, координаты можно получить:

С данных, которые уже загружены в область карты

Из третьего источника

С самого изображения

[править]Координаты с уже загруженных привязанных данных

Дописать

[править]Координаты из внешнего источника

Внешним источником может выступать что угодно, коль скоро вы можете получить от него координаты. Например:

Координаты собранные в поле с помощью GPS

Координаты из интернет-карт: osm. org, maps. и т. д.

Координаты из документов

Если координаты находятся в формате отличном от dd. dddddd (десятичные градусы), их нужно будет к нему привести, прежде чем использовать для привязки. Этому посвящена отдельная статья.

[править]Координаты с самого изображения

В определенных случаях координаты явно прописаны на самом изображении. Это часто встречается на топокартах. В нашем примере точками привязки будут углы топокарты. Координаты мы будем получать, увеличивая соответствующие фрагменты и глазомерно считывая широту и долготу.

[править]Создание точек

После увеличения нужного фрагмента и указания точки необходимо ввести соответствующие ей координаты:

Описание: добавить точку

В случае привязки растра к другим слоям (векторным или растровым), необходимо сначала загрузить нужные слои в основное окно QGIS. Затем, вместо ввода координат с клавиатуры, для задания координат опорных точек нужно выбрать кнопку С карты (From map canvas) и щелкнуть в нужном месте основной карты. В этом случае координаты опорных точек берутся с карты, которая может содержать любые другие слои, открытые в основном окне программы.

Для сохранения собираемых точек нужно выбрать Файл/Сохранить контрольные точки как . Они будут сохранены в дополнительный файл, имеющий такое же имя как и привязываемый + расширение points. Содержимое файла легко отредактировать в любом текстовом редакторе. Если, по некоторой причине, процесс расстановки точек пришлось прервать, то при следующей загрузке растра расставленные точки загрузятся вместе с ним. Для загрузки другого файла точек, нужно выбрать: Файл/Загрузить контрольные точки.

После расстановки необходимого количества точек, окно сбора точек должно выглядеть примерно так:

Описание: добавить точку

[править]Трансформация

После сбора необходимого количества точек, можно приступить к трансформации растра (пересчету) его в новую систему координат. Для этого необходимо выбрать настройки трансформации Параметры/Параметры трансформации.

В QGIS доступно несколько методов трансформации растров, в том числе:

Линейное - аффинное преобразование, линейный сдвиг и масштабирование, пересчет (создание нового) растра при этом не происходит (поэтому пункт создания нового растра заблокирован), создается новый файл привязки;

Гельмерта - сдвиг и поворот, создается новый файл в формате TIF и файл привязки;

Полиномиальное 1,2,3 - полиномиальное преобразование первого, второго или третьего порядка. Требуют соответственно минимум 4, 6, 10 точек. Создается новый файл в формате TIF и файл привязки; Рекомендуем использовать для быстрой привязки Полиномиальное преобразование 1 порядка, для более точной Полиномиальное преобразование 2 порядка (подробнее).

Thin plate spline - кусочно-линейное преобразование, аналогичное модели трансформации резинового листа (rubbersheet), используется в случае очень сильных локальных искажений исходного растра.

Для начала, рекомендуется пользоваться полиномиальной моделью соответствующей количеству созданных контрольных точек.

Описание: добавить точку

После получения нового растра, рекомендуется проверить точность привязки независимым или тем же набором точек и, если необходимо, вернуться к процессу привязки еще раз, удалив неудачно|неправильно поставленные опорные точки.

Эта статья на простом примере иллюстрирует как зарегистрировать географически растровый слой - картинку. В этой статье мы используем термин "зарегистрировать", а не "привязать", чтобы учесть некоторое тонкое отличие. Обычно под географической привязкой понимают процесс сбора контрольных точек на изображении и опорных данных. В нашем случае, ничего собирать мы не будем, а просто изучим размеры изображения и зарегистрируем растр с помощью так называемого world-файла. Его устройство подробно рассматривается в отдельной статье. На самом деле, это не общепринятое терминологическое различие.

Суть работы заключается в создании специального файла регистрации примерно такого вида. Это обычный текстовый файл, который имеет такое же название как картинка и расширение wld.

20.0000000000000
0.00000000000000
0.00000000000000
-20.000000000000
424178.117
4313415.907

A
C
D
B
E
F

Для примера возьмем одну из картинок из набора данных по хлорофиллу (источник). Эти данные в явном виде не имеют географической привязки. Это означает, что если мы загрузим их в ГИС, то ГИС ничего не будет знать о том, где они находятся на самом деле.

Попробуем (для примера будем использовать свободную ГИС QGIS, но действия дальше могут выполняться и где угодно еще).

Описание: Tfw-example-01.gif

Абстрактные координаты 1763,-699 в строке статуса говорят нам, что QGIS не знает где географически находятся наши данные, чтоб обычно означает, что у них отсутствует правильный файл привязки (подробнее).

Но мы можем легко узнать на изображении очертания континентов. Как же сделать так, чтобы ГИС показывала правильные координаты и чтобы мы смогли наложить на нее свои, уже привязанные, данные?

Создадим файл привязки.

Для начала поймем каковы размеры растра в пикселях по ширине и высоте или другими словами, сколько у него рядов и колонок.

Чтобы это узнать можно использовать любой графический редактор или мы можем сделать это в самой ГИС. В QGIS для этого достаточно открыть свойства растра.

Описание: Tfw-example-02.gif

Информация о свойствах растра говорит, что наш растр шириной 4320 пикселей и высотой 2160. Зная это легко расчитать географический размер пикселя по широте и долготе. Мы предполагаем, что растр на самом деле находится в географической системе координат.

Расчитаем для начала размер пикселя, для этого разделим расстояние по долготе на количество пикселей:

360/4320 = 0.08333333

обычно пиксель квадратный, т. е. по широте он должен иметь тоже значение, но пиксель бывает и прямоугольным, поэтому убедимся какого он все-таки размера в нашем случае:

180/2160 = 0.08333333

Таким образом, пиксель все-таки квадратный и размер его 0.08333333 на 0.08333333 градуса, что, кстати примерно соответствует разрешению в 1 км.

Итак, первые четыре параметра у нас определились, они выглядят так:

0.08333333

0.00000000000000

0.00000000000000

-0.08333333

?

?

Определимся с последними двумя, показывающими привязку верхнего правого пикселя. Судя по тому, что у нас изображение показывающее весь земной шар, то резонно будет предположить, что верхний правый пиксель будет иметь координаты -180 по долготе и 90 по широте. Попробуем их подставить в наш world-файл:

0.08333333

0.00000000000000

0.00000000000000

-0.08333333

-180

90

Удалим и перезагрузим растр в QGIS:

Описание: Tfw-example-03.gif

Как видим, координаты приобрели осмысленные значения похожие на широту-долготу. Чтобы окончательно убедиться, что растр зарегистрирован правильно, добавим еще один слой, например береговые линии (bnd-coast-l) из VMap0.

Вот как выглядит северная оконечность о-ва Мадагаскар.

Описание: Tfw-example-04.gif

Вполне прилично и растр уже можно считать географически зарегистрированным. Но есть еще одно улучшение, которое можно сделать.

Обратим внимание на верхний левый пиксель, для этого наложим какой-нибудь слой, охватывающий весь земной шар, например разграфку данных SRTM (северные широты в ней также присутствуют).

Вот как это будет выглядеть:

Описание: Tfw-example-05.gif

Как можно видеть, растр смещен. Это произошло потому, что привязка world-файлов на самом деле осуществляется к центру пиксела, а не к его вернему левому углу (-180, 90), соответственно, для последних двух значений файла регистрации нужно взять их же, но уменьшенные на половину пикселя:

180-0.08333333/2 = 179.9583

90-0.08333333/2 = 89.95833

Таким образом результирующий файл регистрации будет таким:

0.08333333

0.00000000000000

0.00000000000000

-0.08333333

-179.9583

89.95833

Это окончательно зарегистрирует данные там, где нужно. Вот наш верхний левый угол:

Описание: Tfw-example-06.gif

А вот наш Мадагаскар:

Описание: Tfw-example-07.gif