Saya bertanya-tanya bagaimana cara menggabungkan poligon spasial menggunakan kode R?
Saya bekerja dengan data sensus di mana area tertentu berubah dari waktu ke waktu dan saya ingin bergabung dengan poligon dan data yang sesuai dan hanya melaporkan area yang bergabung. Saya mempertahankan daftar poligon yang memiliki perubahan sensus ke sensus dan bahwa saya berencana untuk bergabung. Saya ingin menggunakan daftar nama area ini sebagai daftar pencarian untuk diterapkan pada data sensus dari tahun yang berbeda.
Saya bertanya-tanya apa fungsi R yang digunakan untuk menggabungkan poligon yang dipilih dan data masing-masing. Saya telah meng-google-nya tetapi hanya menjadi bingung oleh hasil.
polygon
r
spatial-statistics
attribute-joins
census
Bingung dengan geoc
sumber
sumber
R
'smerge
fungsi.Jawaban:
Solusi berikut didasarkan pada posting oleh Roger Bivand di R-sig-Geo . Saya mengambil contohnya mengganti shapefile Jerman dengan beberapa data sensus dari Oregon yang dapat Anda unduh dari sini (ambil semua komponen shapefile dari 'kabupaten Oregon dan data sensus').
Mari kita mulai dengan memuat paket-paket yang diperlukan dan mengimpor shapefile ke R.
Selanjutnya, Anda memerlukan beberapa variabel pengelompokan untuk mengumpulkan data. Dalam contoh kami, pengelompokan hanya didasarkan pada koordinat county tunggal. Lihat gambar di bawah, batas hitam menunjukkan poligon asli, sedangkan batas merah mewakili poligon yang dikumpulkan
oregon.id
.Sejauh ini baik. Namun, atribut data yang terkait dengan subregional shapefile asli (mis. Kepadatan populasi, luas, dll.) Hilang saat beraksi
unionSpatialPolygons
. Saya kira Anda juga ingin menggabungkan data sensus Anda yang terkait dengan shapefile, sehingga Anda memerlukan langkah menengah.Pertama-tama Anda harus mengonversi poligon Anda ke bingkai data untuk melakukan agregasi. Sekarang mari kita ambil kolom atribut data enam hingga delapan ("AREA", "POP1990", "POP1997") dan agregat sesuai dengan fungsi penerapan ID di atas
sum
.Akhirnya, konversikan kembali kerangka data Anda ke
SpatialPolygonsDataFrame
penyediaan shapefile yang sebelumnya tidak disatukanoregon.union
dan Anda memperoleh poligon umum dan data sensus Anda yang diperoleh dari langkah agregasi perangkuman di atas.sumber
Berikut adalah solusi menggunakan paket sf:
sumber
summarise()
turunan dengando_union
argumen, karena saya baru saja melakukan sesuatu sepertisummarise_if(shapefile, predic.function, sum, na.rm = TRUE, do_union = TRUE)
, yang akhirnya juga menjumlahkan TRUE di setiap sel (yaitu +1 untuk semua operasi). Perlu menyelidiki lebih lanjut untuk mencari tahu apakah itu sesuatu yang harus dilaporkan (setidaknya untuk peringatan tambahan) ...?