[OpenLayers] 태양위치에 따른 지형 그림자 시뮬레이션
직사광선 맵 (direct sunlight maps)
DEM 타일맵 데이터를 OpenLayers image raster rendering으로 일자별 태양위치(방위각/고도각)과
음영기복도분석(셀별 고도/경사/향 계산)에 이어 지형의 그림자를 분석하는 예제입니다.
이로써 기본적인 2D상에서의 분석 4가지 셋트가 완료되었습니다.
* 아래 기능별 사용방법은 유튜브 동영상을 참조하세요. (구독자등록해주시면 더좋아요^^)
https://www.youtube.com/srhong007/
* 간단한 데모: http://www.gisapplication.kr/FGISPRO_SunCalcShadow/FGIS/
음영+그림자분석 : http://www.gisapplication.kr/FGISPRO_SunCalcALL/FGIS/
* 데모버젼 : "FirstGIS/Professional 2020"
(위 링크를 PC용[IE에서는 흑백모드버튼 제거됨]이고, 모바일에서 실행하셔야 모바일용 UI모드로 실행합니다.
단, 모바일 기종에 따라 WebGL 사용한 함수지원여부로 브이월드3D가 구동 안될수도있습니다)
- 3D로 그림자/일조량 분석 시뮬레이션은 보기가 좋고 멋있어보입니다. 2D보다...
그러나 전체적으로 분석하고자한다면 2D도 유용합니다
- 음영기복도를 분석하려면, 대상지의 위치(위경도 좌표)와 날짜/시간 대별 태양의 위치(고도각/방위각)이 필요합니다.
시뮬레이션을 보여주기위해 지도상의 음영 주제도처리와 타임테이블이 필요합니다.
그리고 지속적으로 고민하던 산과 지형에 대한 그림자를 추가하는 것이였습니다.
간단히 현재의 픽셀의 높이와 태양의 고도/방위각으로 그림자가 질 위치의 픽셀 위치의 고도를 구한후,
현재 고도보다 낮을 경우 그림자를 표출합니다
(주요소스는 업데이트를 위해 원문에만 게시하였습니다 https://cafe.naver.com/gisapplication/1062)
- 소스중에는 QGIS로 만든 TMS(XYZ타일) 레이어와 WMTS로 해본 소스가 있습니다.
GeoServer의 WMTS 타일캐시 생성시 간격이 떨어지거나 빈 타일이 생성되는 등 별로 좋지않았습니다.
* 간단한 원리
단순히 분석목표인 산의 높이에서 태양 고도각으로 그림자 길이를 구해, 태양의 방위각으로 좌표를 구해 그림자를
생성하는것으 아닙니다. 소스에서 보시듯 코멘트로 보충설명이 없으니 간단히 원리를 말씀드리겠습니다.
목표지형의 높이와 태양의 고도각으로 해수면 까지의 가상의 지점으로 그림자 길이를 구합니다.
가상의 위치부터 최대 그림자 길이를 한 픽셀셀씩 실제 대상지의 높이를 구해 그림자가 닿을 좌표를
찾는것으로 사용한 등고선은 5m 간격이므로 표준차가 ±5이하일것이고 줌스케일에 따른 해상도 차이로 오차가
생길것으로 생각됩니다..(수도권은 1*1m DEM, 나머진 10*10m이므로 해상도에 따라 정밀도가 부여됨)
IE등은 표출도 계산도 느립니다 Chrome을 권장합니다.
* 그림자분석의 주요소스는 업데이트를 위해 원문에만 게시하였습니다 https://cafe.naver.com/gisapplication/1062
위 4가지는 각각의 게시글에 주요소스가 있습니다. (통본은 공유기간에 따라 첨부파일이 있습니다)
function
|
//-------------------------------------------------------------------------------//
*건물의 구성이 세분화되었을경우 2.5D표현과 그림자 분석화면
* 음영 및 표고/경사/향 분석에 대한 시뮬레이션이 아닌 수치분석의 예
응영분석: 음영기복도로 5단계 구분하여 셀단위 분석과 평균 음영 단계를 표출, 용도에 맞는 가중치 제공
음영기복도는 식생조사시 시용한 동지(12월)을 기준으로 Azimuth(방위) 230, Altitude(고도) 10 으로 분석하였습니다.
지형적인 사업대상지의 음영기복을 판단하여, 대상지의 평균가치와 세부적인 음영도를 참조하여 시설물 위치 등
설계시 유용하다. 위 셀단위 일자별 음영분석도 대상지의 포함셀만 계산하여 아래결과를 도출할수도 있다.