Esempio n. 1
0
def trigger_with_raster():
    raster_path = '/tmp/overviews.tif'
    result = qgc.QgsRasterLayer(
        raster_path,
        'overviews',
        'gdal',
    )

    return result
Esempio n. 2
0
 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
Esempio n. 3
0
    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 }
Esempio n. 4
0
    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)
Esempio n. 5
0
 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)
Esempio n. 6
0
 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
Esempio n. 7
0
 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)
Esempio n. 8
0
 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)
Esempio n. 9
0
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
Esempio n. 10
0
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)
Esempio n. 12
0
def _get_raster_layer(layer_path, layer_cfg):
    return qgc.QgsRasterLayer(layer_path, layer_cfg['title'], 'gdal')
Esempio n. 13
0
    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")