¿Obtener una lista de valores distintos del campo shapefile usando QGIS?

18

Tengo un archivo shape cuyas características puedo filtrar especificando una cláusula where en el diálogo de consulta. Fx Tengo un campo llamado 'city_name' y al indicar 'city_name = "London"' en la cláusula where solo se muestra London. Lo que me gustaría hacer ahora es buscar todos los valores en 'city_name' de la tabla de atributos.

Algo como eso:

select distinct city_name from [attribute table]

Encontré varias herramientas en QGIS aparentemente relacionadas con SQL y también eché un vistazo rápido a los diferentes complementos. Pero no puedo conectarme a una base de datos o al nombre de la tabla ... ¿qué base de datos o qué tabla en ese caso?

Al final, quiero exportar la lista de resultados y usarla para su posterior procesamiento.

Estoy usando QGIS 1.8.

Raffael
fuente

Respuestas:

32

Actualizar respuesta (Versión QGIS> = 2.14)

Desde QGIS 2.14 , puede usar ejecutar sentencias SQL en cualquier capa vectorial cargada usando capas virtuales .

  1. Después de cargar la capa en QGIS, vaya a Capa> Agregar capa> Agregar / Editar capa virtual ;
  2. En el cuadro de diálogo Crear capa virtual, ingrese su instrucción SQL en el campo Consulta. Algo como:

    SELECCIONE DISTINCT city_name FROM layer_name

  3. Para el conjunto de geometría Sin geometría

  4. Haga clic en Aceptar y se cargará una tabla en QGIS con los valores únicos deseados.

Nota: esta tabla se actualizará si se agregan nuevos valores a la columna city_name.

Respuesta heredada (versión QGIS <2.14)

Tienes algunas opciones para hacer lo que pides.

  1. Importe su archivo de forma en una base de datos Spatialite o Postgis, y luego puede consultar su tabla usando declaraciones SQL completas;
  2. Use la herramienta Disolver (Vector> Herramientas de geoprocesamiento> Disolver) para disolver sus archivos de forma usando el campo "nombre_de_ ciudades". Aunque es un método extraño, el archivo dbf del archivo de forma resultante proporcionará la lista que necesita;
  3. Eche un vistazo al complemento de estadísticas de grupo (1.6) , puede usar "city_name" como campo de clasificación y presione calcular. Calculará algunas estadísticas sobre cada ciudad, luego puede copiar el resultado y extraer la lista de ciudades.

Acabo de notar que, en Vector> Herramientas de análisis , hay una herramienta Listar valores únicos que es precisamente lo que uno necesita para esta tarea. Tan fácil ... sin soluciones y sin necesidad de complementos.

Alexandre Neto
fuente
6

Use el QGIS DB Manager y acceda a su shapefile a través de 'capas virtuales'

Luego puede usar la ventana SQL y escribir su consulta:

ingrese la descripción de la imagen aquí

DPSSpacial
fuente
1
Esta es ahora (QGIS 2.14+) la respuesta correcta.
Alexandre Neto
-1

Use el generador de consultas en QGIS, vaya al campo del nombre de la ciudad en los campos del generador de consultas. Ir a valores, agregar todo. Eliminar cualquier nulo.

Cree un script similar a city name = "london" y city name = "paris" hasta que tenga la lista completa de nombres y ejecute el script. Ahora se seleccionan todos los nombres de ciudades. Puede exportar seleccionados como un archivo de forma e importarlos a una base de datos postgresql.

Para utilizar un backend postgresql a QGIS, instale una pila postgresql con geoserver, postgresql y una base de datos habilitada postgis en postgresql. Deberá conectar QGIS al servidor. Juega un poco y lo resolverás.

Luis
fuente