Skip to content

Latest commit

 

History

History
58 lines (44 loc) · 2.42 KB

ROADMAP.md

File metadata and controls

58 lines (44 loc) · 2.42 KB

Roadmap

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.

Phase 1

  • 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

Phase 2

  • 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

Phase 3 and onward

  • 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)