用于光栅的CloudOptimized GeoTIFF(COGEO)创建插件

rio-cogeo的Python项目详细描述


里约COGEO

用于光栅的云优化geotiff(COG)创建和验证插件

包装状态circlecicodecovCOG规范,此插件也 实施几个功能:

  • 内部概述(用户可以使用选项删除概述--概述级别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-cogeo
0

重要

使用内部nodata值进行有损压缩(webpjpeg)不是 建议。请使用内部掩蔽(如果使用WebP,请使用Alpha波段)。

统计

一些库可能会请求使用COGS,并在内部写入统计信息 元数据。rio cogeo在创建输出时不计算也不复制 数据集(因为统计数据可能由于有损压缩而改变)。 要将统计数据添加到输出数据集,可以使用上面的代码:

$ pip install -U pip
$ pip install rio-cogeo
1

贡献与发展

里约Cogeo项目在Mapbox开始,并已转移到 COGEOTIFF组织,2019年1月。

我们非常欢迎提出问题和请求。

开发安装

$ pip install -U pip
$ pip install rio-cogeo
2

仅限蟒蛇3.6

此回购协议设置为使用预提交运行flake8pydocstringblack ("不妥协的python代码格式化程序")提交新代码时。

$ pip install -U pip
$ pip install rio-cogeo
3

额外费用

关于好的和坏的COG格式的博客文章:https://medium.com/@u vincents廑/do-you-really-want-people-using-your-data-ec94cd94dc3f

签出rio gluirio-vizRasterio插件,在您的Web浏览器中本地探索COG。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java中的else if语句返回语法错误   http如何解析从表单到REST Java/Webservice的post请求   java如何在SpringBoot中为RestTemplate编写JUnit测试   java动态检查实例是否实现接口   java在Android中使用ArrayAdaptor时,数据不会显示   根据前序遍历返回二进制树的java方法   Arquillian测试类中的java注入始终为空   用户界面Java Swing自定义控件   java使用CompletableFutures递归地从同一函数的多个调用构建列表   在Java中将“.00”添加到整数BigDecimal   卡夫卡java未知\u主题\u或\u部分错误间歇性   java为什么我的getString()方法总是返回null?   java renameTo无法重命名文件   java为什么我可以强制转换对象?可以用其他对象来完成吗?   带有回写条件的java多根记录器   关于stackoverflow错误的java帮助?   java Websphere消息队列多线程   Java图形窗口/画布未垂直显示完整的六边形网格   java Sakai未在Tomcat服务器中启动