Skip to content

Instantly share code, notes, and snippets.

@saturnglave
Last active November 10, 2019 03:57
Show Gist options
  • Save saturnglave/00fb4a29d0c894f44702ef21771d7e1b to your computer and use it in GitHub Desktop.
Save saturnglave/00fb4a29d0c894f44702ef21771d7e1b to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#coding:utf-8\n",
"import folium\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [],
"source": [
"flags = pd.DataFrame({\n",
" 'number':['1_Kyoto','2_Одеса','3_Dayton','4_Istanbul','5_AbuDhabi','6_KualaLumpur','7_AzisAbeba','8_Loja','9_Amsterdam','10_SleepyHollow','11_Kodiak','12_Alexandria'],\n",
" 'latitude':[35.028309,46.469391,39.758949,41.015137,24.466667,3.140853,\n",
" 9.005401,-3.989038,52.377956,41.085651,57.790001,31.205753],\n",
" 'longtude':[135.753082,30.740883,-84.191605,28.979530,54.366669,101.693207,\n",
" 38.763611,-79.203560,4.897070,-73.858467,-152.407227,29.924526]\n",
"})"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>number</th>\n",
" <th>latitude</th>\n",
" <th>longtude</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>1_Kyoto</td>\n",
" <td>35.028309</td>\n",
" <td>135.753082</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>2_Одеса</td>\n",
" <td>46.469391</td>\n",
" <td>30.740883</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>3_Dayton</td>\n",
" <td>39.758949</td>\n",
" <td>-84.191605</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>4_Istanbul</td>\n",
" <td>41.015137</td>\n",
" <td>28.979530</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>5_AbuDhabi</td>\n",
" <td>24.466667</td>\n",
" <td>54.366669</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>6_KualaLumpur</td>\n",
" <td>3.140853</td>\n",
" <td>101.693207</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>7_AzisAbeba</td>\n",
" <td>9.005401</td>\n",
" <td>38.763611</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>8_Loja</td>\n",
" <td>-3.989038</td>\n",
" <td>-79.203560</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>9_Amsterdam</td>\n",
" <td>52.377956</td>\n",
" <td>4.897070</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>10_SleepyHollow</td>\n",
" <td>41.085651</td>\n",
" <td>-73.858467</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>11_Kodiak</td>\n",
" <td>57.790001</td>\n",
" <td>-152.407227</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>12_Alexandria</td>\n",
" <td>31.205753</td>\n",
" <td>29.924526</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" number latitude longtude\n",
"0 1_Kyoto 35.028309 135.753082\n",
"1 2_Одеса 46.469391 30.740883\n",
"2 3_Dayton 39.758949 -84.191605\n",
"3 4_Istanbul 41.015137 28.979530\n",
"4 5_AbuDhabi 24.466667 54.366669\n",
"5 6_KualaLumpur 3.140853 101.693207\n",
"6 7_AzisAbeba 9.005401 38.763611\n",
"7 8_Loja -3.989038 -79.203560\n",
"8 9_Amsterdam 52.377956 4.897070\n",
"9 10_SleepyHollow 41.085651 -73.858467\n",
"10 11_Kodiak 57.790001 -152.407227\n",
"11 12_Alexandria 31.205753 29.924526"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"flags"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [],
"source": [
"flag_map = folium.Map(location=[35.028309, 135.753082], zoom_start=5)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [],
"source": [
"for i, r in flags.iterrows():\n",
" folium.Marker(location=[r['latitude'], r['longtude']], popup=r['number']).add_to(flag_map)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"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+CjxoZWFkPiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgogICAgCiAgICAgICAgPHNjcmlwdD4KICAgICAgICAgICAgTF9OT19UT1VDSCA9IGZhbHNlOwogICAgICAgICAgICBMX0RJU0FCTEVfM0QgPSBmYWxzZTsKICAgICAgICA8L3NjcmlwdD4KICAgIAogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vY29kZS5qcXVlcnkuY29tL2pxdWVyeS0xLjEyLjQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9qcy9ib290c3RyYXAubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9MZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy8yLjAuMi9sZWFmbGV0LmF3ZXNvbWUtbWFya2Vycy5qcyI+PC9zY3JpcHQ+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vbGVhZmxldEAxLjUuMS9kaXN0L2xlYWZsZXQuY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vYm9vdHN0cmFwLzMuMi4wL2Nzcy9ib290c3RyYXAubWluLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2Jvb3RzdHJhcC8zLjIuMC9jc3MvYm9vdHN0cmFwLXRoZW1lLm1pbi5jc3MiLz4KICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9tYXhjZG4uYm9vdHN0cmFwY2RuLmNvbS9mb250LWF3ZXNvbWUvNC42LjMvY3NzL2ZvbnQtYXdlc29tZS5taW4uY3NzIi8+CiAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL0xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLzIuMC4yL2xlYWZsZXQuYXdlc29tZS1tYXJrZXJzLmNzcyIvPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL3Jhd2Nkbi5naXRoYWNrLmNvbS9weXRob24tdmlzdWFsaXphdGlvbi9mb2xpdW0vbWFzdGVyL2ZvbGl1bS90ZW1wbGF0ZXMvbGVhZmxldC5hd2Vzb21lLnJvdGF0ZS5jc3MiLz4KICAgIDxzdHlsZT5odG1sLCBib2R5IHt3aWR0aDogMTAwJTtoZWlnaHQ6IDEwMCU7bWFyZ2luOiAwO3BhZGRpbmc6IDA7fTwvc3R5bGU+CiAgICA8c3R5bGU+I21hcCB7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7Ym90dG9tOjA7cmlnaHQ6MDtsZWZ0OjA7fTwvc3R5bGU+CiAgICAKICAgICAgICAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwKICAgICAgICAgICAgICAgIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT1ubyIgLz4KICAgICAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAgICAgI21hcF9iOThmZWNiY2I4MDQ0ZTRkOGM3M2NhODJiNDk5NDVlMCB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDAuMCU7CiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4wJTsKICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMCU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIDwvc3R5bGU+CiAgICAgICAgCjwvaGVhZD4KPGJvZHk+ICAgIAogICAgCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvbGl1bS1tYXAiIGlkPSJtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTAiID48L2Rpdj4KICAgICAgICAKPC9ib2R5Pgo8c2NyaXB0PiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwID0gTC5tYXAoCiAgICAgICAgICAgICAgICAibWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwIiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBjZW50ZXI6IFszNS4wMjgzMDksIDEzNS43NTMwODJdLAogICAgICAgICAgICAgICAgICAgIGNyczogTC5DUlMuRVBTRzM4NTcsCiAgICAgICAgICAgICAgICAgICAgem9vbTogNSwKICAgICAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBwcmVmZXJDYW52YXM6IGZhbHNlLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgCgogICAgICAgIAogICAgCiAgICAgICAgICAgIHZhciB0aWxlX2xheWVyXzFkNzkwZDMxYzNjZTRiOTg5NTM1ZWU1YWExNjhlOGVlID0gTC50aWxlTGF5ZXIoCiAgICAgICAgICAgICAgICAiaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmciLAogICAgICAgICAgICAgICAgeyJhdHRyaWJ1dGlvbiI6ICJEYXRhIGJ5IFx1MDAyNmNvcHk7IFx1MDAzY2EgaHJlZj1cImh0dHA6Ly9vcGVuc3RyZWV0bWFwLm9yZ1wiXHUwMDNlT3BlblN0cmVldE1hcFx1MDAzYy9hXHUwMDNlLCB1bmRlciBcdTAwM2NhIGhyZWY9XCJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiXHUwMDNlT0RiTFx1MDAzYy9hXHUwMDNlLiIsICJkZXRlY3RSZXRpbmEiOiBmYWxzZSwgIm1heE5hdGl2ZVpvb20iOiAxOCwgIm1heFpvb20iOiAxOCwgIm1pblpvb20iOiAwLCAibm9XcmFwIjogZmFsc2UsICJvcGFjaXR5IjogMSwgInN1YmRvbWFpbnMiOiAiYWJjIiwgInRtcyI6IGZhbHNlfQogICAgICAgICAgICApLmFkZFRvKG1hcF9iOThmZWNiY2I4MDQ0ZTRkOGM3M2NhODJiNDk5NDVlMCk7CiAgICAgICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84ZTNiNWZiZTg1NTU0ZDA1OGFhZGYxNzQ1ZTZhNjNhZCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzM1LjAyODMwOSwgMTM1Ljc1MzA4Ml0sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9iOThmZWNiY2I4MDQ0ZTRkOGM3M2NhODJiNDk5NDVlMCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfY2UxZDRmMGY0YWJiNGE1OGE0NDUwNjhiMzU3YWUzYmQgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sX2QyNzMyMzcwOGM1OTQ5Y2RiMjQ5MGRhZmYxODE4NzBjID0gJChgPGRpdiBpZD0iaHRtbF9kMjczMjM3MDhjNTk0OWNkYjI0OTBkYWZmMTgxODcwYyIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+MV9LeW90bzwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9jZTFkNGYwZjRhYmI0YTU4YTQ0NTA2OGIzNTdhZTNiZC5zZXRDb250ZW50KGh0bWxfZDI3MzIzNzA4YzU5NDljZGIyNDkwZGFmZjE4MTg3MGMpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGUzYjVmYmU4NTU1NGQwNThhYWRmMTc0NWU2YTYzYWQuYmluZFBvcHVwKHBvcHVwX2NlMWQ0ZjBmNGFiYjRhNThhNDQ1MDY4YjM1N2FlM2JkKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2FmOGQwYTZkOTY4MDRhYTg4NjIyNTUzNDczYWFhZTMwID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDYuNDY5MzkxLCAzMC43NDA4ODNdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzUzYThmNWJlYzkwZjQ1YzhhODYzNDQ1OWU1MDg0MGEzID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9jNDhiY2U3YzA4MWY0ZTUwODQ5ZmIxZjgxZjkyMDBhOCA9ICQoYDxkaXYgaWQ9Imh0bWxfYzQ4YmNlN2MwODFmNGU1MDg0OWZiMWY4MWY5MjAwYTgiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjJf0J7QtNC10YHQsDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF81M2E4ZjViZWM5MGY0NWM4YTg2MzQ0NTllNTA4NDBhMy5zZXRDb250ZW50KGh0bWxfYzQ4YmNlN2MwODFmNGU1MDg0OWZiMWY4MWY5MjAwYTgpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYWY4ZDBhNmQ5NjgwNGFhODg2MjI1NTM0NzNhYWFlMzAuYmluZFBvcHVwKHBvcHVwXzUzYThmNWJlYzkwZjQ1YzhhODYzNDQ1OWU1MDg0MGEzKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyX2VhNjI0ZGQzOTVmYzQzZTc4OWQzNTZmY2Y1NmQ2YzhiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzkuNzU4OTQ5LCAtODQuMTkxNjA1XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF81MzlmNWU4NDI2MjM0ODM1ODIzOGE0OWQ1MzJlZTMzNSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDc2YzlkNjgzY2FjNDQyOGIxM2IxZDY3OWVhMjdjY2IgPSAkKGA8ZGl2IGlkPSJodG1sXzQ3NmM5ZDY4M2NhYzQ0MjhiMTNiMWQ2NzllYTI3Y2NiIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4zX0RheXRvbjwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF81MzlmNWU4NDI2MjM0ODM1ODIzOGE0OWQ1MzJlZTMzNS5zZXRDb250ZW50KGh0bWxfNDc2YzlkNjgzY2FjNDQyOGIxM2IxZDY3OWVhMjdjY2IpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfZWE2MjRkZDM5NWZjNDNlNzg5ZDM1NmZjZjU2ZDZjOGIuYmluZFBvcHVwKHBvcHVwXzUzOWY1ZTg0MjYyMzQ4MzU4MjM4YTQ5ZDUzMmVlMzM1KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzRkNzVhMjQ1NzdiYTQwYWViZDU5YWQxOWYxNDMwMjUyID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDEuMDE1MTM3LCAyOC45Nzk1M10sCiAgICAgICAgICAgICAgICB7fQogICAgICAgICAgICApLmFkZFRvKG1hcF9iOThmZWNiY2I4MDQ0ZTRkOGM3M2NhODJiNDk5NDVlMCk7CiAgICAgICAgCiAgICAKICAgICAgICB2YXIgcG9wdXBfMWMyMTgwMzQwZTVhNDJhNWFjMDNmNmQ3ZGYxODg5MGIgPSBMLnBvcHVwKHsibWF4V2lkdGgiOiAiMTAwJSJ9KTsKCiAgICAgICAgCiAgICAgICAgICAgIHZhciBodG1sXzViMWVlYWE5MGM4NTRlYzliYzVmOGMyOWVjMWMxNGJkID0gJChgPGRpdiBpZD0iaHRtbF81YjFlZWFhOTBjODU0ZWM5YmM1ZjhjMjllYzFjMTRiZCIgc3R5bGU9IndpZHRoOiAxMDAuMCU7IGhlaWdodDogMTAwLjAlOyI+NF9Jc3RhbmJ1bDwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF8xYzIxODAzNDBlNWE0MmE1YWMwM2Y2ZDdkZjE4ODkwYi5zZXRDb250ZW50KGh0bWxfNWIxZWVhYTkwYzg1NGVjOWJjNWY4YzI5ZWMxYzE0YmQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNGQ3NWEyNDU3N2JhNDBhZWJkNTlhZDE5ZjE0MzAyNTIuYmluZFBvcHVwKHBvcHVwXzFjMjE4MDM0MGU1YTQyYTVhYzAzZjZkN2RmMTg4OTBiKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzljMjkxYzNkNjEzNTQ2NThiNTAwODg5YjAzNjhmN2RkID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMjQuNDY2NjY3LCA1NC4zNjY2NjldLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2IyOGUyNjhkNGUzNDQwNGViMzQ3MzJlZGZlMWE5OGM4ID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF85NThmODc0NGQ3ZjY0N2Q1ODJjMGFjYzgyNzg5YmJlZCA9ICQoYDxkaXYgaWQ9Imh0bWxfOTU4Zjg3NDRkN2Y2NDdkNTgyYzBhY2M4Mjc4OWJiZWQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjVfQWJ1RGhhYmk8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfYjI4ZTI2OGQ0ZTM0NDA0ZWIzNDczMmVkZmUxYTk4Yzguc2V0Q29udGVudChodG1sXzk1OGY4NzQ0ZDdmNjQ3ZDU4MmMwYWNjODI3ODliYmVkKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzljMjkxYzNkNjEzNTQ2NThiNTAwODg5YjAzNjhmN2RkLmJpbmRQb3B1cChwb3B1cF9iMjhlMjY4ZDRlMzQ0MDRlYjM0NzMyZWRmZTFhOThjOCkKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl8zOGQzN2Y4MDk1Mzg0NTVjYjhlYWE3NjU4NmIzMjMxNCA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzMuMTQwODUzLCAxMDEuNjkzMjA3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF85YmY5MDQ1MTcyY2E0YzI1YWU4NjA4M2M2NWYzYTI1OSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfOWUzNDgyNzVlMjEwNDg4YWIyMTViNTQ0ZDQxYTk0OTcgPSAkKGA8ZGl2IGlkPSJodG1sXzllMzQ4Mjc1ZTIxMDQ4OGFiMjE1YjU0NGQ0MWE5NDk3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij42X0t1YWxhTHVtcHVyPC9kaXY+YClbMF07CiAgICAgICAgICAgIHBvcHVwXzliZjkwNDUxNzJjYTRjMjVhZTg2MDgzYzY1ZjNhMjU5LnNldENvbnRlbnQoaHRtbF85ZTM0ODI3NWUyMTA0ODhhYjIxNWI1NDRkNDFhOTQ5Nyk7CiAgICAgICAgCgogICAgICAgIG1hcmtlcl8zOGQzN2Y4MDk1Mzg0NTVjYjhlYWE3NjU4NmIzMjMxNC5iaW5kUG9wdXAocG9wdXBfOWJmOTA0NTE3MmNhNGMyNWFlODYwODNjNjVmM2EyNTkpCiAgICAgICAgOwoKICAgICAgICAKICAgIAogICAgCiAgICAgICAgICAgIHZhciBtYXJrZXJfYjM3YzIyNmFmMTM4NDg3YTk0NGZhNDkxZGMyYjE1MGEgPSBMLm1hcmtlcigKICAgICAgICAgICAgICAgIFs5LjAwNTQwMSwgMzguNzYzNjExXSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF83N2M2ZTI0MTVhMTU0MzkwYThmMmQwMDgxYzgxNDZkOSA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfNDY0MzkwOWU4NTRkNDlhYjg3ODJhMDBiNzE2YmY3YTIgPSAkKGA8ZGl2IGlkPSJodG1sXzQ2NDM5MDllODU0ZDQ5YWI4NzgyYTAwYjcxNmJmN2EyIiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij43X0F6aXNBYmViYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83N2M2ZTI0MTVhMTU0MzkwYThmMmQwMDgxYzgxNDZkOS5zZXRDb250ZW50KGh0bWxfNDY0MzkwOWU4NTRkNDlhYjg3ODJhMDBiNzE2YmY3YTIpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfYjM3YzIyNmFmMTM4NDg3YTk0NGZhNDkxZGMyYjE1MGEuYmluZFBvcHVwKHBvcHVwXzc3YzZlMjQxNWExNTQzOTBhOGYyZDAwODFjODE0NmQ5KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzZlMzFmYjJmMGVkMjQ4NDc4MGY5YzM5ZjM4ZjA0ZGE1ID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbLTMuOTg5MDM4LCAtNzkuMjAzNTZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwX2VkOWIzY2IzZjNmYjRiYjU5OGE4N2ExMjkyZGU5OWJlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF9hNWZlM2RkNTMzODE0ZjlmODVhOGMwODRkNTE2ZmJmZCA9ICQoYDxkaXYgaWQ9Imh0bWxfYTVmZTNkZDUzMzgxNGY5Zjg1YThjMDg0ZDUxNmZiZmQiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjhfTG9qYTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9lZDliM2NiM2YzZmI0YmI1OThhODdhMTI5MmRlOTliZS5zZXRDb250ZW50KGh0bWxfYTVmZTNkZDUzMzgxNGY5Zjg1YThjMDg0ZDUxNmZiZmQpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNmUzMWZiMmYwZWQyNDg0NzgwZjljMzlmMzhmMDRkYTUuYmluZFBvcHVwKHBvcHVwX2VkOWIzY2IzZjNmYjRiYjU5OGE4N2ExMjkyZGU5OWJlKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzRhNDNiMjFlMTM0MTQ4YjNiOThkYTUyODlhYjMzYzAxID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNTIuMzc3OTU2LCA0Ljg5NzA3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF9mZTQ3NmJhN2YxYWE0ZTFjYmMwNzI3YmI3MzU2NGY4NyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfMTlmNTRhN2M4NzRlNDViOTg3Y2VhYzkxOGE5MmE3ODYgPSAkKGA8ZGl2IGlkPSJodG1sXzE5ZjU0YTdjODc0ZTQ1Yjk4N2NlYWM5MThhOTJhNzg2IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij45X0Ftc3RlcmRhbTwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF9mZTQ3NmJhN2YxYWE0ZTFjYmMwNzI3YmI3MzU2NGY4Ny5zZXRDb250ZW50KGh0bWxfMTlmNTRhN2M4NzRlNDViOTg3Y2VhYzkxOGE5MmE3ODYpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfNGE0M2IyMWUxMzQxNDhiM2I5OGRhNTI4OWFiMzNjMDEuYmluZFBvcHVwKHBvcHVwX2ZlNDc2YmE3ZjFhYTRlMWNiYzA3MjdiYjczNTY0Zjg3KQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzUxZTUwNDBjMGUxNzRmZjA4MmRjOGU1ZDczMjQ1N2JiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbNDEuMDg1NjUxLCAtNzMuODU4NDY3XSwKICAgICAgICAgICAgICAgIHt9CiAgICAgICAgICAgICkuYWRkVG8obWFwX2I5OGZlY2JjYjgwNDRlNGQ4YzczY2E4MmI0OTk0NWUwKTsKICAgICAgICAKICAgIAogICAgICAgIHZhciBwb3B1cF8yMDljODViOWNlNmY0ZThjYTQ4ZmJmZmYyNDUyMWQ2YyA9IEwucG9wdXAoeyJtYXhXaWR0aCI6ICIxMDAlIn0pOwoKICAgICAgICAKICAgICAgICAgICAgdmFyIGh0bWxfYTRlMWFiYTZiNGRjNDQ4YTgzZTVmM2FmODRlYzgyODcgPSAkKGA8ZGl2IGlkPSJodG1sX2E0ZTFhYmE2YjRkYzQ0OGE4M2U1ZjNhZjg0ZWM4Mjg3IiBzdHlsZT0id2lkdGg6IDEwMC4wJTsgaGVpZ2h0OiAxMDAuMCU7Ij4xMF9TbGVlcHlIb2xsb3c8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMjA5Yzg1YjljZTZmNGU4Y2E0OGZiZmZmMjQ1MjFkNmMuc2V0Q29udGVudChodG1sX2E0ZTFhYmE2YjRkYzQ0OGE4M2U1ZjNhZjg0ZWM4Mjg3KTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzUxZTUwNDBjMGUxNzRmZjA4MmRjOGU1ZDczMjQ1N2JiLmJpbmRQb3B1cChwb3B1cF8yMDljODViOWNlNmY0ZThjYTQ4ZmJmZmYyNDUyMWQ2YykKICAgICAgICA7CgogICAgICAgIAogICAgCiAgICAKICAgICAgICAgICAgdmFyIG1hcmtlcl84YWU5YzZkZmJlMzk0ZmZjODYxMDNkZTk1YWMzZGE1MiA9IEwubWFya2VyKAogICAgICAgICAgICAgICAgWzU3Ljc5MDAwMSwgLTE1Mi40MDcyMjddLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzc0NjAwYjMwNTU0NTRjMDY4MWE2N2JiNTkzZWFiZjVkID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF8xMTA5ODY0YzIzNzU0YTVlOGUwOWRjOGNjYjVkM2IyNyA9ICQoYDxkaXYgaWQ9Imh0bWxfMTEwOTg2NGMyMzc1NGE1ZThlMDlkYzhjY2I1ZDNiMjciIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjExX0tvZGlhazwvZGl2PmApWzBdOwogICAgICAgICAgICBwb3B1cF83NDYwMGIzMDU1NDU0YzA2ODFhNjdiYjU5M2VhYmY1ZC5zZXRDb250ZW50KGh0bWxfMTEwOTg2NGMyMzc1NGE1ZThlMDlkYzhjY2I1ZDNiMjcpOwogICAgICAgIAoKICAgICAgICBtYXJrZXJfOGFlOWM2ZGZiZTM5NGZmYzg2MTAzZGU5NWFjM2RhNTIuYmluZFBvcHVwKHBvcHVwXzc0NjAwYjMwNTU0NTRjMDY4MWE2N2JiNTkzZWFiZjVkKQogICAgICAgIDsKCiAgICAgICAgCiAgICAKICAgIAogICAgICAgICAgICB2YXIgbWFya2VyXzViYmU5MjFmNjhlZTQ1ZjRhOTgyNGE3ZTM3MWI4ZGRiID0gTC5tYXJrZXIoCiAgICAgICAgICAgICAgICBbMzEuMjA1NzUzLCAyOS45MjQ1MjZdLAogICAgICAgICAgICAgICAge30KICAgICAgICAgICAgKS5hZGRUbyhtYXBfYjk4ZmVjYmNiODA0NGU0ZDhjNzNjYTgyYjQ5OTQ1ZTApOwogICAgICAgIAogICAgCiAgICAgICAgdmFyIHBvcHVwXzAxYWIxZmQ4ODliNzQzODg5NGYxMjAwNDFiNzhhODFlID0gTC5wb3B1cCh7Im1heFdpZHRoIjogIjEwMCUifSk7CgogICAgICAgIAogICAgICAgICAgICB2YXIgaHRtbF83MGFiN2YzM2FjYjA0MzdlOTRlZDdlNWY4NmI4YTMxYyA9ICQoYDxkaXYgaWQ9Imh0bWxfNzBhYjdmMzNhY2IwNDM3ZTk0ZWQ3ZTVmODZiOGEzMWMiIHN0eWxlPSJ3aWR0aDogMTAwLjAlOyBoZWlnaHQ6IDEwMC4wJTsiPjEyX0FsZXhhbmRyaWE8L2Rpdj5gKVswXTsKICAgICAgICAgICAgcG9wdXBfMDFhYjFmZDg4OWI3NDM4ODk0ZjEyMDA0MWI3OGE4MWUuc2V0Q29udGVudChodG1sXzcwYWI3ZjMzYWNiMDQzN2U5NGVkN2U1Zjg2YjhhMzFjKTsKICAgICAgICAKCiAgICAgICAgbWFya2VyXzViYmU5MjFmNjhlZTQ1ZjRhOTgyNGE3ZTM3MWI4ZGRiLmJpbmRQb3B1cChwb3B1cF8wMWFiMWZkODg5Yjc0Mzg4OTRmMTIwMDQxYjc4YTgxZSkKICAgICAgICA7CgogICAgICAgIAogICAgCjwvc2NyaXB0Pg==\" 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 0x7fbff60636a0>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"flag_map"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#flag: picoCTF{KODIAK_ALASKA}"
]
}
],
"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.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment