Beispiel #1
0
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)
Beispiel #2
0
 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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)