This pull request implements a thorough abstraction of a hierarchical concept that had been gestured at before but not fully carried out. Where it was possible in the past to designate layers as "key maps" (and, though with limited utility, "map of congested district" or "graphic map of volumes"), there was no way to apply a Multimask or create a mosaic of any of these categories. Multimasks were only applied at the volume level.
The changes here include a new database model, AnnotationSet, which facilitates the aggregation of layers within a Volume (soon to be renamed Map) into thematic sets. Now, mosaics are created per AnnotationSet, not per Volume. Correspondingly, the MultiMask tool can now be used on any AnnotationSet that is present within a Map, not only the "main content".
A lot of deliberation went into the decision of whether to call this an "AnnotationSet" or "LayerSet". The idea behind AnnotationSet is that non-map content, like multiple pages of text indexes, could also be aggregated into an AnnotationSet of category "text-index", for example. In other words, it can be an aggregation for non-spatial resources as well. On the other hand, only geospatial AnnotationSets are really supported at this point, and will be in the near future.
Also, the term Annotation is meant to hopefully make more sense down the road, where individual layers are stored less as local files and more as Annotation definitions from their parent sheets/resources. This side of things is still in development.
This work dragged on a bit, so there are some other changes I ended up adding to the mix along the way:
Regularize the context objects that are passed into various Svelte components from the Django views (more to do on this, but it's coming along)
Create a new ohmg.core app and move some general utils, renderers, and context_processors into it
More will be moved into here soon, as the loc_insurancemaps app needs to ultimately be dissolved
Remove the separate ohmg.api app by consolidating into other apps
The api itself and all schema definitions are now in ohmg.core
api.models.Key was been recreated as accounts.models.APIKey, and
Some old attempts at using rasterio were moved out of the code-base, just to clean things up (could be re-tried in the future)
Ultimately, this PR will close a handful of tickets around multimask behavior.
Closes #169
Closes #176
Closes #137
This pull request implements a thorough abstraction of a hierarchical concept that had been gestured at before but not fully carried out. Where it was possible in the past to designate layers as "key maps" (and, though with limited utility, "map of congested district" or "graphic map of volumes"), there was no way to apply a Multimask or create a mosaic of any of these categories. Multimasks were only applied at the volume level.
The changes here include a new database model,
AnnotationSet
, which facilitates the aggregation of layers within a Volume (soon to be renamed Map) into thematic sets. Now, mosaics are created per AnnotationSet, not per Volume. Correspondingly, the MultiMask tool can now be used on any AnnotationSet that is present within a Map, not only the "main content".A lot of deliberation went into the decision of whether to call this an "AnnotationSet" or "LayerSet". The idea behind AnnotationSet is that non-map content, like multiple pages of text indexes, could also be aggregated into an AnnotationSet of category "text-index", for example. In other words, it can be an aggregation for non-spatial resources as well. On the other hand, only geospatial AnnotationSets are really supported at this point, and will be in the near future.
Also, the term Annotation is meant to hopefully make more sense down the road, where individual layers are stored less as local files and more as Annotation definitions from their parent sheets/resources. This side of things is still in development.
This work dragged on a bit, so there are some other changes I ended up adding to the mix along the way:
ohmg.core
app and move some general utils, renderers, and context_processors into itloc_insurancemaps
app needs to ultimately be dissolvedohmg.api
app by consolidating into other appsohmg.core
api.models.Key
was been recreated asaccounts.models.APIKey
, andUltimately, this PR will close a handful of tickets around multimask behavior. Closes #169 Closes #176 Closes #137