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 __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)
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 = ""
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 = ""