Odpowiedzi:
Zwykle mamy dane dotyczące tego, gdzie jest grunt , więc musimy to wykorzystać. Ziemia określa bryłę w 3D. Rzutujesz tę figurę promieniowo na kulę jednostkową wyśrodkowaną na widzu: mapuje to ziemię na region w kuli. Oblicz obszar pozostałego regionu: jest to stały kąt zachodzący przez niebo (w steradianach ). Podziel go przez całkowity obszar kuli (równy 4 pi) i pomnóż przez 100, aby uzyskać procent nieba.
Jeśli wolisz bardziej żywe wytłumaczenie, umieść widza w centrum małej kulistej bańki i poproś ją, aby pomalowała niebo. Podziel ilość użytej farby przez ilość potrzebną do pomalowania całego bąbelka i pomnóż przez 100.
W rzeczywistości istnieją pewne niezbyt proste szczegóły techniczne.
Rzutowanie na kulę jest dość proste, gdy ziemia jest podana jako sieć triangulowana (TIN), ponieważ wystarczy napisać kod, aby rzutować trójkąt na kulę. Gdy podłoże jest podane jako model rzędnej siatki (DEM), możesz wyobrazić sobie każdą komórkę siatki jako czworobok 3D. Możesz podzielić to na dwa trójkąty wzdłuż przekątnej i zamapować każdy trójkąt na kuli. W obu przypadkach pozostaje Ci kolekcja rzutowanych trójkątów na kuli. Poprzez rzutowanie kuli na mapę (np. Za pomocą projekcji stereograficznej) agregacja tych trójkątów w region wielokąta może zostać zredukowana do standardowego problemu płaskiej geometrii obliczeniowej (na przykład przy użyciu metody przeciągnięcia po płaszczyźnie). Reszta jest łatwa (dla GIS).
Zdjęcie to pokazuje małe miasto symulowanych drapaczy chmur w gnomonicznej projekcji z widokiem na centrum widza patrząc prosto w górę. GIS może „scalić” (uformować) wielokąty reprezentujące boki i dachy tych budynków, a następnie obliczyć pozostałą (białą) przestrzeń. Wybrano rzut gnomonowy, ponieważ proste linie architektoniczne są renderowane raczej jako odcinki linii niż krzywe.
GIS może zostać oddany do użytku, aby wykonać te obliczenia, gdy masz tylko ziemię i budynki. Budynki są najprawdopodobniej dostępne jako zbiory prostokątów. Wierzchołek prostokąta ma współrzędne euklidesowe (x, y, z) w stosunku do przeglądarki. Przekształć je we współrzędne sferyczne: szerokość i długość geograficzną. Utwórz wielokąt dla przekształconego prostokąta. Zrób to dla wszystkich prostokątów dla wszystkich części wszystkich budynków, w wyniku czego powstanie „warstwa cech wielokąta”. Następnie w GIS (1) obliczyć zespolony zbiór teoretyczny cech, (2) obliczyć wynikowy obszar, (3) odjąć to od połowy powierzchni ziemi (druga połowa dotyczy ziemi), i (4) podzielić przez cały obszar ziemi (pomnożenie przez 100, aby uzyskać procent). Wysiłek obliczeniowy jest proporcjonalny do N * log (N), gdzie N jest liczbą wierzchołków. Dokładność zależy od tego, jak dobrze GIS reprezentuje prostokąty (może być konieczne rozbicie boków prostokąta na sekwencje bliżej rozmieszczonych wierzchołków). W zależności od wymagań dotyczących dokładności możesz rozważyć podejście oparte na Monte-Carlo (np . promienie śledzenia promowane w innej odpowiedzi), gdy masz więcej niż kilkaset tysięcy wierzchołków - to znaczy, gdy widz jest całkowicie otoczony (i widzi części) dziesiątki tysięcy budynków :-).
Oto odpowiedź, która pochodzi ze świata grafiki komputerowej, a nie GIS - stąd jest to opis algorytmu, a nie instrukcje, których narzędzi należy użyć.
Definicja: promień jest początkiem + kierunkiem; jest to linia, która zaczyna się od początku i kontynuuje do nieskończoności wzdłuż tego kierunku.
Potrzebujesz następujących podstawowych składników:
Możliwość sprawdzenia, czy dany promień uderza o ziemię.
Możliwość sprawdzenia, czy dany promień uderza w budynek.
Wszystkie twoje dane (budynki, informacje reprezentujące ziemię) w kartezjańskiej przestrzeni współrzędnych 3D.
Dokładne wzory do wdrożenia w testach promieniowych zależą od tego, jak reprezentujesz „ziemię” (idealna kula? Teren?) I „budynek” (wytłoczony prostokąt? Pełny model 3D?). W przypadku prostej geometrii są łatwe do znalezienia i łatwe do wdrożenia. (np. wyszukaj „przecięcie kostki promieni”).
W każdym razie odpowiedź na pytanie o% widoczności nieba z punktu jest banalna: odpal wiele promieni losowymi kierunkami z punktu zapytania. Proporcja nieba widoczna z twojego punktu testowego jest równa liczbie promieni, które nie uderzyły w budynek lub ziemię.
Odpowiedź nie jest dokładna, ale można ją obliczyć do dowolnego pożądanego poziomu precyzji, po prostu dodając więcej promieni.
Jak opisano powyżej, niekoniecznie jest to bardzo szybkie; ale istnieje wiele dobrze udokumentowanych optymalizacji, które można zastosować.
(Oczekiwałbym, że do obliczenia widoczności nieba w wielu punktach i tym samym zestawie danych budynków, takie podejście wysadziłoby podejścia oparte na reprojectionie z wody po dodaniu prostego indeksu przestrzennego.)
Współczynnik widoku nieba (SVF) jest definiowany przez część widzialnego nieba (Ω) powyżej pewnego punktu obserwacyjnego widzianego z dwuwymiarowej reprezentacji (patrz rysunek a). Algorytm oblicza pionowy kąt elewacji horyzontu γi w kierunkach n (osiem tutaj jest pokazanych) do określonego promienia R (b).
Aby wyeliminować wady istniejących technik wizualizacji, na przykład problemy z kierunkowym oświetleniem w analitycznym cieniowaniu wzgórza, zaproponowano współczynnik widoku nieba.
Najwygodniejszym sposobem wyrażenia części widocznego nieba jest kąt bryłowy Ω. Jest to miara tego, jak duży obiekt wydaje się obserwatorowi. Kąt bryłowy obiektu jest proporcjonalny do obszaru A rzutu obiektu na kulę jedności wyśrodkowaną w punkcie obserwacyjnym.
SVF mieści się w zakresie od 0 do 1. Wartości bliskie 1 oznaczają, że widoczna jest prawie cała półkula, co ma miejsce w przypadku elementów odsłoniętych (płaszczyzn i szczytów), podczas gdy wartości bliskie 0 są obecne w głębokich zlewach i dolnych częściach głębokich dolin z gdzie prawie nie widać nieba. SVF jest wielkością fizyczną (jeśli nie manipulujemy danymi wysokości przez przesadę pionową).
Jak wskazał @mic_cord, w Remote Sens. 2011, 3 (2), 398-415 opublikowano artykuł na temat wizualizacji danych za pomocą SVF. doi: 10.3390 / rs3020398.
Bezpłatne narzędzie do obliczania SVF (i więcej) jest dostępne pod adresem http://iaps.zrc-sazu.si/en/rvt#v
Umożliwia to Ecotect (obecnie narzędzie AutoDesk ). Mówiąc bardziej ogólnie, jest to często badane w obszarze światła dziennego, a narzędzie z tego pola może być łatwiejsze w użyciu niż GIS. (Chociaż słyszałem o wtyczce GIS, która może to zrobić i obliczyć ekspozycję słoneczną, ale nigdy nie udało mi się jej znaleźć).
W GRASS GIS w wersji 7 (właściwie niestabilnej) znajduje się polecenie r.skyview (oparte na poleceniu r.horizon , dostępne również w stabilnej wersji GRASS v.6).
Odczytuje obraz rastrowy reprezentujący model terenu, z wartością piksela odpowiadającą wysokościom elementów terenu (np. Wysokości budynków) i oblicza dla każdego piksela „współczynnik widoku nieba”.
Najpierw musisz przekonwertować swoje dane (nieznany format) na zestaw danych rastrowych.
Widzieć:
http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html