當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。