arcgis api 3.x for js 實現克里金插值渲染圖不依賴 GP 服務(附源碼下載)


前言

關於本篇功能實現用到的 api 涉及類看不懂的,請參照 esri 官網的 arcgis api 3.x for js:esri 官網 api,里面詳細的介紹 arcgis api 3.x 各個類的介紹,還有就是在線例子:esri 官網在線例子,這個也是學習 arcgis api 3.x 的好素材。

內容概覽

  1. 基於 arcgis api 3.x 實現克里金插值渲染圖
  2. 源代碼 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之家小專欄

文章尾部提供源代碼下載,對本專欄感興趣的話,可以關注一波


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM