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. AndroidStudio环境安装与配置

    前言 大家好,给大家带来AndroidStudio环境安装与配置的概述,希望你们喜欢 AndroidStudio IDE下载 我们选择用Android Studio开发Android的App,Andr ...

  2. Shell-7--环境变量配置文件

    环境变量配置文件修改后需要重启才生效,如果想不重启生效,需要 source 配置文件 . 配置文件

  3. 关于No mapping found for HTTP request with URI...

    当你看到这篇博客,说明你已经像我一样快疯了!但是还好..找到了!!! 网上的那些东西真心看了更闹心,因为还没解决... 原因一.访问路径确实错了,导致Dispatcher找不到给你传达的地方,修改下领 ...

  4. Spring Boot功能实战

    添加web功能启动器 添加了Spring Boot基础依赖后,如要使用web mvc功能,只需要添加如下启动器即可,Spring Boot会自动装配web功能. <dependencies> ...

  5. SQL分别求行、列的平均值

    日常工作中,会需要用SQL求平均值,分别是求某一项的平均值或求某一个对象的平均值,放到表格就是求一行中的几个字段的平均值和求一列的平均值. 第一种:[列的平均值]AVG:这个函数相信大家都不陌生的,求 ...

  6. docker容器中Postgresql 数据库备份

    查看运行的容器: docker ps 进入目标容器: docker exec -u root -it 容器名 /bin/bash docker 中,以root用户,创建备份目录,直接执行如下命令, p ...

  7. RPC的原理总结

    一.RPC的引入 早期单机时代,一台电脑上运行多个进程,大家各干各的,老死不相往来.假如A进程需要一个画图的功能,B进程也需要一个画图的功能,程序员就必须为两个进程都写一个画图的功能.这不是整人么?于 ...

  8. python列表常用方法

    list是一个类,用中括号括上,逗号分隔,元素可以是数字,字符,字符串,也可以是嵌套列表,布尔类型. 1.通过索引取值 li=[1,12,9,'age',['wangtianning',[19,'10 ...

  9. python计算数组中对象出现的次数并且按照字典输出

    解决的问题如题,如果对Python不是很熟悉,解决的办法可能如下: test_array=[1,2,3,1,2,3]; def count_object1(array): result_obj={} ...

  10. SQL 必知必会·笔记<8>分组数据

    1. 使用GROUP BY子句创建分组 示例: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 注意 GRO ...