| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- var __defProp = Object.defineProperty;
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
- };
- // index.ts
- import { bbox } from "@turf/bbox";
- import { coordEach } from "@turf/meta";
- import { collectionOf as collectionOf2 } from "@turf/invariant";
- import { multiLineString, featureCollection, isObject as isObject2 } from "@turf/helpers";
- import { isoContours } from "marchingsquares";
- // lib/grid-to-matrix.js
- import { getCoords, collectionOf } from "@turf/invariant";
- import { featureEach } from "@turf/meta";
- import { isObject } from "@turf/helpers";
- function gridToMatrix(grid, options) {
- options = options || {};
- if (!isObject(options)) throw new Error("options is invalid");
- var zProperty = options.zProperty || "elevation";
- var flip = options.flip;
- var flags = options.flags;
- collectionOf(grid, "Point", "input must contain Points");
- var pointsMatrix = sortPointsByLatLng(grid, flip);
- var matrix = [];
- for (var r = 0; r < pointsMatrix.length; r++) {
- var pointRow = pointsMatrix[r];
- var row = [];
- for (var c = 0; c < pointRow.length; c++) {
- var point = pointRow[c];
- if (point.properties[zProperty]) row.push(point.properties[zProperty]);
- else row.push(0);
- if (flags === true) point.properties.matrixPosition = [r, c];
- }
- matrix.push(row);
- }
- return matrix;
- }
- function sortPointsByLatLng(points, flip) {
- var pointsByLatitude = {};
- featureEach(points, function(point) {
- var lat = getCoords(point)[1];
- if (!pointsByLatitude[lat]) pointsByLatitude[lat] = [];
- pointsByLatitude[lat].push(point);
- });
- var orderedRowsByLatitude = Object.keys(pointsByLatitude).map(function(lat) {
- var row = pointsByLatitude[lat];
- var rowOrderedByLongitude = row.sort(function(a, b) {
- return getCoords(a)[0] - getCoords(b)[0];
- });
- return rowOrderedByLongitude;
- });
- var pointMatrix = orderedRowsByLatitude.sort(function(a, b) {
- if (flip) return getCoords(a[0])[1] - getCoords(b[0])[1];
- else return getCoords(b[0])[1] - getCoords(a[0])[1];
- });
- return pointMatrix;
- }
- // index.ts
- function isolines(pointGrid, breaks, options) {
- options = options || {};
- if (!isObject2(options)) throw new Error("options is invalid");
- const zProperty = options.zProperty || "elevation";
- const commonProperties = options.commonProperties || {};
- const breaksProperties = options.breaksProperties || [];
- collectionOf2(pointGrid, "Point", "Input must contain Points");
- if (!breaks) throw new Error("breaks is required");
- if (!Array.isArray(breaks)) throw new Error("breaks must be an Array");
- if (!isObject2(commonProperties))
- throw new Error("commonProperties must be an Object");
- if (!Array.isArray(breaksProperties))
- throw new Error("breaksProperties must be an Array");
- const matrix = gridToMatrix(pointGrid, { zProperty, flip: true });
- const createdIsoLines = createIsoLines(
- matrix,
- breaks,
- zProperty,
- commonProperties,
- breaksProperties
- );
- const scaledIsolines = rescaleIsolines(createdIsoLines, matrix, pointGrid);
- return featureCollection(scaledIsolines);
- }
- function createIsoLines(matrix, breaks, zProperty, commonProperties, breaksProperties) {
- const results = [];
- for (let i = 0; i < breaks.length; i++) {
- const threshold = +breaks[i];
- const properties = __spreadValues(__spreadValues({}, commonProperties), breaksProperties[i]);
- properties[zProperty] = threshold;
- const isoline = multiLineString(
- isoContours(matrix, threshold, { linearRing: false, noFrame: true }),
- properties
- );
- results.push(isoline);
- }
- return results;
- }
- function rescaleIsolines(createdIsoLines, matrix, points) {
- const gridBbox = bbox(points);
- const originalWidth = gridBbox[2] - gridBbox[0];
- const originalHeigth = gridBbox[3] - gridBbox[1];
- const x0 = gridBbox[0];
- const y0 = gridBbox[1];
- const matrixWidth = matrix[0].length - 1;
- const matrixHeight = matrix.length - 1;
- const scaleX = originalWidth / matrixWidth;
- const scaleY = originalHeigth / matrixHeight;
- const resize = (point) => {
- point[0] = point[0] * scaleX + x0;
- point[1] = point[1] * scaleY + y0;
- };
- createdIsoLines.forEach((isoline) => {
- coordEach(isoline, resize);
- });
- return createdIsoLines;
- }
- var turf_isolines_default = isolines;
- export {
- turf_isolines_default as default,
- isolines
- };
- //# sourceMappingURL=index.js.map
|