Skip to content

Commit 40c4143

Browse files
Point to return masked values (#1020)
1 parent e137d67 commit 40c4143

File tree

7 files changed

+36
-6
lines changed

7 files changed

+36
-6
lines changed

CHANGES.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@
8888
8989
* add `gif` media type
9090
91+
* `/point` endpoint returned masked values (`None` is nodata)
92+
9193
### titiler.mosaic
9294
9395
* Rename `reader` attribute to `backend` in `MosaicTilerFactory` **breaking change**
@@ -102,6 +104,8 @@
102104
103105
* add OGC Tiles `/tiles` and `/tiles/{tileMatrixSet}` endpoints
104106
107+
* `/point` endpoint returned masked values (`None` is nodata)
108+
105109
### titiler.extensions
106110
107111
* Encode URL for cog_viewer and stac_viewer (author @guillemc23, https://github.com/developmentseed/titiler/pull/961)

src/titiler/core/tests/test_factories.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,13 @@ def test_TilerFactory():
216216
assert len(response.json()["values"]) == 1
217217
assert response.json()["band_names"] == ["b1"]
218218

219+
# Masked values
220+
response = client.get(f"/point/-59.337,73.9898?url={DATA_DIR}/cog.tif&nodata=1")
221+
assert response.status_code == 200
222+
assert response.headers["content-type"] == "application/json"
223+
assert response.json()["values"] == [None]
224+
assert response.json()["band_names"] == ["b1"]
225+
219226
response = client.get(
220227
f"/point/-6259272.328324187,12015838.020930404?url={DATA_DIR}/cog.tif&coord_crs=EPSG:3857"
221228
)

src/titiler/core/titiler/core/factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,7 @@ def point(
11781178

11791179
return {
11801180
"coordinates": [lon, lat],
1181-
"values": pts.data.tolist(),
1181+
"values": pts.array.tolist(),
11821182
"band_names": pts.band_names,
11831183
}
11841184

src/titiler/core/titiler/core/models/responses.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""TiTiler response models."""
22

3-
from typing import Dict, List, Union
3+
from typing import Dict, List, Optional, Union
44

55
from geojson_pydantic.features import Feature, FeatureCollection
66
from geojson_pydantic.geometries import Geometry, MultiPolygon, Polygon
@@ -19,7 +19,7 @@ class Point(BaseModel):
1919
"""
2020

2121
coordinates: List[float]
22-
values: List[float]
22+
values: List[Optional[float]]
2323
band_names: List[str]
2424

2525

src/titiler/mosaic/tests/test_factory.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,25 @@ def test_MosaicTilerFactory():
101101
params={"url": mosaic_file},
102102
)
103103
assert response.status_code == 200
104+
assert response.json()["coordinates"]
105+
v = response.json()["values"]
106+
assert len(v) == 1
107+
values = v[0][1]
108+
assert len(values) == 3
109+
assert values[0]
110+
111+
# Masked values
112+
response = client.get(
113+
"/mosaic/point/-75.759,46.3847",
114+
params={"url": mosaic_file},
115+
)
116+
assert response.status_code == 200
117+
assert response.json()["coordinates"]
118+
v = response.json()["values"]
119+
assert len(v) == 1
120+
values = v[0][1]
121+
assert len(values) == 3
122+
assert values[0] is None
104123

105124
response = client.get(
106125
"/mosaic/point/-7903683.846322423,5780349.220256353",

src/titiler/mosaic/titiler/mosaic/factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,7 +987,7 @@ def point(
987987
return {
988988
"coordinates": [lon, lat],
989989
"values": [
990-
(src, pts.data.tolist(), pts.band_names) for src, pts in values
990+
(src, pts.array.tolist(), pts.band_names) for src, pts in values
991991
],
992992
}
993993

src/titiler/mosaic/titiler/mosaic/models/responses.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""TiTiler.mosaic response models."""
22

3-
from typing import List, Tuple
3+
from typing import List, Optional, Tuple
44

55
from pydantic import BaseModel
66

@@ -14,4 +14,4 @@ class Point(BaseModel):
1414
"""
1515

1616
coordinates: List[float]
17-
values: List[Tuple[str, List[float], List[str]]]
17+
values: List[Tuple[str, List[Optional[float]], List[str]]]

0 commit comments

Comments
 (0)