Skip to content

Commit 3f0fd9c

Browse files
committed
feat: add filter / sort stac query parameters [GDD-3825]
1 parent a9097b9 commit 3f0fd9c

File tree

2 files changed

+29
-24
lines changed

2 files changed

+29
-24
lines changed

titiler/stacapi/dependencies.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -164,22 +164,22 @@ def STACSearchParams(
164164
Query(description="Spatial Filter."),
165165
] = None,
166166
datetime: Annotated[Optional[str], Query(description="Temporal Filter.")] = None,
167-
# sortby: Annotated[
168-
# Optional[str],
169-
# Query(
170-
# description="Column Sort the items by Column (ascending (default) or descending).",
171-
# ),
172-
# ] = None,
173-
# query: Annotated[
174-
# Optional[str], Query(description="CQL2 Filter", alias="filter")
175-
# ] = None,
176-
# filter_lang: Annotated[
177-
# Optional[Literal["cql2-text", "cql2-json"]],
178-
# Query(
179-
# description="CQL2 Language (cql2-text, cql2-json). Defaults to cql2-text.",
180-
# alias="filter-lang",
181-
# ),
182-
# ] = None,
167+
sortby: Annotated[
168+
Optional[str],
169+
Query(
170+
description="Column Sort the items by Column (ascending (default) or descending).",
171+
),
172+
] = None,
173+
query: Annotated[
174+
Optional[str], Query(description="CQL2 Filter", alias="filter")
175+
] = None,
176+
filter_lang: Annotated[
177+
Optional[Literal["cql2-text", "cql2-json"]],
178+
Query(
179+
description="CQL2 Language (cql2-text, cql2-json). Defaults to cql2-text.",
180+
alias="filter-lang",
181+
),
182+
] = None,
183183
limit: Annotated[
184184
Optional[int],
185185
Query(description="Limit the number of items per page search (default: 10)"),
@@ -195,9 +195,9 @@ def STACSearchParams(
195195
"ids": ids.split(",") if ids else None,
196196
"bbox": list(map(float, bbox.split(","))) if bbox else None,
197197
"datetime": datetime,
198-
# "sortby": sortby,
199-
# "filter": query,
200-
# "filter-lang": filter_lang,
198+
"sortby": sortby,
199+
"filter": query,
200+
"filter-lang": filter_lang,
201201
"limit": limit or 10,
202202
"max_items": max_items or 100,
203203
}

titiler/stacapi/factory.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,8 @@ class OGCWMTSFactory(BaseTilerFactory):
723723

724724
path_dependency: Callable[..., APIParams] = STACApiParams
725725

726+
search_dependency: Callable[..., Dict] = STACSearchParams
727+
726728
# In this factory, `reader` should be a Mosaic Backend
727729
# https://developmentseed.org/cogeo-mosaic/advanced/backends/
728730
reader: Type[BaseBackend] = STACAPIBackend
@@ -803,9 +805,8 @@ def get_tile( # noqa: C901
803805
###########################################################
804806
# STAC Query parameter provided by the the render extension and QueryParameters
805807
###########################################################
806-
search_query: Dict[str, Any] = {
807-
"collections": [layer["collection"]],
808-
}
808+
query_params = copy(layer.get("render")) or {}
809+
query_params["collections"] = [layer["collection"]]
809810

810811
if req_time:
811812
start_datetime = python_datetime.datetime.strptime(
@@ -814,16 +815,20 @@ def get_tile( # noqa: C901
814815
).replace(tzinfo=python_datetime.timezone.utc)
815816
end_datetime = start_datetime + python_datetime.timedelta(days=1)
816817

817-
search_query[
818+
query_params[
818819
"datetime"
819820
] = f"{start_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')}/{end_datetime.strftime('%Y-%m-%dT%H:%M:%SZ')}"
820821

821-
query_params = copy(layer.get("render")) or {}
822822
if "color_formula" in req:
823823
query_params["color_formula"] = req["color_formula"]
824824
if "expression" in req:
825825
query_params["expression"] = req["expression"]
826826

827+
search_query = get_dependency_params(
828+
dependency=self.search_dependency,
829+
query_params=query_params,
830+
)
831+
827832
layer_params = get_dependency_params(
828833
dependency=self.layer_dependency,
829834
query_params=query_params,

0 commit comments

Comments
 (0)