【问题标题】:R - filter coordinatesR - 过滤器坐标
【发布时间】:2013-07-08 10:32:58
【问题描述】:

我是 R 新手,我有一个简单的问题(我认为),但到目前为止我还没有找到解决方案。我有一组(长)二维(x,y)坐标 - 只是二维空间中的点,如下所示:

ID  x   y
1   1758.56 1179.26
2    775.67 1197.14
3   296.99  1211.13
4   774.72  1223.66
5   805.41  1235.51
6   440.67  1247.59
7   1302.02 1247.93
8   1450.4  1259.13
9   664.99  1265.9
10  2781.05 1291.12
etc.....

如何过滤特定区域(任何形状!)中的点(表格中的行)?如何过滤指定坐标子集中的点。如何指定想要/不需要的区域子集?以及如何将其放入 R 中? :) 提前谢谢!

【问题讨论】:

  • 这看起来像四个问题。你有任何代码来显示你到目前为止所做的尝试吗?

标签: r filter coordinates subset area


【解决方案1】:

要检查点是否在任何类型的形状内,请使用 splancs 包的 inpip 函数。

library(splancs)

set.seed(123)
my.shape <- matrix(runif(10), 5)
my.points <- data.frame(x=runif(500), y=runif(500))
my.points$in.shape <- 1:500 %in% inpip(my.points, my.shape)

plot(my.points[1:2], col=1 + my.points$in.shape)
polygon(my.shape)

要测试多个形状,请将它们放在一个列表中并使用lapply

set.seed(127)
multi.shapes <- lapply(1:3, function(...) matrix(runif(6), 3))
my.points$in.multi.shapes <- 1:500 %in%
    unlist(lapply(multi.shapes, function(p) inpip(my.points, p)))
plot(my.points[1:2], col=1 + my.points$in.multi.shapes)
for(p in multi.shapes) polygon(p)

【讨论】:

  • 好的,这个解决方案听起来很有希望!谢谢!
  • 我可以在 inpip 中放置多个多边形吗? my.points$in.shape
  • 您可以通过遍历形状列表来实现(参见新示例)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 2016-10-06
  • 2020-02-15
  • 2015-04-24
  • 2016-11-11
  • 2017-11-27
  • 1970-01-01
相关资源
最近更新 更多