Ich habe einen Weltkartendatensatz von www.GADM.org mit dem R-Paket-Raster importiert. Ich möchte es auf ein Polygon abschneiden, das ich erstellt habe, um die Größe der Karte zu reduzieren. Ich kann die Daten abrufen und ich kann das Polygon kein Problem erstellen, aber wenn ich den 'gIntersection' Befehl verwende, erhalte ich eine obskure Fehlermeldung.Wie WorldMap mit Polygon in R schneiden?
Haben Sie Vorschläge, wie Sie meinen World Map-Datensatz schneiden können?
library(raster)
library(rgeos)
## Download Map of the World ##
WorldMap <- getData('countries')
## Create the clipping polygon
clip.extent <- as(extent(-20, 40, 30, 72), "SpatialPolygons")
proj4string(clip.extent) <- CRS(proj4string(WorldMap))
## Clip the map
EuropeMap <- gIntersection(WorldMap, clip.extent, byid = TRUE)
Fehlermeldung:
Error in RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") :
Geometry collections may not contain other geometry collections
In addition: Warning message:
In RGEOSBinTopoFunc(spgeom1, spgeom2, byid, id, "rgeos_intersection") :
spgeom1 and spgeom2 have different proj4 strings
Das ist großartig! Ich bin mir immer noch nicht sicher, ob ich verstehe, warum Subsetting funktioniert. Ich bin Schnittpunkt eines Polygons mit einem Gitter von Polygonen (im Grunde das Gitter an den Grenzen zu beschneiden) - Wenn die Zellen groß genug sind, ist keine Untermenge erforderlich, aber wenn die Zellen klein sind, tritt der beschriebene Fehler auf. Warum funktioniert 'gIntersection (grid [gIntersects (grid, poly, byid = TRUE),], poly, byid = TRUE)', wenn 'gIntersection (grid, poly, byid = TRUE) 'nicht? – MichaelChirico