QGIS contiene un conjunto completo de funciones que se pueden utilizar para definir expresiones. Sin embargo, también le permite utilizar Python para definir nuevas funciones, y se pueden realizar cálculos más complejos de esta manera.
Digamos que queremos utilizar esa función para etiquetar las entidades en la capa "Mapa del mundo". Primero, abre las propiedades de la capa y muévete a la sección donde se define el etiquetado.
En la etiqueta con campo, en lugar de seleccionar un campo, haz clic en el botón del lado derecho para abrir el cuadro de diálogo de expresiones.
Queremos agregar nuestra propia función Python, por lo que debemos pasar a la pestaña del editor de funciones.
Haz clic en el botón del signo más para crear un nuevo archivo para nuestro código de función.
Nombra el archivo hemisphere.py. Se agregará a la lista de archivos de expresión
disponibles.
El archivo se llenará con una función de plantilla. Usa el código a continuación.
'''
En el parámetro 'grupo', establezca el grupo al que desea que pertenezca la función.
Aparecerá bajo ese grupo en la lista de funciones disponibles en el cuadro de diálogo de expresiones.
'''
@qgsfunction(group='Custom', referenced_columns=[])
def hemisphere(geom, feature, parent):
'''Calcula el hemisferio en el que se encuentra una función. Se supone que las coordenadas son geográficas'''
'''
Obtenemos el cuadro delimitador de la geometría y vemos si cruza el ecuador. En función del resultado, devolvemos (N)orte, (S)ur o (B)otro
'''
box = geom.boundingBox()
if box.yMinimum() > 0 and box.yMaximum() > 0:
return "N"
if box.yMinimum() <= 0 and box.yMaximum() <= 0:
return "S"
else:
return "B"
Una vez que haya escrito el código de la función, haga clic en el botón "Cargar"
para actualizar la lista de funciones. Ahora retroceda y verá que la función
'hemisferio' ya está disponible. Ingrese la siguiente
expresión: hemisphere($geometry).
Haga clic en Aceptar para cerrar el cuadro de diálogo de expresiones. Cierre el cuadro de diálogo de etiquetado y debería ver su capa con las nuevas etiquetas que indican el hemisferio de cada país.
El hemisferio de cada entidad se calcula cada vez que se representa la capa, lo que puede llevar mucho tiempo. Una mejor opción sería agregar un nuevo campo con el valor del hemisferio. Ya lo hicimos en uno de los primeros ejercicios en la consola, pero ahora podemos hacerlo de una manera mucho más sencilla, usando la calculadora de campos y nuestra expresión recién creada.
Abrimos la tabla de atributos de la capa y desde allí abrimos la calculadora de campos. El diálogo de la calculadora de campos contiene un widget de expresión, donde podemos ingresar la misma fórmula que usamos para el caso del etiquetado.
Haga clic en Aceptar y se agregará el campo. Ahora puede cambiar la configuración del etiquetado, para usar ese campo en lugar de la expresión.