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

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

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

Ну, а теперь, когда я расставил все по местам, давайте приступим. Известный геолог И.А. Мальков выдвинул предположение, что склоны южной и особенно юго-восточной экспозиции более перспективны для поиска обнажений коренных горных пород. Дескать, это связано с результатом движения ледника, который двигаясь с северо-запада на юго-восток сильнее заглаживал фронтовую сторону коренных выходов.

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

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

Что было дальше, вы и сами знаете. Потому, что если вы не полный мудак, у вас возникнет только один вопрос: «АSTER или SRTM?». Отвечаю — ASTER:

Я подготовил растр экспозиций через дефолтный функционал QGIS:

кроме того, сделал растр пересеченности рельефа, каждый пиксел которого представляет собой сумму изменений высот в пределах окна 3х3 пикселя (подробнее смотри в статье Riley S.J., DeGloria S.D., Elliot R. A terrain ruggedness index that quantifies topographic heterogeneities // J. Sci. 1999. V. 5. № 1–4. P. 23–27.). Это не входило в изначальное предположение, но преступлением было бы не проверить возможность взаимосвязи частоты обнажений с индексом пересеченности.

Вокруг каждого описания был построен буфер, радиусом в пол-секунды WGS-84 (приблизительно 30х13 метров), не столько, что-бы облегчить вычисление зональной статистики, сколько нивелировать распиздяйство геологов, которые вначале пишут координаты в пикетажку, а после перебивают их в базу. Кроме того, многие обнажения значительны по простиранию и получение точечной статистики для них явно лишено смысла.

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

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

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

Но меня не наебешь. Если ледник действительно оказал такое влияние (если он вообще был — все вопросы к В.Г. Чувардинскому), то это должно проявляться не только в частоте выходов коренников на разных склонах, но и в их форме. Разделить выборку геологических описаний на подмножества разной формы практически невозможно, поскольку записи в пикетажках не стандартизированы и зачастую там попадается бессмысленная хуета. Скрепя сердце я принял волевое решение и подсчитал долю описаний в которых фигурирует слово «уступ» и долю описаний с текстовым фрагментом «заглаж». Согласен, критерий так-себе, но при столь сильной неоднородности частоты встречаемости обнажений на склонах с разной экспозицией, он должен был проявиться. Что-же мы видим на левом верхнем и левом нижнем графиках? Правильно — ничего. На южных склонах заглаженных обнажений меньше, но статистически это недостоверно. Величина отношения уступов к заглаженным обнажениям горных пород, рассчитанная по формуле

(кол-во уступов + 1)/(кол-во заглаженных обнажений + 1)

никак не связана с экспозицией склонов:

Более того, распределение точек наблюдения, в которых не обнаружены выходы коренных пород совершенно аналогично предыдущему:

Это может означать только одно: само распределение площадей склонов разной экспозиции неоднородно, а выборка только подчеркивает эту неоднородность. Действительно (юг-красный, север-синий):

На всякий случай проверим это на растре SRTM:

Как я однажды сказал: «Зрение может обмануть, гистограмма — никогда»:

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

А вот так:

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

Ну а что-же с индексом пересеченности? — спросите вы. Да та-же хуйня. Вот график зависимости количества описанных обнажений от величины индекса пересеченности.

А вот гистограмма этого индекса по всему растру:

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

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

Визуализация рельефа по данным SRTM и ASTER GDEM в QGis+SAGA

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

В качестве показательной территории взяты Соликамский и Красновишерский районы Пермского края. В качестве подложки карта OpenStreetMap Mapnik Standart:
Соликамск и Красновишерск

Инструментом для работы послужит QGis 2.18.4 с подключенными алгоритмами SAGA. Все операции, связанные с фильтрацией и созданием изолиний можно выполнять как внутри QGis, так и запуская гис SAGA в качестве автономного приложения.

Рельеф на средне- и крупномасштабных картах в настоящее время в большинстве случаев отображается с помощью данных SRTM или ASTER GDEM, что связано с их глобальным охватом, открытостью и простотой получения. Разрешение этих данных (SRTM 90 м/пикс, ASTER GDEM 30 м/пикс) позволяет, при должной обработке, показывать особенности рельефа примерно до 15 зума. Несмотря на то, что данные ASTER точнее, их использование затруднено необходимостью дополнительной фильтрации для отсеивания значений, не отражающих реальный рельеф (например, высоты леса и жилой застройки). Оптимальных алгоритмов для такой процедуры, которые дают стабильный результат для значительной территории, не разработано, в результате чего, образец визуализации менее точных данных SRTM оказывается обычно более качественным как с геодезической, так и с художественной точек зрения. Однако, севернее 60° с.ш. и южнее 54° ю.ш. данные SRTM отсутствуют, что вынуждает в конечном итоге использовать оба набора данных при визуализации рельефа на территориях, выходящих за границы покрытия SRTM.

Наш случай именно такой (снизу данные SRTM, сверху ASTER GDEM):
ASTER и SRTM

Данные SRTM доступны из различных источников, из которых наиболее удобны сайты cgiar, gis-lab и viewfinderpanoramas. Я предпочитаю использовать последний, поскольку многие сцены там объединены и загружены сразу в geotiff-растры (обычно SRTM представлен в hdt-формате).

ASTER получить немного сложнее: сайты геологической службы США и NASA позволяют скачивать различные данные ДЗЗ, что требует от пользователя определенной подготовки. Кроме того, эти сайты иногда бывают недоступны, либо работают чрезвычайно медленно. В этих случаях можно скачать всю базу через торрент. Дополнительные источники получения данных SRTM и ASTER доступны на странице получения данных.

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

После того как исходные получены, можно запускать QGis:
ASTER и SRTM в QGis

Для начала объединим сцены ASTER в единый растр с помощью меню «растр-прочее-объединение»:
1объединение растров

В диалоговом окне укажем директорию со сценами и название итогового файла.
2объединение растров

Обратите внимание, что в некоторых версиях GDAL отказывается работать, если пути к файлам содержат кириллические символы. В моем случае все прошло успешно:
3объединение растров

Теперь сохраним полученный файл уменьшив его разрешение до разрешения SRTM. Если этого не сделать, в месте соприкосновения сцен из разных источников мы получим вот такую картину:
рельеф SRTM и ASTER

Выделяем в ТОСе наш ASTER, и через правую кнопку мыши вызываем диалоговое окно сохранения растра:
Сохранение растра в QGIS

Здесь обратите внимание на то, что-бы растр сохранялся как данные. Разрешение уменьшаем в три раза, т.е. вместо 18001 столбца вписываем 6000, а вместо 7201 строк вписываем 2400:
Сохранение растра в QGIS2

После сохранения растра он выглядит загрубленным, но все-равно более информативным, чем SRTM:
Сохранение растра в QGIS3

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

По той-же схеме объединим полученный растр с растром SRTM:
DEM-композит

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

image

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

Откроем панель инструментов в меню «анализ данных» и в списке геоалгоритмов SAGA-Grid-Filter выберем алгоритм «Простой фильтр»:

После нескольких минут обработки, алгоритм выдаст сглаженный растр:
отфильтрованный растр

Его мы и будем использовать для отмывки. С помощью меню «растр-морфометрический анализ-теневой рельеф»:

вызовем диалог создания карты теней:

На этом этапе следует знать одно неявное правило. В том случае, когда вы планируете использовать теневую отмывку в качестве подложки саму по себе, можно использовать значения по умолчанию. В том случае, когда ваша отмывка ложится на некую базовую карту (в нашем случае, такой картой служит OpenStreetMap), следует повернуть источник освещения на сто восемьдесят градусов. Дело в том, что стандартная отмывка представляет собой темный растр, который при наложении не только перестает читаться, но и зашумливает перекрываемые слои. Для того, что-бы это избежать, отмывку следует инвертировать, но в этом случае, горы выглядят как впадины, а каньоны напоминают холмы. Учитывая это, мы заранее изменяем источник освещения, что позволит нам при инвертировании сохранить визуальную форму отмывки. По умолчанию, источник освещения расположен в районе трехсот градусов, чего, конечно-же в природе почти никогда не бывает. Еще Салищев указывал на эту особенность — привычная отмывка рельефа обязана своему появлению лампам, которые обычно устанавливали слева от кульмана. Мы поменяем значение «300» на «120» и через несколько секунд алгоритм выдаст нам вот такой результат:

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

Через меню «растр-извлечение-обрезка»

вызовем диалог, в котором укажем исходный и результирующий растр и шейп-маску по которой будет произведена обрезка:

В результате получим вот такую картину:

Двойным кликом по полученному растру в ТОСе вызовем меню свойств, где сменим градиент с «от белого к черному» на «от черного к белому». После применения изменений растр инвертируется. В месте сочленения данных ASTER GDEM и SRTM осталась небольшая белая полоса, однако, после того как будет установлена прозрачность, а сама отмывка наложена на подложку, заметить эту полосу будет практически невозможно:

Для того, что-бы не инвертировать растр при каждой новой загрузке, сохраним его как новый слой, но на этот раз в меню сохранения отметим его не как «данные», а как «изображение». На этом создание отмывки закончено. Установим прозрачность отмывки 95% и подложим под нее OpenStreetMap:

Так выглядит чистая карта OSM:

А так выглядит карта OSM с наложенной на нее картой теней в районе соприкосновения данных SRTM и ASTER:

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

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

С практической точки зрения эта проблема решается так. Создадим временный полигональный слой:
Новый временный слой2

Сделаем его редактируемым (иконка желтого карандаш), после чего установим режим добавления нового объекта
Редактирование в QGis

и обведем один из районов:

Сохраним фрагмент растра для этого участка (не фильтрованного растра, а исходного, мы же усложняем себе задачу!), обрежем его по обведенной области и отфильтруем с теми же параметрами, что и при создании отмывки. Затем с помощью геоалгоритма SAGA-Shapes-GRID-Горизонтали по ЦМР создадим изолинии через каждые 50 метров высоты.

Фильтрация не только убирает излишний шум, упрощая и выравнивая изолинии, но и позволяет «сцепить» наши разнородные данные. Вот пример извлечения изолиний из сырого растра:

Отчетливо просматривается линия сочетания данных ASTER и SRTM. При различных способах фильтрации растра ASTER GDEM эту линию можно делать более или менее заметной о чем я упоминал в начале данной статьи.

Изолинии из отфильтрованного растра на этот район выглядят так:

На границе растра изолинии замыкаются и не несут в себе географического смысла. Такие участки в последующем будут удалены. Именно поэтому обрезка dem-растра производилась нами не по границе района а по внешнему слою.

Аналогичные операции повторяем для второго района. Обратите внимание, что полигоны обрезки растра перекрывают друг друга:

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

После того, как изолинии извлечены, остается только обрезать их по контуру границ, сохранив оригинальные значения атрибутов изолиний. Для этого успешно применяется алгоритм «SAGA-Shapes-Lines-Пересечение линий и полигонов»:

Небольшая настройка стиля и изолинии готовы:

Обычная карта OpenStreetMap:

Тот же фрагмент карты, но с наложенной картой теней и горизонталями:

Отдельно необходимо вынести проблему неоднородности данных ASTER GDEM по качеству. Даже на нашем примере видно, насколько сильно артефакты отсутствующей и ошибочной информации сказываются на качестве визуализации рельефа в целом:

Данная проблема не имеет однозначного механистического решения. Наиболее оптимальные способы ее устранения зависят от требований к визуализации, выбранного региона и доступной вычислительной мощности. В качестве одного из способов решения я предлагаю использовать последовательное применение фильтра DTM (предельный уклон местности 10 градусов, радиус поиска 2 пикселя), заполнение пропусков в образованном в результате DTM-фильтрации растра (порог напряжения 10) и последующая фильтрация простым фильтром (круговой режим поиска, гладкий фильтр, радиус 5px). Этот метод не позволяет полностью избавиться от артефактов, но существенно снижает их число и сглаживает, что определенно положительно сказывается на визуализации рельефа:

Карта OpenStreetMap без отмывки и изолиний:

Карта OpenStreetMap с отмывкой и изолиниями: