X-Git-Url: https://git.rvb.name/pyrungps.git/blobdiff_plain/dc810bdf49cac946b7fb551264bff0e74b525989..94f62add438cdf546fdae207ede72c05daf66c00:/render_tiles.py?ds=sidebyside diff --git a/render_tiles.py b/render_tiles.py deleted file mode 100644 index 5dae029..0000000 --- a/render_tiles.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env python -# coding: UTF-8 - -import sqlite3 -import math -from pprint import pprint - -def queue_render(db,filename,forced_max_zoom=None): - - conn = sqlite3.connect(db) - cur = conn.cursor() - - cur.execute("select minlat,minlon,maxlat,maxlon from tracks where filename=?" , (filename.decode('UTF-8'),)) - minlat,minlon,maxlat,maxlon=cur.fetchone() - queue_tiles(db,minlat,minlon,maxlat,maxlon,forced_max_zoom) - -def queue_tiles(db,minlat,minlon,maxlat,maxlon,forced_max_zoom=None): - - conn = sqlite3.connect(db) - - # определяем примерный стартовый зум - - minlatrad = math.radians(minlat) - maxlatrad = math.radians(maxlat) - - minx = (minlon + 180.0)/360.0 - maxx = (maxlon + 180.0)/360.0 - - miny = (1.0 - math.log(math.tan(minlatrad) + (1 / math.cos(minlatrad))) / math.pi) / 2.0 - maxy = (1.0 - math.log(math.tan(maxlatrad) + (1 / math.cos(maxlatrad))) / math.pi) / 2.0 - - if minx>maxx: - minx,maxx = maxx,minx - - if miny>maxy: - miny,maxy = maxy,miny - - minzoom=8 - if forced_max_zoom: - maxzoom=forced_max_zoom - else: - maxzoom=16 - - for zoom in range(minzoom,maxzoom+1): - - n = 2 ** zoom - - minxt = int(minx * n) - minyt = int(miny * n) - maxxt = int(maxx * n) - maxyt = int(maxy * n) - - ins = conn.cursor() - print zoom,minxt,maxxt,minyt,maxyt - ins.execute('insert into render_queue(zoom,minx,maxx,miny,maxy) values(?,?,?,?,?)',(zoom,minxt,maxxt,minyt,maxyt)) - - if forced_max_zoom is None: - if (maxxt-minxt>32) or (maxyt-minyt>24): - print "Breaking..." - conn.commit() - break - - conn.commit() - -def process_queue(db,map,force=False): - - from os import system - - conn = sqlite3.connect(db) - cur = conn.cursor() - cur.execute('select id,zoom,minx,maxx,miny,maxy from render_queue') - list=cur.fetchall() - - for rec in list: - - id,zoom,minx,maxx,miny,maxy=rec - - command = 'map='+map+ \ - ' z='+str(zoom)+ \ - ' x='+str(minx)+'-'+str(maxx)+ \ - ' y='+str(miny)+'-'+str(maxy) - - if force: - command = 'tirex-batch '+command - else: - command = 'tirex-batch '+command+' -f not-exists' - - print command - - if system(command)==0: - dcur=conn.cursor() - dcur.execute('delete from render_queue where id=?',(id,)) - conn.commit() - -def main(): - - from optparse import OptionParser - - parser = OptionParser() - parser.add_option("-d", "--data", dest="directory", - help="Data directory", metavar="DIR") - parser.add_option("-m", "--map", dest="map", - help="Map name", metavar="MAP") - parser.add_option("-z", "--zoom", dest="zoom", - help="Maximal zoom (forced), used with coordinates pairs (minlat minlon maxlat maxlon) or filename in arguments", metavar="MAP") - parser.add_option("-f", "--force", dest="force", - help="Force tile regeneration (on/off), default off") - (options, args) = parser.parse_args() - - print options,args - - db=options.directory+'/gpx.db' - map=options.map - zoom=options.zoom - force=(options.force=='on') - - if zoom: - if len(args)==1: - filename,=args - print "Rendering file: "+filename+"\n" - queue_render(db,filename) - else: - minlat,minlon,maxlat,maxlon=args - queue_tiles(db,float(minlat),float(minlon),float(maxlat),float(maxlon),int(zoom)) - - if map: - process_queue(db,map,force) - -if __name__ == "__main__": - - main() - \ No newline at end of file