From 4f6f52fb2b62c32ff28279dc7dc8544e967f2823 Mon Sep 17 00:00:00 2001 From: Emillio Mariscal Date: Mon, 3 Jul 2023 19:26:06 -0400 Subject: [PATCH] + Utility scripts for bootstraping DB, improvements for Docker sample script --- Makefile.am | 14 +- config/pokhara-priority.geojson | 6241 ------------------- docker/install.sh | 22 +- docker/services-start.sh | 2 +- js/src/components/Underpass/DQMap/index.jsx | 2 +- js/src/fixtures/DQMap.fixture.jsx | 2 +- m4/ax_python_devel.m4 | 28 +- python/restapi/config.py | 2 +- src/replicator/threads.cc | 4 + utils/bootstrap.sh | 120 + utils/poly2geojson.py | 80 + 11 files changed, 247 insertions(+), 6270 deletions(-) delete mode 100644 config/pokhara-priority.geojson create mode 100644 utils/bootstrap.sh create mode 100644 utils/poly2geojson.py diff --git a/Makefile.am b/Makefile.am index 1b7ade6d..1c09ac94 100644 --- a/Makefile.am +++ b/Makefile.am @@ -128,8 +128,8 @@ EXT := $(shell python3-config --extension-suffix) DIR := $(shell python3-config --configdir) noinst_LTLIBRARIES = underpass.la underpass_la_SOURCES = src/wrappers/python.cc $(libunderpass_la_SOURCES) -underpass_la_LDFADD = $(BOOST_LIBS) libunderpass.la src/validate/libhotosm.la -underpass_la_LDFLAGS = -module -avoid-version -no-undefined -rpath /usr/lib64/ src/validate/libhotosm.la $(BOOST_LIBS) +underpass_la_LDFADD = $(BOOST_LIBS) libunderpass.la src/validate/libunderpass.la +underpass_la_LDFLAGS = -module -avoid-version -no-undefined -rpath /usr/lib64/ src/validate/libunderpass.la $(BOOST_LIBS) PY_OBJECTS = $(libunderpass_la_OBJECTS:.lo=.o) # /usr/lib/python3.9/lib-dynload/underpass.cpython-39-x86_64-linux-gnu.so install-python: underpass.la @@ -153,16 +153,16 @@ endif install-data-hook: $(MKDIR_P) $(DESTDIR)/$(pkglibdir) $(MKDIR_P) $(DESTDIR)/$(pkglibdir)/config - cp -ruvp $(srcdir)/config/priority.geojson $(DESTDIR)/$(pkglibdir)/config + cp -rvp $(srcdir)/config/priority.geojson $(DESTDIR)/$(pkglibdir)/config $(MKDIR_P) $(DESTDIR)/$(pkglibdir)/config/replicator - cp -uvp $(srcdir)/config/replicator/planetreplicator.yaml $(DESTDIR)/$(pkglibdir)/config/replicator - cp -ruvp $(srcdir)/config/stats $(DESTDIR)/$(pkglibdir)/config + cp -vp $(srcdir)/config/replicator/planetreplicator.yaml $(DESTDIR)/$(pkglibdir)/config/replicator + cp -rvp $(srcdir)/config/stats $(DESTDIR)/$(pkglibdir)/config $(MKDIR_P) $(DESTDIR)/$(docdir) - cp -ruvp $(srcdir)/docs/*.md $(DESTDIR)/$(docdir) + cp -rvp $(srcdir)/docs/*.md $(DESTDIR)/$(docdir) dist-hook: apidoc $(MKDIR_P) $(DESTDIR)/$(docdir) - cp -ruvp docs/html $(DESTDIR)/$(docdir) + cp -rvp docs/html $(DESTDIR)/$(docdir) if ENABLE_PCH # yes, a little consistency on the suffix would be nice. diff --git a/config/pokhara-priority.geojson b/config/pokhara-priority.geojson deleted file mode 100644 index 79cf321e..00000000 --- a/config/pokhara-priority.geojson +++ /dev/null @@ -1,6241 +0,0 @@ -{ - "type": "FeatureCollection", - "name": "priority", - "crs": { - "type": "name", - "properties": { - "name": "urn:ogc:def:crs:OGC:1.3:CRS84" - } - }, - "features": [ - { - "type": "Feature", - "properties": {}, - "geometry": { - "type": "MultiPolygon", - "coordinates": [ - [ - [ - [ - 83.8222435, - 28.2566446 - ], - [ - 83.8222725, - 28.2554601 - ], - [ - 83.8223121, - 28.2537044 - ], - [ - 83.8223884, - 28.2507307 - ], - [ - 83.8093464, - 28.2408582 - ], - [ - 83.8038754, - 28.2347335 - ], - [ - 83.8011719, - 28.2321232 - ], - [ - 83.7987185, - 28.2286575 - ], - [ - 83.7998264, - 28.2276914 - ], - [ - 83.8040815, - 28.2236235 - ], - [ - 83.8074293, - 28.2204519 - ], - [ - 83.8095977, - 28.2195682 - ], - [ - 83.8163233, - 28.210159 - ], - [ - 83.8234273, - 28.2144086 - ], - [ - 83.8281364, - 28.2144877 - ], - [ - 83.8294028, - 28.2146548 - ], - [ - 83.8297708, - 28.2146659 - ], - [ - 83.8304708, - 28.2147073 - ], - [ - 83.8323833, - 28.2138937 - ], - [ - 83.8356215, - 28.2133432 - ], - [ - 83.8388209, - 28.211465 - ], - [ - 83.8394259, - 28.2107897 - ], - [ - 83.8408889, - 28.209618 - ], - [ - 83.8415767, - 28.206888 - ], - [ - 83.8428845, - 28.2041531 - ], - [ - 83.8449444, - 28.203964 - ], - [ - 83.8466825, - 28.202489 - ], - [ - 83.8467254, - 28.1995579 - ], - [ - 83.8476505, - 28.1993085 - ], - [ - 83.8555708, - 28.193827 - ], - [ - 83.8578881, - 28.1953917 - ], - [ - 83.8601852, - 28.1959168 - ], - [ - 83.8627864, - 28.197941 - ], - [ - 83.8651288, - 28.1972819 - ], - [ - 83.8689384, - 28.1970412 - ], - [ - 83.869642, - 28.1977922 - ], - [ - 83.873613, - 28.1974163 - ], - [ - 83.8764979, - 28.1929673 - ], - [ - 83.8788539, - 28.1928512 - ], - [ - 83.880544, - 28.1935419 - ], - [ - 83.8863616, - 28.1944421 - ], - [ - 83.8903606, - 28.1952104 - ], - [ - 83.8910705, - 28.1945556 - ], - [ - 83.8920928, - 28.1940737 - ], - [ - 83.8921669, - 28.1940156 - ], - [ - 83.8945954, - 28.1921103 - ], - [ - 83.8988185, - 28.1900234 - ], - [ - 83.8985005, - 28.1877996 - ], - [ - 83.900574, - 28.1859576 - ], - [ - 83.9014175, - 28.1833555 - ], - [ - 83.902797, - 28.1808115 - ], - [ - 83.9046768, - 28.1774915 - ], - [ - 83.9070977, - 28.1751288 - ], - [ - 83.9126726, - 28.1723702 - ], - [ - 83.9138611, - 28.1721922 - ], - [ - 83.9152794, - 28.1719797 - ], - [ - 83.9163783, - 28.1706699 - ], - [ - 83.9182631, - 28.1712823 - ], - [ - 83.9212129, - 28.1692563 - ], - [ - 83.923015, - 28.1693353 - ], - [ - 83.923795, - 28.1686432 - ], - [ - 83.9246709, - 28.1673123 - ], - [ - 83.9259464, - 28.1637198 - ], - [ - 83.9260117, - 28.163576 - ], - [ - 83.9270514, - 28.1612855 - ], - [ - 83.9240047, - 28.1584156 - ], - [ - 83.9223786, - 28.1559306 - ], - [ - 83.922839, - 28.1542514 - ], - [ - 83.923315, - 28.1532205 - ], - [ - 83.923483, - 28.1514262 - ], - [ - 83.9263089, - 28.1489943 - ], - [ - 83.9278543, - 28.1479507 - ], - [ - 83.9296436, - 28.1451944 - ], - [ - 83.9315641, - 28.1441592 - ], - [ - 83.9341036, - 28.1440336 - ], - [ - 83.9352923, - 28.1402796 - ], - [ - 83.936968, - 28.1380649 - ], - [ - 83.9421778, - 28.1379635 - ], - [ - 83.9436748, - 28.1383989 - ], - [ - 83.9455267, - 28.1389375 - ], - [ - 83.9497646, - 28.1400039 - ], - [ - 83.951708, - 28.1398937 - ], - [ - 83.9520483, - 28.1398744 - ], - [ - 83.9530411, - 28.1397183 - ], - [ - 83.9534005, - 28.139723 - ], - [ - 83.9537868, - 28.1397302 - ], - [ - 83.9543267, - 28.1395083 - ], - [ - 83.9557194, - 28.1391056 - ], - [ - 83.9583103, - 28.139675 - ], - [ - 83.9600657, - 28.1411375 - ], - [ - 83.9607982, - 28.1409547 - ], - [ - 83.9604527, - 28.1390046 - ], - [ - 83.9613235, - 28.1389802 - ], - [ - 83.9623187, - 28.1404428 - ], - [ - 83.9644196, - 28.1410888 - ], - [ - 83.9650416, - 28.1412838 - ], - [ - 83.9654839, - 28.1420029 - ], - [ - 83.9671149, - 28.1426488 - ], - [ - 83.9688703, - 28.1435751 - ], - [ - 83.96905, - 28.1432095 - ], - [ - 83.9691605, - 28.1427342 - ], - [ - 83.9695337, - 28.1425148 - ], - [ - 83.9701419, - 28.1415397 - ], - [ - 83.9708883, - 28.1420395 - ], - [ - 83.9712893, - 28.1420261 - ], - [ - 83.9719802, - 28.1420029 - ], - [ - 83.9723811, - 28.1422223 - ], - [ - 83.9735145, - 28.1422832 - ], - [ - 83.9750072, - 28.1427707 - ], - [ - 83.9773984, - 28.1431851 - ], - [ - 83.9792229, - 28.1434776 - ], - [ - 83.9801767, - 28.1433192 - ], - [ - 83.9802043, - 28.1427707 - ], - [ - 83.9799693, - 28.1412716 - ], - [ - 83.9796929, - 28.1402356 - ], - [ - 83.9806604, - 28.1399675 - ], - [ - 83.9815865, - 28.1402844 - ], - [ - 83.9823052, - 28.1404794 - ], - [ - 83.9826784, - 28.1399065 - ], - [ - 83.9830102, - 28.1390168 - ], - [ - 83.9833004, - 28.1380173 - ], - [ - 83.983646, - 28.1378589 - ], - [ - 83.9854152, - 28.1386877 - ], - [ - 83.9860648, - 28.1389924 - ], - [ - 83.9866592, - 28.1384074 - ], - [ - 83.9865624, - 28.1369326 - ], - [ - 83.9865762, - 28.136445 - ], - [ - 83.9876682, - 28.1365425 - ], - [ - 83.989548, - 28.1374079 - ], - [ - 83.9905293, - 28.1371642 - ], - [ - 83.990865, - 28.136628 - ], - [ - 83.9908611, - 28.1363231 - ], - [ - 83.9899212, - 28.1361769 - ], - [ - 83.9898521, - 28.1357137 - ], - [ - 83.9901561, - 28.135409 - ], - [ - 83.9897553, - 28.1344948 - ], - [ - 83.9901423, - 28.1342267 - ], - [ - 83.9907297, - 28.135086 - ], - [ - 83.9911168, - 28.1357868 - ], - [ - 83.9918562, - 28.1359819 - ], - [ - 83.9924299, - 28.135604 - ], - [ - 83.9925957, - 28.1349824 - ], - [ - 83.9935771, - 28.1346045 - ], - [ - 83.9941369, - 28.1344766 - ], - [ - 83.994441, - 28.1341962 - ], - [ - 83.9948556, - 28.1334953 - ], - [ - 83.9952012, - 28.1332881 - ], - [ - 83.9955605, - 28.1333552 - ], - [ - 83.9966456, - 28.133922 - ], - [ - 83.9970533, - 28.1339463 - ], - [ - 83.9971086, - 28.1337574 - ], - [ - 83.9969082, - 28.1335075 - ], - [ - 83.9968667, - 28.1330505 - ], - [ - 83.9970671, - 28.1328737 - ], - [ - 83.9977099, - 28.132825 - ], - [ - 83.9986843, - 28.1328493 - ], - [ - 83.9992579, - 28.1324837 - ], - [ - 83.9996795, - 28.1314781 - ], - [ - 84.0003775, - 28.1310088 - ], - [ - 84.0010962, - 28.131216 - ], - [ - 84.0017251, - 28.1316487 - ], - [ - 84.00205, - 28.1313013 - ], - [ - 84.002202, - 28.1306675 - ], - [ - 84.0026804, - 28.1304684 - ], - [ - 84.0027, - 28.1301265 - ], - [ - 84.0023039, - 28.1294722 - ], - [ - 84.0021111, - 28.1294171 - ], - [ - 84.0015727, - 28.1293 - ], - [ - 84.0010523, - 28.1287829 - ], - [ - 84.0007151, - 28.1284963 - ], - [ - 84.0000285, - 28.1278347 - ], - [ - 83.9993492, - 28.1271646 - ], - [ - 83.9987921, - 28.126447 - ], - [ - 83.9987991, - 28.1261572 - ], - [ - 83.9988654, - 28.1257402 - ], - [ - 83.999249, - 28.1251778 - ], - [ - 83.9995471, - 28.1248222 - ], - [ - 83.9995333, - 28.1240451 - ], - [ - 83.999243, - 28.1227835 - ], - [ - 83.9988837, - 28.1218448 - ], - [ - 83.9991705, - 28.1210342 - ], - [ - 84.0002209, - 28.1201961 - ], - [ - 84.0009051, - 28.1197267 - ], - [ - 84.0012058, - 28.1187393 - ], - [ - 84.0014787, - 28.1181846 - ], - [ - 84.0021629, - 28.1180383 - ], - [ - 84.0029197, - 28.1178372 - ], - [ - 84.0034968, - 28.1175507 - ], - [ - 84.0038181, - 28.1173587 - ], - [ - 84.0042224, - 28.1171697 - ], - [ - 84.0043641, - 28.1170936 - ], - [ - 84.0039978, - 28.1168101 - ], - [ - 84.0041706, - 28.1162158 - ], - [ - 84.0047096, - 28.1156947 - ], - [ - 84.0056357, - 28.1153899 - ], - [ - 84.006313, - 28.1153106 - ], - [ - 84.0065929, - 28.1149998 - ], - [ - 84.0066965, - 28.1137106 - ], - [ - 84.0074533, - 28.1132473 - ], - [ - 84.0080373, - 28.112275 - ], - [ - 84.0083344, - 28.1118148 - ], - [ - 84.0086489, - 28.1109309 - ], - [ - 84.0091817, - 28.1100038 - ], - [ - 84.0097192, - 28.1094089 - ], - [ - 84.0108578, - 28.1099865 - ], - [ - 84.0119525, - 28.109827 - ], - [ - 84.0129836, - 28.1099477 - ], - [ - 84.0136238, - 28.1096244 - ], - [ - 84.0139854, - 28.1089477 - ], - [ - 84.0136971, - 28.1081632 - ], - [ - 84.0136775, - 28.1077149 - ], - [ - 84.0136474, - 28.1074886 - ], - [ - 84.0136531, - 28.1072839 - ], - [ - 84.0132552, - 28.1070166 - ], - [ - 84.0125711, - 28.1065338 - ], - [ - 84.0122339, - 28.1057622 - ], - [ - 84.0127812, - 28.1053959 - ], - [ - 84.0137146, - 28.1053226 - ], - [ - 84.0151855, - 28.1052752 - ], - [ - 84.0160798, - 28.1051545 - ], - [ - 84.0164365, - 28.1050855 - ], - [ - 84.0175361, - 28.1044992 - ], - [ - 84.0184108, - 28.1042277 - ], - [ - 84.0192807, - 28.104413 - ], - [ - 84.0206588, - 28.1048657 - ], - [ - 84.0218658, - 28.1050639 - ], - [ - 84.0226526, - 28.104801 - ], - [ - 84.023928, - 28.10512 - ], - [ - 84.0253599, - 28.1053312 - ], - [ - 84.0262932, - 28.1049088 - ], - [ - 84.0270165, - 28.1046631 - ], - [ - 84.0277446, - 28.1047191 - ], - [ - 84.0284337, - 28.1044734 - ], - [ - 84.0285949, - 28.1041587 - ], - [ - 84.0285216, - 28.1034561 - ], - [ - 84.0281991, - 28.1027922 - ], - [ - 84.027554, - 28.101818 - ], - [ - 84.0267917, - 28.1012749 - ], - [ - 84.0258632, - 28.1008007 - ], - [ - 84.0256677, - 28.0997747 - ], - [ - 84.0258046, - 28.0987229 - ], - [ - 84.0261564, - 28.0981883 - ], - [ - 84.0265571, - 28.0973951 - ], - [ - 84.0269481, - 28.0969727 - ], - [ - 84.0262737, - 28.0962829 - ], - [ - 84.0267331, - 28.095619 - ], - [ - 84.0279059, - 28.0955501 - ], - [ - 84.0286487, - 28.0956277 - ], - [ - 84.0289593, - 28.095977 - ], - [ - 84.0291013, - 28.0962323 - ], - [ - 84.0292533, - 28.0965738 - ], - [ - 84.028811, - 28.0965677 - ], - [ - 84.0283411, - 28.0968969 - ], - [ - 84.0282866, - 28.097515 - ], - [ - 84.0274979, - 28.0979089 - ], - [ - 84.0274427, - 28.0986831 - ], - [ - 84.0281338, - 28.0990002 - ], - [ - 84.0283411, - 28.1000792 - ], - [ - 84.0297233, - 28.1001951 - ], - [ - 84.0316228, - 28.0999246 - ], - [ - 84.0338185, - 28.0987189 - ], - [ - 84.0352579, - 28.0969905 - ], - [ - 84.0363721, - 28.0958352 - ], - [ - 84.0378393, - 28.0958596 - ], - [ - 84.0390885, - 28.0966961 - ], - [ - 84.0410829, - 28.094973 - ], - [ - 84.0416393, - 28.0932777 - ], - [ - 84.0409173, - 28.0926368 - ], - [ - 84.0401381, - 28.0922153 - ], - [ - 84.0387072, - 28.0920544 - ], - [ - 84.0379674, - 28.0924079 - ], - [ - 84.0374163, - 28.0922399 - ], - [ - 84.0377575, - 28.0915239 - ], - [ - 84.038686, - 28.0912179 - ], - [ - 84.0409632, - 28.0907566 - ], - [ - 84.0435044, - 28.0899073 - ], - [ - 84.0437683, - 28.089058 - ], - [ - 84.0434604, - 28.0886441 - ], - [ - 84.0437829, - 28.0883509 - ], - [ - 84.0447408, - 28.0880707 - ], - [ - 84.0460015, - 28.0870748 - ], - [ - 84.047106, - 28.0853696 - ], - [ - 84.0473308, - 28.0850226 - ], - [ - 84.0498854, - 28.0837881 - ], - [ - 84.0508696, - 28.0837937 - ], - [ - 84.0517724, - 28.0840715 - ], - [ - 84.0524222, - 28.0848818 - ], - [ - 84.0535702, - 28.0863135 - ], - [ - 84.0555437, - 28.0887105 - ], - [ - 84.0573551, - 28.0879831 - ], - [ - 84.0583824, - 28.0880427 - ], - [ - 84.0606398, - 28.086564 - ], - [ - 84.0623566, - 28.0839403 - ], - [ - 84.0644112, - 28.0830458 - ], - [ - 84.0666957, - 28.0811854 - ], - [ - 84.0678447, - 28.0785973 - ], - [ - 84.0695208, - 28.0777267 - ], - [ - 84.0708726, - 28.0788478 - ], - [ - 84.0713474, - 28.0801736 - ], - [ - 84.0734404, - 28.0832135 - ], - [ - 84.0757745, - 28.0865543 - ], - [ - 84.0772574, - 28.0896132 - ], - [ - 84.0778504, - 28.0904151 - ], - [ - 84.0787809, - 28.0913435 - ], - [ - 84.0792123, - 28.0918886 - ], - [ - 84.0877253, - 28.0945077 - ], - [ - 84.0887205, - 28.0986046 - ], - [ - 84.0930255, - 28.1026504 - ], - [ - 84.0980538, - 28.1074216 - ], - [ - 84.1009855, - 28.108352 - ], - [ - 84.1024819, - 28.1104861 - ], - [ - 84.107739, - 28.110277 - ], - [ - 84.1081907, - 28.109281 - ], - [ - 84.1097228, - 28.1078468 - ], - [ - 84.1102167, - 28.1075724 - ], - [ - 84.1155553, - 28.1073041 - ], - [ - 84.116327, - 28.1082706 - ], - [ - 84.1165537, - 28.109004 - ], - [ - 84.1174757, - 28.109457 - ], - [ - 84.1176903, - 28.1097599 - ], - [ - 84.1181678, - 28.1098971 - ], - [ - 84.1188329, - 28.1099964 - ], - [ - 84.1195834, - 28.1102001 - ], - [ - 84.1197932, - 28.1102756 - ], - [ - 84.1200614, - 28.1103371 - ], - [ - 84.1204691, - 28.1102673 - ], - [ - 84.1206166, - 28.1104625 - ], - [ - 84.12063, - 28.1107913 - ], - [ - 84.1217136, - 28.111326 - ], - [ - 84.1215506, - 28.1120551 - ], - [ - 84.1222179, - 28.112348 - ], - [ - 84.1229745, - 28.1121665 - ], - [ - 84.1242117, - 28.1129615 - ], - [ - 84.125164, - 28.1141647 - ], - [ - 84.1246962, - 28.1142974 - ], - [ - 84.1245568, - 28.1146949 - ], - [ - 84.1249495, - 28.1153603 - ], - [ - 84.1274205, - 28.115436 - ], - [ - 84.1279781, - 28.1170024 - ], - [ - 84.1279525, - 28.1179642 - ], - [ - 84.1281411, - 28.1189244 - ], - [ - 84.1268885, - 28.1200745 - ], - [ - 84.1260563, - 28.1200821 - ], - [ - 84.1257803, - 28.1203255 - ], - [ - 84.1251984, - 28.1208388 - ], - [ - 84.1246064, - 28.1210431 - ], - [ - 84.1242374, - 28.1217619 - ], - [ - 84.1228733, - 28.1225337 - ], - [ - 84.1221355, - 28.1224505 - ], - [ - 84.1215949, - 28.123699 - ], - [ - 84.1222384, - 28.1250231 - ], - [ - 84.1216557, - 28.1256854 - ], - [ - 84.1213048, - 28.1264953 - ], - [ - 84.1212862, - 28.1265383 - ], - [ - 84.1216021, - 28.1275967 - ], - [ - 84.1226674, - 28.1283448 - ], - [ - 84.1230265, - 28.1284391 - ], - [ - 84.1237049, - 28.1286753 - ], - [ - 84.1243486, - 28.128997 - ], - [ - 84.124891, - 28.1294024 - ], - [ - 84.1235053, - 28.1312962 - ], - [ - 84.1229978, - 28.1313449 - ], - [ - 84.1225934, - 28.1320721 - ], - [ - 84.121843, - 28.1323167 - ], - [ - 84.1211986, - 28.132583 - ], - [ - 84.1207963, - 28.1328668 - ], - [ - 84.1194284, - 28.1328857 - ], - [ - 84.1189885, - 28.1328101 - ], - [ - 84.1178298, - 28.1320673 - ], - [ - 84.11717, - 28.1313246 - ], - [ - 84.1163973, - 28.1311737 - ], - [ - 84.1152835, - 28.1331158 - ], - [ - 84.1119826, - 28.1337656 - ], - [ - 84.1099709, - 28.1336237 - ], - [ - 84.1097832, - 28.1335717 - ], - [ - 84.1096932, - 28.1337726 - ], - [ - 84.1095579, - 28.1339903 - ], - [ - 84.109574, - 28.134234 - ], - [ - 84.1097053, - 28.1344634 - ], - [ - 84.1101204, - 28.1347454 - ], - [ - 84.1106147, - 28.1352179 - ], - [ - 84.1105664, - 28.1357288 - ], - [ - 84.1103142, - 28.1360174 - ], - [ - 84.1099859, - 28.1362198 - ], - [ - 84.1089839, - 28.1362728 - ], - [ - 84.10878, - 28.1364479 - ], - [ - 84.1087596, - 28.1367329 - ], - [ - 84.1082972, - 28.1371905 - ], - [ - 84.1073102, - 28.1381981 - ], - [ - 84.1064006, - 28.1392668 - ], - [ - 84.1051805, - 28.1402606 - ], - [ - 84.1039359, - 28.140885 - ], - [ - 84.1033673, - 28.1410174 - ], - [ - 84.103024, - 28.141481 - ], - [ - 84.1030455, - 28.1419635 - ], - [ - 84.1031742, - 28.1425216 - ], - [ - 84.1040255, - 28.1429303 - ], - [ - 84.1046011, - 28.1435055 - ], - [ - 84.1039145, - 28.1440542 - ], - [ - 84.1039359, - 28.1446124 - ], - [ - 84.1044509, - 28.1450097 - ], - [ - 84.1055345, - 28.1448678 - ], - [ - 84.1052341, - 28.146022 - ], - [ - 84.1052127, - 28.1468355 - ], - [ - 84.1059422, - 28.147441 - ], - [ - 84.1059637, - 28.1478572 - ], - [ - 84.1061783, - 28.1481505 - ], - [ - 84.1064358, - 28.1485762 - ], - [ - 84.1069507, - 28.1486708 - ], - [ - 84.1075408, - 28.1489073 - ], - [ - 84.1075338, - 28.1490867 - ], - [ - 84.1074683, - 28.1493879 - ], - [ - 84.1069446, - 28.149493 - ], - [ - 84.1066271, - 28.1496192 - ], - [ - 84.1067791, - 28.1503546 - ], - [ - 84.1072512, - 28.1505249 - ], - [ - 84.1073692, - 28.1507046 - ], - [ - 84.1077232, - 28.1509789 - ], - [ - 84.1084955, - 28.150785 - ], - [ - 84.1091166, - 28.150905 - ], - [ - 84.1094077, - 28.1511965 - ], - [ - 84.1093963, - 28.1515449 - ], - [ - 84.1096759, - 28.152029 - ], - [ - 84.1104269, - 28.1520195 - ], - [ - 84.1112357, - 28.1518365 - ], - [ - 84.1114945, - 28.1522069 - ], - [ - 84.1115105, - 28.1524641 - ], - [ - 84.1110277, - 28.152606 - ], - [ - 84.1103196, - 28.1530128 - ], - [ - 84.1103089, - 28.1534101 - ], - [ - 84.1106804, - 28.1536308 - ], - [ - 84.1111187, - 28.1536171 - ], - [ - 84.1111981, - 28.1539403 - ], - [ - 84.1113611, - 28.1547116 - ], - [ - 84.11165, - 28.1552546 - ], - [ - 84.1115521, - 28.1556068 - ], - [ - 84.111489, - 28.1559073 - ], - [ - 84.1110277, - 28.1560681 - ], - [ - 84.1112959, - 28.1565222 - ], - [ - 84.1109741, - 28.1567776 - ], - [ - 84.1114139, - 28.1571938 - ], - [ - 84.1117358, - 28.1576005 - ], - [ - 84.1119182, - 28.157837 - ], - [ - 84.1122615, - 28.158064 - ], - [ - 84.1125619, - 28.1582437 - ], - [ - 84.1128516, - 28.1584329 - ], - [ - 84.113152, - 28.1584235 - ], - [ - 84.1146908, - 28.1582668 - ], - [ - 84.1149223, - 28.1585322 - ], - [ - 84.1146165, - 28.1588775 - ], - [ - 84.1147502, - 28.160076 - ], - [ - 84.1150735, - 28.1599454 - ], - [ - 84.1154855, - 28.1598612 - ], - [ - 84.1156143, - 28.1602821 - ], - [ - 84.1159093, - 28.1605659 - ], - [ - 84.115684, - 28.161072 - ], - [ - 84.1166121, - 28.1611145 - ], - [ - 84.1166711, - 28.1611527 - ], - [ - 84.1166739, - 28.1614197 - ], - [ - 84.1160917, - 28.1619422 - ], - [ - 84.1158128, - 28.1624813 - ], - [ - 84.1157269, - 28.1629542 - ], - [ - 84.1165423, - 28.1632002 - ], - [ - 84.116537, - 28.1636447 - ], - [ - 84.1167033, - 28.1638765 - ], - [ - 84.1168468, - 28.1640928 - ], - [ - 84.1171271, - 28.1640834 - ], - [ - 84.1173631, - 28.1641366 - ], - [ - 84.1174918, - 28.1639663 - ], - [ - 84.1177426, - 28.1639486 - ], - [ - 84.1180336, - 28.1640491 - ], - [ - 84.1182241, - 28.1641437 - ], - [ - 84.1183233, - 28.1642784 - ], - [ - 84.1183743, - 28.1644842 - ], - [ - 84.1182777, - 28.1647088 - ], - [ - 84.118377, - 28.1647868 - ], - [ - 84.1185165, - 28.1647986 - ], - [ - 84.1187033, - 28.1648447 - ], - [ - 84.1188477, - 28.1648897 - ], - [ - 84.1189107, - 28.1648365 - ], - [ - 84.119069, - 28.1646331 - ], - [ - 84.1191521, - 28.1645173 - ], - [ - 84.1192192, - 28.1644322 - ], - [ - 84.1193131, - 28.1644369 - ], - [ - 84.1194338, - 28.1643967 - ], - [ - 84.1199112, - 28.1648837 - ], - [ - 84.1202304, - 28.1652408 - ], - [ - 84.1204181, - 28.165605 - ], - [ - 84.1207185, - 28.1658698 - ], - [ - 84.1213569, - 28.1660117 - ], - [ - 84.1216895, - 28.1659691 - ], - [ - 84.1220006, - 28.1658249 - ], - [ - 84.1223306, - 28.1658864 - ], - [ - 84.122749, - 28.1659005 - ], - [ - 84.1229662, - 28.1658627 - ], - [ - 84.1231808, - 28.1657185 - ], - [ - 84.1234678, - 28.1657185 - ], - [ - 84.1254956, - 28.1651699 - ], - [ - 84.1305895, - 28.166867 - ], - [ - 84.1308538, - 28.1672882 - ], - [ - 84.1326014, - 28.1685192 - ], - [ - 84.1328363, - 28.1687416 - ], - [ - 84.1331828, - 28.1690289 - ], - [ - 84.1333786, - 28.1692488 - ], - [ - 84.1335636, - 28.1693765 - ], - [ - 84.1395611, - 28.1730041 - ], - [ - 84.1406252, - 28.1736014 - ], - [ - 84.1411924, - 28.1735645 - ], - [ - 84.1416171, - 28.1735401 - ], - [ - 84.142055, - 28.1735837 - ], - [ - 84.1429195, - 28.173552 - ], - [ - 84.143402, - 28.1736987 - ], - [ - 84.1437296, - 28.1740107 - ], - [ - 84.1444602, - 28.1747602 - ], - [ - 84.1447779, - 28.1751245 - ], - [ - 84.1447216, - 28.1753514 - ], - [ - 84.1445366, - 28.1757179 - ], - [ - 84.1443971, - 28.1759354 - ], - [ - 84.1442952, - 28.176056 - ], - [ - 84.1440725, - 28.176231 - ], - [ - 84.143697, - 28.1766518 - ], - [ - 84.1433242, - 28.1769734 - ], - [ - 84.1432571, - 28.177049 - ], - [ - 84.1431981, - 28.1771885 - ], - [ - 84.1431954, - 28.177328 - ], - [ - 84.143225, - 28.1774297 - ], - [ - 84.1434409, - 28.1776957 - ], - [ - 84.1434945, - 28.1778541 - ], - [ - 84.1435213, - 28.1780551 - ], - [ - 84.1436179, - 28.1782123 - ], - [ - 84.1437453, - 28.1788483 - ], - [ - 84.1437292, - 28.1790694 - ], - [ - 84.1436917, - 28.1791899 - ], - [ - 84.1436326, - 28.1795635 - ], - [ - 84.1434234, - 28.1799181 - ], - [ - 84.1432142, - 28.1802125 - ], - [ - 84.1430372, - 28.1806475 - ], - [ - 84.1430278, - 28.1808899 - ], - [ - 84.1430479, - 28.1810116 - ], - [ - 84.1431753, - 28.1811771 - ], - [ - 84.1433403, - 28.1813414 - ], - [ - 84.1434811, - 28.181449 - ], - [ - 84.1435991, - 28.1816287 - ], - [ - 84.1436152, - 28.1818367 - ], - [ - 84.1435661, - 28.182088 - ], - [ - 84.1435482, - 28.1821819 - ], - [ - 84.1435468, - 28.1822079 - ], - [ - 84.1435656, - 28.18239 - ], - [ - 84.1436715, - 28.1826158 - ], - [ - 84.1439049, - 28.182955 - ], - [ - 84.1439022, - 28.1830035 - ], - [ - 84.1438901, - 28.1830271 - ], - [ - 84.1438553, - 28.1830673 - ], - [ - 84.1438338, - 28.1830827 - ], - [ - 84.1438083, - 28.1830921 - ], - [ - 84.1436997, - 28.1831205 - ], - [ - 84.1436192, - 28.1831288 - ], - [ - 84.1434422, - 28.1831312 - ], - [ - 84.1432732, - 28.1830969 - ], - [ - 84.1430975, - 28.1830153 - ], - [ - 84.1428186, - 28.1829716 - ], - [ - 84.1426523, - 28.1830094 - ], - [ - 84.1424873, - 28.1831406 - ], - [ - 84.1424377, - 28.1832328 - ], - [ - 84.1424002, - 28.1833688 - ], - [ - 84.1424605, - 28.1837648 - ], - [ - 84.1424485, - 28.1840473 - ], - [ - 84.1424069, - 28.1841466 - ], - [ - 84.1422983, - 28.1843073 - ], - [ - 84.1422594, - 28.1844102 - ], - [ - 84.142258, - 28.1846478 - ], - [ - 84.1422299, - 28.1847234 - ], - [ - 84.1419844, - 28.1851265 - ], - [ - 84.142026, - 28.1854953 - ], - [ - 84.1420783, - 28.1856927 - ], - [ - 84.1421212, - 28.1857329 - ], - [ - 84.1422594, - 28.1860084 - ], - [ - 84.1423948, - 28.186071 - ], - [ - 84.1425866, - 28.1860769 - ], - [ - 84.142887, - 28.1860344 - ], - [ - 84.1431244, - 28.1859788 - ], - [ - 84.1433805, - 28.1859918 - ], - [ - 84.1434315, - 28.1860261 - ], - [ - 84.1434798, - 28.1861207 - ], - [ - 84.1435441, - 28.1863051 - ], - [ - 84.1434999, - 28.1864966 - ], - [ - 84.1434787, - 28.186543 - ], - [ - 84.1434342, - 28.1865899 - ], - [ - 84.1432625, - 28.1866857 - ], - [ - 84.1430037, - 28.1868725 - ], - [ - 84.1427381, - 28.1871467 - ], - [ - 84.142478, - 28.1873358 - ], - [ - 84.1423009, - 28.1874954 - ], - [ - 84.1422178, - 28.1875923 - ], - [ - 84.142085, - 28.1878512 - ], - [ - 84.1420111, - 28.1879285 - ], - [ - 84.1418838, - 28.1880191 - ], - [ - 84.1418007, - 28.1881183 - ], - [ - 84.1416076, - 28.18835 - ], - [ - 84.1414377, - 28.1884601 - ], - [ - 84.1414976, - 28.188603 - ], - [ - 84.1416961, - 28.1887827 - ], - [ - 84.1417712, - 28.188915 - ], - [ - 84.1418436, - 28.1891042 - ], - [ - 84.1418919, - 28.18935 - ], - [ - 84.1419965, - 28.1896361 - ], - [ - 84.1420287, - 28.1896763 - ], - [ - 84.1421628, - 28.1897708 - ], - [ - 84.1422996, - 28.1900451 - ], - [ - 84.1424249, - 28.1901661 - ], - [ - 84.1424337, - 28.1901822 - ], - [ - 84.1425893, - 28.1902437 - ], - [ - 84.142769, - 28.1902295 - ], - [ - 84.1429085, - 28.1901585 - ], - [ - 84.1430426, - 28.1900616 - ], - [ - 84.1432008, - 28.189986 - ], - [ - 84.1433161, - 28.1899505 - ], - [ - 84.1434503, - 28.1899458 - ], - [ - 84.1435683, - 28.1899552 - ], - [ - 84.1437453, - 28.1900025 - ], - [ - 84.1441154, - 28.1901964 - ], - [ - 84.1443139, - 28.1902626 - ], - [ - 84.1446197, - 28.1903477 - ], - [ - 84.1448075, - 28.1903713 - ], - [ - 84.1452527, - 28.1903477 - ], - [ - 84.1458911, - 28.1901751 - ], - [ - 84.1460118, - 28.1901656 - ], - [ - 84.1464972, - 28.1902271 - ], - [ - 84.1465563, - 28.1902602 - ], - [ - 84.1466528, - 28.1903831 - ], - [ - 84.1467816, - 28.1908158 - ], - [ - 84.1468567, - 28.19096 - ], - [ - 84.1468996, - 28.1909978 - ], - [ - 84.1473582, - 28.1911704 - ], - [ - 84.1474462, - 28.1912353 - ], - [ - 84.1473301, - 28.1916396 - ], - [ - 84.1471799, - 28.1916774 - ], - [ - 84.14685, - 28.1917413 - ], - [ - 84.1464932, - 28.191772 - ], - [ - 84.1461734, - 28.1917532 - ], - [ - 84.1456829, - 28.1917704 - ], - [ - 84.1455181, - 28.1921675 - ], - [ - 84.1451794, - 28.1924756 - ], - [ - 84.1448584, - 28.1929363 - ], - [ - 84.1445795, - 28.1944303 - ], - [ - 84.1446117, - 28.1952246 - ], - [ - 84.1445473, - 28.1959149 - ], - [ - 84.1444615, - 28.1977398 - ], - [ - 84.1430882, - 28.1986759 - ], - [ - 84.1419402, - 28.1992716 - ], - [ - 84.140878, - 28.1996498 - ], - [ - 84.1398588, - 28.1997065 - ], - [ - 84.1392819, - 28.2004625 - ], - [ - 84.1390097, - 28.2004377 - ], - [ - 84.13821, - 28.2005652 - ], - [ - 84.137477, - 28.2007183 - ], - [ - 84.1365596, - 28.200828 - ], - [ - 84.1363719, - 28.2009074 - ], - [ - 84.1358516, - 28.2009216 - ], - [ - 84.1350081, - 28.200915 - ], - [ - 84.1342326, - 28.2009605 - ], - [ - 84.133856, - 28.2010681 - ], - [ - 84.1333088, - 28.2012147 - ], - [ - 84.1328952, - 28.2012917 - ], - [ - 84.1323272, - 28.2016496 - ], - [ - 84.1316995, - 28.2021886 - ], - [ - 84.1311577, - 28.2025951 - ], - [ - 84.1307929, - 28.2030348 - ], - [ - 84.1301921, - 28.2033515 - ], - [ - 84.1297683, - 28.2034744 - ], - [ - 84.1293821, - 28.2035548 - ], - [ - 84.1287437, - 28.2037014 - ], - [ - 84.1283736, - 28.2036068 - ], - [ - 84.1278834, - 28.2033401 - ], - [ - 84.1276869, - 28.2032853 - ], - [ - 84.1273222, - 28.2033184 - ], - [ - 84.1271451, - 28.2034792 - ], - [ - 84.1268876, - 28.2039472 - ], - [ - 84.1266999, - 28.2049825 - ], - [ - 84.1264048, - 28.2052615 - ], - [ - 84.1262734, - 28.2068995 - ], - [ - 84.1266811, - 28.2079963 - ], - [ - 84.127475, - 28.2091119 - ], - [ - 84.1252864, - 28.2093199 - ], - [ - 84.1232693, - 28.2098304 - ], - [ - 84.121459, - 28.2104466 - ], - [ - 84.1208367, - 28.2104277 - ], - [ - 84.1199355, - 28.2104939 - ], - [ - 84.1185944, - 28.2103615 - ], - [ - 84.1181331, - 28.2103426 - ], - [ - 84.1167169, - 28.2101819 - ], - [ - 84.1155152, - 28.2102292 - ], - [ - 84.1138845, - 28.2101535 - ], - [ - 84.1125326, - 28.2100874 - ], - [ - 84.1117709, - 28.2101535 - ], - [ - 84.1100328, - 28.2108059 - ], - [ - 84.109314, - 28.211099 - ], - [ - 84.1086595, - 28.2115906 - ], - [ - 84.108681, - 28.2127062 - ], - [ - 84.1087024, - 28.21368 - ], - [ - 84.108563, - 28.2145876 - ], - [ - 84.1081586, - 28.2155962 - ], - [ - 84.1081184, - 28.2157912 - ], - [ - 84.1081023, - 28.2159649 - ], - [ - 84.1081801, - 28.2161445 - ], - [ - 84.1082726, - 28.2162993 - ], - [ - 84.1084027, - 28.2164412 - ], - [ - 84.1086776, - 28.2166822 - ], - [ - 84.1087393, - 28.216876 - ], - [ - 84.1087728, - 28.2169765 - ], - [ - 84.1088895, - 28.217214 - ], - [ - 84.1089297, - 28.2174433 - ], - [ - 84.1089123, - 28.2178179 - ], - [ - 84.1090397, - 28.218001 - ], - [ - 84.109324, - 28.2181346 - ], - [ - 84.1094045, - 28.2181866 - ], - [ - 84.1095909, - 28.2182267 - ], - [ - 84.1097277, - 28.2182906 - ], - [ - 84.1098176, - 28.2184548 - ], - [ - 84.109839, - 28.2186309 - ], - [ - 84.1098453, - 28.2187383 - ], - [ - 84.1092401, - 28.2189404 - ], - [ - 84.1084636, - 28.2208221 - ], - [ - 84.1071092, - 28.2220408 - ], - [ - 84.1045664, - 28.2220625 - ], - [ - 84.101357, - 28.2223018 - ], - [ - 84.0988635, - 28.2234547 - ], - [ - 84.0977232, - 28.2244759 - ], - [ - 84.0949552, - 28.2224512 - ], - [ - 84.0925072, - 28.220402 - ], - [ - 84.0901533, - 28.2181738 - ], - [ - 84.0898431, - 28.2180625 - ], - [ - 84.0896527, - 28.2175922 - ], - [ - 84.0894918, - 28.2174314 - ], - [ - 84.0892262, - 28.2174055 - ], - [ - 84.089119, - 28.2174385 - ], - [ - 84.0889983, - 28.2176938 - ], - [ - 84.0889848, - 28.2179963 - ], - [ - 84.0889822, - 28.2183556 - ], - [ - 84.0889392, - 28.2185966 - ], - [ - 84.0888413, - 28.218794 - ], - [ - 84.0886268, - 28.2190563 - ], - [ - 84.0883612, - 28.2192643 - ], - [ - 84.0880367, - 28.2194014 - ], - [ - 84.0878087, - 28.2194983 - ], - [ - 84.0875968, - 28.2195904 - ], - [ - 84.0872602, - 28.2196436 - ], - [ - 84.0870134, - 28.2197122 - ], - [ - 84.0867988, - 28.219724 - ], - [ - 84.0866701, - 28.2198043 - ], - [ - 84.0863777, - 28.2200738 - ], - [ - 84.0863053, - 28.2201517 - ], - [ - 84.0860907, - 28.2201328 - ], - [ - 84.0860183, - 28.2200643 - ], - [ - 84.0860103, - 28.2199509 - ], - [ - 84.0859942, - 28.2197925 - ], - [ - 84.0859405, - 28.2195018 - ], - [ - 84.0858815, - 28.2194238 - ], - [ - 84.085785, - 28.2193458 - ], - [ - 84.085675, - 28.2191993 - ], - [ - 84.0855409, - 28.2190669 - ], - [ - 84.0854282, - 28.2189157 - ], - [ - 84.0851922, - 28.2187195 - ], - [ - 84.0851654, - 28.218365 - ], - [ - 84.0851305, - 28.2182516 - ], - [ - 84.0850232, - 28.2180979 - ], - [ - 84.0849776, - 28.2179136 - ], - [ - 84.0851734, - 28.217578 - ], - [ - 84.08527, - 28.2175047 - ], - [ - 84.0853209, - 28.2174007 - ], - [ - 84.085278, - 28.2172849 - ], - [ - 84.0851546, - 28.2171833 - ], - [ - 84.084991, - 28.2169871 - ], - [ - 84.0849132, - 28.2168808 - ], - [ - 84.0847094, - 28.2166161 - ], - [ - 84.084645, - 28.2164128 - ], - [ - 84.0846142, - 28.2156104 - ], - [ - 84.084464, - 28.2144665 - ], - [ - 84.0841797, - 28.2136298 - ], - [ - 84.0835842, - 28.2129491 - ], - [ - 84.0828707, - 28.2124291 - ], - [ - 84.0824175, - 28.2119186 - ], - [ - 84.0799042, - 28.2112047 - ], - [ - 84.077855, - 28.2107037 - ], - [ - 84.0765407, - 28.2105524 - ], - [ - 84.0755537, - 28.2106186 - ], - [ - 84.0748188, - 28.2103633 - ], - [ - 84.0743789, - 28.2103491 - ], - [ - 84.0738263, - 28.2103255 - ], - [ - 84.0735528, - 28.2103869 - ], - [ - 84.0730914, - 28.2104768 - ], - [ - 84.0724852, - 28.2104768 - ], - [ - 84.0718254, - 28.2103491 - ], - [ - 84.0709725, - 28.2101459 - ], - [ - 84.0705755, - 28.210004 - ], - [ - 84.0700981, - 28.2096731 - ], - [ - 84.0697387, - 28.2096968 - ], - [ - 84.0689769, - 28.2097015 - ], - [ - 84.0687731, - 28.2097488 - ], - [ - 84.067963, - 28.2097771 - ], - [ - 84.0676894, - 28.2105335 - ], - [ - 84.0677377, - 28.2107509 - ], - [ - 84.0676626, - 28.211096 - ], - [ - 84.0674051, - 28.2114458 - ], - [ - 84.0673998, - 28.2118004 - ], - [ - 84.0674588, - 28.2125591 - ], - [ - 84.0676868, - 28.2126134 - ], - [ - 84.0681159, - 28.2125591 - ], - [ - 84.0682849, - 28.2124291 - ], - [ - 84.0689474, - 28.2122896 - ], - [ - 84.0698513, - 28.212344 - ], - [ - 84.0708974, - 28.2123794 - ], - [ - 84.0721017, - 28.2123369 - ], - [ - 84.0728312, - 28.2120367 - ], - [ - 84.0738102, - 28.2116987 - ], - [ - 84.074623, - 28.2117247 - ], - [ - 84.0755215, - 28.2119469 - ], - [ - 84.0760874, - 28.2119871 - ], - [ - 84.076351, - 28.212061 - ], - [ - 84.0769216, - 28.2121939 - ], - [ - 84.0775774, - 28.2123978 - ], - [ - 84.0780173, - 28.2125283 - ], - [ - 84.0782094, - 28.2125452 - ], - [ - 84.0784454, - 28.212596 - ], - [ - 84.0786667, - 28.212661 - ], - [ - 84.0789805, - 28.2127792 - ], - [ - 84.0791965, - 28.2129056 - ], - [ - 84.0793681, - 28.2129954 - ], - [ - 84.0797275, - 28.2129954 - ], - [ - 84.0799187, - 28.2128417 - ], - [ - 84.0802131, - 28.2126196 - ], - [ - 84.0805674, - 28.2124895 - ], - [ - 84.0807089, - 28.2125754 - ], - [ - 84.0811462, - 28.2130524 - ], - [ - 84.0815568, - 28.2134871 - ], - [ - 84.0819779, - 28.2138984 - ], - [ - 84.082097, - 28.2139727 - ], - [ - 84.0821535, - 28.2143294 - ], - [ - 84.082167, - 28.2146464 - ], - [ - 84.0820168, - 28.2150245 - ], - [ - 84.0818237, - 28.2153932 - ], - [ - 84.081534, - 28.2157809 - ], - [ - 84.081298, - 28.2160928 - ], - [ - 84.0808152, - 28.2166979 - ], - [ - 84.0805362, - 28.2169531 - ], - [ - 84.080032, - 28.2173218 - ], - [ - 84.0798174, - 28.2175109 - ], - [ - 84.0793131, - 28.217804 - ], - [ - 84.0788732, - 28.2182105 - ], - [ - 84.0786587, - 28.2183618 - ], - [ - 84.0784119, - 28.2185508 - ], - [ - 84.0780257, - 28.2187115 - ], - [ - 84.0777145, - 28.2188439 - ], - [ - 84.0774892, - 28.2190141 - ], - [ - 84.0771244, - 28.2193544 - ], - [ - 84.0765665, - 28.2194773 - ], - [ - 84.0758155, - 28.2194773 - ], - [ - 84.0748177, - 28.21943 - ], - [ - 84.0742062, - 28.2192031 - ], - [ - 84.0733157, - 28.2187872 - ], - [ - 84.0723394, - 28.2183334 - ], - [ - 84.071701, - 28.2179411 - ], - [ - 84.0712665, - 28.2177425 - ], - [ - 84.071009, - 28.2176433 - ], - [ - 84.0706389, - 28.2177189 - ], - [ - 84.0702526, - 28.2178513 - ], - [ - 84.0698164, - 28.2177967 - ], - [ - 84.0696134, - 28.2176069 - ], - [ - 84.0691368, - 28.217128 - ], - [ - 84.0686701, - 28.2172037 - ], - [ - 84.0682893, - 28.2174684 - ], - [ - 84.068182, - 28.2176433 - ], - [ - 84.0680371, - 28.2178465 - ], - [ - 84.0678494, - 28.2180262 - ], - [ - 84.0674417, - 28.2182909 - ], - [ - 84.0670769, - 28.2185319 - ], - [ - 84.0665619, - 28.2186501 - ], - [ - 84.0661381, - 28.2186737 - ], - [ - 84.0655427, - 28.2186548 - ], - [ - 84.0651082, - 28.2188061 - ], - [ - 84.0647487, - 28.2191039 - ], - [ - 84.0644161, - 28.2195907 - ], - [ - 84.0637027, - 28.220106 - ], - [ - 84.0632521, - 28.2203896 - ], - [ - 84.0629624, - 28.2205786 - ], - [ - 84.0627585, - 28.220919 - ], - [ - 84.0619968, - 28.2211175 - ], - [ - 84.0610151, - 28.2211175 - ], - [ - 84.0605484, - 28.2208433 - ], - [ - 84.0599261, - 28.2206779 - ], - [ - 84.0597031, - 28.220739 - ], - [ - 84.0594697, - 28.220567 - ], - [ - 84.0591023, - 28.2206067 - ], - [ - 84.0588555, - 28.2206256 - ], - [ - 84.0586114, - 28.2204063 - ], - [ - 84.0583834, - 28.2201151 - ], - [ - 84.0580106, - 28.2199497 - ], - [ - 84.0578255, - 28.2197937 - ], - [ - 84.0577243, - 28.219614 - ], - [ - 84.0575412, - 28.2194604 - ], - [ - 84.0571483, - 28.2193622 - ], - [ - 84.0568841, - 28.2193167 - ], - [ - 84.0567054, - 28.2192621 - ], - [ - 84.0565763, - 28.219172 - ], - [ - 84.0562913, - 28.2190484 - ], - [ - 84.0558863, - 28.2190721 - ], - [ - 84.0555547, - 28.2191487 - ], - [ - 84.0552184, - 28.2191981 - ], - [ - 84.0549958, - 28.2191489 - ], - [ - 84.0548, - 28.2193115 - ], - [ - 84.0545774, - 28.2193096 - ], - [ - 84.0544245, - 28.2194344 - ], - [ - 84.0539873, - 28.2194136 - ], - [ - 84.0538988, - 28.219321 - ], - [ - 84.0537056, - 28.2190563 - ], - [ - 84.0533543, - 28.2189788 - ], - [ - 84.0531156, - 28.2188294 - ], - [ - 84.0528688, - 28.2187632 - ], - [ - 84.0523887, - 28.218818 - ], - [ - 84.0519917, - 28.2188748 - ], - [ - 84.0517101, - 28.2188861 - ], - [ - 84.0514124, - 28.2187141 - ], - [ - 84.0510583, - 28.2184683 - ], - [ - 84.0507364, - 28.2183359 - ], - [ - 84.0505219, - 28.2183737 - ], - [ - 84.050208, - 28.2182527 - ], - [ - 84.0499935, - 28.2180069 - ], - [ - 84.0498429, - 28.2177456 - ], - [ - 84.0494999, - 28.2177044 - ], - [ - 84.0489447, - 28.217608 - ], - [ - 84.0487633, - 28.2176208 - ], - [ - 84.0485672, - 28.2176625 - ], - [ - 84.0503473, - 28.2195914 - ], - [ - 84.0523932, - 28.2218409 - ], - [ - 84.0560652, - 28.2249223 - ], - [ - 84.0558029, - 28.2265554 - ], - [ - 84.0556106, - 28.2290667 - ], - [ - 84.0535298, - 28.230484 - ], - [ - 84.0527429, - 28.2323173 - ], - [ - 84.0529178, - 28.2345665 - ], - [ - 84.0540194, - 28.2372471 - ], - [ - 84.0551035, - 28.2378941 - ], - [ - 84.0560303, - 28.2410982 - ], - [ - 84.0567996, - 28.2421457 - ], - [ - 84.0575772, - 28.2421871 - ], - [ - 84.0576518, - 28.2428677 - ], - [ - 84.0575459, - 28.2430413 - ], - [ - 84.057027, - 28.243948 - ], - [ - 84.0577089, - 28.2450109 - ], - [ - 84.0572368, - 28.2466437 - ], - [ - 84.058251, - 28.2479068 - ], - [ - 84.0578875, - 28.248545 - ], - [ - 84.0574915, - 28.2489592 - ], - [ - 84.0574339, - 28.2490338 - ], - [ - 84.0582262, - 28.2498802 - ], - [ - 84.0591264, - 28.2502166 - ], - [ - 84.0595978, - 28.2508715 - ], - [ - 84.0608914, - 28.2514403 - ], - [ - 84.0599996, - 28.2522804 - ], - [ - 84.0598719, - 28.2530217 - ], - [ - 84.0602957, - 28.2533947 - ], - [ - 84.0615935, - 28.2540484 - ], - [ - 84.0611588, - 28.2548076 - ], - [ - 84.0611624, - 28.255771 - ], - [ - 84.0617778, - 28.2562164 - ], - [ - 84.0621971, - 28.2580534 - ], - [ - 84.0628773, - 28.2607718 - ], - [ - 84.0613813, - 28.2631546 - ], - [ - 84.0616888, - 28.264067 - ], - [ - 84.0614824, - 28.2645728 - ], - [ - 84.0616864, - 28.2659915 - ], - [ - 84.062117, - 28.2671057 - ], - [ - 84.0612002, - 28.2702798 - ], - [ - 84.0614106, - 28.2714159 - ], - [ - 84.0608593, - 28.2723156 - ], - [ - 84.0600828, - 28.2726644 - ], - [ - 84.0601565, - 28.2733319 - ], - [ - 84.0602263, - 28.2739997 - ], - [ - 84.0597688, - 28.2748294 - ], - [ - 84.060011, - 28.2763543 - ], - [ - 84.0604058, - 28.2768521 - ], - [ - 84.0606749, - 28.277745 - ], - [ - 84.0601276, - 28.2779583 - ], - [ - 84.0600918, - 28.2782586 - ], - [ - 84.0611415, - 28.2792699 - ], - [ - 84.0612491, - 28.2799178 - ], - [ - 84.0610876, - 28.2805578 - ], - [ - 84.0607826, - 28.2807395 - ], - [ - 84.0603699, - 28.2812689 - ], - [ - 84.059688, - 28.2815217 - ], - [ - 84.0586832, - 28.282375 - ], - [ - 84.0578398, - 28.2823671 - ], - [ - 84.0567991, - 28.2834969 - ], - [ - 84.0564761, - 28.2837498 - ], - [ - 84.0562697, - 28.2845556 - ], - [ - 84.0556058, - 28.2851798 - ], - [ - 84.0548432, - 28.2854879 - ], - [ - 84.0540088, - 28.2868942 - ], - [ - 84.0537037, - 28.2876527 - ], - [ - 84.053393, - 28.2876967 - ], - [ - 84.0527278, - 28.2879612 - ], - [ - 84.0514403, - 28.2883769 - ], - [ - 84.0498525, - 28.2891327 - ], - [ - 84.0481423, - 28.2900973 - ], - [ - 84.0473054, - 28.2909098 - ], - [ - 84.0460974, - 28.2920236 - ], - [ - 84.044709, - 28.2931393 - ], - [ - 84.0433843, - 28.2939236 - ], - [ - 84.0415054, - 28.2945554 - ], - [ - 84.0387116, - 28.2959262 - ], - [ - 84.0378893, - 28.2963225 - ], - [ - 84.0372777, - 28.2964642 - ], - [ - 84.0370272, - 28.2965024 - ], - [ - 84.036641, - 28.2964269 - ], - [ - 84.036119, - 28.2964736 - ], - [ - 84.0357328, - 28.2967381 - ], - [ - 84.0352607, - 28.2969082 - ], - [ - 84.0350638, - 28.2970692 - ], - [ - 84.0345955, - 28.2978056 - ], - [ - 84.0344775, - 28.2980796 - ], - [ - 84.0343058, - 28.2982496 - ], - [ - 84.0338407, - 28.2985146 - ], - [ - 84.0336299, - 28.2987314 - ], - [ - 84.033587, - 28.2989676 - ], - [ - 84.033469, - 28.2991754 - ], - [ - 84.0331364, - 28.2993076 - ], - [ - 84.0327609, - 28.2994304 - ], - [ - 84.0325034, - 28.299591 - ], - [ - 84.0323923, - 28.2998182 - ], - [ - 84.0321601, - 28.3000634 - ], - [ - 84.0317524, - 28.3003279 - ], - [ - 84.0310942, - 28.301084 - ], - [ - 84.0308511, - 28.301537 - ], - [ - 84.0305293, - 28.3018487 - ], - [ - 84.0304826, - 28.3021609 - ], - [ - 84.0302181, - 28.3025666 - ], - [ - 84.029914, - 28.3030489 - ], - [ - 84.0294956, - 28.3039746 - ], - [ - 84.0293062, - 28.3043331 - ], - [ - 84.0292096, - 28.3044653 - ], - [ - 84.0290272, - 28.3047298 - ], - [ - 84.0289843, - 28.3050699 - ], - [ - 84.0288234, - 28.305391 - ], - [ - 84.0284264, - 28.3057972 - ], - [ - 84.0276432, - 28.3064679 - ], - [ - 84.0272463, - 28.3067702 - ], - [ - 84.0267742, - 28.3069969 - ], - [ - 84.0263665, - 28.3071197 - ], - [ - 84.0259229, - 28.3072901 - ], - [ - 84.025712, - 28.3075919 - ], - [ - 84.0256155, - 28.307932 - ], - [ - 84.0257228, - 28.308187 - ], - [ - 84.0258837, - 28.3086688 - ], - [ - 84.0256584, - 28.308971 - ], - [ - 84.0253687, - 28.30933 - ], - [ - 84.0253328, - 28.3096421 - ], - [ - 84.0251541, - 28.3100856 - ], - [ - 84.0251327, - 28.3104445 - ], - [ - 84.0252722, - 28.3108035 - ], - [ - 84.0255726, - 28.3111907 - ], - [ - 84.0259695, - 28.3117102 - ], - [ - 84.0261412, - 28.3122392 - ], - [ - 84.0260017, - 28.3133443 - ], - [ - 84.0259695, - 28.3136088 - ], - [ - 84.0257657, - 28.3137882 - ], - [ - 84.0254009, - 28.313996 - ], - [ - 84.0251112, - 28.314251 - ], - [ - 84.0248071, - 28.3146104 - ], - [ - 84.0240131, - 28.315026 - ], - [ - 84.0232229, - 28.3154884 - ], - [ - 84.0229762, - 28.315715 - ], - [ - 84.0229225, - 28.316159 - ], - [ - 84.0229547, - 28.3164612 - ], - [ - 84.0230084, - 28.3167162 - ], - [ - 84.0230727, - 28.3170846 - ], - [ - 84.0231264, - 28.3174813 - ], - [ - 84.0230298, - 28.317963 - ], - [ - 84.0230835, - 28.3186052 - ], - [ - 84.0231247, - 28.3196771 - ], - [ - 84.021115, - 28.3215662 - ], - [ - 84.0200932, - 28.3243697 - ], - [ - 84.0200932, - 28.3260338 - ], - [ - 84.0201839, - 28.3283507 - ], - [ - 84.01794, - 28.3293502 - ], - [ - 84.019762, - 28.3313197 - ], - [ - 84.018248, - 28.3329141 - ], - [ - 84.0138307, - 28.3333956 - ], - [ - 84.0124519, - 28.3341571 - ], - [ - 84.010262, - 28.3357752 - ], - [ - 84.0079911, - 28.3373219 - ], - [ - 84.0073152, - 28.3390351 - ], - [ - 84.0058824, - 28.3409625 - ], - [ - 84.0039629, - 28.3408435 - ], - [ - 84.0007998, - 28.3412243 - ], - [ - 83.9988533, - 28.3397728 - ], - [ - 83.9975826, - 28.3389638 - ], - [ - 83.9977719, - 28.3373219 - ], - [ - 83.9967175, - 28.3363225 - ], - [ - 83.9950499, - 28.3346651 - ], - [ - 83.9945128, - 28.3344014 - ], - [ - 83.994315, - 28.3341626 - ], - [ - 83.9943432, - 28.3338242 - ], - [ - 83.9943489, - 28.3336351 - ], - [ - 83.9942697, - 28.3334261 - ], - [ - 83.9942132, - 28.333237 - ], - [ - 83.9941793, - 28.3330728 - ], - [ - 83.9941454, - 28.3329086 - ], - [ - 83.9940267, - 28.332824 - ], - [ - 83.9938797, - 28.3326797 - ], - [ - 83.9937383, - 28.3324906 - ], - [ - 83.9936479, - 28.3323363 - ], - [ - 83.9935122, - 28.3322069 - ], - [ - 83.9933596, - 28.3321771 - ], - [ - 83.9930882, - 28.3320776 - ], - [ - 83.9927207, - 28.3319681 - ], - [ - 83.9925511, - 28.331784 - ], - [ - 83.9924381, - 28.3316944 - ], - [ - 83.9922911, - 28.3316397 - ], - [ - 83.9921102, - 28.3315899 - ], - [ - 83.991884, - 28.3315352 - ], - [ - 83.9916522, - 28.3315003 - ], - [ - 83.9914883, - 28.3314207 - ], - [ - 83.9911774, - 28.3312117 - ], - [ - 83.9909173, - 28.3310375 - ], - [ - 83.9904859, - 28.3307204 - ], - [ - 83.9904694, - 28.3304602 - ], - [ - 83.9903928, - 28.3301807 - ], - [ - 83.9902833, - 28.3299108 - ], - [ - 83.9902012, - 28.3297084 - ], - [ - 83.9900698, - 28.3294819 - ], - [ - 83.9896865, - 28.32913 - ], - [ - 83.9895058, - 28.3290144 - ], - [ - 83.9892704, - 28.3288264 - ], - [ - 83.989139, - 28.3286963 - ], - [ - 83.9889474, - 28.3284842 - ], - [ - 83.9887558, - 28.3283397 - ], - [ - 83.9885313, - 28.3281758 - ], - [ - 83.9881206, - 28.3281324 - ], - [ - 83.9875293, - 28.3282529 - ], - [ - 83.9872337, - 28.3283589 - ], - [ - 83.9870913, - 28.3284361 - ], - [ - 83.9869052, - 28.3284601 - ], - [ - 83.9866533, - 28.3284746 - ], - [ - 83.986407, - 28.3284409 - ], - [ - 83.9860949, - 28.3284409 - ], - [ - 83.9857052, - 28.3284256 - ], - [ - 83.9854534, - 28.3283292 - ], - [ - 83.9851796, - 28.328387 - ], - [ - 83.9848894, - 28.3285027 - ], - [ - 83.9846924, - 28.3286096 - ], - [ - 83.9842598, - 28.3284063 - ], - [ - 83.9840517, - 28.328281 - ], - [ - 83.9838437, - 28.328175 - ], - [ - 83.9836083, - 28.3281268 - ], - [ - 83.9833674, - 28.3281364 - ], - [ - 83.9830881, - 28.3281557 - ], - [ - 83.9828253, - 28.3282039 - ], - [ - 83.9825406, - 28.3282328 - ], - [ - 83.981807, - 28.3283196 - ], - [ - 83.981588, - 28.3283533 - ], - [ - 83.9812734, - 28.328152 - ], - [ - 83.9811171, - 28.3280497 - ], - [ - 83.9809419, - 28.3279388 - ], - [ - 83.980764, - 28.327859 - ], - [ - 83.9805258, - 28.3280256 - ], - [ - 83.9802466, - 28.328175 - ], - [ - 83.9797757, - 28.3282473 - ], - [ - 83.9795074, - 28.3282135 - ], - [ - 83.9793815, - 28.3281316 - ], - [ - 83.9791738, - 28.3279693 - ], - [ - 83.9788537, - 28.3280147 - ], - [ - 83.9782832, - 28.3280994 - ], - [ - 83.9778801, - 28.3281764 - ], - [ - 83.9774832, - 28.3282854 - ], - [ - 83.9770189, - 28.328549 - ], - [ - 83.976792, - 28.328647 - ], - [ - 83.9766227, - 28.3286835 - ], - [ - 83.9762954, - 28.3289092 - ], - [ - 83.9758901, - 28.3294202 - ], - [ - 83.9756373, - 28.3295938 - ], - [ - 83.9752012, - 28.32982 - ], - [ - 83.9747941, - 28.3299334 - ], - [ - 83.9743973, - 28.3300418 - ], - [ - 83.9739716, - 28.3301093 - ], - [ - 83.9736479, - 28.3301546 - ], - [ - 83.9733606, - 28.3301984 - ], - [ - 83.9730969, - 28.3302615 - ], - [ - 83.9728482, - 28.3302087 - ], - [ - 83.9725029, - 28.3301488 - ], - [ - 83.971953, - 28.3298389 - ], - [ - 83.9717115, - 28.3297566 - ], - [ - 83.9713575, - 28.3296513 - ], - [ - 83.9709059, - 28.3295831 - ], - [ - 83.9705842, - 28.329377 - ], - [ - 83.9701977, - 28.3290633 - ], - [ - 83.9699382, - 28.3288758 - ], - [ - 83.9695498, - 28.328434 - ], - [ - 83.9694648, - 28.3283098 - ], - [ - 83.9693832, - 28.3281729 - ], - [ - 83.9692397, - 28.3280191 - ], - [ - 83.969027, - 28.3280391 - ], - [ - 83.9686837, - 28.3281452 - ], - [ - 83.9684547, - 28.3284294 - ], - [ - 83.9680406, - 28.3282787 - ], - [ - 83.9677615, - 28.3283474 - ], - [ - 83.9674394, - 28.3284105 - ], - [ - 83.9670847, - 28.3285285 - ], - [ - 83.9668263, - 28.3286319 - ], - [ - 83.9664485, - 28.3287107 - ], - [ - 83.9661852, - 28.3287448 - ], - [ - 83.9659684, - 28.3286494 - ], - [ - 83.9658523, - 28.3284109 - ], - [ - 83.965891, - 28.3282336 - ], - [ - 83.9660691, - 28.3280633 - ], - [ - 83.9662627, - 28.3279951 - ], - [ - 83.9665027, - 28.327777 - ], - [ - 83.966464, - 28.3275316 - ], - [ - 83.9659543, - 28.3271474 - ], - [ - 83.9655938, - 28.3269607 - ], - [ - 83.9654029, - 28.326662 - ], - [ - 83.9653817, - 28.3263166 - ], - [ - 83.9655301, - 28.3259525 - ], - [ - 83.9656044, - 28.3254578 - ], - [ - 83.9653817, - 28.3246456 - ], - [ - 83.9651908, - 28.3242162 - ], - [ - 83.9651802, - 28.3239455 - ], - [ - 83.9652862, - 28.3236374 - ], - [ - 83.9655932, - 28.3232522 - ], - [ - 83.9655612, - 28.322855 - ], - [ - 83.9653264, - 28.3225374 - ], - [ - 83.9650635, - 28.3223865 - ], - [ - 83.9648408, - 28.3222372 - ], - [ - 83.9645439, - 28.3219291 - ], - [ - 83.9642682, - 28.321453 - ], - [ - 83.9640879, - 28.3207715 - ], - [ - 83.9641303, - 28.3203141 - ], - [ - 83.9641409, - 28.31995 - ], - [ - 83.9641166, - 28.319715 - ], - [ - 83.9641091, - 28.3196419 - ], - [ - 83.9639819, - 28.3192965 - ], - [ - 83.9638061, - 28.3191263 - ], - [ - 83.9637698, - 28.3190911 - ], - [ - 83.9635895, - 28.3189978 - ], - [ - 83.9633244, - 28.3188951 - ], - [ - 83.9630911, - 28.318727 - ], - [ - 83.9629108, - 28.3184937 - ], - [ - 83.9627517, - 28.3182603 - ], - [ - 83.9624972, - 28.3179335 - ], - [ - 83.9621048, - 28.317112 - ], - [ - 83.9622639, - 28.3167106 - ], - [ - 83.9623275, - 28.3163745 - ], - [ - 83.9622957, - 28.3160104 - ], - [ - 83.9622109, - 28.315749 - ], - [ - 83.9620306, - 28.3155809 - ], - [ - 83.9615004, - 28.3151795 - ], - [ - 83.9614473, - 28.3148434 - ], - [ - 83.9614473, - 28.3144886 - ], - [ - 83.9611928, - 28.3140218 - ], - [ - 83.9607792, - 28.313611 - ], - [ - 83.9604611, - 28.3131723 - ], - [ - 83.9600157, - 28.3127801 - ], - [ - 83.9597824, - 28.3124907 - ], - [ - 83.959687, - 28.3121826 - ], - [ - 83.9596339, - 28.3117438 - ], - [ - 83.9595067, - 28.3114077 - ], - [ - 83.9590507, - 28.3110249 - ], - [ - 83.9576397, - 28.31028 - ], - [ - 83.9574215, - 28.3100635 - ], - [ - 83.9566806, - 28.3096211 - ], - [ - 83.9564081, - 28.3094937 - ], - [ - 83.9561867, - 28.3089464 - ], - [ - 83.9559652, - 28.3080916 - ], - [ - 83.9549689, - 28.3077168 - ], - [ - 83.9548582, - 28.3074843 - ], - [ - 83.9549178, - 28.3070945 - ], - [ - 83.9543302, - 28.3064122 - ], - [ - 83.9537937, - 28.3060523 - ], - [ - 83.9524226, - 28.3058873 - ], - [ - 83.9516817, - 28.3058273 - ], - [ - 83.9513921, - 28.3055649 - ], - [ - 83.951324, - 28.3053775 - ], - [ - 83.9508897, - 28.3052425 - ], - [ - 83.9498167, - 28.30528 - ], - [ - 83.9491985, - 28.3054638 - ], - [ - 83.948931, - 28.3056849 - ], - [ - 83.9483434, - 28.3060223 - ], - [ - 83.9480879, - 28.3060073 - ], - [ - 83.9479649, - 28.3061581 - ], - [ - 83.9478007, - 28.3061838 - ], - [ - 83.9475112, - 28.3062557 - ], - [ - 83.94738, - 28.3059582 - ], - [ - 83.94731, - 28.3056486 - ], - [ - 83.9467076, - 28.3043602 - ], - [ - 83.9465228, - 28.3040991 - ], - [ - 83.9458813, - 28.3039639 - ], - [ - 83.9450808, - 28.3041408 - ], - [ - 83.9444463, - 28.3040732 - ], - [ - 83.9438047, - 28.303715 - ], - [ - 83.9431984, - 28.3025532 - ], - [ - 83.9429655, - 28.3020704 - ], - [ - 83.9427931, - 28.3013355 - ], - [ - 83.9428015, - 28.3003039 - ], - [ - 83.9425556, - 28.3000702 - ], - [ - 83.9419429, - 28.2997862 - ], - [ - 83.9409314, - 28.2995273 - ], - [ - 83.9399429, - 28.2988962 - ], - [ - 83.939226, - 28.2987299 - ], - [ - 83.93805, - 28.2988501 - ], - [ - 83.9361401, - 28.2986009 - ], - [ - 83.9354071, - 28.2983654 - ], - [ - 83.9347459, - 28.2980081 - ], - [ - 83.934628, - 28.2974601 - ], - [ - 83.9348077, - 28.2969558 - ], - [ - 83.9356386, - 28.2959841 - ], - [ - 83.9357501, - 28.2953876 - ], - [ - 83.9355121, - 28.2950519 - ], - [ - 83.9341736, - 28.2939856 - ], - [ - 83.9335746, - 28.293642 - ], - [ - 83.9330777, - 28.2934999 - ], - [ - 83.9325781, - 28.2933602 - ], - [ - 83.9322166, - 28.2933682 - ], - [ - 83.9319119, - 28.2935621 - ], - [ - 83.9316524, - 28.2940322 - ], - [ - 83.9309811, - 28.2946344 - ], - [ - 83.9305589, - 28.2953179 - ], - [ - 83.9304357, - 28.2958352 - ], - [ - 83.9306384, - 28.2967334 - ], - [ - 83.9305253, - 28.2970723 - ], - [ - 83.9303111, - 28.2972554 - ], - [ - 83.9300927, - 28.2973699 - ], - [ - 83.9297139, - 28.2974352 - ], - [ - 83.9294737, - 28.2975324 - ], - [ - 83.9288872, - 28.2977042 - ], - [ - 83.9279125, - 28.2980012 - ], - [ - 83.9271177, - 28.2982935 - ], - [ - 83.9268071, - 28.2988278 - ], - [ - 83.9265855, - 28.2996722 - ], - [ - 83.9263263, - 28.3002066 - ], - [ - 83.92577, - 28.3007836 - ], - [ - 83.9254184, - 28.3011278 - ], - [ - 83.9247952, - 28.3015079 - ], - [ - 83.9242433, - 28.3015451 - ], - [ - 83.9236597, - 28.3014772 - ], - [ - 83.9231014, - 28.3012051 - ], - [ - 83.9220587, - 28.3005529 - ], - [ - 83.920942, - 28.3000764 - ], - [ - 83.920205, - 28.2998738 - ], - [ - 83.9194609, - 28.2998317 - ], - [ - 83.9186235, - 28.2999115 - ], - [ - 83.9178663, - 28.2990214 - ], - [ - 83.9163642, - 28.2973747 - ], - [ - 83.9138601, - 28.2962202 - ], - [ - 83.9124644, - 28.2956281 - ], - [ - 83.9107207, - 28.2946312 - ], - [ - 83.9104503, - 28.2936761 - ], - [ - 83.9101071, - 28.2931955 - ], - [ - 83.9092777, - 28.2928667 - ], - [ - 83.9084535, - 28.2924404 - ], - [ - 83.9073642, - 28.2920575 - ], - [ - 83.9055844, - 28.2937371 - ], - [ - 83.9019313, - 28.2933772 - ], - [ - 83.9002793, - 28.2927773 - ], - [ - 83.8984765, - 28.2925112 - ], - [ - 83.8978082, - 28.292374 - ], - [ - 83.8967479, - 28.292549 - ], - [ - 83.8964886, - 28.2927897 - ], - [ - 83.8957831, - 28.294037 - ], - [ - 83.8950252, - 28.2943369 - ], - [ - 83.8941822, - 28.2951018 - ], - [ - 83.8930241, - 28.2965639 - ], - [ - 83.8918915, - 28.2965789 - ], - [ - 83.8904865, - 28.2970587 - ], - [ - 83.8881277, - 28.297696 - ], - [ - 83.8853176, - 28.2976136 - ], - [ - 83.8811024, - 28.2935796 - ], - [ - 83.8786244, - 28.2918925 - ], - [ - 83.8782242, - 28.2913302 - ], - [ - 83.8770196, - 28.2902047 - ], - [ - 83.8773555, - 28.2902761 - ], - [ - 83.8778546, - 28.2904226 - ], - [ - 83.8781276, - 28.2904424 - ], - [ - 83.8788017, - 28.2904808 - ], - [ - 83.8792689, - 28.2902441 - ], - [ - 83.8798575, - 28.2899041 - ], - [ - 83.8794289, - 28.2891919 - ], - [ - 83.878334, - 28.2877397 - ], - [ - 83.8772796, - 28.2854423 - ], - [ - 83.8768606, - 28.2823831 - ], - [ - 83.8778338, - 28.2818832 - ], - [ - 83.87951, - 28.2815737 - ], - [ - 83.8823757, - 28.2803594 - ], - [ - 83.8841878, - 28.2789961 - ], - [ - 83.8829999, - 28.2777288 - ], - [ - 83.8828077, - 28.2771985 - ], - [ - 83.8834407, - 28.2759055 - ], - [ - 83.881649, - 28.2744504 - ], - [ - 83.8814344, - 28.2728157 - ], - [ - 83.8819065, - 28.2704062 - ], - [ - 83.8819065, - 28.267751 - ], - [ - 83.8830866, - 28.2665698 - ], - [ - 83.8834729, - 28.2657194 - ], - [ - 83.8831566, - 28.2654524 - ], - [ - 83.8824429, - 28.26485 - ], - [ - 83.8823893, - 28.2642169 - ], - [ - 83.8824536, - 28.2600022 - ], - [ - 83.8822283, - 28.2583579 - ], - [ - 83.880855, - 28.2568081 - ], - [ - 83.8790977, - 28.255915 - ], - [ - 83.8777461, - 28.2551354 - ], - [ - 83.8775289, - 28.2557544 - ], - [ - 83.8770348, - 28.2566056 - ], - [ - 83.8767623, - 28.2567898 - ], - [ - 83.8762768, - 28.2571049 - ], - [ - 83.8759447, - 28.2573524 - ], - [ - 83.8755997, - 28.2576 - ], - [ - 83.8750248, - 28.2582753 - ], - [ - 83.8748155, - 28.258555 - ], - [ - 83.8737855, - 28.2587479 - ], - [ - 83.8734533, - 28.2587367 - ], - [ - 83.872955, - 28.2586016 - ], - [ - 83.8722906, - 28.2585341 - ], - [ - 83.8718051, - 28.2586129 - ], - [ - 83.8711791, - 28.258928 - ], - [ - 83.8707447, - 28.2592431 - ], - [ - 83.8705821, - 28.2594183 - ], - [ - 83.8704264, - 28.2594806 - ], - [ - 83.869945, - 28.2597543 - ], - [ - 83.8694154, - 28.2598833 - ], - [ - 83.8681592, - 28.260118 - ], - [ - 83.8678377, - 28.2605321 - ], - [ - 83.8675959, - 28.2609909 - ], - [ - 83.866158, - 28.2618989 - ], - [ - 83.8658769, - 28.2621014 - ], - [ - 83.8649826, - 28.2624278 - ], - [ - 83.8640754, - 28.263103 - ], - [ - 83.8631683, - 28.264037 - ], - [ - 83.8623123, - 28.2647009 - ], - [ - 83.8613669, - 28.2651848 - ], - [ - 83.8610091, - 28.2652748 - ], - [ - 83.8606897, - 28.2654661 - ], - [ - 83.8604583, - 28.265598 - ], - [ - 83.8600561, - 28.2657779 - ], - [ - 83.8596238, - 28.2658805 - ], - [ - 83.8592843, - 28.2659837 - ], - [ - 83.859131, - 28.2661525 - ], - [ - 83.8591867, - 28.2666258 - ], - [ - 83.8591201, - 28.2668118 - ], - [ - 83.858938, - 28.2669451 - ], - [ - 83.8586072, - 28.2670078 - ], - [ - 83.8583644, - 28.2669402 - ], - [ - 83.8582365, - 28.2668605 - ], - [ - 83.8580507, - 28.2667803 - ], - [ - 83.8575595, - 28.2664114 - ], - [ - 83.857284, - 28.2661585 - ], - [ - 83.8570545, - 28.2659881 - ], - [ - 83.8567947, - 28.2659404 - ], - [ - 83.856492, - 28.2661095 - ], - [ - 83.8563029, - 28.2663035 - ], - [ - 83.8561797, - 28.2664001 - ], - [ - 83.8560519, - 28.2666702 - ], - [ - 83.856051, - 28.2670094 - ], - [ - 83.8558484, - 28.2671265 - ], - [ - 83.8553986, - 28.2671939 - ], - [ - 83.8547597, - 28.2671391 - ], - [ - 83.8543604, - 28.266976 - ], - [ - 83.8537667, - 28.2666264 - ], - [ - 83.8532721, - 28.2664142 - ], - [ - 83.8529927, - 28.2662887 - ], - [ - 83.8529365, - 28.2661936 - ], - [ - 83.85287, - 28.2661374 - ], - [ - 83.8526117, - 28.2661531 - ], - [ - 83.8524896, - 28.265976 - ], - [ - 83.8525233, - 28.2661161 - ], - [ - 83.8524132, - 28.2661646 - ], - [ - 83.8522922, - 28.2662664 - ], - [ - 83.8521738, - 28.2662906 - ], - [ - 83.8520472, - 28.2662567 - ], - [ - 83.8518271, - 28.2661839 - ], - [ - 83.8517033, - 28.2661646 - ], - [ - 83.8515106, - 28.266213 - ], - [ - 83.8513538, - 28.2662882 - ], - [ - 83.8512519, - 28.266453 - ], - [ - 83.8511171, - 28.2666057 - ], - [ - 83.8510676, - 28.2666808 - ], - [ - 83.8509052, - 28.2667075 - ], - [ - 83.8505879, - 28.2667689 - ], - [ - 83.850297, - 28.2667317 - ], - [ - 83.8500273, - 28.2666566 - ], - [ - 83.849865, - 28.2665378 - ], - [ - 83.8497466, - 28.26647 - ], - [ - 83.849598, - 28.2664069 - ], - [ - 83.8492513, - 28.2661258 - ], - [ - 83.8491275, - 28.2659125 - ], - [ - 83.8490449, - 28.2658083 - ], - [ - 83.8487587, - 28.2656313 - ], - [ - 83.8487133, - 28.2655181 - ], - [ - 83.8487009, - 28.2654236 - ], - [ - 83.8487881, - 28.2652666 - ], - [ - 83.8486615, - 28.2651148 - ], - [ - 83.8484394, - 28.2647462 - ], - [ - 83.8480769, - 28.2641355 - ], - [ - 83.8468855, - 28.2634075 - ], - [ - 83.8463575, - 28.2629505 - ], - [ - 83.8461972, - 28.2628305 - ], - [ - 83.8459745, - 28.2627435 - ], - [ - 83.8456896, - 28.2626982 - ], - [ - 83.8454488, - 28.2625889 - ], - [ - 83.8451728, - 28.2625702 - ], - [ - 83.8448965, - 28.2627679 - ], - [ - 83.8444591, - 28.2628947 - ], - [ - 83.8441946, - 28.2628294 - ], - [ - 83.843643, - 28.2628502 - ], - [ - 83.8431277, - 28.2629039 - ], - [ - 83.8428336, - 28.2628806 - ], - [ - 83.842603, - 28.2627057 - ], - [ - 83.842281, - 28.2626165 - ], - [ - 83.8421317, - 28.2626509 - ], - [ - 83.841919, - 28.2627167 - ], - [ - 83.8417401, - 28.2626816 - ], - [ - 83.8410221, - 28.2627587 - ], - [ - 83.8407142, - 28.2628727 - ], - [ - 83.8405078, - 28.2629088 - ], - [ - 83.8402289, - 28.2632745 - ], - [ - 83.8403663, - 28.2634892 - ], - [ - 83.840307, - 28.26362 - ], - [ - 83.8399507, - 28.2636442 - ], - [ - 83.8395855, - 28.2637547 - ], - [ - 83.8390921, - 28.2636328 - ], - [ - 83.8388021, - 28.2636307 - ], - [ - 83.8383537, - 28.2637531 - ], - [ - 83.8380791, - 28.2642218 - ], - [ - 83.8377527, - 28.2644261 - ], - [ - 83.8371084, - 28.2646103 - ], - [ - 83.8367112, - 28.2650231 - ], - [ - 83.8362862, - 28.2651847 - ], - [ - 83.8361975, - 28.2657851 - ], - [ - 83.8364979, - 28.2665222 - ], - [ - 83.8366696, - 28.2673159 - ], - [ - 83.836219, - 28.2682797 - ], - [ - 83.826327, - 28.2673915 - ], - [ - 83.8227221, - 28.2676561 - ], - [ - 83.8217783, - 28.2669014 - ], - [ - 83.8210702, - 28.2665045 - ], - [ - 83.8201153, - 28.2659328 - ], - [ - 83.8196808, - 28.2654414 - ], - [ - 83.8191712, - 28.2651249 - ], - [ - 83.8190317, - 28.2643122 - ], - [ - 83.8191336, - 28.2638633 - ], - [ - 83.8194126, - 28.2634617 - ], - [ - 83.8196003, - 28.262753 - ], - [ - 83.8196862, - 28.2621104 - ], - [ - 83.8198793, - 28.2615245 - ], - [ - 83.8205064, - 28.2605599 - ], - [ - 83.8222435, - 28.2566446 - ] - ] - ] - ] - } - } - ] -} diff --git a/docker/install.sh b/docker/install.sh index c5282267..7fa9e529 100644 --- a/docker/install.sh +++ b/docker/install.sh @@ -1,4 +1,8 @@ #!/bin/bash + +REGION=${1:-asia} +COUNTRY=${2:-nepal} + echo "Composing containers ..." && \ docker-compose up -d && \ docker exec -t underpass cp /code/docker/underpass-config.yaml /root/.underpass && \ @@ -8,8 +12,6 @@ docker exec -w /code -t underpass ./autogen.sh && \ docker exec -w /code -t underpass mkdir -p /code/build && \ docker exec -w /code/build -t underpass ../configure --enable-shared && \ docker exec -w /code/build -t underpass make -j $(nproc) && \ -docker exec -w /code/build -t underpass make install && \ -docker exec -w /code/build -t underpass make install-python && \ docker exec -t underpass ln -s /usr/bin/python3 /usr/bin/python && \ echo "Installing Postgres ..." && \ docker exec -t underpass apt update && \ @@ -34,14 +36,26 @@ docker exec -t underpass pip install requests && \ docker exec -t underpass pip install psycopg2 && \ docker exec -t underpass pip install uvicorn && \ docker exec -t underpass pip install fastapi && \ +docker exec -t underpass pip install fiona && \ +docker exec -t underpass pip install shapely && \ +docker exec -t underpass apt -y install osm2psql && \ +echo "Downloading bootstrap sample data (Nepal) ..." && \ +docker exec -t underpass cd utils && wget https://download.geofabrik.de/$REGION/$COUNTRY-latest.osm.pbf && \ +docker exec -t underpass cd utils && wget https://download.geofabrik.de/$REGION/$COUNTRY.poly && \ +docker exec -t underpass cd utils && wget python3 poly2geojson.py $COUNTRY.poly && \ +docker exec -t underpass cd utils && cp $COUNTRY.geojson ../config/priority.geojson && \ +docker exec -w /code/build -t underpass make install && \ +docker exec -t underpass cd utils && osm2pgsql -H postgis -U underpass -p underpass -P 5432 -d underpass --extra-attributes --output=flex --style ./raw-underpass.lua nepal-latest.osm.pbf && \ +docker exec -t underpass cd utils && psql -h postgis -p 5432 -w underpass underpass < raw-underpass.sql && \ +docker exec -t underpass cd build ./underpass --bootstrap && \ echo "Starting replicator service ..." && \ -docker exec -t underpass tmux new-session -d -s replicator 'cd /code/build && ./underpass -t $(date +%Y-%m-%dT%H:%M:%S -d "1 week ago")' && \ +docker exec -t underpass tmux new-session -d -s replicator 'cd /code/build && ./underpass -t $(date +%Y-%m-%dT%H:%M:%S -d "2 days ago")' && \ docker exec -t underpass tmux new-session -d -s rest-api 'cd /code/python/restapi && uvicorn main:app --reload --host 0.0.0.0' && \ docker exec -t underpass tmux new-session -d -s react-cosmos 'cd /code/js && yarn cosmos' && \ echo "Done! 🚀" && \ echo "Underpass OSM Planet replicator is now running on a Docker container" && \ echo "---" && \ -echo "Reports on your browser: http://127.0.0.1:5000 " && \ +echo "Check your browser: http://127.0.0.1:5000 " && \ echo "REST API: http://127.0.0.1:8000 " && \ echo "---" && \ echo "Or connect to the Underpass database:" && \ diff --git a/docker/services-start.sh b/docker/services-start.sh index bcbae13b..dd27179d 100644 --- a/docker/services-start.sh +++ b/docker/services-start.sh @@ -1,4 +1,4 @@ -docker exec -t underpass tmux new-session -d -s replicator 'cd /code/build && ./replicator -t $(date +%Y-%m-%dT%H:%M:%S -d "1 week ago")' && \ +docker exec -t underpass tmux new-session -d -s replicator 'cd /code/build && ./underpass -t $(date +%Y-%m-%dT%H:%M:%S -d "2 days ago")' && \ docker exec -t underpass tmux new-session -d -s rest-api 'cd /code/util/python/restapi && uvicorn main:app --reload --host 0.0.0.0' && \ docker exec -t underpass tmux new-session -d -s react-cosmos 'cd /code/util/react && yarn cosmos' && \ echo "Services started." diff --git a/js/src/components/Underpass/DQMap/index.jsx b/js/src/components/Underpass/DQMap/index.jsx index b9c70cda..2b23282b 100644 --- a/js/src/components/Underpass/DQMap/index.jsx +++ b/js/src/components/Underpass/DQMap/index.jsx @@ -36,7 +36,7 @@ const getData = async (area, onGetData) => { area, { onSuccess: (data) => { - if (data.length > 0) { + if (data && data.length > 0) { const features = data[0].jsonb_build_object; onGetData(features, area); } diff --git a/js/src/fixtures/DQMap.fixture.jsx b/js/src/fixtures/DQMap.fixture.jsx index a496227a..190865d8 100644 --- a/js/src/fixtures/DQMap.fixture.jsx +++ b/js/src/fixtures/DQMap.fixture.jsx @@ -7,7 +7,7 @@ export default (
diff --git a/m4/ax_python_devel.m4 b/m4/ax_python_devel.m4 index 9d4eecf7..8b772089 100644 --- a/m4/ax_python_devel.m4 +++ b/m4/ax_python_devel.m4 @@ -347,20 +347,20 @@ EOD` AC_MSG_RESULT([$pythonexists]) - if test ! "x$pythonexists" = "xyes"; then - AC_MSG_FAILURE([ - Could not link test program to Python. Maybe the main Python library has been - installed in some non-standard library path. If so, pass it to configure, - via the LIBS environment variable. - Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" - ============================================================================ - ERROR! - You probably have to install the development version of the Python package - for your distribution. The exact name of this package varies among them. - ============================================================================ - ]) - PYTHON_VERSION="" - fi +# if test ! "x$pythonexists" = "xyes"; then +# AC_MSG_FAILURE([ +# Could not link test program to Python. Maybe the main Python library has been +# installed in some non-standard library path. If so, pass it to configure, +# via the LIBS environment variable. +# Example: ./configure LIBS="-L/usr/non-standard-path/python/lib" +# ============================================================================ +# ERROR! +# You probably have to install the development version of the Python package +# for your distribution. The exact name of this package varies among them. +# ============================================================================ +# ]) +# PYTHON_VERSION="" +# fi # # all done! diff --git a/python/restapi/config.py b/python/restapi/config.py index 4ec79c15..acd382a8 100644 --- a/python/restapi/config.py +++ b/python/restapi/config.py @@ -1,2 +1,2 @@ # ENABLE_UNDERPASS_CORE=True -UNDERPASS_DB="postgresql://localhost/underpass" \ No newline at end of file +# UNDERPASS_DB="postgresql://localhost/underpass" \ No newline at end of file diff --git a/src/replicator/threads.cc b/src/replicator/threads.cc index 2efa03c4..d15c76b0 100644 --- a/src/replicator/threads.cc +++ b/src/replicator/threads.cc @@ -142,6 +142,8 @@ startMonitorChangesets(std::shared_ptr &remote, if (!db->connect(config.underpass_db_url)) { log_error("Could not connect to Underpass DB, aborting monitoring thread!"); return; + } else { + log_debug("Connected to database: %1%", config.underpass_db_url); } auto querystats = std::make_shared(db); @@ -260,6 +262,8 @@ startMonitorChanges(std::shared_ptr &remote, if (!db->connect(config.underpass_db_url)) { log_error("Could not connect to Underpass DB, aborting monitoring thread!"); return; + } else { + log_debug("Connected to database: %1%", config.underpass_db_url); } auto querystats = std::make_shared(db); auto queryvalidate = std::make_shared(db); diff --git a/utils/bootstrap.sh b/utils/bootstrap.sh new file mode 100644 index 00000000..fdf81554 --- /dev/null +++ b/utils/bootstrap.sh @@ -0,0 +1,120 @@ +#!/bin/bash +# +# Copyright (c) 2023 Humanitarian OpenStreetMap Team +# +# This file is part of Underpass. +# +# Underpass is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Underpass is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Underpass. If not, see . + + +# ----- +# This is a utility script for bootstrapping an Underpass +# database with a full country OSM data. +# ----- + +localfiles='false' + +while getopts r:c:h::u:p:d:l flag +do + case "${flag}" in + r) region=${OPTARG};; + c) country=${OPTARG};; + h) host=${OPTARG};; + u) user=${OPTARG};; + p) port=${OPTARG};; + d) database=${OPTARG};; + l) localfiles=${OPTARG};; + esac +done + +REGION=${region} +COUNTRY=${country} +HOST=${host:-localhost} +USER=${user:-underpass} +PORT=${port:-5439} +DB=${database:-underpass} + +if [ -n "${REGION}" ] && [ -n "${COUNTRY}" ] +then + + echo Region: $REGION + echo Country: $COUNTRY + echo Host: $HOST + echo Username: $USER + echo Port: $PORT + echo Database: $DB + + if [ -z "${localfiles}" ] + then + echo "Use local files?: yes" + fi + + echo " " + echo "*** WARNING: THIS ACTION WILL OVERWRITE DATA IN THE CURRENT DATABASE ***" + echo " " + read -p "Are you sure? Y/N" -n 1 -r + echo " " + if [[ $REPLY =~ ^[Yy]$ ]] + then + + read -s -p "Enter your database password: " -r + PASS=$REPLY + echo " " + echo "Cleaning database ..." + PGPASSWORD=$PASS psql --host $HOST --user $USER --port $PORT $DB -c 'delete from raw_poly; delete from raw_node; delete from validation; delete from changesets' + + if [ -z "${localfiles}" ] + then + echo "(Using local files)" + else + echo "Downloading updated map data ..." && \ + wget https://download.geofabrik.de/$REGION/$COUNTRY-latest.osm.pbf && \ + wget https://download.geofabrik.de/$REGION/$COUNTRY.poly + fi + + echo "Importing data (this will take some time) ..." + PGPASSWORD=$PASS osm2pgsql -H $HOST -U $USER -P $PORT -d $DB --extra-attributes --output=flex --style ./raw-underpass.lua $COUNTRY-latest.osm.pbf + PGPASSWORD=$PASS psql --host $HOST --user $USER --port $PORT $DB < raw-underpass.sql + + echo "Configuring Underpass ..." + wget python3 poly2geojson.py $COUNTRY.poly && \ + cp $COUNTRY.geojson ../config/priority.geojson && \ + cd ../build && \ + make install && \ + echo "Bootstrapping validation database ..." + ./underpass --bootstrap + echo "Done." + echo " " + echo "Now you can run the Underpass replicator for keeping the" + echo "database up-to-date" + fi + +else + echo "This is a utility script for bootstrapping an Underpass" + echo "database with a full country OSM data." + echo " " + echo "Usage: sh bootstrap.sh -r -c " + echo "Example: sh bootstrap.sh -r asia -c nepal" + echo " " + echo "[Options]" + echo " -r region (Region for bootstrapping)" + echo " africa, antartica, asia, australia, central-america," + echo " europe, north-america or south-america" + echo " -r country (Country inside the region)" + echo " -h host (Database host)" + echo " -u user (Database user)" + echo " -p port (Database port)" + echo " -d database (Database name)" + echo " -l (Use local files instead of download them)" +fi diff --git a/utils/poly2geojson.py b/utils/poly2geojson.py new file mode 100644 index 00000000..8bf145a3 --- /dev/null +++ b/utils/poly2geojson.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# +# Copyright (c) 2023 Humanitarian OpenStreetMap Team +# +# This file is part of Underpass. +# +# Underpass is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Underpass is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Underpass. If not, see . + +''' + Converts .poly to .geojson + + Usage: python poly2geojson file.poly +''' +import re +import argparse +import os +import fiona +from shapely.geometry import MultiPolygon, Polygon, mapping +import functools + + +def remove_file(file_name): + try: + os.remove(file_name) + except OSError: + pass + + +def read_polygon(polygon_filename): + with open(polygon_filename) as f: + return f.readlines() + + +def clean_poylgon(polygon_data): + coordinates = polygon_data[2:][:-2] + + coordinates = [re.split(r'[\s\t]+', item) for item in coordinates] + coordinates = [list(filter(None, item)) for item in coordinates] + + coordinates = functools.reduce(lambda a,b: a[-1].pop(0) and a if len(a[-1]) == 1 and a[-1][0] == 'END' else a.append(['END']) or a if b[0].startswith('END') else a[-1].append(b) or a, [[[]]] + coordinates) + + coordinates = [[(float(item[0]), float(item[1])) for item in coordgroup] for coordgroup in coordinates] + + return coordinates + + +def write_geojson(data, polygon_filename): + geojson_filename = '.'.join(polygon_filename.split('.')[:-1]) + ".geojson" + remove_file(geojson_filename) + + schema = {'geometry': 'MultiPolygon', 'properties': {}} + + with fiona.open(geojson_filename, 'w', 'GeoJSON', schema) as output: + for elem in data: + output.write({'geometry': mapping(MultiPolygon([Polygon(elem)])), 'properties': {}}) + + +def main(polygon_filename): + polygon_data = read_polygon(polygon_filename) + coordinates = clean_poylgon(polygon_data) + write_geojson(coordinates, polygon_filename) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("polygon_filename") + args = parser.parse_args() + + main(args.polygon_filename)