Command line parameters for forced tile generation added
[pyrungps.git] / render_tiles.py
index a23b136fe8aba6a10a234f74155b9ddbad348f13..bef03c16d5f5eda3efa226d2feb34a17f0badb68 100644 (file)
@@ -9,10 +9,14 @@ def queue_render(db,filename):
 
   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()  
+  minlat,minlon,maxlat,maxlon=cur.fetchone()
+  queue_tiles(db,minlat,minlon,maxlat,maxlon)
+            
+def queue_tiles(db,minlat,minlon,maxlat,maxlon,forced_max_zoom=None):
+
+  conn = sqlite3.connect(db)
   
   # определяем примерный стартовый зум
   
@@ -31,7 +35,13 @@ def queue_render(db,filename):
   if miny>maxy:
     miny,maxy = maxy,miny
   
-  for zoom in range(9,16):
+  minzoom=9
+  if forced_max_zoom:
+    maxzoom=forced_max_zoom
+  else:
+    maxzoom=16  
+  
+  for zoom in range(minzoom,maxzoom+1):
     
     n = 2 ** zoom
     
@@ -44,9 +54,10 @@ def queue_render(db,filename):
     print zoom,minxt,maxxt,minyt,maxyt
     ins.execute('insert into render_queue(zoom,minx,maxx,miny,maxy) values(?,?,?,?,?)',(zoom,minxt,maxxt,minyt,maxyt))
 
-    if (maxxt-minxt>16) or (maxyt-minyt>12):
-      conn.commit()
-      break
+    if not forced_max_zoom:
+      if (maxxt-minxt>16) or (maxyt-minyt>12):
+        conn.commit()
+        break
 
   conn.commit()        
 
@@ -81,12 +92,20 @@ def main():
     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) in arguments", metavar="MAP")
   (options, args) = parser.parse_args()  
 
   db=options.directory+'/gpx.db'
   map=options.map  
+  zoom=options.zoom
+
+  if zoom:
+    minlat,minlon,maxlat,maxlon=args
+    queue_tiles(db,float(minlat),float(minlon),float(maxlat),float(maxlon),int(zoom))
 
-  process_queue(db,map)
+  if map:
+    process_queue(db,map)
   
 if __name__ == "__main__":