• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar al pie de página
logo web Geoinnova

Geoinnova

Consultoría y Formación en SIG y Medio Ambiente

  • Geoinnova
    • Asociación
    • Equipo
    • Visor de proyectos Geoinnova
    • Geolibrería
    • Alianzas Estratégicas
  • Consultoría
    • Consultoría y Desarrollo en Sistemas de Información Geográfica
    • Consultora Ambiental
    • Turismo sostenible
    • Planificación urbana y ordenación del territorio
    • Planes Urbanos de Actuación Municipal – PUAM
    • Geomarketing
  • Servicios
    • Planero Web
    • QElectricGIS
    • Plugins
  • Formación
    • Todos los cursos
    • Webinars
    • Máster y Diplomas
    • Cursos de ArcGIS
    • Cursos de QGIS
    • Cursos de Teledetección
    • Cursos de Medioambiente
  • Medio Ambiente
    • Consultora Ambiental
    • Estudios ambientales para proyectos de energías renovables
    • Estudios de Impacto e Integración Paisajística
    • Evaluación Ambiental Estratégica de planes y programas
    • Estudio de Impacto Ambiental para proyectos
    • Cálculo huella de carbono
    • Educación Ambiental
    • Cursos de Medioambiente
  • Coworking
  • Blog
    • SIG
    • Medio Ambiente
    • Teledetección
    • Programación y Desarrollo SIG
    • Corporativo
  • Contacto
    • Soporte de Clientes – Tickets
SIG

Python en QGIS: Empezando con las funciones.

29/04/2016 3 comentarios

funciones-python-0
Primera aproximación al uso de las funciones propias con python

geoinnova sponsor qgis
Geoinnova, patrocinador de bronce de QGIS

En este artículo voy a explicar un poco las primeras aproximaciones con Python para QGIS utilizando el nuevo editor de funciones. Una de las herramientas que ha incorporado QGIS desde su versión 2.8 ha sido el editor de funciones propias con Python.

Como bien es sabido, QGIS dispone de una poderosa API para realizar tanto plugins como scripts con este lenguaje. Esta API, en mi opinión, a pesar de ser muy poderosa, resultaba algo inaccesible para un usuario no experimentado, ya que tendía que acceder a ella a través de la consola de Python, lo cuál es bastante incómodo.

Como digo, a partir de esta versión de QGIS, el usuario puede obtener una interfaz algo más amigable para empezar a programar pequeñas funciones con Python.

Pero…¿Qué son las pequeñas funciones? Si no estás experimentado con temas de programación o de scripting, tal vez no sepas ni por dónde empezar, por eso vamos a ver una pequeña aproximación a esta funcionalidad a través de algunos casos prácticos.

Para comenzar se me ocurre un pequeño CASO PRÁCTICO: A partir de una tabla de parcelas de las cuales tenemos el precio de venta, queremos calcular el precio del metro cuadrado. Una vez calculado, queremos colorear los «caros» en rojo y los «baratos» en verde. Fácil, ¿No? Después podremos etiquetar las parcelas con su precio por metro cuadrado.

Como puedes intuir, no sólo habrá una manera de hacerlo, es más, no es una tarea muy difícil para realizar con el selector de expresiones, o con la calculadora de campos. Este es sólo un pequeño ejemplo de cómo empezar con las funciones de Python, pero también hay otra ventaja, y es que podemos acceder a las funciones desde cualquier ámbito de QGIS que nos permita el uso de expresiones. Por tanto, podremos usar la función para etiquetar, para colorear, y para calcular campos. Con el ahorro de esfuerzo que supone.

Vamos a ver cómo empezar a trabajar con funciones:

Importar una tabla de precios.

EJERCICIO PRÁCTICO CON PYTHON
Aspecto de la tabla a utilizar, con el campo precio

Primero debemos importar la tabla de precios a nuestro proyecto. Suponemos que podremos conectarnos vía Postgres, pero por el momento vamos a hacerlo con una tabla en local. Este es el aspecto que tendrá la tabla, sólo mostrará el ID de la parcela, y su precio catastral.

Una vez tenemos la tabla cargada, vamos a hacer nuestra pequeña función que calcule el precio del metro cuadrado. Simple, ¿no?. Para ello vamos al editor de expresiones, y vamos a la pestaña de funciones. Aquí es donde vamos a trabajar a partir de ahora.

EJERCICIO PRÁCTICO CON PYTHON - 2
Editor de funciones de QGIS

Para explicar el editor de funciones por encima, sólo hay que saber que permite realizar pequeñas funciones con códigos que vas a usar a menudo. El resultado lo verás en la pestaña de funciones ya existentes, como la de calcular área, las condicionales, etc.

En mi caso la he llamado «Geomarketing» por si quiero agrupar en un futuro otras funciones similares. Bien, el código de la función es el siguiente:

EJERCICIO PRÁCTICO CON PYTHON - 3
Código Python de la función que se utilizará
Realmente sólo estamos trabajando con una línea, explicado, la sintaxis de Python sería:
  1. Es la cabecera de la función, en ella le indicas, el número de argumentos que quieres que reciba la función, en este caso se ha dejado en auto, para que coja los argumentos que se le pasan automáticamente, y luego se le especifica el grupo con el que quieres que aparezca en el menú, como he dicho, lo he llamado Geomarketing.
  2. def es la palabra que usa Python para definir funciones, calculaPrecio es el nombre como quieres llamar a la función, y las tres palabras dentro del paréntesis son los parámetros. Los parámetros son los valores que le pasas a la función, y con los que trabajará. Es importante saber que el editor de funciones de QGIS siempre necesita el parámetro feature, para referirse a todos los campos de la tabla, y el parámetro parent, que usa para mostrar los errores, por lo que serán obligatorios. Por tanto, como se puede intuir, yo sólo le estoy pasando el parámetro precio.
  3. Este es el cuerpo de la función. Lo primero que hay que ver es el indentado de la línea, si te has aproximado a Python ya, sabrás que trabaja con indentados, por tanto, todo lo que esté cuatro espacios a la derecha de la definición de la función, estará dentro de la función.
    Return es la palabra que usa Python (como muchos otros lenguajes) para devolver los datos. Y seguidamente le especificaremos qué ha de devolver. Pues bien, como es obvio, para calcular el precio por metro cuadrado, ha de devolver el precio, dividido por el área de cada polígono.
    Como vemos, «precio» es el nombre de la variable que recibe como parámetro, y el área la calcula a partir del otro parámetro obligatorio, feature. Feature será la llamada «entidad», que tendrá una función (también llamado método) propia para calcular su geometría. Y esta a su vez, tendrá otra para calcular el área.

Pues así de sencilla resultaría la función para calcular el precio por metro cuadrado. Pulsaremos el triángulo de ejecutar, y ya la tendremos agregada a nuestro repositorio de funciones.

Para utilizar la función vamos a hacerla en dos sitios diferentes, así podremos ver el ámbito: en el etiquetado, y en el coloreado del mapa.

  • Etiquetado:

Vamos a crear una etiqueta para las parcelas que muestre su precio.

Entramos en el etiquetador de QGIS sobre la capa de manzanas, y en el campo de expresiones, estableceremos el texto de la función, con el parámetro del campo de precio. Además aprovecharemos para redondear el valor, y darle un formato más atractivo.

EJERCICIO PRÁCTICO CON PYTHON - 4
Código para etiquetar la capa
  • Coloreado del mapa:

Estableceremos una regla para que, si el campo calculado por la función es mayor de 20€/m, será rojo, si no, será verde. Es más, no hará falta ni calcular un campo, simplemente estableciendo la regla con la función, obtendrá los valores.

EJERCICIO PRÁCTICO CON PYTHON - 5
Reglas utilizadas para los estilos.

Por tanto, un ejemplo de cómo podría quedar nuestro mapa utilizando las funciones podría ser el de la imagen.

EJERCICIO PRÁCTICO CON PYTHON - 6
Funciones en QGIS: Resultado tras aplicar la función

Con este artículo hemos visto cómo con unas pequeñas nociones de código Python, con las funciones propias de PyQGIS, y el propio QGIS podemos crear soluciones que nos simplifican mucho nuestra tarea rutinaria con los GIS, incluso mejorar muchos elementos que no vienen de «serie».

Descubre más en nuestro blog sobre QGIS y PYTHON o sobre nuestro Curso de QGIS: Sistemas de Información Geográfica

Etiquetas: qgis

Apúntate a nuestra newsletter semanal

"*" señala los campos obligatorios

Consentimiento*
Este campo es un campo de validación y debe quedar sin cambios.

Información legal

Cumplimos el RGPD (Reglamenteo General de Protección de Datos) y esta en la primera información que debes saber. Responsable: Asociación Geoinnova. Finalidad: Apuntarte en nuestra base de datos para poder enviarte nuestra newsletter y cualquier otra información de interes. Legitimidad: Nos das tu consentimiento para comunicarnos contigo. Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir tus datos. Para una información más ampliada entra a nuestra política de privacidad.

Artículos relacionados

Cursos SIG y MA Asociación Geoinnova
Agenda de cursos de Marzo 2023
23/02/2023
Cómo instalar y agregar nuevas fuentes en QGIS
29/11/2022
Extraer valores ráster en QGIS
27/10/2022

Pablo Pardo

Consultor y programador GIS con años de experiencia tanto como consultor autónomo como por cuenta ajena. ha participado en numerosos proyectos GIS en todas sus fases, desde la explotación de sistemas propios hasta el análisis y la creación de sistemas específicos para resolver problemas espaciales

Interacciones con los lectores

Comentarios

  1. Gonzalo dice

    30/04/2019 a las 11:54

    Buenas tardes,

    Tenia una consulta, tengo una imagen con puntos con unas mediciones, hay algun pluggin para si georeferencio esa imagen, automaticamente me rellene la tabla con las coordenadas de ese punto?

    un saludo

    Responder
  2. Francisco MJ dice

    02/03/2017 a las 05:23

    Hola,
    muy útil tu descripción, solo que tengo una duda ¿como agregar una descripción de la función que se muestre en la sección de ayuda?

    Saludos.

    Responder
    • Pablo Pardo dice

      02/03/2017 a las 14:09

      Hola francisco.
      No lo sé seguro porque no encuentro mucha documentación, pero mirando el master del repositorio de QGIS en GitHub, la encuentro aquí:
      «github.com/qgis/QGIS/tree/master/resources/function_help/json»
      Tal vez puedas añadir tu JSON de información siguiendo la misma estructura.
      Un saludo.

      Responder

¿Quieres comentarnos algo? Adelante! Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Footer

Menú Legal

  • Aviso Legal
  • Política de privacidad
  • Política de cookies
  • Términos y condiciones

Otras páginas de interes

  • Promociones y descuentos en formación
  • Formación bonificada FUNDAE

Contacto

Calle Luis Morondo Urra nº 8 Bajo A
31006 Pamplona (Navarra)
info@geoinnova.org
+34 948 117 137

Horario de atención

Lunes a Viernes - 09:00 a 14:00 y de 16:00 a 19:00.
Fines de semana y Festivos - Exclusivamente por mail.
Horario de Verano (01 de julio al 30 de agosto): De lunes a viernes de 8 a 15h.

Síguenos en Redes Sociales

Apúntate a nuestra newsletter

"*" señala los campos obligatorios

Consentimiento*
Este campo es un campo de validación y debe quedar sin cambios.

Entidad adherida a Confianza Online Certificado de inscripción en el Registro de huella de carbono, compensación y proyectos de absorción Logo Plazox

© 2023 · Desarrollada por Geoinnova en colaboración con OikosMSP

Gestionar el Consentimiento de las Cookies
Utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. Lo hacemos para mejorar la experiencia de navegación y para mostrar anuncios personalizados. El consentimiento a estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.
Funcional Siempre activo
El almacenamiento o acceso técnico es estrictamente necesario para el propósito legítimo de permitir el uso de un servicio específico explícitamente solicitado por el abonado o usuario, o con el único propósito de llevar a cabo la transmisión de una comunicación a través de una red de comunicaciones electrónicas.
Preferencias
El almacenamiento o acceso técnico es necesario para la finalidad legítima de almacenar preferencias no solicitadas por el abonado o usuario.
Estadísticas
El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos. El almacenamiento o acceso técnico que es utilizado exclusivamente con fines estadísticos anónimos. Sin una requerimiento, el cumplimiento voluntario por parte de su proveedor de servicios de Internet, o los registros adicionales de un tercero, la información almacenada o recuperada sólo para este propósito no se puede utilizar para identificarlo.
Marketing
El almacenamiento o acceso técnico es necesario para crear perfiles de usuario para enviar publicidad, o para rastrear al usuario en un sitio web o en varios sitios web con fines de marketing similares.
Administrar opciones Gestionar los servicios Gestionar proveedores Leer más sobre estos propósitos
Preferencias
{title} {title} {title}