def trigger_with_raster(): raster_path = '/tmp/overviews.tif' result = qgc.QgsRasterLayer( raster_path, 'overviews', 'gdal', ) return result
def loadRaster(self, uri, name, epsg): s = QtCore.QSettings() defaultBehavior = s.value("Projections/defaultBehavior") s.setValue("Projections/defaultBehavior", "useGlobal") layer = core.QgsRasterLayer(uri, name) layer.setCrs(core.QgsCoordinateReferenceSystem(int(epsg))) s.setValue("Projections/defaultBehavior", defaultBehavior) if not layer.isValid(): return False self.addMapLayer(layer) return True
def _getRasterLayer(): layerRasters = filter( lambda l: l.type() == QgsCore.QgsMapLayer.RasterLayer, legend.layers() ) sources = map( lambda l: l.source(), layerRasters ) needAdd = False if sourceRaster in sources: layer = layerRasters[ sources.index( sourceRaster ) ] else: name = os.path.splitext( os.path.basename( sourceRaster ) )[0] layer = QgsCore.QgsRasterLayer( sourceRaster, name ) needAdd = True return { 'layer': layer, 'needAdd': needAdd }
def load(self, fileData): unloadedFiles = [] #QgsRasterLayer('type=xyz&url=https://tile.openstreetmap.org/%7Bz%7D/%7Bx%7D/%7By%7D.png&zmax=19&zmin=0', 'hop', 'wms') layer = core.QgsRasterLayer(fileData['caminho'], fileData['nome'], 'wms') if not layer.isValid(): self.showErrorMessageBox( '<p>erro: falha ao carregar o seguinte wms "{0}"</p>'.format( fileData['caminho'])) return self.addMapLayer(layer)
def addTMS(): geomTransf = QgsCore.QgsGeometry(feat.geometry()) geomTransf.transform(self.ct) wkt_geom = geomTransf.exportToWkt() layer = QgsCore.QgsRasterLayer(image, os.path.split(image)[-1]) layer.setCustomProperty('wkt_geom', wkt_geom) layer.setCustomProperty('date', feat['acquired']) layer.setCustomProperty('id_table', self.id_table) layer.setCustomProperty('id_image', feat['id']) QgsCore.QgsMapLayerRegistry.instance().addMapLayer( layer, addToLegend=False) self.ltgCatalog.addLayer(layer).setVisible(QtCore.Qt.Unchecked) self.legendRasterGeom.setLayer(layer)
def showCoverageLayer(self): #r = QgsRasterLayer('type=xyz&url=http://c.tile.openstreetmap.org/${z}/${x}/${y}.png', 'osm', 'wms') if self.showCoverage.isChecked(): service_url = "https://mts2.google.com/mapslt?lyrs=svv&x={x}&y={y}&z={z}&w=256&h=256&hl=en&style=40,18" service_uri = "type=xyz&zmin=0&zmax=21&url="+service_url.replace("=", "%3D").replace("&", "%26") layer = core.QgsRasterLayer(service_uri, "Streetview coverage", "wms") self.coverageLayerId = layer.id() core.QgsProject.instance().addMapLayer(layer, False) toc_root = core.QgsProject.instance().layerTreeRoot() toc_root.insertLayer(0, layer) else: try: core.QgsProject.instance().removeMapLayer(self.coverageLayerId) except: pass
def addImage(): layer = QgsCore.QgsRasterLayer(file_image, os.path.split(file_image)[-1]) geomTransf = QgsCore.QgsGeometry(geom) ct = QgsCore.QgsCoordinateTransform(v_crs, layer.crs()) geomTransf.transform(ct) wkt_geom = geomTransf.exportToWkt() layer.setCustomProperty('wkt_geom', wkt_geom) layer.setCustomProperty('date', acquired) layer.setCustomProperty('id_table', id_table) layer.setCustomProperty('id_image', id_image) QgsCore.QgsMapLayerRegistry.instance().addMapLayer( layer, addToLegend=False) self.catalog['ltg'].addLayer(layer) self.legendRasterGeom.setLayer(layer)
def addTMS(): server_url = API_PlanetLabs.urlTMS.format(item_type=item_type, item_id=item_id) urlkey = "{0}?api_key={1}".format(server_url, user_pwd) uri.setParam('url', urlkey) lyr = QgsCore.QgsRasterLayer(str(uri.encodedUri()), item_id, 'wms') if not lyr.isValid(): msg = "Error create TMS from {0}: Invalid layer".format( item_id) self.logMessage(msg, CatalogPL.pluginName, QgsCore.QgsMessageLog.CRITICAL) totalError += 1 return if not lyr.source() in sources_catalog_group: lyr.setCustomProperty('wkt_geom', wkt_geom) mlr.addMapLayer(lyr, addToLegend=False) self.ltgCatalog.addLayer(lyr).setVisible(QtCore.Qt.Unchecked) self.legendRasterGeom.setLayer(lyr)
def create_raster_map_layer(layer_path, layer_cfg): # Generate statistics for the raster layer. This creates an `aux.xml` file # alongside the .tif file that includes statistics (min/max/std) that qgis # can read. # Note that generating this file before creating the map layer allows the # layer's statistics to be correctly initialized. gdal.Info(layer_path, stats=True) map_layer = qgc.QgsRasterLayer(layer_path, layer_cfg['title'], 'gdal') # Set the min/max render accuracy to 'Exact'. Usually qgis estimates # statistics for e.g., generating the default colormap. mmo = map_layer.renderer().minMaxOrigin() # 0 == 'Exact' # map_layer.renderer().minMaxOrigin().statAccuracyString(0) mmo.setStatAccuracy(0) map_layer.renderer().setMinMaxOrigin(mmo) return map_layer
import qgis.core as qgc from qgreenland.util.qgis.project import QgsApplicationContext url = 'crs=EPSG:4326&format=image/png&layers=continents&styles&url=https://demo.mapserver.org/cgi-bin/wms' # noqa if __name__ == '__main__': with QgsApplicationContext(): layer = qgc.QgsRasterLayer(url, 'Foo', 'wms') if not layer.isValid(): raise RuntimeError('NO! BAD!') project = qgc.QgsProject.instance() project.write('/tmp/wms_example.qgs') project.addMapLayer(layer) project.write() print('Done')
def __init__(self, parent, boundingbox): super(ExtentDialog, self).__init__(parent) self.setupUi(self) self.superParent = None temp = self.parent() if platform.system() != "Linux": font = QFont() font.setFamily(u"Segoe UI Symbol") self.setFont(font) while self.superParent is None: if issubclass(type(temp), geographicinformationPanel.Ui_geographicinfo): self.superParent = temp else: temp = temp.parent() for info in self.findChildren(qwidgets.QPushButton, qcore.QRegExp('info_*')): info.setIcon(qgui.QIcon(':/resourcesFolder/icons/help_icon.svg')) info.setText('') info.pressed.connect(self.printHelp) self.layers = [] self.maxExt = None self.boundingbox = boundingbox self.outBB = False # Create MapCanvas self.canvas = gui.QgsMapCanvas(self) # Append to Dialog Layout self.toolBar = qwidgets.QToolBar() self.layout = qwidgets.QVBoxLayout(self.frame) self.layout.addWidget(self.toolBar) self.layout.addWidget(self.canvas) # Trigger on scaleChanged self.canvas.scaleChanged.connect(self.scaleChanged) # Trigger on renderStarting self.canvas.renderStarting.connect(self.renderStarting) # Create Map Tools actionFullExt = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/globe.svg'), "Mapa total", self) actionPan = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/pan.svg'), "Mover", self) actionZoomIn = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/zoom_in.svg'), "Aproximar", self) actionZoomOut = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/zoom_out.svg'), "Afastar", self) actionSelect = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/selection.svg'), 'Desenhar', self) actionFromLayer = qwidgets.QAction( qgui.QIcon(':/resourcesFolder/icons/layers.svg'), 'Obter de camada', self) actionFullExt.setCheckable(False) actionPan.setCheckable(True) actionZoomIn.setCheckable(True) actionZoomOut.setCheckable(True) actionSelect.setCheckable(True) actionFullExt.triggered.connect(self.fullext) actionPan.triggered.connect(self.pan) actionZoomIn.triggered.connect(self.zoomIn) actionZoomOut.triggered.connect(self.zoomOut) actionSelect.triggered.connect(self.select) actionFromLayer.triggered.connect(self.chooseLayer) # Add to created ToolBar self.toolBar.addAction(actionFullExt) self.toolBar.addSeparator() self.toolBar.addAction(actionPan) self.toolBar.addAction(actionZoomIn) self.toolBar.addAction(actionZoomOut) self.toolBar.addAction(actionSelect) self.toolBar.addAction(actionFromLayer) self.toolFullExtent = gui.QgsMapToolPan(self.canvas) self.toolFullExtent.setAction(actionFullExt) self.toolPan = gui.QgsMapToolPan(self.canvas) self.toolPan.setAction(actionPan) self.toolZoomIn = gui.QgsMapToolZoom(self.canvas, False) # false = in self.toolZoomIn.setAction(actionZoomIn) self.toolZoomOut = gui.QgsMapToolZoom(self.canvas, True) # true = out self.toolZoomOut.setAction(actionZoomOut) self.toolSelect = SelectionTool(self.canvas, self) self.resourcebox.setChecked(True) self.pan() lugin_path = utils.pluginDirectory('EditorMetadadosMarswInforbiomares') # Load Vector layerpath = os.path.join(plugin_path, "resourcesFolder/World.shp") llayer = core.QgsVectorLayer(layerpath, "WorldLayer", "ogr") # Set Layer Symbology props = { 'color_border': '0,0,0,125', 'style': 'no', 'style_border': 'solid' } #s = core.QgsFillSymbolV2.createSimple(props) s = core.QgsFillSymbol.createSimple(props) #llayer.setRendererV2(core.QgsSingleSymbolRendererV2(s)) llayer.setRenderer(core.QgsSingleSymbolRenderer(s)) # Set CRS - necessary to load Raster - it assumes this default CRS s = qcore.QSettings() oldValidation = str( s.value("/Projections/defaultBehaviour", "useGlobal")) s.setValue("/Projections/defaultBehaviour", "useGlobal") # Load Raster fileName = os.path.join(plugin_path, "resourcesFolder/GMRT.tif") fileInfo = qcore.QFileInfo(fileName) baseName = fileInfo.baseName() layer = core.QgsRasterLayer(fileName, baseName) layer.setCrs( core.QgsCoordinateReferenceSystem( 4326, core.QgsCoordinateReferenceSystem.EpsgCrsId)) s.setValue("/Projections/defaultBehaviour", oldValidation) # Set Raster ColorRamp # layer.setDrawingStyle("SingleBandPseudoColor") # deprecated remove in 2.1.0 please vmin = -5683.08 vmax = 2763.86 vrange = vmax - vmin vadd = vrange // 2 vint = vmin + vadd colDic = { 'brown': '#90330a', 'lightblue': '#d5f5f9', 'blue': '#2099d4' } valueList = [vmin, vint, vmax] lst = [core.QgsColorRampShader.ColorRampItem(valueList[0], qgui.QColor(colDic['blue'])), \ core.QgsColorRampShader.ColorRampItem(valueList[1], qgui.QColor(colDic['lightblue'])), \ core.QgsColorRampShader.ColorRampItem(valueList[2], qgui.QColor(colDic['brown']))] myRasterShader = core.QgsRasterShader() myColorRamp = core.QgsColorRampShader() myColorRamp.setColorRampItemList(lst) myColorRamp.setColorRampType(core.QgsColorRampShader.Interpolated) myRasterShader.setRasterShaderFunction(myColorRamp) myPseudoRenderer = core.QgsSingleBandPseudoColorRenderer( layer.dataProvider(), layer.type(), myRasterShader) layer.setRenderer(myPseudoRenderer) ## Add vector to map #core.QgsMapLayerRegistry.instance().addMapLayer(llayer, False) core.QgsProject.instance().addMapLayer(llayer, False) ## Add raster to map #core.QgsMapLayerRegistry.instance().addMapLayer(layer, False) core.QgsProject.instance().addMapLayer(layer, False) ## Save Max Extent self.maxExt = core.QgsRectangle(-180., -90., 180., 90.) # ---------------------------------- ## Set initial general extent to ZEE or, if one is selected, from the selected boundingbox if self.boundingbox.selectionModel().hasSelection() == False: ## Change button's title self.add_extent.setText(u"Adicionar") initialrect = core.QgsRectangle(-46.63064, 22.52146, 9.64473, 47.31826) else: ## Get selected bounding box coords and resource flag index = self.boundingbox.selectionModel().selectedRows()[0].row() row = self.boundingbox.model().matrix[index] minx = float(row[0].replace(',', '.')) miny = float(row[3].replace(',', '.')) maxx = float(row[1].replace(',', '.')) maxy = float(row[2].replace(',', '.')) if minx == 0. and miny == 0. and maxx == 0. and maxy == 0.: initialrect = core.QgsRectangle(-46.63064, 22.52146, 9.64473, 47.31826) else: ## Set fields with these values self.xMin.setValue(minx) self.xMax.setValue(maxx) self.yMin.setValue(miny) self.yMax.setValue(maxy) self.resourcebox.setChecked(bool(row[4])) ## Set the extent and add a bit of zoom out of the selected extent initialrect = core.QgsRectangle(minx - minx * 0.1, miny - miny * 0.1, maxx + maxx * 0.1, maxy + maxy * 0.1) ## Draw initial extent on the map self.toolSelect.drawRect(minx, miny, maxx, maxy) ## Change button's title self.add_extent.setText(u"Alterar") self.canvas.setExtent(initialrect) # ---------------------------------- ## Append layers to MapCanvas self.layers.append(llayer) self.layers.append(layer) #self.layers.append(gui.QgsMapCanvasLayer(llayer)) #self.layers.append(gui.QgsMapCanvasLayer(layer)) #self.canvas.setLayerSet(self.layers) self.canvas.setLayers([llayer, layer]) ## Set triggers to buttons self.add_extent.clicked.connect(self.add_new_extent) self.btn_close.clicked.connect(lambda: self.done(QDialog.Rejected)) self.finished.connect(self.cleanup) ## Disabled coord fields self.xMin.setEnabled(False) self.xMax.setEnabled(False) self.yMin.setEnabled(False) self.yMax.setEnabled(False)
def _get_raster_layer(layer_path, layer_cfg): return qgc.QgsRasterLayer(layer_path, layer_cfg['title'], 'gdal')
if group is None: group = root.addGroup(a.group_name) # Add layer and groups for i in range(len(in_names)): # Get layer source, name, type and parent name lpath = in_paths[i] lname = in_names[i] # Try and get layer if it already exists lyr = None for treelyr in group.findLayers(): if treelyr.name() == lname: lyr = treelyr.layer() # Add layer if it doesn't already exist if lyr is None: lyr = qc.QgsRasterLayer(lpath, lname) project.addMapLayer(lyr, False) group.addLayer(lyr) # Symbolize layer lyr.loadNamedStyle(a.style_file) # Save map success = project.write(a.qgs_file) else: sys.stdout.write("ERROR: No files found")