Exemple #1
0
    def __init__(self, url, xml, cookies):
        self.version = '1.1.0'
        self.url = url
        self.cookies = cookies
        # initialize from saved capability document or access the server
        reader = WCSCapabilitiesReader(self.version)
        if xml:
            self._capabilities = reader.readString(xml)
        else:
            self._capabilities = reader.read(self.url)

        #build metadata objects:

        #serviceIdentification metadata
        elem = self._capabilities.find(
            '{http://www.opengis.net/wcs/1.1/ows}ServiceIdentification')
        if elem is None:
            elem = self._capabilities.find(
                '{http://www.opengis.net/ows}ServiceIdentification')
        self.identification = ServiceIdentification(elem)

        #serviceProvider
        elem = self._capabilities.find(
            '{http://www.opengis.net/ows}ServiceProvider')
        self.provider = ServiceProvider(elem)

        #serviceOperations
        self.operations = []
        for elem in self._capabilities.findall(
                '{http://www.opengis.net/wcs/1.1/ows}OperationsMetadata/{http://www.opengis.net/wcs/1.1/ows}Operation/'
        ):
            self.operations.append(Operation(elem))

            # exceptions - ***********TO DO *************
            self.exceptions = [f.text for f \
                in self._capabilities.findall('Capability/Exception/Format')]

        # serviceContents: our assumption is that services use a top-level layer
        # as a metadata organizer, nothing more.
        self.contents = {}
        top = self._capabilities.find(
            '{http://www.opengis.net/wcs/1.1}Contents/{http://www.opengis.net/wcs/1.1}CoverageSummary'
        )
        for elem in self._capabilities.findall(
                '{http://www.opengis.net/wcs/1.1}Contents/{http://www.opengis.net/wcs/1.1}CoverageSummary/{http://www.opengis.net/wcs/1.1}CoverageSummary'
        ):
            cm = ContentMetadata(elem, top, self)
            self.contents[cm.id] = cm

        if self.contents == {}:
            #non-hierarchical.
            top = None
            for elem in self._capabilities.findall(
                    '{http://www.opengis.net/wcs/1.1}Contents/{http://www.opengis.net/wcs/1.1}CoverageSummary'
            ):
                cm = ContentMetadata(elem, top, self)
                #make the describeCoverage requests to populate the supported formats/crs attributes
                self.contents[cm.id] = cm
Exemple #2
0
    def __init__(self, url, xml, cookies):
        self.version = '2.0.1'
        self.url = url
        self.cookies = cookies
        # initialize from saved capability document or access the server
        reader = WCSCapabilitiesReader(self.version)
        if xml:
            self._capabilities = reader.readString(xml)
        else:
            self._capabilities = reader.read(self.url)

        # check for exceptions
        se = self._capabilities.find('Exception')

        if se is not None:
            err_message = str(se.text).strip()
            raise ServiceException(err_message, xml)

        #build metadata objects:

        #serviceIdentification metadata
        elem = self._capabilities.find(OWS.ServiceIdentification)
        if elem is None:
            elem = self._capabilities.find(OWS.ServiceIdentification)
        self.identification = ServiceIdentification(elem)

        #serviceProvider
        elem = self._capabilities.find(OWS.ServiceProvider)
        self.provider = ServiceProvider(elem)

        #serviceOperations
        self.operations = []
        for elem in self._capabilities.findall(OWS.OperationsMetadata + '/' +
                                               OWS.Operation):
            self.operations.append(Operation(elem))

            # exceptions - ***********TO DO *************
            self.exceptions = [f.text for f \
                in self._capabilities.findall('Capability/Exception/Format')]

        # serviceContents: our assumption is that services use a top-level layer
        # as a metadata organizer, nothing more.
        self.contents = {}
        top = self._capabilities.find(WCS.Contents + '/' + WCS.CoverageSummary)
        for elem in self._capabilities.findall(WCS.Contents + '/' +
                                               WCS.CoverageSummary + '/' +
                                               WCS.CoverageSummary):
            cm = ContentMetadata(elem, top, self)
            self.contents[cm.id] = cm

        if self.contents == {}:
            #non-hierarchical.
            top = None
            for elem in self._capabilities.findall(WCS.Contents + '/' +
                                                   WCS.CoverageSummary):
                cm = ContentMetadata(elem, top, self)
                #make the describeCoverage requests to populate the supported formats/crs attributes
                self.contents[cm.id] = cm
Exemple #3
0
    def __init__(self, url, xml, cookies):
        self.version = '1.0.0'
        self.url = url
        self.cookies = cookies
        # initialize from saved capability document or access the server
        reader = WCSCapabilitiesReader(self.version, self.cookies)
        if xml:
            self._capabilities = reader.readString(xml)
        else:
            self._capabilities = reader.read(self.url)

        # check for exceptions
        se = self._capabilities.find('ServiceException')

        if se is not None:
            err_message = str(se.text).strip()
            raise ServiceException(err_message, xml)

        #serviceIdentification metadata
        subelem = self._capabilities.find(ns('Service'))
        self.identification = ServiceIdentification(subelem)

        #serviceProvider metadata
        subelem = self._capabilities.find(
            ns('Service/') + ns('responsibleParty'))
        self.provider = ServiceProvider(subelem)

        #serviceOperations metadata
        self.operations = []
        for elem in self._capabilities.find(ns('Capability/') +
                                            ns('Request'))[:]:
            self.operations.append(OperationMetadata(elem))

        #serviceContents metadata
        self.contents = {}
        for elem in self._capabilities.findall(
                ns('ContentMetadata/') + ns('CoverageOfferingBrief')):
            cm = ContentMetadata(elem, self)
            self.contents[cm.id] = cm

        #Some WCS servers (wrongly) advertise 'Content' OfferingBrief instead.
        if self.contents == {}:
            for elem in self._capabilities.findall(
                    ns('ContentMetadata/') + ns('ContentOfferingBrief')):
                cm = ContentMetadata(elem, self)
                self.contents[cm.id] = cm

        #exceptions
        self.exceptions = [f.text for f \
                in self._capabilities.findall('Capability/Exception/Format')]