Mapbox/Rasterio 命令行工具完全指南
rasterio 项目地址: https://gitcode.com/gh_mirrors/ras/rasterio
概述
Mapbox/Rasterio 提供了一套强大的命令行工具(CLI),名为 rio
,用于处理栅格数据。这套工具基于 Python 的 Click 框架开发,允许用户通过简单的命令完成复杂的栅格操作,无需编写 Python 脚本。
基础命令结构
所有 rio 命令都遵循相同的基本结构:
rio [全局选项] 子命令 [子命令选项] [参数]
常用全局选项包括:
-v
/--verbose
:增加输出详细程度-q
/--quiet
:减少输出信息--version
:显示版本信息--help
:显示帮助信息
常用子命令详解
1. 信息查询类命令
info - 获取栅格信息
rio info 输入文件.tif
这个命令会返回栅格的基本信息,包括:
- 波段数量
- 数据类型
- 坐标系
- 地理范围
- 分辨率
- 无数据值等
添加 --verbose
选项可以获取更详细的统计信息。
bounds - 获取边界框
rio bounds 输入文件.tif
输出结果为 GeoJSON 格式的边界框,可直接用于地理可视化。
2. 数据转换类命令
convert - 格式转换
rio convert 输入.tif 输出.png
支持的功能包括:
- 数据类型转换(通过
--dtype
指定) - 数据值范围缩放(通过
--scale-ratio
和--scale-offset
) - 格式转换(自动根据扩展名识别)
stack - 波段堆叠
rio stack 输入1.tif 输入2.tif 输出.tif
将多个单波段文件合并为多波段文件,支持灵活选择波段:
--bidx N
:选择第N个波段--bidx M,N,O
:选择多个波段--bidx M..O
:选择波段范围
3. 空间操作类命令
clip - 栅格裁剪
rio clip 输入.tif 输出.tif --bounds xmin ymin xmax ymax
或者使用模板文件定义裁剪范围:
rio clip 输入.tif 输出.tif --like 模板文件.tif
warp - 栅格重投影
rio warp 输入.tif 输出.tif --dst-crs EPSG:3857
支持多种重采样方法(通过 --resampling
指定)。
mask - 基于矢量掩膜
rio mask 输入.tif 输出.tif --geojson-mask 掩膜.geojson
可选参数:
--crop
:裁剪到掩膜范围--invert
:反转掩膜
4. 分析类命令
calc - 栅格计算
rio calc "(+ (read 1) 100)" 输入.tif 输出.tif
支持类Lisp语法表达式,可以进行基本的数学运算和逻辑操作。
sample - 采样点值
echo "x坐标 y坐标" | rio sample 输入.tif
获取指定坐标点的像元值。
5. 元数据编辑命令
edit-info - 编辑元数据
rio edit-info 文件.tif --crs EPSG:4326 --nodata 0
可编辑的元数据包括:
- 坐标系 (
--crs
) - 仿射变换 (
--transform
) - 无数据值 (
--nodata
) - 颜色解释 (
--colorinterp
) - 标签 (
--tag
)
高级用法技巧
创建选项
许多创建新文件的命令支持格式特定的创建选项:
rio convert 输入.tif 输出.tif --co tiled=true --co blockxsize=256 --co blockysize=256 --co compress=LZW
常用创建选项:
tiled
:是否分块存储blockxsize
/blockysize
:块大小compress
:压缩算法
管道操作
rio 命令支持 Unix 管道,可以与其他地理处理工具链式使用:
rio bounds 输入.tif | geojsonio
批量处理
结合 shell 脚本可以实现批量处理:
for file in *.tif; do
rio convert "$file" "output/${file%.*}_8bit.tif" --dtype uint8
done
性能优化建议
- 分块处理:对大文件使用
--co tiled=true
选项 - 概览图:对经常浏览的大文件创建概览图:
rio overview --build 2,4,8,16 输入.tif
- 压缩存储:根据数据类型选择合适的压缩算法
- 内存映射:对大文件处理时考虑使用内存映射选项
常见问题解答
Q:如何查看所有可用命令? A:运行 rio --help
查看所有命令列表。
Q:如何获取特定命令的帮助? A:运行 rio 命令名 --help
查看详细帮助。
Q:处理失败时如何调试? A:添加 -v
选项增加输出详细程度,或使用 insp
命令交互式调试:
rio insp --ipython 问题文件.tif
通过掌握这些命令行工具,用户可以高效地完成各种栅格数据处理任务,而无需编写复杂的 Python 代码。对于更复杂的操作,建议结合 Rasterio 的 Python API 使用。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考