From e96e6ee8f782ca656261023cbf4bdcb0d76e2894 Mon Sep 17 00:00:00 2001 From: vjrj Date: Sun, 16 Sep 2018 17:06:23 +0200 Subject: [PATCH] Union of polygon to lib --- imports/ui/components/Maps/SubsUnion/Unify.js | 52 +---------- package-lock.json | 89 +++++++++++-------- package.json | 5 +- 3 files changed, 57 insertions(+), 89 deletions(-) diff --git a/imports/ui/components/Maps/SubsUnion/Unify.js b/imports/ui/components/Maps/SubsUnion/Unify.js index a0fc2ec..469405a 100644 --- a/imports/ui/components/Maps/SubsUnion/Unify.js +++ b/imports/ui/components/Maps/SubsUnion/Unify.js @@ -1,55 +1,7 @@ -import { check } from 'meteor/check'; -import tunion from '@turf/union'; -import ttrunc from '@turf/truncate'; -import { rectangleAround } from 'map-common-utils'; -import tcircle from '@turf/circle'; - - // https://stackoverflow.com/questions/35394577/leaflet-js-union-merge-circles -const truncOptions = { precision: 6, coordinates: 2 }; - -const unify = (polyList) => { - let unionTemp; - for (let i = 0; i < polyList.length; i += 1) { - const pol = polyList[i]; - const cleanPol = ttrunc(pol, truncOptions); - if (i === 0) { - unionTemp = cleanPol; - } else { - unionTemp = ttrunc(tunion(unionTemp, cleanPol), truncOptions); - } - } - return unionTemp; -}; +import { calcUnion as calcUnionWoBounds } from 'map-common-utils'; const calcUnion = (L, subs, decorated, typeCircle) => { - const unionGroup = []; - const doCircle = (typeof typeCircle !== 'undefined') ? typeCircle : true; - subs.forEach((osub) => { - try { - if (osub.location && osub.location.lat && osub.location.lon && osub.distance) { - check(osub.location.lon, Number); - check(osub.location.lat, Number); - check(osub.distance, Number); - const dsub = decorated(osub); - const jsonPolygon = doCircle ? - tcircle( - [dsub.location.lon, dsub.location.lat], dsub.distance, - { units: 'kilometers', steps: 144 } - ) : - rectangleAround( - { lon: dsub.location.lon, lat: dsub.location.lat }, - dsub.distance, - (typeof dsub.distanceY !== 'undefined') ? dsub.distanceY : dsub.distance - ); - unionGroup.push(jsonPolygon); - } else { - console.info(`Wrong element to do union ${JSON.stringify(osub)}`); - } - } catch (e) { - console.error(e, `Wrong element trying to make union ${JSON.stringify(osub)}`); - } - }); - const unionJson = unify(unionGroup); + const unionJson = calcUnionWoBounds(subs, decorated, typeCircle); return [unionJson, L.geoJSON(unionJson).getBounds()]; }; diff --git a/package-lock.json b/package-lock.json index 5ab7869..23beea0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -203,38 +203,6 @@ } } }, - "@turf/truncate": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-5.1.5.tgz", - "integrity": "sha1-nu37Oxi6gfLJjT6tCUMcyhiErYk=", - "requires": { - "@turf/helpers": "5.1.5", - "@turf/meta": "5.2.0" - }, - "dependencies": { - "@turf/helpers": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", - "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=" - } - } - }, - "@turf/union": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/union/-/union-5.1.5.tgz", - "integrity": "sha1-UyhbYJQEf8WNlqrA6pCGXsNNRUs=", - "requires": { - "@turf/helpers": "5.1.5", - "turf-jsts": "1.2.2" - }, - "dependencies": { - "@turf/helpers": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-5.1.5.tgz", - "integrity": "sha1-FTQFInq5M9AEpbuWQantmZ/L4M8=" - } - } - }, "@types/node": { "version": "8.0.57", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.57.tgz", @@ -10845,17 +10813,58 @@ } }, "map-common-utils": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/map-common-utils/-/map-common-utils-0.2.0.tgz", - "integrity": "sha512-kI71M3pLACkGlrGHzOnC31tP3uSrNxyo9l1ABGXkGuvDZ4M4IvA2K1geukQih/iJLTnZXjbO5tr9/9qpqgxyqw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/map-common-utils/-/map-common-utils-0.3.0.tgz", + "integrity": "sha512-JK8cnAFfyB76ufs9C/whCewsO1vjfRTy6qJ1cRpFHPD0+b9ElrbzBlnfhQfTTbUGyi9WvVEinn7FvNXh0/dnvw==", "requires": { "@turf/bbox": "6.0.1", "@turf/bbox-polygon": "6.0.1", + "@turf/circle": "6.0.1", "@turf/destination": "6.0.1", "@turf/helpers": "6.1.4", "@turf/invariant": "6.1.2", + "@turf/truncate": "6.0.1", + "@turf/union": "6.0.3", "spherical": "0.2.0", "wgs84": "0.0.0" + }, + "dependencies": { + "@turf/meta": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.0.2.tgz", + "integrity": "sha512-VA7HJkx7qF1l3+GNGkDVn2oXy4+QoLP6LktXAaZKjuT1JI0YESat7quUkbCMy4zP9lAUuvS4YMslLyTtr919FA==", + "requires": { + "@turf/helpers": "6.1.4" + } + }, + "@turf/truncate": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-6.0.1.tgz", + "integrity": "sha512-0n6MauRHIhnlNPKnVa65YUPNh0AExDmBfvg7v5w1corBlYHZXLew3rS9IKw7o6VqHaMUQs5RT/b3/77RlTetJg==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/meta": "6.0.2" + } + }, + "@turf/union": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@turf/union/-/union-6.0.3.tgz", + "integrity": "sha512-SJPhEvsR96k4vFqymxPPC43jcqFydTafGjHWnYzlupxqUDzIYD8X5d9Ed8mONl2T9oM4ErbNuuZ9j/eHvoWtKw==", + "requires": { + "@turf/helpers": "6.1.4", + "@turf/invariant": "6.1.2", + "martinez-polygon-clipping": "0.4.3" + } + } + } + }, + "martinez-polygon-clipping": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/martinez-polygon-clipping/-/martinez-polygon-clipping-0.4.3.tgz", + "integrity": "sha512-3ZNS0ksKhWTLsmCUkNf+/UimndZ5U2cVOS0I+IjiwF+M23E77TmeOZSmbRJbfCoQUog/vcQ42s3DXrhgOhgPqw==", + "requires": { + "splaytree": "0.1.4", + "tinyqueue": "1.2.3" } }, "maxmind": { @@ -19447,6 +19456,11 @@ "wgs84": "0.0.0" } }, + "splaytree": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-0.1.4.tgz", + "integrity": "sha512-D50hKrjZgBzqD3FT2Ek53f2dcDLAQT8SSGrzj3vidNH5ISRgceeGVJ2dQIthKOuayqFXfFjXheHNo4bbt9LhRQ==" + }, "sprintf-js": { "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", @@ -19860,6 +19874,11 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, + "tinyqueue": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-1.2.3.tgz", + "integrity": "sha512-Qz9RgWuO9l8lT+Y9xvbzhPT2efIUIFd69N7eF7tJ9lnQl0iLj1M7peK7IoUGZL9DJHw9XftqLreccfxcQgYLxA==" + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", diff --git a/package.json b/package.json index 150586b..42ab1e9 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,6 @@ "@cleverbeagle/dates": "^0.5.1", "@cleverbeagle/seeder": "^1.3.1", "@turf/buffer": "^5.1.5", - "@turf/circle": "^6.0.1", - "@turf/truncate": "^5.1.5", - "@turf/union": "^5.1.5", "babel-runtime": "^6.26.0", "bcrypt": "^1.0.3", "bootstrap-carousel-swipe": "0.0.6", @@ -46,7 +43,7 @@ "leaflet-sleep": "^0.5.1", "lodash": "^4.17.4", "loms.perlin": "^1.0.1", - "map-common-utils": "^0.2.0", + "map-common-utils": "^0.3.0", "maxmind": "^2.3.0", "meteor-accounts-t9n": "^2.0.3", "meteor-node-stubs": "^0.3.2",