一个Rio Tall插件创建马赛克瓷砖。
rio-tiler-mosaic的Python项目详细描述
里约热内卢瓷砖马赛克
一个RioTiler插件,用于从多个观察结果创建平铺。
安装
$ pip install rio-tiler-mosaic
或
$ git clone http://github.com/cogeotiff/rio-tiler-mosaic
$ cd rio-tiler-mosaic
$ pip install -e .
里约热内卢瓷砖+马赛克
这个rio tiler插件的目标是从多个观察创建tile。
由于用户可能希望选择平铺顶部的像素,此插件提供5种不同的算法:
- first:获取接收到的第一个像素
- highest:遍历所有资产并返回最高值
- lowest:遍历所有资产并返回最低值
- mean:计算整个堆栈的平均值
- median:计算整个堆栈的中值
api
mosaic_tiler(assets, tile_x, tile_y, tile_z, tiler, pixel_selection=None, chunk_size=5, kwargs)
输入:
- 资源:列表,rio tiler兼容资源的元组(url或sceneid)
- 平铺X:墨卡托平铺X索引。
- 瓦伊:墨卡托瓦伊指数。
- 平铺:墨卡托平铺缩放级别。
- tiler:rio tiler的tiler函数(例如rio_tiler.landsat8.tile)
- 像素选择:可选的像素选择算法(默认:“第一个”)。
- chunk_size:可选,控制每个循环要处理的资源数。
- 夸格斯:里约热内卢瓦勒瓦勒模块具体说明。
返回:
- tile,mask:ndarray的元组返回tile和mask数据。
示例
fromrio_tiler.mainimporttileascogTilerfromrio_tiler_mosaic.mosaicimportmosaic_tilerfromrio_tiler_mosaic.methodsimportdefaultsassets=["mytif1.tif","mytif2.tif","mytif3.tif"]tile=(1000,1000,9)x,y,z=tile# Use Default First value methodmosaic_tiler(assets,x,y,z,cogTiler)# Use Highest value: defaults.HighestMethod()mosaic_tiler(assets,x,y,z,cogTiler,pixel_selection=defaults.HighestMethod())# Use Lowest value: defaults.LowestMethod()mosaic_tiler(assets,x,y,z,cogTiler,pixel_selection=defaults.LowestMethod())
MosaicMethod
接口
rio-tiler-mosaic.methods.base.MosaicMethodBase
类定义了一个抽象
rio-tiler-mosaic
允许的所有pixel selection
方法的接口。其方法和性质为:
is_done
:属性,返回一个布尔值,指示进程是否已完成填充平铺data
:属性,返回输出tile和masknumpy数组feed(tile: numpy.ma.ndarray)
:方法,更新磁贴
mosaicmethodbase类不打算直接使用,而是作为一个抽象基类,一个用于具体实现的模板。
编写自己的像素选择方法
编写自己的pixel selection algorithm
类的规则如下:
- 必须继承自马赛克方法库
- 必须提供上述所有方法的具体实现。
有关示例,请参见rio_tiler_mosaic.methods.defaults类。
智能多线程
当处理重要数量的图像时,您可能不想处理整个堆栈,特别是当填充平铺时像素选择方法停止时。为了实现更好的优化,rio-tiler-mosaic
正在并行地(线程)获取磁贴,但为了限制文件的数量,我们还将获取嵌入到循环中(创建2级处理):
assets=["1.tif","2.tif","3.tif","4.tif","5.tif","6.tif"]# 1st level loop - Creates chuncks of assetsforchunksin_chunks(assets,chunk_size):# 2nd level loop - Uses threads for process each `chunck`withfutures.ThreadPoolExecutor(max_workers=max_threads)asexecutor:future_tasks=[executor.submit(_tiler,asset)forassetinchunks]
默认情况下,chunck_大小等于max_threads(default)
示例
贡献与发展
问题和拉取请求非常受欢迎。
dev安装
$ git clone https://github.com/cogeotiff/rio-tiler-mosaic.git $ cd rio-tiler-mosaic $ pip install -e .[dev]
仅限python3.6
此repo设置为在提交新代码时使用pre-commit
运行flake8、pydocstring和black(“不妥协的python代码格式化程序”)。
$ pre-commit install