Mam shapefile z kilku atrybutów, na przykład YEAR
, COUNTY
i AREA
. Mam również plik CSV z większą liczbą pól, które chcę w pliku kształtu, np POPULATION
. Zarówno plik kształtu, jak i plik CSV mają pole GISJOIN
. Wiem jak dołączyć do QGIS. Ale w jaki sposób mogę na stałe połączyć i napisać do pliku shapefile przy użyciu ogr2ogr
lub jednego z innych narzędzi w GDAL / OGR?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
źródło
źródło
Odpowiedzi:
Narzędzie ogr2ogr obsługuje ograniczoną składnię SQL . Możesz dołączyć swój plik CSV do pliku kształtu, używając czegoś takiego:
źródło
Przyjęta odpowiedź jest naprawdę przydatna, ale okazało się, że była wolna w przypadku dużej bazy danych. Uważam, że ogranicza to również twoje opcje przy łączeniu danych.
Moja metoda polega teraz na ściągnięciu wszystkiego do SQLite (używając kombinacji csvkit i ogr2ogr):
Następnie dołącz do wszystkiego i stwórz z niego plik kształtu:
źródło
-append
tam, abyogr2ogr
zezwolić na otwarcie istniejącej bazy danych SQLite i dodanie do niej. Zredagowałem odpowiedź, aby to pokazać.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
czy coś?geoid
to, że jest konwertowany na liczbę, ale liczba jest tak duża, że przelewa się i staje się ujemna. Sprawdź dokumentację pod kątem csvsql , możesz spróbować określić tabelę, w której wyraźnie mówisz, żegeoid
jest łańcuchem, w przeciwnym razie--no-inference
może pomóc.