def verify(src, zoomlevel): limitx1, limity1 = mapper.latlon2merc((63, 15), zoomlevel) limitx1 = int(limitx1) limity1 = int(limity1) tilesizemask = tilesize - 1 limitx1 &= ~tilesizemask limity1 &= ~tilesizemask srcblob = BlobFile(src + "%d" % (zoomlevel,), tilesize=tilesize) f = 16 im = Image.new("RGB", (f * tilesize, f * tilesize)) basey = 0 for by in xrange(limity1, limity1 + f * tilesize, tilesize): basex = 0 print "DOne: %f" % (basey / float(f * tilesize)) for bx in xrange(limitx1, limitx1 + f * tilesize, tilesize): b = srcblob.get_tile(bx, by) if b == None: print "NO tile at ", bx, by basex += tilesize continue print "found tile at ", bx, by assert len(b) == 4 * tilesize * tilesize fi = StringIO(b) for i in xrange(tilesize): for j in xrange(tilesize): # lo=unpack(">h",fi.read(2))[0] hi = unpack(">h", fi.read(2))[0] im.putpixel((basex + j, basey + i), (hi / 6, hi / 6, hi / 6.0)) basex += tilesize basey += tilesize im.save("out-%d.png" % (zoomlevel,))
def verify(src, zoomlevel): limitx1, limity1 = mapper.latlon2merc((63, 15), zoomlevel) limitx1 = int(limitx1) limity1 = int(limity1) tilesizemask = tilesize - 1 limitx1 &= ~tilesizemask limity1 &= ~tilesizemask srcblob = BlobFile(src + "%d" % (zoomlevel, ), tilesize=tilesize) f = 16 im = Image.new("RGB", (f * tilesize, f * tilesize)) basey = 0 for by in xrange(limity1, limity1 + f * tilesize, tilesize): basex = 0 print "DOne: %f" % (basey / float(f * tilesize)) for bx in xrange(limitx1, limitx1 + f * tilesize, tilesize): b = srcblob.get_tile(bx, by) if b == None: print "NO tile at ", bx, by basex += tilesize continue print "found tile at ", bx, by assert len(b) == 4 * tilesize * tilesize fi = StringIO(b) for i in xrange(tilesize): for j in xrange(tilesize): #lo=unpack(">h",fi.read(2))[0] hi = unpack(">h", fi.read(2))[0] im.putpixel((basex + j, basey + i), (hi / 6, hi / 6, hi / 6.0)) basex += tilesize basey += tilesize im.save("out-%d.png" % (zoomlevel, ))
def refine_merc_elevmap(src, srczoomlevel): zoomlevel = srczoomlevel - 1 limitx1, limity1, limitx2, limity2 = merc_limits(zoomlevel, hd=True) tilesizemask = tilesize - 1 assert (limitx1 & tilesizemask) == 0 assert (limity1 & tilesizemask) == 0 srcblob = BlobFile(src + "%d" % (srczoomlevel,), tilesize=tilesize) trgfile = src + "%d" % (zoomlevel,) if os.path.exists(trgfile): os.unlink(trgfile) trgblob = BlobFile(trgfile, zoomlevel, limitx1, limity1, limitx2, limity2, "w", tilesize=tilesize) for by in xrange(limity1, limity2, tilesize): # if (by-limity1)/float(limity2-limity1)>0.2: # break for bx in xrange(limitx1, limitx2, tilesize): print "Perc complete: %.1f%%" % (100.0 * (by - limity1) / float(limity2 - limity1)) loout = numpy.zeros((tilesize, tilesize)) hiout = numpy.zeros((tilesize, tilesize)) for suby in xrange(2): for subx in xrange(2): srcx = 2 * (bx) + subx * tilesize srcy = 2 * (by) + suby * tilesize buf = srcblob.get_tile(srcx, srcy) if buf == None: buf = onebuf print "Using onebuf" # print "Got buf:",md5.md5(buf).hexdigest() # print "got at %d,%d: %d bytes"%(srcx,srcy,len(buf) if buf else 0) assert len(buf) == tilesize * tilesize * 2 fi = StringIO(buf) # losub=numpy.zeros((tilesize,tilesize)) hisub = numpy.zeros((tilesize, tilesize)) for j in xrange(tilesize): for i in xrange(tilesize): # losub[j,i]=unpack(">h",fi.read(2))[0] hisub[j, i] = unpack(">h", fi.read(2))[0] fi.close() del fi tsh = tilesize / 2 for j in xrange(tilesize / 2): for i in xrange(tilesize / 2): def s(sub, fn): return fn(sub[2 * j + a, 2 * i + b] for (a, b) in product(xrange(2), xrange(2))) # losum=s(losub,min) hisum = s(hisub, max) # print "losum: %d from %s"%(losum,losub[2*j,2*i]) crd = (j + suby * tsh, i + subx * tsh) # losum=suby*500+subx*2000 # hisum=suby*100+subx*500 # loout[crd]=losum hiout[crd] = hisum # del losub del hisub # print "loout:",loout # print "hiout:",hiout f = StringIO() for j in xrange(tilesize): for i in xrange(tilesize): # f.write(pack(">h",loout[j,i])) #min f.write(pack(">h", hiout[j, i])) # max trgblob.add_tile(bx, by, f.getvalue())
def refine_merc_elevmap(src, srczoomlevel): zoomlevel = srczoomlevel - 1 limitx1, limity1, limitx2, limity2 = merc_limits(zoomlevel, hd=True) tilesizemask = tilesize - 1 assert (limitx1 & tilesizemask) == 0 assert (limity1 & tilesizemask) == 0 srcblob = BlobFile(src + "%d" % (srczoomlevel, ), tilesize=tilesize) trgfile = src + "%d" % (zoomlevel, ) if os.path.exists(trgfile): os.unlink(trgfile) trgblob = BlobFile(trgfile, zoomlevel, limitx1, limity1, limitx2, limity2, "w", tilesize=tilesize) for by in xrange(limity1, limity2, tilesize): #if (by-limity1)/float(limity2-limity1)>0.2: # break for bx in xrange(limitx1, limitx2, tilesize): print "Perc complete: %.1f%%" % (100.0 * (by - limity1) / float(limity2 - limity1)) loout = numpy.zeros((tilesize, tilesize)) hiout = numpy.zeros((tilesize, tilesize)) for suby in xrange(2): for subx in xrange(2): srcx = 2 * (bx) + subx * tilesize srcy = 2 * (by) + suby * tilesize buf = srcblob.get_tile(srcx, srcy) if buf == None: buf = onebuf print "Using onebuf" #print "Got buf:",md5.md5(buf).hexdigest() #print "got at %d,%d: %d bytes"%(srcx,srcy,len(buf) if buf else 0) assert (len(buf) == tilesize * tilesize * 2) fi = StringIO(buf) #losub=numpy.zeros((tilesize,tilesize)) hisub = numpy.zeros((tilesize, tilesize)) for j in xrange(tilesize): for i in xrange(tilesize): #losub[j,i]=unpack(">h",fi.read(2))[0] hisub[j, i] = unpack(">h", fi.read(2))[0] fi.close() del fi tsh = tilesize / 2 for j in xrange(tilesize / 2): for i in xrange(tilesize / 2): def s(sub, fn): return fn( sub[2 * j + a, 2 * i + b] for (a, b) in product(xrange(2), xrange(2))) #losum=s(losub,min) hisum = s(hisub, max) #print "losum: %d from %s"%(losum,losub[2*j,2*i]) crd = (j + suby * tsh, i + subx * tsh) #losum=suby*500+subx*2000 #hisum=suby*100+subx*500 #loout[crd]=losum hiout[crd] = hisum #del losub del hisub #print "loout:",loout #print "hiout:",hiout f = StringIO() for j in xrange(tilesize): for i in xrange(tilesize): #f.write(pack(">h",loout[j,i])) #min f.write(pack(">h", hiout[j, i])) #max trgblob.add_tile(bx, by, f.getvalue())