Концепция составной горки должна сочетать несколько горок с разной ориентацией солнечного света, чтобы избежать слепых зон. Требуется объединить 3 изображения холмистой местности с 315⁰ (NW солнечный свет, слой по умолчанию), + 355⁰ слой, + 275⁰ солнечный свет соответственно. Это увеличивает детализацию и элегантность, как показано ниже. Полное описание не-ГИС здесь .
Используя любой файл srtm, 3 начальных холма можно сделать с помощью:
gdaldem hillshade input.tif hillshades_A.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_B.tmp.tif -s 111120 -z 5 -az 355 -alt 60 -compute_edges
gdaldem hillshade input.tif hillshades_C.tmp.tif -s 111120 -z 5 -az 275 -alt 60 -compute_edges
Ответы:
В связанном источнике упоминается «изменить его режим слияния на <Multiply>» , поэтому выполняемая операция не является простым средним значением входных теней (для этого см. Также Как усреднить gdal_hillshades? ). Это что-то еще. Тем не менее, давайте создадим 3 разноцветных холма:
Держите наименьшее значение A, B, C
Первый алгоритм, о котором я расскажу, - это отфильтровать и сохранить самые темные пиксели, то есть пиксели с более низкими значениями среди входных A, B, CA boolean:
Область, в которой доминируют тени, теперь составляет больше, чем противоположная сторона одного центрального светляка, она была увеличена на 40⁰ с каждой стороны. В отличие от приведенной ссылки, этот текущий алгоритм, похоже, слишком много потерял в области просветления.
Угол
315±30⁰
(меньший угол наклона) скорее, что ток315±40⁰
будет лучше.Диаграмма ниже является основой уравнения. Он показывает источники света A, B, C и логическое сравнение значений пикселей A, B, C в каждой части. Линии равенства требуют особого внимания для включения в логическое значение. Срединные линии имеют значение
221
для перпендикулярного источника света. Подумайте об областях влияния , ближайший источник света - главное влияние, а самый слабый - самый слабый.Сохранить крайние значения для A, B, C
Другим логическим алгоритмом может быть сохранение самых экстремальных значений, как самых темных, так и самых белых пикселей. Следующая диаграмма помогает разобраться в булевой формуле. Для каждой шестой части круга указывается значение, которое нужно сохранить из A, B, C и логическое значение, чтобы выбрать треугольную область плюс линию равенства по часовой стрелке, и только это . Это дает (сверху и по часовой стрелке):
Если изменения углов не слишком важны, это может дать хорошие результаты.
Другие логические значения
Вы можете создать более сложное логическое значение для покрытия целых кругов, используя любую комбинацию сегментов границы. Важно, чтобы для одного сегмента оставалось только одно значение из A, B, C.
Умножение
Я сделал несколько неудачных попыток получить
multiply
значения пикселей без проверенной формулы или окончательного успеха. @Radouxju указал, что(a*b*c)^(1/3)
(среднее геометрическое ) вместо среднего арифметического(a*b*c)/(255*255)
может работать. Среднее геометрическое ниже или равно среднему арифметическому, что подчеркивает темноту затененных областей. Я еще не проверял это.источник
(A*B*C)/(255*255)
?Инструментом, который может сделать это (среди прочего), является визуализация на основе фактора неба ( http://iaps.zrc-sazu.si/en/svf#v ). Рассчитайте несколько параметров местности. Это чертовски хорошо.
источник
Кажется , в numpy Gdal_calc есть больше операторов :
Я не нашел четких и правильных примеров того, как следует использовать экзотические операторы. Если у вас есть что-то, не стесняйтесь поделиться.
источник