Ich habe eine Attributtabelle mit zwei leeren Feldern in QGIS.
Ich möchte eine Excel-Datenbank importieren, um meine leeren Felder in QGIS auszufüllen. Meine Excel-Datei entspricht den Spalten in meiner QGIS-Attributtabelle.
Ich kann mein Excel (.CSV) ordnungsgemäß mit meinem Shapefile verknüpfen. Bei dem Vorgang wurden jedoch Duplikate erstellt, anstatt die leeren Felder wie gewünscht auszufüllen. Mit Hilfe von «Table Manager» kann ich die Situation korrigieren, aber es braucht viel Zeit. Ich suche nach einer effizienteren Möglichkeit, meine Excel-Daten zusammenzuführen.
Wie kann ich meine Excel-Datei mit meiner Attributtabelle verbinden, ohne Duplikate zu erstellen?
qgis
attribute-table
attribute-joins
excel
Laurent Robitaille-Lainesse
quelle
quelle
Antworten:
Ich würde die folgenden Dinge tun, um das Leben leichter zu machen:
Erstellen Sie zuvor eine Sicherungskopie Ihres Shapefiles.
Dies ist die Registerkarte "Feld", auf die ich mich beziehe
Vergessen Sie nicht, die Bearbeitung vor und nach dem Löschen nicht benötigter Felder umzuschalten
quelle
Sie möchten die Excel-Datei mit dem Shapefile verbinden. Sie verbinden sie mit einem gemeinsamen Attribut und das Ergebnis ist eine verbundene Ebene, in der jeder Datensatz die Attribute des Shapefiles und der Excel-Datei enthält.
Ok, zuerst laden Sie Ihre Excel-Datei und Ihren Vektor später in die Ebenen. Ich habe einige Testdaten verwendet, aber Ihr Setup sollte wie folgt aussehen.
Klicken Sie nun mit der rechten Maustaste auf die Ebene (im Ebenenbedienfeld) und wählen Sie Eigenschaften und dann Verbinden. Klicken Sie zuerst auf das grüne + Zeichen unten links (großer roter Pfeil im Bild unten) und es wird ein neues Menü zum Hinzufügen eines Vektor-Joins angezeigt (wie unten). Hier ist Ihre Join-Ebene die Excel-Datei (wählen Sie also die richtige Excel-Datei aus) & sheet) Das Verknüpfungsfeld ist das Feld in der Excel-Datei, das das gemeinsame Attribut für das Shapefile enthält. Das Zielfeld ist das übereinstimmende Feld im Shapefile. (in meinem Fall hießen beide gemeinsamen Felder "unit", aber wenn das Feld im Shapefile "UNIT_" genannt worden wäre, hätte ich dies anstelle von "UNIT" für mein Zielfeld verwendet.)
Es gibt noch ein paar andere Optionen, mit denen Sie beim Join herumspielen können, zum Beispiel, wenn Sie nur bestimmte Felder usw. sehen möchten. Wenn Sie also zurückgehen und sich die Attribute des Shapefiles ansehen, werden Sie sehen, dass diese verbunden sind es hat jetzt die entsprechenden Attribute der Excel-Datei wie unten.
Hier sind einige praktische Tutorials, die Ihnen Schritt für Schritt zeigen, wie es geht:
https://www.mapbox.com/tilemill/docs/guides/joining-data/
http://maps.cga.harvard.edu/qgis/wkshop/join_csv.php
http://qgis.spatialthoughts.com/2012/03/using-tabular-data-in-qgis.html
Wie verbinde ich externe Tabellen mit der Attributtabelle eines Shapefiles in QGIS?
http://www.digital-geography.com/qgis-tutorial-ii-how-to-join-data-with-shapefiles/#.Vs9vpmHXKUk
und das Tutorial ArMoraer in den Kommentaren erwähnt.
quelle
Um eine weitere Methode hinzuzufügen, können Sie ein Projektmakro einrichten, das beim Laden Folgendes ausführt:
IP1
undIP2
Erstellen Sie zunächst ein Projekt, falls Sie dies noch nicht getan haben, und wechseln Sie dann zur Symbolleiste:
Projekt> Projekteigenschaften ...> Makros
Verwenden Sie dann den folgenden Code in der
def openProject():
Funktion und geben Sie die Namen Ihrer Ebenen und die Felder ein, die Sie verbinden möchten. Ich habe für meine Shapefile- und CSV-Datei "Example" und "Spreadsheet" mit folgendem Feld verwendetID
:Stellen Sie sicher, dass die Ebenen nicht verbunden sind, speichern Sie das Projekt und aktivieren Sie Makros, indem Sie zur Symbolleiste gehen:
Einstellungen> Allgemein> Makros aktivieren
Wenn Sie jetzt das Projekt schließen und die CSV-Datei bearbeiten, sollten die Felder beim nächsten Laden des Projekts automatisch aktualisiert werden:
quelle
Mein Vorschlag ist, Open Source LibreOffice / Open Office zu verwenden, um Ihre Excel-Datei zu bearbeiten und eine DBF-Datei zu erstellen. Ich habe ein Testheft für Sie vorbereitet. Arbeitsmappe testen - Link
Ergebnistabelle ohne Duplikate in QGIS:
quelle
Warum sind dort zunächst die leeren Felder? Können Sie ohne die leeren Felder beginnen und nur die beiden im Join erzeugten Spalten verwenden? Ich denke, das ist der einfachste Ansatz. Entweder das oder Sie suchen ein Tool, das dem Tool "Laden" in ArcGIS ähnelt.
https://desktop.arcgis.com/de/arcmap/latest/extensions/production-mapping/loading-data-into-a-geodatabase.htm
Wenn Sie keine Geodatabase verwenden, kann ich dies nur empfehlen.
quelle
Ich weiß nicht, ob es eine direkte Möglichkeit gibt, ohne Duplikat beizutreten, da diese .shp-Datei durch Attribut in .DBF (Datenbankdatei) unterstützt wird. Dieses DBF verfügt über eine Deklaration des Spaltentyps wie Integer, Real, String usw. mit Details zu Länge und Genauigkeit. Die CSV-Datei enthält nur normale Spalten ohne deklarierten Typ. Ich weiß nicht, wie groß Ihre Datei ist. Für mich behalte ich die doppelten Felder und verwende dann den Feldrechner mit der allgemeinen Formel:
Löschen Sie dann alle diese duplizierten Felder (über QGIS oder ein Datenbankprogramm)
quelle
Ich glaube, der einfachste Weg, dies zu beheben, wäre, einfach die zwei fraglichen Spalten in der QGIS-Tabelle vor dem Join zu löschen. Wenn Sie sich dann dem Shapefile anschließen, werden die beiden gewünschten Spalten nicht dupliziert und behalten ihre ursprünglichen Spaltennamen.
quelle