답변:
우리는 일반적으로 근거 가 어디에 있는지에 대한 데이터 를 가지고 있으므로이를 사용해야합니다. 지면은 3D로 견고한 수치를 결정합니다. 이 그림을 뷰어 중심의 단위 구에 방사형으로 투영하면 구의 영역에지면이 매핑됩니다. 남은 영역 의 면적을 계산합니다 . 즉 하늘이 차지하는 입체각 ( 스테 라디안 )입니다. 구의 총 면적 (4pi와 동일)으로 나누고 100을 곱하여 하늘의 백분율을 구하십시오.
보다 생생한 설명을 원한다면 시청자를 작은 구형 버블의 중앙에 놓고 하늘 위로 페인트 칠하도록 요청하십시오. 그녀가 사용하는 페인트의 양을 전체 거품을 칠하는 데 필요한 양으로 나누고 100을 곱하십시오.
실제로는 간단하지 않은 기술적 인 세부 사항이 있습니다.
지면이 삼각 망 (TIN)으로 주어지면 구에 투영하는 것은 매우 간단합니다. 구에 삼각형을 투영하는 코드 만 작성하면되기 때문입니다. 지면이 그리드 입면 모델 (DEM)로 제공되면 각 그리드 셀을 3D 사변형으로 생각할 수 있습니다. 대각선을 따라 두 개의 삼각형으로 나누고 각 삼각형을 구에 매핑 할 수 있습니다. 두 경우 모두 구에 투영 된 삼각형 모음이 남아 있습니다. 구를지도에 투영함으로써 (예를 들어, 입체 투영법으로) 이러한 삼각형의 다각형 영역으로의 집합은 (예를 들어 평면 스위프 방법을 사용하여) 평면 계산 기하학의 표준 문제로 감소 될 수있다. 나머지는 쉽습니다 (GIS의 경우).
이 이미지는 똑바로보고있는 시청자 중심의 중심 투영법으로 시뮬레이션 된 마천루의 작은 도시를 보여줍니다. GIS는 이러한 건물의 측면과 지붕을 나타내는 다각형을 "병합 (결합)"하여 남은 공간 (흰색)을 계산할 수 있습니다. 직선 건축 선이 곡선이 아닌 선 세그먼트로 렌더링되므로 Gnomonic 투영이 선택되었습니다.
지상과 건물 만있는 경우이 계산을 수행하기 위해 GIS를 사용할 수 있습니다. 건물은 사각형 모음으로 사용 가능합니다. 사각형의 꼭짓점은 뷰어를 기준으로 유클리드 좌표 (x, y, z)를 갖습니다. 그것들을 구면 좌표, 즉 위도와 경도로 변환하십시오. 변환 된 사각형의 다각형을 만듭니다. 모든 건물의 모든 부분에 대해 모든 사각형에 대해이 작업을 수행하면 "다각형 피처 레이어"가 생성됩니다. 그런 다음 GIS에서 (1) 지형지 물의 집합 이론적 합집합을 계산하고 (2) 결과 면적을 계산합니다. (3) 지구 표면적의 절반에서 이것을 빼고 (다른 절반은지면을위한) (4) 지구 전체 면적으로 나누기 (100을 곱하여 백분율을 얻음). 계산 노력은 N * log (N)에 비례합니다. 여기서 N은 꼭짓점의 수입니다. 정확도는 GIS가 사각형을 얼마나 잘 나타내는 지에 따라 달라집니다 (사각형면을보다 밀접한 정점의 시퀀스로 나누어야 할 수도 있음). 정확성 요구 사항에 따라 Monte-Carlo 기반 접근 방식 (예를 들어, 수십만 개 이상의 정점이 있으면, 즉 시청자가 수만 개의 건물로 완전히 둘러싸여 있고 (일부 부분을 볼 수있는 경우 :-)) 다른 응답으로 옹호하는 광선 추적.
다음은 GIS가 아닌 컴퓨터 그래픽 세계에서 오는 대답입니다. 따라서 사용하는 도구에 대한 지침이 아니라 알고리즘에 대한 설명입니다.
정의 : 광선은 원점 + 방향입니다. 원점에서 시작하여 해당 방향을 따라 무한대로 계속되는 선입니다.
다음과 같은 기본 성분이 필요합니다.
주어진 광선이지면에 닿는 지 테스트하는 기능.
주어진 광선이 건물에 닿는 지 테스트하는 기능.
3D 직교 좌표 공간의 모든 데이터 (건물,지면을 나타내는 정보)
광선 테스트를 위해 구현할 정확한 공식은 "지상"(완벽한 구? 지형?)과 "건물"(압출 된 사각형? 완전한 3D 모델?)을 나타내는 방법에 따라 다릅니다. 단순한 지오메트리를 위해 쉽게 찾고 구현할 수 있습니다. (예 : "레이 큐브 교차로"검색).
어쨌든, 포인트에서 하늘 가시성의 %에 대한 대답은 사소합니다. 쿼리 지점에서 임의의 방향으로 많은 광선을 발사하십시오. 테스트 지점에서 보이는 하늘의 비율은 건물이나 지상에 닿지 않은 광선의 수와 같습니다 .
정답은 정확하지 않지만 더 많은 광선을 추가하여 원하는 수준의 정밀도로 계산할 수 있습니다.
위에서 설명한 것처럼 반드시 빠를 필요는 없습니다. 그러나 당신이 적용 할 수있는 잘 문서화 된 최적화가 많이 있습니다.
(나는 여러 지점과 동일한 건물 데이터 세트에서 하늘 가시성을 계산하기 위해 간단한 공간 지수를 추가 한 후 재 투영 기반 접근법을 물 밖으로 날려 버릴 것으로 예상합니다.)
스카이뷰 계수 (SVF)는 2 차원 표현에서 볼 때 특정 관측점 위의 가시적 하늘 (Ω) 부분으로 정의됩니다 (그림 a 참조). 알고리즘은 지정된 반경 R (b)에 대한 수평선 (γi)의 n (여기서는 8 개) 방향의 수직 앙각을 계산합니다.
스카이 뷰 팩터는 기존의 시각화 기술의 단점, 예를 들어 분석 언덕 음영의 방향 조명 문제를 극복하기 위해 제안되었습니다.
가시적 인 하늘 부분을 표현하는 가장 편리한 방법은 입체각 Ω입니다. 이것은 물체가 관찰자에게 얼마나 큰지를 나타내는 척도입니다. 물체의 솔리드 각도는 관측점을 중심으로 한 단일 구체에 대한 물체 투영 영역 A에 비례합니다.
SVF의 범위는 0과 1 사이입니다. 1에 가까울수록 거의 전체 반구가 보이고, 이는 노출 된 피처 (평면과 피크)에서 볼 수 있으며 0에 가까운 값은 깊은 싱크대와 깊은 계곡의 아래쪽에 있습니다. 하늘이 거의 보이지 않는 곳. SVF는 물리량입니다 (수직 과장으로 고도 데이터를 조작하지 않는 경우).
@mic_cord가 지적한 것처럼 Remote Sens에서 SVF를 사용한 데이터 시각화에 관한 논문이 발표되었습니다. 2011, 3 (2), 398-415; doi : 10.3390 / rs3020398.
SVF (및 그 이상)를 계산하기위한 무료 도구는 http://iaps.zrc-sazu.si/en/rvt#v 에서 제공됩니다.
Ecotect (현재 AutoDesk 도구 )를 사용하면이 작업을 수행 할 수 있습니다. 일반적으로 이는 일광 영역에서 자주 검사되며이 필드의 도구는 GIS보다 사용하기 쉽습니다. (하지만이 작업을 수행하고 태양 노출을 계산할 수있는 GIS 플러그인에 대해 들어 보았지만 찾지 못했습니다.)
GRASS GIS 버전 7 (실제로 안정적이지 않음)에는 r.skyview 명령이 있습니다 ( 안정적인 GRASS v.6에서도 사용 가능한 r.horizon 명령을 기반으로 함 ).
지형 지형 높이 (예 : 건물 높이)에 해당하는 픽셀 값으로 지형 모델을 나타내는 래스터 이미지를 읽고 각 픽셀에 대해 "skyview factor"를 계산합니다.
먼저 데이터 (알 수없는 형식)를 래스터 데이터 세트로 변환해야합니다.
보다:
http://grass.osgeo.org/grass70/manuals/addons/r.skyview.html