Korzystasz z opcji Hillshade w ArcMap?

15

Oto ładne zdjęcie rastra, którego używam - bez zastosowanych efektów - tylko rampa kolorów i histogram dostosowany, aby pokazać całą ulgę - aczkolwiek w bardzo 2D!

wprowadź opis zdjęcia tutaj

Mam domyślnie warstwę rastrową, którą chcę wyświetlać w Hillshade. Mogę to zrobić w kodzie, w efekcie jest to to samo, co wybranie opcji Hillshade w ArcMap (patrz poniżej):

wprowadź opis zdjęcia tutaj

Kiedy to zrobisz - wygląda to rozczarowująco:

wprowadź opis zdjęcia tutaj

Zwłaszcza, jeśli powiększysz raster, zobaczysz wszelkiego rodzaju siatkowe artefakty - co wcale nie wygląda ładnie!

wprowadź opis zdjęcia tutaj

Jeśli jednak utworzę odpowiednią warstwę Hillshade przy użyciu rastra z programem Spatial Analyst i nałożę ją na przezroczystość 85%, wygląda to całkiem dobrze i bardzo inaczej !:

wprowadź opis zdjęcia tutaj

  1. Jak mogę osiągnąć ten efekt w ArcMap i przesłonić domyślną funkcjonalność opcji Hillshade (przypuszczam, że jest to niemożliwe, czy też jest to ustawienie, którego nie zauważyłem, które powoduje, że raster jest źle wyświetlany). Jeśli można zastąpić lub wybrać prawidłowe ustawienia - czy można to zrobić w ArcObjects.
  2. Jeśli opcja 1 nie jest możliwa, czy mogę stworzyć efekt przy tworzeniu warstwy Hillshade (bez użycia Spatial Analyst) i skutecznie połączyć ją z oryginalnym rastrem - tzn. Nie chcę, aby ludzie widzieli dwie warstwy w spisie treści w ArcMap . Chcę tylko jednej warstwy, ale z domyślnym renderowaniem w cieniu mojego wyboru / konfiguracji. Muszę to zrobić również programowo, tj. ArcObjects.

Jedną rzeczą, której się nauczyłem, jest to, że musisz mieć swój DEM we właściwych odniesieniach przestrzennych i jednostkach pomiarowych, w przeciwnym razie wynikający z niego cień będzie wyglądał zbyt czarny i przesadzony - sprawdź ten film, aby dowiedzieć się więcej - to bardzo dobre wytłumaczenie.

Myślę więc, że teraz wiem, co muszę zrobić, aby uzyskać wysokiej jakości cieniowanie wzgórza, ale myślę, że zajmie to trochę poprawiania kodu ArcObjects na niskim poziomie. Myślę, że muszę wymyślić własne renderowanie grafiki i podłączyć to do ArcMap (mam bibliotekę DLL, która renderuje mapy bitowe w fajny sposób). Myślę, że dobrym miejscem do pokazania tego byłoby zastąpienie zdarzenia Draw () na czymś takim jak IRasterRenderer i wstawienie własnego renderowania obrazu. Oczywiście może to trochę skomplikować się z ponownymi projektami itp.

Czy ktoś wykonał jakiekolwiek renderowanie grafiki niskiego poziomu w ArcMap - jeśli tak, czy możesz zaoferować jakieś wskazówki lub rzeczy, o których powinienem wiedzieć?

Vidar
źródło
1
Nigdy tego nie robiłem, ale wydaje mi się, że możesz użyć IRasterRenderer, aby dostosować sposób renderowania określonego rastra. Jeśli masz dwa zestawy danych (hill + regular), możesz użyć IRasterCursor, aby połączyć i narysować każdy piksel razem.
George Silva
5
Za to, co jest warte, wypróbowałem wczoraj to samo w ArcMap i też wygląda okropnie.
Chad Cooper
@George, myślę, że RasterCursor zmienia wartość CELL - podczas gdy myślę, że chcę zmienić wartość koloru - tj. Skutecznie zmieniając jego intensywność koloru na podstawie wartości hillshade - czy wiesz, jak zmieniać określone wartości RGB piksel po pikselu?
Vidar
1
Wygląda na to, że „efekt cieniowania wzgórza” oblicza się najpierw zaokrąglając wartości wysokości, co skutecznie zamienia DEM w wiele małych, nagłych tarasów. Jeśli jest to poprawne, prawdopodobnie nie znajdziesz rozwiązania: prześlij zgłoszenie błędu. Możesz obejść problem dwuwarstwowy, grupując siatkę i warstwę cienia wzgórza. BTW, uważam, że ta opcja jest nowa w wersji 10; pomogłoby to zaktualizować tagi, wskazując używaną wersję ArcMap.
whuber
@Vidar the docs określa, że ​​kursory rastrowe są dostępne dla „zoptymalizowanego dostępu rastrowego”. Muszą także umieć czytać.
George Silva,

Odpowiedzi:

20

Podczas ponownego wyświetlania należy użyć próbkowania interpolacji dwuliniowej

Możesz nieco poprawić wyświetlanie, zmieniając metodę ponownego próbkowania używaną z domyślnego najbliższego sąsiedztwa na interpolację dwuliniową. Właściwości warstwy -> Karta Wyświetlanie -> Ponowne próbkowanie podczas wyświetlania za pomocą: Interpolacja dwuliniowa.

Ten efekt działa najlepiej w przypadku DEM i domyślnej rampy koloru czarno-białego.

Otrzymasz znacznie lepszy wynik i znacznie większą kontrolę nad wyświetlaczem, używając 2 rastrów, tak jak już to zrobiłeś. Upewnij się, że podczas wyświetlania używasz również metody ponownego próbkowania interpolacji dwuliniowej.

Dodaj DEM:

wprowadź opis zdjęcia tutaj

Przełącz „Użyj efektu Hillshade” na: wprowadź opis zdjęcia tutaj

Renderuje w następujący sposób na ekranie: wprowadź opis zdjęcia tutaj

Zmień ponowne próbkowanie podczas wyświetlania na interpolację dwuliniową: wprowadź opis zdjęcia tutaj

Renderuje w następujący sposób na ekranie: wprowadź opis zdjęcia tutaj

Jakub Sisak GeoGraphics
źródło
Masz rację w tym, co mówisz - to rzeczywiście pozbywa się artefaktów siatki - ale cieniowanie wciąż wygląda okropnie. W pewnym sensie artefakty były swego rodzaju drugorzędnym problemem - ponieważ naprawdę chcę przybić gzyms górski. Ale dziękuję za wysiłek w odpowiedzi!
Vidar
10

Metoda Arcmapa w locie na wzgórzu, opisana metoda, jest szybka i brudna i nigdy nie miała na celu zastąpienia wyniku na wzgórzu od Spatial Analyst i / lub 3D Analyst. Chociaż ten sam termin jest używany do opisania obu, wcale nie są takie same.

Aby stworzyć prawdziwy cień bez Spatial Analyst, możesz wypróbować gdaldem GDAL :

gdaldem hillshade dem.tif shade.tif

Samouczek danych terenu TileMill ma ładny przegląd tego, jak użyć gdaldem do zbudowania kompozytowego cienia wzgórza z hipsometrycznym zabarwieniem.
detal cienia wzgórza i hipsometrycznej płaskorzeźby kompozytowej

Jeśli narzędzie nie jest wystarczająco bezpośrednie dla twojej aplikacji, jest tutaj kod źródłowy C ++ dla gdaldem .

matowe wilkie
źródło
1
Dobry towar! Szczególnie podoba się pomysł połączenia wyników i użycia Hillshade oraz nachylenia. Nigdy nie myślałem o połączeniu ich ze sobą. Będę musiał spróbować.
Jakub Sisak GeoGraphics
gdaldem jest zdecydowanie sposobem na skorzystanie z niektórych operacji GIS nad ArcGIS. Dowiedziałem się, że Hillshading jest jedną z takich operacji.
GIStack,
1
@jakub, jeśli podoba Ci się pomysł cienia wzgórza w połączeniu z nachyleniem i hipsometrią, zapoznaj się z pracą Toma Pattersona na temat mieszanych odcieni hipsometrycznych i tworzenia map kolorów naturalnych z satelitarnymi danymi pokrycia terenu . Omawiane techniki mają na celu przezwyciężenie ograniczenia poprzez standardowe zabarwienie hipsometryczne często nieodpowiedniego połączenia zieleni o niskiej wysokości z roślinnością i brązu / czerwieni o wysokiej wysokości z pustyniami lub jałowymi ziemiami. Warto przeczytać i studiować.
matt wilkie
7

Jeśli szukasz dobrze wyglądającego cienia wzgórza, którego utworzenie zajmuje trochę czasu, ale jest świetne w przypadku większych projektów, w których będzie dużo eksponowane, możesz wypróbować szwajcarską metodę Hillshade - wymaga 3 warstw, ale możesz je następnie wyeksportować do jednego georeferencyjnego tiffa w celu zaoszczędzenia miejsca i mobilności. Uważam, że ta metoda wymaga Spatial Analyst, więc nie jest to bezpośrednia odpowiedź na pytanie OP, ale może być użyteczna dla innych, którzy przyglądają się metodom HillGade w ArcGIS. Ta metoda działa również w innych systemach GIS, ale połączony zestaw narzędzi jest przeznaczony dla ArcGIS.

Edytuj 11/2014: Esri wydała niedawno nowe narzędzie do tworzenia Hillshades. Wygląda naprawdę gładko i powinien łączyć się z przepływami pracy Pytającego. Wprowadzają go tutaj i można go pobrać z instrukcjami instalacji i kod tutaj

Nicksan
źródło
Użyłem tego kilka razy ostatnio. Bardzo dobrze. Dodano do mojej torby sztuczek. Dzięki za udostępnienie.
Kstoney
Nie ma problemu - cieszę się, że okażą się przydatne. Zdecydowanie sprawia, że ​​jest to ładniejszy cień i podoba mi się to, że mogę utrzymywać swoje warstwy i po prostu zmienić zabarwienie na dem, aby podkreślić wszystko nieco inaczej
nicksan
1
Dzięki za to. również w wersji 10.1 Raster Shader ( blogs.esri.com/esri/apl/2013/05/02/... ) zapewnia znacznie lepszą kontrolę nad wyświetlaniem rastra i pozwala tworzyć ładne odcienie wzgórz.
SoilSciGuy
4

Kiedy mówisz w punkcie 2 „czy mogę stworzyć swój efekt, tworząc warstwę Hillshade (bez użycia Spatial Analyst)”, czy masz na myśli alternatywne aplikacje do tworzenia Hillshade?

Jeśli chcesz korzystać z aplikacji spoza programu Spatial Analyst, niedawno dowiedziałem się (ale nigdy nie użyłem) „ SEXTANTE dla rozszerzenia ArcGIS ” ( bezpłatny ), który pozwala użytkownikom korzystać z narzędzi SEXTANTE w ArcMap. Jeśli obejrzysz ten film wideo , zobaczysz, że demonstrują sposoby na stworzenie cienia wzgórza.

RyanKDalton
źródło
Nie bardzo - chcę po prostu zastosować własne techniki cieniowania bez użycia ESRI. Dodałem dodatkowe komentarze w moim wpisie otwierającym.
Vidar
4

Zawsze byłem instruowany, aby zwiększać przesadę podczas robienia wzgórza.
Właśnie próbowałem 100 na mojej i wydaje się to trochę ekstremalne.
Również zmiana rodzaju naciągu robi dużą różnicę w wyglądzie cienia wzgórza.
Ponieważ mówisz o tym, jak to wygląda, możesz również spojrzeć na ten element pomocy. esir help
Który mówi, że cienie wzgórza są stosowane przy rozdzielczości pikseli wyświetlacza.
I do zmiany kąta oświetlenia
Esri pomoc
Zmienia również kierunek i kontrast

Brad Nesom
źródło