用于光栅的CloudOptimized GeoTIFF(COGEO)创建插件
rio-cogeo的Python项目详细描述
里约COGEO
用于光栅的云优化geotiff(COG)创建和验证插件
COG规范,此插件也 实施几个功能:
- 内部概述(用户可以使用选项删除概述--概述级别0)
- 内部磁贴(默认配置文件有512x512个内部磁贴)
安装
$ pip install -U pip $ pip install rio-cogeo
或从源安装:
$ git clone https://github.com/cogeotiff/rio-cogeo.git
$ cd rio-cogeo
$ pip install -U pip
$ pip install -e .
CLI
$ rio cogeo --help
Usage: rio cogeo [OPTIONS] COMMAND [ARGS]...
Rasterio cogeo subcommands.
Options:
--help Show this message and exit.
Commands:
create Create COGEO
validate Validate COGEO
- 创建一个云优化的geotiff。
$ rio cogeo create --help
Usage: rio cogeo create [OPTIONS] INPUT OUTPUT
Create Cloud Optimized Geotiff.
Options:
-b, --bidx BIDX Band indexes to copy.
-p, --cog-profile [jpeg|webp|zstd|lzw|deflate|packbits|raw] CloudOptimized GeoTIFF profile (default: deflate).
--nodata NUMBER|nan Set nodata masking values for input dataset.
--add-mask Force output dataset creation with an internal mask (convert alpha band or nodata to mask).
--overview-level INTEGER Overview level (if not provided, appropriate overview level will be selected
until the smallest overview is smaller than the value of the internal blocksize)
--overview-resampling [nearest|bilinear|cubic|cubic_spline|lanczos|average|mode|gauss] Overview creation resampling algorithm.
--overview-blocksize TEXT Overview's internal tile size (default defined by GDAL_TIFF_OVR_BLOCKSIZE env or 128)
-w, --web-optimized Create COGEO optimized for Web.
--latitude-adjustment / --global-maxzoom
Use dataset native mercator resolution for MAX_ZOOM calculation (linked to dataset center latitude, default)
or ensure MAX_ZOOM equality for multiple dataset accross latitudes.
-r, --resampling [nearest|bilinear|cubic|cubic_spline|lanczos|average|mode|gauss] Resampling algorithm.
--in-memory / --no-in-memory Force processing raster in memory / not in memory (default: process in memory if smaller than 120 million pixels)
--threads INTEGER
--co, --profile NAME=VALUE Driver specific creation options.See the documentation for the selected output driver for more information.
-q, --quiet Remove progressbar and other non-error output.
--help Show this message and exit.
- 检查云优化geotiff是否有效。
$ rio cogeo validate --help
Usage: rio cogeo validate [OPTIONS] INPUT
Validate Cloud Optimized Geotiff.
Options:
--help Show this message and exit.
示例
# Create a COGEO with DEFLATE compression (Using default `Deflate` profile) $ rio cogeo create mydataset.tif mydataset_jpeg.tif # Validate COGEO $ rio cogeo validate mydataset_jpeg.tif # Create a COGEO with JPEG profile and the first 3 bands of the data and add internal mask $ rio cogeo create mydataset.tif mydataset_jpeg.tif -b 1,2,3 --add-mask --cog-profile jpeg
默认几何图形配置文件
JPEG
- JPEG压缩
- 像素交织
- YCBCR颜色空间
- 仅限于uint8数据类型和3波段数据
webp
- WebP压缩
- 像素交织
- 仅限于uint8数据类型和3或4波段数据
- 适用于gdal>;=2.4.0
zstd
- zstd压缩
- 像素交织
- 适用于gdal>;=2.3.0
注2018年11月,libtiff的zstd标记发生了变化,导致旧zstd压缩geotiff不兼容(链接)
LZW
- LZW压缩
- 像素交织
放气
- 压缩放气
- 像素交织
包装
- 压缩数据
- 像素交织
原始的
- 无压缩
- 像素交织
默认配置文件用512x512块大小平铺。
通过在命令行中提供"--co"选项,可以扩展配置文件
# Create a COGEO without compression and with 1024x1024 block size and 256 overview blocksize $ rio cogeo create mydataset.tif mydataset_raw.tif --co BLOCKXSIZE=1024 --co BLOCKYSIZE=1024 --cog-profile raw --overview-blocksize 256
网络优化COG
rio cogeo提供了一个--web优化的选项,旨在创建一个友好的web平铺cog。
输出数据集功能:
- 边界和内部平铺与WebMercator网格对齐。
- 原始数据和概述分辨率与Mercator缩放级别分辨率匹配。
重要
因为墨卡托项目不尊重距离, 覆盖不同纬度的多幅图像,您可能需要使用--global maxzoom选项 创建具有相同最大缩放(原始数据分辨率)的输出数据集。
因为它肯定会创建一个更大的文件,所以nodata值或alpha带应该 出现在输入数据集中。否则,原始数据将被黑色(0)数据包围。
内部瓷砖尺寸
默认情况下,rio cogeo将创建一个包含512x512内部磁贴的数据集化。
这可以通过传递--co blockxsize=64--co blockysize=64选项来更新。
网页平铺优化
如果输入数据集与Web Mercator网格对齐,则内部平铺大小 应等于Web地图平铺大小(256或512px)。应压缩数据集。
如果输入数据集未与WebMercator网格对齐,则平铺器将需要 获取多个内部磁贴。因为gdal可以使用 小的内部块(例如128)将减少传输的字节数,并且 最小化传输的无用字节。
用于合并连续范围请求的gdal配置
GDAL_HTTP_MERGE_CONSECUTIVE_RANGES=YES
GDAL_HTTP_MULTIPLEX=YES
GDAL_HTTP_VERSION=2
概述级别
默认情况下,Rio Cogeo将根据数据集计算最佳概览级别 尺寸和内部瓷砖尺寸(概述不应小于内部瓷砖 尺寸(如512px)。概述级别将转换为抽取级别 二次幂:
overview_level=3overviews=[2**jforjinrange(1,overview_level+1)]print(overviews)[2,4,8]
GDAL版本
建议使用gdal>;2.3.2。以前的版本可能无法 创建适当的COG(请参阅:https://github.com/osgeo/gdal/issues/754" rel="nofollow">https://github.com/osgeo/gdal/issues/754)。
有关详细信息,请访问https://github.com/cogeotiff/rio-cogeo/issues/60" rel="nofollow">https://github.com/cogeotiff/rio cogeo/issues/60
gdal>;=3尚不受光栅支持
nodata、alpha和mask
默认情况下,rio cogeo会将任何nodata值或alpha通道转发到 输出齿轮。
如果数据集类型为字节或单元16,则可以使用内部位掩码
(使用--add mask
选项)替换
输出数据集(大多数基于gdal的后端支持)。
注意:当使用具有alpha带的输入数据集添加mask
时
需要使用bidx
选项将其从输出数据集中删除。
$ pip install -U pip $ pip install rio-cogeo0
重要
使用内部nodata值进行有损压缩(webp
,jpeg
)不是
建议。请使用内部掩蔽(如果使用WebP,请使用Alpha波段)。
统计
一些库可能会请求使用COGS,并在内部写入统计信息 元数据。rio cogeo在创建输出时不计算也不复制 数据集(因为统计数据可能由于有损压缩而改变)。 要将统计数据添加到输出数据集,可以使用上面的代码:
$ pip install -U pip $ pip install rio-cogeo1
贡献与发展
里约Cogeo项目在Mapbox开始,并已转移到 COGEOTIFF组织,2019年1月。
我们非常欢迎提出问题和请求。
开发安装
$ pip install -U pip $ pip install rio-cogeo2
仅限蟒蛇3.6
此回购协议设置为使用预提交
运行flake8,pydocstring和black
("不妥协的python代码格式化程序")提交新代码时。
$ pip install -U pip $ pip install rio-cogeo3
额外费用
关于好的和坏的COG格式的博客文章:https://medium.com/@u vincents廑/do-you-really-want-people-using-your-data-ec94cd94dc3f
签出rio glui或rio-vizRasterio插件,在您的Web浏览器中本地探索COG。