Cesium 三维热力图

要用cesium做个三维热力图的效果,但在网上没找到现成的方案,摸索了很久,最终效果如下:

三维热力图

实现思路如下:

1、通过heatmapjs库生成二维热力图,拿到canvas;

addHeatMap() {
        let width = 500
        let height = 500
        this.heatMap = h337.create(this.getDefaultData(width, height))
        let bounds = [113.5, 22, 114.5, 23]

        this.bounds = {
            west: 113.5,
            south: 22,
            east: 114.5,
            north: 23,
        }
        let data = [];
        let max = 0
        for (let i = 0; i < 200; i++) {
            let value = Math.floor(Math.random() * 100)
            max = Math.max(max, value)
            let x = Math.floor(Math.random() * width)
            let y = Math.floor(Math.random() * height)
            data.push({ x: x, y: y, value: value });
        }


        this.heatMap.setData({
            // min: 0,
            max: max,
            data: data
        })

        this.addcanvas(bounds, true)
    }

2、canvas的rgb像素值转hsl,将h分量作为该像素点的高度值的参考(即越红高度越高);

先转灰度图

    // 图片转灰度图
    getGrayMap(img) {
        const canvas = document.createElement('canvas')
        canvas.width = img.width
        canvas.height = img.height
        const ctx = canvas.getContext('2d')
        ctx.drawImage(img, 0, 0)
        const c = ctx.getImageData(0, 0, 
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值