我正在尝试将 .mbtiles 数据库加载到 C# 应用程序中,完成项目所需的相关数据存储在数据库中的 var_blob 列中。有人告诉我数据是压缩的,GZip 应该能够解压缩它,但我似乎找不到与此相关的任何内容。
我什至不知道如何去做这件事。我是否尝试将(相当大的)blob 作为字符串加载,然后使用字节数组?只是把它打出来听起来很荒谬。
提前致谢。
编辑:供参考,数据库是 SQLite 数据库。
我最近创建了一个 sqlite-compressions 扩展,它将
gzip
和 brotli
压缩、解压和测试功能添加到 sqlite 作为扩展(或者您可以直接从 Rust 代码中使用它)。讽刺的是,它也是为 MBTiles 处理而创建的(作为 Martin Tile Server 的一部分,它具有广泛的 mbtiles 支持)。
我建议加载扩展,并仅使用
SELECT gzip_decode(tile_data) FROM tiles WHERE ...
- 这样您将直接从 SQLite 获得解压的 protobuf。不过,您仍然需要解析它。