Saya memiliki shapefile dengan beberapa atribut, misalnya YEAR
, COUNTY
, dan AREA
. Saya juga memiliki file CSV dengan lebih banyak bidang yang saya inginkan di shapefile, seperti POPULATION
. Baik shapefile dan file CSV memiliki bidang GISJOIN
. Saya tahu bagaimana cara bergabung di QGIS. Tetapi bagaimana saya bisa membuat join permanen dan menulis ke shapefile menggunakan ogr2ogr
atau salah satu alat lain di GDAL / OGR?
shapefile
ogr
csv
attribute-joins
Lincoln Mullen
sumber
sumber
Jawaban:
The ogr2ogr utilitas mendukung sintaks sql terbatas . Anda dapat bergabung dengan CSV Anda ke shapefile menggunakan sesuatu seperti berikut:
sumber
Jawaban yang diterima benar-benar berguna, tetapi saya menemukan bahwa itu lambat dengan database besar. Saya percaya ini juga membatasi pilihan Anda saat bergabung dengan data.
Metode saya sekarang adalah untuk menarik semuanya ke dalam SQLite (menggunakan kombinasi csvkit dan ogr2ogr):
Kemudian gabungkan semuanya dan buat shapefile darinya:
sumber
-append
di sana untuk memberikanogr2ogr
izin untuk membuka db SQLite yang ada dan menambahkannya. Saya telah mengedit jawaban untuk menunjukkan ini.csvsql --db sqlite:///myjoindb.db --insert myjoincsv.csv geoid.map(str)
atau sesuatu?geoid
sedang dikonversi ke angka, tetapi jumlahnya sangat besar sehingga meluap dan menjadi negatif. Periksa dokumentasi untuk csvsql , Anda dapat mencoba menentukan tabel di mana Anda secara eksplisit mengatakan itugeoid
adalah string, yang lain--no-inference
mungkin membantu.