Я пытаюсь понять, как обновить атрибуты пространственного полигондатафрейма, где я применяю фильтр атрибутов и пространственный фильтр и изменяю только атрибуты записей, которые удовлетворяют этим двум фильтрам.
Установите для параметра deg = 50 значениеточки с вычетом> 50, которые находятся в пределах многоугольника
Я могу сделать каждый шаг, присваивая результат новой переменной. Как я могу применить эти шаги для обновления оригинального пространственного полигондатафрейма?
Вот куда я дошел:
library(sp)
library(raster)
library(ggplot2)
library(sf)
library(rgdal)
library(raster)
library(dplyr)
library(sqldf)
longitude <- c(-116.7, -120.4, -116.7, -113.5, -115.5, -120.8, -119.5, -113.7, -113.7, -110.7)
latitude <- c(45.3, 42.6, 38.9, 42.1, 35.7, 38.9, 36.2, 39, 41.6, 36.9)
lonlat <- cbind(longitude, latitude)
pts <- SpatialPoints(lonlat)
crdref <- CRS('+proj=longlat +datum=WGS84')
pts <- SpatialPoints(lonlat, proj4string=crdref)
precipvalue <- runif(nrow(lonlat), min=0, max=100)
df <- data.frame(ID=1:nrow(lonlat), precip=precipvalue)
ptsdf <- SpatialPointsDataFrame(pts, data=df)
lon <- c(-116.8, -114.2, -112.9, -111.9, -114.2, -115.4, -117.7)
lat <- c(41.3, 42.9, 42.4, 39.8, 37.6, 38.3, 37.6)
lonlat <- cbind(lon, lat)
lns <- spLines(lonlat, crs=crdref)
pols <- spPolygons(lonlat, crs=crdref)
plot(pts, axes=TRUE, las=1)
plot(pts, col='red', pch=20, cex=3, add=TRUE)
plot(pols, border='blue', lwd=3, add=TRUE)
i <- which(ptsdf$precip >= 50)
x <- ptsdf[i,]
plot(x, col='blue', pch=20, cex=3, add=TRUE)
y <- x[pols,]
plot(y, col='green', pch=20, cex=3, add=TRUE)
y$precip <- 50 # this only updates my subseted variable