const kriging = require("./kriging"); const default_params = require("./kriging_default_params"); const boundary_ = require("../kriging/district_boundary"); const extend_ = require("../kriging/district_extent"); var lngs = [121.456344, 121.983627, 122.657344, 120.635689, 121.446533, 121.336544, 121.346534, 121.4268344, 121.983344, 121.763344]; var lats = [31.456344, 31.983627, 31.657344, 31.635689, 31.446533, 31.336544, 31.346534, 31.4268344, 31.983344, 31.763344]; var values = [1, 3, 5, 5, 3, 5, 3, 2, 2, 1]; module.exports = { // lngs = ["121.238702", "121.37806", "121.138177", "121.448556", "121.343095", "121.213946", "121.238702", "121.188195", "121.421457", "121.187873", "121.482731", "121.147248", "121.920618", "121.458805", "121.345745", "121.574977", "121.533134", "121.413675", "121.697667", "121.814412", "121.413981", "31.113971", "121.633632", "121.148344"]; // lats = ["31.019359", "31.118032", "31.159053", "31.395845", "31.487958", "31.277393", "31.019359", "30.977245", "31.014682", "30.835197", "30.924335", "31.266156", "30.887216", "31.241540", "30.749318", "31.345590", "30.836926", "31.631121", "31.395322", "31.503677", "31.202651", "121.519257", "31.135996", "31.264731"]; // values = [20, 50, 30, 50, 40, 30, 30, 50, 20, 30, 50, 20, 20, 50, 30, 50, 30, 30, 40, 20, 20, 20, 30, 40] setArrays_(points) { for (let i = 0; i < points.length; i++) { lngs[i] = points[i].regionLong; lats[i] = points[i].regionLat; values[i] = points[i].paramvalue; } }, //计算覆盖率 6个参数:Z值数组[],X值数组[],Y值数组[],裁剪区域边界[[[]]],边界数组[minx,miny,maxx,maxy],插值份数(单方向) addGridCanvasOverlay_(values, lngs, lats, area_boundary, area_extent, count) { let letiogram = kriging.train(values, lngs, lats, default_params.kriging_default_params.krigingModel, default_params.kriging_default_params.krigingSigma2, default_params.kriging_default_params.krigingAlpha); let grid = kriging.grid(area_boundary, letiogram, (area_extent[2] - area_extent[0]) / count); let reach_num = 0; let total_num = 0; for (let index = 0; index < grid.length; index++) { for (let m = 0; m < grid[index].length; m++) { if (grid[index][m]) { total_num++; grid[index][m] > 3 ? reach_num++ : reach_num; } } } return { "numerator": reach_num, "denominator": total_num }; }, caculaterCoverRate(values, lngs, lats) { var district_rates = {}; district_rates['310000'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_shanghai, extend_.district_extent_shanghai, 400); district_rates['310101'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_huangpu, extend_.district_extent_shanghai, 400); district_rates['310102'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_xuhui, extend_.district_extent_shanghai, 400); district_rates['310103'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_changning, extend_.district_extent_shanghai, 400); district_rates['310104'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_jingan, extend_.district_extent_shanghai, 400); district_rates['310105'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_putuo, extend_.district_extent_shanghai, 400); district_rates['310106'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_hongkou, extend_.district_extent_shanghai, 400); district_rates['310107'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_yangpu, extend_.district_extent_shanghai, 400); district_rates['310108'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_minhang, extend_.district_extent_shanghai, 400); district_rates['310109'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_baoshan, extend_.district_extent_shanghai, 400); district_rates['310110'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_jiading, extend_.district_extent_shanghai, 400); let a_ = { "numerator": 0, "denominator": 0 }; //浦东 for (let index = 0; index < boundary_.district_boundary_pudong.length; index++) { let b_ = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_pudong[index], extend_.district_extent_shanghai, 400); a_.numerator += b_.numerator; a_.denominator += b_.denominator; } district_rates['310115'] = { "numerator": a_.numerator, "denominator": a_.denominator }; //金山 a_ = { "numerator": 0, "denominator": 0 }; for (let index = 0; index < boundary_.district_boundary_jinshan.length; index++) { let b_ = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_jinshan[index], extend_.district_extent_shanghai, 400); a_.numerator += b_.numerator; a_.denominator += b_.denominator; } district_rates['310116'] = { "numerator": a_.numerator, "denominator": a_.denominator }; district_rates['310117'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_songjiang, extend_.district_extent_shanghai, 400); district_rates['310118'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_qingpu, extend_.district_extent_shanghai, 400); district_rates['310120'] = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_fengxian, extend_.district_extent_shanghai, 400); //崇明 a_ = { "numerator": 0, "denominator": 0 }; for (let index = 0; index < boundary_.district_boundary_chongming.length; index++) { let b_ = this.addGridCanvasOverlay_(values, lngs, lats, boundary_.district_boundary_chongming[index], extend_.district_extent_shanghai, 400); a_.numerator += b_.numerator; a_.denominator += b_.denominator; } district_rates['310151'] = { "numerator": a_.numerator, "denominator": a_.denominator }; console.log('崇明: '+(Math.round(a_.numerator / a_.denominator * 10000) / 100.00) + "%"); return district_rates; } };