示例#1
0
def define_new_doc_string(newid=1):
    @alg(name=ARGNAME.format(newid), label=alg.tr("Test func"), group="unittest",
         group_label=alg.tr("Test label"))
    @alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
    @alg.output(type=str, name="DISTANCE_OUT", label="Distance out")
    def testalg(instance, parameters, context, feedback, inputs):
        """
def define_new_doc_string(newid=1):
    @alg(name=ARGNAME.format(newid), label=alg.tr("Test func"), group="unittest",
         group_label=alg.tr("Test label"))
    @alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
    @alg.output(type=str, name="DISTANCE_OUT", label="Distance out")
    def testalg(instance, parameters, context, feedback, inputs):
        """
示例#3
0
def define_new_no_inputs(newid=1):
    @alg(name="noinputs",
         label=alg.tr("Test func"),
         group="unittest",
         group_label=alg.tr("Test label"))
    @alg.output(type=str, name="DISTANCE_OUT", label="Distance out")
    def testalg(instance, parameters, context, feedback, inputs):
        """
def define_new_no_outputs_but_sink_instead(newid=1):
    @alg(name=ARGNAME.format(newid), label=alg.tr("Test func"), group="unittest",
         group_label=alg.tr("Test label"))
    @alg.help(HELPSTRING.format(newid))
    @alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
    @alg.input(type=alg.DISTANCE, name="DISTANCE", label="Distance", default=30)
    @alg.input(type=alg.SINK, name="SINK", label="Output layer")
    def testalg(instance, parameters, context, feedback, inputs):
        """
def define_new_no_outputs_but_sink_instead(newid=1):
    @alg(name=ARGNAME.format(newid), label=alg.tr("Test func"), group="unittest",
         group_label=alg.tr("Test label"))
    @alg.help(HELPSTRING.format(newid))
    @alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
    @alg.input(type=alg.DISTANCE, name="DISTANCE", label="Distance", default=30)
    @alg.input(type=alg.SINK, name="SINK", label="Output layer")
    def testalg(instance, parameters, context, feedback, inputs):
        """
示例#6
0
def define_new_input_help(newid=1):
    @alg(name=ARGNAME.format(newid),
         label=alg.tr("Test func"),
         group="unittest",
         group_label=alg.tr("Test label"))
    @alg.help(HELPSTRING.format(newid))
    @alg.input(type=alg.SOURCE,
               name="INPUT",
               label="Input layer",
               help="The input layer as source")
    @alg.input(type=alg.DISTANCE,
               name="DISTANCE",
               label="Distance",
               default=30,
               help="The distance to split the input layer")
    @alg.input(type=alg.SINK,
               name="SINK",
               label="Output layer",
               help="The output layer as sink")
    @alg.output(type=str, name="DISTANCE_OUT", label="Distance out")
    def testalg(instance, parameters, context, feedback, inputs):
        """
示例#7
0
import os
import glob
import tempfile
from qgis.core import *
from PyQt5.QtCore import *  # TODO pyqt4->5 check if works
from qgis.processing import alg


@alg(
    name="pg04waterqualityparameterssubsetting",
    label=alg.tr("PG04_WaterQualityParameters_Subsetting"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(
    type=alg.BOOL,
    name="dontsubset",
    label="Don't subset products - In this case no shapefile is needed",
    default=False,
)
@alg.input(type=alg.SOURCE, name="Input_vector", label="Input_vector", optional=True)
@alg.output(type=alg.FOLDER, name="Output_folder", label="Output_folder")
def pg04waterqualityparameterssubsetting(
    instance, parameters, context, feedback, inputs
):
    """
    Water quality parameter subsetting
    """
    tempfolder = "wq_scripts_"
    Input_vector1 = instance.parameterAsVectorLayer(parameters, "Input_vector", context)
    dontsubset = instance.parameterAsBool(parameters, "dontsubset", context)
def define_new_no_inputs(newid=1):
    @alg(name="noinputs", label=alg.tr("Test func"), group="unittest",
         group_label=alg.tr("Test label"))
    @alg.output(type=str, name="DISTANCE_OUT", label="Distance out")
    def testalg(instance, parameters, context, feedback, inputs):
        """
    mainRoutine as mainRoutine_angles,
)
from qgis_fmask.interfaces.fmask_usgsLandsatSaturationMask import (
    mainRoutine as mainRoutine_saturation,
)
from qgis_fmask.interfaces.fmask_usgsLandsatTOA import mainRoutine as mainRoutine_toa
from qgis_fmask.interfaces.redirect_stdout import redirect_stdout_to_feedback
from qgis_fmask.interfaces.landsatmeta import find_mtl_in_product_dir

# ##OutputFile|output|Output cloud mask|tif #TODO extention should be tif. - implemented without.
# TODO yields different output than the old one.


@alg(
    name="fmasklandsat",
    label=alg.tr("FMask Landsat"),
    group="fmask",
    group_label=alg.tr("FMask"),
)
@alg.input(
    type=alg.FILE,
    name="productdir",
    label="Directory of Landsat product",
    behavior=1,
    optional=False,
)
@alg.input(
    type=alg.ENUM,
    name="landsatkeynr",
    label="Landsat sensor",
    options=["Landsat 4&5", "Landsat 7", "Landsat 8"],
from qgis.processing import alg
from processing.core.ProcessingConfig import ProcessingConfig
from db_manager.db_plugins import data_model
from processing.tools import system
from qgis import processing


@alg(
    name="burncloudmask",
    label=alg.tr("Burn cloud mask"),
    group="fmask",
    group_label=alg.tr("FMask"),
)
@alg.input(
    type=alg.RASTER_LAYER,
    name="dataFile",
    label="An image file to burn the cloud mask into",
    optional=False,
)
@alg.input(
    type=alg.RASTER_LAYER,
    name="maskFile",
    label="Could mask from FMask",
    optional=False,
)
@alg.input(type=bool,
           name="maskNull",
           label="Mask FMask null pixels",
           default=True)
@alg.input(type=bool,
           name="maskCloud",
##ParameterFile|infile||False|False|gz
##OutputDirectory|processing_path|Folder to unpack the data to

import glob
import os
import sys
import tarfile
from processing.tools import dataobjects
from qgis.processing import alg


@alg(
    name="untarimagery",
    label=alg.tr("Untar Imagery"),
    group="gt",
    group_label=alg.tr("Generic Tools"),
)
@alg.input(
    type=alg.FILE,
    name="infile",
    label="Landsat tar.gz file",
    behavior=0,
    optional=True,
    extension="gz",
)
@alg.input(type=alg.FOLDER_DEST, name="processing_path", label="processing path")
@alg.output(type=alg.FOLDER, name="out_folder", label="out folder")
def untarimagery(instance, parameters, context, feedback, inputs):
    """ untarimagery """

    processing_path = instance.parameterAsString(parameters, "processing_path", context)
import os
import glob

from qgis.processing import alg
from qgis import processing
import tempfile


@alg(
    name="pg04waterqualityparameterscoastcolourl1p",
    label=alg.tr("PG04_WaterQualityParameters_CoastColour_L1P"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(type=alg.BOOL, name="Icol", label="Icol", default=False)
@alg.input(type=alg.BOOL, name="Calibration", label="Calibration", default=False)
@alg.input(type=alg.BOOL, name="Smile", label="Smile", default=True)
@alg.input(type=alg.BOOL, name="Equalization", label="Equalization", default=True)
@alg.input(
    type=alg.BOOL,
    name="IgnoreSeaIceClim",
    label="Ignore sea ice climatology",
    default=False,
)
@alg.input(
    type=alg.NUMBER,
    name="CloudBufferWidth",
    label="lnsert size of cloud buffer in pixel",
    default=2,
    minValue=0,
)
import os
import glob
import tempfile
from qgis.processing import alg


# TODO label is the same for this and '..._01_CC_L1p'
@alg(
    name="pg04waterqualityparameters02c2rcc",
    label=alg.tr("PG04_WaterQualityParameters_02_C2RCC"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(
    type=alg.NUMBER,
    name="AverageSalinity",
    label="Average Salinity",
    default=1,
    minValue=0,
)
@alg.input(
    type=alg.NUMBER,
    name="AverageTemperature",
    label="Average Temperature",
    default=15,
    minValue=0,
)
@alg.input(
    type=alg.STRING,
    name="validExpression",
    label="Valid pixel expression",
示例#14
0
import os
import sys
from qgis.processing import alg

if os.path.dirname(__file__) not in sys.path:
    sys.path.append(os.path.dirname(__file__))
import segStack


@alg(
    name="preparepostprocessingstack",
    label=alg.tr("Stack bands for segmentation"),
    group="gt",
    group_label=alg.tr("Generic Tools"),
)
@alg.input(type=alg.RASTER_LAYER, name="inRst1", label="Input Stack")
@alg.input(type=alg.BOOL, name="B1", label="Band 1", default=False)
@alg.input(type=alg.BOOL, name="B2", label="Band 2", default=False)
@alg.input(type=alg.BOOL, name="B3", label="Band 3", default=False)
@alg.input(type=alg.BOOL, name="B4", label="Band 4", default=False)
@alg.input(type=alg.BOOL, name="B5", label="Band 5", default=False)
@alg.input(type=alg.BOOL, name="B6", label="Band 6", default=False)
@alg.input(type=alg.BOOL, name="B7", label="Band 7", default=False)
@alg.input(type=alg.BOOL, name="B8", label="Band 8", default=False)
@alg.input(type=alg.BOOL, name="B9", label="Band 9", default=False)
@alg.input(type=alg.BOOL, name="B10", label="Band 10", default=False)
@alg.input(type=alg.RASTER_LAYER, name="inRst2", label="Classification Raster")
@alg.input(type=alg.RASTER_LAYER_DEST,
           name="outPath",
           label="Output Stack for Segmentation")
def algorithm(instance, parameters, context, feedback, inputs):
示例#15
0
import os
import sys
import gdal
import numpy as np
from qgis.processing import alg
from processing.tools import dataobjects


@alg(
    name="landsatindicies",
    label=alg.tr("Landsat Indices"),
    group="landsattools",
    group_label=alg.tr("Landsat Tools"),
)
@alg.input(
    type=alg.RASTER_LAYER,
    name="input",
    label="Input Reflectance Stack",
    optional=False,
)
@alg.input(
    type=alg.FOLDER_DEST,
    name="outputDirectory",
    label="Folder to save the stack of Indices",
)
@alg.input(
    type=alg.RASTER_LAYER_DEST,
    name="output",
    label="Name for Index Stack",
)
def fmasklandsat(instance, parameters, context, feedback, inputs):
from qgis.processing import alg
from qgis.core import QgsFeature, QgsFeatureSink
"""

"""
"""

"""

import processing


@alg(name="gcpfull",
     label=alg.tr("GCP Grouping"),
     group="vds",
     group_label=alg.tr("VDS"))
@alg.input(type=alg.VECTOR_LAYER, name="IMAGE", label="Input images")
@alg.input(type=alg.FIELD,
           name="IMAGE_FIELD",
           label="Image file name",
           parentLayerParameterName="IMAGE")
@alg.input(type=alg.VECTOR_LAYER, name="GCP", label="Input GCPs")
@alg.input(type=alg.FIELD,
           name="GCP_FIELD",
           label="Name of GCP",
           parentLayerParameterName="GCP")
@alg.input(type=alg.CRS,
           name="LOCAL_CRS",
           label="CRS for processing GCPs",
           default="EPSG:2256")
@alg.input(type=alg.DISTANCE,
from qgis.processing import alg

import itertools


@alg(name="gcpimage",
     label=alg.tr("GCP Image"),
     group="vds",
     group_label=alg.tr("VDS"))
@alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
@alg.input(type=alg.FIELD,
           name="GCP_FIELD",
           label="GCP number field",
           parentLayerParameterName="INPUT")
@alg.input(type=alg.FIELD,
           name="NAME_FIELD",
           label="Image name field",
           parentLayerParameterName="INPUT")
@alg.input(type=alg.FILE_DEST,
           name="OUTPUT",
           label="Name and path of the output")
def gcp_image(instance, parameters, context, feedback, inputs):
    """
    Creates a batch file of image file names, given a layer of joined features
    """

    source = instance.parameterAsSource(parameters, "INPUT", context)

    gcp_field = instance.parameterAsFields(parameters, "GCP_FIELD", context)[0]
    name_field = instance.parameterAsFields(parameters, "NAME_FIELD",
                                            context)[0]
示例#18
0
# -*- coding: utf-8 -*-
from qgis.core import QgsProcessing, QgsVectorFileWriter, QgsVectorLayerExporter 
from qgis.processing import alg

#dichiarazione generale dell'interfaccia utente dell'algoritmo
@alg(name="salva_in_geopackage", label="salva in geopackage", group="customscripts", group_label=alg.tr("Custom Scripts"))
#dichiarazione dei widget di input ed output

@alg.input(type=alg.MULTILAYER, name="LAYERS", label="Layers da includere", layerType=QgsProcessing.TypeVectorAnyGeometry)
@alg.input(type=alg.FILE_DEST, name="OUTPUT_GEOPACKAGE_FILE", label="Output GEOPACKAGE", fileFilter='GEOPACKAGE files (*.gpkg)')

def algoritmo_di_processing(instance, parameters, context, feedback, inputs):
    """
    corpo della procedura di processing
    """
    
    #raccolta dei parametri configurati dall'utente
    layers_sorgenti = instance.parameterAsLayerList(parameters, "LAYERS", context)
    gpkgPath = instance.parameterAsFile(parameters, "OUTPUT_GEOPACKAGE_FILE", context)
    layers_inclusi=[]
    primo = True
    print(gpkgPath)
    #processing
    for lyr in layers_sorgenti:
        options = QgsVectorFileWriter.SaveVectorOptions()
        if primo:
            primo = False
        else:
            options.actionOnExistingFile = QgsVectorFileWriter.CreateOrOverwriteLayer 
            options.EditionCapability = QgsVectorFileWriter.CanAddNewLayer 
            options.layerName = lyr.name() #"_".join(lyr.name().split(' '))
示例#19
0
import os
import glob
import subprocess

from qgis.processing import alg

from processing.core.ProcessingConfig import ProcessingConfig
from os import walk
import tempfile
import shutil
import math


@alg(
    name="pg04waterqualityworkflowl3binning",
    label=alg.tr("PG04_WaterQualityWorkflow_l3binning"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(type=alg.FILE,
           name="input_folder",
           label="Input folder",
           behavior=1)
@alg.input(
    type=alg.NUMBER,
    name="start_month",
    label="Select start month for processing",
    default=1,
    minValue=1,
    maxValue=12,
)
# Definition of inputs and outputs

import os
import glob
import subprocess

from qgis.processing import alg
from processing.core.ProcessingConfig import ProcessingConfig
from os import walk
import tempfile
import shutil


@alg(
    name="pg04waterqualityworkflowgraphprocessorv5",
    label=alg.tr("PG04_WaterQualityWorkflow_graphProcessor_v5"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(type=alg.FILE,
           name="Input_files",
           label="Select files to be processed")
@alg.input(
    type=alg.NUMBER,
    name="mem",
    default=1,
    minValue=1,
    maxValue=31,
    label="Insert the amount of RAM (inGB) available for processing",
)
@alg.input(type=alg.FOLDER_DEST, name="Output_folder", label="folder")
示例#21
0
from qgis.processing import alg

from PyQt5.QtCore import QCoreApplication, QVariant
from qgis.core import (QgsProcessing,
                       QgsFeatureSink,
                       QgsFields,QgsField,QgsFeature,QgsGeometry, QgsWkbTypes, QgsRaster)

@alg(name="measure_Elevation_along_lines", label="Measure DTM elevation along lines", group="customscripts", group_label=alg.tr("Custom Scripts"))
@alg.input(type=alg.RASTER_LAYER, name='DTM_LAYER', label="Layer DTM")
@alg.input(type=alg.SOURCE, name='INPUT_LAYER', label="Input layer", types=[QgsProcessing.TypeVectorLine])
@alg.input(type=alg.DISTANCE, name="MEASURE_VALUE", label="Measure step size", default=50.0) 
@alg.input(type=alg.SINK, name="OUTPUT_LAYER", label="Output layer")

def processAlgorithm(instance, parameters, context, feedback, inputs):
    """
    Algoritm to extract elevation on DTM from linestring paths at specified measure step
    """


    vectorLayer = instance.parameterAsSource(parameters, "INPUT_LAYER", context)
    dtmLayer = instance.parameterAsRasterLayer(parameters, "DTM_LAYER", context)
    measureStep = instance.parameterAsInt (parameters, "MEASURE_VALUE", context)


    fields=QgsFields()
    fields.append(QgsField('id_poly', QVariant.Int))
    fields.append(QgsField('elevation', QVariant.Double))
    fields.append(QgsField('step', QVariant.Double))


    (sink, dest_id) = instance.parameterAsSink(parameters, "OUTPUT_LAYER", context, fields, QgsWkbTypes.Point, vectorLayer.sourceCrs())
示例#22
0
import os
import glob
import tempfile

from qgis.processing import alg


@alg(
    name="pg04waterqualityparameters03olcimphchl",
    label=alg.tr("PG04_WaterQualityParameters_03_OLCI_MphChl"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(
    type=alg.STRING,
    name="MPHvalidPixelExpression",
    label="Valid pixel expression",
    default=
    "not quality_flags.invalid and (not pixel_classif_flags.IDEPIX_LAND or quality_flags.fresh_inland_water) and not (pixel_classif_flags.IDEPIX_CLOUD or pixel_classif_flags.IDEPIX_CLOUD_BUFFER)",
)
@alg.input(
    type=alg.NUMBER,
    name="MPHcyanoMaxValue",
    label="Cyano maximum value",
    default=1000,
    minValue=0,
)
@alg.input(
    type=alg.NUMBER,
    name="MPHchlThreshForFloatFlag",
    label="CHL threshold for float flag",
from qgis.processing import alg
from qgis.core import (QgsProject, QgsReferencedRectangle, QgsBookmark)
 
@alg(name="gcpbookmark", label=alg.tr("GCP Bookmark"), group="vds",
     group_label=alg.tr("VDS"))
@alg.input(type=alg.SOURCE, name="INPUT", label="Input layer")
@alg.input(type=alg.FIELD, name="NAME_FIELD", label="Name field",
           parentLayerParameterName="INPUT")
@alg.output(type=alg.INT, name="OUTPUT", label="Number of bookmarks made")
def gcp_bookmark(instance, parameters, context, feedback, inputs):
    """
    Creates a bookmark for the location of each GCP, given the GCP's buffer.
    """
    source = instance.parameterAsSource(parameters, "INPUT", context)
    
    name_field = instance.parameterAsFields(parameters, "NAME_FIELD", context)[0]
    
    bookmark_manager = QgsProject.instance().bookmarkManager()
    coord = source.sourceCrs()
 
    total = 100.0 / source.featureCount() if source.featureCount() else 0
    features = source.getFeatures()
    for current, feature in enumerate(features):
        if feedback.isCanceled():
            break
        
        # Instead of getting the name from an attribute, 
        # this gets the feature's id and turns it into the gcp name.
        gcp_name = str(feature[name_field])
        gcp_view = feature.geometry().boundingBox()
        
示例#24
0
# -*- coding: utf-8 -*-
from qgis.core import QgsProcessing, QgsWkbTypes
from qgis.processing import alg

#dichiarazione generale dell'interfaccia utente dell'algoritmo
@alg(name="dettagli_layer", label="dettagli layer", group="customscripts", group_label=alg.tr("Custom Scripts"))
#dichiarazione dei widget di input ed output
@alg.input(type=alg.SOURCE, name="INPUT", label="Input layer", types=[QgsProcessing.TypeVectorAnyGeometry])
@alg.input(type=alg.FIELD, name="CAMPO", label="Campo da riassumere", parentLayerParameterName="INPUT")
@alg.input(type=alg.FILE_DEST, name="OUTPUT_HTML_FILE", label="Output HTML", fileFilter='HTML files (*.html)')

def algoritmo_di_processing(instance, parameters, context, feedback, inputs):
    """
    corpo della procedura di processing
    """

    def creaHTML(outputFile, algData):
        with open(outputFile, 'w', encoding='utf-8') as f:
            f.write('<html><head>')
            f.write('<meta http-equiv="Content-Type" content="text/html; \
                     charset=utf-8" /></head><body>')
            f.write('<p>Dati processati: ' + str(len(algData)) + '</p>')
            f.write('<p>Valori:</p>')
            f.write('<table>')
            for s in algData:
                f.write('<tr>')
                for attr in s:
                    f.write('<td>' + str(attr) + '</td>')
                f.write('</tr>')
            f.write('</table></body></html>')
    
import os
import glob
import tempfile

from qgis.processing import alg


@alg(
    name="pg04waterqualityparameters04olcicrsselect",
    label=alg.tr("PG04_WaterQualityParameters_04_OLCI_CRS_select"),
    group="bc",
    group_label=alg.tr("BC"),
)
@alg.input(type=alg.CRS, name="Define_output_CRS", label="Define_output_CRS")
@alg.output(type=alg.FOLDER, name="output", label="Output folder")
def pg04waterqualityparameters04olcicrsselect(instance, parameters, context,
                                              feedback, inputs):
    """
    Optical-SAR Water and Wetness Fusion
    """

    Define_output_CRS = instance.parameterAsString(parameters,
                                                   "Define_output_CRS",
                                                   context)
    tempfolder = "wq_scripts_"

    def folder_check(tempfolder):
        try:
            tempdir = glob.glob(
                os.path.join(tempfile.gettempdir(), tempfolder + "*"))[0]
            return False
示例#26
0
from qgis.processing import alg

from PyQt5.QtCore import QCoreApplication, QVariant
from qgis.core import (QgsProcessing, QgsFeatureSink, QgsFields, QgsField,
                       QgsFeature, QgsGeometry, QgsWkbTypes, QgsRaster)


@alg(name="origine_destinazione",
     label="Crea grafo origine/destinazione",
     group="customscripts",
     group_label=alg.tr("Custom Scripts"))
@alg.input(type=alg.SOURCE,
           name='INPUT_LINEE',
           label="linee",
           types=[QgsProcessing.TypeVectorLine])
@alg.input(type=alg.SINK, name='OUTPUT_NODI', label="nodi")
@alg.input(type=alg.SINK, name='OUTPUT_GRAFO', label="grafo")
@alg.output(type=str, name="OUT", label="Output")
def processAlgorithm(instance, parameters, context, feedback, inputs):
    """
    Algoritm to extract elevation on DTM from linestring paths at specified measure step
    """
    def aggiungi_nodo(nuovo_nodo):
        for i, nodo in enumerate(lista_nodi):
            if nodo.compare(nuovo_nodo):
                return i
        lista_nodi.append(nuovo_nodo)
        return len(lista_nodi) - 1

    linee_layer = instance.parameterAsSource(parameters, "INPUT_LINEE",
                                             context)
from qgis.processing import alg
from qgis import processing


@alg(
    name="reprojectrasterandvectorlayers",
    label=alg.tr("Reproject raster and vector layers"),
    group="sdg661reporting",
    group_label=alg.tr("SDG 6.6.1 reporting"),
)
@alg.input(type=alg.RASTER_LAYER, name="inputRaster", label="Raster layer")
@alg.input(type=alg.VECTOR_LAYER, name="inputVector", label="Vector layer")
@alg.input(type=alg.CRS,
           name="projection",
           label="Metric coordinate system (UTM)")
@alg.input(type=alg.RASTER_LAYER_DEST,
           name="outputRaster",
           label="Reprojected raster layer")
@alg.input(type=alg.VECTOR_LAYER_DEST,
           name="outputVector",
           label="Reprojected vector layer")
def reproject_raster_and_vector(instance, parameters, context, feedback,
                                inputs):
    """
    Reproject raster and vector layers
    """
    feedback.setProgressText("Reprojecting vector...")
    params = {
        "INPUT": parameters["inputVector"],
        "TARGET_CRS": parameters["projection"],
        "OUTPUT": parameters["outputVector"],