def esripack_to_mbtiles(directory_path, mbtiles_file, metadata_file=""): silent = False # 安静模式 con = mbtiles_connect(mbtiles_file, silent) cur = con.cursor() optimize_connection(cur) mbtiles_setup(cur) starttime = datetime.datetime.now() # 计算时间 # 写入配置参数 try: metadata = json.load(open(metadata_file, 'r')) # metadata.json for name, value in metadata.items(): cur.execute('insert into metadata (name, value) values (?, ?)', (name, value)) if not silent: logger.info('metadata from metadata.json restored') except IOError: if not silent: logger.warning('metadata.json not found') bundle_list = get_bundle_list_from_dir(directory_path) for bundle in bundle_list: get_tdt_tile_from_bundle(bundle, cur) optimize_database(con, silent) endtime = datetime.datetime.now() # 计算时间 print("Mbtiles数据生成成功!运行时间(s):", (endtime - starttime).seconds)
def __init__(self, filepath, create=False, force=False, silent=False): self._silent = silent if force and os.path.exists(filepath): os.remove(filepath) self._connnection = mb.mbtiles_connect(filepath, self._silent) self._cursor = self._connnection.cursor() mb.optimize_connection(self._cursor) if create: mb.mbtiles_setup(self._cursor)
def tdtzip_to_mbtiles(zipfile_path, mbtiles_file, metadata_file=""): silent = False # 安静模式 compression = False # 压缩 if not silent: logger.info("Importing disk to MBTiles") logger.debug("%s --> %s" % (zipfile_path, mbtiles_file)) con = mbtiles_connect(mbtiles_file, silent) cur = con.cursor() optimize_connection(cur) mbtiles_setup(cur) #~ image_format = 'png' image_format = 'png|jpg|tif' # 支持的文件格式 starttime = datetime.datetime.now() # 计算时间 # 写入配置参数 try: metadata = json.load(open(metadata_file, 'r')) # metadata.json for name, value in metadata.items(): cur.execute('insert into metadata (name, value) values (?, ?)', (name, value)) if not silent: logger.info('metadata from metadata.json restored') except IOError: if not silent: logger.warning('metadata.json not found') count = 0 zf = zipfile.ZipFile(zipfile_path, "r") for file in zf.namelist(): import re matchObj = re.match( r'(?P<img>.*)_(?P<proj>.*)_(?P<time>\d{8})_(?P<x>\d*)' r'_(?P<y>\d*)_(?P<z>\d*).(?P<type>.*)', file, re.M | re.I) if matchObj: x = int(matchObj.groupdict()['x']) y = int(matchObj.groupdict()['y']) z = int(matchObj.groupdict()['z']) image_type = matchObj.groupdict()['type'] if image_type.lower() in image_format: bytes = zf.read(file) xyz = file.split('_') x = int(xyz[-3]) y = int(xyz[-2]) z = int(xyz[-1].split('.')[0]) if not silent: logger.debug( ' Read tile from Zoom (z): %i\tCol (x): %i\tRow (y): %i' % (z, x, y)) cur.execute( """insert into tiles (zoom_level, tile_column, tile_row, tile_data) values (?, ?, ?, ?);""", (z, x, y, sqlite3.Binary(bytes))) optimize_database(con, silent) endtime = datetime.datetime.now() # 计算时间 print("Mbtiles数据生成成功!运行时间(s):", (endtime - starttime).seconds)
def esritiles_to_mbtiles(directory_path, mbtiles_file, metadata_file=""): silent = False # 安静模式 compression = False # 压缩 if not silent: logger.info("Importing disk to MBTiles") logger.debug("%s --> %s" % (directory_path, mbtiles_file)) con = mbtiles_connect(mbtiles_file, silent) cur = con.cursor() optimize_connection(cur) mbtiles_setup(cur) #~ image_format = 'png' image_format = 'png|jpg|tif' # 支持的文件格式 starttime = datetime.datetime.now() # 计算时间 # 写入配置参数 try: metadata = json.load(open(metadata_file, 'r')) # metadata.json for name, value in metadata.items(): cur.execute('insert into metadata (name, value) values (?, ?)', (name, value)) if not silent: logger.info('metadata from metadata.json restored') except IOError: if not silent: logger.warning('metadata.json not found') count = 0 for zoom_dir in get_dirs(directory_path): if "L" in zoom_dir: z = int(zoom_dir[1:]) for row_dir in get_dirs(os.path.join(directory_path, zoom_dir)): x = int(row_dir[1:], 16) for current_file in os.listdir( os.path.join(directory_path, zoom_dir, row_dir)): file_name, ext = current_file.split('.', 1) f = open( os.path.join(directory_path, zoom_dir, row_dir, current_file), 'rb') file_content = f.read() f.close() tile_size = len(file_content) if tile_size == 872: # png_kong = 876 continue y = int(file_name[1:], 16) if (ext[1].lower() in image_format): if not silent: logger.debug( ' Read tile from Zoom (z): %i\tCol (x): %i\tRow (y): %i' % (z, x, y)) cur.execute( """insert into tiles (zoom_level, tile_column, tile_row, tile_data) values (?, ?, ?, ?);""", (z, x, y, sqlite3.Binary(file_content))) optimize_database(con, silent) endtime = datetime.datetime.now() # 计算时间 print("Mbtiles数据生成成功!运行时间(s):", (endtime - starttime).seconds)
import mbutil tileFile = r"E:\GHANA_Data\basemap\selected\031113120110_16.mbtiles" silent = False con = mbutil.mbtiles_connect(tileFile, silent) cur = con.cursor() mbutil.optimize_connection(cur) mbutil.mbtiles_setup(cur) mbutil.compression_prepare(cur, silent) mbutil.compression_do(cur, con, 256, silent) mbutil.compression_finalize(cur, con, silent) mbutil.optimize_database(con, silent)