J'ai ces deux polygones:
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)
Je veux en couper des parties spdf1
qui sont recoupées par spdf2
. Cependant, je veux spdf1
rester en tant que SpatialPolygonsDataFrame et conserver toute information contenue dans spdf1@data
.
J'ai essayé gDifference comme suit, qui supprime certaines parties spdf1
qui sont intersectées par spdf2
, puis se convertit spdf1
en SpatialPolygons (c'est-à-dire en supprimant les informations contenues dans spdf1@data
).
gDifference(spdf1, spdf2, byid=T)
Comment puis-je découper spdf1
avec spdf2
mais conserver les données contenues dans spdf1@data
? J'ai vérifié et essayé cette question similaire sans savoir comment superposer un polygone sur SpatialPointsDataFrame et conserver les données SPDF?
rgeos
fournit des opérations géométriques mais ne traite pas des attributs des données. Ainsi, l'utilisation de ces fonctions nécessite beaucoup de travail pour tout garder ensemble. Les fonctions raster simplifient cela et se comportent comme des fonctions similaires dans le logiciel SIG,Une solution de contournement serait de rajouter les attributs après avoir fait le clip, lors de la conversion de
SpatialPolygons
àSpatialPolygonsDataFrame
.la source