在cesium中實現熱力圖
剛開始接觸cesium,說實話,對於像我這類的小白來說,要想快速上手,確實有一定的難度,但是站在巨人的肩膀上,往往總會少走很多彎路。
原理:使用heatmap.js外掛,先生成一個熱力圖,再在地圖上建立一個盒子(如矩形),以紋理的形式把熱力圖填充到矩形中。
1、首先下載heatmap.js外掛,自己隨意寫了一個熱力圖的方法,傳入熱力圖所需引數max和data
// 建立熱力圖 function createHeatMap(max, data) { // 建立元素 var heatDoc = document.createElement("div"); heatDoc.setAttribute("style", "width:1000px;height:1000px;margin: 0px;display: none;"); document.body.appendChild(heatDoc); // 建立熱力圖物件 var heatmap = h337.create({ container: heatDoc, radius: 20, maxOpacity: .5, minOpacity: 0, blur: .75, gradient: { '0.9':'red', '0.8':'orange', '0.7':'yellow', '0.5':'blue', '0.3':'green', }, }); // 新增資料 heatmap.setData({ max: max, data: data }); return heatmap; }
2、建立一個cesium檢視物件
var viewer = new Cesium.Viewer("viewer");
3、在之前建的cesium檢視中,建立一個矩形(也可是橢圓、正方形、多邊形等),在矩形內以紋理的形式填充,自己隨意封裝了一個方法
// 建立正方形 繫結熱力圖 function createRectangle(viewer, coordinate, heatMap) { viewer.entities.add({ name: 'Rotating rectangle with rotating texture coordinate', show: true, rectangle: { coordinates: Cesium.Rectangle.fromDegrees(coordinate[0], coordinate[1], coordinate[2], coordinate[3]), material: heatMap._renderer.canvas // 核心語句,填充熱力圖 } }); }
4、隨意生成多個點資料
// 生成len個隨機資料 function getData(len) { //構建一些隨機資料點 var points = []; var max = 0; var width = 1000; var height = 1000; while (len--) { var val = Math.floor(Math.random() * 1000); max = Math.max(max, val); var point = { x: Math.floor(Math.random() * width), y: Math.floor(Math.random() * height), value: val }; points.push(point); } return {max: max, data: points} }
5、使用上述方法,則生成熱力圖
// 第一個熱力圖 var coordinate1 = [-109.0, 10.0, -80.0, 35.0]; var heatMap1 = createHeatMap(getData(1000).max, getData(1000).data); creatRectangle(viewer, coordinate1, heatMap1); // 第二個熱力圖 var coordinate2 = [-109.0, 30.0, -80.0, 41.0]; var heatMap2 = createHeatMap(getData(3000).max, getData(3000).data); creatRectangle(viewer, coordinate2, heatMap2); // 第三個熱力圖 var coordinate3 = [-109.0, 41.0, -80.0, 50.0]; var heatMap3 = createHeatMap(getData(5000).max, getData(5000).data); creatRectangle(viewer, coordinate3, heatMap3);
6、效果如下,因為資料都是隨意新增的,所以效果不好,但是可以體現出能在cesium中實現熱力圖
ps:此文章僅供參考,大神勿噴
參考來源:https://blog.csdn.net/u013929284/article/details/71928173
相關文章
- 熱力圖生成演算法及其具體實現演算法
- react專案結合echarts,百度地圖實現熱力圖ReactEcharts地圖
- Leaflet-vue 熱力圖 (設定熱力圖顏色)Vue
- Cesium 實現可視域分析
- Web資料視覺化-手把手教你實現熱力圖Web視覺化
- SpringBoot專案在IntelliJ IDEA中實現熱部署Spring BootIntelliJIdea熱部署
- 資料視覺化:淺談熱力圖如何在前端實現視覺化前端
- idea中實現熱部署Idea熱部署
- 熱力圖與原始影像融合
- PostgreSQL生成空間熱力圖SQL
- 在 Swoole 伺服器程式中如何實現壓力反饋伺服器
- Arcpy多執行緒熱力圖執行緒
- 基於 URL 的縮圖在 Laravel 中的實現Laravel
- 大氣熱力學(15)——熱力學圖的應用之三(逆溫)
- 大氣熱力學(11)——熱力學圖的應用之二(焚風)
- 提-關於高德地圖熱力圖-問:地圖
- 【Cesium】新增廣告牌實體實現地點標記效果
- canvas渲染熱力圖的一種方式Canvas
- 【 視覺化】熱力圖繪製原理視覺化
- Cesium官方教程5--地形圖層
- vue地圖視覺化 Cesium篇Vue地圖視覺化
- 在 Zig 中實現介面
- 在 GPUImage 中實現 ColorConversionGPUUI
- heatmap.js(熱力圖)原始碼解讀JS原始碼
- 基於chart.js繪製熱力圖JS
- 注意力機制在圖卷積中的應用卷積
- layui 中echarts實現圖表UIEcharts
- 一圖讀懂疫情期間全國商場“熱力圖”
- 用echart玩點好玩的--酷炫熱力圖
- Cesium載入各種網際網路地圖地圖
- uniapp實現熱更新APP
- SpringBoot 實現熱部署Spring Boot熱部署
- springboot實現熱部署Spring Boot熱部署
- 個推資料視覺化之人群熱力圖、訊息下發圖前端開發實踐視覺化前端
- 在WPF程式中實現PropertyGrid功能
- 在網站中實現 React tsarticles網站React
- 在Go中如何實現併發Go
- 在 Python 中實現 COMET 技術Python