该库基于克里金.js生成插值格网,基于d3-contour生成等值面,由于d3-contour功能和性能存在较大问题,并不适合做业务,故该仓库,不再维护。 d3-contour问题描述如下: 1 性能差,内部的环岛判断采用了笛卡尔积多次循环判断。 2 功能差,实现逻辑差,环岛压盖判断非常潦草,无法项目实际应用。
基于克里金插值算法,根据离散点位置及其权重,生成等值面矢量数据(GeoJSON格式)和栅格数据(Canvas绘制图片),这些数据在任何WebGIS客户端上都可通用展示。
该库生成结果是geojson和canvas上绘制两种形式,这种通用结果可以在ol,mapbox,leaflet,arcgis api等各种前端api上直接展示,具有跨库的通用性。
# 下载源码安装依赖
git clone git@github.com:FreeGIS/kriging-contour.git
cd kriging-contour
npm install
# 编译
npm run build
npm install kriging-contour --save
矢量等值面
kriging-contour.getVectorContour(dataset,weight_field,kriging_params,weight_breaks);
dataset:geojson格式的featureclass数据集,feature是图形是点,必填
weight_field:绑定权重字段名称,必填
kriging_params:克里金插值参数,必填
weight_breaks:权重生成等值面分级数组,必填
示例代码:
//计算克里金等值面
let kriging_contours=kriging.getVectorContourr(dataset,'level',{
model:'exponential',
sigma2:0,
alpha:100
},[0,10,20,30,40,50,60,70,80,90,100]);
图片等值面
kriging-contour.drawCanvasContour(dataset,weight_field,kriging_params,weight_breaks);
dataset:geojson格式的featureclass数据集,feature是图形是点,必填
weight_field:绑定权重字段名称,必填
kriging_params:克里金插值参数,必填
canvas:渲染的canvas对象,必填
xlim:当前视图窗口(extent)的x轴跨度。
ylim:当前视图窗口(extent)的y轴跨度。
colors:渲染颜色分级。
示例代码:
//计算克里金等值面
kriging.drawCanvasContour(dataset,'level',{
model:'exponential',
sigma2:0,
alpha:100
},canvas,[extent[0],extent[2]],[extent[1],extent[3]],params.colors);
kriging是基于oeo4b的kriging.js修改的,原kriging.js编码不够规范,且仅仅支持将插值结果渲染到canvas形成等值面,这种图片形式的等值面锯齿比较严重。
本次修改修复部分编码不可读部分,且重新实现生成基于矢量的插值等值面,渲染效果较好。