Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
空间多边形数据框架中重叠多边形属性值的R求和_R_Polygon_Geospatial_R Raster - Fatal编程技术网

空间多边形数据框架中重叠多边形属性值的R求和

空间多边形数据框架中重叠多边形属性值的R求和,r,polygon,geospatial,r-raster,R,Polygon,Geospatial,R Raster,我有一个形状文件,其中包含许多部分重叠的空间多边形。这些多边形属于田间杀菌剂施用,每个多边形都有一个相关的施用率属性 我想得到的是,在考虑重叠区域的情况下更正应用的贴图,这意味着如果两个(或更多)多边形重叠,则应将速率相加并合并 以下示例代码创建了一个空间多边形数据框,简化了问题: library(raster) library(sp) p<-SpatialPolygons(list(Polygons(list(Polygon(cbind(c(1,4,4,3,3,1,1),c(1,1,3

我有一个形状文件,其中包含许多部分重叠的空间多边形。这些多边形属于田间杀菌剂施用,每个多边形都有一个相关的施用率属性

我想得到的是,在考虑重叠区域的情况下更正应用的贴图,这意味着如果两个(或更多)多边形重叠,则应将速率相加并合并

以下示例代码创建了一个空间多边形数据框,简化了问题:

library(raster)
library(sp)

p<-SpatialPolygons(list(Polygons(list(Polygon(cbind(c(1,4,4,3,3,1,1),c(1,1,3,3,4,4,1)),hole = F)), "1_ "),
                    Polygons(list(Polygon(cbind(c(3,4,4,3,3),c(3,3,4,4,3)),hole = F)), "1_2"),
                    Polygons(list(Polygon(cbind(c(3,4,4,3,3),c(3,3,4,4,3)),hole = F)), "2_1"),
                    Polygons(list(Polygon(cbind(c(4,4,5,5,3,3,4),c(4,3,3,5,5,4,4)),hole = F)),"2_")))

pid <- sapply(slot(p, "polygons"), function(x) slot(x, "ID"))
p.df <- data.frame( ID=1:length(p), row.names = pid) 
p <- SpatialPolygonsDataFrame(p, p.df)
p$Rate <- c(100, 100, 100, 100)
crs(p) <- "+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"
plot(p)
库(光栅)
图书馆(sp)

p我认为你所追求的确实是
union
。它合并并标识重叠的多边形。有了这些,你就可以算出价格了

# example data
library(raster)
p1 <- cbind(c(1,4,4,1),c(1,1,4,4))
p2 <- cbind(c(3,5,5,3),c(3,3,5,5))
p <- spPolygons(p1, p2, crs="+proj=longlat +datum=WGS84", 
                        attr=data.frame(ID=1:2, Rate =c(50,100)))

#data.frame(p)
#  ID Rate
#1  1   50
#2  2  100
#示例数据
图书馆(光栅)

p1我已经更改了代码,以便它现在可以处理您的数据。您可以尝试开发版本:install.packages(“raster”,repos=“)这修复了警告,谢谢!不幸的是,一些错误仍然存在。请查找上面的详细信息。此外,我使用:install.packages(“raster”,repos=“)获得了开发版本,因为您的命令缺少http部分。示例2对我来说很好。也许您需要更新rgeos
?我很乐意看其他案例,但不是通过那个讨厌的文件共享。如果你愿意,你可以给我发电子邮件。我需要更新的不是
rgeos
,而是
sp
软件包。所以非常感谢你的帮助!:)还有一句话:我发布的将光栅包更新为开发版本的命令也不正确。以下操作正在运行:install.packages(“光栅”,repos=“)
Error in if (is.numeric(i) && i < 0) { : 
  missing value where TRUE/FALSE needed
# example data
library(raster)
p1 <- cbind(c(1,4,4,1),c(1,1,4,4))
p2 <- cbind(c(3,5,5,3),c(3,3,5,5))
p <- spPolygons(p1, p2, crs="+proj=longlat +datum=WGS84", 
                        attr=data.frame(ID=1:2, Rate =c(50,100)))

#data.frame(p)
#  ID Rate
#1  1   50
#2  2  100
x <- union(p)
ud <- data.frame(x)
ud$count <- NULL
udRate <- t( t(ud) * p$Rate )
x$Rate <- rowSums(udRate)
data.frame(x)

#  ID.1 ID.2 count Rate
#1    1    0     1   50
#2    0    1     1  100
#3    1    1     2  150