当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R in.out 一组点中的哪一个位于多边形定义的区域内


R语言 in.out 位于 mgcv 包(package)。

说明

测试一组点中的每个点是否位于由一个或多个(可能是嵌套的)多边形定义的区域内。如果点位于奇数个多边形内部,则算作‘inside’。

用法

in.out(bnd,x)

参数

bnd

两列矩阵,其行定义定义区域边界的多边形的顶点。不同的多边形应由 NA 行分隔,并且假定多边形是闭合的。或者可以是一个列表,其中 bnd[[i]][[1]]bnd[[i]][[2]] 定义第 i 个边界循环。

x

两列矩阵。每行都是一个点,用于测试是否包含在 bnd 定义的区域中。也可以是 2 向量,定义单个点。

细节

该算法的工作原理是对边界交叉进行计数(使用编译的 C 代码)。

长度为 nrow(x) 的逻辑向量。如果x 的相应行位于边界内,则TRUE,否则为FALSE

例子

library(mgcv)
data(columb.polys)
bnd <- columb.polys[[2]]
plot(bnd,type="n")
polygon(bnd)
x <- seq(7.9,8.7,length=20)
y <- seq(13.7,14.3,length=20)
gr <- as.matrix(expand.grid(x,y))
inside <- in.out(bnd,gr)
points(gr,col=as.numeric(inside)+1)

作者

Simon N. Wood simon.wood@r-project.org

参考

https://www.maths.ed.ac.uk/~swood34/

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Which of a set of points lie within a polygon defined region。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。