【问题标题】:How can I merge two Mbtiles?如何合并两个 Mbtile?
【发布时间】:2022-11-08 04:27:55
【问题描述】:

我通过 QGIS 创建了 2 个 Mbtile:1) 一个 Mbtile 从缩放 0 到 10 & 是整个世界的地图,2) 另一个从缩放 0 到 17 & 是一个国家的详细地图。

我想合并这两个Mbtile,并让详细国家的Mbtile与整个世界的Mbtile重叠。合并的结果也是从缩放 0 到 17(整个世界将在缩放 10 时消失,但该国家将保留到缩放 17)。

我应该使用什么程序/方法?是否可以通过 QGIS 合并它们?

【问题讨论】:

    标签: merge geospatial qgis mbtiles


    【解决方案1】:

    我使用 Python 来合并 MBTiles 文件。请务必更新元数据表,注意最小最大缩放。它们只是具有独特扩展名的 sqlite 数据库。

    此示例不包括数据验证。我没有测试这个例子——因为它是从我批处理 QGIS 输出的地方剥离出来的。

    使用 QGIS 的 python 接口以外的 IDE 问题较少。不需要任何特定于 QGIS 或 PyQGIS 的东西。

    import sqlite3 as sqlite
    
    def processOneSource(srcDB, dstDB):
        # create_index_sql = "CREATE UNIQUE INDEX tile_index on tiles (zoom_level, tile_column, tile_row);"
        # dstDB.connection.execute(create_index_sql)
        # the index forces an error if there is already a tile for the same zxy
    
        sqlite_insert_blob_query = """ INSERT INTO tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (?, ?, ?, ?)"""
    
        tiles = srcDB.connection.execute('select zoom_level, tile_column, tile_row, tile_data from tiles;')
    
        for t in tiles:
            z = t[0]
            x = t[1]
            y = t[2]
            data = t[3]
    
            # example of how you might include exclude tiles
            if not (z == 12 or z == 13 or z == 14 or z == 15 or z == 16):
                continue
    
            print(str((t[0], t[1], t[2])))
    
            data_tuple = (t[0], t[1], t[2], t[3])
            try:
                dstDB.connection.execute(sqlite_insert_blob_query, data_tuple)
            except Exception as e:
                print(e)
    
        dstDB.commit()
    
    
    if __name__ == '__main__':
        srcDB = sqlite.connect("path_to_yourfilename")
        dstDB = sqlite.connect("path_to_yourfilename")
        processOneSource(srcDB, dstDB)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-18
      • 2015-11-07
      • 2022-01-07
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多