X-Git-Url: https://git.rvb.name/pyrungps.git/blobdiff_plain/1690b8b7c8ccfdf60be2b33b314e6c26bdef86e6..94f62add438cdf546fdae207ede72c05daf66c00:/render_tiles.py diff --git a/render_tiles.py b/render_tiles.py deleted file mode 100755 index 443ae80..0000000 --- a/render_tiles.py +++ /dev/null @@ -1,174 +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) - conn.text_factory = str - 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>16) or (maxy-miny>12) or (maxzoom==16): - break - else: - maxzoom=maxzoom+1 - - if maxzoommaxx: - tx=minx - maxx=minx - minx=tx - - if miny>maxy: - ty=miny - maxy=miny - miny=ty - - print zoom,minx,miny,maxx,maxy - - maps = map.split(',') - - for map_name in maps: - - command = 'render_list -a -m '+map+ \ - ' -z '+str(zoom)+' -Z '+str(zoom)+ \ - ' -x '+str(minx)+' -X '+str(maxx)+ \ - ' -y '+str(miny)+' -Y '+str(maxy) - if force: - command = command+ ' --force' - - print command - - if system(command)<>0: - return - - 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") - parser.add_option("-r", "--renderer", dest="renderer", - help="Rendering backend: tirex or renderd") - (options, args) = parser.parse_args() - - db=options.directory+'/gpx.db' - map=options.map - zoom=options.zoom - if not zoom: - zoom=12 - force=(options.force=='on') - - if options.renderer: - renderer=options.renderer - else: - print "Using default rendering backend..." - renderer="default" - - if len(args)==1: - filename,=args - print "Rendering file: "+filename+"\n" - queue_render(db,filename) - elif len(args)==4: - minlat,minlon,maxlat,maxlon=args - print "Rendering region "+minlat+'..'+maxlat+' / '+minlon+'..'+maxlon+"\n" - queue_tiles(db,float(minlat),float(minlon),float(maxlat),float(maxlon),int(zoom)) - - if map: - print "Processing map(s) "+map+"\n" - process_queue(db,map,force,renderer) - -if __name__ == "__main__": - - main() - \ No newline at end of file