Использование опции Hillshade в ArcMap?

15

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

введите описание изображения здесь

У меня есть растровый слой, который я хочу отображать с холмистой местностью по умолчанию. Я могу сделать это в коде, и фактически это то же самое, что и выбор опции Hillshade в ArcMap (см. Ниже):

введите описание изображения здесь

Однако когда вы делаете это, это выглядит неутешительно:

введите описание изображения здесь

Особенно, если вы увеличиваете растр, вы видите все виды сетчатых артефактов - что выглядит не очень красиво!

введите описание изображения здесь

Однако, если я создам правильный слой Hillshade с использованием растра с помощью Spatial Analyst и наложу его с прозрачностью 85%, он будет выглядеть довольно хорошо и совсем по-другому !:

введите описание изображения здесь

  1. Как я могу добиться этого эффекта в ArcMap и переопределить функциональность по умолчанию для опции Hillshade (я полагаю, это невозможно, или я пропустил некоторые настройки, из-за которых растр отображается плохо). Если есть возможность переопределить или выбрать правильные настройки - это можно сделать в ArcObjects.
  2. Если вариант 1 невозможен, могу ли я создать свой эффект с помощью создания слоя Hillshade (без использования Spatial Analyst) и эффективно объединить его с оригинальным растром - т.е. я не хочу, чтобы люди видели два слоя в таблице содержания в ArcMap , Я просто хочу один слой, но с рендерингом на холмах по умолчанию моего выбора / конфигурации. Мне нужно сделать это тоже программно, т.е. ArcObjects.

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

Поэтому я думаю, что теперь я знаю, что мне нужно сделать в отношении создания некоторого высококачественного хэдшинга, но я думаю, что потребуется немного настраивающий код ArcObjects низкого уровня. Я думаю, что мне нужно придумать свой собственный рендеринг графики и подключить его к ArcMap (у меня есть DLL, которая классным образом отображает растровые изображения). Я думаю, что хорошее место, чтобы показать это, было бы переопределить событие Draw () на чем-то вроде IRasterRenderer и вставить мой собственный рендеринг изображений. Конечно, это может быть немного сложно с репроекциями и т. Д.

Кто-нибудь делал этот низкоуровневый рендеринг графики в ArcMap - если да, можете ли вы предложить какие-либо рекомендации или вещи, о которых мне следует знать?

Видар
источник
1
Я никогда не делал этого, но я чувствую, что вы можете использовать IRasterRenderer, чтобы настроить способ визуализации определенного растра. Если у вас есть два набора данных (холм + обычный), вы можете использовать IRasterCursor, чтобы смешать и нарисовать каждый пиксель вместе.
Джордж Сильва
5
Что бы это ни стоило, я вчера попробовал то же самое в ArcMap, и это тоже выглядит ужасно.
Чед Купер
@ Джордж, я думаю, что RasterCursor изменяет значение CELL - тогда как я думаю, что я хочу изменить значение цвета - то есть эффективно изменить его интенсивность цвета на основе значения оттенка - вы знаете, как изменять заданные значения RGB пиксель за пикселем?
Видар
1
Похоже, что «эффект затенения холмов» вычисляется путем предварительного округления значений высот, что фактически превращает вашу матрицу высот в множество крошечных крутых террас. Если это правильно, вряд ли вы найдете решение: отправьте сообщение об ошибке. Вы можете обойти двухслойную проблему, сгруппировав сетку и слой отмывки. Кстати, я считаю, что эта опция является новой в версии 10; это поможет обновить теги, указав, какую версию ArcMap вы используете.
whuber
@Vidar docs указывает, что курсоры Raster существуют для «оптимизированного доступа к растру». Они также должны уметь читать.
Джордж Сильва

Ответы:

20

Использовать билинейную интерполяцию передискретизации во время отображения

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

Этот эффект лучше всего работает с матрицей высот и стандартной черно-белой цветовой шкалой.

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

Добавить матрицу высот:

введите описание изображения здесь

Переключить «Использовать эффект Hillshade Effect» на: введите описание изображения здесь

Отображается следующим образом на экране: введите описание изображения здесь

Измените передискретизацию во время отображения на билинейную интерполяцию: введите описание изображения здесь

Отображается следующим образом на экране: введите описание изображения здесь

Якуб Сисак География
источник
Вы правы в том, что говорите - это действительно избавляет от артефактов сетки - но затенение холмов все равно выглядит ужасно. В некотором смысле, я полагаю, что артефакты были своего рода вторичной проблемой - так как я действительно хочу пригвоздить затенение холмов. Но спасибо за усилия в вашем ответе!
Видар
10

Описанная методика Arcmap на холмистом склоне является быстрой и грязной и никогда не предназначалась для замены результата на холмистой местности из Spatial Analyst и / или 3D Analyst. Хотя один и тот же термин используется для описания обоих, они совсем не одинаковы.

Чтобы создать настоящий холм без Spatial Analyst, вы можете попробовать gdaldem из GDAL :

gdaldem hillshade dem.tif shade.tif

В TileMill Terrain Data Tutorial есть хороший обзор того, как использовать gdaldem для создания составного ската с гипсометрической тонировкой.
деталь горки и гипсометрического композитного рельефа

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

Мэтт Уилки
источник
1
Хорошая вещь! Особенно нравится идея сочетания результатов и использования Hillshade, а также склона. Никогда не думал о том, чтобы объединить их вместе. Придется попробовать.
Якуб Сисак GeoGraphics
gdaldem - определенно способ для некоторых операций ГИС над ArcGIS. Как я узнал, хилшейдинг, безусловно, является одной из таких операций.
GIStack
1
@jakub, если вам нравится идея холмистой местности в сочетании с уклоном и гипсометрией, взгляните на работу Тома Паттерсона по перекрестному смешиванию гипсометрических оттенков и созданию карт натурального цвета со спутниковыми данными о земном покрове . Обсуждаемые методы нацелены на преодоление ограничения стандартным гипсометрическим окрашиванием часто неуместной ассоциации зелени с низкой высотой над уровнем моря с растительностью и коричнево-красной с высокой высотой, с пустынями или бесплодными землями. Стоит почитать и изучить.
Мэтт Уилки
7

Если вы ищете красивый холм, для создания которого требуется некоторое время, но который отлично подходит для более крупных проектов, где он будет широко освещаться , вы можете попробовать метод Swiss Hillshade - для этого требуется 3 слоя, но затем вы можете экспортировать их к одному TIFE с географической привязкой, чтобы сэкономить место и для мобильности. Я полагаю, что этот метод требует Spatial Analyst, так что он не является прямым ответом на вопрос OP, но может быть полезен для других, рассматривающих методы отмывки в ArcGIS. Этот метод работает и в других ГИС-системах, но связанный набор инструментов предназначен для ArcGIS.

Изменить 11/2014: Esri недавно выпустила новый инструмент для создания Hillshades. Это выглядит очень гладко и должно сочетаться с рабочими процессами Аскера. Они вводят это здесь, и вы можете скачать код и инструкции по установке здесь

nicksan
источник
Я использовал это несколько раз в последнее время. Очень хорошо. Добавлено в мой пакет с трюками. Спасибо, что поделился.
Kstoney
Нет проблем - я рад, что вы нашли это полезным. Это определенно делает более красивую горную тень, и мне нравится, что я могу держать свои слои вокруг и просто изменить окраску на
деме,
1
Спасибо за это. также в 10.1 растровый шейдер ( blogs.esri.com/esri/apl/2013/05/02/… ) предоставляет значительно улучшенный контроль над растровым отображением и позволяет создавать красивые тени.
SoilSciGuy
4

Когда вы говорите в пункте № 2 «Могу ли я создать свой эффект с помощью создания слоя Hillshade (без использования Spatial Analyst)», вы имеете в виду альтернативные приложения для создания тени?

Если вы хотите использовать приложение вне Spatial Analyst, я недавно узнал (но никогда не использовал) « SEXTANTE для расширения ArcGIS » ( бесплатное ), которое позволяет пользователям использовать инструменты SEXTANTE в ArcMap. Если вы посмотрите этот видеоклип , вы увидите, что они демонстрируют способы создания тени.

RyanKDalton
источник
Не совсем - я просто хочу применить свои собственные методы затенения холмов без использования ESRI. Я добавил дополнительные комментарии в свое вступительное сообщение.
Видар
4

Меня всегда инструктировали, чтобы увеличить преувеличение z, когда я выполняю шлейф.
Я только что попробовал 100 на моем, и это кажется немного экстремальным.
Кроме того, изменение типа растяжки имеет большое значение во внешнем виде тени.
Поскольку вы говорите о том, как это выглядит, вы также можете посмотреть на этот пункт справки. esir help
Что говорит о том, что штриховка iis применяется при разрешении экрана.
И изменить угол освещения
Esri поможет
также изменение направления и контрастности

Брэд Несом
источник