Cesium數據可視化-倉儲調度系統可視化部分
目的
倉儲調度系統需要一個可視化展示物資運輸實況的界面,需要配合GPS設備發送的位置信息,實時繪制物資運輸情況和倉儲倉庫。因此,使用Cesium可視化該數據。
說明
這只是開發過程中的原型系統。
原理簡介
點,線,圖片的繪制就不細說了。
動態點繪制是利用Entity的position屬性可以制定某時間點的出現位置,形成動畫效果。
核心代碼如下:
/** * 計算 property * @param source * @returns {SampledPositionProperty|*} */ function computeFlight(source) { // 取樣位置 相當於一個集合 var property = new Cesium.SampledPositionProperty(); property.setInterpolationOptions({ interpolationAlgorithm: Cesium.LagrangePolynomialApproximation, interpolationDegree: 2 }); for (var i = 0; i < source.length; i++) { var time = Cesium.JulianDate.addSeconds(start, source[i].time, new Cesium.JulianDate); var position = Cesium.Cartesian3.fromDegrees(source[i].longitude, source[i].dimension, source[i].height); // 添加位置,和時間對應 property.addSample(time, position); } return property; } // 動態點 viewer.entities.add({ position: property, name: "復興號", description: "運載量:100t", path: { show: true, leadTime: 0, trailTime: 10, width: 5, resolution: 5, material: new Cesium.PolylineOutlineMaterialProperty({ color: Cesium.Color.fromAlpha(Cesium.Color.RED, 1), outlineWidth: 1, outlineColor: Cesium.Color.red }) }, availability: new Cesium.TimeIntervalCollection([new Cesium.TimeInterval({ start: Cesium.JulianDate.addSeconds(start, data[j][0].time, new Cesium.JulianDate), stop: Cesium.JulianDate.addSeconds(start, data[j][data[j].length - 1].time, new Cesium.JulianDate), isStartIncluded: true, isStopIncluded: false, data: Cesium.Cartesian3.fromDegrees(110, 39) })] ) });
具體詳情讀源碼即可
更多詳情見下面鏈接文章:
GIS之家小專欄此文章:Cesium數據可視化-倉儲調度系統可視化部分(附源碼下載)
文章提供源碼,對本專欄感興趣的話,可以關注一波