<< На Главную         <В меню Советы по ArcGIS

Создаем карту изолиний рельефа в ArcGIS

Намедни довелось столкнуться с одной интересной задачей - понадобилась карта горизонталей на фрагмент территории, на которую  данных по рельефу не нашлось. Причём горизонтали были нужны через 20 метров. Потратив некоторое время на решение этой проблемки, я пришёл к выводу , что пожалуй, кому-то предложенный способ может показаться полезным и интересным. Сразу небольшая оговорка - вероятно, существуют ещё какие-то решения и нюансы, возможно, даже более оптимальные. Но, как писали в салунах во времена Дикого Запада - "Просьба в музыканта не стрелять - пианист играет, как умеет". Во всяком случае, решение данной проблемки может служить отличным учебным тестовым заданием для тех, кто оттачивает свои навыки в области решения прикладных задача с использованием ГИС. В общем, если кому интересно, читаем дальше ...

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

Создать карту рельефа ArcGIS SAS.Planeta

В общем, думаю, с этим моментом всё ясно. Качаем карту рельефа на нужный фрагмент территории (как это сделать см. на нашем сайте здесь). Но тут  меня ожидало большое разочарование - растр не содержал данные о рельефе! Правда, по контекстной опции Высота рельефа можно узнать нужную информацию в необходимых точках:

Контекстное меню Высота над уровнем моря в SASPlaneta

Забегая немного вперёд, советую выписать на бумажку эти данные в некоторых характерных ( ярко выраженные впадины/вершины) точках. Эта информация нам пригодиться

Загружаем  скаченный фрагмент картинки рельефа в ArcGIS:

Растровая карта высот в ArcGIS

Пользы от картинки в таком виде маловато- растр не содержит информацию о значении параметра Z. Эта проблемка решается довольно легко - надо просто сделать "растяжку" (Stretched) нашей растровой карты :

Вкладка Символы на форме свойств слоя в ArcGIS

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

Растяжка растра в ArcGIS

Пожалуй, мы двигаемся в нужном направлении - знаем значения какого-то абстрактного параметра в каждой точке растра. Теперь задача подменить это значение нужной нам информацией о высоте рельефа. И тут нам на помощь может придти утилита Reclassify (Переквалификация) из набора инструментов Spatial Analyst:

Утилита ArcGIS Reclassify

Для начала переклассифицируем поверхность, ну скажем, на шесть интервалов:

Форма утилиты Reclassify

Наблюдаем такую картинку:

Растр после обработки утилитой Reclassify

Делаем ещё один прогон полученной поверхности утилитой Reclassify - назначаем каждому классу значение высоты рельефа (тут нам пригодятся данные с бумажки, полученные в SAS.Planet, см. выше):

Утилита ArcGIS Reclassify

Получаем очередную карту вот теперь с "правильным" значением параметра Z (высота рельефа):

Растровая интерполированная карта в ArcGIS со значением высот

Но результат построения в некоторых локализациях (обведено красным) нас не совсем устраивает :

Мелкие объекты на растровой карте

В ArcGIS имеется возможность избавиться от слишком мелких деталей растра с помощью утилиты Filter:

Утилита Filter в ArcToolbox

Задаём опции утилиты так, как показано на форме ниже:

Утилита ArcGIS Filter

... и видим сл. карту:

Результат обработки карты утилитой Filter

Обработка растра утилитой Filter улучшает качество карты - исчезли слишком мелкие детали.

Весь этот огород мы городили, чтобы воспользоваться инструментом Cont0ur для построения изолиний:

Утилита Contour в ArcToolbox

На вход утилиты подаём полученный интерполированный растр и шаг высоты рельефа:

Утилита ArcGIS Сontour

Таак ... Любуемся на очередную полученную нами карту  - теперь уже со слоём изолиний:

Создать карту изолиний в ArcGIS

Не смотря на обработку растра утилитой Filter, на карте изолиний всё-таки остаются слишком мелкие контура, от которых желательно избавиться. Эту процедуру можно произвести с помощью утилиты Simplify Line:

Утилита Simplify Line в ArcToolbox

Интерфейс утилиты имеет сл. вид:

Утилита ArcGIS Simplify Line

Прежде чем  назначить порог чувствительности (параметр Simplification Tolerance), можно инструментом Линейка прикинуть его размер:

Измерить длину объекта в ArcGIS Линейка

Ну вот, таким образом, избавились от слишком мелких фрагментов слоя изолиний. Смысл утилиты Simplify Line передаёт следующий рисунок:

Иллюстрация смысла утилиты Simplify Line

Чтобы ещё больше повысить качество нашего слоя изолиний, можно воспользоваться инструментом  Smooth Line (Сглаживание линий) :

Утилита Smooth Line в ArcToolbox

Окончательно, после проведения всех процедур, карта изолиний  с нанесёнными подписями значений высот может иметь сл. вид:

Вид карты после обработки Smooth Line

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

Как вариант, можно продолжить обработку слоя горизонталей в программе Surfer (о том, как отконвертировать данные  см. здесь, как обработать - см. тут). Результат обработки в Surfer может выглядеть сл. образом:

Перегруженная из ArcGIS в Surfer карта изолиний

Если вернуть результаты обработки из Surfer в ArcGIS, наша учебная карта может выглядеть так:

Карта изолиний в ArcGIS

Ремарка от 14.03.2012  Более изящное решение задачи "Где взять растровую карту рельефа" можно посмотреть на нашем сайте здесь и тут

©Simashkov.2011

21.12.2011 г.

Назад