我从这里下载了一个大型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_veg
+ lat
坐标的lon
内部的植被类型多边形对每一行进行分类,例如white_veg@data$DESCRIPTIO
中的因素。
我已在gcontains()
包中的rgeos
上阅读a question,但这只会返回长度为1的逻辑向量,我不确定这表示什么:
locations_coords <- data.frame(locations$lat, locations$lon)
locations_spoints <- SpatialPoints(locations_coords,proj4string=CRS(proj4string(white_veg)))
gContains(white_veg, locations_spoints)
我还使用over
包中的sp
查看了this on the GIS SE,但答案还不够全面,无法理解。
答案 0 :(得分:0)
我最终使用over
包中的sp
,如下所示:
locations_veg_class <- locations %>%
mutate(veg_class = over(locations_spoints, white_veg)$DESCRIPTIO)
其中locations_spoints
是我在问题中创建的SpatialPoints对象。