importToMbtiles
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的更多相关文章
随机推荐
- 初涉Java方法
初涉Java方法 方法就是一段可重复调用的代码段,方法命名规范,第一个单词小写,从第二个单词开始首字母均大写. 格式: public static 返回值类型 ...
- :nth-child(n)选择器
p:nth-child(n) 选择属于父元素的第n个子元素的每个p标签
- vertical-align css属性
vertical-align 属性设置元素的垂直对齐方式. vertical-align 的属性值: baseline:默认.元素放置在父元素的基线上. sub:垂直对齐文本的下标. super:垂直 ...
- spring boot 集成 thymeleaf
例如meta标签,低版本标签必须要闭合,高版本不用这么严格. pom文件引入高版本jar包如下,propertis里添加:
- 2-4 完整Todolist案例
在2-3 的基础上继续,综合前面的Todolist编写一个完整的案例,实现基本的输入内容,添加内容,点击删除内容 稍微讲解54行代码 splice()的用法
- Java并发框架AbstractQueuedSynchronizer(AQS)
1.前言 本文介绍一下Java并发框架AQS,这是大神Doug Lea在JDK5的时候设计的一个抽象类,主要用于并发方面,功能强大.在新增的并发包中,很多工具类都能看到这个的影子,比如:CountDo ...
- RC1015 cannot open include file 'atlres.h'
fatal error RC1015: cannot open include file 'atlres.h' 问题:此问题是由于rc文件没有找到 atlres.h导致的 (原因不详) 解决:工程 ...
- Apache Flume 1.7.0 源码编译 导入Eclipse
前言 最近看了看Apache Flume,在虚拟机里跑了一下flume + kafka + storm + mysql架构的demo,功能很简单,主要是用flume收集数据源(http上报信息),放入 ...
- Java NIO中的缓冲区Buffer(二)创建/复制缓冲区
创建缓冲区的方式 主要有以下两种方式创建缓冲区: 1.调用allocate方法 2.调用wrap方法 我们将以charBuffer为例,阐述各个方法的含义: allocate方法创建缓冲区 调用all ...
- 大牛是怎么思考设计MySQL优化方案
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已. 1.优化的哲学 注:优化有风险,涉足需谨 ...