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

14

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

Algo así:

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 consigo 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 un procesamiento posterior.

Estoy usando QGIS 1.8.

    
pregunta Raffael 27.01.2013 - 18:46

4 respuestas

29

Respuesta actualizada (versión QGIS > = 2.14)

Desde QGIS 2.14 , puede usar ejecutar SQL declaraciones en cualquier capa vectorial cargada utilizando Capas virtuales .

  1. Al tener la capa cargada en QGIS, vaya a Capa > Añadir capa > Añadir / Editar capa virtual ;
  2. En el cuadro de diálogo Crear capa virtual, ingrese su declaración SQL en el campo Consulta. Algo como:

    SELECT 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 shapefile en una base de datos de Spatialite o Postgis, y luego puede consultar su tabla usando instrucciones SQL completas;
  2. Use la herramienta Disolver (Vector > Herramientas de geoprocesamiento > Disolver), para disolver sus shapefiles usando el campo "city_name". Aunque es un método extraño, el archivo dbf del shapefile resultante proporcionará la lista que necesita;
  3. Echa un vistazo al complemento de estadísticas del grupo (1.6) , puedes usar "city_name" como campo de clasificación, y pulse calcular. Se calcularán algunas estadísticas sobre cada ciudad, luego puede copiar el resultado y extraer la lista de ciudades.

Acabo de darme cuenta de que, en el Vector > Herramientas de análisis , hay una herramienta Enumerar valores únicos que es precisamente lo que se necesita para esta tarea. Tan fácil ... sin soluciones alternativas y sin necesidad de complementos.

    
respondido por el Alexandre Neto 27.01.2013 - 19:50
5

Utilice 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:

    
respondido por el DPSSpatial 09.11.2016 - 17:25
0

Intenta incluir algo como:

where city_name is NOT NULL or not equal to NULL
    
respondido por el nigellaw 27.01.2013 - 19:41
-1

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

Cree un script similar al nombre de ciudad="londres" y el nombre de ciudad="paris" hasta que tenga la lista completa de nombres y ejecute el script. Ahora todos los nombres de ciudades están seleccionados. Puede exportar los archivos seleccionados como un archivo de forma e importarlos a una base de datos postgresql.

Para usar un backend postgresql en QGIS, instale una pila postgresql con geoserver, postgresql y una base de datos habilitada para postgis en postgresql. Tendrá que conectar QGIS al servidor. Juega un poco y lo descubrirás.

    
respondido por el lewis 29.01.2013 - 20:17

Lea otras preguntas en las etiquetas