Пример #1
0
    def wfs(self):
        name = self.connectionCombo.currentText()
        conn = QgsOwsConnection("wfs", name)
        uri = conn.uri().param('url')
        req_version = conn.uri().param('version')
        s = QgsSettings()
        checked_version = s.value(
            "qgis/connections-wfs/{}/checked_version".format(name), False)
        if req_version == "auto" or not checked_version:
            # detect version
            u = QUrlQuery()
            u.addQueryItem("request", "GetCapabilities")
            u.addQueryItem("service", "WFS")
            if req_version == "auto":
                u.addQueryItem("acceptversions", "2.0.0,1.1.0,1.0.0")
            elif not checked_version:
                u.addQueryItem("version", req_version)
            final_url = QUrl(uri)
            final_url.setQuery(u)

            xml, ns_map = xml_parse(remote_open_from_qgis(
                final_url.toString()))
            root = xml.getroot()
            if 'ows' in ns_map:
                versions = [
                    v.text for v in root.findall(
                        "./ows:ServiceIdentification/ows:ServiceTypeVersion",
                        ns_map)
                ]
            else:
                versions = [
                    v.text for v in root.findall(
                        "./ServiceIdentification/ServiceTypeVersion", ns_map)
                ]
            if not versions:
                if 'version' in root.attrib:
                    versions = [root.attrib['version']]
            if not versions:
                raise RuntimeError("Cannot determine WFS version")
            # take the greatest version, if more than one
            version = sorted(versions)[-1]

            if version != req_version:
                QgsMessageLog.logMessage(
                    "Requested WFS version {}, got {}".format(
                        req_version, version))
            else:
                s.setValue(
                    "qgis/connections-wfs/{}/checked_version".format(name),
                    True)
        else:
            version = req_version

        with qgis_proxy_settings():
            return WebFeatureService(url=uri, version=version)
Пример #2
0
    def testWfsConnection(self):
        c = QgsOwsConnection('WFS', 'test')
        uri = c.uri()

        self.assertEqual(uri.param('url'), 'ccc.ddd.com')
        self.assertEqual(uri.param('version'), '1.1.0')
        self.assertEqual(uri.param('maxNumFeatures'), '47')
        self.assertEqual(uri.param('IgnoreAxisOrientation'), '1')
        self.assertEqual(uri.param('InvertAxisOrientation'), '1')
Пример #3
0
    def testWfsConnection(self):
        c = QgsOwsConnection('WFS', 'test')
        uri = c.uri()

        self.assertEqual(uri.param('url'), 'ccc.ddd.com')
        self.assertEqual(uri.param('version'), '1.1.0')
        self.assertEqual(uri.param('maxNumFeatures'), '47')
        self.assertEqual(uri.param('IgnoreAxisOrientation'), '1')
        self.assertEqual(uri.param('InvertAxisOrientation'), '1')
Пример #4
0
    def testWmsConnection(self):
        c = QgsOwsConnection('WMS', 'test')
        uri = c.uri()

        self.assertEqual(uri.param('url'), 'aaa.bbb.com')
        self.assertEqual(uri.param('referer'), 'my_ref')
        self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
        self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
        self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
        self.assertEqual(uri.param('dpiMode'), '4')
        self.assertEqual(uri.param('IgnoreAxisOrientation'), '1')
        self.assertEqual(uri.param('InvertAxisOrientation'), '1')
Пример #5
0
    def testWmsConnection(self):
        c = QgsOwsConnection('WMS', 'test')
        uri = c.uri()

        self.assertEqual(uri.param('url'), 'aaa.bbb.com')
        self.assertEqual(uri.param('referer'), 'my_ref')
        self.assertEqual(uri.param('IgnoreGetMapUrl'), '1')
        self.assertEqual(uri.param('IgnoreGetFeatureInfoUrl'), '1')
        self.assertEqual(uri.param('SmoothPixmapTransform'), '1')
        self.assertEqual(uri.param('dpiMode'), '4')
        self.assertEqual(uri.param('IgnoreAxisOrientation'), '1')
        self.assertEqual(uri.param('InvertAxisOrientation'), '1')
Пример #6
0
    def wfs(self):
        conn = QgsOwsConnection("wfs", self.connectionCombo.currentText())
        uri = conn.uri().param('url')
        version = conn.uri().param('version')
        if version == "auto":
            # detect version
            u = QUrlQuery(uri)
            u.addQueryItem("request", "GetCapabilities")
            u.addQueryItem("acceptversions", "2.0.0,1.1.0,1.0.0")

            xml, ns_map = xml_parse(remote_open_from_qgis(u.query()))
            root = xml.getroot()
            versions = [
                v.text for v in root.findall(
                    "./ows:ServiceIdentification/ows:ServiceTypeVersion",
                    ns_map)
            ]
            # take the greatest version, if more than one
            version = sorted(versions)[-1]

        with qgis_proxy_settings():
            return WebFeatureService(url=uri, version=version)