国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久

BIGEMPA Js API示例中心

克里金插值示例源代碼展示

代碼編輯區(qū) 運行 下載 還原
<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8'/>
    <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no'/>
    <!--
        以下CSS地址請在安裝軟件了替換成本地的地址
        CSS地址請使用:
        http://localhost:9000/bigemap.js/v2.1.0/bigemap.css
        軟件下載地址 http://www.bt68f.cn/reader/download/detail201802017.html
    -->
    <link href='http://www.bt68f.cn:9000/bigemap.js/v2.1.0/bigemap.css' rel='stylesheet'/>
    <link href="http://www.bt68f.cn/Public/css/button.min.css" rel="stylesheet">
    <script src="http://www.bt68f.cn/offline_data/js/turf.min.js"></script>
    <script src="http://www.bt68f.cn/offline_data/kriging/kriging.js"></script>
    <script src="http://www.bt68f.cn/offline_data/kriging/kriging-contour.js"></script>
    <!--
        JS地址請使用:
        http://localhost:9000/bigemap.js/v2.1.0/bigemap.js
    -->
    <script src='http://www.bt68f.cn:9000/bigemap.js/v2.1.0/bigemap.js'></script>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        #map {
            position: absolute;
            top: 0;
            bottom: 0;
            width: 100%;
        }

        .tool {
            position: absolute;
            z-index: 10;
            right: 10px;
            top: 40px;
        }

        .controls {
            position: absolute;
            top: 50px;
            right: 100px;
            padding: 15px;
            z-index: 1000;
            display: flex;
            flex-direction: column;
        }

        button {
            margin-top: 5px;
            height: 30px;
            width: 100px;
        }
    </style>
    <title>切換圖層</title>
</head>
<body>

<div id='map'></div>
<!-- leaflet 地圖容器 -->
<canvas id="canvasMap" style="display: none;"></canvas>
<div class="controls">
    <button color="#626aef" onclick="startKriging('kriging')">普通克里金</button>
    <button color="#626aef" onclick="startKriging('Vector')">克里金矢量</button>
    <button color="#626aef" onclick="startKriging('Image')">克里金圖像</button>
    <button color="#626aef" onclick="clearKriging()">清空</button>
</div>
<script type="text/javascript">// 軟件配置信息地址,軟件安裝完成之后使用本地地址,如:http://localhost:9000
BM.Config.HTTP_URL = 'http://www.bt68f.cn:9000';
// 在ID為map的元素中實例化一個地圖,不要設(shè)置地圖ID,ID號程序自動生成,無需手動配置,設(shè)置中心點,默認(rèn)的級別和顯示級別控件
var map = BM.map('map', "bigemap.amap-map", {
    center: [30, 104],
    zoom: 3,
    zoomControl: true,
    attributionControl: false,
    minZoom: 3
});

let featureLayerGroup = null;
let imageLayerGroup = null;

// 矢量圖層組
featureLayerGroup = new BM.FeatureGroup().addTo(map).bringToFront()
// 圖像圖層組
imageLayerGroup = new BM.FeatureGroup().addTo(map).bringToFront()


const startKriging = (krigingType) => {

    var locationA = turf.point([113.13511910476657, 35.57787631544019], {value:10});
    var locationB = turf.point([113.13511910476657, 35.42339070714901], {value:1});
    var locationC = turf.point([114.1256864413522, 34.42339070714901], {value:30});
    var locationD = turf.point([114.1252522, 34.42239314901], {value:100});

    var positionData = turf.featureCollection([locationA, locationB, locationC]);

    console.log(positionData)
    if ('Vector' == krigingType) {
        showKrigingVector(positionData);
    } else if ('Image' == krigingType) {
        showKrigingImage(positionData)
    } else if ('kriging' == krigingType) {
        showKriging(positionData)
    }
}

const showKriging = ( positionData) => {
    debugger
    let boundaries = positionData
    // 清空圖層
    clearKriging();
    // 完全透明
    let scope = BM.geoJSON(boundaries, {
        style: function () {
            return {
                fillColor: '6666ff',
                color: 'red',
                weight: 2,
                opacity: 0,
                fillOpacity: 0,
            };
        }
    }).addTo(imageLayerGroup);

    map.fitBounds(scope.getBounds());
    //根據(jù)scope邊界線,生成范圍信息
    let xlim = [scope.getBounds()._southWest.lng, scope.getBounds()._northEast.lng];
    let ylim = [scope.getBounds()._southWest.lat, scope.getBounds()._northEast.lat];

    function loadkriging(points) {
        let canvas = document.getElementById("canvasMap");
        canvas.width = 2000;
        canvas.height = 1000;
        // 數(shù)量
        let pointLength = points.features.length;
        let t = [];// 數(shù)值
        let x = [];// 經(jīng)度
        let y = [];// 緯度
        // 加載點數(shù)過多的話,會出現(xiàn)卡頓
        for (let i = 0; i < pointLength; i++) {
            x.push(points.features[i].geometry.coordinates[0]);
            y.push(points.features[i].geometry.coordinates[1]);
            t.push(points.features[i].properties.value);
        }

        // 克里金插值參數(shù)
        const params = {
            krigingModel: 'exponential',//model還可選'gaussian','spherical'
            krigingSigma2: 0,
            krigingAlpha: 100,
            canvasAlpha: 0.8,//canvas圖層透明度-0.75
            colors: ["#00A600", "#01A600", "#03A700", "#04A700", "#05A800", "#07A800", "#08A900", "#09A900", "#0BAA00", "#0CAA00", "#0DAB00", "#0FAB00", "#10AC00", "#12AC00", "#13AD00", "#14AD00", "#16AE00", "#17AE00", "#19AF00", "#1AAF00", "#1CB000", "#1DB000", "#1FB100", "#20B100", "#22B200", "#23B200", "#25B300", "#26B300", "#28B400", "#29B400", "#2BB500", "#2CB500", "#2EB600", "#2FB600", "#31B700", "#33B700", "#34B800", "#36B800", "#37B900", "#39B900", "#3BBA00", "#3CBA00", "#3EBB00", "#3FBB00", "#41BC00", "#43BC00", "#44BD00", "#46BD00", "#48BE00", "#49BE00", "#4BBF00", "#4DBF00", "#4FC000", "#50C000", "#52C100", "#54C100", "#55C200", "#57C200", "#59C300", "#5BC300", "#5DC400", "#5EC400", "#60C500", "#62C500", "#64C600", "#66C600", "#67C700", "#69C700", "#6BC800", "#6DC800", "#6FC900", "#71C900", "#72CA00", "#74CA00", "#76CB00", "#78CB00", "#7ACC00", "#7CCC00", "#7ECD00", "#80CD00", "#82CE00", "#84CE00", "#86CF00", "#88CF00", "#8AD000", "#8BD000", "#8DD100", "#8FD100", "#91D200", "#93D200", "#95D300", "#97D300", "#9AD400", "#9CD400", "#9ED500", "#A0D500", "#A2D600", "#A4D600", "#A6D700", "#A8D700", "#AAD800", "#ACD800", "#AED900", "#B0D900", "#B2DA00", "#B5DA00", "#B7DB00", "#B9DB00", "#BBDC00", "#BDDC00", "#BFDD00", "#C2DD00", "#C4DE00", "#C6DE00", "#C8DF00", "#CADF00", "#CDE000", "#CFE000", "#D1E100", "#D3E100", "#D6E200", "#D8E200", "#DAE300", "#DCE300", "#DFE400", "#E1E400", "#E3E500", "#E6E600", "#E6E402", "#E6E204", "#E6E105", "#E6DF07", "#E6DD09", "#E6DC0B", "#E6DA0D", "#E6D90E", "#E6D710", "#E6D612", "#E7D414", "#E7D316", "#E7D217", "#E7D019", "#E7CF1B", "#E7CE1D", "#E7CD1F", "#E7CB21", "#E7CA22", "#E7C924", "#E8C826", "#E8C728", "#E8C62A", "#E8C52B", "#E8C42D", "#E8C32F", "#E8C231", "#E8C133", "#E8C035", "#E8BF36", "#E9BE38", "#E9BD3A", "#E9BC3C", "#E9BB3E", "#E9BB40", "#E9BA42", "#E9B943", "#E9B945", "#E9B847", "#E9B749", "#EAB74B", "#EAB64D", "#EAB64F", "#EAB550", "#EAB552", "#EAB454", "#EAB456", "#EAB358", "#EAB35A", "#EAB35C", "#EBB25D", "#EBB25F", "#EBB261", "#EBB263", "#EBB165", "#EBB167", "#EBB169", "#EBB16B", "#EBB16C", "#EBB16E", "#ECB170", "#ECB172", "#ECB174", "#ECB176", "#ECB178", "#ECB17A", "#ECB17C", "#ECB17E", "#ECB27F", "#ECB281", "#EDB283", "#EDB285", "#EDB387", "#EDB389", "#EDB38B", "#EDB48D", "#EDB48F", "#EDB591", "#EDB593", "#EDB694", "#EEB696", "#EEB798", "#EEB89A", "#EEB89C", "#EEB99E", "#EEBAA0", "#EEBAA2", "#EEBBA4", "#EEBCA6", "#EEBDA8", "#EFBEAA", "#EFBEAC", "#EFBFAD", "#EFC0AF", "#EFC1B1", "#EFC2B3", "#EFC3B5", "#EFC4B7", "#EFC5B9", "#EFC7BB", "#F0C8BD", "#F0C9BF", "#F0CAC1", "#F0CBC3", "#F0CDC5", "#F0CEC7", "#F0CFC9", "#F0D1CB", "#F0D2CD", "#F0D3CF", "#F1D5D1", "#F1D6D3", "#F1D8D5", "#F1D9D7", "#F1DBD8", "#F1DDDA", "#F1DEDC", "#F1E0DE", "#F1E2E0", "#F1E3E2", "#F2E5E4", "#F2E7E6", "#F2E9E8", "#F2EBEA", "#F2ECEC", "#F2EEEE", "#F2F0F0", "#F2F2F2"
            ]
        }
        // 對數(shù)據(jù)集進(jìn)行訓(xùn)練
        let variogram = kriging.train(t, x, y, params.krigingModel, params.krigingSigma2, params.krigingAlpha);
        // 將插值范圍封裝成特定格式
        let bbox = turf.bbox(boundaries); // 外包矩形范圍
        // 根據(jù)外包矩形范圍生成外包矩形面Polygon
        let bboxPolygon = turf.bboxPolygon(bbox);
        let positions = [];
        bboxPolygon.geometry.coordinates[0].forEach((v) => {
            positions.push([v[0], v[1]])
        })
        // 將邊界封裝成特定的格式
        let range = [positions]
        // 使用variogram對象使polygons描述的地理位置內(nèi)的格網(wǎng)元素具備不一樣的預(yù)測值,最后一個參數(shù),是插值格點精度大小
        let grid = kriging.grid(range, variogram, 0.05);
        // 將得到的格網(wǎng)grid渲染至canvas上
        kriging.plot(canvas, grid, [xlim[0], xlim[1]], [ylim[0], ylim[1]], params.colors);
    }

    //將canvas對象轉(zhuǎn)換成image的URL
    function returnImgae() {
        let mycanvas = document.getElementById("canvasMap");
        return mycanvas.toDataURL("image/png");
    }

    // 執(zhí)行克里金插值函數(shù)
    loadkriging(positionData);

    let imageBounds = [[ylim[0], xlim[0]], [ylim[1], xlim[1]]];
    BM.imageOverlay(returnImgae(), imageBounds, {opacity: 0.8}).addTo(imageLayerGroup);
}

// 生成矢量等值面并渲染
const showKrigingVector = (positionData) => {
    let boundaries = positionData
    // 清空圖層
    clearKriging();
    // 展點(可刪除)
    BM.geoJSON(positionData, {
        pointToLayer: function (feature, latlng) {
            return BM.circleMarker(latlng, {
                radius: 5,
                fillColor: '#6666ff',
                fillOpacity: 1,
                color: "#fff",
                weight: 2,
            });
        }, onEachFeature(feature, layer) {
            // 顯示文字
            let content = feature.properties.value
            // marker的icon文字
            let myIcon = BM.divIcon({
                html: `<div style="white-space: nowrap;color:#6666ff;">${content}</div>`,
                iconAnchor: [0, 0],
                className: 'my-div-icon',
                iconSize: 120
            });
            let featureCenter = BM.latLng(feature.geometry.coordinates[1], feature.geometry.coordinates[0]);
            featureLayerGroup.addLayer(BM.marker(featureCenter, {icon: myIcon}));
        }
    }).addTo(featureLayerGroup)
    // 顏色色帶
    let colors = [{fill: "#ffdc84"}, {fill: "#ffd782"},
        {fill: "#ffd281"}, {fill: "#ffcd7f"}, {fill: "#ffc87e"}, {fill: "#ffc37c"}, {fill: "#ffbe7a"}, {fill: "#ffb979"}, {fill: "#feb477"}, {fill: "#feaf76"},
        {fill: "#feaa74"}, {fill: "#fea573"}, {fill: "#fea071"}, {fill: "#fe9b6f"},
        {fill: "#fe966e"}, {fill: "#fe906c"}, {fill: "#fe8b6b"}, {fill: "#fe8669"},
        {fill: "#fe8167"}, {fill: "#fe7c66"}, {fill: "#fe7764"}, {fill: "#fe7263"},
        {fill: "#fd6d61"}, {fill: "#fd6860"}, {fill: "#fd635e"}, {fill: "#fd5e5c"},
        {fill: "#fd595b"}, {fill: "#fd5459"}, {fill: "#fd4f58"}, {fill: "#fd4a56"}]
    // 等級分級
    let levelV = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 250, 260, 270, 280, 290, 300, 400];
    let kriging_contours = kriging.getVectorContour(positionData, 'value', {
        model: 'exponential',
        sigma2: 0,
        alpha: 100
    }, levelV, boundaries);
    // 展示生成的矢量等值面
    BM.geoJSON(kriging_contours, {
        style: function (feature) {
            return {
                fillColor: hotColor(feature.properties.value),
                weight: 0,
                fillOpacity: 0.3,
            };
        }
    }).addTo(featureLayerGroup);

    // 根據(jù)值來配色
    function hotColor(d) {
        let index = levelV.findIndex((item) => item >= d);
        if (index > -1) {
            return colors[index].fill
        } else {
            return colors[colors.length - 1].fill
        }
    }
}

// 生成圖像等值面并渲染
const showKrigingImage = (positionData) => {
    let boundaries = positionData
    // 清空圖層
    clearKriging();
    // 完全透明
    let scope = BM.geoJSON(boundaries, {
        style: function () {
            return {
                fillColor: '6666ff',
                color: 'red',
                weight: 2,
                opacity: 0,
                fillOpacity: 0,
            };
        }
    }).addTo(imageLayerGroup);
    map.fitBounds(scope.getBounds());
    //根據(jù)scope邊界線,生成范圍信息
    let xlim = [scope.getBounds()._southWest.lng, scope.getBounds()._northEast.lng];
    let ylim = [scope.getBounds()._southWest.lat, scope.getBounds()._northEast.lat];
    // 色帶
    let colors = ["#006837", "#1a9850", "#66bd63", "#a6d96a", "#d9ef8b", "#ffffbf", "#fee08b", "#fdae61", "#f46d43", "#d73027", "#a50026"]
    // 畫布
    let canvas = document.getElementById("canvasMap");
    canvas.width = 1000;
    canvas.height = 1000;
    let kriging_contours = kriging.drawCanvasContour(positionData, 'value', {
        model: 'exponential',
        sigma2: 0,
        alpha: 100
    }, canvas, [xlim[0], xlim[1]], [ylim[0], ylim[1]], colors);

    //將canvas對象轉(zhuǎn)換成image的URL
    function returnImgae() {
        let mycanvas = document.getElementById("canvasMap");
        return mycanvas.toDataURL("image/png");
    }

    let imageBounds = [[ylim[0], xlim[0]], [ylim[1], xlim[1]]];
    BM.imageOverlay(returnImgae(), imageBounds, {opacity: 0.9}).addTo(imageLayerGroup);
}

// 清空圖層
const clearKriging = () => {
    imageLayerGroup.clearLayers();
    featureLayerGroup.clearLayers();
}


</script>
</body>
</html>            
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 亚洲一区区二区| 亚洲精品社区| 黑人另类av| 国产日韩一区欧美| 在线视频不卡一区二区| 国产精品日韩欧美一区二区三区| 欧美精品一级| 日本免费高清一区二区| 97人人澡人人爽| 99精品欧美一区二区三区| 一区一区视频| 欧美激情一区二区三区在线视频| 美女精品一区| 日韩午夜免费| 国产精品激情电影| 亚洲一区美女| 婷婷四月色综合| 国产午夜精品一区| 懂色中文一区二区三区在线视频| 国产欧美日韩综合一区在线播放| 国产精品mv在线观看| 亚洲精品日韩精品| 日韩精品资源| 蜜桃麻豆www久久国产精品| 999视频在线免费观看| 一区二区三区|亚洲午夜| 亚洲午夜一级| 极品中文字幕一区| 欧美日韩亚洲一区二区三区在线观看 | 中文字幕一区二区三区5566| 欧美日韩综合另类| 美脚丝袜一区二区三区在线观看| 国产精品免费在线| 动漫一区二区在线| 国产精品区免费视频| 国产传媒欧美日韩| 国产精品日韩二区| 精品一区2区三区| 久久精品一二三区| 久久综合毛片| 日本中文不卡| 一本一生久久a久久精品综合蜜| 欧洲一区二区日韩在线视频观看免费 | 欧美在线亚洲综合一区| 亚洲在线色站| 欧美精品v日韩精品v国产精品| 中文视频一区视频二区视频三区| 亚洲一区三区在线观看| 欧美激情四色| 在线观看日韩av电影| 亚洲精品偷拍| 噜噜爱69成人精品| www久久99| 麻豆亚洲一区| 伊人色综合影院| 一区在线电影| 久久黄色网页| 国产在线一区二| 天天爽天天狠久久久| 欧美私人啪啪vps| 国产亚洲激情| 国产精品美女诱惑| 久久精品毛片| 久中文字幕一区| 中文字幕日韩精品久久| 亚洲欧洲三级| 成人欧美一区二区三区在线观看| 久久av二区| 欧美精品九九| 久久久久免费| 欧美污视频久久久| 国内视频精品| 999国内精品视频在线| 秋霞在线观看一区二区三区| 欧美日韩在线精品| 7777精品伊久久久大香线蕉语言 | 亚洲一区二区三区高清不卡| 翡翠波斯猫1977年美国| 日韩经典在线视频| 国产欧美日韩综合精品二区| 国产福利不卡| 欧美成人综合| 久久久国产精品一区二区中文| 欧美日本韩国在线| 黄色成人在线网站| 国产欧美亚洲日本| 国产精品成人一区二区网站软件 | 欧美日本一区| 444亚洲人体| 一区二区冒白浆视频| 午夜在线播放视频欧美| 日韩国产欧美一区| 亚洲一区视频| 日韩精品久久一区二区三区| 国产精品腿扒开做爽爽爽挤奶网站| 鲁鲁狠狠狠7777一区二区| 亚洲一级电影| 欧美日本韩国一区二区三区| 一区二区三区三区在线| 欧美亚洲丝袜| 亚洲一区日韩在线| 欧美99在线视频观看| 成人资源视频网站免费| 国产精品国产三级欧美二区 | 亚洲特级毛片| 精品亚洲欧美日韩| 国产精品普通话对白| 亚洲午夜精品一区二区| 成人情视频高清免费观看电影| 欧美天天在线| 欧美在线视频二区| 久久久精品五月天| 亚洲视频精品| 欧美一级片免费观看| 91九色露脸| 在线亚洲免费| 欧美永久精品| 欧美日韩电影一区二区三区| 久久人人97超碰人人澡爱香蕉| 欧美大片专区| 日本一区二区三区视频在线观看| 久久一区中文字幕| 亚洲黄色影片| 宅男噜噜99国产精品观看免费| 久久久7777| av电影成人| 久久久久久国产精品一区| 亚洲人成免费| 欧美日一区二区在线观看 | 国产日韩欧美亚洲一区| 国产精品伊人日日| 91久久久久| 亚洲香蕉网站| 欧美国产激情| 在线成人av电影| 亚欧洲精品在线视频免费观看| 精品国产福利| 高清av免费一区中文字幕| 久久精品人人| 先锋影音一区二区三区| 亚洲精品1区2区| 在线观看福利一区| 亚洲国产欧美日韩| 伊人久久久大香线蕉综合直播 | 国产在线精品日韩| 国产精品一区二区欧美黑人喷潮水| 国产日韩1区| 99伊人成综合| 国产日韩精品视频一区二区三区| 亚洲调教视频在线观看| 狠狠色噜噜狠狠狠狠色吗综合| 欧美91大片| 欧美日韩理论| 好看的av在线不卡观看| 在线播放豆国产99亚洲| 日韩视频在线一区二区三区| 一区二区国产精品| 国产伦精品一区二区三区| 午夜一级久久| 91丨九色丨国产| 国产传媒一区| 蜜桃视频日韩| 亚洲一区综合| 黄色亚洲大片免费在线观看| 亚洲二区视频| 亚洲永久字幕| 动漫美女被爆操久久久| 久久久精品有限公司| 久久国产日韩欧美| 深夜福利成人| 欧美激情亚洲| 国产日韩专区| 国产伦精品一区| 欧美久久在线| 欧美日韩一区二区国产| 亚洲精品一级| ts人妖另类在线| 欧美色欧美亚洲另类七区| 一区二区三区的久久的视频| 亚洲国产黄色| 99久久精品久久久久久ai换脸| 蜜桃成人在线| 欧美日韩亚洲一区三区| 西西裸体人体做爰大胆久久久| 官网99热精品| 午夜视频久久久| 日韩香蕉视频| 极品校花啪啪激情久久| 亚洲一区二区三区午夜| 一区久久精品| 国产精品一区二区三区观看| 日日噜噜噜噜夜夜爽亚洲精品| 红桃视频国产精品| 国产激情一区二区三区在线观看| 日韩高清av| 亚洲一区影院| 视频一区二区综合| 国产伦精品一区二区三区| 乱色588欧美| 亚洲欧洲日本一区二区三区|