나는 예를 들어, 여러 속성을 가진 shape 파일을 가지고 YEAR
, COUNTY
하고 AREA
. 또한 shapefile에 원하는 필드가 더 많은 CSV 파일이 있습니다 (예 🙂 POPULATION
. shapefile과 CSV 파일에는 모두 필드가 GISJOIN
있습니다. QGIS에 참여하는 방법을 알고 있습니다. 그러나 ogr2ogr
GDAL / OGR의 다른 도구 중 하나를 사용하여 어떻게 쉐이프 파일에 영구적으로 결합하고 쓸 수 있습니까?
답변
ogr2ogr 유틸리티는 지원 제한 SQL 구문을 . 다음과 같은 방법으로 CSV를 shapefile에 결합 할 수 있습니다.
ogr2ogr -sql "select inshape.*, joincsv.* from inshape left join 'joincsv.csv'.joincsv on inshape.GISJOIN = joincsv.GISJOIN" shape_join.shp inshape.shp
답변
허용 된 답변은 실제로 유용하지만 큰 데이터베이스에서는 느리다는 것을 알았습니다. 데이터 가입시 귀하의 옵션도 제한한다고 생각합니다.
내 방법은 이제 csvkit 과 ogr2ogr 의 조합을 사용하여 모든 것을 SQLite로 가져 오는 것입니다 .
csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv
ogr2ogr -append -f "SQLite" myjoindb.db myjoinshp.shp
그런 다음 모든 것을 결합하고 모양 파일을 만듭니다.
ogr2ogr -f "ESRI Shapefile" -sql "SELECT csv.*, shp.* FROM myjoinshp shp INNER JOIN myjoincsv csv ON csv.joinfield = shp.joinfield" joined_output.shp myjoindb.db