4545)
4646from titiler .core .factory import DEFAULT_TEMPLATES , BaseFactory , img_endpoint_params
4747from titiler .core .models .mapbox import TileJSON
48- from titiler .core .resources .enums import ImageType , MediaType , OptionalHeader
48+ from titiler .core .resources .enums import ImageType , OptionalHeader
4949from titiler .core .resources .responses import GeoJSONResponse , JSONResponse , XMLResponse
5050from titiler .core .utils import render_image
5151from titiler .mosaic .models .responses import Point
@@ -316,6 +316,8 @@ def tile(
316316 "Default will be automatically defined if the output image needs a mask (png) or not (jpeg)." ,
317317 ] = None ,
318318 src_path = Depends (self .path_dependency ),
319+ backend_params = Depends (self .backend_dependency ),
320+ reader_params = Depends (self .reader_dependency ),
319321 layer_params = Depends (self .layer_dependency ),
320322 dataset_params = Depends (self .dataset_dependency ),
321323 pixel_selection = Depends (self .pixel_selection_dependency ),
@@ -325,8 +327,6 @@ def tile(
325327 color_formula = Depends (self .color_formula_dependency ),
326328 colormap = Depends (self .colormap_dependency ),
327329 render_params = Depends (self .render_dependency ),
328- backend_params = Depends (self .backend_dependency ),
329- reader_params = Depends (self .reader_dependency ),
330330 env = Depends (self .environment_dependency ),
331331 ):
332332 """Create map tile from a COG."""
@@ -410,7 +410,6 @@ def tilejson(
410410 description = "Identifier selecting one of the TileMatrixSetId supported."
411411 ),
412412 ],
413- src_path = Depends (self .path_dependency ),
414413 tile_format : Annotated [
415414 Optional [ImageType ],
416415 Query (
@@ -431,6 +430,9 @@ def tilejson(
431430 Optional [int ],
432431 Query (description = "Overwrite default maxzoom." ),
433432 ] = None ,
433+ src_path = Depends (self .path_dependency ),
434+ backend_params = Depends (self .backend_dependency ),
435+ reader_params = Depends (self .reader_dependency ),
434436 layer_params = Depends (self .layer_dependency ),
435437 dataset_params = Depends (self .dataset_dependency ),
436438 pixel_selection = Depends (self .pixel_selection_dependency ),
@@ -440,8 +442,6 @@ def tilejson(
440442 color_formula = Depends (self .color_formula_dependency ),
441443 colormap = Depends (self .colormap_dependency ),
442444 render_params = Depends (self .render_dependency ),
443- backend_params = Depends (self .backend_dependency ),
444- reader_params = Depends (self .reader_dependency ),
445445 env = Depends (self .environment_dependency ),
446446 ):
447447 """Return TileJSON document for a COG."""
@@ -504,7 +504,6 @@ def map_viewer(
504504 description = "Identifier selecting one of the TileMatrixSetId supported."
505505 ),
506506 ],
507- src_path = Depends (self .path_dependency ),
508507 tile_format : Annotated [
509508 Optional [ImageType ],
510509 Query (
@@ -525,6 +524,9 @@ def map_viewer(
525524 Optional [int ],
526525 Query (description = "Overwrite default maxzoom." ),
527526 ] = None ,
527+ src_path = Depends (self .path_dependency ),
528+ backend_params = Depends (self .backend_dependency ),
529+ reader_params = Depends (self .reader_dependency ),
528530 layer_params = Depends (self .layer_dependency ),
529531 dataset_params = Depends (self .dataset_dependency ),
530532 pixel_selection = Depends (self .pixel_selection_dependency ),
@@ -534,8 +536,6 @@ def map_viewer(
534536 color_formula = Depends (self .color_formula_dependency ),
535537 colormap = Depends (self .colormap_dependency ),
536538 render_params = Depends (self .render_dependency ),
537- backend_params = Depends (self .backend_dependency ),
538- reader_params = Depends (self .reader_dependency ),
539539 env = Depends (self .environment_dependency ),
540540 ):
541541 """Return TileJSON document for a dataset."""
@@ -571,7 +571,6 @@ def wmts(
571571 description = "Identifier selecting one of the TileMatrixSetId supported."
572572 ),
573573 ],
574- src_path = Depends (self .path_dependency ),
575574 tile_format : Annotated [
576575 ImageType ,
577576 Query (description = "Output image type. Default is png." ),
@@ -596,6 +595,9 @@ def wmts(
596595 description = "Use EPSG code, not opengis.net, for the ows:SupportedCRS in the TileMatrixSet (set to True to enable ArcMap compatability)"
597596 ),
598597 ] = False ,
598+ src_path = Depends (self .path_dependency ),
599+ backend_params = Depends (self .backend_dependency ),
600+ reader_params = Depends (self .reader_dependency ),
599601 layer_params = Depends (self .layer_dependency ),
600602 dataset_params = Depends (self .dataset_dependency ),
601603 pixel_selection = Depends (self .pixel_selection_dependency ),
@@ -605,8 +607,6 @@ def wmts(
605607 color_formula = Depends (self .color_formula_dependency ),
606608 colormap = Depends (self .colormap_dependency ),
607609 render_params = Depends (self .render_dependency ),
608- backend_params = Depends (self .backend_dependency ),
609- reader_params = Depends (self .reader_dependency ),
610610 env = Depends (self .environment_dependency ),
611611 ):
612612 """OGC WMTS endpoint."""
@@ -635,8 +635,6 @@ def wmts(
635635 for (key , value ) in request .query_params ._list
636636 if key .lower () not in qs_key_to_remove
637637 ]
638- if qs :
639- tiles_url += f"?{ urlencode (qs )} "
640638
641639 tms = self .supported_tms .get (tileMatrixSetId )
642640 with rasterio .Env (** env ):
@@ -671,6 +669,18 @@ def wmts(
671669 else :
672670 supported_crs = tms .crs .srs
673671
672+ layers = [
673+ {
674+ "title" : src_path
675+ if isinstance (src_path , str )
676+ else "TiTiler Mosaic" ,
677+ "name" : "default" ,
678+ "tiles_url" : tiles_url ,
679+ "query_string" : urlencode (qs , doseq = True ) if qs else None ,
680+ "bounds" : bounds ,
681+ },
682+ ]
683+
674684 bbox_crs_type = "WGS84BoundingBox"
675685 bbox_crs_uri = "urn:ogc:def:crs:OGC:2:84"
676686 if tms .rasterio_geographic_crs != WGS84_CRS :
@@ -681,20 +691,15 @@ def wmts(
681691 request ,
682692 name = "wmts.xml" ,
683693 context = {
684- "tiles_endpoint" : tiles_url ,
685- "bounds" : bounds ,
694+ "tileMatrixSetId" : tms .id ,
686695 "tileMatrix" : tileMatrix ,
687- "tms" : tms ,
688696 "supported_crs" : supported_crs ,
689697 "bbox_crs_type" : bbox_crs_type ,
690698 "bbox_crs_uri" : bbox_crs_uri ,
691- "title" : src_path
692- if isinstance (src_path , str )
693- else "TiTiler Mosaic" ,
694- "layer_name" : "Mosaic" ,
699+ "layers" : layers ,
695700 "media_type" : tile_format .mediatype ,
696701 },
697- media_type = MediaType . xml . value ,
702+ media_type = "application/ xml" ,
698703 )
699704
700705 ############################################################################
@@ -714,11 +719,11 @@ def point(
714719 lon : Annotated [float , Path (description = "Longitude" )],
715720 lat : Annotated [float , Path (description = "Latitude" )],
716721 src_path = Depends (self .path_dependency ),
722+ backend_params = Depends (self .backend_dependency ),
723+ reader_params = Depends (self .reader_dependency ),
717724 coord_crs = Depends (CoordCRSParams ),
718725 layer_params = Depends (self .layer_dependency ),
719726 dataset_params = Depends (self .dataset_dependency ),
720- backend_params = Depends (self .backend_dependency ),
721- reader_params = Depends (self .reader_dependency ),
722727 env = Depends (self .environment_dependency ),
723728 ):
724729 """Get Point value for a Mosaic."""
@@ -768,9 +773,9 @@ def assets_for_bbox(
768773 maxx : Annotated [float , Path (description = "Bounding box max X" )],
769774 maxy : Annotated [float , Path (description = "Bounding box max Y" )],
770775 src_path = Depends (self .path_dependency ),
771- coord_crs = Depends (CoordCRSParams ),
772776 backend_params = Depends (self .backend_dependency ),
773777 reader_params = Depends (self .reader_dependency ),
778+ coord_crs = Depends (CoordCRSParams ),
774779 env = Depends (self .environment_dependency ),
775780 ):
776781 """Return a list of assets which overlap a bounding box"""
0 commit comments