Dostaję eleganckie przezroczyste odcienie wzgórza dzięki kombinacji gdal
i convert
. W porównaniu do powszechnie stosowanych odcieni wzgórz opartych na szarości, takie przezroczyste odcienie wzgórz są bardzo fajne, ponieważ można je umieścić między tłem mapy a innymi górnymi warstwami (drogi, buiding), aby zapewnić wrażenie 3D niezależnie od typu i koloru tła.
Jak to działa
Sztuczka: Zaczynając od wytworzonego przez Greya cienia wzgórza gdal hillshade
, sztuczka polega na pobraniu wartości kanału szarego, odwróceniu każdej wartości i przeniesieniu tego wyniku do nowego kanału krycia. Czarny piksel [0,0,0] staje się [0,0,0,255] (krycie = 255), szary piksel [120,120,120] staje się niższy staje się [120,120,120,135] (krycie = 135, alias 255-120), biały piksel [255,255,255] stają się przezroczyste [255,255,255,0] (krycie = 0, alias 255-255) i tak dalej. Odcienie wzgórz są nieprzezroczyste i czarne , równiny stopniowo stają się (białe) przezroczyste . Koncepcyjnie równanie pasma piksela jest takie:
alpha_value([0]) = 255-0 = 255; // black pixels get full opacity
alpha_value([Grey]) = 255-Grey;
// grey pixels get 255-GreyValue opacity.
alpha_value([255]) = 255-255 = 0 // white pixels get null opacity !
Aby uzyskać wyluzowane wideo na temat tego podejścia, wyjaśnione przez projektanta Photoshopa, zobacz Dodawanie zacieniowanej ulgi w Photoshopie (16 minut).
Pytanie
Biorąc ETOPO lub SRTM pochodzi hillshade szary (opartego gdaldem hillshade crop_xl.tmp.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
, plik można pobrać tutaj ) jako wejście ...
... Jak wykonać sztuczkę cytowaną przez gdal lub w inny nieniszczący dla GIS sposób na takich plikach .tif?
Pamiętaj, że chcę zachować właściwości GIS (geolokalizacja).
gdaldem hillshade etopo_crop.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
gdal_tranlate
z kombinacji -b zespołu , maskowanego zespołu , -expand szarego | rgb | RGBA razem witht formułaopacity=-(px_grey_value)+255
może być droga, ale nigdy nie dotknął zespoły i I'am wciąż zupełnie nieświadomi.Odpowiedzi:
Łupina od orzecha
Każdy zestaw 3 zdjęć poniżej powinien zostać odczytany, np. „Szary (pasmo) + krycie (pasmo) = wynik przezroczysty” . Możesz przetestować te procesy w ciągu kilku minut za pomocą powiązanego pliku makefile obsługiwanego przez github . Proces nr 3 to ten, który zalecam, z progiem między 170 (utrzymuje silne cienie) a 220 (utrzymuje wszystkie cienie). Proces 3 zapewnia najsilniejsze cienie i pozwala uniknąć efektu szarości i wybielenia. W razie potrzeby dostosuj ogólną nieprzezroczystość warstwy. Równania w
--calc="<equation>"
można również poprawić w razie potrzeby, używającgdal_calc
.Aby uzyskać wyluzowane wideo na temat tego podejścia, wyjaśnione przez projektanta Photoshopa, zobacz Dodawanie zacieniowanej ulgi w Photoshopie (16 minut).
tło
gdaldem hillshade
tworzy jednopasmowy plik w skali szarości z zakresem wartości pikseli = [1-255], czyli od najciemniejszych cieni do najbardziej oświeconych pikseli. W przypadku płaskich obszarów px = 221 (#DDDDDD).NoDataValue
piksele otrzymują domyślną wartość dodatnią0
, również najciemniejsza czerń na wejściu i wyjściu jest i powinna być1
. Bez zdefiniowanego pasma krycia krycie wynosi 100% .Chcemy zdefiniować i kontrolować 2. pasmo krycia!
Cele
Chcemy jednego zespołu w skali szarości
-b 1
, to cień. Poza gdalem jest to szary pas z ciągłym zakresem, np. Px = [1-255]. Możemy wykadrować niepowiązane obszary (# 2) lub przyciemnić go do px = 1 i polegać na pasie krycia (# 3).Chcemy jednego pasma krycia
-b 2
, ogólnie odwrócenia cienia wzgórza lub pokrewnej funkcji tego. Możemy wykadrować nieistotne obszary (# 2). Musi to być ciągły zakres nieprzezroczystości, np. Px = [1-255], w przeciwnym razie nie ma elegancji.gdal_calc
może być użyty zarówno do wykonywania obliczeń matematycznych na pikselach z plików wejściowych A, B, C ... i sprawdzania wartości logicznych, takich jakA<220
, która zwraca 1 (prawda) lub 0 (fałsz). Pozwala to na rachunek warunkowy. Jeśli warunek jest fałszywy, powiązana część równania zostaje unieważniona.1. Szary klosz wzgórza przezroczysty
Poniżej przedstawiono bardzo dobre wyniki dwóch pasm ze standardowymi
gdal hillshade
szarościami i bielszymi obszarami, które stają się coraz bardziej przejrzyste:2. Optymalizacja za pomocą pseudo-uprawy (-b 1 i -b 2)
2/3 pikseli na
-b 1
(skala szarości) staje się niewidoczna gołym okiem po-b 2
dodaniu krycia , ale piksele te zachowują różne bielsze-b 1
i niskie-b 2
wartości krycia . Mogą być wykonane wszystkie białe przezroczyste[255,1]
piksele, co pozwala na lepszy współczynnik kompresji:3. Dalsza optymalizacja -b 1 (przycięcie + czernienie)
Ponieważ mamy do czynienia z progresywnym pasmem krycia
-b 2
, możemy stworzyć-b 1
piksele białe px = 255 przez255*(A>220)
lub czarne px = 1 przez1*(A>220)
.Ten wynik pokazuje silniejsze cienie .
Wynik
Utworzenie przezroczystego cienia wzgórza ma na celu natychmiastowe usunięcie wcześniejszych szarych obszarów równiny i związanego z tym niepożądanego, ale wszechobecnego efektu blaknięcia szarości. Pożądany produkt uboczny to większa kontrola nad końcowym produktem wizualnym. Opisany proces usuwa większość szarych i wszystkich białych pikseli. Kolorowy zwykły obraz tła zachowa wybrane kolory, gdy zostanie nałożony przez przezroczyste do czarnych odcienie wzgórza, tylko zaciemnione obszary zostaną zaciemnione. Porównanie procesu nr 2 (po lewej) i nr 3 (po prawej) poniżej.
Przegląd :
Powiększ, zwróć uwagę na cienie (przed vs po):
Dalsze optymalizacje
Białe obszary : Można również chcieć zachować najbardziej oświecone obszary, aby zwiększyć wrażenie 3D. Byłoby to dosłownie symetryczne tego obecnego podejścia z niewielkimi zmianami progów, a następnie scaleniem obu wyjść przez gdal_calc. Równina byłaby w 100% przezroczysta, a najciemniejsze cienie i najjaśniejsze obszary światła byłyby nieprzezroczyste.
Wygładzanie: Cieniowanie wejściowe może być wstępnie wygładzone, aby uzyskać lepszy efekt końcowy, patrz Wygładzanie DEM za pomocą GRASS?
Composite Hillshade ( Jak stworzyć kompozytowy shadows? ).
Ciekawy jest również zderzający się cień ( opis )
Notatki
gdal hillshade
produkcji jest px = 221 (#DDDDDD = [221221221]), znakowanie powierzchni płaskich. Ponadto piksel cienia wzgórza = 221 dzieli obrazy między nachylonymi w cieniu zboczami (A <221) i jasnymi zboczami (A> 221) pikseli.źródło
Innym sposobem na uzyskanie tego samego rezultatu nieszarego płótna bardziej odpowiedniego do łączenia z innymi warstwami jest opcja „połączona” w gdaldem.
Wykonuje nachylenie i cień i łączy oba w jednej operacji. Obszary o nachyleniu 0 są białe. Obszary o nachyleniu 90 stopni są czarne dla odcienia nachylenia, z pewnym oświetleniem dodanym przez warstwę cienia wzgórza.
gdaldem hillshade -combined -compute_edges infile outfile.tif
Następnie użyj trybu łączenia wielu warstw, aby „udrapować” to na innych warstwach.
Cieniowanie standardowe / połączone
Połączone cieniowanie pomnożone przez warstwę bazową OSM (krycie około 50%)
źródło
gdal
+convert
oparty na przepływie pracyIstnieje rozwiązanie
gdal
+convert
, które daje dobre efekty wizualne. Problem z tym rozwiązaniem polega na tym, żeconvert
niszczy informacje geograficzne, które następnie trzeba przywrócić. Zwiększa liczbę akcji do uruchomienia.Aby uzyskać wyjaśnienie dotyczące polecenia 4, zobacz: https://stackoverflow.com/a/23018544/1974961
źródło