Rasterio的命令行界面(CLI)是一个名为“rasterio”的程序。 在 Debian/Ubuntu 操作系统中,需要通过以下命令安装:
sudo apt install -y rasterio
rasterio允许您使用shell命令构建工作流,可以在命令提示下交互,也可以使用脚本。 rasterio子命令涵盖了许多常见的情况,与实现类似于python脚本的功能相比,使用现成的命令通常更方便。
rasterio程序是使用 Click 框架。它的插件系统允许外部模块共享一个公共的名称空间和处理上下文变量。
!rasterio --help
Usage: rasterio [OPTIONS] COMMAND [ARGS]... Rasterio command line interface. Options: -v, --verbose Increase verbosity. -q, --quiet Decrease verbosity. --aws-profile TEXT Select a profile from the AWS credentials file --aws-no-sign-requests Make requests anonymously --aws-requester-pays Requester pays data transfer costs --version Show the version and exit. --gdal-version --show-versions Show dependency versions --help Show this message and exit. Commands: blocks Write dataset blocks as GeoJSON features. bounds Write bounding boxes to stdout as GeoJSON. calc Raster data calculator. clip Clip a raster to given bounds. convert Copy and convert raster dataset. edit-info Edit dataset metadata. env Print information about the Rasterio environment. gcps Print ground control points as GeoJSON. info Print information about a data file. insp Open a data file and start an interpreter. mask Mask in raster using features. merge Merge a stack of raster datasets. overview Construct overviews in an existing dataset. rasterize Rasterize features. rm Delete a dataset. sample Sample a dataset. shapes Write shapes extracted from bands or masks. stack Stack a number of bands into a multiband dataset. transform Transform coordinates. warp Warp a raster dataset.
要使用 lzw
方法压缩它,请添加
!rasterio bounds /gdata/dem_data.tif --indent 2
{ "bbox": [ 120.99999965279999, 44.99999983200001, 125.00208297973, 47.002083162130006 ], "geometry": { "coordinates": [ [ [ 120.99999965279999, 44.99999983200001 ], [ 125.00208297973, 44.99999983200001 ], [ 125.00208297973, 47.002083162130006 ], [ 120.99999965279999, 47.002083162130006 ], [ 120.99999965279999, 44.99999983200001 ] ] ], "type": "Polygon" }, "properties": { "filename": "dem_data.tif", "id": "0", "title": "/gdata/dem_data.tif" }, "type": "Feature" }
calc
命令
增加0.19
这个 calc
命令将文件作为数组读取,在其上下文中计算类似Lisp的表达式,并将结果作为新文件写入。
numpy模块的成员以及算术和逻辑运算符是可用的内置函数和运算符。
它旨在进行简单的计算;任何需要多个步骤的计算都可以在Python中使用Rasterio和Numpy API更好地完成。
输入文件的带区数目可能不同,但行和列的数目应该相同。 输出文件将具有与输入相同的行数和列数,并且表达式结果的每个元素都有一个带区。 一个涉及n-d数组算术运算的表达式将产生一个n-d数组并产生一个n波段输出文件。
下面将生成一个3波段的geotiff,所有值的比例为0.95,增量为2。在表达式中, (read 1) 作为三维数组计算第一个输入数据集(3个频带)。
!rasterio calc "(+ 2 (* 0.95 (read 1)))" /data/gdata/geotiff_file.tif /tmp/out.tif
/bin/bash: line 1: rasterio: command not found
下面生成一个3波段的geotiff,其中第一个波段从输入的第一个波段复制,接下来的两个波段按第一个波段的平均值与各自的平均值之比缩放(缩小)。这个 --name 选项用于将数据集绑定到表达式中的名称。 (take a 1) 获取名为 a 作为二维数组 (asarray ...) 将二维数组的序列收集到三维数组中进行输出。
!rasterio calc "(asarray (take a 1) (* (take a 2) (/ (mean (take a 1)) (mean (take a 2)))) (* (take a 3) (/ (mean (take a 1)) (mean (take a 3)))))" \
> --name a=testsRGB.byte.tif /tmp/out.rgb.tif
Traceback (most recent call last): File "rasterio/_base.pyx", line 307, in rasterio._base.DatasetBase.__init__ File "rasterio/_base.pyx", line 218, in rasterio._base.open_dataset File "rasterio/_err.pyx", line 221, in rasterio._err.exc_wrap_pointer rasterio._err.CPLE_OpenFailedError: a=testsRGB.byte.tif: No such file or directory During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/bin/rasterio", line 8, in <module> sys.exit(main_group()) ^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/core.py", line 1130, in __call__ return self.main(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/core.py", line 1055, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/core.py", line 1657, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/core.py", line 1404, in invoke return ctx.invoke(self.callback, **ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/core.py", line 760, in invoke return __callback(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/click/decorators.py", line 26, in new_func return f(get_current_context(), *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/rasterio/rio/calc.py", line 151, in calc sources = [ ^ File "/usr/lib/python3/dist-packages/rasterio/rio/calc.py", line 152, in <listcomp> stack.enter_context(rasterio.open(path)) for name, path in inputs ^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/rasterio/env.py", line 451, in wrapper return f(*args, **kwds) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3/dist-packages/rasterio/__init__.py", line 304, in open dataset = DatasetReader(path, driver=driver, sharing=sharing, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "rasterio/_base.pyx", line 309, in rasterio._base.DatasetBase.__init__ rasterio.errors.RasterioIOError: a=testsRGB.byte.tif: No such file or directory
如果使用 --bounds ,值必须在输入的坐标参考系中。如果使用 --like ,边界将自动转换以匹配输入的坐标参考系。
它还可以结合使用fiona读取功能数据集的边界:
转换 增加0.25
这个 convert 命令将栅格数据集复制并转换为其他数据类型和格式(类似于 gdal_translate )
通过使用 --scale-ratio 和 --scale-offset 选项。目标栅格值计算为
例如,要将实际范围为0-4095到0-255的uint16数据缩放为uint8:
设置其 affine transformation matrix ,
或将其nodata值设置为,例如, 0 :
或将其颜色解释设置为红色、绿色、蓝色和阿尔法:
也可以表示为:
geojson特性可以使用stdin提供,也可以直接指定为第一个参数,输出可以裁剪到特性的范围内。
可以反转特征遮罩,以遮罩特征覆盖的像素,并保持特征不覆盖的像素。
可以使用 --verbose 选择权。
或者指数的基数和范围。
请注意,当前无法删除概述,并且在修改数据集的主带区时不会自动更新概述。
可以使用--ls选项打印有关现有概述的信息。
用于概述(内部或外部)的块大小(平铺宽度和高度)可以通过设置 GDAL_TIFF_OVR_BLOCKSIZE 环境变量的二次幂介于64和4096之间。默认值为128。
生成的文件将具有由geojson边界确定的左上角坐标(epsg:4326,默认值),像素大小约为30弧秒。中心位于多边形内或由Bresenham线算法选择的像素将被烧掉,默认值为1。
可以将栅格化为现有栅格并使用其他默认值:
也可以使用模板栅格进行栅格化,模板栅格将用于确定输出栅格的变换、尺寸和坐标参考系统:
geojson特性可以使用stdin提供,也可以直接指定为第一个参数,并且可以提供尺寸来代替像素分辨率:
其他选项可用,请参见:
上载到MapBox的结果文件如下: sgillies.j1ho338j .
使用 --mask 选项可以写出数据集有效数据区域的形状。
请参阅http://bl.ocks.org/anonymous/raw/ef244954b719db97926/。
statck
0.15新增。
这个 stack 命令将一个或多个输入文件中的若干条带堆叠到多条带数据集中。输入数据集必须是一种类型:相同的数据类型、维度等。输出是从第一个输入克隆的。默认情况下, stack 将从每个输入中获取所有波段,并按相同的顺序写入输出。或者,可以使用以下语法指定每个输入的带区:
--bidx N 从输入端取第n个波段(第一个波段为1)。
--bidx M,N,O 带m、n和o。
--bidx M..O 带M-O,包括。
--bidx ..N 带上所有波段,包括N。
--bidx N.. 把所有的乐队从N带到结尾。
使用生成其副本的栅格测试数据集的示例。
要将经度、纬度边界框转换为栅格数据集的坐标系,请执行以下操作。
可以使用proj.4或epsg:nnnn字符串或JSON文本编码的proj.4对象指定输出坐标系:
您还可以指定维度,该维度将根据目标CRS中边界与这些维度之间的关系自动计算适当的分辨率:
或提供输出边界(在源CRS中)和分辨率:
上一个命令,如果是南上图像, -- 逃离下一个 - :
其他选项可用,请参见:
RIO插件
里约使用 click-plugins 提供使用在Rasterio之外开发的插件创建其他子命令的能力。这对于需要附加依赖项而不是栅格所使用的依赖项的命令,或者提供超出栅格预期范围的功能的命令非常理想。
例如, rio-mbtiles 提供命令 rio mbtiles 将栅格导出到mbtiles文件。
见 click-plugins 有关如何构建这些插件的更多信息。
要在rio中使用这些插件,请将命令添加到 rasterio.rio_plugins' entry point in your setup.py file, as described here 而在 rasterio/rio/main.py .
见 plugin registry 获取可用插件的列表。
其他命令? 欢迎对其他命令提出建议!
1 在一些Linux发行版中,“rio”可能指的是命令行diamond rio mp3播放器控制器。通过在单独的Python环境中安装栅格可以避免这种冲突。