import sqlite3, sys, logging, time, os, json, zlib, re

'''

MapDBImporter-latest -f png -mName "World Light" -mDescription "A simple, light grey world map" -s "F:\google\map\zoom" -d "F:\google\map\mbtiles.sqlite"

'''

#mbtiles_file = r"F:\\google\\map\\mbtiles.sqlite"

mbtiles_file = r"D:\\mbtiles.sqlite"

conn = sqlite3.connect(mbtiles_file)

cur = conn.cursor()

'''

cur.execute("create table tiles ( zoom_level integer,  tile_column integer,  tile_row integer,  tile_data blob); ")

cur.execute("create table metadata(name text, value text);")

cur.execute("CREATE TABLE grids (zoom_level integer, tile_column integer, tile_row integer, grid blob);")

cur.execute("CREATE TABLE grid_data (zoom_level integer, tile_column integer, tile_row integer, key_name text, key_json text);")

cur.execute("create unique index name on metadata (name);")

cur.execute("create unique index tile_index on tiles(zoom_level, tile_column, tile_row);")

'''

'''

name = "format"

value = "png"

cur.execute('insert into metadata (name, value) values (?, ?)', (name, value))

name = "name"

value = "world"

cur.execute('insert into metadata (name, value) values (?, ?)', (name, value))

name = "description"

value = "Metadata Information"

cur.execute('insert into metadata (name, value) values (?, ?)', (name, value))

name = "version"

value = "3"

cur.execute('insert into metadata (name, value) values (?, ?)', (name, value))

conn.commit()

#

'''

#cur.execute('delete from tiles')

def getDirs(path):
     return [name for name in os.listdir(path) if os.path.isdir(os.path.join(path, name))]

directory_path = r"E:\\google\\en\\map"

count = 0

for zoomDir in getDirs(directory_path):
     print("start level: " + zoomDir)
     z = int(zoomDir)
     for columnDir in getDirs(os.path.join(directory_path, zoomDir)):
         x = int(columnDir)
         for current_file in os.listdir(os.path.join(directory_path, zoomDir, columnDir)):
             file_name, ext = current_file.split('.', 1)
             y = int(file_name)
             f = open(os.path.join(directory_path, zoomDir, columnDir, current_file), 'rb')
             file_content = f.read()
             f.close()
             #
             cur.execute("insert into tiles (zoom_level, tile_column, tile_row, tile_data) values(?, ?, ?, ?);", (z, x, y, sqlite3.Binary(file_content)))
             count = count + 1
             if count > 1500:
                 count = 0
                 conn.commit()
     conn.commit()
     conn.commit()
     print("finish level: " + zoomDir)

conn.commit()

conn.commit()

conn.close()

importToMbtiles的更多相关文章

随机推荐

  1. ie8兼容视频播放的探索(探索过程稍微有点长,时间紧迫和耐心稍微差一点点的小伙伴直接往下拉)

    需求: 前几天接到一个需求,需要在网页中嵌入视频,并且要兼容ie8:然后我就开始了如下的探索...... 探索过程: 我先思考有什么方法可以在网页中嵌入视频,然后找到2种常用的方法——video标签和 ...

  2. Mybatis框架二:增删改查

    这里是搭建框架和准备数据: http://www.cnblogs.com/xuyiqing/p/8600888.html 实现增删改查功能: 测试类: package junit; import ja ...

  3. python中两种栈实现方式的性能对比

    在计算机的世界中,同一个问题,使用不同的数据结构和算法实现,所使用的资源有很大差别 为了方便量化python中算法的资源消耗,对性能做测试非常有必要,这里针对stack做了python语言 下的性能分 ...

  4. date内置对象

    声明一个日期对像:var date=new Date(); 获取日:date.getDate()    1-31日 获取星期:date.getDay()   星期0-6 获取月: date.getMo ...

  5. A Nice Paper About Mobile Data Offloading

    关于Mobile Data Offloading这个研究领域的Paper基本上该有的都看过了,我想即使再有也无非是那些套路,新不到哪去.同样,这篇paper也是这样,它的出发点是改进原有的利用ad h ...

  6. .NET手记-定义类和接口的扩展方法

    对于iOS开发者来说,使用扩展方法是家常便饭.因为有很多的类是有系统框架的定义的,我们不能修改或者不想修改他们的源码,但是我们又想要给他添加一些扩展方法来使用.这时定义扩展方法就是很有用的方式了,正如 ...

  7. 内存管理cpuset,mempolicy[原理]

    介绍cpuset,mbind,set_mempolicy在内存管理上的应用 change log :确定先从mempolicy的man 手册翻译开始研究,计划如下 .先从man手册入手,通过实现mem ...

  8. app自动化测试之实战应用(魅族计算器)

    模拟魅族计算器加法计算: from appium import webdriver desired_caps = {} desired_caps['deviceName'] = '621QECQ23D ...

  9. selenium的chromedriver对应的chrome版本

    chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html chromedriver版本 支持的Chrome版本 v2 ...

  10. 把本地项目放进新建的仓库(idea)

    1,获取仓库地址 比如: git@bitbucket.org:360717118/springboot_servlet-filter-listener-file.git,   2,idea 设置: