From 4c34fba54b4179c826aede4cfb24fa8d1c02f862 Mon Sep 17 00:00:00 2001 From: Mark Glasgow Date: Tue, 5 May 2020 12:06:59 +1000 Subject: [PATCH] when boolean-contains is called with a polygon that has a bite taken out the side (but not the corner) and the polygon boundary, the function currently returns true. It should return false. same logic appled to boolean-within --- packages/turf-boolean-contains/index.ts | 11 +- packages/turf-boolean-contains/package.json | 1 + ...PolygonWithBite-PolygonBoundingBox.geojson | 709 ++++++++++++++++++ packages/turf-boolean-within/index.ts | 24 +- packages/turf-boolean-within/package.json | 1 + ...PolygonBoundingBox-PolygonWithBite.geojson | 709 ++++++++++++++++++ 6 files changed, 1443 insertions(+), 12 deletions(-) create mode 100644 packages/turf-boolean-contains/test/false/Polygon/Polygon/PolygonWithBite-PolygonBoundingBox.geojson create mode 100644 packages/turf-boolean-within/test/false/Polygon/Polygon/PolygonBoundingBox-PolygonWithBite.geojson diff --git a/packages/turf-boolean-contains/index.ts b/packages/turf-boolean-contains/index.ts index d8a85e0086..0cf5666492 100644 --- a/packages/turf-boolean-contains/index.ts +++ b/packages/turf-boolean-contains/index.ts @@ -1,6 +1,7 @@ import calcBbox from "@turf/bbox"; import booleanPointInPolygon from "@turf/boolean-point-in-polygon"; import isPointOnLine from "@turf/boolean-point-on-line"; +import difference from '@turf/difference'; import { point } from "@turf/helpers"; import { BBox, Feature, Geometry, LineString, MultiPoint, Point, Polygon } from "@turf/helpers"; import { getCoords, getGeom, getType } from "@turf/invariant"; @@ -162,8 +163,7 @@ export function isLineInPoly(polygon: Polygon, linestring: LineString) { } /** - * Is Polygon2 in Polygon1 - * Only takes into account outer rings + * Is Polygon2 in Polygon1? * * @private * @param {Geometry|Feature} feature1 Polygon1 @@ -189,7 +189,12 @@ export function isPolyInPoly(feature1: Feature|Polygon, feature2: Featu } } } - return true; + + //If feature2 is completely contained within feature1 + //then subtracting feature1 from feature2 will result in + //a null feature. Otherwise feature2 is not contained. + const diff = difference(feature2, feature1); + return diff === null; } export function doBBoxOverlap(bbox1: BBox, bbox2: BBox) { diff --git a/packages/turf-boolean-contains/package.json b/packages/turf-boolean-contains/package.json index 924e0a12c4..c0bbbe35c1 100644 --- a/packages/turf-boolean-contains/package.json +++ b/packages/turf-boolean-contains/package.json @@ -58,6 +58,7 @@ "@turf/bbox": "^6.2.0-alpha.1", "@turf/boolean-point-in-polygon": "^6.2.0-alpha.1", "@turf/boolean-point-on-line": "^6.2.0-alpha.1", + "@turf/difference": "^6.2.0-alpha.1", "@turf/helpers": "^6.2.0-alpha.1", "@turf/invariant": "^6.2.0-alpha.1" } diff --git a/packages/turf-boolean-contains/test/false/Polygon/Polygon/PolygonWithBite-PolygonBoundingBox.geojson b/packages/turf-boolean-contains/test/false/Polygon/Polygon/PolygonWithBite-PolygonBoundingBox.geojson new file mode 100644 index 0000000000..5b6e2dadfd --- /dev/null +++ b/packages/turf-boolean-contains/test/false/Polygon/Polygon/PolygonWithBite-PolygonBoundingBox.geojson @@ -0,0 +1,709 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "properties": { + "description": "A piece of the OSM India country boundary, intersected with a QuadTree tile" + }, + "coordinates": [ + [ + [ + 89.12109375000001, + 26.273714024406416 + ], + [ + 89.296875, + 26.273714024406416 + ], + [ + 89.296875, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.321823052050473 + ], + [ + 89.1213341, + 26.3218197 + ], + [ + 89.1221389, + 26.3219468 + ], + [ + 89.1228849, + 26.3220061 + ], + [ + 89.123207, + 26.32204 + ], + [ + 89.1234146, + 26.3220648 + ], + [ + 89.123452, + 26.3222267 + ], + [ + 89.1249832, + 26.3222391 + ], + [ + 89.1255933, + 26.3222516 + ], + [ + 89.1259045, + 26.3222765 + ], + [ + 89.1262948, + 26.3223571 + ], + [ + 89.1266515, + 26.3222889 + ], + [ + 89.1273611, + 26.3223761 + ], + [ + 89.1280831, + 26.3223761 + ], + [ + 89.1284815, + 26.3223885 + ], + [ + 89.128494, + 26.3220897 + ], + [ + 89.1285682, + 26.3213528 + ], + [ + 89.1288372, + 26.321365 + ], + [ + 89.1294573, + 26.321365 + ], + [ + 89.1294573, + 26.3208069 + ], + [ + 89.1288165, + 26.3207862 + ], + [ + 89.1284651, + 26.3207862 + ], + [ + 89.1275557, + 26.3208689 + ], + [ + 89.1267082, + 26.3209516 + ], + [ + 89.1260261, + 26.3212616 + ], + [ + 89.1250133, + 26.321427 + ], + [ + 89.1241865, + 26.3212616 + ], + [ + 89.1244759, + 26.3205382 + ], + [ + 89.1249513, + 26.3207242 + ], + [ + 89.1253233, + 26.3205589 + ], + [ + 89.1257987, + 26.3201868 + ], + [ + 89.1260468, + 26.3199595 + ], + [ + 89.1266049, + 26.3199595 + ], + [ + 89.1274523, + 26.3198768 + ], + [ + 89.1280517, + 26.3198768 + ], + [ + 89.1280931, + 26.3198768 + ], + [ + 89.1281952, + 26.3188902 + ], + [ + 89.130461, + 26.3189649 + ], + [ + 89.1306265, + 26.3206548 + ], + [ + 89.1322862, + 26.3206799 + ], + [ + 89.1337321, + 26.3207302 + ], + [ + 89.1344593, + 26.321737 + ], + [ + 89.1355589, + 26.3215923 + ], + [ + 89.1352409, + 26.3203656 + ], + [ + 89.136206, + 26.3201974 + ], + [ + 89.1362137, + 26.3196498 + ], + [ + 89.1361604, + 26.3188663 + ], + [ + 89.1360387, + 26.3183681 + ], + [ + 89.1360311, + 26.3175162 + ], + [ + 89.1359779, + 26.3171283 + ], + [ + 89.1358409, + 26.316478 + ], + [ + 89.135879, + 26.3160064 + ], + [ + 89.1358483, + 26.3150814 + ], + [ + 89.1351337, + 26.3151002 + ], + [ + 89.135091, + 26.3138729 + ], + [ + 89.1294746, + 26.3131541 + ], + [ + 89.1295126, + 26.312538 + ], + [ + 89.1347685, + 26.3132529 + ], + [ + 89.1348293, + 26.3121653 + ], + [ + 89.1327909, + 26.3119751 + ], + [ + 89.1328213, + 26.3114959 + ], + [ + 89.1350257, + 26.3115883 + ], + [ + 89.1350257, + 26.3109888 + ], + [ + 89.135067, + 26.3101207 + ], + [ + 89.135191, + 26.3099967 + ], + [ + 89.1353357, + 26.3093353 + ], + [ + 89.1363692, + 26.3092526 + ], + [ + 89.1364105, + 26.3087772 + ], + [ + 89.1361832, + 26.3081778 + ], + [ + 89.1359695, + 26.3075109 + ], + [ + 89.1341369, + 26.3076404 + ], + [ + 89.1337235, + 26.3073303 + ], + [ + 89.1334754, + 26.3069583 + ], + [ + 89.1334548, + 26.3062142 + ], + [ + 89.1325866, + 26.3061522 + ], + [ + 89.1314775, + 26.3061087 + ], + [ + 89.1304516, + 26.3060612 + ], + [ + 89.1289223, + 26.3058997 + ], + [ + 89.1282047, + 26.3058628 + ], + [ + 89.1276259, + 26.3060488 + ], + [ + 89.1274934, + 26.3061897 + ], + [ + 89.1264052, + 26.3059282 + ], + [ + 89.1263007, + 26.3057667 + ], + [ + 89.125025, + 26.3054063 + ], + [ + 89.1256358, + 26.3042184 + ], + [ + 89.1271841, + 26.3045604 + ], + [ + 89.1270885, + 26.3053874 + ], + [ + 89.1276673, + 26.3053254 + ], + [ + 89.12806, + 26.3049326 + ], + [ + 89.1284527, + 26.3045606 + ], + [ + 89.1310121, + 26.3053013 + ], + [ + 89.1308886, + 26.3038717 + ], + [ + 89.1299387, + 26.3037862 + ], + [ + 89.1300443, + 26.3032377 + ], + [ + 89.1302096, + 26.3027623 + ], + [ + 89.1304783, + 26.3025143 + ], + [ + 89.1307264, + 26.3022663 + ], + [ + 89.1309951, + 26.3019149 + ], + [ + 89.1311398, + 26.3015635 + ], + [ + 89.1311398, + 26.3010261 + ], + [ + 89.1302923, + 26.3011088 + ], + [ + 89.1294035, + 26.3013568 + ], + [ + 89.1288868, + 26.3016048 + ], + [ + 89.1288248, + 26.3023283 + ], + [ + 89.1289075, + 26.3028657 + ], + [ + 89.1288568, + 26.3032122 + ], + [ + 89.1277293, + 26.3031344 + ], + [ + 89.1274813, + 26.3030931 + ], + [ + 89.1274405, + 26.3028933 + ], + [ + 89.1274215, + 26.3025514 + ], + [ + 89.127336, + 26.3025134 + ], + [ + 89.127298, + 26.3020764 + ], + [ + 89.1273159, + 26.3017702 + ], + [ + 89.1280187, + 26.3015222 + ], + [ + 89.1281054, + 26.3008368 + ], + [ + 89.1285354, + 26.2992072 + ], + [ + 89.130623, + 26.2991245 + ], + [ + 89.1305817, + 26.2997032 + ], + [ + 89.1301606, + 26.2997275 + ], + [ + 89.1300856, + 26.3005714 + ], + [ + 89.1323717, + 26.3005094 + ], + [ + 89.132351, + 26.2988351 + ], + [ + 89.1312018, + 26.2987628 + ], + [ + 89.1312134, + 26.2978685 + ], + [ + 89.1314509, + 26.297878 + ], + [ + 89.1315839, + 26.2973572 + ], + [ + 89.130786, + 26.2973555 + ], + [ + 89.130463, + 26.2980071 + ], + [ + 89.1282118, + 26.2979445 + ], + [ + 89.1282574, + 26.2962252 + ], + [ + 89.1268896, + 26.2961682 + ], + [ + 89.1258236, + 26.2956417 + ], + [ + 89.1245834, + 26.2946082 + ], + [ + 89.124356, + 26.2939054 + ], + [ + 89.12448, + 26.2931613 + ], + [ + 89.1252267, + 26.2919517 + ], + [ + 89.1253303, + 26.2913561 + ], + [ + 89.1253044, + 26.2906569 + ], + [ + 89.125162, + 26.2896858 + ], + [ + 89.1248512, + 26.2889607 + ], + [ + 89.1245405, + 26.2883327 + ], + [ + 89.1243074, + 26.2878925 + ], + [ + 89.1238413, + 26.287271 + ], + [ + 89.1232457, + 26.2871544 + ], + [ + 89.1223264, + 26.2871026 + ], + [ + 89.1215754, + 26.2871544 + ], + [ + 89.12109375000001, + 26.287058954813748 + ], + [ + 89.12109375000001, + 26.273714024406416 + ] + ], + [ + [ + 89.1329201, + 26.3243492 + ], + [ + 89.1332894, + 26.3225764 + ], + [ + 89.1345821, + 26.3220963 + ], + [ + 89.135727, + 26.3218747 + ], + [ + 89.1365765, + 26.3227241 + ], + [ + 89.1347298, + 26.3229088 + ], + [ + 89.1346929, + 26.3239429 + ], + [ + 89.1345452, + 26.3244231 + ], + [ + 89.1329201, + 26.3243492 + ] + ] + ] + } + }, + { + "type": "Feature", + "properties": { + "description": "The Quadtree Tile. Key = 12313311211. See: https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 89.12109375000001, + 26.273714024406416 + ], + [ + 89.296875, + 26.273714024406416 + ], + [ + 89.296875, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.273714024406416 + ] + ] + ], + "bbox": [ + 89.12109375000001, + 26.273714024406416, + 89.296875, + 26.43122806450644 + ] + }, + "bbox": [ + 89.12109375000001, + 26.273714024406416, + 89.296875, + 26.43122806450644 + ] + } + ] +} \ No newline at end of file diff --git a/packages/turf-boolean-within/index.ts b/packages/turf-boolean-within/index.ts index 9af64da2cf..9959072111 100644 --- a/packages/turf-boolean-within/index.ts +++ b/packages/turf-boolean-within/index.ts @@ -1,8 +1,9 @@ import calcBbox from '@turf/bbox'; import booleanPointOnLine from '@turf/boolean-point-on-line'; import booleanPointInPolygon from '@turf/boolean-point-in-polygon'; +import difference from '@turf/difference'; import { getGeom, getType } from '@turf/invariant'; -import { Feature, Geometry } from '@turf/helpers'; +import { Feature, Geometry, Polygon } from '@turf/helpers'; /** * Boolean-within returns true if the first geometry is completely within the second geometry. @@ -166,26 +167,31 @@ function isLineInPoly(linestring, polygon) { } /** - * Is Polygon2 in Polygon1 - * Only takes into account outer rings + * Is Polygon1 in Polygon2? * * @private - * @param {Geometry|Feature} feature1 Polygon1 - * @param {Geometry|Feature} feature2 Polygon2 + * @param {Polygon} feature1 Polygon1 + * @param {Polygon} feature2 Polygon2 * @returns {boolean} true/false */ -function isPolyInPoly(feature1, feature2) { - var poly1Bbox = calcBbox(feature1); - var poly2Bbox = calcBbox(feature2); +function isPolyInPoly(feature1: Polygon, feature2: Polygon): boolean { + const poly1Bbox = calcBbox(feature1); + const poly2Bbox = calcBbox(feature2); if (!doBBoxOverlap(poly2Bbox, poly1Bbox)) { return false; } + for (var i = 0; i < feature1.coordinates[0].length; i++) { if (!booleanPointInPolygon(feature1.coordinates[0][i], feature2)) { return false; } } - return true; + + //If feature1 is completely contained within feature2 + //then subtracting feature2 from feature1 will result in + //a null feature. Otherwise feature1 is not contained. + const diff = difference(feature1, feature2); + return diff === null; } function doBBoxOverlap(bbox1, bbox2) { diff --git a/packages/turf-boolean-within/package.json b/packages/turf-boolean-within/package.json index 8efb107f64..deb108f734 100644 --- a/packages/turf-boolean-within/package.json +++ b/packages/turf-boolean-within/package.json @@ -60,6 +60,7 @@ "@turf/bbox": "^6.2.0-alpha.1", "@turf/boolean-point-in-polygon": "^6.2.0-alpha.1", "@turf/boolean-point-on-line": "^6.2.0-alpha.1", + "@turf/difference": "^6.2.0-alpha.1", "@turf/helpers": "^6.2.0-alpha.1", "@turf/invariant": "^6.2.0-alpha.1" } diff --git a/packages/turf-boolean-within/test/false/Polygon/Polygon/PolygonBoundingBox-PolygonWithBite.geojson b/packages/turf-boolean-within/test/false/Polygon/Polygon/PolygonBoundingBox-PolygonWithBite.geojson new file mode 100644 index 0000000000..05908f6d50 --- /dev/null +++ b/packages/turf-boolean-within/test/false/Polygon/Polygon/PolygonBoundingBox-PolygonWithBite.geojson @@ -0,0 +1,709 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": { + "description": "The Quadtree Tile. Key = 12313311211. See: https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system" + }, + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [ + 89.12109375000001, + 26.273714024406416 + ], + [ + 89.296875, + 26.273714024406416 + ], + [ + 89.296875, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.273714024406416 + ] + ] + ], + "bbox": [ + 89.12109375000001, + 26.273714024406416, + 89.296875, + 26.43122806450644 + ] + }, + "bbox": [ + 89.12109375000001, + 26.273714024406416, + 89.296875, + 26.43122806450644 + ] + }, + { + "type": "Feature", + "geometry": { + "type": "Polygon", + "properties": { + "description": "A piece of the OSM India country boundary, intersected with a QuadTree tile" + }, + "coordinates": [ + [ + [ + 89.12109375000001, + 26.273714024406416 + ], + [ + 89.296875, + 26.273714024406416 + ], + [ + 89.296875, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.43122806450644 + ], + [ + 89.12109375000001, + 26.321823052050473 + ], + [ + 89.1213341, + 26.3218197 + ], + [ + 89.1221389, + 26.3219468 + ], + [ + 89.1228849, + 26.3220061 + ], + [ + 89.123207, + 26.32204 + ], + [ + 89.1234146, + 26.3220648 + ], + [ + 89.123452, + 26.3222267 + ], + [ + 89.1249832, + 26.3222391 + ], + [ + 89.1255933, + 26.3222516 + ], + [ + 89.1259045, + 26.3222765 + ], + [ + 89.1262948, + 26.3223571 + ], + [ + 89.1266515, + 26.3222889 + ], + [ + 89.1273611, + 26.3223761 + ], + [ + 89.1280831, + 26.3223761 + ], + [ + 89.1284815, + 26.3223885 + ], + [ + 89.128494, + 26.3220897 + ], + [ + 89.1285682, + 26.3213528 + ], + [ + 89.1288372, + 26.321365 + ], + [ + 89.1294573, + 26.321365 + ], + [ + 89.1294573, + 26.3208069 + ], + [ + 89.1288165, + 26.3207862 + ], + [ + 89.1284651, + 26.3207862 + ], + [ + 89.1275557, + 26.3208689 + ], + [ + 89.1267082, + 26.3209516 + ], + [ + 89.1260261, + 26.3212616 + ], + [ + 89.1250133, + 26.321427 + ], + [ + 89.1241865, + 26.3212616 + ], + [ + 89.1244759, + 26.3205382 + ], + [ + 89.1249513, + 26.3207242 + ], + [ + 89.1253233, + 26.3205589 + ], + [ + 89.1257987, + 26.3201868 + ], + [ + 89.1260468, + 26.3199595 + ], + [ + 89.1266049, + 26.3199595 + ], + [ + 89.1274523, + 26.3198768 + ], + [ + 89.1280517, + 26.3198768 + ], + [ + 89.1280931, + 26.3198768 + ], + [ + 89.1281952, + 26.3188902 + ], + [ + 89.130461, + 26.3189649 + ], + [ + 89.1306265, + 26.3206548 + ], + [ + 89.1322862, + 26.3206799 + ], + [ + 89.1337321, + 26.3207302 + ], + [ + 89.1344593, + 26.321737 + ], + [ + 89.1355589, + 26.3215923 + ], + [ + 89.1352409, + 26.3203656 + ], + [ + 89.136206, + 26.3201974 + ], + [ + 89.1362137, + 26.3196498 + ], + [ + 89.1361604, + 26.3188663 + ], + [ + 89.1360387, + 26.3183681 + ], + [ + 89.1360311, + 26.3175162 + ], + [ + 89.1359779, + 26.3171283 + ], + [ + 89.1358409, + 26.316478 + ], + [ + 89.135879, + 26.3160064 + ], + [ + 89.1358483, + 26.3150814 + ], + [ + 89.1351337, + 26.3151002 + ], + [ + 89.135091, + 26.3138729 + ], + [ + 89.1294746, + 26.3131541 + ], + [ + 89.1295126, + 26.312538 + ], + [ + 89.1347685, + 26.3132529 + ], + [ + 89.1348293, + 26.3121653 + ], + [ + 89.1327909, + 26.3119751 + ], + [ + 89.1328213, + 26.3114959 + ], + [ + 89.1350257, + 26.3115883 + ], + [ + 89.1350257, + 26.3109888 + ], + [ + 89.135067, + 26.3101207 + ], + [ + 89.135191, + 26.3099967 + ], + [ + 89.1353357, + 26.3093353 + ], + [ + 89.1363692, + 26.3092526 + ], + [ + 89.1364105, + 26.3087772 + ], + [ + 89.1361832, + 26.3081778 + ], + [ + 89.1359695, + 26.3075109 + ], + [ + 89.1341369, + 26.3076404 + ], + [ + 89.1337235, + 26.3073303 + ], + [ + 89.1334754, + 26.3069583 + ], + [ + 89.1334548, + 26.3062142 + ], + [ + 89.1325866, + 26.3061522 + ], + [ + 89.1314775, + 26.3061087 + ], + [ + 89.1304516, + 26.3060612 + ], + [ + 89.1289223, + 26.3058997 + ], + [ + 89.1282047, + 26.3058628 + ], + [ + 89.1276259, + 26.3060488 + ], + [ + 89.1274934, + 26.3061897 + ], + [ + 89.1264052, + 26.3059282 + ], + [ + 89.1263007, + 26.3057667 + ], + [ + 89.125025, + 26.3054063 + ], + [ + 89.1256358, + 26.3042184 + ], + [ + 89.1271841, + 26.3045604 + ], + [ + 89.1270885, + 26.3053874 + ], + [ + 89.1276673, + 26.3053254 + ], + [ + 89.12806, + 26.3049326 + ], + [ + 89.1284527, + 26.3045606 + ], + [ + 89.1310121, + 26.3053013 + ], + [ + 89.1308886, + 26.3038717 + ], + [ + 89.1299387, + 26.3037862 + ], + [ + 89.1300443, + 26.3032377 + ], + [ + 89.1302096, + 26.3027623 + ], + [ + 89.1304783, + 26.3025143 + ], + [ + 89.1307264, + 26.3022663 + ], + [ + 89.1309951, + 26.3019149 + ], + [ + 89.1311398, + 26.3015635 + ], + [ + 89.1311398, + 26.3010261 + ], + [ + 89.1302923, + 26.3011088 + ], + [ + 89.1294035, + 26.3013568 + ], + [ + 89.1288868, + 26.3016048 + ], + [ + 89.1288248, + 26.3023283 + ], + [ + 89.1289075, + 26.3028657 + ], + [ + 89.1288568, + 26.3032122 + ], + [ + 89.1277293, + 26.3031344 + ], + [ + 89.1274813, + 26.3030931 + ], + [ + 89.1274405, + 26.3028933 + ], + [ + 89.1274215, + 26.3025514 + ], + [ + 89.127336, + 26.3025134 + ], + [ + 89.127298, + 26.3020764 + ], + [ + 89.1273159, + 26.3017702 + ], + [ + 89.1280187, + 26.3015222 + ], + [ + 89.1281054, + 26.3008368 + ], + [ + 89.1285354, + 26.2992072 + ], + [ + 89.130623, + 26.2991245 + ], + [ + 89.1305817, + 26.2997032 + ], + [ + 89.1301606, + 26.2997275 + ], + [ + 89.1300856, + 26.3005714 + ], + [ + 89.1323717, + 26.3005094 + ], + [ + 89.132351, + 26.2988351 + ], + [ + 89.1312018, + 26.2987628 + ], + [ + 89.1312134, + 26.2978685 + ], + [ + 89.1314509, + 26.297878 + ], + [ + 89.1315839, + 26.2973572 + ], + [ + 89.130786, + 26.2973555 + ], + [ + 89.130463, + 26.2980071 + ], + [ + 89.1282118, + 26.2979445 + ], + [ + 89.1282574, + 26.2962252 + ], + [ + 89.1268896, + 26.2961682 + ], + [ + 89.1258236, + 26.2956417 + ], + [ + 89.1245834, + 26.2946082 + ], + [ + 89.124356, + 26.2939054 + ], + [ + 89.12448, + 26.2931613 + ], + [ + 89.1252267, + 26.2919517 + ], + [ + 89.1253303, + 26.2913561 + ], + [ + 89.1253044, + 26.2906569 + ], + [ + 89.125162, + 26.2896858 + ], + [ + 89.1248512, + 26.2889607 + ], + [ + 89.1245405, + 26.2883327 + ], + [ + 89.1243074, + 26.2878925 + ], + [ + 89.1238413, + 26.287271 + ], + [ + 89.1232457, + 26.2871544 + ], + [ + 89.1223264, + 26.2871026 + ], + [ + 89.1215754, + 26.2871544 + ], + [ + 89.12109375000001, + 26.287058954813748 + ], + [ + 89.12109375000001, + 26.273714024406416 + ] + ], + [ + [ + 89.1329201, + 26.3243492 + ], + [ + 89.1332894, + 26.3225764 + ], + [ + 89.1345821, + 26.3220963 + ], + [ + 89.135727, + 26.3218747 + ], + [ + 89.1365765, + 26.3227241 + ], + [ + 89.1347298, + 26.3229088 + ], + [ + 89.1346929, + 26.3239429 + ], + [ + 89.1345452, + 26.3244231 + ], + [ + 89.1329201, + 26.3243492 + ] + ] + ] + } + } + ] +} \ No newline at end of file