Skip to content

Instantly share code, notes, and snippets.

@FMassin
Created March 22, 2017 08:35
Show Gist options
  • Save FMassin/54f2c17bd378dfde00d1153f2ff3cd82 to your computer and use it in GitHub Desktop.
Save FMassin/54f2c17bd378dfde00d1153f2ff3cd82 to your computer and use it in GitHub Desktop.
Make a OSM tile buffer
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import urllib3\n",
"import os\n",
"\n",
"\n",
"url =\"http://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map/MapServer/tile\"\n",
"path = \"/Users/fmassin/Documents/osmtiles/\"\n",
"http = urllib3.PoolManager()\n",
"\n",
"for l in range(0,6):\n",
" for y in range(0,2**l):\n",
" for x in range(0,2**l):\n",
" tile = url+\"/\"+str(l)+\"/\"+str(y)+\"/\"+str(x)\n",
" directory = path+\"/\"+str(l)+\"/\"+str(x)\n",
" file = directory+\"/\"+str(y)+\".jpg\"\n",
" \n",
" r = http.request('GET', tile, preload_content=False)\n",
"\n",
" flag = 0\n",
" os.makedirs( directory, exist_ok=True );\n",
" with open(file, 'wb') as out:\n",
" while True:\n",
" data = r.read()\n",
" if not data:\n",
" break\n",
" \n",
" out.write(data)\n",
" flag = 1\n",
" r.release_conn()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/Users/fmassin/Documents/osmtiles/7/67/47.png\n",
"/Users/fmassin/Documents/osmtiles/7/68/47.png\n",
"/Users/fmassin/Documents/osmtiles/7/69/47.png\n",
"/Users/fmassin/Documents/osmtiles/7/70/47.png\n",
"/Users/fmassin/Documents/osmtiles/7/71/47.png\n",
"/Users/fmassin/Documents/osmtiles/7/67/48.png\n",
"/Users/fmassin/Documents/osmtiles/7/68/48.png\n",
"/Users/fmassin/Documents/osmtiles/7/69/48.png\n",
"/Users/fmassin/Documents/osmtiles/7/70/48.png\n",
"/Users/fmassin/Documents/osmtiles/7/71/48.png\n",
"/Users/fmassin/Documents/osmtiles/7/67/49.png\n",
"/Users/fmassin/Documents/osmtiles/7/68/49.png\n",
"/Users/fmassin/Documents/osmtiles/7/69/49.png\n",
"/Users/fmassin/Documents/osmtiles/7/70/49.png\n",
"/Users/fmassin/Documents/osmtiles/7/71/49.png\n",
"/Users/fmassin/Documents/osmtiles/7/30/58.png\n",
"/Users/fmassin/Documents/osmtiles/7/31/58.png\n",
"/Users/fmassin/Documents/osmtiles/7/32/58.png\n",
"/Users/fmassin/Documents/osmtiles/7/30/59.png\n",
"/Users/fmassin/Documents/osmtiles/7/31/59.png\n",
"/Users/fmassin/Documents/osmtiles/7/30/60.png\n",
"/Users/fmassin/Documents/osmtiles/7/31/60.png\n",
"/Users/fmassin/Documents/osmtiles/7/30/61.png\n",
"/Users/fmassin/Documents/osmtiles/7/31/61.png\n",
"/Users/fmassin/Documents/osmtiles/8/64/118.png\n",
"/Users/fmassin/Documents/osmtiles/8/65/118.png\n",
"/Users/fmassin/Documents/osmtiles/8/66/118.png\n",
"/Users/fmassin/Documents/osmtiles/8/67/118.png\n",
"/Users/fmassin/Documents/osmtiles/8/68/118.png\n",
"/Users/fmassin/Documents/osmtiles/8/64/119.png\n",
"/Users/fmassin/Documents/osmtiles/8/65/119.png\n",
"/Users/fmassin/Documents/osmtiles/8/66/119.png\n",
"/Users/fmassin/Documents/osmtiles/8/67/119.png\n",
"/Users/fmassin/Documents/osmtiles/8/68/119.png\n",
"/Users/fmassin/Documents/osmtiles/8/64/120.png\n",
"/Users/fmassin/Documents/osmtiles/8/65/120.png\n",
"/Users/fmassin/Documents/osmtiles/8/66/120.png\n",
"/Users/fmassin/Documents/osmtiles/8/67/120.png\n",
"/Users/fmassin/Documents/osmtiles/8/68/120.png\n",
"/Users/fmassin/Documents/osmtiles/9/131/237.png\n",
"/Users/fmassin/Documents/osmtiles/9/132/237.png\n",
"/Users/fmassin/Documents/osmtiles/9/133/237.png\n",
"/Users/fmassin/Documents/osmtiles/9/134/237.png\n",
"/Users/fmassin/Documents/osmtiles/9/135/237.png\n",
"/Users/fmassin/Documents/osmtiles/9/131/238.png\n",
"/Users/fmassin/Documents/osmtiles/9/132/238.png\n",
"/Users/fmassin/Documents/osmtiles/9/133/238.png\n",
"/Users/fmassin/Documents/osmtiles/9/134/238.png\n",
"/Users/fmassin/Documents/osmtiles/9/135/238.png\n",
"/Users/fmassin/Documents/osmtiles/9/131/239.png\n",
"/Users/fmassin/Documents/osmtiles/9/132/239.png\n",
"/Users/fmassin/Documents/osmtiles/9/133/239.png\n",
"/Users/fmassin/Documents/osmtiles/9/134/239.png\n",
"/Users/fmassin/Documents/osmtiles/9/135/239.png\n",
"/Users/fmassin/Documents/osmtiles/10/264/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/265/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/266/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/267/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/268/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/269/475.png\n",
"/Users/fmassin/Documents/osmtiles/10/264/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/265/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/266/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/267/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/268/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/269/476.png\n",
"/Users/fmassin/Documents/osmtiles/10/264/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/265/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/266/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/267/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/268/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/269/477.png\n",
"/Users/fmassin/Documents/osmtiles/10/264/478.png\n",
"/Users/fmassin/Documents/osmtiles/10/265/478.png\n",
"/Users/fmassin/Documents/osmtiles/10/266/478.png\n",
"/Users/fmassin/Documents/osmtiles/10/267/478.png\n",
"/Users/fmassin/Documents/osmtiles/10/268/478.png\n",
"/Users/fmassin/Documents/osmtiles/10/269/478.png\n",
"/Users/fmassin/Documents/osmtiles/11/531/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/532/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/533/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/534/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/535/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/536/953.png\n",
"/Users/fmassin/Documents/osmtiles/11/531/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/532/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/533/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/534/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/535/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/536/954.png\n",
"/Users/fmassin/Documents/osmtiles/11/531/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/532/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/533/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/534/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/535/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/536/955.png\n",
"/Users/fmassin/Documents/osmtiles/11/531/956.png\n",
"/Users/fmassin/Documents/osmtiles/11/532/956.png\n",
"/Users/fmassin/Documents/osmtiles/11/533/956.png\n",
"/Users/fmassin/Documents/osmtiles/11/534/956.png\n",
"/Users/fmassin/Documents/osmtiles/11/535/956.png\n",
"/Users/fmassin/Documents/osmtiles/11/536/956.png\n",
"/Users/fmassin/Documents/osmtiles/12/1065/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1066/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1067/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1068/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1069/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1070/1909.png\n",
"/Users/fmassin/Documents/osmtiles/12/1065/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1066/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1067/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1068/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1069/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1070/1910.png\n",
"/Users/fmassin/Documents/osmtiles/12/1065/1911.png\n",
"/Users/fmassin/Documents/osmtiles/12/1066/1911.png\n",
"/Users/fmassin/Documents/osmtiles/12/1067/1911.png\n",
"/Users/fmassin/Documents/osmtiles/12/1068/1911.png\n",
"/Users/fmassin/Documents/osmtiles/12/1069/1911.png\n",
"/Users/fmassin/Documents/osmtiles/12/1070/1911.png\n",
"/Users/fmassin/Documents/osmtiles/13/2133/3819.png\n",
"/Users/fmassin/Documents/osmtiles/13/2134/3819.png\n",
"/Users/fmassin/Documents/osmtiles/13/2135/3819.png\n",
"/Users/fmassin/Documents/osmtiles/13/2133/3820.png\n",
"/Users/fmassin/Documents/osmtiles/13/2134/3820.png\n",
"/Users/fmassin/Documents/osmtiles/13/2135/3820.png\n",
"/Users/fmassin/Documents/osmtiles/13/2136/3820.png\n",
"/Users/fmassin/Documents/osmtiles/13/2137/3820.png\n",
"/Users/fmassin/Documents/osmtiles/13/2133/3821.png\n",
"/Users/fmassin/Documents/osmtiles/13/2134/3821.png\n",
"/Users/fmassin/Documents/osmtiles/13/2135/3821.png\n",
"/Users/fmassin/Documents/osmtiles/13/2136/3821.png\n",
"/Users/fmassin/Documents/osmtiles/13/2137/3821.png\n",
"/Users/fmassin/Documents/osmtiles/13/2133/3822.png\n",
"/Users/fmassin/Documents/osmtiles/13/2134/3822.png\n",
"/Users/fmassin/Documents/osmtiles/13/2135/3822.png\n",
"/Users/fmassin/Documents/osmtiles/13/2136/3822.png\n",
"/Users/fmassin/Documents/osmtiles/13/2137/3822.png\n",
"/Users/fmassin/Documents/osmtiles/14/4269/7641.png\n",
"/Users/fmassin/Documents/osmtiles/14/4269/7642.png\n",
"/Users/fmassin/Documents/osmtiles/14/4269/7643.png\n"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-5-b8b301173354>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 9\u001b[0;31m \u001b[0mdirectory\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpath\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"/\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ml\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"/\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 10\u001b[0m \u001b[0mtest\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdirectory\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"/\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\".png\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
]
}
],
"source": [
"url2 =\"http://services.arcgisonline.com/arcgis/rest/services/World_Topo_Map/MapServer/tile\"\n",
"path = \"/Users/fmassin/Documents/osmtiles\"\n",
"http = urllib3.PoolManager()\n",
"\n",
"for l in range(7,15):\n",
" for y in range(0,2**l):\n",
" for x in range(0,2**l): \n",
" \n",
" directory = path+\"/\"+str(l)+\"/\"+str(x)\n",
" test = directory+\"/\"+str(y)+\".png\"\n",
" \n",
" if os.path.isfile(test) is True:\n",
" print(test)\n",
" \n",
" tile = url2+\"/\"+str(l)+\"/\"+str(y)+\"/\"+str(x)\n",
" file = directory+\"/\"+str(y)+\".jpg\"\n",
" \n",
" r = http.request('GET', tile, preload_content=False)\n",
"\n",
" flag = 0\n",
" with open(file, 'wb') as out:\n",
" while True:\n",
" data = r.read()\n",
" if not data:\n",
" break\n",
"\n",
" out.write(data)\n",
" flag = 1\n",
" r.release_conn()\n",
" \n",
" tile = url+\"/\"+str(l)+\"/\"+str(y)+\"/\"+str(x)\n",
" \n",
" r = http.request('GET', tile, preload_content=False)\n",
"\n",
" flag = 0\n",
" with open(file, 'wb') as out:\n",
" while True:\n",
" data = r.read()\n",
" if not data:\n",
" break\n",
"\n",
" out.write(data)\n",
" flag = 1\n",
" r.release_conn()"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment