Skip to content
This repository has been archived by the owner on Jun 16, 2022. It is now read-only.

FreeGIS/kriging-contour

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

说明

该库基于克里金.js生成插值格网,基于d3-contour生成等值面,由于d3-contour功能和性能存在较大问题,并不适合做业务,故该仓库,不再维护。 d3-contour问题描述如下: 1 性能差,内部的环岛判断采用了笛卡尔积多次循环判断。 2 功能差,实现逻辑差,环岛压盖判断非常潦草,无法项目实际应用。

kriging-contour

基于克里金插值算法,根据离散点位置及其权重,生成等值面矢量数据(GeoJSON格式)和栅格数据(Canvas绘制图片),这些数据在任何WebGIS客户端上都可通用展示。

兼容性

该库生成结果是geojson和canvas上绘制两种形式,这种通用结果可以在ol,mapbox,leaflet,arcgis api等各种前端api上直接展示,具有跨库的通用性。

安装

源码下载并编译:

# 下载源码安装依赖
git clone [email protected]:FreeGIS/kriging-contour.git
cd kriging-contour
npm install
# 编译
npm run build

npm安装

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形成等值面,这种图片形式的等值面锯齿比较严重。

本次修改修复部分编码不可读部分,且重新实现生成基于矢量的插值等值面,渲染效果较好。

kriging图片渲染效果: kriging图片渲染效果 kriging矢量渲染效果: kriging矢量渲染效果

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published