OSM tile rendering queue added
authorRoman Bazalevsky <rvb@rvb.name>
Thu, 31 Jul 2014 10:29:23 +0000 (14:29 +0400)
committerRoman Bazalevsky <rvb@rvb.name>
Thu, 31 Jul 2014 10:29:23 +0000 (14:29 +0400)
render_tiles.py [new file with mode: 0644]

diff --git a/render_tiles.py b/render_tiles.py
new file mode 100644 (file)
index 0000000..1c57b0b
--- /dev/null
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# coding: UTF-8
+
+import sqlite3
+
+import math
+
+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()  
+  
+  # определяем примерный стартовый зум
+  
+  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
+  
+  for zoom in range(9,16):
+    
+    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 (maxxt-minxt>16) or (maxyt-minyt>12):
+      conn.commit()
+      break
+
+  conn.commit()        
+  
\ No newline at end of file