Yoav: Hi. I wrote a small python script to generate an rmaps-compatible sqlitedb from a directory of tiles. Runs in linux (as opposed to the java-based solution) and takes less memory so it's suitable for large databases.
7:41
I used it to generate a topo map of the entire state of Israel. Works well. Anyway, if you have a need for such script, let me know.
0:15
Yoav: Here's the script:
buildb.py:
#!/usr/bin/env python
# buildb.py - build an sqlitedb for rmaps from a tree of map tiles.
# (Yoav Weiss)
#
# Syntax: buildb.py
#
import sqlite3,sys,os
#minzoom=100
#maxzoom=0
db=sqlite3.connect(sys.argv[1])
try:
db.execute("CREATE TABLE tiles (x int, y int, z int, s int, image blob, PRIMARY KEY (x,y,z,s));")
except:
pass
for z in os.listdir(sys.argv[2]):
#if int(z) > maxzoom:
#maxzoom = int(z)
#if int(z) < minzoom:
#minzoom = int(z)
for x in os.listdir(sys.argv[2]+'/'+z):
for y in os.listdir(sys.argv[2]+'/'+z+'/'+x):
db.execute('INSERT INTO "tiles" VALUES(?,?,?,?,?);',(int(x),int(y.split('.')[0]),17-int(z),0,buffer(file("%s/%s/%s/%s" % (sys.argv[2],z,x,y)).read())))
#db.execute("CREATE TABLE info(minzoom,maxzoom);")
#db.execute('INSERT INTO "info" VALUES(?,?);',(minzoom,maxzoom))
try:
db.execute("CREATE TABLE android_metadata (locale TEXT);")
db.execute('INSERT INTO "android_metadata" VALUES("en");')
except:
pass
try:
db.execute('CREATE INDEX IND on tiles (x,y,z,s);')
except:
pass
db.commit();