OpenLayers6(5):基于kriging.js实现插值渲染图

1 版本

  • OpenLayers:6.4.3


2 相关配置

import kriging from '@sakitam-gis/kriging';

3 使用kriging.js

3.1 数据准备

待准备数据以通用的geojson数据格式即可

  • 待插值得矢量点数据:本例使用河南省XXX点数据
  • 待插值的范围边界数据:本例使用河南省边界

3.2 样本训练

The train method in the kriging object fits your input to whatever variogram model you specify - gaussian, exponential or spherical - and returns a variogram object.

/**
 t : 代表需要进行插值的权重字段 数组
 x : X轴坐标 数组
 y : Y轴坐标 数组
 model : 模型 gaussian、exponential、spherical
 sigma2 : the variance parameters of the gaussian process
 alpha : the prior of the variogram model
*/
const variogram = kriging.train(t, x, y, model, sigma2, alpha)

3.3 生成插值格网

 /**
 coord : 格网剪裁的边界
 variogram : 上步生成的变异函数
 width : 格网宽度
*/
const grid = kriging.grid(coord, variogram, width);

3.4 openlayers中绘制canvas

/**
 本函数将grid绘制在canvas上
 canvas : canvas dom 元素
 grid : 上部创建的格网
 xlim : X轴长度
 ylim : Y轴长度
 color: 颜色数组,例如:["#9900FF", "#0500FF", "#00FFF3", "#00FF28", "#F3FF00", "#FF9E00", 
        "#FF0000"]
*/
kriging.plot(canvas, grid, xlim, ylim, color);

3.5 ImageCanvas加载插值图层

 Olkriging.prototype.addLayer = (grid, options) => {
            this_.mCanvasLayer = new ImageLayer({
                title: options.type,
                noSwitcherDelete: true,
                source: new ImageCanvasSource({
                    canvasFunction: (extent, resolution, pixelRatio, size) => {
                        const canvas = document.createElement('canvas');
                        canvas.width = size[0];
                        canvas.height = size[1];
                        canvas.style.display = 'block';
                        canvas.getContext('2d').globalAlpha = options.alpha / 100;
                        kriging.plot(canvas, grid, [extent[0], extent[2]], [extent[1], 
                        extent[3]], this_.mColor);
                        return canvas;
                    },
                    projection: 'EPSG:4326'
                })
            });
            this_.mMap.addLayer(this_.mCanvasLayer);
        }

3.6 查看预测值

/**
 xnew: X坐标
 ynew: Y坐标
 variogram: 变异函数
 predicted : 当前位置的预测值
*/
const predicted = kriging.predict(xnew, ynew, variogram);

4 效果图

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

碰碰qaq

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

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

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

打赏作者

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

抵扣说明:

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

余额充值