前言
關於本篇功能實現用到的 api 涉及類看不懂的,請參照 esri 官網的 arcgis api 3.x for js:esri 官網 api,里面詳細的介紹 arcgis api 3.x 各個類的介紹,還有就是在線例子:esri 官網在線例子,這個也是學習 arcgis api 3.x 的好素材。
內容概覽
- 基於 arcgis api 3.x 實現克里金插值渲染圖
- 源代碼 demo 下載
本篇的亮點是利用 kriging.js 結合 arcgis api 3.x for js,實現克里金插值渲染圖,截圖如下:
具體實現的思路
- kriging.js 開源 js,可以實現針對容器 canvas 克里金插值效果,但是沒有結合地圖一起的,不能隨着地圖拖動縮放的,需要跟地圖綁定在一起才行的,這里先實現 canvas 渲染插值效果,kriging.js 的 plot 函數可以達到這樣的目的:
kriging.plot(canvas, grid, [113.220276, 113.476929], [29.737915, 29.965698], colors);
colors:渲染顏色分級數組;
canvas:渲染容器;
[113.220276, 113.476929], [29.737915, 29.965698]:渲染的最大最小值范圍;
grid:渲染的插值,跟 point 插值點有關系,具體的如下:
var grid = kriging.grid(world, variogram, width);
world:插值范圍,點數組構成,比如:
var world = [ [ [ 113.33752441406284, 29.881896972656477 ], [ 113.3394713498775, 29.879479149706071 ], [ 113.34130859375034, 29.876525878906421 ], ... ], ]
variogram:
var variogram = kriging.train(t, x, y, "exponential", 0, 10);
- kriging.js 渲染效果疊加在 map 對象,綁定一起展示,以 layer 形式疊加在 map 即可
首先在地圖初始化里面創建 MapImageLayer 圖層
var mil = new MapImageLayer({ 'id': 'usgs_screen_overlay', 'opacity': 0.5 }); mymap.addLayer(mil);
其次,地圖加載完成事件調用
//地圖加載函數 mymap.on("load", function () { //渲染克里斯插值 loadkriging(); RefleshPNG2(mymap,mil); });
更多的詳情見:GIS之家小專欄
文章尾部提供源代碼下載,對本專欄感興趣的話,可以關注一波