Source code for django_website.Managers.ImageProviderManager
from geojson import Polygon, FeatureCollection
from typing import List
from django_website.ImageProviders.ImageProvider import ImageProvider
from geojson import FeatureCollection
from typing import List
from django_website.Primitives.GeoImage import GeoImage
from django_website.LogGenerator import write_to_log
[docs]class ImageProviderManager(object):
"""Mediator class instantiated as a singleton responsible for managing all the image platforms adaptors implemented"""
__instance = None
def __init__(self):
write_to_log('ImageProviderManager.__init__')
self._ImageProviders = {}
for imageProviderClass in ImageProvider._subclasses:
self.registerImageProvider(imageProviderClass)
def __new__(cls):
if ImageProviderManager.__instance is None:
ImageProviderManager.__instance = object.__new__(cls)
return ImageProviderManager.__instance
[docs] def registerImageProvider(self, provider: ImageProvider):
if not provider.imageProviderId in self._ImageProviders:
self._ImageProviders[provider.imageProviderId] = provider
pass
@property
def ImageProviders(self):
return self._ImageProviders
[docs] def getAvailableImageProviders(self):
return [{'name': self._ImageProviders[imageProviderId].imageProviderName, 'id': imageProviderId} for imageProviderId in self._ImageProviders]
[docs] def getImageForFeatureCollection(self, imageProviderId, featureCollection: FeatureCollection)->List[GeoImage]:
return self._ImageProviders[imageProviderId].getImageForFeatureCollection(featureCollection)