Funciones en expresiones QGIS

La definición de una función en un lenguaje de programación es bastante diferente de la definición de una función matemática. En el campo de la computadora, una función se refiere a un programa o código que puede ser referenciado directamente por otro programa o código, también llamado subrutina, procedimiento o método.

Las funciones juegan un papel importante en la construcción de expresiones QGIS. Las expresiones son en realidad el resultado de funciones que actúan sobre constantes y variables. Se puede decir que las funciones son el alma de las expresiones.

Funciones integradas y funciones personalizadas

Las funciones en las expresiones QGIS se dividen en dos categorías : funciones integradas y funciones personalizadas .

Las funciones integradas son funciones integradas del sistema QGIS. Los usuarios pueden llamar a las funciones integradas durante la construcción de la expresión, pero no pueden modificar el código en ellas.

Las funciones personalizadas son fragmentos de código escritos por usuarios en lenguaje Python, que pueden diseñarse y modificarse de acuerdo con las necesidades individuales, proporcionando a los usuarios capacidades de personalización más potentes y flexibles.

  • Funciones integradas del sistema

Las funciones integradas de QGIS se dividen en aproximadamente 20 grupos, incluidos mapas, capas de mapas, registros y atributos, hora y fecha, matemáticas, matrices, condiciones, etc. El número de funciones incluidas en cada grupo es el siguiente:
Inserte la descripción de la imagen aquí

  • Función personalizada

Cambie a la pestaña [Editor de funciones] en el generador de expresiones, puede ver que el área de edición de funciones personalizadas está compuesta por la lista de funciones a la izquierda, el editor de códigos de función en la parte superior derecha y el área de ayuda en la parte inferior derecha.

De forma predeterminada, la lista de funciones tiene solo una función predeterminada, que es una plantilla de función personalizada proporcionada por el sistema. El editor de códigos de función de la derecha proporciona códigos de muestra y referencias para importar módulos QGIS, grupos de almacenamiento de funciones personalizadas y códigos de cuerpo de funciones.
Inserte la descripción de la imagen aquí

Haga clic en el botón [+] en la esquina inferior izquierda e ingrese el nombre del archivo almacenado en el cuadro de diálogo emergente para agregar una función personalizada.

Inserte la descripción de la imagen aquí

En circunstancias normales, una función personalizada primero necesita usar la declaración de importación para importar la biblioteca de Python referenciada, y luego diseñar y escribir el código de implementación de la función, por ejemplo, ingrese el siguiente código en el editor de código de función:

import math
from qgis.core import *
from qgis.gui import *

@qgsfunction(args=0, group='Custom', usesgeometry=True)
def GetUtmZone(value1, feature, parent):
    """以字符串形式返回几何图形所属的UTM区"""
    centroid = feature.geometry()
    longitude = centroid.asPoint().x()
    latitude = centroid.asPoint().y()
    zone_number = math.floor(((longitude + 180) / 6) % 60) + 1

    if latitude >= 0:
        zone_letter = 'N'
    else:
        zone_letter = 'S'

    return '%d%s' % (int(zone_number), zone_letter)

La función principal de esta función es calcular la zona de índice de proyección UTM donde se encuentra el elemento y devolver la cadena de la zona de índice de proyección que termina con 'N' o'S '.
Inserte la descripción de la imagen aquí

Haga clic en el botón [Guardar y cargar función] en la esquina inferior derecha para guardar la función y cargarla en el grupo correspondiente del generador de expresiones. En este momento, abra el cuadro de diálogo del generador de expresiones, puede ver que la función personalizada mencionada anteriormente aparece en el grupo personalizado, haga doble clic en la función para completar la llamada de función.
Inserte la descripción de la imagen aquí

Las funciones personalizadas se pueden diseñar y codificar según los requisitos, lo que brinda más posibilidades de uso de las funciones. Dado que se trata del lenguaje de programación Python, su uso es más complicado. El documento oficial QGIS tiene mucho espacio para detallar este aspecto. Introducción, los amigos interesados ​​pueden ir al sitio web oficial de QGIS para consultar los documentos relacionados.

Función de búsqueda

En el generador de expresiones, las funciones se enumeran en una estructura de árbol en grupos. Si está familiarizado con la agrupación de funciones y tiene un conocimiento general de a qué grupo pertenece la función que necesita, puede expandir directamente la agrupación para encontrar la función. Si conoce el nombre de la función, puede ingresar el nombre de la función en el cuadro de búsqueda sobre el área de selección para encontrarla rápidamente.
Inserte la descripción de la imagen aquí

Función de uso

Haga doble clic en la función para agregarla al área de entrada de código. El editor de código de expresión admite funciones de solicitud de parámetros y de autocompletado: ingrese las primeras letras de la función, el editor solicitará el nombre de la función correspondiente y use el botón de tabulación para realizar la finalización automática.

Las funciones en QGIS admiten parámetros con nombre, es decir, cuando se usa la función, los parámetros entrantes se pueden denominar parámetros. Los parámetros nombrados pueden ignorar el orden de los parámetros, lo cual es conveniente para el uso de funciones, especialmente cuando hay muchos parámetros, el método de usar nombres de parámetros y valores de parámetros al mismo tiempo puede mejorar la legibilidad del código.

Por ejemplo, la función de sujeción puede limitar el valor de entrada a un rango especificado.Se requieren tres parámetros: min, el valor mínimo del rango; max, el valor máximo del rango; valor, el valor de entrada. Por defecto, la secuencia de llamada de parámetro de la función de sujeción es: sujeción (mín., Valor, máx.). Por ejemplo, escriba el código en el área de edición de expresiones: sujeción (1,5,10) para limitar el valor de entrada a [1 , 10], el valor de entrada actual es 5, porque en el rango de [1,10], la función devuelve el valor de entrada en sí, que es 5. El método de llamar con parámetros nombrados es: clamp (min: = 1, max: = 10, value: = 5). Tenga en cuenta que el orden de los parámetros no se da en el orden predeterminado, y el motor de expresión devuelve el resultado del cálculo correctamente. .
Inserte la descripción de la imagen aquí

Funciones comunes

Hay casi 300 funciones en las expresiones QGIS. El uso correcto de funciones en la construcción de expresiones puede lograr un efecto multiplicador con menos esfuerzo. Debido a limitaciones de espacio, este artículo no puede explicar en detalle las funciones una a una, según el grado de uso común de las funciones, se seleccionan y explican en detalle unas 30 funciones. El uso de otras funciones se puede encontrar en la documentación de ayuda del generador de expresiones.
Inserte la descripción de la imagen aquí

Función aplicación típica

darker(@symbol_color,130)

Esta función proviene de "QGIS 3.10 Configuración de estilo vectorial" y se utiliza para establecer el color del trazo de las características del punto de la central eléctrica. más oscuro es una función de color que devuelve una cadena de color más oscuro. @symbol_color es el color de reproducción de la geometría actual, y 130 es un número entero correspondiente al factor de oscurecimiento. Esta función implementa las siguientes funciones: Devuelve un valor de color que es un 30% más oscuro que @symbol_color.

maximum("passengers", group_by:="station_class")

Máximo es una función agregada que devuelve el valor máximo del campo o expresión. "Pasajeros" es el campo de número de pasajeros en la tabla de atributos y "station_class" es el campo de tipo de estación. Esta función implementa las siguientes funciones: agrupar por tipo de estación y devolver el número máximo de pasajeros.

buffer( $geometry, 10 )

Buffer es una función de figura geométrica, que devuelve un búfer de figura geométrica de acuerdo con un radio dado. $ Geometry representa la figura geométrica seleccionada actualmente, 10 es el radio de búfer y su unidad es la misma que la unidad de mapa.

to_date('2020-07-29')

to_date es una función de fecha, que convierte una cadena en un objeto de fecha. Los parámetros entrantes representan cadenas de diferentes formas de fecha. Para los formatos admitidos, consulte los documentos relacionados de QGIS. De forma predeterminada, las cadenas de fecha están conectadas por guiones, el año está representado por 4 dígitos, el mes está representado por 2 dígitos y la fecha Está representado por 2 dígitos, como '2020-07-29'.

format_date(now(),'yyyy-MM-dd')

format_date es una función de cadena que implementa el formato de campos de fecha y devuelve un formato de cadena personalizado. now () es una función de fecha que devuelve la fecha y hora actuales. El resultado de salida de esta expresión es la cadena de fecha actual conectada por guiones, como: '2020-07-29'.

resumen

Este artículo intenta explorar la comprensión de las funciones en las expresiones QGIS a partir de los aspectos de las funciones integradas del sistema, funciones personalizadas, uso y búsqueda de funciones, descripciones de funciones de uso común y aplicaciones típicas de funciones. Hay muchos tipos de funciones en las expresiones de QGIS, y los métodos de uso son flexibles y modificables. Este artículo es solo un consejo. Si hay una desviación en la comprensión, corríjame.


Wu Jianling

30 de julio de 2020


Aviso de copyright


Este artículo agradece la reimpresión, por favor indique la fuente al reimprimir.


Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/QGISClass/article/details/107706843
Recomendado
Clasificación