Ich versuche, eine Verknüpfung in QGIS zu erstellen, in der ich ein Shapefile von Gebäuden habe, und dazu möchte ich einer nicht räumlichen Tabelle (.csv) beitreten, die Personen enthält, die in jedem Gebäude arbeiten. Ich habe also mehrere Datensätze in meiner Tabelle, die ich mit meinen einzelnen Features in meinem Shapefile verknüpfen möchte. Ich kann in QGIS nur einen Join ausführen, bei dem der erste Datensatz mit dem Shapefile-Feature (dh dem Erstellen) verknüpft wird, nachfolgende Datensätze jedoch entfernt werden.
Könnte jemand mich wissen lassen, wie ich diesen Beitritt / Bezug in QGIS vervollständige?
qgis
attribute-joins
Mick
quelle
quelle
Antworten:
Ich habe dieses Problem mit QGIS 1.7.0 gelöst, indem ich die Vektorebene zunächst als CSV-Tabelle (Comma Separated Values) gespeichert und das Geometriefeld in einen bekannten Text konvertiert habe. Dazu muss im Ebenenfeld des Dialogfelds "Vektorebene speichern unter ..." GEOMETRY = AS_WKT lauten, um ein bekanntes Textfeld der Geometrie mit der Spalte WKT zu erstellen.
Die CSV-Geometriedatei wurde dann in einer Eins-zu-Viele-Verknüpfung auf der Registerkarte Eigenschaftenverknüpfungen der Nicht-Geometrieattributtabelle mit der Nicht-Geometrieattributtabelle verknüpft.
Die resultierende Verknüpfung wurde als andere Geometrie-CSV-Datei gespeichert.
Beim Öffnen dieser Tabelle in QGIS wurde jeder Attributdatensatz durch seine entsprechende Vektorgeometrie dargestellt.
Dabei habe ich festgestellt, dass das Delimited Text Plugin nicht zum Öffnen einer CSV-Geometriedatei erforderlich ist, wenn die Begrenzer Kommas sind und das WKT-Geometriefeld den Namen WKT trägt.
Einzelheiten dazu finden Sie in meinem Tutorial unter http://georgiawildlife.com/node/2849 .
quelle
ogr2ogr
um die CSV-Dateien aus den Shapefiles zu erstellen. Dann ein einfaches R-Skript, um die Dateien auf dem gewünschten gemeinsamen Feld zusammenzuführen und an CSV zurückzuschreiben. Dannogr2ogr
nochmal das zusammengeführte Shapefile erstellen.In den Layereigenschaften erstellte Joins fügen nur Spalten zu vorhandenen Features hinzu. Wenn die Vektorebene nur 160 Features enthält, kann ein Join die Anzahl der Features nicht erhöhen!
Verwenden Sie stattdessen die Funktion für virtuelle Ebenen. Es bietet echte SQL / Datenbank-ähnliche Verknüpfungen. Ein Beispiel finden Sie in meinem letzten Beitrag: Kleine Multiples für OD-Flow-Maps mit virtuellen Layern
quelle
In QGIS 1.7 gibt es eine neue Engine für Joins (Sie finden sie in den Vektoreigenschaften).
Geometrielose Tabellen können nun wie jede andere (Vektor-) Ebene zu einem Projekt hinzugefügt werden.
quelle
Ab Version 2.2 unterstützt QGIS Eins-zu-Viele-Beziehungen. Definieren Sie sie jedoch in den Projekteigenschaften, nicht in den Eigenschaften der Vektorebene. Anschließend werden über das Formular verknüpfte Datensätze in der Attributtabelle des Layers oder in Identify Results angezeigt.
Siehe Antwort und Link zu guter Anleitung hier .
quelle
Machen Sie den Join in LibreOffice Base.
Sie können die Tatsache nicht überwinden, dass Sie versuchen, eine 1 zu viele Beziehung zu verwalten.
Für nichträumliche bis nichträumliche lohnt es sich zu lernen. Ich finde, der größte Trick besteht darin, sicherzustellen, dass die Join-Attributfelder genau die gleichen Begriffe haben.
Öffnen Sie die räumlich lokalisierten Daten als Layer in QGIS, und wählen Sie dann alle Datensätze in der Attributtabelle in QGIS aus (Auswahl aufheben, Auswahl umkehren) und kopieren Sie diese in ein neues Blatt in LibreOffice Calc. Sie werden feststellen, dass das erste Feld WKT ist, eine Beschreibung der Funktion, die in GIS universell verwendet werden kann. Calc gibt Ihnen einen Dialog zum Importieren der eingefügten Tabelle, wählt tabulatorgetrennte Tabulatoren und stellt sicher, dass das Komma nicht angekreuzt ist, da das WKT-Feld dadurch in Bits zerlegt wird. Markieren Sie dann diese Tabelle in Calc, wechseln Sie zu Base, markieren Sie das Tabellensymbol auf der linken Seite und fügen Sie es ein. Base führt einen Dialog durch, um die Tabelle zu importieren. Das WKT-Feld kann über den Join beibehalten werden. Wenn die Datei als .csv zurück in QGIS importiert wird, werden diese zum Verschieben der Features verwendet. Erinnern Sie sich einfach an die Projektion.
Auf diese Weise haben Sie die volle Kontrolle über den Join und können dies in umgekehrter Reihenfolge tun. Wenn Sie Joins in Base ausführen möchten, stellen Sie sicher, dass das eindeutige Datenfeld (die 1) ein Primärschlüssel ist, und zeigen Sie es dann auf "viele", wenn Sie mit einem 1: viele- oder 1: n-Konzept vertraut sind. Joins werden durch Herstellen von Beziehungen | TOOLS | erstellt. Wie ich bereits erwähnt habe, möchten Sie wahrscheinlich jemanden kicken, wenn Sie feststellen, dass die Verknüpfungsfelder dieselben Informationen enthalten, aber unterschiedliche Texte oder Syntaxen zur Darstellung verwendet haben.
hth
quelle
Ich denke nicht, dass dies möglich ist, um Tabellen mit einer 1 zu vielen Beziehung in QGIS zu verknüpfen. Alternativ können Sie gvSIG ausprobieren. Hier können Sie 1 bis viele Links erstellen. Wenn Sie nach dem Erstellen des Links ein Feature in der Karte auswählen, werden alle zugehörigen Datensätze in der verknüpften Tabelle hervorgehoben.
quelle