X-Git-Url: https://git.rvb.name/pyrungps.git/blobdiff_plain/0f58e0f39a33de394b4792feb55701a3c13d6e5b..94f62add438cdf546fdae207ede72c05daf66c00:/render_tiles.py?ds=sidebyside diff --git a/render_tiles.py b/render_tiles.py deleted file mode 100644 index 18432d3..0000000 --- a/render_tiles.py +++ /dev/null @@ -1,118 +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 deg2num(lat_deg, lon_deg, zoom): - lat_rad = math.radians(lat_deg) - n = 2.0 ** zoom - xtile = int((lon_deg + 180.0) / 360.0 * n) - ytile = int((1.0 - math.log(math.tan(lat_rad) + (1 / math.cos(lat_rad))) / math.pi) / 2.0 * n) - return (xtile, ytile) - -def queue_tiles(db,minlat,minlon,maxlat,maxlon,forced_max_zoom=None): - - conn = sqlite3.connect(db) - - # определяем примерный стартовый зум - - minzoom=8 - - if forced_max_zoom: - maxzoom=forced_max_zoom - else: - maxzoom=minzoom - while True: - minx,miny=deg2num(minlat,minlon,maxzoom) - maxx,maxy=deg2num(maxlat,maxlon,maxzoom) - print maxzoom,':',minx,'-',maxx,'/',miny,'-',maxy - if (maxx-minx>32) or (maxy-miny>24) or (maxzoom==16): - break - else: - maxzoom=maxzoom+1 - - ins = conn.cursor() - print minlat,maxlat,minlon,maxlon,minzoom,maxzoom - ins.execute('insert into render_queue(minlat,maxlat,minlon,maxlon,minzoom,maxzoom) values(?,?,?,?,?,?)',(minlat,maxlat,minlon,maxlon,minzoom,maxzoom)) - - conn.commit() - -def process_queue(db,map,force=False): - - from os import system - - conn = sqlite3.connect(db) - cur = conn.cursor() - cur.execute('select id,minlat,maxlat,minlon,maxlon,minzoom,maxzoom from render_queue') - list=cur.fetchall() - - for rec in list: - - id,minlat,maxlat,minlon,maxlon,minzoom,maxzoom=rec - - command = 'map='+map+ \ - ' z='+str(minzoom)+'-'+str(maxzoom)+ \ - ' lat='+str(minlat)+','+str(maxlat)+ \ - ' lon='+str(minlon)+','+str(maxlon) - - if force: - command = 'tirex-batch -n 0 '+command - else: - command = 'tirex-batch -n 0 '+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