跳转到主要内容

一个用于创建镶嵌瓦片的rio-tiler插件。

项目描述

rio-tiler-mosaic

Packaging status CircleCI codecov

一个用于从多个观测中创建瓦片的rio-tiler插件。

安装

$ pip install rio-tiler-mosaic

$ git clone http://github.com/cogeotiff/rio-tiler-mosaic
$ cd rio-tiler-mosaic
$ pip install -e .

Rio-tiler + Mosaic

这个rio-tiler插件的目标是从多个观测中创建瓦片。

因为用户可能想要选择哪个像素位于瓦片顶部,所以这个插件包含了5种不同的 像素选择 算法

  • 第一个:取收到的第一个像素
  • 最高:遍历所有资源并返回最高值
  • 最低:遍历所有资源并返回最低值
  • 平均值:计算整个堆栈的平均值
  • 中值:计算整个堆栈的中值

API

mosaic_tiler(assets, tile_x, tile_y, tile_z, tiler, pixel_selection=None, chunk_size=5, kwargs)

输入

  • assets : 列表,rio-tiler兼容资源(url或sceneid)的元组
  • tile_x : 摩尔瓦片X索引。
  • tile_y : 摩尔瓦片Y索引。
  • tile_z : 摩尔瓦片ZOOM级别。
  • tiler: Rio-tiler的tiler函数(例如rio_tiler.landsat8.tile)
  • pixel_selection : 可选的 像素选择 算法(默认:"first")。
  • chunk_size: 可选,控制每次循环处理的资源数量。
  • kwargs: Rio-tiler tiler模块特定选项。

返回

  • tile, mask : 纳数组元组,返回瓦片和掩码数据。

示例

from rio_tiler.io import COGReader
from rio_tiler_mosaic.mosaic import mosaic_tiler
from rio_tiler_mosaic.methods import defaults


def tiler(src_path: str, *args, **kwargs) -> Tuple[numpy.ndarray, numpy.ndarray]:
    with COGReader(src_path) as cog:
        return cog.tile(*args, **kwargs)

assets = ["mytif1.tif", "mytif2.tif", "mytif3.tif"]
tile = (1000, 1000, 9)
x, y, z = tile

# Use Default First value method
mosaic_tiler(assets, x, y, z, tiler)

# Use Highest value: defaults.HighestMethod()
mosaic_tiler(
    assets,
    x,
    y,
    z,
    tiler,
    pixel_selection=defaults.HighestMethod()
)

# Use Lowest value: defaults.LowestMethod()
mosaic_tiler(
    assets,
    x,
    y,
    z,
    tiler,
    pixel_selection=defaults.LowestMethod()
)

MosaicMethod 接口

rio-tiler-mosaic.methods.base.MosaicMethodBase 类定义了一个抽象接口,用于所有由 rio-tiler-mosaic 允许的 像素选择 方法。它的方法和属性如下:

  • is_done:属性,返回一个布尔值,表示是否已填充瓦片
  • data:属性,返回输出 瓦片掩码 numpy 数组
  • feed(tile: numpy.ma.ndarray):方法,更新瓦片

MosaicMethodBase 类不打算直接使用,而是作为一个抽象基类,具体实现的模板。

编写自己的像素选择方法

编写自己的 像素选择算法 类的规则如下:

  • 必须继承自 MosaicMethodBase
  • 必须提供上述所有方法的具体实现。

请参阅 rio_tiler_mosaic.methods.defaults 类以获取示例。

智能多线程

在处理大量图像时,您可能不希望处理整个堆栈,尤其是如果像素选择方法在填充瓦片后停止。为了允许更好的优化,rio-tiler-mosaic 并行(线程)获取瓦片,但为了限制文件数量,也将获取嵌入到循环中(创建了两级处理)

assets = ["1.tif", "2.tif", "3.tif", "4.tif", "5.tif", "6.tif"]

# 1st level loop - Creates chuncks of assets
for chunks in _chunks(assets, chunk_size):
    # 2nd level loop - Uses threads for process each `chunck`
    with futures.ThreadPoolExecutor(max_workers=max_threads) as executor:
        future_tasks = [executor.submit(_tiler, asset) for asset in chunks]

默认情况下,块大小等于线程数(或如果无线程则等于资产数)

关于线程的更多内容

可以通过函数调用中的 threads= 选项设置使用的线程数。默认情况下,它将等于 multiprocessing.cpu_count() * 5 或 MAX_THREADS 环境变量。在某些情况下,线程可能会减慢您的应用程序。您可以设置线程为 0 以循环运行瓦片,而不使用 ThreadPool。

示例

请参阅 /example

贡献与发展

问题和拉取请求非常欢迎。

开发安装

$ git clone https://github.com/cogeotiff/rio-tiler-mosaic.git
$ cd rio-tiler-mosaic
$ pip install -e .[dev]

Python3.6 仅支持

此存储库设置为在提交新代码时使用 pre-commit 来运行 flake8pydocstringblack(“无妥协的 Python 代码格式化程序”)。

$ pre-commit install

实现

cogeo-mosaic

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

rio-tiler-mosaic-0.0.1.dev5.tar.gz (6.1 kB 查看哈希值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面