cesium基于克里金插值实现温度数据渲染

 Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品。它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。
 这里主要是基于原生js实现的三维温度渲染效果,通过克里金插值的方式将数据在cesium上进行插值渲染。实现了根据温度值渲染出热力图的效果。

主要js代码如下:

<script>
    var viewer = new Cesium.Viewer('cesiumContainer', {
        imageryProvider: new Cesium.UrlTemplateImageryProvider({
            url: 'http://www.google.cn/maps/vt?lyrs=s@716&x={x}&y={y}&z={z}'
        })
    });
    Cesium.Camera.DEFAULT_VIEW_RECTANGLE = Cesium.Rectangle.fromDegrees(73.0, 3.0, 135.0, 53.0);
    viewer.camera.flyHome(5);

    viewer.dataSources.add(Cesium.GeoJsonDataSource.load('./bounds.geojson', {
        stroke: Cesium.Color.HOTPINK,
        fill: Cesium.Color.PINK.withAlpha(0.3),
        strokeWidth: 1
    }));

    function loadkriging() {
        var canvas = document.getElementById("canvasMap");
        canvas.width = 2000;
        canvas.height = 2000;
        var n = tempture.length;
        var t = [];
        var x = [];
        var y = [];
        for (var i = 0; i < n; i++) {
            t.push(tempture[i].properties.Temperatur); // 权重值
            x.push(tempture[i].geometry.coordinates[0]); // x
            y.push(tempture[i].geometry.coordinates[1]); // y
        }
        var variogram = kriging.train(t, x, y, "exponential", 0, 100);
        var grid = kriging.grid(bounds, variogram, 0.05);
        var colors = ["#00A600", "#01A600", "#03A700", "#04A700", "#05A800", "#07A800", "#08A900", "#09A900"];
        kriging.plot(canvas, grid, [73.4766, 135.088], [18.1055, 53.5693], colors);
    }
    function returnImgae() {
        var mycanvas = document.getElementById("canvasMap");
        return mycanvas.toDataURL("image/png");
    }
    loadkriging();
    var temptureLayer = viewer.imageryLayers.addImageryProvider(new Cesium.SingleTileImageryProvider({
        url: returnImgae(),
        rectangle: new Cesium.Rectangle(
            Cesium.Math.toRadians(73.4766),
            Cesium.Math.toRadians(18.1055),
            Cesium.Math.toRadians(135.088),
            Cesium.Math.toRadians(53.5693)
        )
    }));
    temptureLayer.alpha = 0.4
</script>

实现效果如下:在这里插入图片描述
点击链接下载完整代码内容

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坏孩纸 zxjys!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值