Skip to content

Instantly share code, notes, and snippets.

@1kastner
Last active January 4, 2019 14:20
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 1kastner/bcdc96256c7d6e809e3409d6ab39e73f to your computer and use it in GitHub Desktop.
Save 1kastner/bcdc96256c7d6e809e3409d6ab39e73f to your computer and use it in GitHub Desktop.
map matching with jupyter
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import requests\n",
"import folium"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# The endpoint of https://github.com/graphhopper/map-matching\n",
"url = \"http://192.168.99.100:8989/\""
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Taken from their tests of the core package\n",
"with open(\"test1.gpx\", \"rb\") as f:\n",
" data = f.read()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'hints': {},\n",
" 'info': {'copyrights': ['GraphHopper', 'OpenStreetMap contributors'],\n",
" 'took': 188},\n",
" 'map_matching': {'distance': 9536.535704856617,\n",
" 'original_distance': 9551.637624357121,\n",
" 'original_time': 796000,\n",
" 'time': 788371},\n",
" 'paths': [{'ascend': 0.0,\n",
" 'bbox': [12.338216, 51.323392, 12.388536, 51.377719],\n",
" 'descend': 0.0,\n",
" 'details': {},\n",
" 'distance': 9536.536,\n",
" 'instructions': [{'distance': 101.037,\n",
" 'heading': 139.27,\n",
" 'interval': [0, 1],\n",
" 'sign': 0,\n",
" 'street_name': 'Fučikstraße',\n",
" 'text': 'Continue onto Fučikstraße',\n",
" 'time': 14549},\n",
" {'distance': 86.728,\n",
" 'interval': [1, 2],\n",
" 'sign': -2,\n",
" 'street_name': 'Chamissoweg',\n",
" 'text': 'Turn left onto Chamissoweg',\n",
" 'time': 20813},\n",
" {'distance': 201.138,\n",
" 'interval': [2, 4],\n",
" 'sign': 2,\n",
" 'street_name': 'Swiftstraße',\n",
" 'text': 'Turn right onto Swiftstraße',\n",
" 'time': 28962},\n",
" {'distance': 101.407,\n",
" 'interval': [4, 5],\n",
" 'sign': -2,\n",
" 'street_name': 'Defoestraße',\n",
" 'text': 'Turn left onto Defoestraße',\n",
" 'time': 14602},\n",
" {'distance': 78.224,\n",
" 'interval': [5, 7],\n",
" 'sign': 2,\n",
" 'street_name': 'Defoestraße',\n",
" 'text': 'Turn right onto Defoestraße',\n",
" 'time': 11264},\n",
" {'distance': 54.449,\n",
" 'interval': [7, 10],\n",
" 'sign': -1,\n",
" 'street_name': '',\n",
" 'text': 'Turn slight left',\n",
" 'time': 7840},\n",
" {'distance': 27.859,\n",
" 'interval': [10, 12],\n",
" 'sign': -1,\n",
" 'street_name': 'Verlängerte Max-Liebermann-Straße',\n",
" 'text': 'Turn slight left onto Verlängerte Max-Liebermann-Straße',\n",
" 'time': 3342},\n",
" {'distance': 1197.684,\n",
" 'interval': [12, 26],\n",
" 'sign': -2,\n",
" 'street_name': 'B 6',\n",
" 'text': 'Turn left onto B 6',\n",
" 'time': 95803},\n",
" {'distance': 420.406,\n",
" 'interval': [26, 29],\n",
" 'sign': 2,\n",
" 'street_name': 'Landsberger Straße',\n",
" 'text': 'Turn right onto Landsberger Straße',\n",
" 'time': 33631},\n",
" {'distance': 1292.189,\n",
" 'interval': [29, 39],\n",
" 'sign': 7,\n",
" 'street_name': 'Breitenfelder Straße',\n",
" 'text': 'Keep right onto Breitenfelder Straße',\n",
" 'time': 86618},\n",
" {'distance': 97.66,\n",
" 'interval': [39, 41],\n",
" 'sign': -2,\n",
" 'street_name': 'Möckernsche Straße',\n",
" 'text': 'Turn left onto Möckernsche Straße',\n",
" 'time': 5857},\n",
" {'distance': 120.516,\n",
" 'interval': [41, 42],\n",
" 'sign': 2,\n",
" 'street_name': 'Menckestraße',\n",
" 'text': 'Turn right onto Menckestraße',\n",
" 'time': 7229},\n",
" {'distance': 390.549,\n",
" 'interval': [42, 52],\n",
" 'sign': 2,\n",
" 'street_name': 'Platnerstraße',\n",
" 'text': 'Turn right onto Platnerstraße',\n",
" 'time': 31238},\n",
" {'distance': 3397.855,\n",
" 'interval': [52, 91],\n",
" 'sign': 1,\n",
" 'street_name': 'Waldstraße',\n",
" 'text': 'Turn slight right onto Waldstraße',\n",
" 'time': 246944},\n",
" {'distance': 159.832,\n",
" 'interval': [91, 93],\n",
" 'sign': 3,\n",
" 'street_name': '',\n",
" 'text': 'Turn sharp right',\n",
" 'time': 9588},\n",
" {'distance': 279.687,\n",
" 'interval': [93, 99],\n",
" 'sign': -3,\n",
" 'street_name': 'Dimitroffstraße',\n",
" 'text': 'Turn sharp left onto Dimitroffstraße',\n",
" 'time': 28915},\n",
" {'distance': 336.651,\n",
" 'interval': [99, 103],\n",
" 'sign': 0,\n",
" 'street_name': 'Windmühlenstraße',\n",
" 'text': 'Continue onto Windmühlenstraße',\n",
" 'time': 20392},\n",
" {'distance': 134.473,\n",
" 'interval': [103, 105],\n",
" 'sign': -7,\n",
" 'street_name': 'Bayrischer Platz',\n",
" 'text': 'Keep left onto Bayrischer Platz',\n",
" 'time': 8063},\n",
" {'distance': 653.499,\n",
" 'interval': [105, 109],\n",
" 'sign': 7,\n",
" 'street_name': '',\n",
" 'text': 'Keep right',\n",
" 'time': 49361},\n",
" {'distance': 263.356,\n",
" 'interval': [109, 110],\n",
" 'sign': 2,\n",
" 'street_name': 'Tarostraße',\n",
" 'text': 'Turn right onto Tarostraße',\n",
" 'time': 37920},\n",
" {'distance': 141.338,\n",
" 'interval': [110, 111],\n",
" 'sign': -2,\n",
" 'street_name': '',\n",
" 'text': 'Turn left',\n",
" 'time': 25440},\n",
" {'distance': 0.0,\n",
" 'interval': [111, 111],\n",
" 'last_heading': 136.30665946162284,\n",
" 'sign': 4,\n",
" 'street_name': '',\n",
" 'text': 'Arrive at destination',\n",
" 'time': 0}],\n",
" 'legs': [],\n",
" 'points': {'coordinates': [[12.338216, 51.377719],\n",
" [12.339166, 51.37703],\n",
" [12.340111, 51.37754],\n",
" [12.341925, 51.376201],\n",
" [12.34196, 51.376151],\n",
" [12.343399, 51.376307],\n",
" [12.343556, 51.37578],\n",
" [12.343643, 51.375622],\n",
" [12.343764, 51.375506],\n",
" [12.343848, 51.375355],\n",
" [12.343876, 51.375164],\n",
" [12.344031, 51.375076],\n",
" [12.344148, 51.374982],\n",
" [12.344398, 51.375052],\n",
" [12.344794, 51.375107],\n",
" [12.345283, 51.375131],\n",
" [12.348323, 51.375154],\n",
" [12.351258, 51.375125],\n",
" [12.35189, 51.375099],\n",
" [12.35544, 51.374812],\n",
" [12.356067, 51.374745],\n",
" [12.356582, 51.37472],\n",
" [12.356792, 51.37474],\n",
" [12.358829, 51.375145],\n",
" [12.359605, 51.375268],\n",
" [12.360986, 51.375533],\n",
" [12.361132, 51.375545],\n",
" [12.361695, 51.374787],\n",
" [12.362122, 51.374264],\n",
" [12.363737, 51.372132],\n",
" [12.363827, 51.371885],\n",
" [12.363786, 51.371639],\n",
" [12.363795, 51.371482],\n",
" [12.363388, 51.369786],\n",
" [12.362914, 51.368093],\n",
" [12.362682, 51.367372],\n",
" [12.361727, 51.363923],\n",
" [12.361284, 51.362183],\n",
" [12.360879, 51.360749],\n",
" [12.360834, 51.360679],\n",
" [12.361739, 51.360264],\n",
" [12.361993, 51.360187],\n",
" [12.362416, 51.359136],\n",
" [12.361711, 51.358976],\n",
" [12.360345, 51.358707],\n",
" [12.359995, 51.358549],\n",
" [12.359702, 51.358335],\n",
" [12.359564, 51.358258],\n",
" [12.3595, 51.358162],\n",
" [12.359328, 51.357708],\n",
" [12.359087, 51.357163],\n",
" [12.359044, 51.357103],\n",
" [12.358949, 51.356829],\n",
" [12.358516, 51.356551],\n",
" [12.358027, 51.356294],\n",
" [12.357519, 51.356079],\n",
" [12.354217, 51.354801],\n",
" [12.353906, 51.354668],\n",
" [12.353522, 51.354421],\n",
" [12.353304, 51.354205],\n",
" [12.353181, 51.354018],\n",
" [12.353099, 51.353811],\n",
" [12.353069, 51.353506],\n",
" [12.353257, 51.352489],\n",
" [12.353448, 51.351629],\n",
" [12.353501, 51.351471],\n",
" [12.353672, 51.351219],\n",
" [12.353977, 51.350927],\n",
" [12.354401, 51.350558],\n",
" [12.354503, 51.350445],\n",
" [12.354616, 51.350273],\n",
" [12.354881, 51.349746],\n",
" [12.358783, 51.342721],\n",
" [12.358793, 51.342638],\n",
" [12.358622, 51.342214],\n",
" [12.358607, 51.342088],\n",
" [12.35864, 51.341959],\n",
" [12.358691, 51.341878],\n",
" [12.358794, 51.341757],\n",
" [12.360582, 51.340299],\n",
" [12.361567, 51.339584],\n",
" [12.361631, 51.339477],\n",
" [12.362388, 51.338925],\n",
" [12.362696, 51.338751],\n",
" [12.366307, 51.336101],\n",
" [12.367938, 51.334953],\n",
" [12.368124, 51.334852],\n",
" [12.368377, 51.334776],\n",
" [12.368643, 51.334741],\n",
" [12.370922, 51.335069],\n",
" [12.372824, 51.335417],\n",
" [12.374199, 51.335576],\n",
" [12.374153, 51.335488],\n",
" [12.373898, 51.334152],\n",
" [12.374258, 51.334222],\n",
" [12.37524, 51.33423],\n",
" [12.375507, 51.33418],\n",
" [12.37599, 51.333724],\n",
" [12.376465, 51.333378],\n",
" [12.377026, 51.333037],\n",
" [12.378219, 51.332314],\n",
" [12.378974, 51.331832],\n",
" [12.379146, 51.331699],\n",
" [12.380444, 51.330893],\n",
" [12.381047, 51.330519],\n",
" [12.381873, 51.330078],\n",
" [12.382513, 51.329748],\n",
" [12.383257, 51.329312],\n",
" [12.38365, 51.329114],\n",
" [12.388536, 51.325938],\n",
" [12.385793, 51.324304],\n",
" [12.38721, 51.323392]],\n",
" 'type': 'LineString'},\n",
" 'points_encoded': False,\n",
" 'snapped_waypoints': {'coordinates': [], 'type': 'LineString'},\n",
" 'time': 788371,\n",
" 'transfers': 0,\n",
" 'weight': 9223372036854.775}]}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# let's peak into the matched result\n",
"response = requests.post(url + \"match?vehicle=car&points_encoded=false\", headers={'Content-type': 'application/gpx+xml'}, data=data)\n",
"response.json()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[[12.338216, 51.377719],\n",
" [12.339166, 51.37703],\n",
" [12.340111, 51.37754],\n",
" [12.341925, 51.376201],\n",
" [12.34196, 51.376151],\n",
" [12.343399, 51.376307],\n",
" [12.343556, 51.37578],\n",
" [12.343643, 51.375622],\n",
" [12.343764, 51.375506],\n",
" [12.343848, 51.375355],\n",
" [12.343876, 51.375164],\n",
" [12.344031, 51.375076],\n",
" [12.344148, 51.374982],\n",
" [12.344398, 51.375052],\n",
" [12.344794, 51.375107],\n",
" [12.345283, 51.375131],\n",
" [12.348323, 51.375154],\n",
" [12.351258, 51.375125],\n",
" [12.35189, 51.375099],\n",
" [12.35544, 51.374812],\n",
" [12.356067, 51.374745],\n",
" [12.356582, 51.37472],\n",
" [12.356792, 51.37474],\n",
" [12.358829, 51.375145],\n",
" [12.359605, 51.375268],\n",
" [12.360986, 51.375533],\n",
" [12.361132, 51.375545],\n",
" [12.361695, 51.374787],\n",
" [12.362122, 51.374264],\n",
" [12.363737, 51.372132],\n",
" [12.363827, 51.371885],\n",
" [12.363786, 51.371639],\n",
" [12.363795, 51.371482],\n",
" [12.363388, 51.369786],\n",
" [12.362914, 51.368093],\n",
" [12.362682, 51.367372],\n",
" [12.361727, 51.363923],\n",
" [12.361284, 51.362183],\n",
" [12.360879, 51.360749],\n",
" [12.360834, 51.360679],\n",
" [12.361739, 51.360264],\n",
" [12.361993, 51.360187],\n",
" [12.362416, 51.359136],\n",
" [12.361711, 51.358976],\n",
" [12.360345, 51.358707],\n",
" [12.359995, 51.358549],\n",
" [12.359702, 51.358335],\n",
" [12.359564, 51.358258],\n",
" [12.3595, 51.358162],\n",
" [12.359328, 51.357708],\n",
" [12.359087, 51.357163],\n",
" [12.359044, 51.357103],\n",
" [12.358949, 51.356829],\n",
" [12.358516, 51.356551],\n",
" [12.358027, 51.356294],\n",
" [12.357519, 51.356079],\n",
" [12.354217, 51.354801],\n",
" [12.353906, 51.354668],\n",
" [12.353522, 51.354421],\n",
" [12.353304, 51.354205],\n",
" [12.353181, 51.354018],\n",
" [12.353099, 51.353811],\n",
" [12.353069, 51.353506],\n",
" [12.353257, 51.352489],\n",
" [12.353448, 51.351629],\n",
" [12.353501, 51.351471],\n",
" [12.353672, 51.351219],\n",
" [12.353977, 51.350927],\n",
" [12.354401, 51.350558],\n",
" [12.354503, 51.350445],\n",
" [12.354616, 51.350273],\n",
" [12.354881, 51.349746],\n",
" [12.358783, 51.342721],\n",
" [12.358793, 51.342638],\n",
" [12.358622, 51.342214],\n",
" [12.358607, 51.342088],\n",
" [12.35864, 51.341959],\n",
" [12.358691, 51.341878],\n",
" [12.358794, 51.341757],\n",
" [12.360582, 51.340299],\n",
" [12.361567, 51.339584],\n",
" [12.361631, 51.339477],\n",
" [12.362388, 51.338925],\n",
" [12.362696, 51.338751],\n",
" [12.366307, 51.336101],\n",
" [12.367938, 51.334953],\n",
" [12.368124, 51.334852],\n",
" [12.368377, 51.334776],\n",
" [12.368643, 51.334741],\n",
" [12.370922, 51.335069],\n",
" [12.372824, 51.335417],\n",
" [12.374199, 51.335576],\n",
" [12.374153, 51.335488],\n",
" [12.373898, 51.334152],\n",
" [12.374258, 51.334222],\n",
" [12.37524, 51.33423],\n",
" [12.375507, 51.33418],\n",
" [12.37599, 51.333724],\n",
" [12.376465, 51.333378],\n",
" [12.377026, 51.333037],\n",
" [12.378219, 51.332314],\n",
" [12.378974, 51.331832],\n",
" [12.379146, 51.331699],\n",
" [12.380444, 51.330893],\n",
" [12.381047, 51.330519],\n",
" [12.381873, 51.330078],\n",
" [12.382513, 51.329748],\n",
" [12.383257, 51.329312],\n",
" [12.38365, 51.329114],\n",
" [12.388536, 51.325938],\n",
" [12.385793, 51.324304],\n",
" [12.38721, 51.323392]]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# extract coordinates for folium\n",
"inversed_coordinates = response.json()['paths'][0]['points']['coordinates']\n",
"inversed_coordinates"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgPHNjcmlwdD5MX1BSRUZFUl9DQU5WQVMgPSBmYWxzZTsgTF9OT19UT1VDSCA9IGZhbHNlOyBMX0RJU0FCTEVfM0QgPSBmYWxzZTs8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjExLjEvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvanMvYm9vdHN0cmFwLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvTGVhZmxldC5hd2Vzb21lLW1hcmtlcnMvMi4wLjIvbGVhZmxldC5hd2Vzb21lLW1hcmtlcnMuanMiPjwvc2NyaXB0PgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL2xlYWZsZXRAMS4yLjAvZGlzdC9sZWFmbGV0LmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9ib290c3RyYXAvMy4yLjAvY3NzL2Jvb3RzdHJhcC10aGVtZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNi4zL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9yYXdnaXQuY29tL3B5dGhvbi12aXN1YWxpemF0aW9uL2ZvbGl1bS9tYXN0ZXIvZm9saXVtL3RlbXBsYXRlcy9sZWFmbGV0LmF3ZXNvbWUucm90YXRlLmNzcyIvPgogICAgPHN0eWxlPmh0bWwsIGJvZHkge3dpZHRoOiAxMDAlO2hlaWdodDogMTAwJTttYXJnaW46IDA7cGFkZGluZzogMDt9PC9zdHlsZT4KICAgIDxzdHlsZT4jbWFwIHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDtyaWdodDowO2xlZnQ6MDt9PC9zdHlsZT4KICAgIAogICAgICAgICAgICA8c3R5bGU+ICNtYXBfZDM1NGFhMzRhZGUzNDExYmEyM2VkMDdhZjA0YTA4ZDQgewogICAgICAgICAgICAgICAgcG9zaXRpb24gOiByZWxhdGl2ZTsKICAgICAgICAgICAgICAgIHdpZHRoIDogMTAwLjAlOwogICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICBsZWZ0OiAwLjAlOwogICAgICAgICAgICAgICAgdG9wOiAwLjAlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICA8L3N0eWxlPgogICAgICAgIAo8L2hlYWQ+Cjxib2R5PiAgICAKICAgIAogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb2xpdW0tbWFwIiBpZD0ibWFwX2QzNTRhYTM0YWRlMzQxMWJhMjNlZDA3YWYwNGEwOGQ0IiA+PC9kaXY+CiAgICAgICAgCjwvYm9keT4KPHNjcmlwdD4gICAgCiAgICAKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGJvdW5kcyA9IG51bGw7CiAgICAgICAgICAgIAoKICAgICAgICAgICAgdmFyIG1hcF9kMzU0YWEzNGFkZTM0MTFiYTIzZWQwN2FmMDRhMDhkNCA9IEwubWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcF9kMzU0YWEzNGFkZTM0MTFiYTIzZWQwN2FmMDRhMDhkNCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y2VudGVyOiBbNTEuMzU0ODAxLDEyLjM1NDIxN10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6b29tOiAxMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heEJvdW5kczogYm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJzOiBbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmxkQ29weUp1bXA6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JzOiBMLkNSUy5FUFNHMzg1NwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIHRpbGVfbGF5ZXJfYmRkYmQ4ZmUyN2E2NDFkZTk3NTNhOTM2NjVjNTg2YjQgPSBMLnRpbGVMYXllcigKICAgICAgICAgICAgICAgICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCiAgICAgICAgICAgICAgICB7CiAgImF0dHJpYnV0aW9uIjogbnVsbCwKICAiZGV0ZWN0UmV0aW5hIjogZmFsc2UsCiAgIm1heFpvb20iOiAxOCwKICAibWluWm9vbSI6IDEsCiAgIm5vV3JhcCI6IGZhbHNlLAogICJzdWJkb21haW5zIjogImFiYyIKfQogICAgICAgICAgICAgICAgKS5hZGRUbyhtYXBfZDM1NGFhMzRhZGUzNDExYmEyM2VkMDdhZjA0YTA4ZDQpOwogICAgICAgIAogICAgCiAgICAgICAgICAgICAgICB2YXIgcG9seV9saW5lXzExMDE3NjFjYTZmNTRjNmM5YTI4NTc2Y2FmNzgxMjFjID0gTC5wb2x5bGluZSgKICAgICAgICAgICAgICAgICAgICBbWzUxLjM3NzcxOSwgMTIuMzM4MjE2XSwgWzUxLjM3NzAzLCAxMi4zMzkxNjZdLCBbNTEuMzc3NTQsIDEyLjM0MDExMV0sIFs1MS4zNzYyMDEsIDEyLjM0MTkyNV0sIFs1MS4zNzYxNTEsIDEyLjM0MTk2XSwgWzUxLjM3NjMwNywgMTIuMzQzMzk5XSwgWzUxLjM3NTc4LCAxMi4zNDM1NTZdLCBbNTEuMzc1NjIyLCAxMi4zNDM2NDNdLCBbNTEuMzc1NTA2LCAxMi4zNDM3NjRdLCBbNTEuMzc1MzU1LCAxMi4zNDM4NDhdLCBbNTEuMzc1MTY0LCAxMi4zNDM4NzZdLCBbNTEuMzc1MDc2LCAxMi4zNDQwMzFdLCBbNTEuMzc0OTgyLCAxMi4zNDQxNDhdLCBbNTEuMzc1MDUyLCAxMi4zNDQzOThdLCBbNTEuMzc1MTA3LCAxMi4zNDQ3OTRdLCBbNTEuMzc1MTMxLCAxMi4zNDUyODNdLCBbNTEuMzc1MTU0LCAxMi4zNDgzMjNdLCBbNTEuMzc1MTI1LCAxMi4zNTEyNThdLCBbNTEuMzc1MDk5LCAxMi4zNTE4OV0sIFs1MS4zNzQ4MTIsIDEyLjM1NTQ0XSwgWzUxLjM3NDc0NSwgMTIuMzU2MDY3XSwgWzUxLjM3NDcyLCAxMi4zNTY1ODJdLCBbNTEuMzc0NzQsIDEyLjM1Njc5Ml0sIFs1MS4zNzUxNDUsIDEyLjM1ODgyOV0sIFs1MS4zNzUyNjgsIDEyLjM1OTYwNV0sIFs1MS4zNzU1MzMsIDEyLjM2MDk4Nl0sIFs1MS4zNzU1NDUsIDEyLjM2MTEzMl0sIFs1MS4zNzQ3ODcsIDEyLjM2MTY5NV0sIFs1MS4zNzQyNjQsIDEyLjM2MjEyMl0sIFs1MS4zNzIxMzIsIDEyLjM2MzczN10sIFs1MS4zNzE4ODUsIDEyLjM2MzgyN10sIFs1MS4zNzE2MzksIDEyLjM2Mzc4Nl0sIFs1MS4zNzE0ODIsIDEyLjM2Mzc5NV0sIFs1MS4zNjk3ODYsIDEyLjM2MzM4OF0sIFs1MS4zNjgwOTMsIDEyLjM2MjkxNF0sIFs1MS4zNjczNzIsIDEyLjM2MjY4Ml0sIFs1MS4zNjM5MjMsIDEyLjM2MTcyN10sIFs1MS4zNjIxODMsIDEyLjM2MTI4NF0sIFs1MS4zNjA3NDksIDEyLjM2MDg3OV0sIFs1MS4zNjA2NzksIDEyLjM2MDgzNF0sIFs1MS4zNjAyNjQsIDEyLjM2MTczOV0sIFs1MS4zNjAxODcsIDEyLjM2MTk5M10sIFs1MS4zNTkxMzYsIDEyLjM2MjQxNl0sIFs1MS4zNTg5NzYsIDEyLjM2MTcxMV0sIFs1MS4zNTg3MDcsIDEyLjM2MDM0NV0sIFs1MS4zNTg1NDksIDEyLjM1OTk5NV0sIFs1MS4zNTgzMzUsIDEyLjM1OTcwMl0sIFs1MS4zNTgyNTgsIDEyLjM1OTU2NF0sIFs1MS4zNTgxNjIsIDEyLjM1OTVdLCBbNTEuMzU3NzA4LCAxMi4zNTkzMjhdLCBbNTEuMzU3MTYzLCAxMi4zNTkwODddLCBbNTEuMzU3MTAzLCAxMi4zNTkwNDRdLCBbNTEuMzU2ODI5LCAxMi4zNTg5NDldLCBbNTEuMzU2NTUxLCAxMi4zNTg1MTZdLCBbNTEuMzU2Mjk0LCAxMi4zNTgwMjddLCBbNTEuMzU2MDc5LCAxMi4zNTc1MTldLCBbNTEuMzU0ODAxLCAxMi4zNTQyMTddLCBbNTEuMzU0NjY4LCAxMi4zNTM5MDZdLCBbNTEuMzU0NDIxLCAxMi4zNTM1MjJdLCBbNTEuMzU0MjA1LCAxMi4zNTMzMDRdLCBbNTEuMzU0MDE4LCAxMi4zNTMxODFdLCBbNTEuMzUzODExLCAxMi4zNTMwOTldLCBbNTEuMzUzNTA2LCAxMi4zNTMwNjldLCBbNTEuMzUyNDg5LCAxMi4zNTMyNTddLCBbNTEuMzUxNjI5LCAxMi4zNTM0NDhdLCBbNTEuMzUxNDcxLCAxMi4zNTM1MDFdLCBbNTEuMzUxMjE5LCAxMi4zNTM2NzJdLCBbNTEuMzUwOTI3LCAxMi4zNTM5NzddLCBbNTEuMzUwNTU4LCAxMi4zNTQ0MDFdLCBbNTEuMzUwNDQ1LCAxMi4zNTQ1MDNdLCBbNTEuMzUwMjczLCAxMi4zNTQ2MTZdLCBbNTEuMzQ5NzQ2LCAxMi4zNTQ4ODFdLCBbNTEuMzQyNzIxLCAxMi4zNTg3ODNdLCBbNTEuMzQyNjM4LCAxMi4zNTg3OTNdLCBbNTEuMzQyMjE0LCAxMi4zNTg2MjJdLCBbNTEuMzQyMDg4LCAxMi4zNTg2MDddLCBbNTEuMzQxOTU5LCAxMi4zNTg2NF0sIFs1MS4zNDE4NzgsIDEyLjM1ODY5MV0sIFs1MS4zNDE3NTcsIDEyLjM1ODc5NF0sIFs1MS4zNDAyOTksIDEyLjM2MDU4Ml0sIFs1MS4zMzk1ODQsIDEyLjM2MTU2N10sIFs1MS4zMzk0NzcsIDEyLjM2MTYzMV0sIFs1MS4zMzg5MjUsIDEyLjM2MjM4OF0sIFs1MS4zMzg3NTEsIDEyLjM2MjY5Nl0sIFs1MS4zMzYxMDEsIDEyLjM2NjMwN10sIFs1MS4zMzQ5NTMsIDEyLjM2NzkzOF0sIFs1MS4zMzQ4NTIsIDEyLjM2ODEyNF0sIFs1MS4zMzQ3NzYsIDEyLjM2ODM3N10sIFs1MS4zMzQ3NDEsIDEyLjM2ODY0M10sIFs1MS4zMzUwNjksIDEyLjM3MDkyMl0sIFs1MS4zMzU0MTcsIDEyLjM3MjgyNF0sIFs1MS4zMzU1NzYsIDEyLjM3NDE5OV0sIFs1MS4zMzU0ODgsIDEyLjM3NDE1M10sIFs1MS4zMzQxNTIsIDEyLjM3Mzg5OF0sIFs1MS4zMzQyMjIsIDEyLjM3NDI1OF0sIFs1MS4zMzQyMywgMTIuMzc1MjRdLCBbNTEuMzM0MTgsIDEyLjM3NTUwN10sIFs1MS4zMzM3MjQsIDEyLjM3NTk5XSwgWzUxLjMzMzM3OCwgMTIuMzc2NDY1XSwgWzUxLjMzMzAzNywgMTIuMzc3MDI2XSwgWzUxLjMzMjMxNCwgMTIuMzc4MjE5XSwgWzUxLjMzMTgzMiwgMTIuMzc4OTc0XSwgWzUxLjMzMTY5OSwgMTIuMzc5MTQ2XSwgWzUxLjMzMDg5MywgMTIuMzgwNDQ0XSwgWzUxLjMzMDUxOSwgMTIuMzgxMDQ3XSwgWzUxLjMzMDA3OCwgMTIuMzgxODczXSwgWzUxLjMyOTc0OCwgMTIuMzgyNTEzXSwgWzUxLjMyOTMxMiwgMTIuMzgzMjU3XSwgWzUxLjMyOTExNCwgMTIuMzgzNjVdLCBbNTEuMzI1OTM4LCAxMi4zODg1MzZdLCBbNTEuMzI0MzA0LCAxMi4zODU3OTNdLCBbNTEuMzIzMzkyLCAxMi4zODcyMV1dLAogICAgICAgICAgICAgICAgICAgIHsKICAiYnViYmxpbmdNb3VzZUV2ZW50cyI6IHRydWUsCiAgImNvbG9yIjogIiMzMzg4ZmYiLAogICJkYXNoQXJyYXkiOiBudWxsLAogICJkYXNoT2Zmc2V0IjogbnVsbCwKICAiZmlsbCI6IGZhbHNlLAogICJmaWxsQ29sb3IiOiAiIzMzODhmZiIsCiAgImZpbGxPcGFjaXR5IjogMC4yLAogICJmaWxsUnVsZSI6ICJldmVub2RkIiwKICAibGluZUNhcCI6ICJyb3VuZCIsCiAgImxpbmVKb2luIjogInJvdW5kIiwKICAibm9DbGlwIjogZmFsc2UsCiAgIm9wYWNpdHkiOiAxLjAsCiAgInNtb290aEZhY3RvciI6IDEuMCwKICAic3Ryb2tlIjogdHJ1ZSwKICAid2VpZ2h0IjogOAp9KS5hZGRUbyhtYXBfZDM1NGFhMzRhZGUzNDExYmEyM2VkMDdhZjA0YTA4ZDQpOwogICAgICAgICAgICAKPC9zY3JpcHQ+\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
],
"text/plain": [
"<folium.folium.Map at 0x24bbb11f5c0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# plot them :)\n",
"coordinates = [(x, y) for (y, x) in inversed_coordinates]\n",
"m = folium.Map(coordinates[len(coordinates)//2], zoom_start=12)\n",
"folium.features.PolyLine(coordinates, weight=8).add_to(m)\n",
"m"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment