1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
| 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;
| }
|
| };
|
|