日照分析工具功能模組API開發教學
[info] 小提示:
程式碼連結:https://doc-3dgdp.colife.org.tw/samplecode/#src/testweb/solar_analysis/
SolarAnalysisModule
日照模組能夠計算指定地上與時間範圍內的日照或陰影遮蔽時間比例。
功能說明
- 計算日照時間比例
- 計算陰影遮蔽時間比例
使用日照模組
指定時間與範圍
要使用日照模組,需要先設定分析的時間與範圍。
兩者皆設定後會直接繪製分析結果,需要清除時可以將範圍設為null
。
// 從 TerrainView 參考上取得日照模組
const solar = terrainview.getModule("solarAnalysis");
// 建立日期
const from = new Date("2023-11-01T09:00");
const to = new Date("2023-11-01T17:00");
// 建立範圍
const boundary = new GeoBoundary({
bottom: 24.809,
left: 121.02,
right: 121.025,
top: 24.81,
});
solar.setTime(from, to); // 設定時間
solar.setBoundary(boundary); // 設定範圍
範圍設定也可以使用 GeoPolygon
或 GeoPolygonSet
有需要的話可以用 ov.TerrainView.inputSurfacePolygon()
或
ov.TerrainView.inputSurfaceRectangle()
來取得使用者輸入的範圍
除了平面範圍外,也可以設定要分析的高度範圍
const solar = terrainview.getModule("solarAnalysis");
// 從海拔 10m 開始
const startHeight = 10;
// 高度設定為 100m
const height = 100;
// 設定高度範圍為 10m~110m
solar.setBoundary(boundary, height, startHeight);
設定顏色
分析結果的顏色可以透過 ov.SolarModule.setColorStops()
設定,沒有進行設定時會顯示預設的顏色。顏色支援透明度。
分析結果的時間越長,繪製的顏色越接近 1.0
位置的色標。
const solar = terrainview.getModule("solarAnalysis");
// 設定顏色
solar.setColorStops([
{ position: 0.0, color: new ov.Color("#2b79bab3") },
{ position: 0.25, color: new ov.Color("#abdda4b3") },
{ position: 0.5, color: new ov.Color("#ffffbfb3") },
{ position: 0.75, color: new ov.Color("#fdae61b3") },
{ position: 1.0, color: new ov.Color("#d7191cb3") },
]);
指定分析模式
日照模組的分析模式分為日照分析與陰影分析兩種。
- 在日照分析模式下,計算各區域在一段時間內被日光照射的時間長度比例。
- 在陰影分析模式下,計算各區域在一段時間內被陰影遮蔽的時間長度比例。
分析模式可以透過 ov.SolarModule.mode
取得與設定。
const solar = terrainview.getModule("solarAnalysis");
// 設定模式
solar.mode = ov.SOLAR_ANALYSIS_MODE.LIGHT; // 設定為日照分析
solar.mode = ov.SOLAR_ANALYSIS_MODE.SHADOW; // 設定為陰影分析
// 取得模式
const isLightMode = solar.mode === ov.SOLAR_ANALYSIS_MODE.LIGHT;