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. Android数据存储之SharedPreferences使用

    SharedPreferences是Android中一种轻型的数据存储类.本质上是基于XML文件进行存储Key-Value键值对的数据,生成的XML文件的目录在/data/data/包名/Shared ...

  2. ElasticSearch权威指南学习(索引管理)

    创建索引 当我们需要确保索引被创建在适当数量的分片上,在索引数据之前设置好分析器和类型映射. 手动创建索引,在请求中加入所有设置和类型映射,如下所示: PUT /my_index { "se ...

  3. fast.ai(零)windows + pytorch 0.4

    一.下载 git clone https://github.com/fastai/fastai.git 或者直接下载下来 二.安装pytorch 去官网安装建议安装即可 https://pytorch ...

  4. tomcat-四种运行模式和三种部署模式(优化)

    四中运行模式如下: 1-bio: 传统的Java I/O操作,同步且阻塞IO. 2-nio: JDK1.4开始支持,同步阻塞或同步非阻塞IO 3-aio(nio.2): JDK7开始支持,异步非阻塞I ...

  5. [Leetcode]394.字符串解码

    题目与解释 给定一个经过编码的字符串,返回它解码后的字符串. 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次.注意 k 保证为正 ...

  6. Windows抓屏技术

    Windows桌面共享中一些常见的抓屏技术 1. BitBlt   我想做Windows开发应该都知道这个API, 它能实现DC间的内容拷贝, 如果我们把源DC指定成Monitor DC或是桌面DC, ...

  7. Spring Boot + Spring Cloud 构建微服务系统(八):分布式链路追踪(Sleuth、Zipkin)

    技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致 ...

  8. C++ 单例模式实现

    #include <iostream> #include <mutex> std::mutex mtx; class Singleton { private: Singleto ...

  9. Kafka的Log存储解析

    引言 Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的.每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建 ...

  10. Scrollanim – CSS3 & JavaScript 创建滚动动画

    Scrollanim 是结合 CSS3 和 JavaScript 来创建令人惊叹的滚动动画的开源库. Scrolanim 支持在页面上的所有可用的元素的位置.有很多的自定义参数可以配置使用,构建出精彩 ...