示例#1
0
    def addSourceToBrowser(self, data_source):
        source = None
        if data_source['type'] == "TMS":
            url = data_source['url'][13:]
            source = ["connections-xyz", data_source['alias'], "", "", "", url, "", "19", "0", data_source["service_name"]]
        if data_source['type'] == "WMS":
            url = data_source['url'][4:].split("&")[0]
            source = ["connections-wms", data_source['alias'], "", "", "", url, "", "19", "0", data_source["service_name"]]
        if data_source['type'] == "WMTS":
            url = re.match("^.*url=(.[^&]*)", data_source['url'])[1]
            source = ["connections-wms", data_source['alias'], "", "", "", url, "", "19", "0", data_source["service_name"]]

#         print(self.sourcePresentInBrowser(source[0], url))
        if source != None and not self.sourcePresentInBrowser(source[0], url):
            connectionType = source[0]
            connectionName = source[1] if source[9] is None else source[9]
            QSettings().setValue("qgis/%s/%s/authcfg" % (connectionType, connectionName), source[2])
            QSettings().setValue("qgis/%s/%s/password" % (connectionType, connectionName), source[3])
            QSettings().setValue("qgis/%s/%s/referer" % (connectionType, connectionName), source[4])
            QSettings().setValue("qgis/%s/%s/url" % (connectionType, connectionName), source[5])
            QSettings().setValue("qgis/%s/%s/username" % (connectionType, connectionName), source[6])
            QSettings().setValue("qgis/%s/%s/zmax" % (connectionType, connectionName), source[7])
            QSettings().setValue("qgis/%s/%s/zmin" % (connectionType, connectionName), source[8])

        iface.reloadConnections()
示例#2
0
def add_xyz_connections(
    extra_sources: list = [],
    remove_existing: bool = True,
) -> None:
    """
    Add XYZ connection for all default and user-specified sources

    The format for custom sources is:
        - ``[display name, authcfg, pw, referer, url, username, zmax, zmin]``


    :param extra_sources: user-provided list to extend the stock choices
    :param remove_existing: if True, will clear out old connections before adding new ones
    """

    if remove_existing:
        remove_xyz_connections()

    sources = SOURCES + extra_sources

    # Add sources to browser
    for source in sources:
        connectionName = source[0]
        value_prefix = f"qgis/connections-xyz/{connectionName}"
        QSettings().setValue(f"{value_prefix}/authcfg", source[1])
        QSettings().setValue(f"{value_prefix}/password", source[2])
        QSettings().setValue(f"{value_prefix}/referer", source[3])
        QSettings().setValue(f"{value_prefix}/url", source[4])
        QSettings().setValue(f"{value_prefix}/username", source[5])
        QSettings().setValue(f"{value_prefix}/zmax", source[6])
        QSettings().setValue(f"{value_prefix}/zmin", source[7])

    iface.reloadConnections()
示例#3
0
def remove_xyz_connections():
    """ Remove all XYZ entries in the Browser """
    qs = QSettings()

    for k in sorted(qs.allKeys()):
        if "qgis/connections-xyz/" in k:
            qs.remove(k)

    iface.reloadConnections()
示例#4
0
def remove_postgis_connections() -> None:
    """ Remove all entries under PostGIS in the Browser """
    qs = QSettings()

    for k in sorted(qs.allKeys()):
        if "PostgreSQL/connections/" in k:
            qs.remove(k)

    iface.reloadConnections()
示例#5
0
def add_postgis_connections(
    dbs_to_ignore: list = ["postgres", "defaultdb", "_dodb"],
    remove_existing: bool = True,
) -> None:
    """
    Add a database connection for all DBs that exist on the clusters
    defined in the user's config.txt

    For more details, see postGIS_tools.get_postGIS_config()

    :param dbs_to_ignore: list of databases to skip creating entries for
    :param remove_existing: if True, start by removing the user's DB list
    """

    if remove_existing:
        remove_postgis_connections()

    # Read the user's config.txt
    config, super_config = postGIS_tools.get_postGIS_config()

    # Iterate over each host defined in the file
    for host in config:

        this_config = config[host]

        # Get a list of all databases on the host host cluster
        super_uri = postGIS_tools.make_uri(**super_config[host])
        db_list = postGIS_tools.get_database_list(super_uri, debug=False)

        for db in db_list:

            if db not in dbs_to_ignore:

                # Define the name it will show in the QGIS Browser
                entry = f"{db} {host.upper()}"

                values = {
                    "database": db,
                    "host": this_config["host"],
                    "port": this_config["port"],
                    "username": this_config["username"],
                    "password": this_config["password"],
                    "projectsInDatabase": "true",
                    "savePassword": "******",
                    "saveUsername": "******"
                }

                if "sslmode" in this_config:
                    values["sslmode"] = this_config["sslmode"]

                for value_name in values:
                    val = values[value_name]
                    QSettings().setValue(f"PostgreSQL/connections/{entry}/{value_name}", val)

    iface.reloadConnections()
    def addSourceToBrowser(self, data_source):
        source = None
        if data_source['type'] == "TMS":
            url = data_source['url'][13:]
            source = [
                "connections-xyz", data_source['alias'], "", "", "", url, "",
                "19", "0"
            ]
        if data_source['type'] == "WMS":
            url = data_source['url'][4:].split("&")[0]
            source = [
                "connections-wms", data_source['alias'], "", "", "", url, "",
                "19", "0"
            ]
        if source != None:
            connectionType = source[0]
            connectionName = source[1]
            QSettings().setValue(
                "qgis/%s/%s/authcfg" % (connectionType, connectionName),
                source[2])
            QSettings().setValue(
                "qgis/%s/%s/password" % (connectionType, connectionName),
                source[3])
            QSettings().setValue(
                "qgis/%s/%s/referer" % (connectionType, connectionName),
                source[4])
            QSettings().setValue(
                "qgis/%s/%s/url" % (connectionType, connectionName), source[5])
            QSettings().setValue(
                "qgis/%s/%s/username" % (connectionType, connectionName),
                source[6])
            QSettings().setValue(
                "qgis/%s/%s/zmax" % (connectionType, connectionName),
                source[7])
            QSettings().setValue(
                "qgis/%s/%s/zmin" % (connectionType, connectionName),
                source[8])

        iface.reloadConnections()
    "Map tiles by CartoDB, under CC BY 3.0. Data by OpenStreetMap, under ODbL.",
    "http://basemaps.cartocdn.com/light_all/%7Bz%7D/%7Bx%7D/%7By%7D.png", "",
    "20", "0"
])
sources.append([
    "connections-xyz", "Bing VirtualEarth", "", "", "",
    "http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g=1", "", "19", "1"
])

# Add sources to browser
for source in sources:
    connectionType = source[0]
    connectionName = source[1]
    QSettings().setValue(
        "qgis/%s/%s/authcfg" % (connectionType, connectionName), source[2])
    QSettings().setValue(
        "qgis/%s/%s/password" % (connectionType, connectionName), source[3])
    QSettings().setValue(
        "qgis/%s/%s/referer" % (connectionType, connectionName), source[4])
    QSettings().setValue("qgis/%s/%s/url" % (connectionType, connectionName),
                         source[5])
    QSettings().setValue(
        "qgis/%s/%s/username" % (connectionType, connectionName), source[6])
    QSettings().setValue("qgis/%s/%s/zmax" % (connectionType, connectionName),
                         source[7])
    QSettings().setValue("qgis/%s/%s/zmin" % (connectionType, connectionName),
                         source[8])

# Update GUI
iface.reloadConnections()