1 votos

Unir dos capas a partir de dos campos con valores muy similares

Tengo dos shapefiles ("tax_parcels" y "buffalo") que me gustaría unir basándome en los campos de dirección ('PropAddres' y 'physical_a') de sus tablas de atributos. El problema es que una columna proporciona el número del edificio, el número de la calle y las abreviaturas de los sufijos (por ejemplo, st, ave), mientras que la otra sólo proporciona el número del edificio y el nombre de la calle. A continuación se muestran ejemplos de valores:

PropAddres: 1 Geneva St, 100 Reiman St, 256 Sumner Ave.

physical_a: 1 Ginebra, 100 Reiman, 256 Sumner

Para ello estoy utilizando QGIS. Por lo que sé, QGIS tiene una función llamada levenshtein, sin embargo nunca he trabajado con esta función, por lo que no estoy seguro de cómo puedo utilizarla.

2voto

Anton8000 Puntos 165

Puedes probar esto:

1 Cree una capa virtual que sea la unión cruzada de sus dos capas:

select buff."kommunnamn", tax."kommunnamn"
from buffalo1 as buff
cross join
taxparcels1 as tax

enter image description here Haga clic con el botón derecho del ratón y exporte como una tabla de geopackage sin geometría.

2 Campo Calcular un campo de similitud en la salida con levenshtein( "kommunnamn", "kommunnamn:1" )

3 Eliminar las filas con una similitud superior a algún umbral, yo uso >4

4 Calcular una columna uuid uuid()

5 Une este uuid a tus dos tablas de inicio, y luego únelas por uuid.

O, si es posible, omita los puntos 4 y 5 y únalos por las columnas del geopackage

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X