Saya telah membuat 2 poligon di QGIS. Dengan menggunakannya dalam R, poligon menjadi SpatialPolygonsDataFrame (SPDF) secara otomatis. Saya ingin menggabungkan mereka menjadi SPDF tunggal (seperti super mudah di ArcGis menggunakan Tool Merge ). Saya yakin bahwa harus ada cara sederhana untuk menyelesaikannya di R, tetapi saya tidak dapat menemukan caranya. yang menggabungkan fungsi tampaknya untuk menggabungkan hanya data.frames, agregat fungsi larut beberapa poligon menjadi satu shp, gIntersect (dengan mengetik bergabung fungsi) mengembalikan nilai logis, sama sekali tidak SPDF itu.
data tersedia di sini: http://ulozto.cz/xpoo5jfL/ab-zip
library(sp)
library(raster)
library(rgeos)
library(spatstat)
library(rgdal)
library(maptools)
setwd("C:/...")
a<-readOGR(dsn=getwd(), layer="pol.a")
b<- readOGR(dsn=getwd(), layer="pol.b")
ab<-merge(a, b) # what tool if not "merge" to use??
r
spatial-analyst
merge
maptools
maycca
sumber
sumber
Jawaban:
Jika Anda tidak perlu menggabungkan topologi, tetapi cukup tambahkan poligon baru, Anda cukup menggunakan:
ab <- rbind(a,b)
Jika Anda mendapatkan kesalahan "nilai slot ID Poligon non-unik" itu berarti bahwa nama-nama ulang objek adalah sama. Untuk memperbaikinya, Anda dapat menggunakan spChFID untuk mengubah nama pengguna dan hubungan slot yang terkait. Karena slot di objek menggunakan rownames untuk mengaitkan objek, Anda tidak bisa hanya mengubah row.names di slot @data.
Fungsi union (union_sp) dalam paket raster melakukan hal ini, dan memanggil gIntersects dari rgeos, di belakang layar dan merupakan fungsi pembantu yang sangat nyaman.
**** Edit 08-06-2018 Ada argumen tidak berdokumen yang dapat digunakan untuk melewati masalah duplikat ID.
sumber
ab <- bind(a, b)
untuk menghindari kesalahan ituSolusi super mudah yang disediakan oleh @mdsumner:
menghasilkan:
sumber
raster::union
berfungsi untuk kelas SpatialLinesDataFrame juga!sumber