Пример #1
0
    def test_get_featurecatalogue_uuid_nouuidref(self, md_metadata):
        """Test the owsutil.get_featurecatalogue_uuid method when the
        gmd:contentInfo element is missing a 'uuidref' attribute.

        Test whether a FeatureCatalogueNotFoundError is raised.

        Parameters
        ----------
        md_metadata : pytest.fixture providing owslib.iso.MD_Metadata
            Parsed metadata describing the Boringen WFS layer in more detail,
            in the ISO 19115/19139 format.

        """
        tree = etree.fromstring(md_metadata.xml)
        for ci in tree.findall(
                nspath_eval(
                    'gmd:MD_Metadata/gmd:contentInfo/'
                    'gmd:MD_FeatureCatalogueDescription/'
                    'gmd:featureCatalogueCitation',
                    {'gmd': 'http://www.isotc211.org/2005/gmd'})):
            ci.attrib.pop('uuidref')
        md_metadata.xml = etree.tostring(tree)

        with pytest.raises(FeatureCatalogueNotFoundError):
            owsutil.get_featurecatalogue_uuid(md_metadata)
Пример #2
0
    def _init_fields(self):
        if self._fields is None:
            if SonderingSearch.__wfs_schema is None:
                SonderingSearch.__wfs_schema = self._get_schema()

            if SonderingSearch.__md_metadata is None:
                SonderingSearch.__md_metadata = self._get_remote_metadata()

            if SonderingSearch.__fc_featurecatalogue is None:
                csw_url = self._get_csw_base_url()
                fc_uuid = owsutil.get_featurecatalogue_uuid(
                    SonderingSearch.__md_metadata)

                SonderingSearch.__fc_featurecatalogue = \
                    owsutil.get_remote_featurecatalogue(csw_url, fc_uuid)

            if SonderingSearch.__xsd_schemas is None:
                SonderingSearch.__xsd_schemas = \
                    self._get_remote_xsd_schemas()

            fields = self._build_fields(SonderingSearch.__wfs_schema,
                                        SonderingSearch.__fc_featurecatalogue,
                                        SonderingSearch.__xsd_schemas)

            for field in fields.values():
                if field['name'] not in self._type.get_field_names(
                        include_wfs_injected=True):
                    self._type.fields.append(
                        _WfsInjectedField(name=field['name'],
                                          datatype=field['type']))

            self._fields = self._build_fields(
                SonderingSearch.__wfs_schema,
                SonderingSearch.__fc_featurecatalogue,
                SonderingSearch.__xsd_schemas)
Пример #3
0
    def test_get_featurecatalogue_uuid_nocontentinfo(self, md_metadata):
        """Test the owsutil.get_featurecatalogue_uuid method when the
        metadata is missing the gmd:contentInfo element.

        Test whether a FeatureCatalogueNotFoundError is raised.

        Parameters
        ----------
        md_metadata : pytest.fixture providing owslib.iso.MD_Metadata
            Parsed metadata describing the Boringen WFS layer in more detail,
            in the ISO 19115/19139 format.

        """
        tree = etree.fromstring(md_metadata.xml)
        for ci in tree.findall(
                './/{http://www.isotc211.org/2005/gmd}contentInfo'):
            tree.remove(ci)
        md_metadata = MD_Metadata(tree)

        with pytest.raises(FeatureCatalogueNotFoundError):
            owsutil.get_featurecatalogue_uuid(md_metadata)
Пример #4
0
    def test_get_featurecatalogue_uuid(self, md_metadata):
        """Test the owsutil.get_featurecatalogue_uuid method.

        Test whether the featurecatalogue uuid of the dov-pub:Boringen layer
        is correct.

        Parameters
        ----------
        md_metadata : pytest.fixture providing owslib.iso.MD_Metadata
            Parsed metadata describing the Boringen WFS layer in more detail,
            in the ISO 19115/19139 format.

        """
        assert owsutil.get_featurecatalogue_uuid(md_metadata) == \
               'c0cbd397-520f-4ee1-aca7-d70e271eeed6'
Пример #5
0
    def _init_fields(self):
        """Initialise the fields and their metadata available in this search
        class."""
        if self._fields is None:
            if InformeleHydrogeologischeStratigrafieSearch.__wfs_schema is \
                    None:
                InformeleHydrogeologischeStratigrafieSearch.__wfs_schema = \
                    self._get_schema()

            if InformeleHydrogeologischeStratigrafieSearch.__md_metadata is \
                    None:
                InformeleHydrogeologischeStratigrafieSearch.__md_metadata = \
                    self._get_remote_metadata()

            if InformeleHydrogeologischeStratigrafieSearch.\
                    __fc_featurecatalogue is None:
                csw_url = self._get_csw_base_url()
                fc_uuid = owsutil.get_featurecatalogue_uuid(
                    InformeleHydrogeologischeStratigrafieSearch.__md_metadata)

                InformeleHydrogeologischeStratigrafieSearch.\
                    __fc_featurecatalogue = \
                    owsutil.get_remote_featurecatalogue(csw_url, fc_uuid)

            if InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas is \
                    None:
                InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas = \
                    self._get_remote_xsd_schemas()

            fields = self._build_fields(
                InformeleHydrogeologischeStratigrafieSearch.__wfs_schema,
                InformeleHydrogeologischeStratigrafieSearch.
                __fc_featurecatalogue,
                InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas)

            for field in fields.values():
                if field['name'] not in self._type.get_field_names(
                        include_wfs_injected=True):
                    self._type.fields.append(
                        _WfsInjectedField(name=field['name'],
                                          datatype=field['type']))

            self._fields = self._build_fields(
                InformeleHydrogeologischeStratigrafieSearch.__wfs_schema,
                InformeleHydrogeologischeStratigrafieSearch.
                __fc_featurecatalogue,
                InformeleHydrogeologischeStratigrafieSearch.__xsd_schemas)
Пример #6
0
    def _init_fields(self):
        """Initialise the fields and their metadata available in this search
        class."""
        if self._fields is None:
            if GeotechnischeCoderingSearch.__wfs_schema is None:
                GeotechnischeCoderingSearch.__wfs_schema = \
                    self._get_schema()

            if GeotechnischeCoderingSearch.__md_metadata is None:
                GeotechnischeCoderingSearch.__md_metadata = \
                    self._get_remote_metadata()

            if GeotechnischeCoderingSearch.__fc_featurecatalogue \
                    is None:
                csw_url = self._get_csw_base_url()
                fc_uuid = owsutil.get_featurecatalogue_uuid(
                    GeotechnischeCoderingSearch.__md_metadata)

                GeotechnischeCoderingSearch.__fc_featurecatalogue = \
                    owsutil.get_remote_featurecatalogue(csw_url, fc_uuid)

            if GeotechnischeCoderingSearch.__xsd_schemas is None:
                GeotechnischeCoderingSearch.__xsd_schemas = \
                    self._get_remote_xsd_schemas()

            fields = self._build_fields(
                GeotechnischeCoderingSearch.__wfs_schema,
                GeotechnischeCoderingSearch.__fc_featurecatalogue,
                GeotechnischeCoderingSearch.__xsd_schemas)

            for field in fields.values():
                if field['name'] not in self._type.get_field_names(
                        include_wfs_injected=True):
                    self._type._fields.append({
                        'name': field['name'],
                        'source': 'wfs',
                        'sourcefield': field['name'],
                        'type': field['type'],
                        'wfs_injected': True
                    })

            self._fields = self._build_fields(
                GeotechnischeCoderingSearch.__wfs_schema,
                GeotechnischeCoderingSearch.__fc_featurecatalogue,
                GeotechnischeCoderingSearch.__xsd_schemas)
Пример #7
0
    def _init_fields(self):
        """Initialise the fields and their metadata available in this search
        class.

        Raises
        ------
        NotImplementedError
            This is an abstract method that should be implemented in a
            subclass.

        """
        if self._fields is None:
            if self._wfs_schema is None:
                self._wfs_schema = self._get_schema()

            if self._md_metadata is None:
                self._md_metadata = self._get_remote_metadata()

            if self._fc_featurecatalogue is None:
                csw_url = self._get_csw_base_url()
                fc_uuid = owsutil.get_featurecatalogue_uuid(self._md_metadata)
                self._fc_featurecatalogue = \
                    owsutil.get_remote_featurecatalogue(csw_url, fc_uuid)

            if self._xsd_schemas is None:
                self._xsd_schemas = self._get_remote_xsd_schemas()

            fields = self._build_fields(self._wfs_schema,
                                        self._fc_featurecatalogue,
                                        self._xsd_schemas)

            for field in fields.values():
                if field['name'] not in self._type.get_field_names(
                        include_wfs_injected=True):
                    self._type.fields.append(
                        _WfsInjectedField(name=field['name'],
                                          datatype=field['type']))

            self._fields = self._build_fields(self._wfs_schema,
                                              self._fc_featurecatalogue,
                                              self._xsd_schemas)