• 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
Programación y Desarrollo SIG

Depuración de datos con expresiones de QGIS. Un ejemplo para direcciones postales

19/05/2022 Deja un comentario

En esta entrada vamos a conocer algunas expresiones de QGIS que nos facilitarán la depuración de datos asociados a nuestras capas. Sin duda no son las únicas existentes. Las funciones de QGIS son numerosísimas pero estas os serán de gran utilidad.

Depuración y normalización de direcciones postales con QGIS

Dentro de los tipos de trabajos que hacemos desde Geoinnova, se encuentran por ejemplo la  consultoría SIG de proyectos relacionados con diagnóstico y análisis de indicadores urbanos como la movilidad (aparcamientos, terrazas, señalética…) o la  cobertura de servicios dotacionales municipales (equipamientos deportivos, sanitarios, escolares…).

Este tipo de trabajo está siendo muy demandado en proyectos vinculados con redacción de Agendas Urbanas vinculados con el Plan de Recuperación, Transformación y Resiliencia – Next Generation EU.

En numerosas ocasiones los datos de partida necesitan un trabajo de normalización previo importante. Un caso muy común es el que se realiza con las direcciones postales. Es habitual encontrar en una única columna información de tipo ‘Calle de Antonio Machado nº1’, ‘C/ Machado 1’, ‘calle Antonio Machado 1 izq’.

Este proceso consiste primero en depurar y normalizar los datos en bruto y posteriormente separarlos en columnas para su manejo más eficaz. Tras este último trabajo, la capa podría pasar a contar 3 campos: tipo vial, nombre vial y número portal.

Indudablemente, si tenemos pocos datos esta trabajo podemos hacerlas a mano. Pero ¿qué ocurre si tenemos 10.000 direcciones? Gracias a QGIS y sus funciones podemos automatizar este trabajo al máximo y reducir al mínimo los casos en los que tengamos que hacer edición manual.

Al final, todo el proceso irá enfocado a conseguir información de más calidad que se trasladará sin duda a los resultados del proyecto.

Función String_to_array

En programación, se le denomina vector, matriz o array​ a una zona de almacenamiento contiguo que contiene una serie de elementos del mismo tipo. Una array con los datos de una dirección postal sería por ejemplo la siguiente:

direccion =  [‘Calle’, ‘Machado’, ‘1’]

Si queremos obtener un elemento de esta matriz, accederemos a é por su índice que siempre empieza por 0. Es decir, para el valor del tipo de calle, su puntero sería direccion[0]. Para el número de portalero es direccion[2].

QGIS tiene varias expresiones que trabajan con array.

Nos interesa conocer la función string_to_array que convierte un texto a una matriz según un delimitador.

Pongamos un ejemplo. Tenemos un campo (direccion) que indica una intersección de calles separadas por un guion.

  • Calle Plata nº1 – Avenida Cervantes 12
  • Calle Marín 23 – Paseo Ángel Montilla.

Para separar las direcciones la expresión sería la siguiente:

string_to_array (direccion, ‘-‘)

Podemos ver en Previsualizar el resultado al aplicar la función.

Y para obtener la primera calle y usarla para actualizar el campo que almacena la primera calle de la intersección es:

string_to_array (direccion, ‘-‘)[0]

Con lo que obtendremos solo la primera dirección postal de la intersección.

Función Trim

Esta función elimina todos los espacios en blanco y tabulaciones de comienzo y final de una cadena.

Sobre el ejemplo anterior, ya que antes y después del guion hay espacios, el texto de la primer calle tendría un espacio al final.

Si añadimos la función trim, este espacio será eliminado.

Funciones con expresiones regulares

Las expresiones regulares son patrones utilizados para encontrar una determinada combinación de caracteres dentro de una cadena de texto y son ampliamente usadas en informática.

Dentro de QGIS servirán por ejemplo para validar que el dato introducido cumple un determinado patrón. En esta entrada del blog puede consultarse un ejemplo para validar la entrada de una referencia catastral.

Su uso dentro en funciones es también muy útil. Con regexp_match encontramos la cadena coincidente con el patrón definido.  Aplicado al caso de las direcciones, podemos recuperar solo el texto numérico que identifica el número de portal usando la siguiente expresión:

regexp_substr('Calle Plata nº1 izq.','\\d+')

También usando expresiones regulares mediante la función regexp_replace,  podríamos reemplazar ‘Avda.’ por ‘Avenida’

regexp_replace( 'Avda. Plata nº1', 'Avda.', 'Avenida')

Otra posibilidad es conmutar orden de cadenas como en el siguiente ejemplo donde cambiamos el texto ‘Mozárabes, Avenida’ por ‘Avenida de los Mozárabes’

regexp_replace('Mozárabes, Avenida','(.*),(.*)','\\2 de \\1')

Funciones sobre cadenas

Son varias las funciones para trabajar con cadenas de texto.

Concat

Concatena varias cadenas en una. La podemos usar para obtener el texto de una dirección postal completa.

concat('Paseo' ,' de ', 'Los Patios', ' nº ', '1')

Format

Da un paso más sobre la función anterior. Nos permite dar formato a la salida usando argumentos.

format('%1 de %2 nº %3', 'Paseo', 'Los Patios', '1')

Upper/Lower

Conversión de cadenas a mayúsculas o minúsculas

upper('Carretera')

Left/Right

Caracteres a la derecha o izquierda desde una posición dada.

right('Carretera comarcar CO-234', 6)

Condicionales CASE

Si queremos que el resultado final dependa de un conjunto de condiciones definidas usaremos la función CASE.

En el siguiente ejemplo, se ha recopilado las posibles formas en las que se ha indicado que el vial es una Avenida y se ha normalizado mediante una función.

CASE
WHEN "calle" like 'Av %' THEN regexp_replace( "calle", 'Av', 'Avenida')
WHEN "calle" like 'Avd %' THEN regexp_replace( "calle", 'Avd', 'Avenida')
WHEN "calle" like 'Avd. %' THEN regexp_replace( "calle", 'Avd.', 'Avenida')
ELSE "calle"
END

Y vemos el resultado de su aplicación.

En resumen

Como hemos podido comprobar, QGIS es un Sistema de Información Geográfica realmente potente y cuenta con opciones avanzadas como la expresiones para la depuración y revisión de los datos asociados.

Si estás interesado en conocer el manejo profesional de SIG de código abierto por excelencia puedes consultar el temario de nuestro curso QGIS Avanzado.

Etiquetas: calidad, depuración, direcciones postales, expresiones, 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

Patricio Soriano

Geógrafo “Full-stack” y desarrollador web especializado en Tecnologías de Información Geográfica. Vinculado con la labor de consultoría, ha realizado diversos proyectos sobre análisis urbanístico, planes de vivienda y gestión patrimonial, así como la puesta en marcha de Sistemas de Información Geográfica corporativos para la administración pública. Dentro de los trabajos como desarrollador se encuentran el diseño de varias aplicaciones webmapping y desarrollos para QGIS (Spanish Inspire Catastral Downloader, CDAU Downloader o qgis2mapea). Autor del blog www.sigdeletras.com y organizador de Geoinquietos Córdoba. Actualmente se encuentra incorporado al equipo de desarrollo de Geoinnova en aplicaciones Open Source. Como docente lleva impartiendo cursos profesionales de SIG desde 2007 para diferentes entidades y en diferentes modalidades (tanto presencial como online). Especializándose en los últimos años en cursos de QGIS a distintos niveles.

Interacciones con los lectores

¿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}