Skip to content

Raster API rasterio.crs.CRS.from_epsg ValueError: invalid literal for int() with base 10: '4326.0' #546

@anayeaye

Description

@anayeaye

What

The sit, dev, and staging instances of the backend are failing to render map and thumbnail previews with an invalid CRS data type error

Exception Group Traceback (most recent call last):\n  |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_utils.py\", line 79, in collapse_excgroups\n  |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 183, in __call__\n  |   File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/_backends/_asyncio.py\", line 772, in __aexit__\n  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)\n  +-+---------------- 1 ----------------\n    | Traceback (most recent call last):\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/errors.py\", line 164, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 182, in __call__\n    |   File \"/var/lang/lib/python3.12/contextlib.py\", line 158, in __exit__\n    |     self.gen.throw(value)\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_utils.py\", line 85, in collapse_excgroups\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 184, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/src/app.py\", line 268, in add_correlation_id\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/aws_lambda_powertools/tracing/tracer.py\", line 612, in decorate\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 159, in call_next\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 144, in coro\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette_cramjam/middleware.py\", line 112, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette_cramjam/middleware.py\", line 142, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/core/middleware.py\", line 63, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/cors.py\", line 85, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/exceptions.py\", line 63, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 53, in wrapped_app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 42, in wrapped_app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 716, in __call__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 736, in app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 290, in handle\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 78, in app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 53, in wrapped_app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 42, in wrapped_app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 75, in app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/src/monitoring.py\", line 59, in route_handler\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/fastapi/routing.py\", line 302, in app\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/fastapi/routing.py\", line 215, in run_endpoint_function\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/concurrency.py\", line 38, in run_in_threadpool\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/to_thread.py\", line 56, in run_sync\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/_backends/_asyncio.py\", line 2476, in run_sync_in_worker_thread\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/_backends/_asyncio.py\", line 967, in run\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/core/factory.py\", line 933, in tilejson\n    |   File \"<attrs generated methods titiler.pgstac.reader.PgSTACReader>\", line 60, in __init__\n    |     self.__attrs_post_init__()\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/pgstac/reader.py\", line 52, in __attrs_post_init__\n    |   File \"/tmp/pip-target-1t5l1o5b/lib/python/rio_tiler/io/stac.py\", line 283, in __attrs_post_init__\n    |   File \"rasterio/crs.pyx\", line 852, in rasterio.crs.CRS.from_string\n    |   File \"rasterio/crs.pyx\", line 582, in rasterio.crs.CRS.from_epsg\n    | ValueError: invalid literal for int() with base 10: '4326.0'\n    +------------------------------------\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/errors.py\", line 164, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 182, in __call__\n  File \"/var/lang/lib/python3.12/contextlib.py\", line 158, in __exit__\n    self.gen.throw(value)\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_utils.py\", line 85, in collapse_excgroups\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 184, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/src/app.py\", line 268, in add_correlation_id\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/aws_lambda_powertools/tracing/tracer.py\", line 612, in decorate\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 159, in call_next\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/base.py\", line 144, in coro\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette_cramjam/middleware.py\", line 112, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette_cramjam/middleware.py\", line 142, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/core/middleware.py\", line 63, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/cors.py\", line 85, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/middleware/exceptions.py\", line 63, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 53, in wrapped_app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 42, in wrapped_app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 716, in __call__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 736, in app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 290, in handle\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 78, in app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 53, in wrapped_app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/_exception_handler.py\", line 42, in wrapped_app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/routing.py\", line 75, in app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/src/monitoring.py\", line 59, in route_handler\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/fastapi/routing.py\", line 302, in app\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/fastapi/routing.py\", line 215, in run_endpoint_function\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/starlette/concurrency.py\", line 38, in run_in_threadpool\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/to_thread.py\", line 56, in run_sync\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/_backends/_asyncio.py\", line 2476, in run_sync_in_worker_thread\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/anyio/_backends/_asyncio.py\", line 967, in run\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/core/factory.py\", line 933, in tilejson\n  File \"<attrs generated methods titiler.pgstac.reader.PgSTACReader>\", line 60, in __init__\n    self.__attrs_post_init__()\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/titiler/pgstac/reader.py\", line 52, in __attrs_post_init__\n  File \"/tmp/pip-target-1t5l1o5b/lib/python/rio_tiler/io/stac.py\", line 283, in __attrs_post_init__\n  File \"rasterio/crs.pyx\", line 852, in rasterio.crs.CRS.from_string\n  File \"rasterio/crs.pyx\", line 582, in rasterio.crs.CRS.from_epsg\nValueError: invalid literal for int() with base 10: '4326.0'

This problem is not observed in the test and prod stacks.

To cause this error use a map preview request
https://dev.openveda.cloud/api/raster/collections/barc-thomasfire/items/thomas_fire_barc_201712.cog/WebMercatorQuad/tilejson.json?assets=cog_default&nodata=nan&rescale=1%2C4&colormap_name=rdylgn_r

To see the desired result, try the same request in the test stack
https://test.openveda.cloud/api/raster/collections/barc-thomasfire/items/thomas_fire_barc_201712/WebMercatorQuad/map?assets=cog_default&nodata=nan&rescale=1%2C4&colormap_name=rdylgn_r

Note
The map preview is dynamically generated in stac item links and the thumbnail rendered_preview is dynamically generated as an item asset when sufficient metadata are provided in the collection renders config. The items in this collection in all environments have sufficient renders config

barc-thomasfire
https://test.openveda.cloud/api/stac/collections/barc-thomasfire/items

AC

  • raster api /map in item links working as expected with sufficient renders metadata
  • raster api /preview link in item assets working as expected with sufficient renders metadata

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions