diff --git a/.gitea/workflows/backed_build-image.yaml b/.gitea/workflows/backed_build-image.yaml
index 2f1d21c..5542a1f 100644
--- a/.gitea/workflows/backed_build-image.yaml
+++ b/.gitea/workflows/backed_build-image.yaml
@@ -18,7 +18,7 @@ jobs:
       with:
         registry: git.kluster.moll.re
         username: ${{ gitea.repository_owner }}
-        password: ${{ secrets.GITEA_TOKEN}}
+        password: ${{ secrets.DOCKER_PUSH_TOKEN }}
 
     - name: Set up Docker Buildx
       uses: docker/setup-buildx-action@v3
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e934adf
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+cache/
diff --git a/backend/Pipfile b/backend/Pipfile
index f02576b..62e84e8 100644
--- a/backend/Pipfile
+++ b/backend/Pipfile
@@ -8,5 +8,7 @@ numpy = "*"
 scipy = "*"
 fastapi = "*"
 osmpythontools = "*"
+pydantic = "*"
+shapely = "*"
 
 [dev-packages]
diff --git a/backend/Pipfile.lock b/backend/Pipfile.lock
index f07cd8e..2e5aac3 100644
--- a/backend/Pipfile.lock
+++ b/backend/Pipfile.lock
@@ -1,7 +1,7 @@
 {
     "_meta": {
         "hash": {
-            "sha256": "15cc819367b908ccf7d61e3f2b45574c248556600dfeaa795e19045d6781fe90"
+            "sha256": "0f88c01cde3be9a6332acec33fa0ccf13b6e122a6df8ee5cfefa52ba1e98034f"
         },
         "pipfile-spec": 6,
         "requires": {},
@@ -40,11 +40,11 @@
         },
         "certifi": {
             "hashes": [
-                "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f",
-                "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"
+                "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516",
+                "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"
             ],
             "markers": "python_version >= '3.6'",
-            "version": "==2024.2.2"
+            "version": "==2024.6.2"
         },
         "click": {
             "hashes": [
@@ -122,11 +122,11 @@
         },
         "email-validator": {
             "hashes": [
-                "sha256:200a70680ba08904be6d1eef729205cc0d687634399a5924d842533efb824b84",
-                "sha256:97d882d174e2a65732fb43bfce81a3a834cbc1bde8bf419e30ef5ea976370a05"
+                "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631",
+                "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==2.1.1"
+            "version": "==2.2.0"
         },
         "exceptiongroup": {
             "hashes": [
@@ -155,51 +155,51 @@
         },
         "fonttools": {
             "hashes": [
-                "sha256:00d9abf4b400f98fb895566eb298f60432b4b29048e3dc02807427b09a06604e",
-                "sha256:05e4291db6af66f466a203d9922e4c1d3e18ef16868f76f10b00e2c3b9814df2",
-                "sha256:15efb2ba4b8c2d012ee0bb7a850c2e4780c530cc83ec8e843b2a97f8b3a5fd4b",
-                "sha256:1dc626de4b204d025d029e646bae8fdbf5acd9217158283a567f4b523fda3bae",
-                "sha256:21921e5855c399d10ddfc373538b425cabcf8b3258720b51450909e108896450",
-                "sha256:309b617942041073ffa96090d320b99d75648ed16e0c67fb1aa7788e06c834de",
-                "sha256:346d08ff92e577b2dc5a0c228487667d23fe2da35a8b9a8bba22c2b6ba8be21c",
-                "sha256:35af630404223273f1d7acd4761f399131c62820366f53eac029337069f5826a",
-                "sha256:46cc5d06ee05fd239c45d7935aaffd060ee773a88b97e901df50478247472643",
-                "sha256:4b0b9eb0f55dce9c7278ad4175f1cbaed23b799dce5ecc20e3213da241584140",
-                "sha256:4b419207e53db1599b3d385afd4bca6692c219d53732890d0814a2593104d0e2",
-                "sha256:4c3ad89204c2d7f419436f1d6fde681b070c5e20b888beb57ccf92f640628cc9",
-                "sha256:52f6001814ec5e0c961cabe89642f7e8d7e07892b565057aa526569b9ebb711c",
-                "sha256:5ecb88318ff249bd2a715e7aec36774ce7ae3441128007ef72a39a60601f4a8f",
-                "sha256:70d87f2099006304d33438bdaa5101953b7e22e23a93b1c7b7ed0f32ff44b423",
-                "sha256:73ba38b98c012957940a04d9eb5439b42565ac892bba8cfc32e10d88e73921fe",
-                "sha256:7467161f1eed557dbcec152d5ee95540200b1935709fa73307da16bc0b7ca361",
-                "sha256:7dccf4666f716e5e0753f0fa28dad2f4431154c87747bc781c838b8a5dca990e",
-                "sha256:859399b7adc8ac067be8e5c80ef4bb2faddff97e9b40896a9de75606a43d0469",
-                "sha256:8873d6edd1dae5c088dd3d61c9fd4dd80c827c486fa224d368233e7f33dc98af",
-                "sha256:890e7a657574610330e42dd1e38d3b9e0a8cb0eff3da080f80995460a256d3dd",
-                "sha256:89b53386214197bd5b3e3c753895bad691de84726ced3c222a59cde1dd12d57b",
-                "sha256:8b186cd6b8844f6cf04a7e0a174bc3649d3deddbfc10dc59846a4381f796d348",
-                "sha256:9180775c9535389a665cae7c5282f8e07754beabf59b66aeba7f6bfeb32a3652",
-                "sha256:95e8a5975d08d0b624a14eec0f987e204ad81b480e24c5436af99170054434b8",
-                "sha256:9725687db3c1cef13c0f40b380c3c15bea0113f4d0231b204d58edd5f2a53d90",
-                "sha256:9a5d1b0475050056d2e3bc378014f2ea2230e8ae434eeac8dfb182aa8efaf642",
-                "sha256:9ed23a03b7d9f0e29ca0679eafe5152aeccb0580312a3fc36f0662e178b4791b",
-                "sha256:a4daf2751a98c69d9620717826ed6c5743b662ef0ae7bb33dc6c205425e48eba",
-                "sha256:a64e72d2c144630e017ac9c1c416ddf8ac43bef9a083bf81fe08c0695f0baa95",
-                "sha256:a791f002d1b717268235cfae7e4957b7fd132e92e2c5400e521bf191f1b3a9a5",
-                "sha256:b4cba644e2515d685d4ee3ca2fbb5d53930a0e9ec2cf332ed704dc341b145878",
-                "sha256:b9a22cf1adaae7b2ba2ed7d8651a4193a4f348744925b4b740e6b38a94599c5b",
-                "sha256:bb7d206fa5ba6e082ba5d5e1b7107731029fc3a55c71c48de65121710d817986",
-                "sha256:cf694159528022daa71b1777cb6ec9e0ebbdd29859f3e9c845826cafaef4ca29",
-                "sha256:d0184aa88865339d96f7f452e8c5b621186ef7638744d78bf9b775d67e206819",
-                "sha256:d272c7e173c3085308345ccc7fb2ad6ce7f415d777791dd6ce4e8140e354d09c",
-                "sha256:d2cc7906bc0afdd2689aaf88b910307333b1f936262d1d98f25dbf8a5eb2e829",
-                "sha256:e03dae26084bb3632b4a77b1cd0419159d2226911aff6dc4c7e3058df68648c6",
-                "sha256:e176249292eccd89f81d39f514f2b5e8c75dfc9cef8653bdc3021d06697e9eff",
-                "sha256:ebb183ed8b789cece0bd6363121913fb6da4034af89a2fa5408e42a1592889a8",
-                "sha256:fb8cd6559f0ae3a8f5e146f80ab2a90ad0325a759be8d48ee82758a0b89fa0aa"
+                "sha256:099634631b9dd271d4a835d2b2a9e042ccc94ecdf7e2dd9f7f34f7daf333358d",
+                "sha256:0c555e039d268445172b909b1b6bdcba42ada1cf4a60e367d68702e3f87e5f64",
+                "sha256:1e677bfb2b4bd0e5e99e0f7283e65e47a9814b0486cb64a41adf9ef110e078f2",
+                "sha256:2367d47816cc9783a28645bc1dac07f8ffc93e0f015e8c9fc674a5b76a6da6e4",
+                "sha256:28d072169fe8275fb1a0d35e3233f6df36a7e8474e56cb790a7258ad822b6fd6",
+                "sha256:31f0e3147375002aae30696dd1dc596636abbd22fca09d2e730ecde0baad1d6b",
+                "sha256:3e0ad3c6ea4bd6a289d958a1eb922767233f00982cf0fe42b177657c86c80a8f",
+                "sha256:45b4afb069039f0366a43a5d454bc54eea942bfb66b3fc3e9a2c07ef4d617380",
+                "sha256:4a2a6ba400d386e904fd05db81f73bee0008af37799a7586deaa4aef8cd5971e",
+                "sha256:4f520d9ac5b938e6494f58a25c77564beca7d0199ecf726e1bd3d56872c59749",
+                "sha256:52a6e0a7a0bf611c19bc8ec8f7592bdae79c8296c70eb05917fd831354699b20",
+                "sha256:5a4788036201c908079e89ae3f5399b33bf45b9ea4514913f4dbbe4fac08efe0",
+                "sha256:6b4f04b1fbc01a3569d63359f2227c89ab294550de277fd09d8fca6185669fa4",
+                "sha256:715b41c3e231f7334cbe79dfc698213dcb7211520ec7a3bc2ba20c8515e8a3b5",
+                "sha256:73121a9b7ff93ada888aaee3985a88495489cc027894458cb1a736660bdfb206",
+                "sha256:74ae2441731a05b44d5988d3ac2cf784d3ee0a535dbed257cbfff4be8bb49eb9",
+                "sha256:7d6166192dcd925c78a91d599b48960e0a46fe565391c79fe6de481ac44d20ac",
+                "sha256:7f193f060391a455920d61684a70017ef5284ccbe6023bb056e15e5ac3de11d1",
+                "sha256:907fa0b662dd8fc1d7c661b90782ce81afb510fc4b7aa6ae7304d6c094b27bce",
+                "sha256:93156dd7f90ae0a1b0e8871032a07ef3178f553f0c70c386025a808f3a63b1f4",
+                "sha256:93bc9e5aaa06ff928d751dc6be889ff3e7d2aa393ab873bc7f6396a99f6fbb12",
+                "sha256:95db0c6581a54b47c30860d013977b8a14febc206c8b5ff562f9fe32738a8aca",
+                "sha256:973d030180eca8255b1bce6ffc09ef38a05dcec0e8320cc9b7bcaa65346f341d",
+                "sha256:9cd7a6beec6495d1dffb1033d50a3f82dfece23e9eb3c20cd3c2444d27514068",
+                "sha256:9fe9096a60113e1d755e9e6bda15ef7e03391ee0554d22829aa506cdf946f796",
+                "sha256:a209d2e624ba492df4f3bfad5996d1f76f03069c6133c60cd04f9a9e715595ec",
+                "sha256:a239afa1126b6a619130909c8404070e2b473dd2b7fc4aacacd2e763f8597fea",
+                "sha256:ba9f09ff17f947392a855e3455a846f9855f6cf6bec33e9a427d3c1d254c712f",
+                "sha256:bb7273789f69b565d88e97e9e1da602b4ee7ba733caf35a6c2affd4334d4f005",
+                "sha256:bd5bc124fae781a4422f61b98d1d7faa47985f663a64770b78f13d2c072410c2",
+                "sha256:bff98816cb144fb7b85e4b5ba3888a33b56ecef075b0e95b95bcd0a5fbf20f06",
+                "sha256:c4ee5a24e281fbd8261c6ab29faa7fd9a87a12e8c0eed485b705236c65999109",
+                "sha256:c93ed66d32de1559b6fc348838c7572d5c0ac1e4a258e76763a5caddd8944002",
+                "sha256:d1a24f51a3305362b94681120c508758a88f207fa0a681c16b5a4172e9e6c7a9",
+                "sha256:d8f191a17369bd53a5557a5ee4bab91d5330ca3aefcdf17fab9a497b0e7cff7a",
+                "sha256:daaef7390e632283051e3cf3e16aff2b68b247e99aea916f64e578c0449c9c68",
+                "sha256:e40013572bfb843d6794a3ce076c29ef4efd15937ab833f520117f8eccc84fd6",
+                "sha256:eceef49f457253000e6a2d0f7bd08ff4e9fe96ec4ffce2dbcb32e34d9c1b8161",
+                "sha256:ee595d7ba9bba130b2bec555a40aafa60c26ce68ed0cf509983e0f12d88674fd",
+                "sha256:ef50ec31649fbc3acf6afd261ed89d09eb909b97cc289d80476166df8438524d",
+                "sha256:fa1f3e34373aa16045484b4d9d352d4c6b5f9f77ac77a178252ccbc851e8b2ee",
+                "sha256:fca66d9ff2ac89b03f5aa17e0b21a97c21f3491c46b583bb131eb32c7bab33af"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==4.52.4"
+            "version": "==4.53.0"
         },
         "geojson": {
             "hashes": [
@@ -667,98 +667,107 @@
         },
         "numpy": {
             "hashes": [
-                "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b",
-                "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818",
-                "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20",
-                "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0",
-                "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010",
-                "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a",
-                "sha256:3373d5d70a5fe74a2c1bb6d2cfd9609ecf686d47a2d7b1d37a8f3b6bf6003aea",
-                "sha256:47711010ad8555514b434df65f7d7b076bb8261df1ca9bb78f53d3b2db02e95c",
-                "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71",
-                "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110",
-                "sha256:52b8b60467cd7dd1e9ed082188b4e6bb35aa5cdd01777621a1658910745b90be",
-                "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a",
-                "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a",
-                "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5",
-                "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed",
-                "sha256:679b0076f67ecc0138fd2ede3a8fd196dddc2ad3254069bcb9faf9a79b1cebcd",
-                "sha256:7349ab0fa0c429c82442a27a9673fc802ffdb7c7775fad780226cb234965e53c",
-                "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e",
-                "sha256:7e50d0a0cc3189f9cb0aeb3a6a6af18c16f59f004b866cd2be1c14b36134a4a0",
-                "sha256:95a7476c59002f2f6c590b9b7b998306fba6a5aa646b1e22ddfeaf8f78c3a29c",
-                "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a",
-                "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b",
-                "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0",
-                "sha256:a354325ee03388678242a4d7ebcd08b5c727033fcff3b2f536aea978e15ee9e6",
-                "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2",
-                "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a",
-                "sha256:afedb719a9dcfc7eaf2287b839d8198e06dcd4cb5d276a3df279231138e83d30",
-                "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218",
-                "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5",
-                "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07",
-                "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2",
-                "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4",
-                "sha256:d5241e0a80d808d70546c697135da2c613f30e28251ff8307eb72ba696945764",
-                "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef",
-                "sha256:f870204a840a60da0b12273ef34f7051e98c3b5961b61b0c2c1be6dfd64fbcd3",
-                "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f"
+                "sha256:04494f6ec467ccb5369d1808570ae55f6ed9b5809d7f035059000a37b8d7e86f",
+                "sha256:0a43f0974d501842866cc83471bdb0116ba0dffdbaac33ec05e6afed5b615238",
+                "sha256:0e50842b2295ba8414c8c1d9d957083d5dfe9e16828b37de883f51fc53c4016f",
+                "sha256:0ec84b9ba0654f3b962802edc91424331f423dcf5d5f926676e0150789cb3d95",
+                "sha256:17067d097ed036636fa79f6a869ac26df7db1ba22039d962422506640314933a",
+                "sha256:1cde1753efe513705a0c6d28f5884e22bdc30438bf0085c5c486cdaff40cd67a",
+                "sha256:1e72728e7501a450288fc8e1f9ebc73d90cfd4671ebbd631f3e7857c39bd16f2",
+                "sha256:2635dbd200c2d6faf2ef9a0d04f0ecc6b13b3cad54f7c67c61155138835515d2",
+                "sha256:2ce46fd0b8a0c947ae047d222f7136fc4d55538741373107574271bc00e20e8f",
+                "sha256:34f003cb88b1ba38cb9a9a4a3161c1604973d7f9d5552c38bc2f04f829536609",
+                "sha256:354f373279768fa5a584bac997de6a6c9bc535c482592d7a813bb0c09be6c76f",
+                "sha256:38ecb5b0582cd125f67a629072fed6f83562d9dd04d7e03256c9829bdec027ad",
+                "sha256:3e8e01233d57639b2e30966c63d36fcea099d17c53bf424d77f088b0f4babd86",
+                "sha256:3f6bed7f840d44c08ebdb73b1825282b801799e325bcbdfa6bc5c370e5aecc65",
+                "sha256:4554eb96f0fd263041baf16cf0881b3f5dafae7a59b1049acb9540c4d57bc8cb",
+                "sha256:46e161722e0f619749d1cd892167039015b2c2817296104487cd03ed4a955995",
+                "sha256:49d9f7d256fbc804391a7f72d4a617302b1afac1112fac19b6c6cec63fe7fe8a",
+                "sha256:4d2f62e55a4cd9c58c1d9a1c9edaedcd857a73cb6fda875bf79093f9d9086f85",
+                "sha256:5f64641b42b2429f56ee08b4f427a4d2daf916ec59686061de751a55aafa22e4",
+                "sha256:63b92c512d9dbcc37f9d81b123dec99fdb318ba38c8059afc78086fe73820275",
+                "sha256:6d7696c615765091cc5093f76fd1fa069870304beaccfd58b5dcc69e55ef49c1",
+                "sha256:79e843d186c8fb1b102bef3e2bc35ef81160ffef3194646a7fdd6a73c6b97196",
+                "sha256:821eedb7165ead9eebdb569986968b541f9908979c2da8a4967ecac4439bae3d",
+                "sha256:84554fc53daa8f6abf8e8a66e076aff6ece62de68523d9f665f32d2fc50fd66e",
+                "sha256:8d83bb187fb647643bd56e1ae43f273c7f4dbcdf94550d7938cfc32566756514",
+                "sha256:903703372d46bce88b6920a0cd86c3ad82dae2dbef157b5fc01b70ea1cfc430f",
+                "sha256:9416a5c2e92ace094e9f0082c5fd473502c91651fb896bc17690d6fc475128d6",
+                "sha256:9a1712c015831da583b21c5bfe15e8684137097969c6d22e8316ba66b5baabe4",
+                "sha256:9c27f0946a3536403efb0e1c28def1ae6730a72cd0d5878db38824855e3afc44",
+                "sha256:a356364941fb0593bb899a1076b92dfa2029f6f5b8ba88a14fd0984aaf76d0df",
+                "sha256:a7039a136017eaa92c1848152827e1424701532ca8e8967fe480fe1569dae581",
+                "sha256:acd3a644e4807e73b4e1867b769fbf1ce8c5d80e7caaef0d90dcdc640dfc9787",
+                "sha256:ad0c86f3455fbd0de6c31a3056eb822fc939f81b1618f10ff3406971893b62a5",
+                "sha256:b4c76e3d4c56f145d41b7b6751255feefae92edbc9a61e1758a98204200f30fc",
+                "sha256:b6f6a8f45d0313db07d6d1d37bd0b112f887e1369758a5419c0370ba915b3871",
+                "sha256:c5a59996dc61835133b56a32ebe4ef3740ea5bc19b3983ac60cc32be5a665d54",
+                "sha256:c73aafd1afca80afecb22718f8700b40ac7cab927b8abab3c3e337d70e10e5a2",
+                "sha256:cee6cc0584f71adefe2c908856ccc98702baf95ff80092e4ca46061538a2ba98",
+                "sha256:cef04d068f5fb0518a77857953193b6bb94809a806bd0a14983a8f12ada060c9",
+                "sha256:cf5d1c9e6837f8af9f92b6bd3e86d513cdc11f60fd62185cc49ec7d1aba34864",
+                "sha256:e61155fae27570692ad1d327e81c6cf27d535a5d7ef97648a17d922224b216de",
+                "sha256:e7f387600d424f91576af20518334df3d97bc76a300a755f9a8d6e4f5cadd289",
+                "sha256:ed08d2703b5972ec736451b818c2eb9da80d66c3e84aed1deeb0c345fefe461b",
+                "sha256:fbd6acc766814ea6443628f4e6751d0da6593dae29c08c0b2606164db026970c",
+                "sha256:feff59f27338135776f6d4e2ec7aeeac5d5f7a08a83e80869121ef8164b74af9"
             ],
             "index": "pypi",
             "markers": "python_version >= '3.9'",
-            "version": "==1.26.4"
+            "version": "==2.0.0"
         },
         "orjson": {
             "hashes": [
-                "sha256:0943a96b3fa09bee1afdfccc2cb236c9c64715afa375b2af296c73d91c23eab2",
-                "sha256:0a62f9968bab8a676a164263e485f30a0b748255ee2f4ae49a0224be95f4532b",
-                "sha256:16bda83b5c61586f6f788333d3cf3ed19015e3b9019188c56983b5a299210eb5",
-                "sha256:1770e2a0eae728b050705206d84eda8b074b65ee835e7f85c919f5705b006c9b",
-                "sha256:17e0713fc159abc261eea0f4feda611d32eabc35708b74bef6ad44f6c78d5ea0",
-                "sha256:18566beb5acd76f3769c1d1a7ec06cdb81edc4d55d2765fb677e3eaa10fa99e0",
-                "sha256:1952c03439e4dce23482ac846e7961f9d4ec62086eb98ae76d97bd41d72644d7",
-                "sha256:1bd2218d5a3aa43060efe649ec564ebedec8ce6ae0a43654b81376216d5ebd42",
-                "sha256:1c23dfa91481de880890d17aa7b91d586a4746a4c2aa9a145bebdbaf233768d5",
-                "sha256:252124b198662eee80428f1af8c63f7ff077c88723fe206a25df8dc57a57b1fa",
-                "sha256:2b166507acae7ba2f7c315dcf185a9111ad5e992ac81f2d507aac39193c2c818",
-                "sha256:2e5e176c994ce4bd434d7aafb9ecc893c15f347d3d2bbd8e7ce0b63071c52e25",
-                "sha256:3582b34b70543a1ed6944aca75e219e1192661a63da4d039d088a09c67543b08",
-                "sha256:382e52aa4270a037d41f325e7d1dfa395b7de0c367800b6f337d8157367bf3a7",
-                "sha256:416b195f78ae461601893f482287cee1e3059ec49b4f99479aedf22a20b1098b",
-                "sha256:4ad1f26bea425041e0a1adad34630c4825a9e3adec49079b1fb6ac8d36f8b754",
-                "sha256:4c895383b1ec42b017dd2c75ae8a5b862fc489006afde06f14afbdd0309b2af0",
-                "sha256:5102f50c5fc46d94f2033fe00d392588564378260d64377aec702f21a7a22912",
-                "sha256:520de5e2ef0b4ae546bea25129d6c7c74edb43fc6cf5213f511a927f2b28148b",
-                "sha256:544a12eee96e3ab828dbfcb4d5a0023aa971b27143a1d35dc214c176fdfb29b3",
-                "sha256:73100d9abbbe730331f2242c1fc0bcb46a3ea3b4ae3348847e5a141265479700",
-                "sha256:831c6ef73f9aa53c5f40ae8f949ff7681b38eaddb6904aab89dca4d85099cb78",
-                "sha256:8bc7a4df90da5d535e18157220d7915780d07198b54f4de0110eca6b6c11e290",
-                "sha256:8d0b84403d287d4bfa9bf7d1dc298d5c1c5d9f444f3737929a66f2fe4fb8f134",
-                "sha256:8d40c7f7938c9c2b934b297412c067936d0b54e4b8ab916fd1a9eb8f54c02294",
-                "sha256:9059d15c30e675a58fdcd6f95465c1522b8426e092de9fff20edebfdc15e1cb0",
-                "sha256:93433b3c1f852660eb5abdc1f4dd0ced2be031ba30900433223b28ee0140cde5",
-                "sha256:978be58a68ade24f1af7758626806e13cff7748a677faf95fbb298359aa1e20d",
-                "sha256:99b880d7e34542db89f48d14ddecbd26f06838b12427d5a25d71baceb5ba119d",
-                "sha256:9a7bc9e8bc11bac40f905640acd41cbeaa87209e7e1f57ade386da658092dc16",
-                "sha256:9e253498bee561fe85d6325ba55ff2ff08fb5e7184cd6a4d7754133bd19c9195",
-                "sha256:9f3e87733823089a338ef9bbf363ef4de45e5c599a9bf50a7a9b82e86d0228da",
-                "sha256:9fb6c3f9f5490a3eb4ddd46fc1b6eadb0d6fc16fb3f07320149c3286a1409dd8",
-                "sha256:a39aa73e53bec8d410875683bfa3a8edf61e5a1c7bb4014f65f81d36467ea098",
-                "sha256:b69a58a37dab856491bf2d3bbf259775fdce262b727f96aafbda359cb1d114d8",
-                "sha256:b8d4d1a6868cde356f1402c8faeb50d62cee765a1f7ffcfd6de732ab0581e063",
-                "sha256:ba7f67aa7f983c4345eeda16054a4677289011a478ca947cd69c0a86ea45e534",
-                "sha256:be2719e5041e9fb76c8c2c06b9600fe8e8584e6980061ff88dcbc2691a16d20d",
-                "sha256:be2aab54313752c04f2cbaab4515291ef5af8c2256ce22abc007f89f42f49109",
-                "sha256:c0403ed9c706dcd2809f1600ed18f4aae50be263bd7112e54b50e2c2bc3ebd6d",
-                "sha256:c8334c0d87103bb9fbbe59b78129f1f40d1d1e8355bbed2ca71853af15fa4ed3",
-                "sha256:cb0175a5798bdc878956099f5c54b9837cb62cfbf5d0b86ba6d77e43861bcec2",
-                "sha256:ccaa0a401fc02e8828a5bedfd80f8cd389d24f65e5ca3954d72c6582495b4bcf",
-                "sha256:cf20465e74c6e17a104ecf01bf8cd3b7b252565b4ccee4548f18b012ff2f8069",
-                "sha256:d4a654ec1de8fdaae1d80d55cee65893cb06494e124681ab335218be6a0691e7",
-                "sha256:e852baafceff8da3c9defae29414cc8513a1586ad93e45f27b89a639c68e8176"
+                "sha256:03b565c3b93f5d6e001db48b747d31ea3819b89abf041ee10ac6988886d18e01",
+                "sha256:099e81a5975237fda3100f918839af95f42f981447ba8f47adb7b6a3cdb078fa",
+                "sha256:10c0eb7e0c75e1e486c7563fe231b40fdd658a035ae125c6ba651ca3b07936f5",
+                "sha256:1146bf85ea37ac421594107195db8bc77104f74bc83e8ee21a2e58596bfb2f04",
+                "sha256:1670fe88b116c2745a3a30b0f099b699a02bb3482c2591514baf5433819e4f4d",
+                "sha256:185c394ef45b18b9a7d8e8f333606e2e8194a50c6e3c664215aae8cf42c5385e",
+                "sha256:1ad1de7fef79736dde8c3554e75361ec351158a906d747bd901a52a5c9c8d24b",
+                "sha256:235dadefb793ad12f7fa11e98a480db1f7c6469ff9e3da5e73c7809c700d746b",
+                "sha256:28afa96f496474ce60d3340fe8d9a263aa93ea01201cd2bad844c45cd21f5268",
+                "sha256:2d97531cdfe9bdd76d492e69800afd97e5930cb0da6a825646667b2c6c6c0211",
+                "sha256:338fd4f071b242f26e9ca802f443edc588fa4ab60bfa81f38beaedf42eda226c",
+                "sha256:36a10f43c5f3a55c2f680efe07aa93ef4a342d2960dd2b1b7ea2dd764fe4a37c",
+                "sha256:3d21b9983da032505f7050795e98b5d9eee0df903258951566ecc358f6696969",
+                "sha256:51bbcdea96cdefa4a9b4461e690c75ad4e33796530d182bdd5c38980202c134a",
+                "sha256:53ed1c879b10de56f35daf06dbc4a0d9a5db98f6ee853c2dbd3ee9d13e6f302f",
+                "sha256:545d493c1f560d5ccfc134803ceb8955a14c3fcb47bbb4b2fee0232646d0b932",
+                "sha256:584c902ec19ab7928fd5add1783c909094cc53f31ac7acfada817b0847975f26",
+                "sha256:5a35455cc0b0b3a1eaf67224035f5388591ec72b9b6136d66b49a553ce9eb1e6",
+                "sha256:5df58d206e78c40da118a8c14fc189207fffdcb1f21b3b4c9c0c18e839b5a214",
+                "sha256:64c9cc089f127e5875901ac05e5c25aa13cfa5dbbbd9602bda51e5c611d6e3e2",
+                "sha256:68f85ecae7af14a585a563ac741b0547a3f291de81cd1e20903e79f25170458f",
+                "sha256:6970ed7a3126cfed873c5d21ece1cd5d6f83ca6c9afb71bbae21a0b034588d96",
+                "sha256:6b68742c469745d0e6ca5724506858f75e2f1e5b59a4315861f9e2b1df77775a",
+                "sha256:7a5baef8a4284405d96c90c7c62b755e9ef1ada84c2406c24a9ebec86b89f46d",
+                "sha256:7d10cc1b594951522e35a3463da19e899abe6ca95f3c84c69e9e901e0bd93d38",
+                "sha256:85c89131d7b3218db1b24c4abecea92fd6c7f9fab87441cfc342d3acc725d807",
+                "sha256:8a11d459338f96a9aa7f232ba95679fc0c7cedbd1b990d736467894210205c09",
+                "sha256:8c13ca5e2ddded0ce6a927ea5a9f27cae77eee4c75547b4297252cb20c4d30e6",
+                "sha256:9cd684927af3e11b6e754df80b9ffafd9fb6adcaa9d3e8fdd5891be5a5cad51e",
+                "sha256:b2efbd67feff8c1f7728937c0d7f6ca8c25ec81373dc8db4ef394c1d93d13dc5",
+                "sha256:b39e006b00c57125ab974362e740c14a0c6a66ff695bff44615dcf4a70ce2b86",
+                "sha256:b6c8e30adfa52c025f042a87f450a6b9ea29649d828e0fec4858ed5e6caecf63",
+                "sha256:be79e2393679eda6a590638abda16d167754393f5d0850dcbca2d0c3735cebe2",
+                "sha256:c05f16701ab2a4ca146d0bca950af254cb7c02f3c01fca8efbbad82d23b3d9d4",
+                "sha256:c4057c3b511bb8aef605616bd3f1f002a697c7e4da6adf095ca5b84c0fd43595",
+                "sha256:c4a65310ccb5c9910c47b078ba78e2787cb3878cdded1702ac3d0da71ddc5228",
+                "sha256:ca0b3a94ac8d3886c9581b9f9de3ce858263865fdaa383fbc31c310b9eac07c9",
+                "sha256:cc28e90a7cae7fcba2493953cff61da5a52950e78dc2dacfe931a317ee3d8de7",
+                "sha256:cdf7365063e80899ae3a697def1277c17a7df7ccfc979990a403dfe77bb54d40",
+                "sha256:d69858c32f09c3e1ce44b617b3ebba1aba030e777000ebdf72b0d8e365d0b2b3",
+                "sha256:dbead71dbe65f959b7bd8cf91e0e11d5338033eba34c114f69078d59827ee139",
+                "sha256:dcbe82b35d1ac43b0d84072408330fd3295c2896973112d495e7234f7e3da2e1",
+                "sha256:dfc91d4720d48e2a709e9c368d5125b4b5899dced34b5400c3837dadc7d6271b",
+                "sha256:eded5138cc565a9d618e111c6d5c2547bbdd951114eb822f7f6309e04db0fb47",
+                "sha256:f4324929c2dd917598212bfd554757feca3e5e0fa60da08be11b4aa8b90013c1",
+                "sha256:fb66215277a230c456f9038d5e2d84778141643207f85336ef8d2a9da26bd7ca"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==3.10.3"
+            "version": "==3.10.5"
         },
         "osmpythontools": {
             "hashes": [
@@ -769,11 +778,11 @@
         },
         "packaging": {
             "hashes": [
-                "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5",
-                "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"
+                "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002",
+                "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"
             ],
-            "markers": "python_version >= '3.7'",
-            "version": "==24.0"
+            "markers": "python_version >= '3.8'",
+            "version": "==24.1"
         },
         "pandas": {
             "hashes": [
@@ -887,96 +896,97 @@
         },
         "pydantic": {
             "hashes": [
-                "sha256:71b2945998f9c9b7919a45bde9a50397b289937d215ae141c1d0903ba7149fd7",
-                "sha256:834ab954175f94e6e68258537dc49402c4a5e9d0409b9f1b86b7e934a8372de7"
+                "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52",
+                "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"
             ],
+            "index": "pypi",
             "markers": "python_version >= '3.8'",
-            "version": "==2.7.2"
+            "version": "==2.7.4"
         },
         "pydantic-core": {
             "hashes": [
-                "sha256:0bee9bb305a562f8b9271855afb6ce00223f545de3d68560b3c1649c7c5295e9",
-                "sha256:0ecce4b2360aa3f008da3327d652e74a0e743908eac306198b47e1c58b03dd2b",
-                "sha256:17954d784bf8abfc0ec2a633108207ebc4fa2df1a0e4c0c3ccbaa9bb01d2c426",
-                "sha256:19d2e725de0f90d8671f89e420d36c3dd97639b98145e42fcc0e1f6d492a46dc",
-                "sha256:1f9cd7f5635b719939019be9bda47ecb56e165e51dd26c9a217a433e3d0d59a9",
-                "sha256:200ad4e3133cb99ed82342a101a5abf3d924722e71cd581cc113fe828f727fbc",
-                "sha256:24b214b7ee3bd3b865e963dbed0f8bc5375f49449d70e8d407b567af3222aae4",
-                "sha256:2c44efdd3b6125419c28821590d7ec891c9cb0dff33a7a78d9d5c8b6f66b9702",
-                "sha256:2c8333f6e934733483c7eddffdb094c143b9463d2af7e6bd85ebcb2d4a1b82c6",
-                "sha256:2f7ef5f0ebb77ba24c9970da18b771711edc5feaf00c10b18461e0f5f5949231",
-                "sha256:304378b7bf92206036c8ddd83a2ba7b7d1a5b425acafff637172a3aa72ad7083",
-                "sha256:370059b7883485c9edb9655355ff46d912f4b03b009d929220d9294c7fd9fd60",
-                "sha256:37b40c05ced1ba4218b14986fe6f283d22e1ae2ff4c8e28881a70fb81fbfcda7",
-                "sha256:3d3e42bb54e7e9d72c13ce112e02eb1b3b55681ee948d748842171201a03a98a",
-                "sha256:3fc1c7f67f34c6c2ef9c213e0f2a351797cda98249d9ca56a70ce4ebcaba45f4",
-                "sha256:41dbdcb0c7252b58fa931fec47937edb422c9cb22528f41cb8963665c372caf6",
-                "sha256:432e999088d85c8f36b9a3f769a8e2b57aabd817bbb729a90d1fe7f18f6f1f39",
-                "sha256:45e4ffbae34f7ae30d0047697e724e534a7ec0a82ef9994b7913a412c21462a0",
-                "sha256:4afa5f5973e8572b5c0dcb4e2d4fda7890e7cd63329bd5cc3263a25c92ef0026",
-                "sha256:544a9a75622357076efb6b311983ff190fbfb3c12fc3a853122b34d3d358126c",
-                "sha256:5560dda746c44b48bf82b3d191d74fe8efc5686a9ef18e69bdabccbbb9ad9442",
-                "sha256:58ff8631dbab6c7c982e6425da8347108449321f61fe427c52ddfadd66642af7",
-                "sha256:5a64faeedfd8254f05f5cf6fc755023a7e1606af3959cfc1a9285744cc711044",
-                "sha256:60e4c625e6f7155d7d0dcac151edf5858102bc61bf959d04469ca6ee4e8381bd",
-                "sha256:616221a6d473c5b9aa83fa8982745441f6a4a62a66436be9445c65f241b86c94",
-                "sha256:63081a49dddc6124754b32a3774331467bfc3d2bd5ff8f10df36a95602560361",
-                "sha256:666e45cf071669fde468886654742fa10b0e74cd0fa0430a46ba6056b24fb0af",
-                "sha256:67bc078025d70ec5aefe6200ef094576c9d86bd36982df1301c758a9fff7d7f4",
-                "sha256:691018785779766127f531674fa82bb368df5b36b461622b12e176c18e119022",
-                "sha256:6a36f78674cbddc165abab0df961b5f96b14461d05feec5e1f78da58808b97e7",
-                "sha256:6afd5c867a74c4d314c557b5ea9520183fadfbd1df4c2d6e09fd0d990ce412cd",
-                "sha256:6b32c2a1f8032570842257e4c19288eba9a2bba4712af542327de9a1204faff8",
-                "sha256:6e59fca51ffbdd1638b3856779342ed69bcecb8484c1d4b8bdb237d0eb5a45e2",
-                "sha256:70cf099197d6b98953468461d753563b28e73cf1eade2ffe069675d2657ed1d5",
-                "sha256:73038d66614d2e5cde30435b5afdced2b473b4c77d4ca3a8624dd3e41a9c19be",
-                "sha256:744697428fcdec6be5670460b578161d1ffe34743a5c15656be7ea82b008197c",
-                "sha256:77319771a026f7c7d29c6ebc623de889e9563b7087911b46fd06c044a12aa5e9",
-                "sha256:7a20dded653e516a4655f4c98e97ccafb13753987434fe7cf044aa25f5b7d417",
-                "sha256:7e6382ce89a92bc1d0c0c5edd51e931432202b9080dc921d8d003e616402efd1",
-                "sha256:7fdd362f6a586e681ff86550b2379e532fee63c52def1c666887956748eaa326",
-                "sha256:80aea0ffeb1049336043d07799eace1c9602519fb3192916ff525b0287b2b1e4",
-                "sha256:82f2718430098bcdf60402136c845e4126a189959d103900ebabb6774a5d9fdb",
-                "sha256:855ec66589c68aa367d989da5c4755bb74ee92ccad4fdb6af942c3612c067e34",
-                "sha256:9128089da8f4fe73f7a91973895ebf2502539d627891a14034e45fb9e707e26d",
-                "sha256:929c24e9dea3990bc8bcd27c5f2d3916c0c86f5511d2caa69e0d5290115344a9",
-                "sha256:98ed737567d8f2ecd54f7c8d4f8572ca7c7921ede93a2e52939416170d357812",
-                "sha256:9a46795b1f3beb167eaee91736d5d17ac3a994bf2215a996aed825a45f897558",
-                "sha256:9f9e04afebd3ed8c15d67a564ed0a34b54e52136c6d40d14c5547b238390e779",
-                "sha256:a4e651e47d981c1b701dcc74ab8fec5a60a5b004650416b4abbef13db23bc7be",
-                "sha256:a62e437d687cc148381bdd5f51e3e81f5b20a735c55f690c5be94e05da2b0d5c",
-                "sha256:aaee40f25bba38132e655ffa3d1998a6d576ba7cf81deff8bfa189fb43fd2bbe",
-                "sha256:adf952c3f4100e203cbaf8e0c907c835d3e28f9041474e52b651761dc248a3c0",
-                "sha256:b367a73a414bbb08507da102dc2cde0fa7afe57d09b3240ce82a16d608a7679c",
-                "sha256:b8e20e15d18bf7dbb453be78a2d858f946f5cdf06c5072453dace00ab652e2b2",
-                "sha256:b95a0972fac2b1ff3c94629fc9081b16371dad870959f1408cc33b2f78ad347a",
-                "sha256:b9ebe8231726c49518b16b237b9fe0d7d361dd221302af511a83d4ada01183ab",
-                "sha256:ba905d184f62e7ddbb7a5a751d8a5c805463511c7b08d1aca4a3e8c11f2e5048",
-                "sha256:bd4435b8d83f0c9561a2a9585b1de78f1abb17cb0cef5f39bf6a4b47d19bafe3",
-                "sha256:bd7df92f28d351bb9f12470f4c533cf03d1b52ec5a6e5c58c65b183055a60106",
-                "sha256:c0037a92cf0c580ed14e10953cdd26528e8796307bb8bb312dc65f71547df04d",
-                "sha256:c0d9ff283cd3459fa0bf9b0256a2b6f01ac1ff9ffb034e24457b9035f75587cb",
-                "sha256:c56eca1686539fa0c9bda992e7bd6a37583f20083c37590413381acfc5f192d6",
-                "sha256:c6ac9ffccc9d2e69d9fba841441d4259cb668ac180e51b30d3632cd7abca2b9b",
-                "sha256:c826870b277143e701c9ccf34ebc33ddb4d072612683a044e7cce2d52f6c3fef",
-                "sha256:cd4a032bb65cc132cae1fe3e52877daecc2097965cd3914e44fbd12b00dae7c5",
-                "sha256:d33ce258e4e6e6038f2b9e8b8a631d17d017567db43483314993b3ca345dcbbb",
-                "sha256:d531076bdfb65af593326ffd567e6ab3da145020dafb9187a1d131064a55f97c",
-                "sha256:dccf3ef1400390ddd1fb55bf0632209d39140552d068ee5ac45553b556780e06",
-                "sha256:df11fa992e9f576473038510d66dd305bcd51d7dd508c163a8c8fe148454e059",
-                "sha256:e1a8376fef60790152564b0eab376b3e23dd6e54f29d84aad46f7b264ecca943",
-                "sha256:e201935d282707394f3668380e41ccf25b5794d1b131cdd96b07f615a33ca4b1",
-                "sha256:e2e253af04ceaebde8eb201eb3f3e3e7e390f2d275a88300d6a1959d710539e2",
-                "sha256:e862823be114387257dacbfa7d78547165a85d7add33b446ca4f4fae92c7ff5c",
-                "sha256:eecf63195be644b0396f972c82598cd15693550f0ff236dcf7ab92e2eb6d3522",
-                "sha256:f0928cde2ae416a2d1ebe6dee324709c6f73e93494d8c7aea92df99aab1fc40f",
-                "sha256:f9c08cabff68704a1b4667d33f534d544b8a07b8e5d039c37067fceb18789e78",
-                "sha256:fec02527e1e03257aa25b1a4dcbe697b40a22f1229f5d026503e8b7ff6d2eda7",
-                "sha256:ff58f379345603d940e461eae474b6bbb6dab66ed9a851ecd3cb3709bf4dcf6a",
-                "sha256:ffecbb5edb7f5ffae13599aec33b735e9e4c7676ca1633c60f2c606beb17efc5"
+                "sha256:01dd777215e2aa86dfd664daed5957704b769e726626393438f9c87690ce78c3",
+                "sha256:0eb2a4f660fcd8e2b1c90ad566db2b98d7f3f4717c64fe0a83e0adb39766d5b8",
+                "sha256:0fbbdc827fe5e42e4d196c746b890b3d72876bdbf160b0eafe9f0334525119c8",
+                "sha256:123c3cec203e3f5ac7b000bd82235f1a3eced8665b63d18be751f115588fea30",
+                "sha256:14601cdb733d741b8958224030e2bfe21a4a881fb3dd6fbb21f071cabd48fa0a",
+                "sha256:18f469a3d2a2fdafe99296a87e8a4c37748b5080a26b806a707f25a902c040a8",
+                "sha256:19894b95aacfa98e7cb093cd7881a0c76f55731efad31073db4521e2b6ff5b7d",
+                "sha256:1b4de2e51bbcb61fdebd0ab86ef28062704f62c82bbf4addc4e37fa4b00b7cbc",
+                "sha256:1d886dc848e60cb7666f771e406acae54ab279b9f1e4143babc9c2258213daa2",
+                "sha256:1f4d26ceb5eb9eed4af91bebeae4b06c3fb28966ca3a8fb765208cf6b51102ab",
+                "sha256:21a5e440dbe315ab9825fcd459b8814bb92b27c974cbc23c3e8baa2b76890077",
+                "sha256:293afe532740370aba8c060882f7d26cfd00c94cae32fd2e212a3a6e3b7bc15e",
+                "sha256:2f5966897e5461f818e136b8451d0551a2e77259eb0f73a837027b47dc95dab9",
+                "sha256:2fd41f6eff4c20778d717af1cc50eca52f5afe7805ee530a4fbd0bae284f16e9",
+                "sha256:2fdf2156aa3d017fddf8aea5adfba9f777db1d6022d392b682d2a8329e087cef",
+                "sha256:3c40d4eaad41f78e3bbda31b89edc46a3f3dc6e171bf0ecf097ff7a0ffff7cb1",
+                "sha256:43d447dd2ae072a0065389092a231283f62d960030ecd27565672bd40746c507",
+                "sha256:44a688331d4a4e2129140a8118479443bd6f1905231138971372fcde37e43528",
+                "sha256:44c7486a4228413c317952e9d89598bcdfb06399735e49e0f8df643e1ccd0558",
+                "sha256:44cd83ab6a51da80fb5adbd9560e26018e2ac7826f9626bc06ca3dc074cd198b",
+                "sha256:46387e38bd641b3ee5ce247563b60c5ca098da9c56c75c157a05eaa0933ed154",
+                "sha256:4701b19f7e3a06ea655513f7938de6f108123bf7c86bbebb1196eb9bd35cf724",
+                "sha256:4748321b5078216070b151d5271ef3e7cc905ab170bbfd27d5c83ee3ec436695",
+                "sha256:4b06beb3b3f1479d32befd1f3079cc47b34fa2da62457cdf6c963393340b56e9",
+                "sha256:4d0dcc59664fcb8974b356fe0a18a672d6d7cf9f54746c05f43275fc48636851",
+                "sha256:4e99bc050fe65c450344421017f98298a97cefc18c53bb2f7b3531eb39bc7805",
+                "sha256:509daade3b8649f80d4e5ff21aa5673e4ebe58590b25fe42fac5f0f52c6f034a",
+                "sha256:51991a89639a912c17bef4b45c87bd83593aee0437d8102556af4885811d59f5",
+                "sha256:53db086f9f6ab2b4061958d9c276d1dbe3690e8dd727d6abf2321d6cce37fa94",
+                "sha256:564d7922e4b13a16b98772441879fcdcbe82ff50daa622d681dd682175ea918c",
+                "sha256:574d92eac874f7f4db0ca653514d823a0d22e2354359d0759e3f6a406db5d55d",
+                "sha256:578e24f761f3b425834f297b9935e1ce2e30f51400964ce4801002435a1b41ef",
+                "sha256:59ff3e89f4eaf14050c8022011862df275b552caef8082e37b542b066ce1ff26",
+                "sha256:5f09baa656c904807e832cf9cce799c6460c450c4ad80803517032da0cd062e2",
+                "sha256:6891a2ae0e8692679c07728819b6e2b822fb30ca7445f67bbf6509b25a96332c",
+                "sha256:6a750aec7bf431517a9fd78cb93c97b9b0c496090fee84a47a0d23668976b4b0",
+                "sha256:6f5c4d41b2771c730ea1c34e458e781b18cc668d194958e0112455fff4e402b2",
+                "sha256:77450e6d20016ec41f43ca4a6c63e9fdde03f0ae3fe90e7c27bdbeaece8b1ed4",
+                "sha256:81b5efb2f126454586d0f40c4d834010979cb80785173d1586df845a632e4e6d",
+                "sha256:823be1deb01793da05ecb0484d6c9e20baebb39bd42b5d72636ae9cf8350dbd2",
+                "sha256:834b5230b5dfc0c1ec37b2fda433b271cbbc0e507560b5d1588e2cc1148cf1ce",
+                "sha256:847a35c4d58721c5dc3dba599878ebbdfd96784f3fb8bb2c356e123bdcd73f34",
+                "sha256:86110d7e1907ab36691f80b33eb2da87d780f4739ae773e5fc83fb272f88825f",
+                "sha256:8951eee36c57cd128f779e641e21eb40bc5073eb28b2d23f33eb0ef14ffb3f5d",
+                "sha256:8a7164fe2005d03c64fd3b85649891cd4953a8de53107940bf272500ba8a788b",
+                "sha256:8b8bab4c97248095ae0c4455b5a1cd1cdd96e4e4769306ab19dda135ea4cdb07",
+                "sha256:90afc12421df2b1b4dcc975f814e21bc1754640d502a2fbcc6d41e77af5ec312",
+                "sha256:938cb21650855054dc54dfd9120a851c974f95450f00683399006aa6e8abb057",
+                "sha256:942ba11e7dfb66dc70f9ae66b33452f51ac7bb90676da39a7345e99ffb55402d",
+                "sha256:972658f4a72d02b8abfa2581d92d59f59897d2e9f7e708fdabe922f9087773af",
+                "sha256:97736815b9cc893b2b7f663628e63f436018b75f44854c8027040e05230eeddb",
+                "sha256:98906207f29bc2c459ff64fa007afd10a8c8ac080f7e4d5beff4c97086a3dabd",
+                "sha256:99457f184ad90235cfe8461c4d70ab7dd2680e28821c29eca00252ba90308c78",
+                "sha256:a0d829524aaefdebccb869eed855e2d04c21d2d7479b6cada7ace5448416597b",
+                "sha256:a2fdd81edd64342c85ac7cf2753ccae0b79bf2dfa063785503cb85a7d3593223",
+                "sha256:a55b5b16c839df1070bc113c1f7f94a0af4433fcfa1b41799ce7606e5c79ce0a",
+                "sha256:a642295cd0c8df1b86fc3dced1d067874c353a188dc8e0f744626d49e9aa51c4",
+                "sha256:ab86ce7c8f9bea87b9d12c7f0af71102acbf5ecbc66c17796cff45dae54ef9a5",
+                "sha256:abc267fa9837245cc28ea6929f19fa335f3dc330a35d2e45509b6566dc18be23",
+                "sha256:ae1d6df168efb88d7d522664693607b80b4080be6750c913eefb77e34c12c71a",
+                "sha256:b2ebef0e0b4454320274f5e83a41844c63438fdc874ea40a8b5b4ecb7693f1c4",
+                "sha256:b48ece5bde2e768197a2d0f6e925f9d7e3e826f0ad2271120f8144a9db18d5c8",
+                "sha256:b7cdf28938ac6b8b49ae5e92f2735056a7ba99c9b110a474473fd71185c1af5d",
+                "sha256:bb4462bd43c2460774914b8525f79b00f8f407c945d50881568f294c1d9b4443",
+                "sha256:bc4ff9805858bd54d1a20efff925ccd89c9d2e7cf4986144b30802bf78091c3e",
+                "sha256:c1322d7dd74713dcc157a2b7898a564ab091ca6c58302d5c7b4c07296e3fd00f",
+                "sha256:c67598100338d5d985db1b3d21f3619ef392e185e71b8d52bceacc4a7771ea7e",
+                "sha256:ca26a1e73c48cfc54c4a76ff78df3727b9d9f4ccc8dbee4ae3f73306a591676d",
+                "sha256:d323a01da91851a4f17bf592faf46149c9169d68430b3146dcba2bb5e5719abc",
+                "sha256:dc1803ac5c32ec324c5261c7209e8f8ce88e83254c4e1aebdc8b0a39f9ddb443",
+                "sha256:e00a3f196329e08e43d99b79b286d60ce46bed10f2280d25a1718399457e06be",
+                "sha256:e85637bc8fe81ddb73fda9e56bab24560bdddfa98aa64f87aaa4e4b6730c23d2",
+                "sha256:e858ac0a25074ba4bce653f9b5d0a85b7456eaddadc0ce82d3878c22489fa4ee",
+                "sha256:eae237477a873ab46e8dd748e515c72c0c804fb380fbe6c85533c7de51f23a8f",
+                "sha256:ebef0dd9bf9b812bf75bda96743f2a6c5734a02092ae7f721c048d156d5fabae",
+                "sha256:ec3beeada09ff865c344ff3bc2f427f5e6c26401cc6113d77e372c3fdac73864",
+                "sha256:f76d0ad001edd426b92233d45c746fd08f467d56100fd8f30e9ace4b005266e4",
+                "sha256:f85d05aa0918283cf29a30b547b4df2fbb56b45b135f9e35b6807cb28bc47951",
+                "sha256:f9899c94762343f2cc2fc64c13e7cae4c3cc65cdfc87dd810a31654c9b7358cc"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==2.18.3"
+            "version": "==2.18.4"
         },
         "pygments": {
             "hashes": [
@@ -1120,6 +1130,54 @@
             "markers": "python_version >= '3.9'",
             "version": "==1.13.1"
         },
+        "shapely": {
+            "hashes": [
+                "sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f",
+                "sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0",
+                "sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf",
+                "sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6",
+                "sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa",
+                "sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113",
+                "sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9",
+                "sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398",
+                "sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0",
+                "sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65",
+                "sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d",
+                "sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf",
+                "sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242",
+                "sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9",
+                "sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f",
+                "sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7",
+                "sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07",
+                "sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53",
+                "sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328",
+                "sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd",
+                "sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8",
+                "sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879",
+                "sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e",
+                "sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679",
+                "sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47",
+                "sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7",
+                "sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6",
+                "sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc",
+                "sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7",
+                "sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17",
+                "sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b",
+                "sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c",
+                "sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa",
+                "sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30",
+                "sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d",
+                "sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac",
+                "sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58",
+                "sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc",
+                "sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35",
+                "sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c",
+                "sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c"
+            ],
+            "index": "pypi",
+            "markers": "python_version >= '3.7'",
+            "version": "==2.0.4"
+        },
         "shellingham": {
             "hashes": [
                 "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686",
@@ -1170,11 +1228,11 @@
         },
         "typing-extensions": {
             "hashes": [
-                "sha256:8cbcdc8606ebcb0d95453ad7dc5065e6237b6aa230a31e81d0f440c30fed5fd8",
-                "sha256:b349c66bea9016ac22978d800cfff206d5f9816951f12a7d0ec5578b0a819594"
+                "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
+                "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==4.12.0"
+            "version": "==4.12.2"
         },
         "tzdata": {
             "hashes": [
@@ -1273,11 +1331,11 @@
                 "standard"
             ],
             "hashes": [
-                "sha256:78fa0b5f56abb8562024a59041caeb555c86e48d0efdd23c3fe7de7a4075bdab",
-                "sha256:f678dec4fa3a39706bbf49b9ec5fc40049d42418716cea52b53f07828a60aa37"
+                "sha256:cd17daa7f3b9d7a24de3617820e634d0933b69eed8e33a516071174427238c81",
+                "sha256:d46cd8e0fd80240baffbcd9ec1012a712938754afcf81bce56c024c1656aece8"
             ],
             "markers": "python_version >= '3.8'",
-            "version": "==0.30.0"
+            "version": "==0.30.1"
         },
         "uvloop": {
             "hashes": [
@@ -1474,11 +1532,11 @@
         },
         "xarray": {
             "hashes": [
-                "sha256:7ddedfe2294a0ab00f02d0fbdcb9c6300ec589f3cf436a9c7b7b577a12cd9bcf",
-                "sha256:e0eb1cb265f265126795f388ed9591f3c752f2aca491f6c0576711fd15b708f2"
+                "sha256:0b91e0bc4dc0296947947640fe31ec6e867ce258d2f7cbc10bedf4a6d68340c7",
+                "sha256:721a7394e8ec3d592b2d8ebe21eed074ac077dc1bb1bd777ce00e41700b4866c"
             ],
             "markers": "python_version >= '3.9'",
-            "version": "==2024.5.0"
+            "version": "==2024.6.0"
         }
     },
     "develop": {}
diff --git a/backend/app/__pycache__/__init__.cpython-310.pyc b/backend/app/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 678d7d0..0000000
Binary files a/backend/app/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/backend/app/__pycache__/main.cpython-310.pyc b/backend/app/__pycache__/main.cpython-310.pyc
deleted file mode 100644
index cd67059..0000000
Binary files a/backend/app/__pycache__/main.cpython-310.pyc and /dev/null differ
diff --git a/backend/app/dependencies.py b/backend/app/dependencies.py
deleted file mode 100644
index 2cb6801..0000000
--- a/backend/app/dependencies.py
+++ /dev/null
@@ -1 +0,0 @@
-import app.src
\ No newline at end of file
diff --git a/backend/app/main.py b/backend/app/main.py
deleted file mode 100644
index 257d572..0000000
--- a/backend/app/main.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from .src.optimizer import solve_optimization
-from .src.landmarks_manager import Landmark
-from fastapi import FastAPI
-
-app = FastAPI()
-
-
-@app.get("/optimize/{max_steps}/{print_details}")
-def main(max_steps: int, print_details: bool):
-    
-    # CONSTRAINT TO RESPECT MAX NUMBER OF STEPS
-    #max_steps = 16
-
-
-    # Initialize all landmarks (+ start and goal). Order matters here
-    landmarks = []
-    landmarks.append(Landmark("départ", -1, (0, 0)))
-    landmarks.append(Landmark("tour eiffel", 99, (0,2)))                           # PUT IN JSON
-    landmarks.append(Landmark("arc de triomphe", 99, (0,4)))
-    landmarks.append(Landmark("louvre", 99, (0,6)))
-    landmarks.append(Landmark("montmartre", 99, (0,10)))
-    landmarks.append(Landmark("concorde", 99, (0,8)))
-    landmarks.append(Landmark("arrivée", -1, (0, 0)))
-
-
-    visiting_order = solve_optimization(landmarks, max_steps, print_details)
-
-    #return visiting_order
-
-    return("max steps :", max_steps, "\n", visiting_order)
-
-
-"""if __name__ == "__main__":
-    main()"""
\ No newline at end of file
diff --git a/backend/app/src/__init__.py b/backend/app/src/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/backend/app/src/__pycache__/__init__.cpython-310.pyc b/backend/app/src/__pycache__/__init__.cpython-310.pyc
deleted file mode 100644
index 3c06a08..0000000
Binary files a/backend/app/src/__pycache__/__init__.cpython-310.pyc and /dev/null differ
diff --git a/backend/app/src/__pycache__/optimizer.cpython-310.pyc b/backend/app/src/__pycache__/optimizer.cpython-310.pyc
deleted file mode 100644
index e60b82c..0000000
Binary files a/backend/app/src/__pycache__/optimizer.cpython-310.pyc and /dev/null differ
diff --git a/backend/app/src/landmarks_manager.py b/backend/app/src/landmarks_manager.py
deleted file mode 100644
index 0c3a0e2..0000000
--- a/backend/app/src/landmarks_manager.py
+++ /dev/null
@@ -1,57 +0,0 @@
-from OSMPythonTools.api import Api
-from OSMPythonTools.overpass import Overpass
-from dataclasses import dataclass
-
-
-# Defines the landmark class (aka some place there is to visit)
-@dataclass
-class Landmarkkkk :
-    name : str
-    attractiveness : int
-    id : int
-    
-@dataclass
-class Landmark :
-    name : str
-    attractiveness : int
-    loc : tuple
-
-# Converts a OSM id to a landmark
-def add_from_id(id: int, score: int) :
-
-    try :
-        s = 'way/' + str(id)           # prepare string for query
-        obj =  api.query(s)                             # object to add
-    except :
-        s = 'relation/' + str(id)           # prepare string for query
-        obj =  api.query(s)                             # object to add
-
-    return Landmarkkkk(obj.tag('name:fr'), score, id)      # create Landmark out of it
-
-
-# take a lsit of tuples (id, score) to generate a list of landmarks
-def generate_landmarks(ids_and_scores: list) :
-
-    L = []
-    for tup in ids_and_scores :
-        L.append(add_from_id(tup[0], tup[1]))
-
-    return L
-
-api = Api()
-
-
-l = (7515426, 70)
-t = (5013364, 100)
-n = (201611261, 99)
-a = (226413508, 50)
-m = (23762981, 30)
-
-
-ids_and_scores = [t, l, n, a, m]
-
-landmarks = generate_landmarks(ids_and_scores)
-
-
-for obj in landmarks :
-    print(obj)
\ No newline at end of file
diff --git a/backend/app/src/optimizer.py b/backend/app/src/optimizer.py
deleted file mode 100644
index d74d1b9..0000000
--- a/backend/app/src/optimizer.py
+++ /dev/null
@@ -1,323 +0,0 @@
-from scipy.optimize import linprog
-import numpy as np
-from scipy.linalg import block_diag
-
-
-# landmarks = [Landmark_1, Landmark_2, ...]
-
-# Convert the solution of the optimization into the list of edges to follow. Order is taken into account
-def untangle(resx: list) :
-    N = len(resx)                   # length of res
-    L = int(np.sqrt(N))             # number of landmarks. CAST INTO INT but should not be a problem because N = L**2 by def.
-    n_edges = resx.sum()      # number of edges
-
-    order = []
-    nonzeroind = np.nonzero(resx)[0] # the return is a little funny so I use the [0]
-
-    nonzero_tup = np.unravel_index(nonzeroind, (L,L))
-
-    indx = nonzero_tup[0].tolist()
-    indy = nonzero_tup[1].tolist()
-
-    vert = (indx[0], indy[0])
-
-    order.append(vert[0])
-    order.append(vert[1])
-    
-    while len(order) < n_edges + 1 :
-        ind = indx.index(vert[1])
-
-        vert = (indx[ind], indy[ind])
-
-        order.append(vert[1])
-
-    return order
-
-# Just to print the result
-def print_res(res, landmarks: list, P) :
-    X = abs(res.x)
-    order = untangle(X)
-    things = []
-
-    """N = int(np.sqrt(len(X)))
-    for i in range(N):
-        print(X[i*N:i*N+N])
-    print("Optimal value:", -res.fun)  # Minimization, so we negate to get the maximum
-    print("Optimal point:", res.x)
-    for i,x in enumerate(X) : X[i] = round(x,0)
-    print(order)"""
-
-    if (X.sum()+1)**2 == len(X) : 
-        print('\nAll landmarks can be visited within max_steps, the following order is suggested : ')
-    else :
-        print('Could not visit all the landmarks, the following order is suggested : ')
-
-    for idx in order : 
-        print('- ' + landmarks[idx].name)
-        things.append(landmarks[idx].name)
-
-    steps = path_length(P, abs(res.x))
-    print("\nSteps walked : " + str(steps))
-
-    return things
-
-# Checks for cases of circular symmetry in the result
-def has_circle(resx: list) :
-    N = len(resx)                   # length of res
-    L = int(np.sqrt(N))             # number of landmarks. CAST INTO INT but should not be a problem because N = L**2 by def.
-    n_edges = resx.sum()      # number of edges
-
-    
-    nonzeroind = np.nonzero(resx)[0] # the return is a little funny so I use the [0]
-
-    nonzero_tup = np.unravel_index(nonzeroind, (L,L))
-
-    indx = nonzero_tup[0].tolist()
-    indy = nonzero_tup[1].tolist()
-    
-
-    verts = []
-
-    for i, x in enumerate(indx) :
-        verts.append((x, indy[i]))
-
-    
-    for vert in verts :
-        visited = []
-        visited.append(vert)
-
-        while len(visited) < n_edges + 1 :
-
-            try : 
-                ind = indx.index(vert[1])
-
-                vert = (indx[ind], indy[ind])
-
-                if vert in visited :
-                    return visited
-                else :
-                    visited.append(vert)
-            except :
-                break
-
-    return []
-
-# Constraint to not have d14 and d41 simultaneously. Does not prevent circular symmetry with more elements
-def break_sym(landmarks, A_ub, b_ub):
-    L = len(landmarks)
-    upper_ind = np.triu_indices(L,0,L)
-
-    up_ind_x = upper_ind[0]
-    up_ind_y = upper_ind[1]
-
-    for i, _ in enumerate(up_ind_x) :
-        l = [0]*L*L
-        if up_ind_x[i] != up_ind_y[i] :
-            l[up_ind_x[i]*L + up_ind_y[i]] = 1
-            l[up_ind_y[i]*L + up_ind_x[i]] = 1
-
-            A_ub = np.vstack((A_ub,l))
-            b_ub.append(1)
-
-            """for i in range(7):
-                print(l[i*7:i*7+7])
-            print("\n")"""
-
-    return A_ub, b_ub
-
-# Constraint to not have circular paths. Want to go from start -> finish without unconnected loops
-def break_circle(landmarks, A_ub, b_ub, circle) :
-    N = len(landmarks)
-    l = [0]*N*N
-
-    for index in circle :
-        x = index[0]
-        y = index[1]
-        l[x*N+y] = 1
-
-    A_ub = np.vstack((A_ub,l))
-    b_ub.append(len(circle)-1)
-
-    """print("\n\nPREVENT CIRCLE")
-    for i in range(7):
-        print(l[i*7:i*7+7])
-    print("\n")"""
-
-    return A_ub, b_ub
-
-# Constraint to respect max number of travels
-def respect_number(landmarks, A_ub, b_ub):
-    h = []
-    for i in range(len(landmarks)) : h.append([1]*len(landmarks))
-    T = block_diag(*h)
-    """for l in T :
-        for i in range(7):
-            print(l[i*7:i*7+7])
-        print("\n")"""
-    return np.vstack((A_ub, T)), b_ub + [1]*len(landmarks)
-
-# Constraint to tie the problem together. Necessary but not sufficient to avoid circles
-def respect_order(landmarks: list, A_eq, b_eq): 
-    N = len(landmarks)
-    for i in range(N-1) :     # Prevent stacked ones
-        if i == 0 :
-            continue
-        else : 
-            l = [0]*N
-            l[i] = -1
-            l = l*N
-            for j in range(N) :
-                l[i*N + j] = 1
-
-            A_eq = np.vstack((A_eq,l))
-            b_eq.append(0)
-
-            """for i in range(7):
-                print(l[i*7:i*7+7])
-            print("\n")"""
-
-    return A_eq, b_eq
-
-# Compute manhattan distance between 2 locations
-def manhattan_distance(loc1: tuple, loc2: tuple):
-    x1, y1 = loc1
-    x2, y2 = loc2
-    return abs(x1 - x2) + abs(y1 - y2)
-
-# Constraint to not stay in position
-def init_eq_not_stay(landmarks): 
-    L = len(landmarks)
-    l = [0]*L*L
-
-
-    for i in range(L) :
-        for j in range(L) :
-            if j == i :
-                l[j + i*L] = 1
-    l[L-1] = 1      # cannot skip from start to finish
-    #A_eq = np.array([np.array(xi) for xi in A_eq])                  # Must convert A_eq into an np array
-    l = np.array(np.array(l))
-
-    """for i in range(7):
-        print(l[i*7:i*7+7])"""
-
-    return [l], [0]
-
-# Initialize A and c. Compute the distances from all landmarks to each other and store attractiveness
-# We want to maximize the sightseeing :  max(c) st. A*x < b   and   A_eq*x = b_eq
-def init_ub_dist(landmarks: list, max_steps: int):
-    # Objective function coefficients. a*x1 + b*x2 + c*x3 + ...
-    c = []
-    # Coefficients of inequality constraints (left-hand side)
-    A = []
-    for i, spot1 in enumerate(landmarks) :
-        dist_table = [0]*len(landmarks)
-        c.append(-spot1.attractiveness)
-        for j, spot2 in enumerate(landmarks) :
-            dist_table[j] = manhattan_distance(spot1.loc, spot2.loc)
-        A.append(dist_table)
-    c = c*len(landmarks)
-    A_ub = []
-    for line in A :
-        #print(line)
-        A_ub += line
-    return c, A_ub, [max_steps]
-
-# Go through the landmarks and force the optimizer to use landmarks where attractiveness is set to -1
-def respect_user_mustsee(landmarks: list, A_eq: list, b_eq: list) :
-    L = len(landmarks)
-    H = 0       # sort of heuristic to get an idea of the number of steps needed
-    for i in landmarks : 
-        if i.name == "départ" : elem_prev = i              # list of all matches
-    for i, elem in enumerate(landmarks) :
-        if elem.attractiveness == -1 :
-            l = [0]*L*L
-            if elem.name != "arrivée" :
-                for j in range(L) :
-                    l[j +i*L] = 1
-                    
-            else :                          # This ensures we go to goal
-                for k in range(L-1) :
-                        l[k*L+L-1] = 1  
-
-            H += manhattan_distance(elem.loc, elem_prev.loc)
-            elem_prev = elem
-
-            """for i in range(7):
-                print(l[i*7:i*7+7])
-            print("\n")"""
-
-            A_eq = np.vstack((A_eq,l))
-            b_eq.append(1)
-    return A_eq, b_eq, H
-
-# Computes the path length given path matrix (dist_table) and a result
-def path_length(P: list, resx: list) :
-    return np.dot(P, resx)
-
-# Main optimization pipeline
-def solve_optimization (landmarks, max_steps, printing_details) :
-
-    # SET CONSTRAINTS FOR INEQUALITY
-    c, A_ub, b_ub = init_ub_dist(landmarks, max_steps)              # Add the distances from each landmark to the other
-    P = A_ub                                                        # store the paths for later. Needed to compute path length
-    A_ub, b_ub = respect_number(landmarks, A_ub, b_ub)              # Respect max number of visits. 
-
-    # TODO : Problems with circular symmetry
-    A_ub, b_ub = break_sym(landmarks, A_ub, b_ub)                  # break the symmetry. Only use the upper diagonal values
-
-    # SET CONSTRAINTS FOR EQUALITY
-    A_eq, b_eq = init_eq_not_stay(landmarks)                       # Force solution not to stay in same place
-    A_eq, b_eq, H = respect_user_mustsee(landmarks, A_eq, b_eq)       # Check if there are user_defined must_see. Also takes care of start/goal
-
-    A_eq, b_eq = respect_order(landmarks, A_eq, b_eq)              # Respect order of visit (only works when max_steps is limiting factor)
-
-    # Bounds for variables (x can only be 0 or 1)
-    x_bounds = [(0, 1)] * len(c)
-
-    # Solve linear programming problem
-
-    res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq = b_eq, bounds=x_bounds, method='highs', integrality=3)
-    
-
-
-    # Raise error if no solution is found
-    if not res.success :
-
-        # Override the max_steps using the heuristic
-        for i, val in enumerate(b_ub) :
-            if val == max_steps : b_ub[i] = H
-
-        # Solve problem again :
-        res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq = b_eq, bounds=x_bounds, method='highs', integrality=3)
-
-        if not res.success :
-            s = "No solution could be found, even when increasing max_steps using the heuristic"
-            return s
-            #raise ValueError("No solution could be found, even when increasing max_steps using the heuristic")
-    
-    # If there is a solution, we're good to go, just check for
-    else :
-        circle = has_circle(res.x)
-        i = 0
-
-        # Break the circular symmetry if needed
-        while len(circle) != 0 :
-            A_ub, b_ub = break_circle(landmarks, A_ub, b_ub, circle)
-            res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq = b_eq, bounds=x_bounds, method='highs', integrality=3)
-            circle = has_circle(res.x)
-            i += 1
-
-        if printing_details is True :
-            if i != 0 :
-                print(f"Neded to recompute paths {i} times because of unconnected loops...")
-            X = print_res(res, landmarks, P)
-            return X
-        else :
-            return untangle(res.x)
-
-
-
-
-
-
diff --git a/backend/src/amenities/nature.am b/backend/src/amenities/nature.am
new file mode 100644
index 0000000..dcc4061
--- /dev/null
+++ b/backend/src/amenities/nature.am
@@ -0,0 +1,11 @@
+'leisure'='park'
+geological
+'natural'='geyser'
+'natural'='hot_spring'
+'natural'='arch'
+'natural'='volcano'
+'natural'='stone'
+'tourism'='alpine_hut'
+'tourism'='viewpoint'
+'tourism'='zoo'
+'waterway'='waterfall'
\ No newline at end of file
diff --git a/backend/src/amenities/shopping.am b/backend/src/amenities/shopping.am
new file mode 100644
index 0000000..14504a0
--- /dev/null
+++ b/backend/src/amenities/shopping.am
@@ -0,0 +1,2 @@
+'shop'='department_store'
+'shop'='mall'
\ No newline at end of file
diff --git a/backend/src/amenities/sightseeing.am b/backend/src/amenities/sightseeing.am
new file mode 100644
index 0000000..33bcb1a
--- /dev/null
+++ b/backend/src/amenities/sightseeing.am
@@ -0,0 +1,8 @@
+'tourism'='museum'
+'tourism'='attraction'
+'tourism'='gallery'
+historic
+'amenity'='planetarium'
+'amenity'='place_of_worship'
+'amenity'='fountain'
+'water'='reflecting_pool'
\ No newline at end of file
diff --git a/backend/src/landmarks_manager.py b/backend/src/landmarks_manager.py
new file mode 100644
index 0000000..618e169
--- /dev/null
+++ b/backend/src/landmarks_manager.py
@@ -0,0 +1,365 @@
+import math as m
+import json, os
+
+from typing import List, Tuple, Optional
+from OSMPythonTools.overpass import Overpass, overpassQueryBuilder
+
+from structs.landmarks import Landmark, LandmarkType
+from structs.preferences import Preferences, Preference
+
+
+SIGHTSEEING = LandmarkType(landmark_type='sightseeing')
+NATURE = LandmarkType(landmark_type='nature')
+SHOPPING = LandmarkType(landmark_type='shopping')
+
+
+# Include the json here
+# Create a list of all things to visit given some preferences and a city. Ready for the optimizer
+def generate_landmarks(preferences: Preferences, coordinates: Tuple[float, float]) :
+
+    l_sights, l_nature, l_shop = get_amenities()
+    L = []
+
+    # List for sightseeing
+    if preferences.sightseeing.score != 0 :
+        L1 = get_landmarks(l_sights, SIGHTSEEING, coordinates=coordinates)
+        correct_score(L1, preferences.sightseeing)
+        L += L1
+    
+    # List for nature
+    if preferences.nature.score != 0 :
+        L2 = get_landmarks(l_nature, NATURE, coordinates=coordinates)
+        correct_score(L2, preferences.nature)
+        L += L2
+    
+    # List for shopping
+    if preferences.shopping.score != 0 :
+        L3 = get_landmarks(l_shop, SHOPPING, coordinates=coordinates)
+        correct_score(L3, preferences.shopping)
+        L += L3
+
+    L = remove_duplicates(L)
+
+    return L, take_most_important(L)
+
+
+"""def generate_landmarks(preferences: Preferences, city_country: str = None, coordinates: Tuple[float, float] = None) -> Tuple[List[Landmark], List[Landmark]] :
+
+    l_sights, l_nature, l_shop = get_amenities()
+    L = []
+
+    # List for sightseeing
+    if preferences.sightseeing.score != 0 :
+        L1 = get_landmarks(l_sights, SIGHTSEEING, city_country=city_country, coordinates=coordinates)
+        correct_score(L1, preferences.sightseeing)
+        L += L1
+    
+    # List for nature
+    if preferences.nature.score != 0 :
+        L2 = get_landmarks(l_nature, NATURE, city_country=city_country, coordinates=coordinates)
+        correct_score(L2, preferences.nature)
+        L += L2
+    
+    # List for shopping
+    if preferences.shopping.score != 0 :
+        L3 = get_landmarks(l_shop, SHOPPING, city_country=city_country, coordinates=coordinates)
+        correct_score(L3, preferences.shopping)
+        L += L3
+
+    return remove_duplicates(L), take_most_important(L)
+"""
+# Helper function to gather the amenities list
+def get_amenities() -> List[List[str]] :
+    
+    # Get the list of amenities from the files
+    sightseeing = get_list('/amenities/sightseeing.am')
+    nature = get_list('/amenities/nature.am')
+    shopping = get_list('/amenities/shopping.am')
+
+    return sightseeing, nature, shopping
+
+
+# Helper function to read a .am file and generate the corresponding list
+def get_list(path: str) -> List[str] :
+
+    with open(os.path.dirname(os.path.abspath(__file__)) + path) as f :
+        content = f.readlines()
+
+        amenities = []
+        for line in content :
+            amenities.append(line.strip('\n'))
+
+    return amenities
+
+
+# Take the most important landmarks from the list
+def take_most_important(L: List[Landmark], N = 0) -> List[Landmark] :
+    
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/landmarks_manager.params', "r") as f :
+        parameters = json.loads(f.read())
+        N_important = parameters['N important']
+    
+    L_copy = []
+    L_clean = []
+    scores = [0]*len(L)
+    names = []
+    name_id = {}
+
+    for i, elem in enumerate(L) :
+        if elem.name not in names :
+            names.append(elem.name)
+            name_id[elem.name] = [i]
+            L_copy.append(elem)
+        else :
+            name_id[elem.name] += [i]
+            scores = []
+            for j in name_id[elem.name] :
+                scores.append(L[j].attractiveness)
+            best_id = max(range(len(scores)), key=scores.__getitem__)
+            t = name_id[elem.name][best_id]
+            if t == i :
+                for old in L_copy :
+                    if old.name == elem.name :
+                        old.attractiveness = L[t].attractiveness
+    
+    scores = [0]*len(L_copy)
+    for i, elem in enumerate(L_copy) :
+        scores[i] = elem.attractiveness
+
+    res = sorted(range(len(scores)), key = lambda sub: scores[sub])[-(N_important-N):]
+
+    for i, elem in enumerate(L_copy) :
+        if i in res :
+            L_clean.append(elem)
+
+    return L_clean
+
+
+# Remove duplicate elements and elements with low score
+def remove_duplicates(L: List[Landmark]) -> List[Landmark] :
+    """
+    Removes duplicate landmarks based on their names from the given list.
+
+    Parameters:
+    L (List[Landmark]): A list of Landmark objects.
+
+    Returns:
+    List[Landmark]: A list of unique Landmark objects based on their names.
+    """
+
+    L_clean = []
+    names = []
+
+    for landmark in L :
+        if landmark.name in names: 
+            continue  
+
+
+        else :
+            names.append(landmark.name)
+            L_clean.append(landmark)
+    
+    return L_clean
+    
+
+# Correct the score of a list of landmarks by taking into account preference settings
+def correct_score(L: List[Landmark], preference: Preference) :
+
+    if len(L) == 0 :
+        return
+    
+    if L[0].type != preference.type :
+        raise TypeError(f"LandmarkType {preference.type} does not match the type of Landmark {L[0].name}")
+
+    for elem in L :
+        elem.attractiveness = int(elem.attractiveness*preference.score/500)     # arbitrary computation
+
+
+# Function to count elements within a certain radius of a location
+def count_elements_within_radius(coordinates: Tuple[float, float], radius: int) -> int:
+    
+    lat = coordinates[0]
+    lon = coordinates[1]
+
+    alpha = (180*radius)/(6371000*m.pi)
+    bbox = {'latLower':lat-alpha,'lonLower':lon-alpha,'latHigher':lat+alpha,'lonHigher': lon+alpha}
+        
+    # Build the query to find elements within the radius
+    radius_query = overpassQueryBuilder(bbox=[bbox['latLower'],bbox['lonLower'],bbox['latHigher'],bbox['lonHigher']],
+                             elementType=['node', 'way', 'relation'])
+
+    try : 
+        overpass = Overpass()
+        radius_result = overpass.query(radius_query)
+        return radius_result.countElements()
+    
+    except :
+        return None
+
+
+# Creates a bounding box around given coordinates
+def create_bbox(coordinates: Tuple[float, float], side_length: int) -> Tuple[float, float, float, float]:
+
+    lat = coordinates[0]
+    lon = coordinates[1]
+
+    # Half the side length in km (since it's a square bbox)
+    half_side_length_km = side_length / 2.0
+
+    # Convert distance to degrees
+    lat_diff = half_side_length_km / 111  # 1 degree latitude is approximately 111 km
+    lon_diff = half_side_length_km / (111 * m.cos(m.radians(lat)))  # Adjust for longitude based on latitude
+
+    # Calculate bbox
+    min_lat = lat - lat_diff
+    max_lat = lat + lat_diff
+    min_lon = lon - lon_diff
+    max_lon = lon + lon_diff
+
+    return min_lat, min_lon, max_lat, max_lon
+
+
+def get_landmarks(list_amenity: list, landmarktype: LandmarkType, coordinates: Tuple[float, float]) -> List[Landmark] :
+    
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/landmarks_manager.params', "r") as f :
+        parameters = json.loads(f.read())
+        tag_coeff = parameters['tag coeff']
+        park_coeff = parameters['park coeff']
+        church_coeff = parameters['church coeff']
+        radius = parameters['radius close to']
+        bbox_side = parameters['city bbox side']
+    
+    # Create bbox around start location
+    bbox = create_bbox(coordinates, bbox_side)
+
+    # Initialize some variables
+    N = 0
+    L = []
+    overpass = Overpass()
+
+    for amenity in list_amenity :
+        query = overpassQueryBuilder(bbox=bbox, elementType=['way', 'relation'], selector=amenity, includeCenter=True, out='body')
+        result = overpass.query(query)
+        N += result.countElements()
+
+        for elem in result.elements():
+
+            name = elem.tag('name')                             # Add name
+            location = (elem.centerLat(), elem.centerLon())     # Add coordinates (lat, lon)
+
+            # skip if unprecise location
+            if name is None or location[0] is None:
+                continue
+
+            # skip if unused
+            if 'disused:leisure' in elem.tags().keys():
+                continue
+            
+            # skip if part of another building
+            if 'building:part' in elem.tags().keys() and elem.tag('building:part') == 'yes':
+                continue
+            
+            else :
+                osm_type = elem.type()              # Add type : 'way' or 'relation'
+                osm_id = elem.id()                  # Add OSM id 
+                elem_type = landmarktype            # Add the landmark type as 'sightseeing
+                n_tags = len(elem.tags().keys())    # Add number of tags
+                
+                # Add score of given landmark based on the number of surrounding elements. Penalty for churches as there are A LOT
+                if amenity == "'amenity'='place_of_worship'" :
+                    score = int((count_elements_within_radius(location, radius) + n_tags*tag_coeff )*church_coeff)  
+                elif amenity == "'leisure'='park'" :
+                    score = int((count_elements_within_radius(location, radius) + n_tags*tag_coeff )*park_coeff)  
+                else :
+                    score = count_elements_within_radius(location, radius) + n_tags*tag_coeff
+
+                if score is not None :
+                    # Generate the landmark and append it to the list
+                    landmark = Landmark(name=name, type=elem_type, location=location, osm_type=osm_type, osm_id=osm_id, attractiveness=score, must_do=False, n_tags=n_tags)
+                    L.append(landmark)
+
+    return L
+
+
+
+"""def get_landmarks(list_amenity: list, landmarktype: LandmarkType, city_country: str = None, coordinates: Tuple[float, float] = None) -> List[Landmark] :
+    
+    if city_country is None and coordinates is None :
+        raise ValueError("Either one of 'city_country' and 'coordinates' arguments must be specified")
+
+    if city_country is not None and coordinates is not None :
+        raise ValueError("Cannot specify both 'city_country' and 'coordinates' at the same time, please choose either one")
+
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/landmarks_manager.params', "r") as f :
+        parameters = json.loads(f.read())
+        tag_coeff = parameters['tag coeff']
+        park_coeff = parameters['park coeff']
+        church_coeff = parameters['church coeff']
+        radius = parameters['radius close to']
+        bbox_side = parameters['city bbox side']
+    
+    # If city_country is specified :
+    if city_country is not None :
+        nominatim = Nominatim()
+        areaId = nominatim.query(city_country).areaId()
+        bbox = None
+
+    # If coordinates are specified :
+    elif coordinates is not None :
+        bbox = create_bbox(coordinates, bbox_side)
+        areaId = None
+
+    else :
+        raise ValueError("Argument number is not corresponding.")
+    
+    # Initialize some variables
+    N = 0
+    L = []
+    overpass = Overpass()
+
+    for amenity in list_amenity :
+        query = overpassQueryBuilder(area=areaId, bbox=bbox, elementType=['way', 'relation'], selector=amenity, includeCenter=True, out='body')
+        result = overpass.query(query)
+        N += result.countElements()
+
+        for elem in result.elements():
+
+            name = elem.tag('name')                             # Add name
+            location = (elem.centerLat(), elem.centerLon())     # Add coordinates (lat, lon)
+
+            # skip if unprecise location
+            if name is None or location[0] is None:
+                continue
+
+            # skip if unused
+            if 'disused:leisure' in elem.tags().keys():
+                continue
+            
+            # skip if part of another building
+            if 'building:part' in elem.tags().keys() and elem.tag('building:part') == 'yes':
+                continue
+            
+            else :
+                osm_type = elem.type()              # Add type : 'way' or 'relation'
+                osm_id = elem.id()                  # Add OSM id 
+                elem_type = landmarktype            # Add the landmark type as 'sightseeing
+                n_tags = len(elem.tags().keys())    # Add number of tags
+                
+                # Add score of given landmark based on the number of surrounding elements. Penalty for churches as there are A LOT
+                if amenity == "'amenity'='place_of_worship'" :
+                    score = int((count_elements_within_radius(location, radius) + n_tags*tag_coeff )*church_coeff)  
+                elif amenity == "'leisure'='park'" :
+                    score = int((count_elements_within_radius(location, radius) + n_tags*tag_coeff )*park_coeff)  
+                else :
+                    score = count_elements_within_radius(location, radius) + n_tags*tag_coeff
+
+                if score is not None :
+                    # Generate the landmark and append it to the list
+                    landmark = Landmark(name=name, type=elem_type, location=location, osm_type=osm_type, osm_id=osm_id, attractiveness=score, must_do=False, n_tags=n_tags)
+                    L.append(landmark)
+
+    return L
+"""
\ No newline at end of file
diff --git a/backend/src/main.py b/backend/src/main.py
new file mode 100644
index 0000000..692c7f9
--- /dev/null
+++ b/backend/src/main.py
@@ -0,0 +1,70 @@
+from optimizer import solve_optimization
+from refiner import refine_optimization
+from landmarks_manager import generate_landmarks
+from structs.landmarks import Landmark
+from structs.landmarktype import LandmarkType
+from structs.preferences import Preferences, Preference
+from fastapi import FastAPI, Query, Body
+from typing import List
+
+app = FastAPI()
+
+
+# Assuming frontend is calling like this : 
+#"http://127.0.0.1:8000/process?param1={param1}&param2={param2}"
+@app.post("/optimizer_coords/{start_lat}/{start_lon}/{finish_lat}/{finish_lon}")
+def main1(start_lat: float, start_lon: float, preferences: Preferences = Body(...), finish_lat: float = None, finish_lon: float = None) -> List[Landmark]:
+    
+    if preferences is None :
+        raise ValueError("Please provide preferences in the form of a 'Preference' BaseModel class.")
+    if bool(start_lat) ^ bool(start_lon) :
+        raise ValueError("Please provide both latitude and longitude for the starting point")
+    if bool(finish_lat) ^ bool(finish_lon) :
+        raise ValueError("Please provide both latitude and longitude for the finish point")
+
+    start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=(start_lat, start_lon), osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    
+    if bool(finish_lat) and bool(finish_lon) :
+        finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(finish_lat, finish_lon), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    else :
+        finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(start_lat, start_lon), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    
+    
+    start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=(48.8375946, 2.2949904), osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.8375946, 2.2949904), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+
+    # Generate the landmarks from the start location
+    landmarks, landmarks_short = generate_landmarks(preferences=preferences, coordinates=start.location)
+
+    # insert start and finish to the landmarks list
+    landmarks_short.insert(0, start)
+    landmarks_short.append(finish)
+    
+
+    # TODO use these parameters in another way
+    max_walking_time = 4    # hours
+    detour = 30             # minutes
+
+    # First stage optimization
+    base_tour = solve_optimization(landmarks_short, max_walking_time*60, True)
+    
+    # Second stage optimization
+    refined_tour = refine_optimization(landmarks, base_tour, max_walking_time*60+detour, True)
+    
+    return refined_tour
+
+
+
+# input city, country in the form of 'Paris, France'
+@app.post("/test2/{city_country}")
+def test2(city_country: str, preferences: Preferences = Body(...)) -> List[Landmark]:
+
+    landmarks = generate_landmarks(city_country, preferences)
+
+    max_steps = 9000000
+
+    visiting_order = solve_optimization(landmarks, max_steps, True)
+
+
+
+
diff --git a/backend/app/src/main_example.py b/backend/src/main_example.py
similarity index 100%
rename from backend/app/src/main_example.py
rename to backend/src/main_example.py
diff --git a/backend/src/optimizer.py b/backend/src/optimizer.py
new file mode 100644
index 0000000..d45d51b
--- /dev/null
+++ b/backend/src/optimizer.py
@@ -0,0 +1,411 @@
+import numpy as np
+import json, os
+
+from typing import List, Tuple
+from scipy.optimize import linprog
+from math import radians, sin, cos, acos
+from shapely import Polygon
+
+from structs.landmarks import Landmark
+
+    
+# Function to print the result
+def print_res(L: List[Landmark], L_tot):
+
+    if len(L) == L_tot: 
+        print('\nAll landmarks can be visited within max_steps, the following order is suggested : ')
+    else :
+        print('Could not visit all the landmarks, the following order is suggested : ')
+
+    dist = 0
+    for elem in L : 
+        if elem.name != 'start' :
+            print('- ' + elem.name + ', time to reach = ' + str(elem.time_to_reach))
+            dist += elem.time_to_reach
+        else : 
+            print('- ' + elem.name)
+
+    print("\nMinutes walked : " + str(dist))
+    print(f"Visited {len(L)-2} out of {L_tot-2} landmarks")
+
+
+# Prevent the use of a particular solution
+def prevent_config(resx, A_ub, b_ub) -> bool:
+    
+    for i, elem in enumerate(resx):
+        resx[i] = round(elem)
+    
+    N = len(resx)               # Number of edges
+    L = int(np.sqrt(N))         # Number of landmarks
+
+    nonzeroind = np.nonzero(resx)[0]                    # the return is a little funky so I use the [0]
+    nonzero_tup = np.unravel_index(nonzeroind, (L,L))
+
+    ind_a = nonzero_tup[0].tolist()
+    vertices_visited = ind_a
+    vertices_visited.remove(0)
+
+    ones = [1]*L
+    h = [0]*N
+    for i in range(L) :
+        if i in vertices_visited :
+            h[i*L:i*L+L] = ones
+
+    A_ub = np.vstack((A_ub, h))
+    b_ub.append(len(vertices_visited)-1)
+
+    return A_ub, b_ub
+
+
+# Prevent the possibility of a given solution bit
+def break_cricle(circle_vertices: list, L: int, A_ub: list, b_ub: list) -> bool:
+
+    if L-1 in circle_vertices :
+        circle_vertices.remove(L-1)
+
+    h = [0]*L*L
+    for i in range(L) :
+        if i in circle_vertices :
+            h[i*L:i*L+L] = [1]*L
+
+    A_ub = np.vstack((A_ub, h))
+    b_ub.append(len(circle_vertices)-1)
+
+    return A_ub, b_ub
+
+
+# Checks if the path is connected, returns a circle if it finds one and the RESULT
+def is_connected(resx) -> bool:
+    
+    # first round the results to have only 0-1 values
+    for i, elem in enumerate(resx):
+        resx[i] = round(elem)
+    
+    N = len(resx)               # length of res
+    L = int(np.sqrt(N))         # number of landmarks. CAST INTO INT but should not be a problem because N = L**2 by def.
+    n_edges = resx.sum()        # number of edges
+
+    nonzeroind = np.nonzero(resx)[0] # the return is a little funny so I use the [0]
+
+    nonzero_tup = np.unravel_index(nonzeroind, (L,L))
+
+    ind_a = nonzero_tup[0].tolist()
+    ind_b = nonzero_tup[1].tolist()
+
+    edges = []
+    edges_visited = []
+    vertices_visited = []
+
+    edge1 = (ind_a[0], ind_b[0])
+    edges_visited.append(edge1)
+    vertices_visited.append(edge1[0])
+
+    for i, a in enumerate(ind_a) :
+        edges.append((a, ind_b[i]))      # Create the list of edges
+
+    remaining = edges
+    remaining.remove(edge1)
+
+    break_flag = False
+    while len(remaining) > 0 and not break_flag:
+        for edge2 in remaining :
+            if edge2[0] == edge1[1] :
+                if edge1[1] in vertices_visited :
+                    edges_visited.append(edge2)
+                    break_flag = True
+                    break
+                else :    
+                    vertices_visited.append(edge1[1])
+                    edges_visited.append(edge2)
+                    remaining.remove(edge2)
+                    edge1 = edge2
+
+            elif edge1[1] == L-1 or edge1[1] in vertices_visited:
+                        break_flag = True
+                        break
+
+    vertices_visited.append(edge1[1])
+
+
+    if len(vertices_visited) == n_edges +1 :
+        return vertices_visited, []
+    else: 
+        return vertices_visited, edges_visited
+
+
+# Function that returns the distance in meters from one location to another
+def get_distance(p1: Tuple[float, float], p2: Tuple[float, float], detour: float, speed: float) :
+    
+    # Compute the straight-line distance in km
+    if p1 == p2 :
+        return 0, 0
+    else: 
+        dist = 6371.01 * acos(sin(radians(p1[0]))*sin(radians(p2[0])) + cos(radians(p1[0]))*cos(radians(p2[0]))*cos(radians(p1[1]) - radians(p2[1])))
+
+    # Consider the detour factor for average cityto deterline walking distance (in km)
+    walk_dist = dist*detour
+
+    # Time to walk this distance (in minutes)
+    walk_time = walk_dist/speed*60
+
+    if walk_time > 15 :
+        walk_time = 5*round(walk_time/5)
+    else :
+        walk_time = round(walk_time)
+  
+
+    return round(walk_dist, 1), walk_time
+
+
+# Initialize A and c. Compute the distances from all landmarks to each other and store attractiveness
+# We want to maximize the sightseeing :  max(c) st. A*x < b   and   A_eq*x = b_eq
+def init_ub_dist(landmarks: List[Landmark], max_steps: int):
+    
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+        parameters = json.loads(f.read())
+        detour = parameters['detour factor']
+        speed = parameters['average walking speed']
+    
+    # Objective function coefficients. a*x1 + b*x2 + c*x3 + ...
+    c = []
+    # Coefficients of inequality constraints (left-hand side)
+    A_ub = []
+
+    for spot1 in landmarks :
+        dist_table = [0]*len(landmarks)
+        c.append(-spot1.attractiveness)
+        for j, spot2 in enumerate(landmarks) :
+            t = get_distance(spot1.location, spot2.location, detour, speed)[1]
+            dist_table[j] = t
+        A_ub += dist_table
+    c = c*len(landmarks)
+
+    return c, A_ub, [max_steps]
+
+
+# Constraint to respect only one travel per landmark. Also caps the total number of visited landmarks
+def respect_number(L:int, A_ub, b_ub):
+
+    ones = [1]*L
+    zeros = [0]*L
+    for i in range(L) :
+        h = zeros*i + ones + zeros*(L-1-i)
+        A_ub = np.vstack((A_ub, h))
+        b_ub.append(1)
+
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+        parameters = json.loads(f.read())
+        max_landmarks = parameters['max landmarks']
+
+    A_ub = np.vstack((A_ub, ones*L))
+    b_ub.append(max_landmarks+1)
+
+    return A_ub, b_ub
+
+
+# Constraint to not have d14 and d41 simultaneously. Does not prevent circular symmetry with more elements
+def break_sym(L, A_ub, b_ub):
+    upper_ind = np.triu_indices(L,0,L)
+
+    up_ind_x = upper_ind[0]
+    up_ind_y = upper_ind[1]
+
+    for i, _ in enumerate(up_ind_x) :
+        l = [0]*L*L
+        if up_ind_x[i] != up_ind_y[i] :
+            l[up_ind_x[i]*L + up_ind_y[i]] = 1
+            l[up_ind_y[i]*L + up_ind_x[i]] = 1
+
+            A_ub = np.vstack((A_ub,l))
+            b_ub.append(1)
+
+    return A_ub, b_ub
+
+
+# Constraint to not stay in position. Removes d11, d22, d33, etc.
+def init_eq_not_stay(L: int): 
+    l = [0]*L*L
+
+    for i in range(L) :
+        for j in range(L) :
+            if j == i :
+                l[j + i*L] = 1
+    
+    l = np.array(np.array(l))
+
+    return [l], [0]
+
+
+# Go through the landmarks and force the optimizer to use landmarks where attractiveness is set to -1
+def respect_user_mustsee(landmarks: List[Landmark], A_eq: list, b_eq: list) :
+    L = len(landmarks)
+
+    for i, elem in enumerate(landmarks) :
+        if elem.must_do is True and elem.name not in ['finish', 'start']:
+            l = [0]*L*L
+            for j in range(L) :     # sets the horizontal ones (go from)
+                l[j +i*L] = 1       # sets the vertical ones (go to)        double check if good
+                
+            for k in range(L-1) :
+                l[k*L+L-1] = 1  
+
+            A_eq = np.vstack((A_eq,l))
+            b_eq.append(2)
+
+    return A_eq, b_eq
+
+
+# Constraint to ensure start at start and finish at goal
+def respect_start_finish(L: int, A_eq: list, b_eq: list):
+    ls = [1]*L + [0]*L*(L-1)    # sets only horizontal ones for start (go from)
+    ljump = [0]*L*L
+    ljump[L-1] = 1              # Prevent start finish jump
+    lg = [0]*L*L
+    ll = [0]*L*(L-1) + [1]*L
+    for k in range(L-1) :       # sets only vertical ones for goal (go to)
+        ll[k*L] = 1
+        if k != 0 :             # Prevent the shortcut start -> finish
+            lg[k*L+L-1] = 1 
+            
+
+    A_eq = np.vstack((A_eq,ls))
+    A_eq = np.vstack((A_eq,ljump))
+    A_eq = np.vstack((A_eq,lg))
+    A_eq = np.vstack((A_eq,ll))
+    b_eq.append(1)
+    b_eq.append(0)
+    b_eq.append(1)
+    b_eq.append(0)
+
+    return A_eq, b_eq
+
+
+# Constraint to tie the problem together. Necessary but not sufficient to avoid circles
+def respect_order(N: int, A_eq, b_eq): 
+    for i in range(N-1) :           # Prevent stacked ones
+        if i == 0 or i == N-1:      # Don't touch start or finish
+            continue
+        else : 
+            l = [0]*N
+            l[i] = -1
+            l = l*N
+            for j in range(N) :
+                l[i*N + j] = 1
+
+            A_eq = np.vstack((A_eq,l))
+            b_eq.append(0)
+
+    return A_eq, b_eq
+
+
+# Computes the time to reach from each landmark to the next
+def add_time_to_reach(order: List[int], landmarks: List[Landmark])->List[Landmark] :
+    
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+        parameters = json.loads(f.read())
+        detour_factor = parameters['detour factor']
+        speed = parameters['average walking speed']
+    
+    j = 0
+    L =  []
+    prev = landmarks[0]
+
+    while(len(L) != len(order)) :
+        
+        elem = landmarks[order[j]]
+        if elem != prev :
+            elem.time_to_reach = get_distance(elem.location, prev.location, detour_factor, speed)[1]
+            elem.must_do = True
+        L.append(elem)
+        prev = elem   
+        j += 1
+    
+    return L
+
+
+def add_time_to_reach_simple(ordered_visit: List[Landmark])-> List[Landmark] :
+    
+    # Read the parameters from the file
+    with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+        parameters = json.loads(f.read())
+        detour_factor = parameters['detour factor']
+        speed = parameters['average walking speed']
+    
+    L =  []
+    prev = ordered_visit[0]
+    L.append(prev)
+    total_dist = 0
+
+    for elem in ordered_visit[1:] :
+        elem.time_to_reach = get_distance(elem.location, prev.location, detour_factor, speed)[1]
+        elem.must_do = True
+        L.append(elem)
+        prev = elem
+        total_dist += get_distance(elem.location, prev.location, detour_factor, speed)[1]
+        
+
+    return L, total_dist
+
+
+# Main optimization pipeline
+def solve_optimization (landmarks :List[Landmark], max_steps: int, printing_details: bool) :
+
+    L = len(landmarks)
+
+    # SET CONSTRAINTS FOR INEQUALITY
+    c, A_ub, b_ub = init_ub_dist(landmarks, max_steps)              # Add the distances from each landmark to the other
+    A_ub, b_ub = respect_number(L, A_ub, b_ub)                      # Respect max number of visits (no more possible stops than landmarks). 
+    A_ub, b_ub = break_sym(L, A_ub, b_ub)                           # break the 'zig-zag' symmetry
+
+    # SET CONSTRAINTS FOR EQUALITY
+    A_eq, b_eq = init_eq_not_stay(L)                                # Force solution not to stay in same place
+    A_eq, b_eq = respect_user_mustsee(landmarks, A_eq, b_eq)     # Check if there are user_defined must_see. Also takes care of start/goal
+    A_eq, b_eq = respect_start_finish(L, A_eq, b_eq)                # Force start and finish positions
+    A_eq, b_eq = respect_order(L, A_eq, b_eq)                       # Respect order of visit (only works when max_steps is limiting factor)
+
+    # SET BOUNDS FOR DECISION VARIABLE (x can only be 0 or 1)
+    x_bounds = [(0, 1)]*L*L
+
+    # Solve linear programming problem
+    res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq = b_eq, bounds=x_bounds, method='highs', integrality=3)
+
+    # Raise error if no solution is found
+    if not res.success :
+            raise ArithmeticError("No solution could be found, the problem is overconstrained. Please adapt your must_dos")
+
+    # If there is a solution, we're good to go, just check for connectiveness
+    else :
+        order, circle = is_connected(res.x)
+        i = 0
+        timeout = 80
+        while len(circle) != 0 and i < timeout:
+            A_ub, b_ub = prevent_config(res.x, A_ub, b_ub)
+            A_ub, b_ub = break_cricle(order, len(landmarks), A_ub, b_ub)
+            res = linprog(c, A_ub=A_ub, b_ub=b_ub, A_eq=A_eq, b_eq = b_eq, bounds=x_bounds, method='highs', integrality=3)
+            order, circle = is_connected(res.x)
+            if len(circle) == 0 :
+                break
+            print(i)
+            i += 1
+        
+        if i == timeout :
+            raise TimeoutError(f"Optimization took too long. No solution found after {timeout} iterations.")
+
+        # Add the times to reach and stop optimizing
+        L = add_time_to_reach(order, landmarks)
+            
+        if printing_details is True :
+            if i != 0 :
+                print(f"Neded to recompute paths {i} times because of unconnected loops...")
+            print_res(L, len(landmarks))
+            print("\nTotal score : " + str(int(-res.fun)))
+
+        return L
+
+
+
+
+
+
diff --git a/backend/src/parameters/landmarks_manager.params b/backend/src/parameters/landmarks_manager.params
new file mode 100644
index 0000000..942c214
--- /dev/null
+++ b/backend/src/parameters/landmarks_manager.params
@@ -0,0 +1,8 @@
+{
+  "city bbox side" : 10,
+  "radius close to" : 27.5,
+  "church coeff" : 0.6,
+  "park coeff" : 1.5,
+  "tag coeff" : 100,
+  "N important" : 40
+}
\ No newline at end of file
diff --git a/backend/src/parameters/optimizer.params b/backend/src/parameters/optimizer.params
new file mode 100644
index 0000000..18ca240
--- /dev/null
+++ b/backend/src/parameters/optimizer.params
@@ -0,0 +1,5 @@
+{
+  "detour factor" : 1.4,
+  "average walking speed" : 4.8,
+  "max landmarks" : 10
+}
\ No newline at end of file
diff --git a/backend/src/refiner.py b/backend/src/refiner.py
new file mode 100644
index 0000000..dec6101
--- /dev/null
+++ b/backend/src/refiner.py
@@ -0,0 +1,293 @@
+from collections import defaultdict
+from heapq import heappop, heappush
+from itertools import permutations
+import os, json
+
+from shapely import buffer, LineString, Point, Polygon, MultiPoint, convex_hull, concave_hull, LinearRing
+from typing import List, Tuple
+from math import pi
+
+from structs.landmarks import Landmark
+from landmarks_manager import take_most_important
+from optimizer import solve_optimization, add_time_to_reach_simple, print_res, get_distance
+
+
+def create_corridor(landmarks: List[Landmark], width: float) :
+
+  corrected_width = (180*width)/(6371000*pi)
+  
+  path = create_linestring(landmarks)
+  obj = buffer(path, corrected_width, join_style="mitre", cap_style="square", mitre_limit=2)
+
+  return obj
+
+
+def create_linestring(landmarks: List[Landmark])->List[Point] :
+
+  points = []
+
+  for landmark in landmarks :
+    points.append(Point(landmark.location))
+
+  return LineString(points)
+
+
+def is_in_area(area: Polygon, coordinates) -> bool :
+  point = Point(coordinates)
+  return point.within(area)
+
+
+def is_close_to(location1: Tuple[float], location2: Tuple[float]):
+    """Determine if two locations are close by rounding their coordinates to 3 decimals."""
+    absx = abs(location1[0] - location2[0])
+    absy = abs(location1[1] - location2[1])
+
+    return absx < 0.001 and absy < 0.001
+    #return (round(location1[0], 3), round(location1[1], 3)) == (round(location2[0], 3), round(location2[1], 3))
+
+
+def rearrange(landmarks: List[Landmark]) -> List[Landmark]:
+  
+  i = 1
+  while i < len(landmarks):
+    j = i+1
+    while j < len(landmarks):
+      if is_close_to(landmarks[i].location, landmarks[j].location) and landmarks[i].name not in ['start', 'finish'] and landmarks[j].name not in ['start', 'finish']:
+        # If they are not adjacent, move the j-th element to be adjacent to the i-th element
+        if j != i + 1:
+          landmarks.insert(i + 1, landmarks.pop(j))
+        break  # Move to the next i-th element after rearrangement
+      j += 1
+    i += 1
+  
+  return landmarks
+
+"""
+def find_shortest_path(landmarks: List[Landmark]) -> List[Landmark]:
+    
+  # Read from data
+  with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+    parameters = json.loads(f.read())
+    detour = parameters['detour factor']
+    speed = parameters['average walking speed']
+
+  # Step 1: Build the graph
+  graph = defaultdict(list)
+  for i in range(len(landmarks)):
+    for j in range(len(landmarks)):
+      if i != j:
+        distance = get_distance(landmarks[i].location, landmarks[j].location, detour, speed)[1]
+        graph[i].append((distance, j))
+
+  # Step 2: Dijkstra's algorithm to find the shortest path from start to finish
+  start_idx = next(i for i, lm in enumerate(landmarks) if lm.name == 'start')
+  finish_idx = next(i for i, lm in enumerate(landmarks) if lm.name == 'finish')
+
+  distances = {i: float('inf') for i in range(len(landmarks))}
+  previous_nodes = {i: None for i in range(len(landmarks))}
+  distances[start_idx] = 0
+  priority_queue = [(0, start_idx)]
+
+  while priority_queue:
+    current_distance, current_index = heappop(priority_queue)
+
+    if current_distance > distances[current_index]:
+      continue
+
+    for neighbor_distance, neighbor_index in graph[current_index]:
+      distance = current_distance + neighbor_distance
+
+      if distance < distances[neighbor_index]:
+        distances[neighbor_index] = distance
+        previous_nodes[neighbor_index] = current_index
+        heappush(priority_queue, (distance, neighbor_index))
+
+  # Step 3: Backtrack from finish to start to find the path
+  path = []
+  current_index = finish_idx
+  while current_index is not None:
+    path.append(landmarks[current_index])
+    current_index = previous_nodes[current_index]
+  path.reverse()
+
+  return path
+"""
+"""
+def total_path_distance(path: List[Landmark], detour, speed) -> float:
+  total_distance = 0
+  for i in range(len(path) - 1):
+    total_distance += get_distance(path[i].location, path[i + 1].location, detour, speed)[1]
+  return total_distance
+"""
+
+
+def find_shortest_path_through_all_landmarks(landmarks: List[Landmark]) -> List[Landmark]:
+    
+  # Read from data
+  with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+    parameters = json.loads(f.read())
+    detour = parameters['detour factor']
+    speed = parameters['average walking speed']
+    
+  # Step 1: Find 'start' and 'finish' landmarks
+  start_idx = next(i for i, lm in enumerate(landmarks) if lm.name == 'start')
+  finish_idx = next(i for i, lm in enumerate(landmarks) if lm.name == 'finish')
+  
+  start_landmark = landmarks[start_idx]
+  finish_landmark = landmarks[finish_idx]
+  
+
+  # Step 2: Create a list of unvisited landmarks excluding 'start' and 'finish'
+  unvisited_landmarks = [lm for i, lm in enumerate(landmarks) if i not in [start_idx, finish_idx]]
+  
+  # Step 3: Initialize the path with the 'start' landmark
+  path = [start_landmark]
+  coordinates = [landmarks[start_idx].location]
+
+  current_landmark = start_landmark
+  
+  # Step 4: Use nearest neighbor heuristic to visit all landmarks
+  while unvisited_landmarks:
+    nearest_landmark = min(unvisited_landmarks, key=lambda lm: get_distance(current_landmark.location, lm.location, detour, speed)[1])
+    path.append(nearest_landmark)
+    coordinates.append(nearest_landmark.location)
+    current_landmark = nearest_landmark
+    unvisited_landmarks.remove(nearest_landmark)
+
+  # Step 5: Finally add the 'finish' landmark to the path
+  path.append(finish_landmark)
+  coordinates.append(landmarks[finish_idx].location)
+
+  path_poly = Polygon(coordinates)
+
+  return path, path_poly
+
+def get_minor_landmarks(all_landmarks: List[Landmark], visited_landmarks: List[Landmark], width: float) -> List[Landmark] :
+
+  second_order_landmarks = []
+  visited_names = []
+  area = create_corridor(visited_landmarks, width)
+
+  for visited in visited_landmarks :
+    visited_names.append(visited.name)
+  
+  for landmark in all_landmarks :
+    if is_in_area(area, landmark.location) and landmark.name not in visited_names:
+      second_order_landmarks.append(landmark)
+
+  return take_most_important(second_order_landmarks, len(visited_landmarks))
+
+
+
+"""def refine_optimization(landmarks: List[Landmark], base_tour: List[Landmark], max_time: int, print_infos: bool) -> List[Landmark] :
+
+  minor_landmarks = get_minor_landmarks(landmarks, base_tour, 200)
+
+  if print_infos : print("There are " + str(len(minor_landmarks)) + " minor landmarks around the predicted path")
+
+  full_set = base_tour[:-1] + minor_landmarks   # create full set of possible landmarks (without finish)
+  full_set.append(base_tour[-1])                # add finish back
+
+  new_tour = solve_optimization(full_set, max_time, print_infos)
+
+  return new_tour"""
+
+
+def refine_optimization(landmarks: List[Landmark], base_tour: List[Landmark], max_time: int, print_infos: bool) -> List[Landmark] :
+
+  # Read from the file
+  with open (os.path.dirname(os.path.abspath(__file__)) + '/parameters/optimizer.params', "r") as f :
+    parameters = json.loads(f.read())
+    max_landmarks = parameters['max landmarks']
+  
+  if len(base_tour)-2 >= max_landmarks :
+    return base_tour
+  
+
+  minor_landmarks = get_minor_landmarks(landmarks, base_tour, 200)
+
+  if print_infos : print("Using " + str(len(minor_landmarks)) + " minor landmarks around the predicted path")
+
+  # full set of visitable landmarks
+  full_set = base_tour[:-1] + minor_landmarks   # create full set of possible landmarks (without finish)
+  full_set.append(base_tour[-1])                # add finish back
+
+  # get a new tour
+  new_tour = solve_optimization(full_set, max_time, False)
+  new_tour, new_dist = add_time_to_reach_simple(new_tour)
+  
+  """#if base_tour[0].location == base_tour[-1].location :
+  if False :
+    coords = []         # Coordinates of the new tour
+    coords_dict = {}    # maps the location of an element to the element itself. Used to access the elements back once we get the geometry
+
+    # Iterate through the new tour without finish
+    for elem in new_tour[:-1] :
+      coords.append(Point(elem.location))
+      coords_dict[elem.location] = elem         # if start = goal, only finish remains
+
+    # Create a concave polygon using the coordinates
+    better_tour_poly = concave_hull(MultiPoint(coords))  # Create concave hull with "core" of tour leaving out start and finish
+    xs, ys = better_tour_poly.exterior.xy
+
+    # reverse the xs and ys
+    xs.reverse()
+    ys.reverse()
+
+    better_tour = []   # List of ordered visit
+    name_index = {}     # Maps the name of a landmark to its index in the concave polygon
+
+    # Loop through the polygon and generate the better (ordered) tour
+    for i,x in enumerate(xs[:-1]) :
+      better_tour.append(coords_dict[tuple((x,ys[i]))])
+      name_index[coords_dict[tuple((x,ys[i]))].name] = i
+
+
+    # Scroll the list to have start in front again
+    start_index = name_index['start']
+    better_tour = better_tour[start_index:] + better_tour[:start_index]
+
+    # Append the finish back and correct the time to reach
+    better_tour.append(new_tour[-1])
+
+    # Rearrange only if polygon
+    better_tour = rearrange(better_tour)
+
+    # Add the time to reach
+    better_tour = add_time_to_reach_simple(better_tour)
+  """
+  
+
+  """
+  if not better_poly.is_simple :
+    
+    coords_dict = {}
+    better_tour2 = []
+    for elem in better_tour :
+      coords_dict[elem.location] = elem
+
+    better_poly2 = better_poly.buffer(0)
+    new_coords = better_poly2.exterior.coords[:]
+    start_coords = base_tour[0].location
+    start_index = new_coords.
+
+    #for point in new_coords :
+  """
+
+
+  better_tour, better_poly = find_shortest_path_through_all_landmarks(new_tour)
+  better_tour, better_dist = add_time_to_reach_simple(better_tour)
+
+  if new_dist < better_dist :
+    final_tour = new_tour
+  else :
+    final_tour = better_tour
+
+  if print_infos :
+    print("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
+    print("\nRefined tour (result of second stage optimization): ")
+    print_res(final_tour, len(full_set))
+
+
+  
+  return final_tour
diff --git a/backend/app/__init__.py b/backend/src/structs/__init__.py
similarity index 100%
rename from backend/app/__init__.py
rename to backend/src/structs/__init__.py
diff --git a/backend/src/structs/landmarks.py b/backend/src/structs/landmarks.py
new file mode 100644
index 0000000..94209f3
--- /dev/null
+++ b/backend/src/structs/landmarks.py
@@ -0,0 +1,20 @@
+from typing import Optional
+from pydantic import BaseModel
+
+from .landmarktype import LandmarkType
+
+
+
+# Output to frontend
+class Landmark(BaseModel) :
+    name : str
+    type: LandmarkType      # De facto mapping depending on how the query was executed with overpass. Should still EXACTLY correspond to the preferences
+    location : tuple
+    osm_type : str
+    osm_id : int
+    attractiveness : int
+    must_do : bool
+    n_tags : int
+    time_to_reach : Optional[int] = 0
+
+
diff --git a/backend/src/structs/landmarktype.py b/backend/src/structs/landmarktype.py
new file mode 100644
index 0000000..8a63a1b
--- /dev/null
+++ b/backend/src/structs/landmarktype.py
@@ -0,0 +1,4 @@
+from pydantic import BaseModel
+
+class LandmarkType(BaseModel):
+    landmark_type: str
\ No newline at end of file
diff --git a/backend/src/structs/preferences.py b/backend/src/structs/preferences.py
new file mode 100644
index 0000000..500ebec
--- /dev/null
+++ b/backend/src/structs/preferences.py
@@ -0,0 +1,28 @@
+from pydantic import BaseModel
+from .landmarktype import LandmarkType
+
+class Preference(BaseModel) :
+    name: str
+    type: LandmarkType  # should match the attributes of the Preferences class
+    score: int          # score could be from 1 to 5
+
+# Input for optimization
+class Preferences(BaseModel) :
+    # Sightseeing / History & Culture (Musées, bâtiments historiques, opéras, églises)
+    sightseeing : Preference
+
+    # Nature (parcs, jardins, rivières, plages)
+    nature: Preference
+
+    # Shopping (diriger plutôt vers des zones / rues commerçantes)
+    shopping : Preference
+
+"""    # Food (price low or high. Combien on veut dépenser pour manger à midi/soir)
+    food_budget : Preference
+    
+    # Tolérance au détour (ce qui détermine (+ ou -) le chemin emprunté)
+    detour_tol : Preference"""
+
+
+
+
diff --git a/backend/src/tester.py b/backend/src/tester.py
new file mode 100644
index 0000000..758e003
--- /dev/null
+++ b/backend/src/tester.py
@@ -0,0 +1,116 @@
+import pandas as pd
+
+from typing import List
+from landmarks_manager import generate_landmarks
+from fastapi.encoders import jsonable_encoder
+
+from optimizer import solve_optimization
+from refiner import refine_optimization
+from structs.landmarks import Landmark
+from structs.landmarktype import LandmarkType
+from structs.preferences import Preferences, Preference
+
+
+# Helper function to create a .txt file with results
+def write_data(L: List[Landmark], file_name: str): 
+
+    data = pd.DataFrame()
+    i = 0
+
+    for landmark in L :
+        data[i] = jsonable_encoder(landmark)
+        i += 1
+
+    data.to_json(file_name, indent = 2, force_ascii=False)
+
+def test3(city_country: str) -> List[Landmark]:
+
+
+    preferences = Preferences(
+                    sightseeing=Preference(
+                                  name='sightseeing', 
+                                  type=LandmarkType(landmark_type='sightseeing'),
+                                  score = 5),
+                    nature=Preference(
+                                  name='nature', 
+                                  type=LandmarkType(landmark_type='nature'),
+                                  score = 0),
+                    shopping=Preference(
+                                  name='shopping', 
+                                  type=LandmarkType(landmark_type='shopping'),
+                                  score = 5))
+
+    coordinates = None
+
+    landmarks, landmarks_short = generate_landmarks(preferences=preferences, city_country=city_country, coordinates=coordinates)
+
+    #write_data(landmarks)
+
+    start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=(48.2044576, 16.3870242), osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.2044576, 16.3870242), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    
+
+    test = landmarks_short
+    
+    test.insert(0, start)
+    test.append(finish)
+
+    max_walking_time = 2 # hours
+
+    visiting_list = solve_optimization(test, max_walking_time*60, True)
+
+
+    
+
+
+def test4(coordinates: tuple[float, float]) -> List[Landmark]:
+
+
+    preferences = Preferences(
+                    sightseeing=Preference(
+                                  name='sightseeing', 
+                                  type=LandmarkType(landmark_type='sightseeing'),
+                                  score = 5),
+                    nature=Preference(
+                                  name='nature', 
+                                  type=LandmarkType(landmark_type='nature'),
+                                  score = 5),
+                    shopping=Preference(
+                                  name='shopping', 
+                                  type=LandmarkType(landmark_type='shopping'),
+                                  score = 5))
+
+
+    # Create start and finish 
+    start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=coordinates, osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=coordinates, osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    #finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.8777055, 2.3640967), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    #start = Landmark(name='start', type=LandmarkType(landmark_type='start'), location=(48.847132, 2.312359), osm_type='start', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    #finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.843185, 2.344533), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    #finish = Landmark(name='finish', type=LandmarkType(landmark_type='finish'), location=(48.847132, 2.312359), osm_type='finish', osm_id=0, attractiveness=0, must_do=True, n_tags = 0)
+    
+    # Generate the landmarks from the start location
+    landmarks, landmarks_short = generate_landmarks(preferences=preferences, coordinates=start.location)
+    #write_data(landmarks, "landmarks.txt")
+
+    # Insert start and finish to the landmarks list
+    landmarks_short.insert(0, start)
+    landmarks_short.append(finish)
+
+    # TODO use these parameters in another way
+    max_walking_time = 2    # hours
+    detour = 30             # minutes
+
+    # First stage optimization
+    base_tour = solve_optimization(landmarks_short, max_walking_time*60, True)
+    
+    # Second stage optimization
+    refined_tour = refine_optimization(landmarks, base_tour, max_walking_time*60+detour, True)
+    
+    return refined_tour
+
+
+#test4(tuple((48.8344400, 2.3220540)))       # Café Chez César 
+#test4(tuple((48.8375946, 2.2949904)))       # Point random
+test4(tuple((47.377859, 8.540585)))         # Zurich HB
+#test3('Vienna, Austria')
\ No newline at end of file
diff --git a/landmarks.txt b/landmarks.txt
new file mode 100644
index 0000000..7ee474a
--- /dev/null
+++ b/landmarks.txt
@@ -0,0 +1,9730 @@
+{
+  "0":{
+    "name":"Musée du quai Branly - Jacques Chirac",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8609823,
+      2.2977973
+    ],
+    "osm_type":"way",
+    "osm_id":17954721,
+    "attractiveness":30,
+    "must_do":false,
+    "n_tags":30,
+    "time_to_reach":0
+  },
+  "1":{
+    "name":"Bourse de Commerce — Pinault Collection",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8628167,
+      2.3428183
+    ],
+    "osm_type":"way",
+    "osm_id":19856722,
+    "attractiveness":32,
+    "must_do":false,
+    "n_tags":32,
+    "time_to_reach":0
+  },
+  "2":{
+    "name":"Galerie de Minéralogie et de Géologie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8418045,
+      2.3577296
+    ],
+    "osm_type":"way",
+    "osm_id":21999357,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "3":{
+    "name":"Galeries de Paléontologie et d'Anatomie comparée",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8431475,
+      2.3628815
+    ],
+    "osm_type":"way",
+    "osm_id":21999454,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "4":{
+    "name":"Institut du Monde Arabe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8489231,
+      2.3572223
+    ],
+    "osm_type":"way",
+    "osm_id":22870791,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "5":{
+    "name":"Jardin Tino Rossi - Musée de la Sculpture en Plein Air",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8474186,
+      2.3607371
+    ],
+    "osm_type":"way",
+    "osm_id":23644147,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "6":{
+    "name":"Halle Saint-Pierre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8848435,
+      2.3445246
+    ],
+    "osm_type":"way",
+    "osm_id":45073393,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "7":{
+    "name":"Jeu de Paume",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8658156,
+      2.3240828
+    ],
+    "osm_type":"way",
+    "osm_id":54188994,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "8":{
+    "name":"Musée de l'Orangerie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8637655,
+      2.3226594
+    ],
+    "osm_type":"way",
+    "osm_id":54188996,
+    "attractiveness":24,
+    "must_do":false,
+    "n_tags":24,
+    "time_to_reach":0
+  },
+  "9":{
+    "name":"Atelier Brancusi",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8614029,
+      2.3519903
+    ],
+    "osm_type":"way",
+    "osm_id":55503399,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "10":{
+    "name":"Lafayette Anticipations",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8590014,
+      2.354757
+    ],
+    "osm_type":"way",
+    "osm_id":55865819,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "11":{
+    "name":"Grand Palais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8661514,
+      2.3122667
+    ],
+    "osm_type":"way",
+    "osm_id":56185523,
+    "attractiveness":22,
+    "must_do":false,
+    "n_tags":22,
+    "time_to_reach":0
+  },
+  "12":{
+    "name":"Pavillon de l'Arsenal",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8505861,
+      2.3621853
+    ],
+    "osm_type":"way",
+    "osm_id":56186898,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "13":{
+    "name":"Musée de Cluny",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8506604,
+      2.3437398
+    ],
+    "osm_type":"way",
+    "osm_id":56640163,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "14":{
+    "name":"Musée d'art et d'histoire du Judaïsme",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8612656,
+      2.355418
+    ],
+    "osm_type":"way",
+    "osm_id":56687783,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "15":{
+    "name":"Musée national Picasso-Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8598781,
+      2.3620895
+    ],
+    "osm_type":"way",
+    "osm_id":57745741,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "16":{
+    "name":"Musée Cognacq-Jay",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8581215,
+      2.3616628
+    ],
+    "osm_type":"way",
+    "osm_id":57781649,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "17":{
+    "name":"Argonaute",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8945348,
+      2.3895646
+    ],
+    "osm_type":"way",
+    "osm_id":58169110,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "18":{
+    "name":"Orangerie du Sénat",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8483243,
+      2.3344262
+    ],
+    "osm_type":"way",
+    "osm_id":62848404,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "19":{
+    "name":"Les Réserves du Musée des Arts et Métiers",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9142687,
+      2.3604902
+    ],
+    "osm_type":"way",
+    "osm_id":63992928,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "20":{
+    "name":"Musée Ernest-Hébert (en travaux)",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8473326,
+      2.3227159
+    ],
+    "osm_type":"way",
+    "osm_id":64314872,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "21":{
+    "name":"Musée Nissim de Camondo",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8791676,
+      2.3124361
+    ],
+    "osm_type":"way",
+    "osm_id":68353844,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "22":{
+    "name":"Musée Cernuschi",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8794667,
+      2.312538
+    ],
+    "osm_type":"way",
+    "osm_id":68353920,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "23":{
+    "name":"Musée Jacquemart-André",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8755169,
+      2.3105464
+    ],
+    "osm_type":"way",
+    "osm_id":68804399,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "24":{
+    "name":"Pagoda Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8767479,
+      2.3077454
+    ],
+    "osm_type":"way",
+    "osm_id":68828954,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "25":{
+    "name":"Pavillon de Vendôme",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9047868,
+      2.3038403
+    ],
+    "osm_type":"way",
+    "osm_id":74468585,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "26":{
+    "name":"Galerie des Gobelins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8348138,
+      2.3528
+    ],
+    "osm_type":"way",
+    "osm_id":78407170,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "27":{
+    "name":"Musée Yves Saint Laurent Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8655978,
+      2.2993165
+    ],
+    "osm_type":"way",
+    "osm_id":79219238,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "28":{
+    "name":"Musée d'Art Moderne de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8643053,
+      2.297793
+    ],
+    "osm_type":"way",
+    "osm_id":79219308,
+    "attractiveness":30,
+    "must_do":false,
+    "n_tags":30,
+    "time_to_reach":0
+  },
+  "29":{
+    "name":"Fondation Cartier pour l'art contemporain",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8373189,
+      2.3319319
+    ],
+    "osm_type":"way",
+    "osm_id":79616736,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "30":{
+    "name":"Centre Tignous d'Art Contemporain",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8567341,
+      2.4270255
+    ],
+    "osm_type":"way",
+    "osm_id":81767364,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "31":{
+    "name":"Grande Galerie de l'Évolution",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8421181,
+      2.3562418
+    ],
+    "osm_type":"way",
+    "osm_id":83913793,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "32":{
+    "name":"Musée national Jean-Jacques Henner",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8829326,
+      2.3076157
+    ],
+    "osm_type":"way",
+    "osm_id":84326105,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "33":{
+    "name":"Musée de la Vie Romantique",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.881203,
+      2.333519
+    ],
+    "osm_type":"way",
+    "osm_id":84511123,
+    "attractiveness":22,
+    "must_do":false,
+    "n_tags":22,
+    "time_to_reach":0
+  },
+  "34":{
+    "name":"Mémorial de la Shoah",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8548862,
+      2.3560564
+    ],
+    "osm_type":"way",
+    "osm_id":124052479,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "35":{
+    "name":"Musée Zadkine",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8428133,
+      2.3337722
+    ],
+    "osm_type":"way",
+    "osm_id":153776401,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "36":{
+    "name":"Musée de Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8880654,
+      2.3406347
+    ],
+    "osm_type":"way",
+    "osm_id":154679327,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "37":{
+    "name":"Crypte Archéologique du Parvis Notre-Dame",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8535851,
+      2.3480846
+    ],
+    "osm_type":"way",
+    "osm_id":159896046,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "38":{
+    "name":"Manufacture des Gobelins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8344502,
+      2.3520875
+    ],
+    "osm_type":"way",
+    "osm_id":161119956,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "39":{
+    "name":"Musée du Luxembourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8485965,
+      2.3340156
+    ],
+    "osm_type":"way",
+    "osm_id":170226810,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "40":{
+    "name":"Institut suédois",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.858226,
+      2.3619639
+    ],
+    "osm_type":"way",
+    "osm_id":243973065,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "41":{
+    "name":"Musée national Eugène Delacroix",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8546662,
+      2.3353836
+    ],
+    "osm_type":"way",
+    "osm_id":395785603,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "42":{
+    "name":"Géoroom",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8454453,
+      2.4238848
+    ],
+    "osm_type":"way",
+    "osm_id":541473683,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "43":{
+    "name":"Musée des Moulages",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8721889,
+      2.3681344
+    ],
+    "osm_type":"way",
+    "osm_id":692817231,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "44":{
+    "name":"Grand palais éphémère",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8531684,
+      2.3024461
+    ],
+    "osm_type":"way",
+    "osm_id":854459034,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "45":{
+    "name":"Mémorial de Bobigny",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9095992,
+      2.4295813
+    ],
+    "osm_type":"way",
+    "osm_id":1236950476,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "46":{
+    "name":"Hôtel de Sully",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.854635,
+      2.3638126
+    ],
+    "osm_type":"relation",
+    "osm_id":403146,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "47":{
+    "name":"Fondation Henri Cartier-Bresson",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8632278,
+      2.3598659
+    ],
+    "osm_type":"relation",
+    "osm_id":551459,
+    "attractiveness":22,
+    "must_do":false,
+    "n_tags":22,
+    "time_to_reach":0
+  },
+  "48":{
+    "name":"Hôtel de la Monnaie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.856403,
+      2.3388625
+    ],
+    "osm_type":"relation",
+    "osm_id":967664,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "49":{
+    "name":"Musée Bourdelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8432078,
+      2.3186583
+    ],
+    "osm_type":"relation",
+    "osm_id":1212876,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "50":{
+    "name":"Institut Giacometti",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8362008,
+      2.3310708
+    ],
+    "osm_type":"relation",
+    "osm_id":1213090,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "51":{
+    "name":"Musée Carnavalet",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8576819,
+      2.3627147
+    ],
+    "osm_type":"relation",
+    "osm_id":2405955,
+    "attractiveness":25,
+    "must_do":false,
+    "n_tags":25,
+    "time_to_reach":0
+  },
+  "52":{
+    "name":"Petit Palais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8660437,
+      2.3149694
+    ],
+    "osm_type":"relation",
+    "osm_id":2778854,
+    "attractiveness":37,
+    "must_do":false,
+    "n_tags":32,
+    "time_to_reach":0
+  },
+  "53":{
+    "name":"Sainte-Chapelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8553966,
+      2.3450136
+    ],
+    "osm_type":"relation",
+    "osm_id":3344870,
+    "attractiveness":57,
+    "must_do":false,
+    "n_tags":54,
+    "time_to_reach":0
+  },
+  "54":{
+    "name":"Musée du Louvre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8611474,
+      2.3358637
+    ],
+    "osm_type":"relation",
+    "osm_id":7515426,
+    "attractiveness":34,
+    "must_do":false,
+    "n_tags":33,
+    "time_to_reach":0
+  },
+  "55":{
+    "name":"Champ de Mars",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.856163,
+      2.2978311
+    ],
+    "osm_type":"way",
+    "osm_id":4208595,
+    "attractiveness":38,
+    "must_do":false,
+    "n_tags":25,
+    "time_to_reach":0
+  },
+  "56":{
+    "name":"Jardin des Plantes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8440393,
+      2.3596915
+    ],
+    "osm_type":"way",
+    "osm_id":4221369,
+    "attractiveness":33,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "57":{
+    "name":"Jardin du Palais Royal",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8650062,
+      2.3378176
+    ],
+    "osm_type":"way",
+    "osm_id":4263203,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "58":{
+    "name":"Panthéon",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8461887,
+      2.3460786
+    ],
+    "osm_type":"way",
+    "osm_id":16407465,
+    "attractiveness":38,
+    "must_do":false,
+    "n_tags":32,
+    "time_to_reach":0
+  },
+  "59":{
+    "name":"Jardin Atlantique",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8398756,
+      2.3189805
+    ],
+    "osm_type":"way",
+    "osm_id":16923782,
+    "attractiveness":20,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "60":{
+    "name":"Tour Saint-Jacques",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8579983,
+      2.3489178
+    ],
+    "osm_type":"way",
+    "osm_id":20326709,
+    "attractiveness":33,
+    "must_do":false,
+    "n_tags":31,
+    "time_to_reach":0
+  },
+  "61":{
+    "name":"Basilique du Sacré-Cœur",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8867961,
+      2.3430272
+    ],
+    "osm_type":"way",
+    "osm_id":23762981,
+    "attractiveness":42,
+    "must_do":false,
+    "n_tags":40,
+    "time_to_reach":0
+  },
+  "62":{
+    "name":"Collège des Bernardins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8488289,
+      2.3520343
+    ],
+    "osm_type":"way",
+    "osm_id":26584053,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "63":{
+    "name":"Ancienne faisanderie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8452279,
+      2.3593855
+    ],
+    "osm_type":"way",
+    "osm_id":42332649,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "64":{
+    "name":"Reptiles",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8457353,
+      2.3592527
+    ],
+    "osm_type":"way",
+    "osm_id":42332651,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "65":{
+    "name":"Église Saint-Roch",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8653817,
+      2.3326659
+    ],
+    "osm_type":"way",
+    "osm_id":42722202,
+    "attractiveness":26,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "66":{
+    "name":"Hôtel Lebrun",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8468374,
+      2.3526504
+    ],
+    "osm_type":"way",
+    "osm_id":43020667,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "67":{
+    "name":"Pont Neuf",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8565248,
+      2.3408132
+    ],
+    "osm_type":"way",
+    "osm_id":53574149,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "68":{
+    "name":"Pont Neuf",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8578047,
+      2.3419414
+    ],
+    "osm_type":"way",
+    "osm_id":53574164,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "69":{
+    "name":"Comédie Française",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8635374,
+      2.336193
+    ],
+    "osm_type":"way",
+    "osm_id":54053052,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "70":{
+    "name":"Fontaine Molière",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8654941,
+      2.336613
+    ],
+    "osm_type":"way",
+    "osm_id":54097804,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "71":{
+    "name":"Place Vendôme",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8674726,
+      2.3294385
+    ],
+    "osm_type":"way",
+    "osm_id":54175774,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "72":{
+    "name":"Église de la Madeleine",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8700303,
+      2.3244833
+    ],
+    "osm_type":"way",
+    "osm_id":54180046,
+    "attractiveness":33,
+    "must_do":false,
+    "n_tags":33,
+    "time_to_reach":0
+  },
+  "73":{
+    "name":"Opéra Garnier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8720294,
+      2.3317281
+    ],
+    "osm_type":"way",
+    "osm_id":54667456,
+    "attractiveness":26,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "74":{
+    "name":"Hôtel de Lauzun",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.851565,
+      2.3589627
+    ],
+    "osm_type":"way",
+    "osm_id":55292128,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "75":{
+    "name":"Presbytère",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8463617,
+      2.3488355
+    ],
+    "osm_type":"way",
+    "osm_id":55341527,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "76":{
+    "name":"Centre Georges Pompidou",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8605235,
+      2.3524395
+    ],
+    "osm_type":"way",
+    "osm_id":55503397,
+    "attractiveness":43,
+    "must_do":false,
+    "n_tags":43,
+    "time_to_reach":0
+  },
+  "77":{
+    "name":"Immeuble Henri Sauvage",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8436578,
+      2.3298104
+    ],
+    "osm_type":"way",
+    "osm_id":63711049,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "78":{
+    "name":"Rotonde de la Villette",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8834633,
+      2.3695457
+    ],
+    "osm_type":"way",
+    "osm_id":63971487,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "79":{
+    "name":"Cathédrale Saint-Louis des Invalides",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8556038,
+      2.3125832
+    ],
+    "osm_type":"way",
+    "osm_id":64955027,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "80":{
+    "name":"Paris Story",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8723873,
+      2.3305146
+    ],
+    "osm_type":"way",
+    "osm_id":69226411,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "81":{
+    "name":"Maison de Tristan Tzara",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8880392,
+      2.3356771
+    ],
+    "osm_type":"way",
+    "osm_id":77780351,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "82":{
+    "name":"Moulin de la Galette",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8876533,
+      2.336297
+    ],
+    "osm_type":"way",
+    "osm_id":77780940,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "83":{
+    "name":"Vigne du Clos Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8882459,
+      2.3402042
+    ],
+    "osm_type":"way",
+    "osm_id":77784652,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "84":{
+    "name":"Piscine des Amiraux",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8943494,
+      2.3510361
+    ],
+    "osm_type":"way",
+    "osm_id":78020880,
+    "attractiveness":20,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "85":{
+    "name":"Les Docks - Cité de la Mode et du Design",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8408136,
+      2.3699923
+    ],
+    "osm_type":"way",
+    "osm_id":78535563,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "86":{
+    "name":"Grande Volière",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8447239,
+      2.3589567
+    ],
+    "osm_type":"way",
+    "osm_id":83976054,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "87":{
+    "name":"École Militaire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8518517,
+      2.3048526
+    ],
+    "osm_type":"way",
+    "osm_id":106312008,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "88":{
+    "name":"Église du Dôme",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8550021,
+      2.3125391
+    ],
+    "osm_type":"way",
+    "osm_id":112452790,
+    "attractiveness":25,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "89":{
+    "name":"Grande cascade",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8796564,
+      2.3837284
+    ],
+    "osm_type":"way",
+    "osm_id":125420674,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "90":{
+    "name":"Jardin du Luxembourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8467137,
+      2.3363649
+    ],
+    "osm_type":"way",
+    "osm_id":128206209,
+    "attractiveness":35,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "91":{
+    "name":"Jardin Catherine Labouré",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8510562,
+      2.320532
+    ],
+    "osm_type":"way",
+    "osm_id":148481812,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "92":{
+    "name":"École nationale supérieure des beaux-arts",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8571292,
+      2.3338015
+    ],
+    "osm_type":"way",
+    "osm_id":148485612,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "93":{
+    "name":"Carrousel de Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8846882,
+      2.3432257
+    ],
+    "osm_type":"way",
+    "osm_id":163689495,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "94":{
+    "name":"Assemblée nationale",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8617532,
+      2.317959
+    ],
+    "osm_type":"way",
+    "osm_id":175448742,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "95":{
+    "name":"Bateaux-Mouches",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.863978,
+      2.3058261
+    ],
+    "osm_type":"way",
+    "osm_id":182821008,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "96":{
+    "name":"Cathédrale Notre-Dame de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8529372,
+      2.3498701
+    ],
+    "osm_type":"way",
+    "osm_id":201611261,
+    "attractiveness":55,
+    "must_do":false,
+    "n_tags":54,
+    "time_to_reach":0
+  },
+  "97":{
+    "name":"Arc de Triomphe du Carrousel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8617276,
+      2.3329082
+    ],
+    "osm_type":"way",
+    "osm_id":227483542,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "98":{
+    "name":"Théâtre équestre Zingaro",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9126799,
+      2.4030614
+    ],
+    "osm_type":"way",
+    "osm_id":244847783,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "99":{
+    "name":"Rue du Mont Cenis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8878142,
+      2.3416721
+    ],
+    "osm_type":"way",
+    "osm_id":246993053,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "100":{
+    "name":"Cavae des Arènes de Lutèce",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8450776,
+      2.352912
+    ],
+    "osm_type":"way",
+    "osm_id":406229046,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "101":{
+    "name":"Méridienne de l'Observatoire de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8365027,
+      2.336524
+    ],
+    "osm_type":"way",
+    "osm_id":515068430,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "102":{
+    "name":"Passerelle Mornay",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8492111,
+      2.3671376
+    ],
+    "osm_type":"way",
+    "osm_id":568554914,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "103":{
+    "name":"Rue du Mont Cenis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8879175,
+      2.3417144
+    ],
+    "osm_type":"way",
+    "osm_id":897673778,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "104":{
+    "name":"Labyrinthe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8353618,
+      2.3817702
+    ],
+    "osm_type":"way",
+    "osm_id":1087988490,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "105":{
+    "name":"Maison à l'enseigne du Faucheur",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8558553,
+      2.3568266
+    ],
+    "osm_type":"way",
+    "osm_id":1123456865,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "106":{
+    "name":"Maison à l'enseigne du Mouton",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8558431,
+      2.3568914
+    ],
+    "osm_type":"way",
+    "osm_id":1123456866,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "107":{
+    "name":"Batman Escape",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8966537,
+      2.3889026
+    ],
+    "osm_type":"way",
+    "osm_id":1242464921,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "108":{
+    "name":"Shuffled",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8964051,
+      2.3885577
+    ],
+    "osm_type":"way",
+    "osm_id":1242464922,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "109":{
+    "name":"Quiz Room",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8960863,
+      2.3889322
+    ],
+    "osm_type":"way",
+    "osm_id":1242464924,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "110":{
+    "name":"Les Grandes Serres du Jardin des Plantes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.84301,
+      2.3567734
+    ],
+    "osm_type":"way",
+    "osm_id":1288442711,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "111":{
+    "name":"Palais de Justice de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8556537,
+      2.3446072
+    ],
+    "osm_type":"relation",
+    "osm_id":536982,
+    "attractiveness":24,
+    "must_do":false,
+    "n_tags":24,
+    "time_to_reach":0
+  },
+  "112":{
+    "name":"Palais de l'Élysée",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8703766,
+      2.3166056
+    ],
+    "osm_type":"relation",
+    "osm_id":1060803,
+    "attractiveness":32,
+    "must_do":false,
+    "n_tags":32,
+    "time_to_reach":0
+  },
+  "113":{
+    "name":"Hôtel de la Marine",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8669318,
+      2.323065
+    ],
+    "osm_type":"relation",
+    "osm_id":1060822,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "114":{
+    "name":"Hôtel des Invalides",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8559525,
+      2.3125541
+    ],
+    "osm_type":"relation",
+    "osm_id":1463538,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "115":{
+    "name":"Rotonde de Chartres",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8802542,
+      2.3090835
+    ],
+    "osm_type":"relation",
+    "osm_id":3066029,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "116":{
+    "name":"La Samaritaine",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8592672,
+      2.3424349
+    ],
+    "osm_type":"relation",
+    "osm_id":3075632,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "117":{
+    "name":"Palais du Louvre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8614768,
+      2.3351677
+    ],
+    "osm_type":"relation",
+    "osm_id":3262297,
+    "attractiveness":32,
+    "must_do":false,
+    "n_tags":32,
+    "time_to_reach":0
+  },
+  "118":{
+    "name":"Hôtel de Soubise",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8603506,
+      2.3576045
+    ],
+    "osm_type":"relation",
+    "osm_id":3371164,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "119":{
+    "name":"Mémorial des Martyrs de la Déportation",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8517365,
+      2.3524734
+    ],
+    "osm_type":"relation",
+    "osm_id":9396191,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "120":{
+    "name":"Galerie J. Kugel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8616442,
+      2.3214268
+    ],
+    "osm_type":"way",
+    "osm_id":63564054,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "121":{
+    "name":"Galerie Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8862806,
+      2.3406794
+    ],
+    "osm_type":"way",
+    "osm_id":70716925,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "122":{
+    "name":"Cinémathèque Française",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.837002,
+      2.3826461
+    ],
+    "osm_type":"way",
+    "osm_id":78271385,
+    "attractiveness":26,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "123":{
+    "name":"Espace Louise Michel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8717602,
+      2.3914301
+    ],
+    "osm_type":"way",
+    "osm_id":389174690,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "124":{
+    "name":"Galerie Jeanne Bucher",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8548334,
+      2.3372317
+    ],
+    "osm_type":"way",
+    "osm_id":563066953,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "125":{
+    "name":"Galerie Lara Vincy",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8551889,
+      2.3371175
+    ],
+    "osm_type":"relation",
+    "osm_id":1401754,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "126":{
+    "name":"Pont Alexandre III",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8636423,
+      2.3135438
+    ],
+    "osm_type":"way",
+    "osm_id":17067006,
+    "attractiveness":20,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "127":{
+    "name":"Passage Brady",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8716134,
+      2.3537153
+    ],
+    "osm_type":"way",
+    "osm_id":29709952,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "128":{
+    "name":"Fort de Romainville",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8858276,
+      2.4235273
+    ],
+    "osm_type":"way",
+    "osm_id":38767074,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "129":{
+    "name":"Cabinet d'Histoire (Hôtel de Magny)",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8438711,
+      2.3567387
+    ],
+    "osm_type":"way",
+    "osm_id":42332581,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "130":{
+    "name":"Fontaine des Innocents",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8606368,
+      2.3480233
+    ],
+    "osm_type":"way",
+    "osm_id":52469222,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "131":{
+    "name":"Ministère de la Justice",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8677422,
+      2.3283905
+    ],
+    "osm_type":"way",
+    "osm_id":54175265,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "132":{
+    "name":"Hôtel Saint-Florentin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8667066,
+      2.3240813
+    ],
+    "osm_type":"way",
+    "osm_id":54177935,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "133":{
+    "name":"Palais Brongniart",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8691399,
+      2.3413669
+    ],
+    "osm_type":"way",
+    "osm_id":54657155,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "134":{
+    "name":"Théâtre Daunou",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8692654,
+      2.3318641
+    ],
+    "osm_type":"way",
+    "osm_id":54730662,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "135":{
+    "name":"Hôtel de Sens",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8535257,
+      2.3588733
+    ],
+    "osm_type":"way",
+    "osm_id":55541122,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "136":{
+    "name":"Hôtel d'Ourscamp",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8555465,
+      2.3571206
+    ],
+    "osm_type":"way",
+    "osm_id":55620201,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "137":{
+    "name":"Pavillon Curie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8442282,
+      2.3447813
+    ],
+    "osm_type":"way",
+    "osm_id":56066139,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "138":{
+    "name":"Gustave Flaubert",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8461321,
+      2.3392722
+    ],
+    "osm_type":"way",
+    "osm_id":62874967,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "139":{
+    "name":"Charles Baudelaire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8445903,
+      2.3347138
+    ],
+    "osm_type":"way",
+    "osm_id":62874970,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "140":{
+    "name":"Regard des Maussins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8775024,
+      2.4070003
+    ],
+    "osm_type":"way",
+    "osm_id":63224543,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "141":{
+    "name":"Temple de la Sybille",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8810739,
+      2.3830756
+    ],
+    "osm_type":"way",
+    "osm_id":63224946,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "142":{
+    "name":"Hôtel de Beauharnais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8609496,
+      2.3223731
+    ],
+    "osm_type":"way",
+    "osm_id":63564160,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "143":{
+    "name":"Hôtel de Seignelay",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8611599,
+      2.3218256
+    ],
+    "osm_type":"way",
+    "osm_id":63564188,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "144":{
+    "name":"Statue du Maréchal Ney",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8400358,
+      2.3363445
+    ],
+    "osm_type":"way",
+    "osm_id":63844704,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "145":{
+    "name":"Statue de Gribeauval",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8567922,
+      2.3117336
+    ],
+    "osm_type":"way",
+    "osm_id":64955010,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "146":{
+    "name":"Restaurant Inter-administratif de La Tour-Maubourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8569213,
+      2.3106008
+    ],
+    "osm_type":"way",
+    "osm_id":64955021,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "147":{
+    "name":"Hôtel de Broglie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8594578,
+      2.3186134
+    ],
+    "osm_type":"way",
+    "osm_id":65090089,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "148":{
+    "name":"Hôtel de Choiseul-Praslin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8478008,
+      2.3203873
+    ],
+    "osm_type":"way",
+    "osm_id":65756922,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "149":{
+    "name":"Hôtel Perrinet de Jars",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8689989,
+      2.3198424
+    ],
+    "osm_type":"way",
+    "osm_id":67106925,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "150":{
+    "name":"Hôtel de Coislin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8671412,
+      2.3219906
+    ],
+    "osm_type":"way",
+    "osm_id":67109756,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "151":{
+    "name":"Hôtel de Marigny",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8706645,
+      2.3152357
+    ],
+    "osm_type":"way",
+    "osm_id":67356259,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "152":{
+    "name":"Statue équestre de Jeanne D'Arc",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8754445,
+      2.3194466
+    ],
+    "osm_type":"way",
+    "osm_id":67501479,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "153":{
+    "name":"Chapelle expiatoire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.873695,
+      2.3227605
+    ],
+    "osm_type":"way",
+    "osm_id":67557301,
+    "attractiveness":27,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "154":{
+    "name":"Ambroise Thomas",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8793316,
+      2.3098167
+    ],
+    "osm_type":"way",
+    "osm_id":68335779,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "155":{
+    "name":"Charles Gounod",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8790161,
+      2.3096819
+    ],
+    "osm_type":"way",
+    "osm_id":68335800,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "156":{
+    "name":"Statue de Jules Simon",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8765636,
+      2.3181311
+    ],
+    "osm_type":"way",
+    "osm_id":68507719,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "157":{
+    "name":"Hôtel Biron",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8553042,
+      2.3158567
+    ],
+    "osm_type":"way",
+    "osm_id":68568682,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "158":{
+    "name":"Hôtel de Boisgelin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8542063,
+      2.3220164
+    ],
+    "osm_type":"way",
+    "osm_id":68571250,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "159":{
+    "name":"Hôtel de Cassini",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8519819,
+      2.3209847
+    ],
+    "osm_type":"way",
+    "osm_id":68571376,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "160":{
+    "name":"Monument aux morts de la guerre de 1870",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8508444,
+      2.3060662
+    ],
+    "osm_type":"way",
+    "osm_id":68906600,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "161":{
+    "name":"Lucien Guitry",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8575685,
+      2.2987061
+    ],
+    "osm_type":"way",
+    "osm_id":69034522,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "162":{
+    "name":"foyer de l'Union chrétienne des Jeunes Gens de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8735161,
+      2.3455333
+    ],
+    "osm_type":"way",
+    "osm_id":69220148,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "163":{
+    "name":"Jules Ferry",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8637034,
+      2.3311345
+    ],
+    "osm_type":"way",
+    "osm_id":69289019,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "164":{
+    "name":"Monument de la reconnaissance de la Belgique à la France",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8649226,
+      2.3029298
+    ],
+    "osm_type":"way",
+    "osm_id":69325365,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "165":{
+    "name":"Synagogue Buffault",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8761054,
+      2.3425466
+    ],
+    "osm_type":"way",
+    "osm_id":69417432,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "166":{
+    "name":"Regard Saint-Martin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8714699,
+      2.3914759
+    ],
+    "osm_type":"way",
+    "osm_id":70001651,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "167":{
+    "name":"Regard de la Prise des Eaux du Pré Saint-Gervais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8830678,
+      2.4035516
+    ],
+    "osm_type":"way",
+    "osm_id":73248961,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "168":{
+    "name":"Monument aux Morts",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8824789,
+      2.4117533
+    ],
+    "osm_type":"way",
+    "osm_id":73429126,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "169":{
+    "name":"Château de Saint-Ouen",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9165342,
+      2.3295132
+    ],
+    "osm_type":"way",
+    "osm_id":73835424,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "170":{
+    "name":"Maison du Peuple",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9013075,
+      2.3146603
+    ],
+    "osm_type":"way",
+    "osm_id":74472720,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "171":{
+    "name":"Église Saint-Michel des Batignolles",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8890756,
+      2.3246346
+    ],
+    "osm_type":"way",
+    "osm_id":75748771,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "172":{
+    "name":"Buste de Frédérick Lemaître",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8689148,
+      2.3671974
+    ],
+    "osm_type":"way",
+    "osm_id":76910105,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "173":{
+    "name":"Barrière du Trône - Philippe Auguste",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8479768,
+      2.3984297
+    ],
+    "osm_type":"way",
+    "osm_id":77385192,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "174":{
+    "name":"Lafayette",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8644688,
+      2.3118747
+    ],
+    "osm_type":"way",
+    "osm_id":77441324,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "175":{
+    "name":"Sir Winston Churchill",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8652836,
+      2.313998
+    ],
+    "osm_type":"way",
+    "osm_id":77441386,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "176":{
+    "name":"Chapelle Saint-Louis de la Salpêtrière",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8389393,
+      2.3641414
+    ],
+    "osm_type":"way",
+    "osm_id":78535716,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "177":{
+    "name":"Buste de Johann Strauss",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8685147,
+      2.359769
+    ],
+    "osm_type":"way",
+    "osm_id":78548940,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "178":{
+    "name":"Buste du Baron Taylor",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8684152,
+      2.3602387
+    ],
+    "osm_type":"way",
+    "osm_id":78548956,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "179":{
+    "name":"Maison du Fontainier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8371365,
+      2.3361474
+    ],
+    "osm_type":"way",
+    "osm_id":79611339,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "180":{
+    "name":"Laboratoire de Marie Curie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8445397,
+      2.3557684
+    ],
+    "osm_type":"way",
+    "osm_id":83976060,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "181":{
+    "name":"Théophile Roussel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8381304,
+      2.336329
+    ],
+    "osm_type":"way",
+    "osm_id":87334030,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "182":{
+    "name":"Albert Ier de Belgique",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8646042,
+      2.3182703
+    ],
+    "osm_type":"way",
+    "osm_id":92316083,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "183":{
+    "name":"Hommage à Komitas et aux victimes du Génocide arménien",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8644161,
+      2.3098206
+    ],
+    "osm_type":"way",
+    "osm_id":92316090,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "184":{
+    "name":"Monument à Barye",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8500715,
+      2.3596846
+    ],
+    "osm_type":"way",
+    "osm_id":92316091,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "185":{
+    "name":"Flamme de la Liberté",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8641848,
+      2.3008761
+    ],
+    "osm_type":"way",
+    "osm_id":92316094,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "186":{
+    "name":"Enceinte de Philippe Auguste",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8457554,
+      2.3498529
+    ],
+    "osm_type":"way",
+    "osm_id":92316120,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "187":{
+    "name":"Statue de Frémiet",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8435606,
+      2.3640026
+    ],
+    "osm_type":"way",
+    "osm_id":95475832,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "188":{
+    "name":"Jeanne d'Arc",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8638791,
+      2.332187
+    ],
+    "osm_type":"way",
+    "osm_id":96156233,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "189":{
+    "name":"Passage Brady",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8708984,
+      2.3564843
+    ],
+    "osm_type":"way",
+    "osm_id":111652423,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "190":{
+    "name":"Passage Brady",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8714268,
+      2.3544455
+    ],
+    "osm_type":"way",
+    "osm_id":111652425,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "191":{
+    "name":"Passage Brady",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.871183,
+      2.3553029
+    ],
+    "osm_type":"way",
+    "osm_id":111652428,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "192":{
+    "name":"Le Triomphe de la République",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8483868,
+      2.3959148
+    ],
+    "osm_type":"way",
+    "osm_id":114877477,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "193":{
+    "name":"Alfred de Musset - Le Rêve du Poète",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8652022,
+      2.3106561
+    ],
+    "osm_type":"way",
+    "osm_id":115310616,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "194":{
+    "name":"Le Jardin des Souvenirs",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8392848,
+      2.3243192
+    ],
+    "osm_type":"way",
+    "osm_id":116797447,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "195":{
+    "name":"Hôtel de Bourvallais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.868132,
+      2.3278504
+    ],
+    "osm_type":"way",
+    "osm_id":148573267,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "196":{
+    "name":"Couvent des Cordelières",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8346857,
+      2.3474291
+    ],
+    "osm_type":"way",
+    "osm_id":154161345,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "197":{
+    "name":"Enceinte de Charles V",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8496798,
+      2.3669734
+    ],
+    "osm_type":"way",
+    "osm_id":159220788,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "198":{
+    "name":"La Naissance des formes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8394586,
+      2.3300121
+    ],
+    "osm_type":"way",
+    "osm_id":169987897,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "199":{
+    "name":"Hôtel de Lassay",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8621594,
+      2.317297
+    ],
+    "osm_type":"way",
+    "osm_id":175448743,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "200":{
+    "name":"Pelletier et Caventou",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8440542,
+      2.3391841
+    ],
+    "osm_type":"way",
+    "osm_id":182697269,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "201":{
+    "name":"Monument à Eugène Flachat",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8869533,
+      2.3007728
+    ],
+    "osm_type":"way",
+    "osm_id":208763266,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "202":{
+    "name":"Chapelle Notre-Dame-des-Anges",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8462836,
+      2.3235558
+    ],
+    "osm_type":"way",
+    "osm_id":219378497,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "203":{
+    "name":"Fontaine du Palmier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8575005,
+      2.3472864
+    ],
+    "osm_type":"way",
+    "osm_id":261092850,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "204":{
+    "name":"Élisabeth Alexandrovna Stroganoff",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8595742,
+      2.3949387
+    ],
+    "osm_type":"way",
+    "osm_id":267099784,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "205":{
+    "name":"Félix de Beaujour",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8631336,
+      2.3933669
+    ],
+    "osm_type":"way",
+    "osm_id":312059802,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "206":{
+    "name":"Héloïse et Abélard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8591931,
+      2.391914
+    ],
+    "osm_type":"way",
+    "osm_id":313811735,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "207":{
+    "name":"René Panhard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8583882,
+      2.3956719
+    ],
+    "osm_type":"way",
+    "osm_id":314136876,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "208":{
+    "name":"Gradins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8452977,
+      2.3525509
+    ],
+    "osm_type":"way",
+    "osm_id":406229048,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "209":{
+    "name":"Gradins",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8448391,
+      2.352799
+    ],
+    "osm_type":"way",
+    "osm_id":406229049,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "210":{
+    "name":"Monument commémoratif de la campagne de Tunisie 1942-1943",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8626695,
+      2.3065038
+    ],
+    "osm_type":"way",
+    "osm_id":427592604,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "211":{
+    "name":"Hôtel du ministre des Affaires étrangères",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8622524,
+      2.3161364
+    ],
+    "osm_type":"way",
+    "osm_id":448794899,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "212":{
+    "name":"Aqueduc de la Dhuis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8823637,
+      2.4664022
+    ],
+    "osm_type":"way",
+    "osm_id":511817523,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "213":{
+    "name":"Aqueduc Médicis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8330712,
+      2.3347603
+    ],
+    "osm_type":"way",
+    "osm_id":755054078,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "214":{
+    "name":"Eugène Carrière",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8894615,
+      2.3372122
+    ],
+    "osm_type":"way",
+    "osm_id":868154414,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "215":{
+    "name":"Folie Janvier N8",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8904535,
+      2.392291
+    ],
+    "osm_type":"way",
+    "osm_id":869111628,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "216":{
+    "name":"Folie douce N7",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8913598,
+      2.3913515
+    ],
+    "osm_type":"way",
+    "osm_id":869111631,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "217":{
+    "name":"Colonne Médicis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8625255,
+      2.3429926
+    ],
+    "osm_type":"way",
+    "osm_id":942543401,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "218":{
+    "name":"Casimir Périer",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8600309,
+      2.3936438
+    ],
+    "osm_type":"way",
+    "osm_id":948640834,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "219":{
+    "name":"Tour Montgomery",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8540767,
+      2.3607517
+    ],
+    "osm_type":"way",
+    "osm_id":1029627185,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "220":{
+    "name":"Monument bombardement",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9128785,
+      2.3392332
+    ],
+    "osm_type":"way",
+    "osm_id":1087597077,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "221":{
+    "name":"Passage Brady",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8710466,
+      2.3559617
+    ],
+    "osm_type":"way",
+    "osm_id":1194238628,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "222":{
+    "name":"Famille Boucicaut",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8396133,
+      2.3274421
+    ],
+    "osm_type":"way",
+    "osm_id":1197780546,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "223":{
+    "name":"Famille Gautier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8391596,
+      2.3267588
+    ],
+    "osm_type":"way",
+    "osm_id":1197815660,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "224":{
+    "name":"Famille Levrat",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8389995,
+      2.3266301
+    ],
+    "osm_type":"way",
+    "osm_id":1197815662,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "225":{
+    "name":"Honore Champion",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8388004,
+      2.3263708
+    ],
+    "osm_type":"way",
+    "osm_id":1197824735,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "226":{
+    "name":"Famille Raspail",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8386871,
+      2.3267555
+    ],
+    "osm_type":"way",
+    "osm_id":1197824736,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "227":{
+    "name":"leon Cinain 1826-1898",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8386236,
+      2.3268642
+    ],
+    "osm_type":"way",
+    "osm_id":1197824741,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "228":{
+    "name":"Famille Valentin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8383689,
+      2.3269937
+    ],
+    "osm_type":"way",
+    "osm_id":1197824742,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "229":{
+    "name":"Alex Berdal",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8379043,
+      2.3267576
+    ],
+    "osm_type":"way",
+    "osm_id":1197824743,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "230":{
+    "name":"François Gérard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8378264,
+      2.3266232
+    ],
+    "osm_type":"way",
+    "osm_id":1197824744,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "231":{
+    "name":"Alexandre Duval",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8376084,
+      2.3255649
+    ],
+    "osm_type":"way",
+    "osm_id":1197824749,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "232":{
+    "name":"Famille Lormand",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8377157,
+      2.3245734
+    ],
+    "osm_type":"way",
+    "osm_id":1197824751,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "233":{
+    "name":"Famille Cohen Jonathan",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8372213,
+      2.325048
+    ],
+    "osm_type":"way",
+    "osm_id":1197824752,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "234":{
+    "name":"Famille Reville",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8391171,
+      2.3267211
+    ],
+    "osm_type":"way",
+    "osm_id":1197824760,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "235":{
+    "name":"Henri Langlois",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.839361,
+      2.3268349
+    ],
+    "osm_type":"way",
+    "osm_id":1197824761,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "236":{
+    "name":"ROITEL ROSSIGNOL CHAVONNET",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8633785,
+      2.3910919
+    ],
+    "osm_type":"way",
+    "osm_id":1210561856,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "237":{
+    "name":"Miłosz Magin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8596959,
+      2.3928033
+    ],
+    "osm_type":"way",
+    "osm_id":1210797361,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "238":{
+    "name":"Hyacinthe Loyson",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8607659,
+      2.3942863
+    ],
+    "osm_type":"way",
+    "osm_id":1210797368,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "239":{
+    "name":"Louis Joseph Gay-Lussac",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8606664,
+      2.3946804
+    ],
+    "osm_type":"way",
+    "osm_id":1210797381,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "240":{
+    "name":"Alphonse Daudet",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8601739,
+      2.3953057
+    ],
+    "osm_type":"way",
+    "osm_id":1210797385,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "241":{
+    "name":"Gaspard Monge",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8603102,
+      2.3936584
+    ],
+    "osm_type":"way",
+    "osm_id":1211895435,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "242":{
+    "name":"Famille Mure",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.85862,
+      2.3933043
+    ],
+    "osm_type":"way",
+    "osm_id":1211901758,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "243":{
+    "name":"Famille Chalier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8621379,
+      2.3894202
+    ],
+    "osm_type":"way",
+    "osm_id":1212094025,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "244":{
+    "name":"Mémorial de l'ancienne Gare de Déportation de Bobigny",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9105038,
+      2.429875
+    ],
+    "osm_type":"way",
+    "osm_id":1236950477,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "245":{
+    "name":"Hôtel de Gillier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8518195,
+      2.3583351
+    ],
+    "osm_type":"relation",
+    "osm_id":554046,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "246":{
+    "name":"Hôtel Lambert",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8509959,
+      2.359633
+    ],
+    "osm_type":"relation",
+    "osm_id":554060,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "247":{
+    "name":"Noviciat des Dominicains",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8561352,
+      2.3284496
+    ],
+    "osm_type":"relation",
+    "osm_id":1002118,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "248":{
+    "name":"Hôtel de Crillon",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8676142,
+      2.3213457
+    ],
+    "osm_type":"relation",
+    "osm_id":1060804,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "249":{
+    "name":"Hôtel de Plessis-Bellière",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8673773,
+      2.3216352
+    ],
+    "osm_type":"relation",
+    "osm_id":1060806,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "250":{
+    "name":"Hôtel de Matignon",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8544393,
+      2.320661
+    ],
+    "osm_type":"relation",
+    "osm_id":1076880,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "251":{
+    "name":"Hôtel de la Païva",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8691584,
+      2.3075317
+    ],
+    "osm_type":"relation",
+    "osm_id":1086118,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "252":{
+    "name":"Hôtel Gaillard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8817972,
+      2.3105214
+    ],
+    "osm_type":"relation",
+    "osm_id":1261334,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "253":{
+    "name":"Ligne de Petite Ceinture",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8597838,
+      2.3341775
+    ],
+    "osm_type":"relation",
+    "osm_id":1536589,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "254":{
+    "name":"Châtelet du Château de Vincennes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8426709,
+      2.4347268
+    ],
+    "osm_type":"relation",
+    "osm_id":1559341,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "255":{
+    "name":"Aqueduc de la Dhuis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9609906,
+      2.9839389
+    ],
+    "osm_type":"relation",
+    "osm_id":1599153,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "256":{
+    "name":"Porte Saint-Denis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8697934,
+      2.3526868
+    ],
+    "osm_type":"relation",
+    "osm_id":3170072,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "257":{
+    "name":"Hôpital Saint-Louis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8733451,
+      2.3678812
+    ],
+    "osm_type":"relation",
+    "osm_id":10714750,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "258":{
+    "name":"Voie Romaine Paris -Dreux",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.7963521,
+      1.8559602
+    ],
+    "osm_type":"relation",
+    "osm_id":15488534,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "259":{
+    "name":"Église Saint-Séverin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8520913,
+      2.3457237
+    ],
+    "osm_type":"way",
+    "osm_id":19740659,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":25,
+    "time_to_reach":0
+  },
+  "260":{
+    "name":"Église Saint-Pierre de Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8867199,
+      2.3420645
+    ],
+    "osm_type":"way",
+    "osm_id":23884336,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "261":{
+    "name":"Église Notre-Dame de l'Arche d'Alliance",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8366689,
+      2.3085491
+    ],
+    "osm_type":"way",
+    "osm_id":24303512,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "262":{
+    "name":"Église Notre-Dame-de-Lorette",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8764338,
+      2.3389235
+    ],
+    "osm_type":"way",
+    "osm_id":25688622,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "263":{
+    "name":"Église Notre-Dame de Clignancourt",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.89314,
+      2.3450441
+    ],
+    "osm_type":"way",
+    "osm_id":36855293,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "264":{
+    "name":"Synagogue de la rue Sainte-Isaure",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8936801,
+      2.3438876
+    ],
+    "osm_type":"way",
+    "osm_id":41506069,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "265":{
+    "name":"Synagogue Chivté Israël",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8433943,
+      2.3866038
+    ],
+    "osm_type":"way",
+    "osm_id":42311107,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "266":{
+    "name":"Église Sainte-Hélène",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8965278,
+      2.342435
+    ],
+    "osm_type":"way",
+    "osm_id":48974965,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "267":{
+    "name":"Église de la Sainte-Trinité",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8773025,
+      2.3313881
+    ],
+    "osm_type":"way",
+    "osm_id":49872150,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":19,
+    "time_to_reach":0
+  },
+  "268":{
+    "name":"Église Saint-Leu - Saint-Gilles",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8628813,
+      2.3500683
+    ],
+    "osm_type":"way",
+    "osm_id":53933240,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "269":{
+    "name":"Basilique Notre-Dame-des-Victoires",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8667853,
+      2.3409551
+    ],
+    "osm_type":"way",
+    "osm_id":54661742,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":24,
+    "time_to_reach":0
+  },
+  "270":{
+    "name":"Église Notre-Dame-de-Bonne-Nouvelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8695324,
+      2.3500407
+    ],
+    "osm_type":"way",
+    "osm_id":55178129,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":22,
+    "time_to_reach":0
+  },
+  "271":{
+    "name":"Église Saint-Louis-en-l'Île",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8512802,
+      2.3575796
+    ],
+    "osm_type":"way",
+    "osm_id":55314295,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "272":{
+    "name":"Église Saint-Étienne-du-Mont",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8465485,
+      2.3480584
+    ],
+    "osm_type":"way",
+    "osm_id":55343672,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "273":{
+    "name":"Église Orthodoxe Roumaine des Saints Archanges",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.849488,
+      2.3471975
+    ],
+    "osm_type":"way",
+    "osm_id":55366403,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "274":{
+    "name":"Église Saint-Merri",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8590777,
+      2.3508448
+    ],
+    "osm_type":"way",
+    "osm_id":55742120,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "275":{
+    "name":"Temple du Marais",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8533048,
+      2.3662365
+    ],
+    "osm_type":"way",
+    "osm_id":56206112,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "276":{
+    "name":"Église Sainte-Elisabeth",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8661005,
+      2.3605378
+    ],
+    "osm_type":"way",
+    "osm_id":56457505,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "277":{
+    "name":"Synagogue Vauquelin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8410205,
+      2.3476178
+    ],
+    "osm_type":"way",
+    "osm_id":56693739,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "278":{
+    "name":"Chapelle de la congrégation du Saint-Esprit",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8428826,
+      2.34671
+    ],
+    "osm_type":"way",
+    "osm_id":56771095,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "279":{
+    "name":"Maison Fraternelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8422143,
+      2.3484675
+    ],
+    "osm_type":"way",
+    "osm_id":57380517,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "280":{
+    "name":"Église du Val-de-Grâce",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8405269,
+      2.3419263
+    ],
+    "osm_type":"way",
+    "osm_id":59846865,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "281":{
+    "name":"Église Notre-Dame-des-Vertus",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9145379,
+      2.3826684
+    ],
+    "osm_type":"way",
+    "osm_id":61981374,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "282":{
+    "name":"Église Saint-Ouen",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9189423,
+      2.3315386
+    ],
+    "osm_type":"way",
+    "osm_id":62003063,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "283":{
+    "name":"Église Saint-Germain des Prés",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8539667,
+      2.334463
+    ],
+    "osm_type":"way",
+    "osm_id":62287173,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "284":{
+    "name":"Chapelle Notre-Dame de la Sagesse",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8356931,
+      2.3735362
+    ],
+    "osm_type":"way",
+    "osm_id":62379741,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "285":{
+    "name":"Église Evangélique Baptiste",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8588762,
+      2.3292649
+    ],
+    "osm_type":"way",
+    "osm_id":63149138,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "286":{
+    "name":"Église Saint-Laurent",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.874774,
+      2.3583086
+    ],
+    "osm_type":"way",
+    "osm_id":63200612,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "287":{
+    "name":"Chapelle de l'hôpital Saint-Louis",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8740835,
+      2.3661993
+    ],
+    "osm_type":"way",
+    "osm_id":63200644,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "288":{
+    "name":"Église Saint-Joseph-Artisan",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8813655,
+      2.3677357
+    ],
+    "osm_type":"way",
+    "osm_id":63203063,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "289":{
+    "name":"Église Saint-Jean-Baptiste de Belleville",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8756563,
+      2.3893068
+    ],
+    "osm_type":"way",
+    "osm_id":63212231,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "290":{
+    "name":"Synagogue Michkenot Israël",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8825966,
+      2.3733068
+    ],
+    "osm_type":"way",
+    "osm_id":63212274,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "291":{
+    "name":"Église Notre-Dame-de-l'Assomption des Buttes-Chaumont",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8840257,
+      2.3785052
+    ],
+    "osm_type":"way",
+    "osm_id":63213611,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "292":{
+    "name":"Église Sainte-Claire d'Assise",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8888017,
+      2.3950208
+    ],
+    "osm_type":"way",
+    "osm_id":63234079,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "293":{
+    "name":"Temple Antoiniste",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.878948,
+      2.3975957
+    ],
+    "osm_type":"way",
+    "osm_id":63234870,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "294":{
+    "name":"Église Saint-Serge",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8833592,
+      2.3837675
+    ],
+    "osm_type":"way",
+    "osm_id":63237639,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "295":{
+    "name":"Église Saint-Joseph des Carmes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8485199,
+      2.3302805
+    ],
+    "osm_type":"way",
+    "osm_id":63370983,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "296":{
+    "name":"Mosquée Omar bn El Khattab",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8679659,
+      2.3772772
+    ],
+    "osm_type":"way",
+    "osm_id":63638391,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "297":{
+    "name":"Église Réformée du Luxembourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8474963,
+      2.3314096
+    ],
+    "osm_type":"way",
+    "osm_id":63681841,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "298":{
+    "name":"Église Saint-Jean-des-Grésillons",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9189774,
+      2.3003288
+    ],
+    "osm_type":"way",
+    "osm_id":63957950,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "299":{
+    "name":"Église Sainte-Geneviève",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9082792,
+      2.3574826
+    ],
+    "osm_type":"way",
+    "osm_id":63982213,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "300":{
+    "name":"Église Saint-Jacques Saint-Christophe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8892855,
+      2.3797641
+    ],
+    "osm_type":"way",
+    "osm_id":64037954,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "301":{
+    "name":"Église Notre-Dame des Foyers",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8869224,
+      2.3699944
+    ],
+    "osm_type":"way",
+    "osm_id":64038747,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "302":{
+    "name":"Église Notre-Dame des Champs",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8434561,
+      2.3271121
+    ],
+    "osm_type":"way",
+    "osm_id":64121803,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "303":{
+    "name":"Centre Quaker International",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8458964,
+      2.3216199
+    ],
+    "osm_type":"way",
+    "osm_id":64315031,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "304":{
+    "name":"Basilique Sainte-Clotilde",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.858317,
+      2.3192039
+    ],
+    "osm_type":"way",
+    "osm_id":64952290,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "305":{
+    "name":"Église Saint-Yves-des-Quatre-Routes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9195187,
+      2.4123168
+    ],
+    "osm_type":"way",
+    "osm_id":67181873,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "306":{
+    "name":"Église anglicane Saint-Michael",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8700841,
+      2.3190066
+    ],
+    "osm_type":"way",
+    "osm_id":67233894,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "307":{
+    "name":"Église protestante unie du Saint-Esprit",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.873222,
+      2.3198533
+    ],
+    "osm_type":"way",
+    "osm_id":67350058,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "308":{
+    "name":"Église Saint-Augustin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8761942,
+      2.3188756
+    ],
+    "osm_type":"way",
+    "osm_id":67501490,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "309":{
+    "name":"Église Saint-André de l'Europe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8815247,
+      2.3258345
+    ],
+    "osm_type":"way",
+    "osm_id":68256672,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "310":{
+    "name":"Chapelle Baltard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8735777,
+      2.3103416
+    ],
+    "osm_type":"way",
+    "osm_id":68831265,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "311":{
+    "name":"Chapelle Notre-Dame de l'Annonciation",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8760259,
+      2.3039392
+    ],
+    "osm_type":"way",
+    "osm_id":68991281,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "312":{
+    "name":"Synagogue Rashi",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8744883,
+      2.3475592
+    ],
+    "osm_type":"way",
+    "osm_id":69221039,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "313":{
+    "name":"Consistoire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8757851,
+      2.3369238
+    ],
+    "osm_type":"way",
+    "osm_id":69363791,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "314":{
+    "name":"Église Luthérienne Saint-Jean",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8574433,
+      2.3080496
+    ],
+    "osm_type":"way",
+    "osm_id":69884208,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "315":{
+    "name":"Église Protestante Unie de Paris-Belleville",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8726445,
+      2.3819387
+    ],
+    "osm_type":"way",
+    "osm_id":69999948,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "316":{
+    "name":"Église Notre-Dame-des-Otages",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8741661,
+      2.4028427
+    ],
+    "osm_type":"way",
+    "osm_id":70001758,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "317":{
+    "name":"Église Notre-Dame-de-la-Croix",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8686123,
+      2.3874809
+    ],
+    "osm_type":"way",
+    "osm_id":70001850,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "318":{
+    "name":"Église protestante évangélique de Télégraphe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8731202,
+      2.4012087
+    ],
+    "osm_type":"way",
+    "osm_id":70002610,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "319":{
+    "name":"Église Saint-Gabriel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8486664,
+      2.4060717
+    ],
+    "osm_type":"way",
+    "osm_id":70147593,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "320":{
+    "name":"Église Protestante Danoise",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8734257,
+      2.2991491
+    ],
+    "osm_type":"way",
+    "osm_id":70187665,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "321":{
+    "name":"Cathédrale Saint-Alexandre-Nevsky",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.877618,
+      2.3019923
+    ],
+    "osm_type":"way",
+    "osm_id":70192893,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":22,
+    "time_to_reach":0
+  },
+  "322":{
+    "name":"Temple protestant",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9144278,
+      2.3805593
+    ],
+    "osm_type":"way",
+    "osm_id":72998330,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "323":{
+    "name":"Église Saint-Paul-du-Montfort",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9170219,
+      2.4001222
+    ],
+    "osm_type":"way",
+    "osm_id":73007918,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "324":{
+    "name":"Église Saint-Germain",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8928543,
+      2.4132525
+    ],
+    "osm_type":"way",
+    "osm_id":73113040,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "325":{
+    "name":"Assoc Ligue amicale des cultures et de recherche scientifique",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9039706,
+      2.3950487
+    ],
+    "osm_type":"way",
+    "osm_id":73114961,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "326":{
+    "name":"Église Sainte-Marthe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9057121,
+      2.3951559
+    ],
+    "osm_type":"way",
+    "osm_id":73119238,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "327":{
+    "name":"Oratoire de Padre Pio",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9033824,
+      2.3946926
+    ],
+    "osm_type":"way",
+    "osm_id":73121140,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "328":{
+    "name":"Église de la Sainte-Famille",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8859818,
+      2.4028045
+    ],
+    "osm_type":"way",
+    "osm_id":73249060,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "329":{
+    "name":"Église Notre-Dame-du-Rosaire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8798767,
+      2.4146163
+    ],
+    "osm_type":"way",
+    "osm_id":73433670,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "330":{
+    "name":"Église de Jésus-Christ des saints des derniers jours",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9094149,
+      2.3302012
+    ],
+    "osm_type":"way",
+    "osm_id":73835465,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "331":{
+    "name":"Église Notre-Dame-Auxiliatrice",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9011609,
+      2.3139807
+    ],
+    "osm_type":"way",
+    "osm_id":74470553,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "332":{
+    "name":"Chapelle Saint-Pierre - Saint-Paul",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.899563,
+      2.3657971
+    ],
+    "osm_type":"way",
+    "osm_id":75220961,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "333":{
+    "name":"Église Saint-Joseph des Épinettes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8935748,
+      2.3205585
+    ],
+    "osm_type":"way",
+    "osm_id":75747135,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "334":{
+    "name":"Église de l'Immaculée Conception",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8459791,
+      2.4034956
+    ],
+    "osm_type":"way",
+    "osm_id":77385186,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "335":{
+    "name":"Église Sainte-Geneviève des Grandes-Carrières",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.894851,
+      2.3340131
+    ],
+    "osm_type":"way",
+    "osm_id":77670243,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "336":{
+    "name":"Chapelle Orthodoxe",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8468946,
+      2.3041669
+    ],
+    "osm_type":"way",
+    "osm_id":77739478,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "337":{
+    "name":"Église Saint-Jean de Montmartre",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.884243,
+      2.3378793
+    ],
+    "osm_type":"way",
+    "osm_id":77807770,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":27,
+    "time_to_reach":0
+  },
+  "338":{
+    "name":"Église Saint-Bernard-de-La-Chapelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8860532,
+      2.3549746
+    ],
+    "osm_type":"way",
+    "osm_id":78005074,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "339":{
+    "name":"Église Notre-Dame du Bon Conseil",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.895063,
+      2.3500907
+    ],
+    "osm_type":"way",
+    "osm_id":78020496,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "340":{
+    "name":"Église Notre-Dame de Bercy",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8363209,
+      2.3872317
+    ],
+    "osm_type":"way",
+    "osm_id":78271179,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "341":{
+    "name":"Église réformée Port-Royal Quartier Latin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8363739,
+      2.3491795
+    ],
+    "osm_type":"way",
+    "osm_id":78406890,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "342":{
+    "name":"Église Saint-Marcel",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8374878,
+      2.3592366
+    ],
+    "osm_type":"way",
+    "osm_id":78534351,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "343":{
+    "name":"Cathédrale Saint-Étienne",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8665953,
+      2.2984346
+    ],
+    "osm_type":"way",
+    "osm_id":79232285,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "344":{
+    "name":"Chapelle Saint-Jean",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.835168,
+      2.325842
+    ],
+    "osm_type":"way",
+    "osm_id":79633343,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "345":{
+    "name":"Église Notre-Dame-du-Travail",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8359369,
+      2.3170768
+    ],
+    "osm_type":"way",
+    "osm_id":79687825,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "346":{
+    "name":"Paroisse de Plaisance",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.834375,
+      2.3166882
+    ],
+    "osm_type":"way",
+    "osm_id":79688125,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "347":{
+    "name":"Église Orthodoxe Saint-Séraphin de Sarov",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8426176,
+      2.3045363
+    ],
+    "osm_type":"way",
+    "osm_id":80237345,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "348":{
+    "name":"Église Saint-Jean-Baptiste-de-La-Salle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.841228,
+      2.3124626
+    ],
+    "osm_type":"way",
+    "osm_id":80266257,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "349":{
+    "name":"Église de Tous-les-Saints",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9116813,
+      2.4165316
+    ],
+    "osm_type":"way",
+    "osm_id":81279191,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "350":{
+    "name":"Chapelle Notre-Dame-de-l'Étoile",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.913236,
+      2.428905
+    ],
+    "osm_type":"way",
+    "osm_id":81287493,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "351":{
+    "name":"Église Saint-Leu-Saint-Gilles",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8703087,
+      2.4206749
+    ],
+    "osm_type":"way",
+    "osm_id":81617177,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "352":{
+    "name":"Chapelle des Saints-Apôtres",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8716935,
+      2.4193345
+    ],
+    "osm_type":"way",
+    "osm_id":81618230,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "353":{
+    "name":"Église Saint-André",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8538772,
+      2.4228563
+    ],
+    "osm_type":"way",
+    "osm_id":81831259,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "354":{
+    "name":"Église Saint-Denys de la Chapelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.891341,
+      2.3603495
+    ],
+    "osm_type":"way",
+    "osm_id":84153309,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "355":{
+    "name":"Église Saint-François-de-Sales (ancienne église)",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8844851,
+      2.3048254
+    ],
+    "osm_type":"way",
+    "osm_id":84317434,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "356":{
+    "name":"Église Luthérienne de l'Ascension",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8855199,
+      2.3157231
+    ],
+    "osm_type":"way",
+    "osm_id":84320043,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "357":{
+    "name":"Foyer Culturel Myriam Zana",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8816083,
+      2.3033735
+    ],
+    "osm_type":"way",
+    "osm_id":84322557,
+    "attractiveness":2,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "358":{
+    "name":"Église Saint-Charles-de-Monceau",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.882705,
+      2.3127685
+    ],
+    "osm_type":"way",
+    "osm_id":84324974,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "359":{
+    "name":"Église Saint-François-de-Sales (nouvelle église)",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8848939,
+      2.3050098
+    ],
+    "osm_type":"way",
+    "osm_id":84326196,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "360":{
+    "name":"Mosquée de Drancy",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9199821,
+      2.4253046
+    ],
+    "osm_type":"way",
+    "osm_id":84455398,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "361":{
+    "name":"Chapelle de la Visitation",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8385454,
+      2.335793
+    ],
+    "osm_type":"way",
+    "osm_id":93664894,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "362":{
+    "name":"Chapelle Laennec",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8499446,
+      2.3217861
+    ],
+    "osm_type":"way",
+    "osm_id":105220265,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "363":{
+    "name":"Basilique Sainte-Jeanne-d’Arc",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8915499,
+      2.360526
+    ],
+    "osm_type":"way",
+    "osm_id":112358505,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "364":{
+    "name":"Église Notre-Dame-de-Lourdes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.870752,
+      2.3995332
+    ],
+    "osm_type":"way",
+    "osm_id":112461793,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "365":{
+    "name":"Église Sainte-Marguerite",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8529554,
+      2.3813914
+    ],
+    "osm_type":"way",
+    "osm_id":115804138,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "366":{
+    "name":"Église du Saint-Esprit",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8381748,
+      2.3976366
+    ],
+    "osm_type":"way",
+    "osm_id":130906379,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "367":{
+    "name":"Église Saint-Vincent-de-Paul",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9038936,
+      2.3036986
+    ],
+    "osm_type":"way",
+    "osm_id":133428900,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "368":{
+    "name":"Église Notre-Dame-de-Pontmain",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8601441,
+      2.4200508
+    ],
+    "osm_type":"way",
+    "osm_id":133610564,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "369":{
+    "name":"Prieuré Saint-Benoît",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8875038,
+      2.3421102
+    ],
+    "osm_type":"way",
+    "osm_id":137884617,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "370":{
+    "name":"Église Protestante Suédoise",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8807628,
+      2.3031693
+    ],
+    "osm_type":"way",
+    "osm_id":137884622,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "371":{
+    "name":"Église luthérienne Saint-Paul",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8908265,
+      2.3499846
+    ],
+    "osm_type":"way",
+    "osm_id":148524233,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "372":{
+    "name":"Église Saint-Luc",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8938055,
+      2.3754218
+    ],
+    "osm_type":"way",
+    "osm_id":259039017,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "373":{
+    "name":"Église Saint-Paul de la Plaine",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9152153,
+      2.3632191
+    ],
+    "osm_type":"way",
+    "osm_id":284196003,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "374":{
+    "name":"Synagogue Kedouchat Levy",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.888419,
+      2.3509459
+    ],
+    "osm_type":"way",
+    "osm_id":329896847,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "375":{
+    "name":"Ass Culturelle Fraternité De Pantin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9032414,
+      2.3950124
+    ],
+    "osm_type":"way",
+    "osm_id":400021698,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "376":{
+    "name":"Chapelle Saint-Bernard",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8409341,
+      2.3211613
+    ],
+    "osm_type":"way",
+    "osm_id":410503747,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "377":{
+    "name":"Mosquée du foyer",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9002722,
+      2.3938434
+    ],
+    "osm_type":"way",
+    "osm_id":427207483,
+    "attractiveness":2,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "378":{
+    "name":"Cathédrale de la Sainte-Trinité",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8618757,
+      2.3010168
+    ],
+    "osm_type":"way",
+    "osm_id":449077939,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":17,
+    "time_to_reach":0
+  },
+  "379":{
+    "name":"JW - Salle du Royaume",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8776705,
+      2.4239713
+    ],
+    "osm_type":"way",
+    "osm_id":460236839,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "380":{
+    "name":"Grande Mosquée de Saint-Ouen Al Hashimi",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.907291,
+      2.3257897
+    ],
+    "osm_type":"way",
+    "osm_id":616809276,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "381":{
+    "name":"Église Notre-Dame-du-Rosaire",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9067198,
+      2.3327266
+    ],
+    "osm_type":"way",
+    "osm_id":774960953,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "382":{
+    "name":"Mosquée Islah",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.9117605,
+      2.415003
+    ],
+    "osm_type":"way",
+    "osm_id":866064131,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "383":{
+    "name":"Grande Mosquée de Gennevilliers",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.919566,
+      2.3033097
+    ],
+    "osm_type":"way",
+    "osm_id":952413288,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "384":{
+    "name":"Église Orthodoxe Notre-Dame-Joie-des-Affligés-et-Sainte-Geneviève",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.848068,
+      2.3516065
+    ],
+    "osm_type":"way",
+    "osm_id":1056837934,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "385":{
+    "name":"Association Culturelle Islamique Kurdes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.874251,
+      2.3562294
+    ],
+    "osm_type":"relation",
+    "osm_id":983065,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "386":{
+    "name":"ACIP Vincennes",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8477171,
+      2.4197605
+    ],
+    "osm_type":"relation",
+    "osm_id":12023085,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "387":{
+    "name":"Fontaine des quatre évêques",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.85087,
+      2.3332776
+    ],
+    "osm_type":"way",
+    "osm_id":40068036,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "388":{
+    "name":"Vivier sud",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8620408,
+      2.3297809
+    ],
+    "osm_type":"way",
+    "osm_id":54201242,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "389":{
+    "name":"Monument d'Eugène Delacroix",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.84824,
+      2.3355377
+    ],
+    "osm_type":"way",
+    "osm_id":62848407,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "390":{
+    "name":"Fontaine aux Lions",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8895664,
+      2.3922773
+    ],
+    "osm_type":"way",
+    "osm_id":81752247,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "391":{
+    "name":"Miroir d'Eau",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8678713,
+      2.363198
+    ],
+    "osm_type":"way",
+    "osm_id":313420244,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "392":{
+    "name":"La fontaine de la Vierge",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8525605,
+      2.3513841
+    ],
+    "osm_type":"way",
+    "osm_id":948654101,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "393":{
+    "name":"Fontaine de Diane",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8659253,
+      2.3169593
+    ],
+    "osm_type":"way",
+    "osm_id":1136105125,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "394":{
+    "name":"Fontaine Saussure",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8885895,
+      2.3075212
+    ],
+    "osm_type":"way",
+    "osm_id":1255942976,
+    "attractiveness":2,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "395":{
+    "name":"Square Jean Chérioux",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8401918,
+      2.3006179
+    ],
+    "osm_type":"way",
+    "osm_id":14334838,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "396":{
+    "name":"Jardin Bargue-Platon",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8374487,
+      2.3105347
+    ],
+    "osm_type":"way",
+    "osm_id":14349803,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "397":{
+    "name":"Jardin d'Alleray",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8360274,
+      2.3050768
+    ],
+    "osm_type":"way",
+    "osm_id":14646518,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "398":{
+    "name":"Square de la Tour Saint-Jacques",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.857913,
+      2.3487608
+    ],
+    "osm_type":"way",
+    "osm_id":15895172,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "399":{
+    "name":"Square des Missions Étrangères",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.852336,
+      2.3243813
+    ],
+    "osm_type":"way",
+    "osm_id":16190318,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "400":{
+    "name":"Jardin Villemin - Mahsa Jîna Amini",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8751484,
+      2.3618265
+    ],
+    "osm_type":"way",
+    "osm_id":16405088,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "401":{
+    "name":"Square Jean XXIII",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8523775,
+      2.3503406
+    ],
+    "osm_type":"way",
+    "osm_id":20444455,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "402":{
+    "name":"Square René Le Gall",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8330074,
+      2.3494626
+    ],
+    "osm_type":"way",
+    "osm_id":22054912,
+    "attractiveness":35,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "403":{
+    "name":"Jardin des Grands-Explorateurs Marco Polo et Robert Cavelier-de-la-Salle",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8416569,
+      2.3368712
+    ],
+    "osm_type":"way",
+    "osm_id":22732250,
+    "attractiveness":20,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "404":{
+    "name":"Square Robert Montagne",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8422649,
+      2.3540627
+    ],
+    "osm_type":"way",
+    "osm_id":22946834,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "405":{
+    "name":"Square d'Estienne d'Orves",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8767521,
+      2.3316112
+    ],
+    "osm_type":"way",
+    "osm_id":23272397,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "406":{
+    "name":"Square Roger-Stéphane",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.852784,
+      2.3280405
+    ],
+    "osm_type":"way",
+    "osm_id":23736351,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "407":{
+    "name":"Square Sarah Bernhardt",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.849403,
+      2.403903
+    ],
+    "osm_type":"way",
+    "osm_id":23757948,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "408":{
+    "name":"Square Émile Chautemps",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8671737,
+      2.3538184
+    ],
+    "osm_type":"way",
+    "osm_id":23981951,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "409":{
+    "name":"Square d'Alleray Labrouste-Saint-Amand",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8358496,
+      2.3084018
+    ],
+    "osm_type":"way",
+    "osm_id":24303537,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "410":{
+    "name":"Parc Abel-Mézières",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9160265,
+      2.3299291
+    ],
+    "osm_type":"way",
+    "osm_id":24604305,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "411":{
+    "name":"Parc François Mitterrand",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9029374,
+      2.324142
+    ],
+    "osm_type":"way",
+    "osm_id":24606663,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "412":{
+    "name":"Jardin Henri-Sauvage",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.894058,
+      2.352202
+    ],
+    "osm_type":"way",
+    "osm_id":25092574,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "413":{
+    "name":"Square des Epinettes",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.894366,
+      2.3265728
+    ],
+    "osm_type":"way",
+    "osm_id":25765947,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "414":{
+    "name":"Square Claude Nicolas Ledoux",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8343019,
+      2.3315563
+    ],
+    "osm_type":"way",
+    "osm_id":25861852,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "415":{
+    "name":"Square Laurent Prache",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8542571,
+      2.333953
+    ],
+    "osm_type":"way",
+    "osm_id":26583593,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "416":{
+    "name":"Square Eugène Varlin",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.878076,
+      2.3658886
+    ],
+    "osm_type":"way",
+    "osm_id":26954399,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "417":{
+    "name":"Square Henri Christiné",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8779611,
+      2.3661926
+    ],
+    "osm_type":"way",
+    "osm_id":26954406,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "418":{
+    "name":"Jardin Claire Motte",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8917722,
+      2.3046556
+    ],
+    "osm_type":"way",
+    "osm_id":27618948,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "419":{
+    "name":"Square de Clignancourt",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8930338,
+      2.3465149
+    ],
+    "osm_type":"way",
+    "osm_id":28804468,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "420":{
+    "name":"Parc municipal Lucie-Aubrac",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.878186,
+      2.4172315
+    ],
+    "osm_type":"way",
+    "osm_id":28887274,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "421":{
+    "name":"Square Aristide Cavaillé-Coll",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8783688,
+      2.3517697
+    ],
+    "osm_type":"way",
+    "osm_id":29700227,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "422":{
+    "name":"Place Salvador Allende",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8973902,
+      2.400923
+    ],
+    "osm_type":"way",
+    "osm_id":30066116,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "423":{
+    "name":"Jardin Rachmaninov",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8953201,
+      2.3642267
+    ],
+    "osm_type":"way",
+    "osm_id":30091005,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "424":{
+    "name":"Square Serge Reggiani",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8889585,
+      2.3791325
+    ],
+    "osm_type":"way",
+    "osm_id":30097285,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "425":{
+    "name":"Square Emmanuel Fleury",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8705546,
+      2.411767
+    ],
+    "osm_type":"way",
+    "osm_id":31150070,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "426":{
+    "name":"Square Charles Hermite",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8999857,
+      2.3668797
+    ],
+    "osm_type":"way",
+    "osm_id":31153132,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "427":{
+    "name":"Jardin Anaïs Nin",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8993002,
+      2.3707214
+    ],
+    "osm_type":"way",
+    "osm_id":31153158,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "428":{
+    "name":"Square de Stalingrad",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9114634,
+      2.3835834
+    ],
+    "osm_type":"way",
+    "osm_id":31159294,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "429":{
+    "name":"Parc Eli Lotar",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9180651,
+      2.3716982
+    ],
+    "osm_type":"way",
+    "osm_id":31297128,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "430":{
+    "name":"Parc Diderot",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9068122,
+      2.3974827
+    ],
+    "osm_type":"way",
+    "osm_id":31353320,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "431":{
+    "name":"Espaces Verts des Courtillères",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9127656,
+      2.4115218
+    ],
+    "osm_type":"way",
+    "osm_id":31353371,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "432":{
+    "name":"Square Edmond Pépin",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8837465,
+      2.4028979
+    ],
+    "osm_type":"way",
+    "osm_id":31353825,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "433":{
+    "name":"Square d'Anvers - Jean-Claude-Carrière",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8821787,
+      2.3443692
+    ],
+    "osm_type":"way",
+    "osm_id":34675527,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "434":{
+    "name":"Square Marcel Sembat",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8987453,
+      2.338316
+    ],
+    "osm_type":"way",
+    "osm_id":35194283,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "435":{
+    "name":"Square Léon-Frapié",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8728678,
+      2.4118129
+    ],
+    "osm_type":"way",
+    "osm_id":35537824,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "436":{
+    "name":"Square de la Marseillaise",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8871768,
+      2.3975596
+    ],
+    "osm_type":"way",
+    "osm_id":35631119,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "437":{
+    "name":"Square Léon-Serpollet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8921879,
+      2.3384235
+    ],
+    "osm_type":"way",
+    "osm_id":36855294,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "438":{
+    "name":"Parc Roger Salengro",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.904745,
+      2.311665
+    ],
+    "osm_type":"way",
+    "osm_id":36894633,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "439":{
+    "name":"Jardin des Buttes",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8663875,
+      2.4223022
+    ],
+    "osm_type":"way",
+    "osm_id":36911930,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "440":{
+    "name":"Parc des Sports",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9236649,
+      2.3024406
+    ],
+    "osm_type":"way",
+    "osm_id":39838933,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "441":{
+    "name":"Parc Chenard et Walcker",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9204775,
+      2.3001107
+    ],
+    "osm_type":"way",
+    "osm_id":39839715,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "442":{
+    "name":"Allées Missak-Manouchian",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9197655,
+      2.3009839
+    ],
+    "osm_type":"way",
+    "osm_id":39923800,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "443":{
+    "name":"Jardin Ilan-Halimi",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8360513,
+      2.401527
+    ],
+    "osm_type":"way",
+    "osm_id":41917771,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "444":{
+    "name":"square Jules Ferry",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8593802,
+      2.4175069
+    ],
+    "osm_type":"way",
+    "osm_id":43103577,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "445":{
+    "name":"Parc Robinson",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9088537,
+      2.2949154
+    ],
+    "osm_type":"way",
+    "osm_id":43447638,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "446":{
+    "name":"Square Denise Buisson",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8570277,
+      2.4271928
+    ],
+    "osm_type":"way",
+    "osm_id":43476880,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "447":{
+    "name":"Square Louise Michel",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8853618,
+      2.3438234
+    ],
+    "osm_type":"way",
+    "osm_id":45189726,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "448":{
+    "name":"Square Helbronner",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9106744,
+      2.3414253
+    ],
+    "osm_type":"way",
+    "osm_id":49860508,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "449":{
+    "name":"Square Ozanam",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8433483,
+      2.3274308
+    ],
+    "osm_type":"way",
+    "osm_id":50385010,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "450":{
+    "name":"Parc Aimé Césaire",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9101774,
+      2.3760838
+    ],
+    "osm_type":"way",
+    "osm_id":50828902,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "451":{
+    "name":"Square des Acrobates",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9167975,
+      2.3537291
+    ],
+    "osm_type":"way",
+    "osm_id":52982345,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "452":{
+    "name":"Jardinet place du lieutenant Henri-Karcher",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8632971,
+      2.3399434
+    ],
+    "osm_type":"way",
+    "osm_id":53826866,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "453":{
+    "name":"Parc Théodore Monod",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9103645,
+      2.309488
+    ],
+    "osm_type":"way",
+    "osm_id":54380826,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "454":{
+    "name":"Square Jacques Bidault",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8698572,
+      2.3499616
+    ],
+    "osm_type":"way",
+    "osm_id":55263339,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "455":{
+    "name":"Square Charles Victor Langlois",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8586993,
+      2.3580083
+    ],
+    "osm_type":"way",
+    "osm_id":55848929,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "456":{
+    "name":"Jardin Serge Gainsbourg",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8786669,
+      2.4080907
+    ],
+    "osm_type":"way",
+    "osm_id":61320151,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "457":{
+    "name":"Square Alban Satragne",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8755522,
+      2.3552823
+    ],
+    "osm_type":"way",
+    "osm_id":61406614,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "458":{
+    "name":"Square Félix Desruelles",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8536974,
+      2.3345069
+    ],
+    "osm_type":"way",
+    "osm_id":62287123,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "459":{
+    "name":"Square Marcel Pagnol",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8759354,
+      2.3203969
+    ],
+    "osm_type":"way",
+    "osm_id":67725863,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "460":{
+    "name":"Place du Guatémala",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8765224,
+      2.3182782
+    ],
+    "osm_type":"way",
+    "osm_id":68507724,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "461":{
+    "name":"Jardin de l’Hôtel Salomon de Rothschild",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8753193,
+      2.3027355
+    ],
+    "osm_type":"way",
+    "osm_id":68995097,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "462":{
+    "name":"Square de la rue Hélène",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8864786,
+      2.324743
+    ],
+    "osm_type":"way",
+    "osm_id":75750052,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "463":{
+    "name":"Square des Recollets",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8737963,
+      2.363602
+    ],
+    "osm_type":"way",
+    "osm_id":76910069,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "464":{
+    "name":"Square Alain Bashung",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.885345,
+      2.3561989
+    ],
+    "osm_type":"way",
+    "osm_id":78009019,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "465":{
+    "name":"Jardin Hector Malot",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8471031,
+      2.3769063
+    ],
+    "osm_type":"way",
+    "osm_id":78146247,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "466":{
+    "name":"Les Jardins du Ruisseau",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8974781,
+      2.342714
+    ],
+    "osm_type":"way",
+    "osm_id":86602632,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "467":{
+    "name":"Jardin public de l'Observatoire de Paris",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8351004,
+      2.3367387
+    ],
+    "osm_type":"way",
+    "osm_id":87334036,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "468":{
+    "name":"Jardin de l'Église Saint-Éloi",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.844863,
+      2.3888016
+    ],
+    "osm_type":"way",
+    "osm_id":93903779,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "469":{
+    "name":"Cour Pasteur",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8412766,
+      2.3446263
+    ],
+    "osm_type":"way",
+    "osm_id":95092958,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "470":{
+    "name":"Cour aux Ernest",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8418993,
+      2.3448331
+    ],
+    "osm_type":"way",
+    "osm_id":95195271,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "471":{
+    "name":"Square Auguste Mariette-Pacha",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8491483,
+      2.345955
+    ],
+    "osm_type":"way",
+    "osm_id":97602191,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "472":{
+    "name":"Square Michel Foucault",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8493381,
+      2.3452413
+    ],
+    "osm_type":"way",
+    "osm_id":97602192,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "473":{
+    "name":"Square Yves Coppens",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8489867,
+      2.346343
+    ],
+    "osm_type":"way",
+    "osm_id":97602197,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "474":{
+    "name":"Square de l'Abbé Esquerré",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8503173,
+      2.3136601
+    ],
+    "osm_type":"way",
+    "osm_id":103344111,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "475":{
+    "name":"Square des Deux Nèthes",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8856573,
+      2.3274074
+    ],
+    "osm_type":"way",
+    "osm_id":106587163,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "476":{
+    "name":"Square Alex Biscarre",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8785098,
+      2.33667
+    ],
+    "osm_type":"way",
+    "osm_id":107257915,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "477":{
+    "name":"Square Hector Berlioz",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8831619,
+      2.3298581
+    ],
+    "osm_type":"way",
+    "osm_id":107351766,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "478":{
+    "name":"Point vert de la place Roosevelt, Schaeffer, Noyers",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9173593,
+      2.3798109
+    ],
+    "osm_type":"way",
+    "osm_id":114705404,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "479":{
+    "name":"Jardin de l'Intendant",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8544737,
+      2.3109127
+    ],
+    "osm_type":"way",
+    "osm_id":115022783,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "480":{
+    "name":"Square Raoul Nordling",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8526519,
+      2.3815603
+    ],
+    "osm_type":"way",
+    "osm_id":115804160,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "481":{
+    "name":"Square Trousseau",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8504057,
+      2.3771319
+    ],
+    "osm_type":"way",
+    "osm_id":118878250,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "482":{
+    "name":"Espace Édouard Vaillant",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9019175,
+      2.3333031
+    ],
+    "osm_type":"way",
+    "osm_id":119637302,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "483":{
+    "name":"Square Courteline",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8449581,
+      2.4022524
+    ],
+    "osm_type":"way",
+    "osm_id":129890096,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "484":{
+    "name":"Square Van Vollenhoven",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8345779,
+      2.4067941
+    ],
+    "osm_type":"way",
+    "osm_id":131549198,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "485":{
+    "name":"Jardinières angles des rues Daumesnil - Charenton",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8423892,
+      2.3858724
+    ],
+    "osm_type":"way",
+    "osm_id":133881479,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "486":{
+    "name":"Bois de Vincennes",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8315046,
+      2.4347158
+    ],
+    "osm_type":"way",
+    "osm_id":142107768,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "487":{
+    "name":"Square Monseigneur Maillet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8769508,
+      2.3933291
+    ],
+    "osm_type":"way",
+    "osm_id":149743025,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "488":{
+    "name":"Square Sainte-Hélène",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8962254,
+      2.3430597
+    ],
+    "osm_type":"way",
+    "osm_id":155119480,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "489":{
+    "name":"Jardin Nelson Mandela",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8626235,
+      2.344487
+    ],
+    "osm_type":"way",
+    "osm_id":159103475,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "490":{
+    "name":"Square Les Z'Arts",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.905328,
+      2.3396687
+    ],
+    "osm_type":"way",
+    "osm_id":161687382,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "491":{
+    "name":"Jardin René Binet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8997243,
+      2.338398
+    ],
+    "osm_type":"way",
+    "osm_id":163131785,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "492":{
+    "name":"Square Montgolfier",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8933447,
+      2.4031291
+    ],
+    "osm_type":"way",
+    "osm_id":167647007,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "493":{
+    "name":"Square de la Madone",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8926884,
+      2.3614964
+    ],
+    "osm_type":"way",
+    "osm_id":180355685,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "494":{
+    "name":"Square Ernest-Chausson",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8873875,
+      2.3250098
+    ],
+    "osm_type":"way",
+    "osm_id":180688616,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "495":{
+    "name":"Square Curial",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8956419,
+      2.374963
+    ],
+    "osm_type":"way",
+    "osm_id":183821262,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "496":{
+    "name":"Square Dampierre-Rouvet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8939967,
+      2.384231
+    ],
+    "osm_type":"way",
+    "osm_id":183821348,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "497":{
+    "name":"Square de Montjoie",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9116384,
+      2.3594605
+    ],
+    "osm_type":"way",
+    "osm_id":193160754,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "498":{
+    "name":"Square Diderot",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9079727,
+      2.3617019
+    ],
+    "osm_type":"way",
+    "osm_id":196098232,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "499":{
+    "name":"Square Petit",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8850845,
+      2.3820568
+    ],
+    "osm_type":"way",
+    "osm_id":198055405,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "500":{
+    "name":"Square Françoise-Hélène Jourda",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8865799,
+      2.3622552
+    ],
+    "osm_type":"way",
+    "osm_id":216269238,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "501":{
+    "name":"Square Marc-Seguin",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8919489,
+      2.3611955
+    ],
+    "osm_type":"way",
+    "osm_id":216269243,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "502":{
+    "name":"Square de l'Évangile",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8924402,
+      2.3618463
+    ],
+    "osm_type":"way",
+    "osm_id":218118748,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "503":{
+    "name":"Square de la Cristallerie",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9133226,
+      2.3622312
+    ],
+    "osm_type":"way",
+    "osm_id":224495131,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "504":{
+    "name":"Jardin Pédagogique Debain",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9027795,
+      2.3491875
+    ],
+    "osm_type":"way",
+    "osm_id":227286835,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "505":{
+    "name":"Square Carpeaux",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8916885,
+      2.3316484
+    ],
+    "osm_type":"way",
+    "osm_id":232871805,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "506":{
+    "name":"Square René Dewerpe",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9160939,
+      2.4313941
+    ],
+    "osm_type":"way",
+    "osm_id":235877322,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "507":{
+    "name":"Square Madeleine Tribolati",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8771593,
+      2.3643554
+    ],
+    "osm_type":"way",
+    "osm_id":241898171,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "508":{
+    "name":"Grand Parc des Docks de Saint-Ouen",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9156406,
+      2.3273831
+    ],
+    "osm_type":"way",
+    "osm_id":241970652,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "509":{
+    "name":"Square Sainte Marguerite",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9019871,
+      2.392207
+    ],
+    "osm_type":"way",
+    "osm_id":245210084,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "510":{
+    "name":"Square Raymond-Queneau",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.895822,
+      2.3610383
+    ],
+    "osm_type":"way",
+    "osm_id":245462496,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "511":{
+    "name":"Square grand Auger",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.891099,
+      2.4005743
+    ],
+    "osm_type":"way",
+    "osm_id":245948822,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "512":{
+    "name":"Square Élisa Borey",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8665355,
+      2.3904461
+    ],
+    "osm_type":"way",
+    "osm_id":256437620,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "513":{
+    "name":"Square de la rue des Mûriers",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8647232,
+      2.3907489
+    ],
+    "osm_type":"way",
+    "osm_id":256969688,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "514":{
+    "name":"Jardin Jane Vialle",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8951778,
+      2.3536558
+    ],
+    "osm_type":"way",
+    "osm_id":257564771,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "515":{
+    "name":"Jardin de la Justice",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8682927,
+      2.4085101
+    ],
+    "osm_type":"way",
+    "osm_id":268400319,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "516":{
+    "name":"Jardin Frida Kahlo",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8722619,
+      2.4129546
+    ],
+    "osm_type":"way",
+    "osm_id":270368321,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "517":{
+    "name":"La Petite Ceinture du 20e",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8695565,
+      2.3888451
+    ],
+    "osm_type":"way",
+    "osm_id":272547170,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "518":{
+    "name":"Square Jean Leclaire",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8960028,
+      2.3256518
+    ],
+    "osm_type":"way",
+    "osm_id":281320579,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "519":{
+    "name":"Jardin des Petites Rigoles",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8711431,
+      2.3915288
+    ],
+    "osm_type":"way",
+    "osm_id":286449809,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "520":{
+    "name":"Jardin de la rue du Chalet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8740042,
+      2.3732939
+    ],
+    "osm_type":"way",
+    "osm_id":290586931,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "521":{
+    "name":"Square Georges Valbon",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.879081,
+      2.4159816
+    ],
+    "osm_type":"way",
+    "osm_id":293462525,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "522":{
+    "name":"Square Henri Sellier",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8835696,
+      2.4095194
+    ],
+    "osm_type":"way",
+    "osm_id":302430135,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "523":{
+    "name":"Square Georges Gay",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.88301,
+      2.4180549
+    ],
+    "osm_type":"way",
+    "osm_id":311824309,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "524":{
+    "name":"Square Alexandre-Luquet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8712709,
+      2.3866251
+    ],
+    "osm_type":"way",
+    "osm_id":342601519,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "525":{
+    "name":"Square Joël Le Tac",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8892411,
+      2.338154
+    ],
+    "osm_type":"way",
+    "osm_id":347398395,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "526":{
+    "name":"Square éphémère Le Point Virgule",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9024155,
+      2.397356
+    ],
+    "osm_type":"way",
+    "osm_id":349887549,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "527":{
+    "name":"Square Roland Dorgelès",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8884891,
+      2.3395705
+    ],
+    "osm_type":"way",
+    "osm_id":349925623,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "528":{
+    "name":"Parc Marcel Bich",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8970032,
+      2.3047018
+    ],
+    "osm_type":"way",
+    "osm_id":358375852,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "529":{
+    "name":"Jardin des Rosiers – Joseph-Migneret",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8572946,
+      2.3602516
+    ],
+    "osm_type":"way",
+    "osm_id":365878540,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "530":{
+    "name":"Jardin Léon Zyguel",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8744297,
+      2.3953666
+    ],
+    "osm_type":"way",
+    "osm_id":366942718,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "531":{
+    "name":"Parc Le Temps des Cerises",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9200575,
+      2.3537459
+    ],
+    "osm_type":"way",
+    "osm_id":374922654,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "532":{
+    "name":"Jardin Marcel Joseph-François",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.881282,
+      2.4222704
+    ],
+    "osm_type":"way",
+    "osm_id":394930550,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "533":{
+    "name":"Square Anne Franck",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9010357,
+      2.391558
+    ],
+    "osm_type":"way",
+    "osm_id":400470877,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "534":{
+    "name":"Square du Landy",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9149267,
+      2.3428987
+    ],
+    "osm_type":"way",
+    "osm_id":429314402,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "535":{
+    "name":"Square Faidherbe",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8842518,
+      2.4111958
+    ],
+    "osm_type":"way",
+    "osm_id":437067246,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "536":{
+    "name":"Square Saint-Médard",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8397407,
+      2.3505403
+    ],
+    "osm_type":"way",
+    "osm_id":475591498,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "537":{
+    "name":"Coulée verte",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8403625,
+      2.4051868
+    ],
+    "osm_type":"way",
+    "osm_id":479550070,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "538":{
+    "name":"Square Adrien Agnès",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9158677,
+      2.3710641
+    ],
+    "osm_type":"way",
+    "osm_id":495199253,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "539":{
+    "name":"Parc Simone Veil",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.877103,
+      2.412911
+    ],
+    "osm_type":"way",
+    "osm_id":537779921,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "540":{
+    "name":"Forêt linéaire Nord",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9008618,
+      2.3786064
+    ],
+    "osm_type":"way",
+    "osm_id":547059083,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "541":{
+    "name":"Square Maria Vérone",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8969236,
+      2.3358878
+    ],
+    "osm_type":"way",
+    "osm_id":550244201,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "542":{
+    "name":"Square Émilienne Moreau Evrard",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9163056,
+      2.3788177
+    ],
+    "osm_type":"way",
+    "osm_id":566130890,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "543":{
+    "name":"jardin Louise-Weber-dite-La-Goulue",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8864089,
+      2.3368967
+    ],
+    "osm_type":"way",
+    "osm_id":570236762,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "544":{
+    "name":"Square Nadar",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8859366,
+      2.3418689
+    ],
+    "osm_type":"way",
+    "osm_id":570270071,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "545":{
+    "name":"Square des 31000 et des 45000",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9138493,
+      2.3324482
+    ],
+    "osm_type":"way",
+    "osm_id":579604099,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "546":{
+    "name":"Jardin du Père-Armand-David",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8478674,
+      2.3220972
+    ],
+    "osm_type":"way",
+    "osm_id":588324415,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "547":{
+    "name":"Jardin Hans et Sophie Scholl",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9000696,
+      2.320645
+    ],
+    "osm_type":"way",
+    "osm_id":600611810,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "548":{
+    "name":"Square Carnot - Jardin du Roy",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8415458,
+      2.4333305
+    ],
+    "osm_type":"way",
+    "osm_id":623935833,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "549":{
+    "name":"Parc Marguerite Yourcenar",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9184843,
+      2.3163862
+    ],
+    "osm_type":"way",
+    "osm_id":627992411,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "550":{
+    "name":"Jardins et Vignes",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8900176,
+      2.3298673
+    ],
+    "osm_type":"way",
+    "osm_id":669147415,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "551":{
+    "name":"Terrain de boules Boulevard de Reims",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8887271,
+      2.2971561
+    ],
+    "osm_type":"way",
+    "osm_id":671211475,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "552":{
+    "name":"Jardin Monica Vitti",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.85383,
+      2.3587057
+    ],
+    "osm_type":"way",
+    "osm_id":680335218,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "553":{
+    "name":"Square Jean Jaurès",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9215624,
+      2.4075786
+    ],
+    "osm_type":"way",
+    "osm_id":712722293,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "554":{
+    "name":"Le Moulin de la Palette",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8870941,
+      2.3607265
+    ],
+    "osm_type":"way",
+    "osm_id":740494267,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "555":{
+    "name":"Square du 8 mai 1945",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8909854,
+      2.4102454
+    ],
+    "osm_type":"way",
+    "osm_id":776697805,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "556":{
+    "name":"Square partagé Langevin",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8894476,
+      2.4147245
+    ],
+    "osm_type":"way",
+    "osm_id":777256200,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "557":{
+    "name":"Square Vaucanson",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8896788,
+      2.4043481
+    ],
+    "osm_type":"way",
+    "osm_id":777334888,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "558":{
+    "name":"Mail Pierre Desproges",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8949999,
+      2.4066759
+    ],
+    "osm_type":"way",
+    "osm_id":777477474,
+    "attractiveness":17,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "559":{
+    "name":"Jardin des Abbesses",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8852479,
+      2.3385536
+    ],
+    "osm_type":"way",
+    "osm_id":778261293,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "560":{
+    "name":"Square Claude Goislot",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9179735,
+      2.3927614
+    ],
+    "osm_type":"way",
+    "osm_id":838326052,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "561":{
+    "name":"Square de la Villette",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9030736,
+      2.3865783
+    ],
+    "osm_type":"way",
+    "osm_id":838332060,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "562":{
+    "name":"Square Saganta",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.911422,
+      2.3810887
+    ],
+    "osm_type":"way",
+    "osm_id":838357749,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "563":{
+    "name":"Square Georges Leblanc",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.914215,
+      2.4002443
+    ],
+    "osm_type":"way",
+    "osm_id":838360557,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "564":{
+    "name":"Terrains multisports",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9043937,
+      2.3864104
+    ],
+    "osm_type":"way",
+    "osm_id":839298413,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "565":{
+    "name":"Place Bernard Amiot et Bernard Legrand",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9188164,
+      2.3036664
+    ],
+    "osm_type":"way",
+    "osm_id":842441696,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "566":{
+    "name":"Parc du rucher d'Aubervilliers",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9091256,
+      2.3871926
+    ],
+    "osm_type":"way",
+    "osm_id":845481131,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "567":{
+    "name":"La Petite Ceinture du 19ème",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8958777,
+      2.3789437
+    ],
+    "osm_type":"way",
+    "osm_id":845793683,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "568":{
+    "name":"Square Guy Môquet",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9240135,
+      2.4134346
+    ],
+    "osm_type":"way",
+    "osm_id":883901370,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "569":{
+    "name":"Jardin Jean Mercier",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9084547,
+      2.3029795
+    ],
+    "osm_type":"way",
+    "osm_id":887023481,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "570":{
+    "name":"Square Marcel Paul",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9026035,
+      2.3256264
+    ],
+    "osm_type":"way",
+    "osm_id":947255079,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "571":{
+    "name":"Jardin Nusch Éluard",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8925863,
+      2.3593458
+    ],
+    "osm_type":"way",
+    "osm_id":958322551,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "572":{
+    "name":"Parc Morel (skateboard)",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9004194,
+      2.3193783
+    ],
+    "osm_type":"way",
+    "osm_id":968156415,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "573":{
+    "name":"Promenade Jean-Jacques Sempé",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8495883,
+      2.3329384
+    ],
+    "osm_type":"way",
+    "osm_id":968787390,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "574":{
+    "name":"Square Gisèle Halimi",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9171514,
+      2.4089031
+    ],
+    "osm_type":"way",
+    "osm_id":985529205,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "575":{
+    "name":"Parc Foucault",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9006799,
+      2.3109703
+    ],
+    "osm_type":"way",
+    "osm_id":1022523481,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "576":{
+    "name":"Jardin éphémère",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9030392,
+      2.3374987
+    ],
+    "osm_type":"way",
+    "osm_id":1074618792,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "577":{
+    "name":"Square Jacques Manavian",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.899006,
+      2.3245959
+    ],
+    "osm_type":"way",
+    "osm_id":1104894585,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "578":{
+    "name":"Square Henri Sellier",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9027174,
+      2.3173947
+    ],
+    "osm_type":"way",
+    "osm_id":1157423264,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "579":{
+    "name":"Jardins du Grand Échiquier",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9175228,
+      2.3126717
+    ],
+    "osm_type":"way",
+    "osm_id":1184461730,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "580":{
+    "name":"Parvis de l'Abbé Pierre",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9091508,
+      2.4276158
+    ],
+    "osm_type":"way",
+    "osm_id":1236950475,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "581":{
+    "name":"Jardin du Carré Rouge",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9103226,
+      2.4259501
+    ],
+    "osm_type":"way",
+    "osm_id":1236950495,
+    "attractiveness":3,
+    "must_do":false,
+    "n_tags":2,
+    "time_to_reach":0
+  },
+  "582":{
+    "name":"Square Henri Galli",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8513526,
+      2.3618576
+    ],
+    "osm_type":"relation",
+    "osm_id":2080074,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "583":{
+    "name":"Square de l’église Notre-Dame-de-la-Croix",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8687336,
+      2.3881113
+    ],
+    "osm_type":"relation",
+    "osm_id":2100826,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "584":{
+    "name":"Coulée verte du sud parisien",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.7855092,
+      2.2944127
+    ],
+    "osm_type":"relation",
+    "osm_id":2646085,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "585":{
+    "name":"Parc Monceau",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8793706,
+      2.3088907
+    ],
+    "osm_type":"relation",
+    "osm_id":2826933,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "586":{
+    "name":"Parc départemental Jean-Moulin - Les Guilands",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8630132,
+      2.424942
+    ],
+    "osm_type":"relation",
+    "osm_id":6530383,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "587":{
+    "name":"Parc de la Villette",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.89352,
+      2.3893334
+    ],
+    "osm_type":"relation",
+    "osm_id":7574623,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "588":{
+    "name":"Les Jardins d'Éole",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8876495,
+      2.3662081
+    ],
+    "osm_type":"relation",
+    "osm_id":11717983,
+    "attractiveness":9,
+    "must_do":false,
+    "n_tags":6,
+    "time_to_reach":0
+  },
+  "589":{
+    "name":"Jardin Alexandra David-Néel",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8454726,
+      2.4228422
+    ],
+    "osm_type":"relation",
+    "osm_id":11989941,
+    "attractiveness":6,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "590":{
+    "name":"Parc Clichy-Batignolles Martin Luther King",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8911906,
+      2.313643
+    ],
+    "osm_type":"relation",
+    "osm_id":12273749,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":10,
+    "time_to_reach":0
+  },
+  "591":{
+    "name":"Square de la Porte de la Villette",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8998347,
+      2.3901654
+    ],
+    "osm_type":"relation",
+    "osm_id":13014387,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "592":{
+    "name":"Square Rose Guérin\/Heidenheim",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.9075996,
+      2.300795
+    ],
+    "osm_type":"relation",
+    "osm_id":13725453,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":3,
+    "time_to_reach":0
+  },
+  "593":{
+    "name":"Parc zoologique de Paris",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8318246,
+      2.4172936
+    ],
+    "osm_type":"way",
+    "osm_id":26008116,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "594":{
+    "name":"Galerie Lafayette Maison \/ Gourmet",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.8730326,
+      2.3306871
+    ],
+    "osm_type":"way",
+    "osm_id":69224027,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "595":{
+    "name":"Printemps",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.8738744,
+      2.3290548
+    ],
+    "osm_type":"way",
+    "osm_id":69224137,
+    "attractiveness":20,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "596":{
+    "name":"Marché Saint-Honoré",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.8670006,
+      2.3317785
+    ],
+    "osm_type":"way",
+    "osm_id":54155008,
+    "attractiveness":7,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "597":{
+    "name":"Passage du Grand-Cerf",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.8648328,
+      2.3493274
+    ],
+    "osm_type":"way",
+    "osm_id":54970437,
+    "attractiveness":8,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "598":{
+    "name":"Centre Commercial Émile Dubois",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.9152909,
+      2.4027961
+    ],
+    "osm_type":"way",
+    "osm_id":73004279,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "599":{
+    "name":"Bistrot des rosiers",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.902197,
+      2.3421451
+    ],
+    "osm_type":"way",
+    "osm_id":73835282,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "600":{
+    "name":"Marché Dauphine",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.9018063,
+      2.341632
+    ],
+    "osm_type":"way",
+    "osm_id":73836239,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "601":{
+    "name":"Marché Malassis",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.9016795,
+      2.3421091
+    ],
+    "osm_type":"way",
+    "osm_id":73838196,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  },
+  "602":{
+    "name":"Marché Malik",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.901541,
+      2.3400264
+    ],
+    "osm_type":"way",
+    "osm_id":73839906,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "603":{
+    "name":"Centre Commercial de la Grande Porte",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.855103,
+      2.4162425
+    ],
+    "osm_type":"way",
+    "osm_id":81767599,
+    "attractiveness":4,
+    "must_do":false,
+    "n_tags":4,
+    "time_to_reach":0
+  },
+  "604":{
+    "name":"Avenir",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.9197328,
+      2.4219237
+    ],
+    "osm_type":"way",
+    "osm_id":84437363,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "605":{
+    "name":"Marques Avenue",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.9225096,
+      2.3303125
+    ],
+    "osm_type":"way",
+    "osm_id":434347031,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "606":{
+    "name":"Qwartz",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.92563,
+      2.3290174
+    ],
+    "osm_type":"way",
+    "osm_id":843953196,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "607":{
+    "name":"Galerie Hoche",
+    "type":{
+      "landmark_type":"shopping"
+    },
+    "location":[
+      48.8908975,
+      2.4039477
+    ],
+    "osm_type":"relation",
+    "osm_id":1132674,
+    "attractiveness":5,
+    "must_do":false,
+    "n_tags":5,
+    "time_to_reach":0
+  }
+}
\ No newline at end of file
diff --git a/minor_landmarks.txt b/minor_landmarks.txt
new file mode 100644
index 0000000..8c3f4ab
--- /dev/null
+++ b/minor_landmarks.txt
@@ -0,0 +1,482 @@
+{
+  "0":{
+    "name":"Atelier Brancusi",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8614029,
+      2.3519903
+    ],
+    "osm_type":"way",
+    "osm_id":55503399,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "1":{
+    "name":"Musée de Cluny",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8506604,
+      2.3437398
+    ],
+    "osm_type":"way",
+    "osm_id":56640163,
+    "attractiveness":18,
+    "must_do":false,
+    "n_tags":18,
+    "time_to_reach":0
+  },
+  "2":{
+    "name":"Musée du Luxembourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8485965,
+      2.3340156
+    ],
+    "osm_type":"way",
+    "osm_id":170226810,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "3":{
+    "name":"Musée national Eugène Delacroix",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8546662,
+      2.3353836
+    ],
+    "osm_type":"way",
+    "osm_id":395785603,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "4":{
+    "name":"Hôtel de Sully",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.854635,
+      2.3638126
+    ],
+    "osm_type":"relation",
+    "osm_id":403146,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":13,
+    "time_to_reach":0
+  },
+  "5":{
+    "name":"Hôtel de la Monnaie",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.856403,
+      2.3388625
+    ],
+    "osm_type":"relation",
+    "osm_id":967664,
+    "attractiveness":11,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "6":{
+    "name":"Musée Bourdelle",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8432078,
+      2.3186583
+    ],
+    "osm_type":"relation",
+    "osm_id":1212876,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "7":{
+    "name":"Musée Carnavalet",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8576819,
+      2.3627147
+    ],
+    "osm_type":"relation",
+    "osm_id":2405955,
+    "attractiveness":25,
+    "must_do":false,
+    "n_tags":25,
+    "time_to_reach":0
+  },
+  "8":{
+    "name":"Pont Neuf",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8565248,
+      2.3408132
+    ],
+    "osm_type":"way",
+    "osm_id":53574149,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "9":{
+    "name":"Jardin du Luxembourg",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8467137,
+      2.3363649
+    ],
+    "osm_type":"way",
+    "osm_id":128206209,
+    "attractiveness":35,
+    "must_do":false,
+    "n_tags":23,
+    "time_to_reach":0
+  },
+  "10":{
+    "name":"Cathédrale Notre-Dame de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8529372,
+      2.3498701
+    ],
+    "osm_type":"way",
+    "osm_id":201611261,
+    "attractiveness":55,
+    "must_do":false,
+    "n_tags":54,
+    "time_to_reach":0
+  },
+  "11":{
+    "name":"Maison à l'enseigne du Faucheur",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8558553,
+      2.3568266
+    ],
+    "osm_type":"way",
+    "osm_id":1123456865,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "12":{
+    "name":"Maison à l'enseigne du Mouton",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8558431,
+      2.3568914
+    ],
+    "osm_type":"way",
+    "osm_id":1123456866,
+    "attractiveness":13,
+    "must_do":false,
+    "n_tags":11,
+    "time_to_reach":0
+  },
+  "13":{
+    "name":"Palais de Justice de Paris",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8556537,
+      2.3446072
+    ],
+    "osm_type":"relation",
+    "osm_id":536982,
+    "attractiveness":24,
+    "must_do":false,
+    "n_tags":24,
+    "time_to_reach":0
+  },
+  "14":{
+    "name":"Mémorial des Martyrs de la Déportation",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8517365,
+      2.3524734
+    ],
+    "osm_type":"relation",
+    "osm_id":9396191,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "15":{
+    "name":"Fontaine des Innocents",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8606368,
+      2.3480233
+    ],
+    "osm_type":"way",
+    "osm_id":52469222,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "16":{
+    "name":"Hôtel de Sens",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8535257,
+      2.3588733
+    ],
+    "osm_type":"way",
+    "osm_id":55541122,
+    "attractiveness":21,
+    "must_do":false,
+    "n_tags":20,
+    "time_to_reach":0
+  },
+  "17":{
+    "name":"Hôtel d'Ourscamp",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8555465,
+      2.3571206
+    ],
+    "osm_type":"way",
+    "osm_id":55620201,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":9,
+    "time_to_reach":0
+  },
+  "18":{
+    "name":"Hôtel de Choiseul-Praslin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8478008,
+      2.3203873
+    ],
+    "osm_type":"way",
+    "osm_id":65756922,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "19":{
+    "name":"Chapelle Notre-Dame-des-Anges",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8462836,
+      2.3235558
+    ],
+    "osm_type":"way",
+    "osm_id":219378497,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "20":{
+    "name":"Fontaine du Palmier",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8575005,
+      2.3472864
+    ],
+    "osm_type":"way",
+    "osm_id":261092850,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":14,
+    "time_to_reach":0
+  },
+  "21":{
+    "name":"Église Saint-Séverin",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8520913,
+      2.3457237
+    ],
+    "osm_type":"way",
+    "osm_id":19740659,
+    "attractiveness":15,
+    "must_do":false,
+    "n_tags":25,
+    "time_to_reach":0
+  },
+  "22":{
+    "name":"Église Orthodoxe Roumaine des Saints Archanges",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.849488,
+      2.3471975
+    ],
+    "osm_type":"way",
+    "osm_id":55366403,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":16,
+    "time_to_reach":0
+  },
+  "23":{
+    "name":"Église Saint-Merri",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8590777,
+      2.3508448
+    ],
+    "osm_type":"way",
+    "osm_id":55742120,
+    "attractiveness":16,
+    "must_do":false,
+    "n_tags":26,
+    "time_to_reach":0
+  },
+  "24":{
+    "name":"Église Saint-Germain des Prés",
+    "type":{
+      "landmark_type":"sightseeing"
+    },
+    "location":[
+      48.8539667,
+      2.334463
+    ],
+    "osm_type":"way",
+    "osm_id":62287173,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":21,
+    "time_to_reach":0
+  },
+  "25":{
+    "name":"Square de la Tour Saint-Jacques",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.857913,
+      2.3487608
+    ],
+    "osm_type":"way",
+    "osm_id":15895172,
+    "attractiveness":19,
+    "must_do":false,
+    "n_tags":12,
+    "time_to_reach":0
+  },
+  "26":{
+    "name":"Square Jean XXIII",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8523775,
+      2.3503406
+    ],
+    "osm_type":"way",
+    "osm_id":20444455,
+    "attractiveness":23,
+    "must_do":false,
+    "n_tags":15,
+    "time_to_reach":0
+  },
+  "27":{
+    "name":"Square Félix Desruelles",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8536974,
+      2.3345069
+    ],
+    "osm_type":"way",
+    "osm_id":62287123,
+    "attractiveness":12,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  },
+  "28":{
+    "name":"Jardin des Rosiers – Joseph-Migneret",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8572946,
+      2.3602516
+    ],
+    "osm_type":"way",
+    "osm_id":365878540,
+    "attractiveness":14,
+    "must_do":false,
+    "n_tags":8,
+    "time_to_reach":0
+  },
+  "29":{
+    "name":"Jardin du Père-Armand-David",
+    "type":{
+      "landmark_type":"nature"
+    },
+    "location":[
+      48.8478674,
+      2.3220972
+    ],
+    "osm_type":"way",
+    "osm_id":588324415,
+    "attractiveness":10,
+    "must_do":false,
+    "n_tags":7,
+    "time_to_reach":0
+  }
+}
\ No newline at end of file