node-red-contrib-tak-registration
Version:
A Node-RED node to register to TAK and to help wrap files as datapackages to send to TAK
134 lines • 4.03 kB
JavaScript
// index.ts
import { distance } from "@turf/distance";
import { intersect } from "@turf/intersect";
import { polygon, featureCollection } from "@turf/helpers";
function triangleGrid(bbox, cellSide, options = {}) {
var results = [];
var xFraction = cellSide / distance([bbox[0], bbox[1]], [bbox[2], bbox[1]], options);
var cellWidth = xFraction * (bbox[2] - bbox[0]);
var yFraction = cellSide / distance([bbox[0], bbox[1]], [bbox[0], bbox[3]], options);
var cellHeight = yFraction * (bbox[3] - bbox[1]);
var xi = 0;
var currentX = bbox[0];
while (currentX <= bbox[2]) {
var yi = 0;
var currentY = bbox[1];
while (currentY <= bbox[3]) {
var cellTriangle1 = null;
var cellTriangle2 = null;
if (xi % 2 === 0 && yi % 2 === 0) {
cellTriangle1 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
cellTriangle2 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
} else if (xi % 2 === 0 && yi % 2 === 1) {
cellTriangle1 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
cellTriangle2 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
} else if (yi % 2 === 0 && xi % 2 === 1) {
cellTriangle1 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
cellTriangle2 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
} else if (yi % 2 === 1 && xi % 2 === 1) {
cellTriangle1 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
cellTriangle2 = polygon(
[
[
[ ],
[ ],
[ ],
[ ]
]
],
options.properties
);
}
if (options.mask) {
if (intersect(featureCollection([options.mask, cellTriangle1])))
results.push(cellTriangle1);
if (intersect(featureCollection([options.mask, cellTriangle2])))
results.push(cellTriangle2);
} else {
results.push(cellTriangle1);
results.push(cellTriangle2);
}
currentY += cellHeight;
yi++;
}
xi++;
currentX += cellWidth;
}
return featureCollection(results);
}
var turf_triangle_grid_default = triangleGrid;
export {
turf_triangle_grid_default as default,
triangleGrid
};
//# sourceMappingURL=index.js.map