一个Rio Tall插件创建马赛克瓷砖。

rio-tiler-mosaic的Python项目详细描述


里约热内卢瓷砖马赛克

Packaging statusCircleCIcodecov

一个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:属性,返回输出tilemasknumpy数组
  • 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

示例

/example

贡献与发展

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

dev安装

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

仅限python3.6

此repo设置为在提交新代码时使用pre-commit运行flake8pydocstringblack(“不妥协的python代码格式化程序”)。

$ pre-commit install

实施

cogeo-mosaic

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

推荐PyPI第三方库


热门话题
JavaSpring依赖关系:根据bean实现的接口加载bean时的顺序   java当我在某些按钮上更改背景颜色而不是在其他按钮上更改背景颜色时,如何使所有的JButton看起来都一样?   java如何保持Swing GUI打开,但不停止其他编程过程?   域模型与rest表示的java解耦   java适配器getFilter未过滤   java在Google云存储中创建bucket有时会失败   符号上的java Apache Derby词法错误?   java在Firebase身份验证中撤销/取消身份验证提供程序的链接做什么?   java将此Apache重写规则转换为tuckey URL重写规则   java我正在创建一个VotingMachine,整个代码看起来还可以,但是当我试图运行它时,我无法得到我想要的结果   java接收空的可包裹对象   java修改并返回传递的参数   如何使用Java驱动程序在MongoDB集合中获取特定的嵌入式文档?   下载文件时文件名中的java空白问题   ApachePOI excel编写器在ide中工作,但不在胖罐子中工作?JAVA木卫一。IOException:InputStream既不是OLE2流,也不是OOXML str   mysql如何编写mysql_数据库。使用netbeans和java的类路径中的属性文件!!!无法访问它   JAVAwait()用于在运行安卓 studio方法之前等待   java使用正则表达式作为带StringTokenizer的分隔符