Основи роботи з топографічними даними

Матеріал з Вікіпідручника


Топографічна карта світу, створена на основі даних цифрової моделі поверхні землі SRTM30

Основи роботи з топографічними даними — цифровими моделями поверхні Землі.

Отримання даних[ред.]

Цифрові моделі поверхні Землі (суходолу та морського і океанського дна) доступні для вільного завантаження з ряду джерел. Докладніші інструкції описані в довіднику «Звідки взяти дані для географічних карт».

Інструменти для роботи з даними[ред.]

Поширеними форматами розповсюдження даних цифрових моделей рельєфу є GeoTIFF (варіант стандарту TIFF з доданням геопросторової інформації) та NetCDF (універсальний формат поширення масивів даних). Обробка цих даних можлива як засобами комерційного програмного забезпечення, так і вільного. До вільного ПЗ, придатного для обробки геопросторових даних — цифрових моделей поверхні належать, зокрема:

  • qGIS: кросплатформова геоінформаційна система з графічним інтерфейсом.
  • GRASS GIS: кросплатформова геоінформаційна система з графічним та командним інтерфейсом користувача. Розробка почалась ще в 1982 році.
  • GDAL/OGR: програмна бібліотека та набір програм, створених з використанням цієї бібліотеки для роботи з растровими та векторними геопросторовими даними.
  • GMT (Generic Mapping Tools): набір програм для обробки дво- і трьо- вимірних даних, растеризації, фільтрування, тощо, в тому числі, обчислення картографічних проекцій.
  • MapServer: середовище для розробки інтернет-застосунків для обробки геоінформаційних даних. Також має програму для створення географічних зображень.

та інші.

Основні операції[ред.]

Склеювання декількох фрагментів в один файл[ред.]

Дані GLOBE та SRTM розбито на сегменти. В деяких випадках, бажаний регіон може знаходитись в різних сегментах. Наприклад, в наборі GLOBE, Україна знаходиться в двох сегментах: c10g та g10g. Тому, для відображення рельєфу всієї країни дані слід спочатку склеїти в один файл.

GDAL: gdalwarp[ред.]

Програма gdalwarp[1] з набору GDAL пропонує, серед іншого, простий спосіб склеювання декількох сегментів геопросторових даних в один. Оскільки географічні метадані (просторові координати кутів, роздільна здатність) зберігаються в файлах GeoTIFF та інколи — в NetCDF, то для склеювання сегментів в один досить виконати команду:

gdalwarp c10g.grd g10g.grd cg10g.grd

Тут перші два аргумента команди — імена вхідних файлів, останній — файл з результатом роботи.

Створення прямокутного витягу[ред.]

Для спрощення та прискорення обробки даних, слід зменшити їхній обсяг.

GDAL: gdalwarp[ред.]

gdalwarp -te 22.9984 44.7565 40.2218 52.3751 cg10g.grd ua10g.grd Окрім склеювання декількох сегментів в один, програма gdalwarp[1] може створювати і витяги. Наприклад, аби отримати витяг, що приблизно відповідає прямокутнику, в якому знаходиться Україна, слід виконати команду:

gdalwarp -te 22.9984 44.7565 40.2218 52.3751 cg10g.grd ua10g.grd

тут:

  • аргумент -te xmin ymin xmax ymax задає координати лівого нижнього кута та верхнього правого кута прямокутника в координатах вихідної системи координат, яким буде обмежений результат — витяг. Результат роботи буде збережений в файлі ua10g.grd.

Відмивка[ред.]

Відмивка є способом зображення рельєфу, при якому об'ємність зображення рельєфу досягається за допомогою напівтонового відтінення нерівностей земної поверхні.

GDAL: gdaldem[ред.]

Набір GDAL пропонує програму gdaldem[2], яка, серед іншого, здатна створювати відмивку на основі цифрових моделей місцевості.

Загальний синтаксис виклику програми:

gdaldem hillshade вхідна_модель віхидний_файл
            [-z Zкоеф (стандарт=1)] [-s масштаб* (стандарт=1)]"
            [-az Азимут (стандарт=315)] [-alt Висота (стандарт=45)]
            [-alg ZevenbergenThorne] [-combined]
            [-compute_edges] [-b Канал (стандарт=1)] [-of формат] [-co "NAME=VALUE"]* [-q]

Слід звернути увагу на, перший параметр виклику команди — hillshade (відмивка). Команда обчислює 8-бітовий растровий файл з ефектом відмивки (тіней від рельєфу). Вона приймає і деякі параметри: азимут та висота джерела світла, коефіцієнт вертикального збільшення та коефіцієнт масштабування, аби виправити відмінність між вертикальними та горизонтальними розмірами. Замість відсутніх даних, програма видає 0.

Параметри команди:

-z Zкоеф
коефіцієнт вертикального збільшення значень висоти
-s масштаб
співвідношення вертикальних одиниць та горизонтальних. Якщо у вхідній моделі горизонтальними одиницями є кутові градуси (наприклад, широта і довгота в системі WGS84) а висота вказана в метрах, то можна вказати масштаб=111120.
-az азимут
азимут джерела світла, в кутових градусах. 0, якщо джерело знаходиться зверху растру, 90 — схід. Стандартне значення, 315, зазвичай використовують для обчислення відмивки в картах рельєфу, і тому навряд чи доведеться його змінювати.
-alt висота
висота джерела світла, в кутових градусах. 90, якщо світло світить на модель згори, 0 якщо світло світить з боку.
-combined
починаючи з GDAL версії 2.0, обчислення тіні комбіноване.

GMT: grdimage[ред.]

Гіпсометричні карти[ред.]

Гіпсометричні карти дають геометрично точне зображення рельєфу за допомогою горизонталей та забарвлення висотних ступенів за певною шкалою кольорів.

GDAL: gdaldem[ред.]

Програма gdaldem також здатна створювати і гіпсометричні карти.

Загальний синтаксис виклику програми:

gdaldem color-relief вхідна_модель шкала_кольорів вихідний файл
            [-alpha] [-exact_color_entry | -nearest_color_entry]
            [-b Канал (стандарт=1)] [-of формат] [-co "NAME=VALUE"]* [-q]

В результаті роботи команди буде створений кольоровий растровий файл з 3-каналами (RGB) або 4-каналами (RGBA), обчислений на основі вказаної в моделі висоти та заданої шкали кольорів. Стандартний алгоритм створює м'який перехід між кольорами. Парамтрами -exact_color_entry або -nearest_color_entry можна змінювати поведінку алгоритма та вимикати інтерполяцію кольорів.

Параметри команди:

шкала_кольорів
текстовий файл, в якому описана шкала кольорів
-alpha
додати альфа-канал (прозорість) до вихідного растру
-exact_color_entry
шукати точний збіг в шкалі кольорів. Якщо не вдається знайти збіг, тоді використовується четвірка RGBA "0,0,0,0"
-nearest_color_entry
використати четвірку RGBA з найближчим значенням висоти в шкалі кольорів.

Текстовий файл шкали кольорів зазвичай має 4 стовпчика:

висота червона зелена та синя складові кольору (від 0 до 255)

Висота може бути вказана як число, або ключове слово "nv" для пікселів без значення. Висоту можна визначити і у відсотках: 0% для найменшого значення, 100% для найвищого.

Значення альфа-каналу (прозорість) можна вказати у додатковому стовпчику. Стандартне значення — 255 (повна непрозорість).

Припустимі різні роздільні символи для стовпчиків: кома, знак табуляції, пробіли, двокрапка.

Також можна задавати кольори не трійкою RGB, а за їхніми назвами в системі GRASS GIS: white, black, red, green, blue, yellow, magenta, cyan, aqua, grey/gray, orange, brown, purple/violet та indigo.

Починаючи з GDAL версії 1.8.0, додана підтримка палітр GMT .cpt (лише COLOR_MODEL = RGB).

Приклад файлу шкали кольорів:

3500   white
2500   235:220:175
50%   190 185 135
700    240 250 150
0      50  180  50
nv     0   0   0   0

GMT: grdimage[ред.]

Обчислення проекції[ред.]

GDAL: gdalwarp[ред.]

Серед інших можливостей програми gdalwarp[1] є і обчислення картографічних проекцій. Для обчислення нової проекції слід скористатись параметрами -s_srs та -t_srs:

-s_srs проекція
проекція вхідного файлу. Можна вказувати системи координат EPSG[3] а також декларації PROJ.4 або імена файлів з описанням проекції в форматі WKT.
-t_srs проекція
те саме, тільки для вихідного файлу, результату.

Наприклад, переведення даних в проекцію WGS84 можна виконати командою:

gdalwarp -t_srs '+proj=utm +zone=11 +datum=WGS84' raw_spot.tif utm11.tif

Проекція Меркатора має код EPSG:3395[4]. Сферічна проекція меркатора з кодом EPSG:3857 стала популярною завдяки використанню в службах он-лайн карт Google Maps, OpenStreetMap, та іншими[5].

GMT: grdimage[ред.]

Приклади[ред.]

Гіпсометрична карта головного хребта Чорногори з відмивкою[ред.]

Розгляньмо приклад створення гіпсометричної карти головного хребта Чорногори. Як джерело даних візьмемо SRTM3 V2. Хребет потрапляє в два сегмента даних: N47E024 та N48E024. В системі Linux з встановленим GDAL та ImageMagick створення карти складатиметься з таких кроків:

Крок 1: отримання даних з серверів. Дані пропонуються в запакованому вигляді. Завантажити можна як утилітою wget, так і будь-якою іншою. Розпакувати архівовані файли також можна в будь-який інший спосіб.

wget http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N47E024.hgt.zip
wget http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/Eurasia/N48E024.hgt.zip
unzip -x N47E024.hgt.zip
unzip -x N48E024.hgt.zip

Крок 2: склеювання двох сегментів та отримання витягу. Обмежимо нашу карту прямокутником координатами нижнього кута 24°18'57.86"E, 47°57'48.39"N і координатами верхнього кута 24°41'11.43"E, 48°13'28.91"N.

gdalwarp -te 24.31 47.96 24.68 48.22 N47E024.hgt N48E024.hgt N47-48E024-reduced.tif
Відмивка, отримана на 3-му кроці.

Крок 3: створімо відмивку. Оскільки це не так важливо, значення азимута і висоти джерела світла залишені без змін.

gdaldem hillshade N47-48E024-reduced.tif N47-48E024-hillshade.tif
Гіпсометрична карта, отримана на 4-му кроці.

Крок 4: створімо гіпсометричну карту. Шкала кольорів зберігається в текствому файлі europa.cpt[6]:

# File europa.cpt
# Elevation Color Elevation Color
-5000 160 194 222   -2000 173 203 230
-2000 173 203 230   -1000 185 213 237
-1000 185 213 237    -500 196 223 244
 -500 196 223 244    -200 206 231 249
 -200 206 231 249       0 218 240 253
    0 148 191 139     200 189 204 150
  200 189 204 150     500 239 235 192
  500 239 235 192    1000 222 214 163
 1000 222 214 163    2000 202 185 130
 2000 202 185 130    5000 192 154  83
B 160 194 222
F 192 154  83
N 255 255 255

Гіпсометрична карта створюється командою:

gdaldem color-relief N47-48E024-reduced.tif europa.cpt N47-48E024-color-relief.tif

Крок 5: обчислення нової проекції. Для зручності сприйняття карти, дані слід перенести в поширену і добре відому картографічну проекцію, яку використовують популярні служби карт Google Maps, Open Street Map, тощо:

gdalwarp -t_srs EPSG:3857 N47-48E024-hillshade.tif proj-hillshade.tif

gdalwarp -t_srs EPSG:3857 N47-48E024-color-relief.tif proj-color-relief.tif
Результат, отриманий на 6-му кроці.

Крок 6: поєднуємо гіпсометричну карту з відмивкою. Цей крок можна виконати і в графічному редакторі, але заради зручності, скористаємось командою composite з набору ImageMagick:

composite -dissolve 30% -gravity center proj-hillshade.tif proj-color-relief.tif karp-map.tif

Створення основи завершено. Тепер на неї слід нанести додаткову корисну інформацію, позначити вершини гір, тощо.

Примітки[ред.]

Див. також[ред.]