Saya memiliki dua poligon ini:
library(sp); library(rgeos); library(maptools)
coords1 <- matrix(c(-1.841960, -1.823464, -1.838623, -1.841960, 55.663696,
55.659178, 55.650841, 55.663696), ncol=2)
coords2 <- matrix(c(-1.822606, -1.816790, -1.832712, -1.822606, 55.657887,
55.646806, 55.650679, 55.657887), ncol=2)
p1 <- Polygon(coords1)
p2 <- Polygon(coords2)
p1 <- Polygons(list(p1), ID = "p1")
p2 <- Polygons(list(p2), ID = "p2")
myPolys <- SpatialPolygons(list(p1, p2))
spdf1 = SpatialPolygonsDataFrame(myPolys, data.frame(variable1 = c(232,
242), variable2 = c(235, 464), row.names = c("p1", "p2")))
proj4string(spdf1) <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84
+towgs84=0,0,0")
plot(spdf1, col="red")
coords1a <- matrix(c(-1.830219, -1.833753, -1.821154, -1.830219, 55.647353,
55.656629, 55.652122, 55.647353), ncol=2)
p1a <- Polygon(coords1a)
p1a <- Polygons(list(p1a), ID = "p1a")
myPolys1 <- SpatialPolygons(list(p1a))
spdf2 = SpatialPolygonsDataFrame(myPolys1, data.frame(variable1 = c(2),
variable2 = c(3), row.names = c("p1a")))
proj4string(spdf2) <- CRS("+proj=longlat +datum=WGS84 +ellps=WGS84
+towgs84=0,0,0")
plot(spdf2, col="yellow", add=T)
Saya ingin memotong bagian spdf1
yang berpotongan dengan spdf2
. Namun, saya ingin spdf1
tetap sebagai SpatialPolygonsDataFrame dan menyimpan informasi apa pun yang ada di dalamnya spdf1@data
.
Saya sudah mencoba gDifference sebagai berikut, yang memotong bagian-bagian spdf1
yang berpotongan dengan spdf2
, tetapi kemudian dikonversi spdf1
ke SpatialPolygons (yaitu membuang informasi yang terkandung dalam spdf1@data
).
gDifference(spdf1, spdf2, byid=T)
Bagaimana saya bisa dipotong menjadi spdf1
dengan spdf2
tetapi mempertahankan data yang terdapat dalam spdf1@data
? Saya telah memeriksa dan mencoba pertanyaan serupa ini tanpa cara overlay poligon pada SpatialPointsDataFrame dan menyimpan data SPDF?
rgeos
menyediakan operasi geometris tetapi tidak berurusan dengan atribut data. Jadi menggunakan fungsi-fungsi ini membutuhkan banyak pekerjaan untuk menjaga semuanya tetap bersama. Fungsi raster menyederhanakan ini dan berperilaku seperti fungsi serupa dalam perangkat lunak GIS,Solusinya adalah menambahkan kembali atribut setelah melakukan klip, saat mengkonversi dari
SpatialPolygons
keSpatialPolygonsDataFrame
.sumber