コード例 #1
0
ファイル: layers.py プロジェクト: saintuk/themapcloud
 def __init__(self, iface, dock):
     self.iface = iface
     self.dock = dock
     self.layer_n = None
     self.layers_ordered = []
     self.multi_l_count = 0
     self.order_layers = MultiWmsDialog()
     self.order_layers.ui.layerOrderPushButton.clicked.connect(
         self.store_user_title_and_order)
コード例 #2
0
 def __init__(self, iface, dock):
     self.iface = iface
     self.dock = dock
     self.layer_n = None
     self.layers_ordered = []
     self.multi_l_count = 0
     self.order_layers = MultiWmsDialog()
     self.order_layers.ui.layerOrderPushButton.clicked.connect(self.store_user_title_and_order)
コード例 #3
0
ファイル: layers.py プロジェクト: saintuk/themapcloud
class AddToCanvas:
    """Add layers to QGIS map canvas"""
    def __init__(self, iface, dock):
        self.iface = iface
        self.dock = dock
        self.layer_n = None
        self.layers_ordered = []
        self.multi_l_count = 0
        self.order_layers = MultiWmsDialog()
        self.order_layers.ui.layerOrderPushButton.clicked.connect(
            self.store_user_title_and_order)

    def store_user_title_and_order(self):
        # Store user input title for multi wms
        self.layer_n = self.order_layers.ui.displayNameLineEdit.text()
        layer_list_widget = self.order_layers.ui.layerOrderListWidget
        for index in xrange(layer_list_widget.count()):
            self.layers_ordered.append(
                (layer_list_widget.item(index).text(),
                 layer_list_widget.item(index).data(Qt.UserRole)))
        self.order_layers.close()

    def title_and_order(self, data):
        # Opens dlg for user to input layer name, creates generic if not provided
        self.order_layers.ui.layerOrderListWidget.clear()
        for d in data:
            item = QListWidgetItem()
            item.setText(d[0])
            item.setData(Qt.UserRole, d[1])
            self.order_layers.ui.layerOrderListWidget.addItem(item)
        self.order_layers.exec_()
        if self.layer_n:
            return self.layer_n
        else:
            self.multi_l_count += 1
            title = "MultiWMSLayer_" + str(self.multi_l_count)
            return title

    def add_wms(self, data, username, password):
        self.reset()
        # Add wms layer to map canvas
        if data:
            if len(data) == 1:
                # Add single WMS layer to canvas
                title = str(data[0][0])
                layer = str(data[0][1])
                if "grey" in layer.lower():
                    title += "Greyscale"
                url = "contextualWMSLegend=0&crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png" \
                      "&layers={0}&styles=default&url={1}/maps/wms&password={2}" \
                      "&username={3}".format(layer, BASE_API_URL, password, username)
            else:
                # Adds multiple layers to canvas as single layer
                title = self.title_and_order(data)
                layers = []
                styles = ""
                if self.layers_ordered:
                    data = self.layers_ordered
                for layer_t in data:
                    layer = str(layer_t[1]) + "&layers="
                    layers.append(layer)
                    styles += "&styles="
                layers_clean = "".join(layers)[:-8]
                url = "contextualWMSLegend=0&crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png" \
                      "&layers={0}{1}&url={2}/maps/wms&password={3}" \
                      "&username={4}".format(layers_clean, styles, BASE_API_URL, password, username)
            self.iface.addRasterLayer(url, title, "wms")
            self.zoom_to_extent()

    def add_wmts(self, data, username, password):
        # Add wmts layer to canvas
        self.reset()
        for layer_t in data:
            title = str(layer_t[0])
            layer = str(layer_t[1][0])
            grid = str(layer_t[1][1])

            if "grey" in layer.lower():
                title += " Greyscale"
            url = r"crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png&layers={0}&" \
                  r"styles=default&tileMatrixSet={4}&url={1}/maps/wmts/1.0.0/WMTSCapabilities.xml&" \
                  r"password={2}&username={3}".format(layer, BASE_API_URL, password, username, grid)

            self.iface.addRasterLayer(url, title, "wms")
        self.zoom_to_extent()

    def zoom_to_extent(self):
        # If checkbox is ticked then zoom to layer extent
        if self.dock.zoomExtentWmsBox.isChecked():
            self.iface.zoomToActiveLayer()

    def reset(self):
        # Reset for adding a new layer
        self.layers_ordered = []
        self.layer_n = ""
コード例 #4
0
class AddToCanvas:
    """Add layers to QGIS map canvas"""

    def __init__(self, iface, dock):
        self.iface = iface
        self.dock = dock
        self.layer_n = None
        self.layers_ordered = []
        self.multi_l_count = 0
        self.order_layers = MultiWmsDialog()
        self.order_layers.ui.layerOrderPushButton.clicked.connect(self.store_user_title_and_order)

    def store_user_title_and_order(self):
        # Store user input title for multi wms
        self.layer_n = self.order_layers.ui.displayNameLineEdit.text()
        layer_list_widget = self.order_layers.ui.layerOrderListWidget
        for index in xrange(layer_list_widget.count()):
            self.layers_ordered.append(
                (layer_list_widget.item(index).text(), layer_list_widget.item(index).data(Qt.UserRole)))
        self.order_layers.close()

    def title_and_order(self, data):
        # Opens dlg for user to input layer name, creates generic if not provided
        self.order_layers.ui.layerOrderListWidget.clear()
        for d in data:
            print d
            item = QListWidgetItem()
            item.setText(d[0])
            item.setData(Qt.UserRole, d[1])
            self.order_layers.ui.layerOrderListWidget.addItem(item)
        self.order_layers.exec_()
        if self.layer_n:
            return self.layer_n
        else:
            self.multi_l_count += 1
            title = "MultipleWMSLayer_" + str(self.multi_l_count)
            return title

    def add_wms(self, data, token):
        self.reset()
        # Add wms layer to map canvas
        if data:
            if len(data) == 1:
                # Add single WMS layer to canvas
                title = str(data[0][0])
                layer = str(data[0][1])
                if "grey" in layer.lower():
                    title += "Greyscale"
                url = "contextualWMSLegend=0&crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png&layers=" + layer + \
                      "&styles=&url=http://wms.locationcentre.co.uk/services/" + token + "/service?"
            else:
                # Adds multiple layers to canvas as single layer
                title = self.title_and_order(data)
                layers = []
                styles = ""
                if self.layers_ordered:
                    data = self.layers_ordered
                for layer_t in data:
                    layer = str(layer_t[1]) + "&layers="
                    layers.append(layer)
                    styles += "&styles="
                layers_clean = "".join(layers)[:-8]
                url = "contextualWMSLegend=0&crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png&layers=" + layers_clean + \
                      styles + "&url=http://wms.locationcentre.co.uk/services/" + token + "/service?"
            self.iface.addRasterLayer(url, title, "wms")
            self.zoom_to_extent()

    def add_wmts(self, data, token):
        # Add wmts layer to canvas
        self.reset()
        for layer_t in data:
            title = str(layer_t[0])
            layer = str(layer_t[1][0])
            grid = str(layer_t[1][1])
            if "grey" in layer.lower():
                title += " Greyscale"
            url = r"crs=EPSG:27700&dpiMode=7&featureCount=10&format=image/png&layers=" + layer + \
                  r"&styles=default&tileMatrixSet=" + grid + "&url=http://wms.locationcentre.co.uk/services/" + \
                  token + r"/wmts/1.0.0/WMTSCapabilities.xml"
            print url
            self.iface.addRasterLayer(url, title, "wms")
        self.zoom_to_extent()

    def zoom_to_extent(self):
        # If checkbox is ticked then zoom to layer extent
        if self.dock.zoomExtentWmsBox.isChecked():
            self.iface.zoomToActiveLayer()

    def reset(self):
        # Reset for adding a new layer
        self.layers_ordered = []
        self.layer_n = ""