Source code for django_website.Managers.ImageFilterManager
from geojson import Polygon, Feature, FeatureCollection
from django_website.ImageFilters.ImageFilter import ImageFilter
from django_website.Primitives.GeoImage import GeoImage
from django.utils.translation import gettext
[docs]class ImageFilterManager(object):
"""
ImageFilterManager: Responsible for keeping track of registered
image filters and for encapsulating responses from requests delegated
to them.
"""
__instance__ = None
def __init__(self):
self._ImageFilters = {}
for filterClass in ImageFilter._subclasses:
self.registerFilter(filterClass)
def __new__(cls):
if ImageFilterManager.__instance__ is None:
ImageFilterManager.__instance__ = object.__new__(cls)
return ImageFilterManager.__instance__
[docs] def registerFilter(self, filter: ImageFilter):
"""
Used during initialization to make some implemented
image filter available to clients (e.g. front-end).
Parameters
----------
filter : ImageFilter
The ImageFilter object, it should be a specialization
of the class ImageFilter (e.g. GreeneryFilter)
Returns
-------
none
Raises
------
KeyError
when a key error
OtherError
when an other error
"""
if not filter.filterId in self._ImageFilters:
self._ImageFilters[filter.filterId] = filter
pass
[docs] def getAvailableImageFilters(self):
return [{'name': self._ImageFilters[filterId].filterName, 'id': filterId} for filterId in self._ImageFilters]
[docs] def processImageFromFeatureCollection(self, filterId, featureCollection: FeatureCollection) -> FeatureCollection:
if filterId in self._ImageFilters:
return self._ImageFilters[filterId].processImageFromFeatureCollection(featureCollection)
else:
return gettext("filterId not found!")
pass