Closed anikaweinmann closed 6 months ago
Can you provide a complete code example that can reproduce issue?
The add_cog_layer
only supports matplotlib colormaps. You can use the greens
colormap use render ndvi.
import leafmap
m = leafmap.Map()
url = "https://open.gishub.org/data/raster/landsat.tif"
m.add_cog_layer(url, bands=[4, 1, 2], name="Landsat")
m.add_cog_layer(url, expression='(b4-b1)/(b4+b1)', rescale='-1, 1', colormap_name='greens', name="NDVI")
m.add("inspector")
m
I tried it in https://github.com/mundialis/fossgis2024/blob/actinia-ws/notebooks/actinia_fossgis.ipynb. Using colormap_name="greens"
is working. When I try the following:
result_url = jsonResponse["urls"]["resources"][0]
print(result_url)
raster_url = result_url.replace("//", f"//{actinia_user}:{actinia_pw}@")
# visualization with leafmap
m = leafmap.Map()
m.add_basemap("Esri.WorldImagery")
m.add_cog_layer(
raster_url,
label="NDVI map",
colormap_name="ndvi",
)
# show map
m
I get the error message:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
~/tmp/ipykernel_322494/2862253705.py in <module>
6 m = leafmap.Map()
7 m.add_basemap("Esri.WorldImagery")
----> 8 m.add_cog_layer(
9 raster_url,
10 label="NDVI map",
~/.local/lib/python3.10/site-packages/leafmap/leafmap.py in add_cog_layer(self, url, name, attribution, opacity, shown, bands, titiler_endpoint, zoom_to_layer, **kwargs)
998 vis_bands = [available_bands[idx - 1] for idx in indexes]
999
-> 1000 tile_url = cog_tile(url, bands, titiler_endpoint, **kwargs)
1001 bounds = cog_bounds(url, titiler_endpoint)
1002 self.add_tile_layer(tile_url, name, attribution, opacity, shown)
~/.local/lib/python3.10/site-packages/leafmap/stac.py in cog_tile(url, bands, titiler_endpoint, **kwargs)
209 f"{titiler_endpoint}/cog/{TileMatrixSetId}/tilejson.json", params=kwargs
210 ).json()
--> 211 return r["tiles"][0]
212
213
KeyError: 'tiles'
I also tried to add rescalling of my Tif to [-1 , 1] or [0, 1], but it leads to the same error.
Environment Information
Description
The colormap of NDVI ranges from 0 to 1 (see
cm.plot_colormap(colors=cm.palettes.ndvi)
), but for NDVI this makes no sense. It is defined from -1 to 1.Trying to use the NDVI colormap failed.
What I Did
I was not able to use it by
m.add_cog_layer(...)
and the plot of the colormap failed:The terrain colormap works:
cm.plot_colormap("terrain")
.