基于 SpatialPolygonsDataFrame 位置的颜色点

colour points based on location from SpatialPolygonsDataFrame

我从这里下载了一个大型 SpatialPolygonsDataFrame:

http://omap.africanmarineatlas.org/BIOSPHERE/pages/3_terrestrial%20vegetation.htm

我使用以下方法创建了 SpatialPolygonsDataFrame:

white_veg <- readOGR(dsn="data", 
                     layer="Whites vegetation")

我有一个单独的数据框,如下所示:

id <- c(1,2,3,4,5,6,7,8)
lat <- c(13.8, 13.552, 13.381, -15.440, -15.860, 13.967, -27.750, -27.750)
lon <- c(2.250, 2.687, 2.865, 23.250, 23.340, 30.527, 21.420, 21.420)
x <- c(566, 537, 554, 879, 811, 268, 216, 216)
y <- c(8, 10.32, 3.83, 64.8, 53.7, 4, 5.8, 2.2)

locations <- data.frame(id, lat, lon, x, y)

我想在 locations 中创建一个新列,根据 white_veglat+lon 坐标所在的植被类型多边形对每一行进行分类,例如white_veg@data$DESCRIPTIO.

中的因子

我已经阅读了 rgeos 包中关于 gcontains()a question,但这只是 returns 一个长度为 1 的逻辑向量,我不确定那是什么表示:

locations_coords <- data.frame(locations$lat, locations$lon)
locations_spoints <- SpatialPoints(locations_coords,proj4string=CRS(proj4string(white_veg)))
gContains(white_veg, locations_spoints)

我也查看了 this on the GIS SE,使用 sp 包中的 over,但答案不够全面,我无法理解。

我最终使用了 sp 包中的 over,如下所示:

locations_veg_class <- locations %>% 
mutate(veg_class = over(locations_spoints, white_veg)$DESCRIPTIO)

其中 locations_spoints 是我在问题中创建的 SpatialPoints 对象。