¿Recargar un archivo CSV dentro de QGIS?

9

Uso QGIS para ilustrar los resultados de mi simulación de Matlab. Matlab produce un archivo CSV que está conectado a un shapefile dentro de QGIS.

Por el momento tengo que cerrar y volver a abrir QGIS para mostrar los nuevos resultados de la simulación de Matlab.

¿Es posible volver a cargar la tabla de atributos del archivo CSV sin cerrar y volver a abrir QGIS?

Edgar
fuente
Gracias @Jason, su sugerencia funcionó como un encanto para mí: con QGIS 3.10, la opción está en propiedades-> fuente ! [ Propertiescreatespatialindex ] ( i.stack.imgur.com/5G3y5.png )
Hannes Buhrmann

Respuestas:

3

Puedo sugerir un flujo de trabajo alternativo que, aunque no necesariamente más fácil que cerrar y abrir QGIS cada vez, podría tener más sentido:

  • Importa tu shapefile en spaceialite
  • Importe el CSV en spaceialite (usando la opción "TXT / CSV virtual)
  • Cree una vista espacial en spaceialite uniéndose a la tabla espacial (shapefile) a la tabla virtual CSV

Ahora, puede mostrar la vista en QGIS al igual que cualquier capa espacial, y usar los valores UNIDOS de spaceialite. Pero, cada vez que se vuelve a crear el CSV, deberá BAJAR la tabla CSV virtual y volver a vincularla. Luego, una actualización en QGIS mostrará los nuevos valores. Esto solo toma un momento, y lo que es más, puede definir muchas vistas y mantener las anteriores si es necesario ...

HTH

Micha
fuente
2

Para cualquiera que todavía busque una respuesta a esto sin usar un formato espacial, he encontrado algo que funciona.

Si tiene un csv y usa una combinación para unirlo a una capa espacial, una de las opciones de la combinación es almacenar en caché la capa. Puede acceder a esta opción si va a las propiedades de su capa, luego a los datos unidos y hace clic en editar unión. Si deshabilita la opción de caché , puede volver a cargar la capa de datos después de que el csv haya cambiado y luego activar una nueva pintura de su mapa para obtener una vista de mapa actualizada.

Puede volver a cargar y volver a pintar en la consola de Python. Primero, debe definir un nombre para el lienzo del mapa, el csv y para la capa:

mc = iface.mapCanvas()
layer=mc.currentLayer()
csv_layer=mc.currentLayer()

Asegúrese de tener las capas activas cuando las nombre en la consola cuando use el método currentLayer (tiene que ser la 'capa actual').

Luego, si configura la opción de caché como desactivada para su unión, puede alterar el csv y luego usar los siguientes dos comandos en la consola de Python para volver a dibujar su mapa:

csv_layer.reload()
layer.triggerRepaint()

Esto funcionó para mí, pero solo tenía 100 filas de datos. Podría ser que las operaciones sean lentas sin almacenamiento en caché cuando tenga un conjunto de datos más grande.

Sanne de Bruin
fuente
0

Abra las propiedades de capa del archivo de forma y vaya a General- Coordinate reference system, haga clic Create spatial index. Una vez que está terminado, el archivo de forma se actualiza.

Jason
fuente