Ändern des CSV-Ebenenattributwerts von Text in Zahl in QGIS?


28

Ich habe eine CSV-Datei zum Verknüpfen mit einer .shp-Datei eingelesen.

Alle Variablen, die nur Zahlen sind, wurden als Text eingegeben.

Wie ändere ich die Textvariablen in QGIS in numerisch?

Antworten:


37

Ich hatte einmal die gleiche Frage. Die Antwort ist, dass Sie eine Datei im selben Ordner mit der Endung csvt ablegen. Beispiel: Ihr Dateiname lautet xyzdata.csv. Fügen Sie die Datei xyzdata.csvt hinzu

Diese können Sie beispielsweise mit dem Editor bearbeiten. Und darin stellen Sie den Datentyp so ein. "Integer", "String", "Integer", "Integer", "String", "Real"

Ganzzahl ist jetzt die Variable für die erste Spalte, Zeichenfolge für die zweite usw. Stellen Sie sicher, dass die Dateien den gleichen Namen haben.

Bearbeiten: Siehe auch hier, falls erforderlich: http://underdark.wordpress.com/2011/03/07/how-to-specify-data-types-of-csv-columns-for-use-in-qgis/


Vielen Dank1. Stimmt es, dass alle CSV-Dateien als Text eingelesen werden? Vielleicht habe ich mir das vorgestellt, aber als ich vor einiger Zeit mit QGIS angefangen habe, habe ich eine CSV-Datei verlinkt und Zahlen waren Zahlen. Scheint, dass diese Informationen in der Bedienungsanleitung sein sollten. (Vielleicht habe ich es verpasst)
HealthMaps

Ja, das war auch für mich ziemlich seltsam. Wenn Sie jedoch nur wenige Spalten haben, ist diese Methode einfach durchzuführen. Also ... hat es für Sie tatsächlich geklappt?
Shepherdjo

Ja, es funktioniert einwandfrei! Achten Sie darauf, Ihre CSVT-Datei in Excel einzurichten. Zusätzliche Anführungszeichen bleiben in usw. stecken. Ich verwende SAS oder R, um die Dateien zu erstellen, die ich verknüpfen möchte, damit es nicht zu schwierig ist, eine CSVT-Datei zusammen mit der CSV-Datei zu erstellen. Scheint, dass dies behoben werden muss. Ein anderes GIS, das ich verwende, sieht Zahlen in einer CSV-Spalte, es liest sie als Zahlen ein.
HealthMaps

Ich habe ein Plugin MMQGIS gefunden, das eine Spalte von Text in Float oder Float in Text ändert. Funktioniert nur für eine Formdatei, keine verknüpfte Datei oder eine importierte CSV-Datei. Siehe michaelminn.com/linux/mmqgis
HealthMaps

Gut das zu hören. Und danke für den Plug-in-Hinweis. Ich wäre Ihnen auch dankbar, wenn Sie meine Antwort dann annehmen würden.
Shepherdjo

15

Verwenden Sie einfach den Feldrechner, um den Text in eine Zahl / Real umzuwandeln, anstatt mit der Eingabedatei herumzuspielen, um ein perfektes Bild zu erhalten. Siehe die folgenden Beispiele:

Feldrechner

Feldrechner zu Zahl

Feldrechner nach Real

Attributtabelle nach Funktion


Als ich die CSV-Datei einbrachte, konnte ich sie nicht bearbeiten. Die Schaltfläche Bearbeiten wurde ausgegraut. Wie kann ich dafür sorgen, dass es bearbeitbar ist?
HealthMaps

Ich bin nicht sicher, ob Sie eine CSV über qGIS bearbeiten können. Ich glaube, ich habe Ihre Frage falsch verstanden, weil Sie die CSV-Daten bereits in das Shapefile importiert haben .
Nagytech

2
Ich habe den Link, .shp, zu einer CSV-Datei gemacht, die Nummernspalten enthielt, aber wirklich Text war. Anscheinend kann man weder eine CSV-Datei selbst noch eine mit einer SHP-Datei verknüpfte bearbeiten. Also habe ich die verknüpfte Datei gespeichert und dann neu geladen und konnte die Textnummerndateien in ein ganzzahliges Format ändern, wie Sie vorgeschlagen haben. Die Verwendung der CSVT-Datei scheint am besten zu funktionieren, wenn viele Textspalten konvertiert werden müssen, und verwenden Sie dann die Feldberechnungsmethode, wenn nicht so viele vorhanden sind. Es wäre nützlich, wenn Sie die CSV-Datei selbst bearbeiten könnten, ohne mit irgendetwas verknüpft zu sein.
HealthMaps

11

Verwenden Sie das Ebenenwerkzeug "Begrenzter Text", anstatt die CSV-Datei mit der Option "Vektorebene hinzufügen" zu laden. Es wird versucht, den am besten passenden Datentyp für jede Spalte zu ermitteln.

Weitere Einzelheiten finden Sie im QGIS-Benutzerhandbuch .

Bildbeschreibung hier eingeben


Insta-Fix! Vielen Dank
user94812

5

MMQGis hat dieses Problem verursacht und kann es, wie sich herausstellt, beheben.

Wenn Sie sich Ihren Shapefile- und CSV-Daten angeschlossen haben, verwenden Sie das Werkzeug Ändern> Text in Float von MMQGis.

Wie üblich hinterlässt es eine Spur von Junk-Intermediate-Shapefiles, aber was ist noch neu?


1

In QGIS 3.x besteht eine häufige Fehlerquelle darin, das falsche Dezimaltrennzeichen zu wählen. Aktivieren oder deaktivieren Sie das Kontrollkästchen "Dezimaltrennzeichen ist Komma", bevor Sie Ihre CSV in QGIS laden:

Bildbeschreibung hier eingeben


-2

Eine weitere Alternative für den Fall, dass große Datenmengen verwaltet werden müssen und offensichtlich zeitaufwendig sind, um mit dem Feldrechner (ohne Schleifen) oder in einem Texteditor fortzufahren: - Speichern Sie Ihre Daten als CSV + XY + -Variable für die Verbindung mit unserem Polugone-Shapefile - Hochladen Ihre CSV mit dem Plug-In (CSV importieren) dann als Shapefile (Punkt) speichern - dann QGIS schließen - zurück in den Ordner mit dem Shapefile-Punkt, die entsprechende DBF-Tabelle duplizieren / umbenennen - QGIS öffnen - die neue DBF hochladen und beitreten Shapefile (polygonale Merkmale)

Eine Klappe, zwei Tauben: Sie haben potentiell 1) einen Shapefile-Punkt mit allen Daten und allen Repräsentationsmöglichkeiten 2) und ein unabhängiges Shapefile mit einer DBF-Tabelle (editierbar!), Die mit einem Polygon für die thematische Kartografie verknüpft ist

Das ist ein bisschen unhöflich, aber ganz einfach ...

bs_epidemio


3
In dieser Antwort wird zwar erläutert, wie die .csvDatei in ein bearbeitbares Format gebracht werden kann, die ursprüngliche Frage, wie ein Attributwert von einem Text in eine Zahl konvertiert wird, wird jedoch nicht beantwortet . Während es wichtig ist, qualitativ hochwertige, fokussierte Fragen zu haben, ist es ebenso wichtig, dass die Antworten auf diese Fragen so fokussiert und relevant wie möglich für das sind, was ursprünglich gestellt wurde.
Holen Sie sich Spatial
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.