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. 在Markdown中写注释

    概述 下面是我整理的在Markdown中写注释的几种方法,供自己开发时参考,相信对其他人也有用. html标签 既然Markdown内嵌html语法,那么就可以用可以用隐藏的html标签. 注意:需要 ...

  2. Shell-16--函数

    函数的定义和调用放在一起(同一个shell)的好处是不会存在路径的问题:如果功能复杂,则应分开

  3. WCF绑定netTcpBinding寄宿到IIS

    继续沿用上一篇随笔中WCF服务类库 Wettery.WcfContract.Services WCF绑定netTcpBinding寄宿到控制台应用程序 服务端 添加WCF服务应用程序 Wettery. ...

  4. Qt之实现360安全卫士主界面代码开源

    匆匆一年又过去了,总结去年一年的节奏就是忙爆了:生活忙.工作忙,值得庆幸的是没有瞎忙:今天打开博客园查看我的博客,才发现几乎差不多一年时间没写博客了:博客文章就是记忆,就是曾经努力过的见证,感谢博客园 ...

  5. maven 下载镜像文件卡,下载pom文件慢的问题

    问题原因: maven默认的镜像库URL为 http://maven.net.cn/content/groups/public/ 由于网络原因,可能导致响应速度超级慢,或者无法效应: 解决方法: 配置 ...

  6. XyTalk企业即时通讯IM开始开源

    网址: https://gitee.com/475660/xyTalk-pc https://github.com/xy-Group/xyTalk-pc Xy.Platform是一个高性能.可扩展的企 ...

  7. Docker 部署Django项目

    使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [root@opsweb]# tree opsweb opsw ...

  8. mongodb 语句和SQL语句对应(SQL to Aggregation Mapping Chart)

    SQL to Aggregation Mapping Chart https://docs.mongodb.com/manual/reference/sql-aggregation-compariso ...

  9. MRTG在Windows平台的安装及使用

    MRTG (Multi Router Traffic Grapher)是一款监控网络流量负载的免费软件,目前利用MRTG已经开发出了各式各样的统计系统: 1.系统资源负载统计,例如:磁盘空间.CPU负 ...

  10. 【PyTorch深度学习60分钟快速入门 】Part2:Autograd自动化微分

      在PyTorch中,集中于所有神经网络的是autograd包.首先,我们简要地看一下此工具包,然后我们将训练第一个神经网络. autograd包为张量的所有操作提供了自动微分.它是一个运行式定义的 ...