added dumper script first draft
git-svn-id: http://www.neo1973-germany.de/svn@18 46df4e5c-bc4e-4628-a0fc-830ba316316d
This commit is contained in:
parent
33ddb6c495
commit
24089c0b00
1 changed files with 64 additions and 0 deletions
64
pylgrim/osmdump.py
Normal file
64
pylgrim/osmdump.py
Normal file
|
@ -0,0 +1,64 @@
|
|||
#!/usr/bin/python
|
||||
#coding=utf8
|
||||
|
||||
import os
|
||||
import sys
|
||||
import math
|
||||
import time
|
||||
|
||||
z = 10
|
||||
|
||||
def download(x,y,z):
|
||||
import urllib
|
||||
try:
|
||||
webFile = urllib.urlopen("http://a.tile.openstreetmap.org/%d/%d/%d.png"%(z,x,y))
|
||||
if not os.path.exists("%d"%z):
|
||||
os.mkdir("%d"%z)
|
||||
if not os.path.exists("%d/%d"%(z,x)):
|
||||
os.mkdir("%d/%d"%(z,x))
|
||||
localFile = open("%d/%d/%d.png"%(z,x,y), 'w')
|
||||
localFile.write(webFile.read())
|
||||
webFile.close()
|
||||
localFile.close()
|
||||
except Exception, e:
|
||||
print e
|
||||
|
||||
def lon2km(lat):
|
||||
return math.cos(lat*math.pi/180)*2*math.pi*6378.137/360
|
||||
|
||||
def getxy(lat,lon,z):
|
||||
x = (lon+180)/360 * 2**z
|
||||
y = (1-math.log(math.tan(lat*math.pi/180) + 1/math.cos(lat*math.pi/180))/math.pi)/2 * 2**z
|
||||
return int(x),int(y)
|
||||
|
||||
lat = 49.009051
|
||||
lon = 8.402481
|
||||
|
||||
r = 10
|
||||
|
||||
lat1 = lat-r/111.32
|
||||
lon1 = lon-r/lon2km(49.009051)
|
||||
lat2 = lat+r/111.32
|
||||
lon2 = lon+r/lon2km(49.009051)
|
||||
|
||||
tiles = 0
|
||||
#do not download zoom 18
|
||||
for z in range(5,18):
|
||||
x1,y1 = getxy(lat1, lon1, z)
|
||||
x2,y2 = getxy(lat2, lon2, z)
|
||||
tiles += (x2-x1)*(y1-y2)
|
||||
|
||||
print "do you really want to download %d tiles? [Y/n]"%tiles,
|
||||
data = sys.stdin.read(1)
|
||||
if data in ("y", "Y"):
|
||||
i = 1;
|
||||
for z in range(5,18):
|
||||
x1,y1 = getxy(lat1, lon1, z)
|
||||
x2,y2 = getxy(lat2, lon2, z)
|
||||
for x in xrange(x1,x2+1):
|
||||
for y in xrange(y2,y1+1):
|
||||
if not os.path.exists("%d/%d/%d.png"%(z,x,y)):
|
||||
download(x,y,z)
|
||||
print "\r%i"%i,
|
||||
sys.stdout.flush()
|
||||
i+=1
|
Loading…
Reference in a new issue