为TiTiler工厂提供的扩展。
项目描述
titiler.extensions
扩展TiTiler瓦片工厂
安装
$ python -m pip install -U pip
# From Pypi
$ python -m pip install titiler.extensions
# Or from sources
$ git clone https://github.com/developmentseed/titiler.git
$ cd titiler && python -m pip install -e src/titiler/core -e src/titiler/extensions
可用的扩展
cogValidateExtension
- 目标:添加一个
/validate
端点,返回 rio-cogeoinfo
方法的内 容 - 额外要求:
titiler.extensions["cogeo"]
cogViewerExtension
- 目标:添加一个
/viewer
端点,返回简单COG的HTML查看器
stacViewerExtension
- 目标:添加一个
/viewer
端点,返回STAC项目的HTML查看器
wmsExtension
- 目标:添加一个
/wms
端点,以支持OGC网络地图服务(GetTile
和GetCapabilities
)规范
使用扩展
必须在创建瓦片工厂时使用 extensions=
选项来设置扩展。
from fastapi import FastAPI
from titiler.core.factory import TilerFactory
from titiler.extensions import cogValidateExtension
# Create a FastAPI application
app = FastAPI(description="A lightweight Cloud Optimized GeoTIFF tile server")
# Create a set of endpoints using TiTiler TilerFactory
tiler = TilerFactory(
router_prefix="/cog",
extensions=[
cogValidateExtension() # the cogeoExtension will add a rio-cogeo /validate endpoint
]
)
# Register endpoints to the application
app.include_router(tiler.router, prefix="/cog")
有关完整示例,请参阅 titiler.application。
创建自己的
from dataclasses import dataclass, field
from typing import Tuple, List, Optional
from starlette.responses import Response
from fastapi import Depends, FastAPI, Query
from titiler.core.factory import BaseTilerFactory, FactoryExtension, TilerFactory
from titiler.core.dependencies import RescalingParams
from titiler.core.factory import TilerFactory
from titiler.core.resources.enums import ImageType
@dataclass
class thumbnailExtension(FactoryExtension):
"""Add endpoint to a TilerFactory."""
# Set some options
max_size: int = field(default=128)
# Register method is mandatory and must take a BaseTilerFactory object as input
def register(self, factory: BaseTilerFactory):
"""Register endpoint to the tiler factory."""
# register an endpoint to the factory's router
@factory.router.get(
"/thumbnail",
responses={
200: {
"content": {
"image/png": {},
"image/jpeg": {},
},
"description": "Return an image.",
}
},
response_class=Response,
)
def thumbnail(
# we can reuse the factory dependency
src_path: str = Depends(factory.path_dependency),
layer_params=Depends(factory.layer_dependency),
dataset_params=Depends(factory.dataset_dependency),
post_process=Depends(factory.process_dependency),
rescale: Optional[List[Tuple[float, ...]]] = Depends(RescalingParams),
color_formula: Optional[str] = Query(
None,
title="Color Formula",
description="rio-color formula (info: https://github.com/mapbox/rio-color)",
),
colormap=Depends(factory.colormap_dependency),
render_params=Depends(factory.render_dependency),
reader_params=Depends(factory.reader_dependency),
env=Depends(factory.environment_dependency),
):
with rasterio.Env(**env):
with factory.reader(src_path, **reader_params) as src:
image = src.preview(
max_size=self.max_size,
**layer_params,
**dataset_params,
)
if post_process:
image = post_process(image)
if rescale:
image.rescale(rescale)
if color_formula:
image.apply_color_formula(color_formula)
format = ImageType.jpeg if image.mask.all() else ImageType.png
content = image.render(
img_format=format.driver,
colormap=colormap,
**format.profile,
**render_params,
)
return Response(content, media_type=format.mediatype)
# Use it
app = FastAPI()
tiler = TilerFactory(
extensions=[
thumbnailExtension(max_size=64)
]
)
app.include_router(tiler.router)
项目详情
关闭
titiler.extensions-0.18.9.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 35569bddc63bc36840fc6e6f19ce37a173a5663ba733af85a96f3dc8e0c9bb81 |
|
MD5 | f518ccf14d1b09272ecb34d44c3b2b4a |
|
BLAKE2b-256 | c6d6e69ccdfa06d5b42141838b2a0e7f94f9d7acfa7ae66e98220b10c7d850b5 |
关闭
titiler.extensions-0.18.9-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | bbe847707a912563b9ad08554eb17d5c037f507c487ca4dda237f8cd374850a8 |
|
MD5 | 5e87f347f947122a30774771131f525e |
|
BLAKE2b-256 | 383aa182f01dca61f456c9c9a1342c2a7a73852e603a74a437385831b1491fa0 |