云优化 GeoTIFF 文件源
warning
此功能目前不稳定,因此未包含在默认构建中。 其行为可能会在补丁版本中发生变化。
要尝试它,安装 Rust,并运行此命令下载、编译和安装带有不稳定功能的 martin:
cargo install martin --features=unstable-cog
由于当前实现的限制,它不稳定:
我们欢迎贡献以帮助稳定此功能!
Martin 支持提供本地 COG(云优化 GeoTIFF) 文件等栅格源。
note
对于 S3 等远程存储上的 cog 和其他改进,您可以在 issue 875 上跟踪它们。 我们欢迎任何帮助。
支持的颜色类型和每样本位数
| 颜色类型 | 每样本位数 | 支持 | 状态 |
|---|---|---|---|
| rgb/rgba | 8 | ✅ | |
| rgb/rgba | 16/32… | 🛠️ | 开发中 |
| gray | 8/16/32… | 🛠️ | 开发中 |
支持的压缩
- None
- LZW
- Deflate
- PackBits
使用 CLI 运行 Martin 提供 cog 文件
# 配置包含 `*.tif` 或 `*.tiff` TIFF 文件的目录。
martin /with/tiff/dir1 /with/tiff/dir2
# 配置专用 TIFF 文件
martin /path/to/target1.tif /path/to/target2.tiff
# 配置目录和专用 TIFF 文件的组合。
martin /with/tiff/files /path/to/target1.tif /path/to/target2.tiff
使用配置文件运行 Martin
要在 martin 中添加 COG,只需添加
# 云优化 GeoTIFF 文件源
cog:
paths:
# 扫描整个目录,匹配所有 *.tif 和 *.tiff 文件
- /dir-path
# 特定 TIFF 文件将作为 cog 源发布
- /path/to/cog_file1.tif
- /path/to/cog_file2.tiff
sources:
# 将源名称匹配到单个文件的命名源
cog-src1: /path/to/cog1.tif
cog-src2: /path/to/cog2.tif
关于 COG
COG 只是云优化 GeoTIFF 文件。
TIFF 是一种图像文件格式。TIFF 标签类似于内部的键值对,用于描述有关 TIFF 文件的元数据,如 ImageWidth、ImageLength 等。
GeoTIFF 是一个有效的 TIFF 文件,带有一组 TIFF 标签来描述与之关联的“制图“信息。
COG 是一个有效的 GeoTIFF 文件,具有一些高效读取的要求。也就是说,所有 COG 文件都是有效的 GeoTIFF 文件,但并非所有 GeoTIFF 文件都是有效的 COG 文件。为了快速访问 TIFF 文件中的瓦片,Martin 依赖于要求/建议(如关于缩小分辨率子文件的要求和内容划分策略),因此我们在文档和配置文件中使用术语 COG 而不是 GeoTIFF。
您可能想访问这些规范:
使用 GDAL 生成 COG
您可以使用 gdal_translate 或 gdalwarp 生成 cog。有关更多详细信息,请参阅 gdal 文档。
# gdal-bin 安装
# sudo apt update
# sudo apt install gdal-bin
# gdalwarp
gdalwarp src1.tif src2.tif out.tif -of COG
# 或 gdal_translate
gdal_translate input.tif output_cog.tif -of COG
ZXY 到 tiff 块的映射
- 单个 TIFF 文件可以包含有关相同空间区域的许多子文件,每个子文件具有不同的分辨率
- 子文件由许多瓦片组织
因此,基本上存在从 zxy 到 TIFF 子文件的瓦片的映射。
| zxy | 映射到 |
|---|---|
| 缩放级别 | TIFF 文件中的哪个子文件 |
| X 和 Y | 子文件中的哪个瓦片 |
客户端只需读取 COG 的头部即可找出从 zxy 到块编号和子文件编号的映射。Martin 通过此映射向前端获取瓦片。