Abrufen einer Liste unterschiedlicher Werte aus dem Shapefile-Feld mithilfe von QGIS?

18

Ich habe ein Shapefile, dessen Features ich filtern kann, indem ich eine where-Klausel im Abfragedialog spezifiziere. Fx Ich habe ein Feld mit dem Namen 'city_name' und mit der Angabe 'city_name = "London"' in der where-Klausel wird nur London angezeigt. Was ich jetzt tun möchte, ist, alle Werte in 'city_name' aus der Attributtabelle abzurufen.

Sowas in der Art:

select distinct city_name from [attribute table]

Anscheinend habe ich in QGIS mehrere Tools gefunden, die sich mit SQL befassen, und ich habe mir auch die verschiedenen Plugins angesehen. Aber ich kann keine Verbindung zu einer Datenbank oder dem Tabellennamen herstellen ... welche Datenbank oder welche Tabelle in diesem Fall?

Am Ende möchte ich die Ergebnisliste exportieren und für die weitere Bearbeitung verwenden.

Ich benutze QGIS 1.8.

Raffael
quelle

Antworten:

32

Antwort aktualisieren (QGIS Version> = 2.14)

Seit QGIS 2.14 können Sie mithilfe von virtuellen Ebenen SQL-Anweisungen für jede geladene Vektorebene ausführen .

  1. Nachdem Sie die Ebene in QGIS geladen haben, gehen Sie zu Ebene> Ebene hinzufügen> Virtuelle Ebene hinzufügen / bearbeiten .
  2. Geben Sie im Dialogfeld "Virtuelle Ebene erstellen" Ihre SQL-Anweisung in das Feld "Abfrage" ein. Etwas wie:

    SELECT DISTINCT Städtename FROM Ebenenname

  3. Für Geometrie legen Sie Keine Geometrie fest

  4. Klicken Sie auf OK und eine Tabelle mit den gewünschten eindeutigen Werten wird in QGIS geladen.

Hinweis: Diese Tabelle wird aktualisiert, wenn der Spalte city_name neue Werte hinzugefügt werden.

Legacy-Antwort (QGIS Version <2.14)

Sie haben ein paar Möglichkeiten, um das zu tun, was Sie verlangen.

  1. Importieren Sie Ihr Shapefile in eine Spatialite- oder Postgis-Datenbank. Anschließend können Sie Ihre Tabelle mit vollständigen SQL-Anweisungen abfragen.
  2. Verwenden Sie das Auflösen-Werkzeug (Vektor> Geoverarbeitungswerkzeuge> Auflösen), um Ihre Shapefiles mithilfe des Felds "city_name" aufzulösen. Obwohl dies eine seltsame Methode ist, enthält die DBF-Datei des resultierenden Shapefiles die Liste, die Sie benötigen.
  3. Werfen Sie einen Blick auf das Plugin für Gruppenstatistiken (1.6) . Sie können "city_name" als Klassifizierungsfeld verwenden und auf "Berechnen" klicken. Es werden einige Statistiken für jede Stadt berechnet. Anschließend können Sie das Ergebnis kopieren und die Städteliste extrahieren.

Ich habe gerade bemerkt, dass es unter Vektor> Analysewerkzeuge ein Tool zum Auflisten eindeutiger Werte gibt , das genau das ist, was man für diese Aufgabe benötigt. So einfach ... keine Umgehungen und keine Notwendigkeit für Plugins.

Alexandre Neto
quelle
6

Verwenden Sie den QGIS DB Manager und greifen Sie über "virtuelle Ebenen" auf Ihr Shapefile zu.

Sie können dann das SQL-Fenster verwenden und Ihre Abfrage schreiben:

Bildbeschreibung hier eingeben

DPSSpatial
quelle
1
Dies ist jetzt (QGIS 2.14+) die richtige Antwort.
Alexandre Neto
-1

Verwenden Sie den Abfrage-Generator in QGIS. Wechseln Sie in den Feldern des Abfrage-Generators zum Feld für den Städtenamen. Gehen Sie zu Werten, fügen Sie alle hinzu. Löschen Sie alle Nullen.

Erstellen Sie ein Skript, das city name = "london" und city name = "paris" ähnelt, bis Sie die vollständige Liste der Namen haben, und führen Sie das Skript aus. Jetzt sind alle Städtenamen ausgewählt. Sie können die ausgewählte Form als Formdatei exportieren und in eine postgresql-Datenbank importieren.

Um ein postgresql-Backend für QGIS zu verwenden, installieren Sie einen postgresql-Stack mit Geoserver, postgresql und einer postgis-fähigen Datenbank in postgresql. Sie müssen QGIS mit dem Server verbinden. Spielen Sie ein bisschen herum und Sie werden es herausfinden.

Lewis
quelle