Ich habe eine Shape - Datei mit mehreren Attributen, zum Beispiel YEAR
, COUNTY
und AREA
. Ich habe auch eine CSV-Datei mit mehr Feldern, die ich im Shapefile haben möchte, wie z POPULATION
. Sowohl das Shapefile als auch die CSV-Datei haben ein Feld GISJOIN
. Ich weiß, wie man einen Beitritt zu QGIS macht. Aber wie kann ich mit ogr2ogr
einem der anderen Tools in GDAL / OGR eine permanente Verknüpfung herstellen und in ein Shapefile schreiben ?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
quelle
quelle
Antworten:
Das Dienstprogramm ogr2ogr unterstützt eine eingeschränkte SQL-Syntax . Sie können Ihre CSV mit dem Shapefile wie folgt verbinden:
quelle
Die akzeptierte Antwort ist wirklich nützlich, aber ich fand, dass es mit einer großen Datenbank langsam war. Ich glaube, es schränkt auch Ihre Möglichkeiten beim Zusammenfügen der Daten ein.
Meine Methode besteht nun darin, alles in SQLite zu ziehen (mit einer Kombination aus csvkit und ogr2ogr):
Verbinden Sie dann alles und erstellen Sie daraus ein Shapefile:
quelle
-append
In hinzufügen , um dieogr2ogr
Berechtigung zum Öffnen und Hinzufügen einer vorhandenen SQLite-Datenbank zu erteilen . Ich habe die Antwort bearbeitet, um dies zu zeigen.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
oder so?geoid
als würde es in eine Zahl umgewandelt, aber die Zahl ist so groß, dass sie überläuft und negativ wird. Überprüfen Sie die Dokumentation für csvsql. Versuchen Sie möglicherweise, eine Tabelle anzugeben, in der Sie explizit angeben, dassgeoid
es sich um eine Zeichenfolge handelt. Andernfalls kann dies--no-inference
hilfreich sein.