1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
|
8 |
|
9 | exports.maskByPolygon = maskByPolygon;
|
10 |
|
11 | var _ndarray = require('ndarray');
|
12 |
|
13 | var _ndarray2 = _interopRequireDefault(_ndarray);
|
14 |
|
15 | var _transform = require('./transform.js');
|
16 |
|
17 | var _validate = require('../validate.js');
|
18 |
|
19 | var _polygon = require('../domain/polygon.js');
|
20 |
|
21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 | function maskByPolygon(cov, polygon) {
|
34 | var axes = arguments.length <= 2 || arguments[2] === undefined ? ['x', 'y'] : arguments[2];
|
35 |
|
36 | (0, _validate.checkCoverage)(cov);
|
37 |
|
38 | if (polygon.type === 'Polygon') {
|
39 | polygon = {
|
40 | type: 'MultiPolygon',
|
41 | coordinates: [polygon.coordinates]
|
42 | };
|
43 | }
|
44 |
|
45 | var polygons = polygon.coordinates;
|
46 | polygons.forEach(function (p) {
|
47 | return (0, _polygon.ensureClockwisePolygon)(p);
|
48 | });
|
49 |
|
50 | var pip = (0, _polygon.getPointInPolygonsFn)(polygons);
|
51 |
|
52 | var _axes = _slicedToArray(axes, 2);
|
53 |
|
54 | var X = _axes[0];
|
55 | var Y = _axes[1];
|
56 |
|
57 |
|
58 | return cov.loadDomain().then(function (domain) {
|
59 | var x = domain.axes.get(X).values;
|
60 | var y = domain.axes.get(Y).values;
|
61 | var pnpolyCache = (0, _ndarray2.default)(new Uint8Array(x.length * y.length), [x.length, y.length]);
|
62 |
|
63 | for (var i = 0; i < x.length; i++) {
|
64 | for (var j = 0; j < y.length; j++) {
|
65 | var inside = pip([x[i], y[j]]) >= 0;
|
66 | pnpolyCache.set(i, j, inside);
|
67 | }
|
68 | }
|
69 |
|
70 | var fn = function fn(obj, range) {
|
71 | if (pnpolyCache.get(obj[X] || 0, obj[Y] || 0)) {
|
72 | return range.get(obj);
|
73 | } else {
|
74 | return null;
|
75 | }
|
76 | };
|
77 |
|
78 | var newcov = cov;
|
79 | var _iteratorNormalCompletion = true;
|
80 | var _didIteratorError = false;
|
81 | var _iteratorError = undefined;
|
82 |
|
83 | try {
|
84 | for (var _iterator = cov.parameters.keys()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
85 | var key = _step.value;
|
86 |
|
87 | newcov = (0, _transform.mapRange)(newcov, key, fn);
|
88 | }
|
89 | } catch (err) {
|
90 | _didIteratorError = true;
|
91 | _iteratorError = err;
|
92 | } finally {
|
93 | try {
|
94 | if (!_iteratorNormalCompletion && _iterator.return) {
|
95 | _iterator.return();
|
96 | }
|
97 | } finally {
|
98 | if (_didIteratorError) {
|
99 | throw _iteratorError;
|
100 | }
|
101 | }
|
102 | }
|
103 |
|
104 | return newcov;
|
105 | });
|
106 | } |
\ | No newline at end of file |