Our primary goal is to get through phases 1 and 2, focusing on tile serving of large geospatial images specifically in Cloud Optimized GeoTiff (COG) format.
- Abstract API View classes that can be mixed-in downstream to expose all available endpoints
- endpoints for metadata (/metadata, /tiles/metadata_internal)
- endpoints for serving tiles (/tiles/zxy, /tiles/fzxy)
- cache management - tile sources should be cached so that we don't open a file for each tile
- endpoint for regions
- endpoint for thumbnails
- thumbnail caching
- endpoint for individual pixels
- endpoint for histograms
- some diagnostic and settings endpoints (list available sources, set whether to automatically use large_images and the size of small images that can be used)
- Support for django's FileField
- Support for S3FileField
- Ship an easily extensible SSR template for tile viewing with CesiumJS
- Support for using file URLs with GDAL's VSI
- Provide OpenAPI documentation in swagger
- Support full styling for large-image
- utilize this app in ResonantGeoData
- utilize in non-geospatial app (Atlascope)
- Support GeoDjango's
GDALRaster
- Provide admin widget
- Support both detail and non-detail viewsets
- Provide overridable interface to make highly customizable
- Documentation (see README)
- mypy typing
- Error handling in REST interface
- Provide universal, includable UI for building style JSON
- Provide some sort of endpoint to check if an image is a valid COG
- Tie large-image's caching into Django's cache (might require upstream work in large-image)
Things that would require implementing tasks with celery:
- ability to convert images via large_image_converter
- async endpoint for regions
Things I'm unsure about:
- endpoints for associated images
- ability to precache thumbnails (the thumbnail jobs endpoints)
- endpoints for serving tiles in deepzoom format
Things I think should be implemented downstream:
- endpoint or method to make / unmake a Django file field into a large_image item
- fuse-like ability to access filefields as os-level files (until implemented, s3 files will need to be pulled locally to serve them, which is inefficient)