21 votos

Cómo 'revertir clip' (borrar) en R

Un inversa clip guarda sólo la parte de su objeto espacial que está fuera de los límites de otro objeto, en contraposición a un clip que guarda la las piezas que están dentro de otro objeto. He aquí cómo hacerlo en ArcMap.

La pregunta es: ¿cómo hacer esto en R?

Reproducible ejemplo (en Linux):

system("wget 'https://github.com/Robinlovelace/Creating-maps-in-R/archive/master.zip' -P /tmp/")
unzip("/tmp/master.zip", exdir = "/tmp/master")
uk <- readOGR("/tmp/master/Creating-maps-in-R-master/data/", "ukbord")
lnd <- readOGR("/tmp/master/Creating-maps-in-R-master/data/", "LondonBoroughs")
plot(uk)
plot(lnd, add = T, col = "black")

Lo que quiero hacer aquí es salvar a todos los del reino unido , excepto para Londres. Visualmente, quiero que el negro de la forma en que la imagen que resulta ser un agujero.

enter image description here

17voto

Jay Bazuzi Puntos 194

Parece ser una simple aplicación de gDifference desde el paquete rgeos :

 > require(rgeos)
> ukhole = gDifference(uk, lnd)
Warning message:
In RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_difference") :
  spgeom1 and spgeom2 have different proj4 strings
> plot(ukhole)
 

La advertencia de proyección se debe a que el LondonBoroughs shapefile no tiene un archivo .prj .

Sólo para asegurarse de que es un agujero y no un contorno u otro polígono sólido:

 > gArea(lnd) + gArea(ukhole) - gArea(uk)
[1] 0
 

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X