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!
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):
Kiedy to zrobisz - wygląda to rozczarowująco:
Zwłaszcza, jeśli powiększysz raster, zobaczysz wszelkiego rodzaju siatkowe artefakty - co wcale nie wygląda ładnie!
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 !:
- 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.
- 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ć?