4 votos

Fusión de archivo CSV con shapefile en QGIS

Tengo un archivo CSV con "ID" que se repite, algo así como:

ID     other values..
1       njhb
1       njhb
2       njhb
2       njhb
1       njhb

De todos modos, tengo en shapefile que "ID" que es único (no se repite):

ID2      geoemetry
1          g1
2          g2

....

Quiero fusionar esos valores, algo así como la multiplicación de Descartes, por lo que la salida será:

ID     other values..     ID2    geometry
1       njhb                1      g1
1       njhb                1      g1
2       njhb                2      g2
2       njhb                2      g2
1       njhb                1      g1

La función de unión en QGIS no la fusiona, sólo toma el primer valor correspondiente de cada uno y lo une y el resto lo ignora.

3voto

matzeri Puntos 176

Es un poco difícil de hacer pero se obtiene el resultado.

Primero seleccione su CSV y cree una unión con su shapefile. Obtendrá todos los resultados pero sin la geometría.

Para solucionarlo puedes crear un nuevo campo virtual en tu CSV. Abra su tabla de atributos e inicie la calculadora de campos. Seleccione text , unlimited length (text) como nombre de campo elija wkt_geom idealmente e introduzca el siguiente código:

geom_to_wkt(geometry(get_feature('point2','id',attribute($currentfeature,'id'))))

point2 es mi capa shapefile; sustitúyalo por el nombre de su capa shapefile.

id es el campo correspondiente en mi capa shapefile; sustitúyalo por su ID en su capa shapefile.

attribute($currentfeature,'id') es el campo coincidente en mi capa CSV; sustitúyalo por el suyo.

enter image description here

Una vez hecho esto, guarda tu CSV como un nuevo CSV. (No conozco ningún método para cambiar el origen de la geometría de un archivo CSV ya añadido; por favor, corríjanme si lo hay)

Ahora puede importar su nuevo CSV con geometría. Haz lo que quieras con él, por ejemplo, guárdalo como shapefile o cualquier otra cosa.

0voto

Hugh_Kelley Puntos 15

La forma más infalible que he encontrado para hacer esto es creando un campo de atributos en el shapefile que contenga el resultado de texto de geom_to_wkt($geometry) En el caso de los archivos shapefile, la unión con el csv, la exportación a un nuevo csv para que los campos unidos formen parte permanente del conjunto de datos y, a continuación, la creación de una nueva capa de texto delimitada a partir del nuevo csv, apuntando a QGIS como la columna geomática WKT unida.

Las otras formas descritas me creaban algunos problemas.

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