【发布时间】:2020-07-10 22:47:02
【问题描述】:
我有一个大型数据集,其中包括我在 R 中分析的经度和纬度值。 例如
structure(list(S = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "L", class = "factor"),
No = 7:12, X.. = c(175L, 200L, 225L, 250L, 275L, 300L), X. = c(200L,
225L, 250L, 275L, 300L, 325L), Time = c(112836.789, 112837.291,
112837.793, 112838.295, 112838.797, 112839.299), Latidude = c(51.28769291,
51.28768926, 51.28768518, 51.28768096, 51.28767662, 51.28767237
), Longitude = c(0.868181943, 0.868182069, 0.868181418, 0.868179761,
0.868177937, 0.868176734), Altitude = c(61.177, 61.145, 61.104,
61.06, 61.05, 61.03), Bearing = c(201.3103, 201.3103, 201.3103,
201.3103, 201.3103, 201.3103), Tree = structure(c(1L, 1L,
1L, 1L, 1L, 1L), .Label = "Tree", class = "factor"), XSArea = c(1.4204362,
0.4883868, 0.5491678, 0.6008296, 0.5633923, 0.5917539), AveWidth = c(1.1840309,
0.5247761, 0.7371026, 1.2021244, 0.7507043, 0.3796109), AreaDensity = c(0.1989031,
3.6698774, 3.7629885, 2.8899686, 2.5806617, 1.5068812)), row.names = c(NA,6L), class = "data.frame")
我正在尝试将此数据集过滤到一个小区域,这是一个倾斜的矩形。我有一个起点和一个终点,加上方位角和矩形宽度。我不知道如何以某个角度创建边界框,或者然后通过这个边界框过滤大型数据集。 边界框的一个例子是:
bb<-cbind(c(0.86777,51.28743),c(0.86744,51.28690))
require(ggmaps)
bounding_box<-make_bbox(bb[1,],bb[2,])
但这只是形成一个从北到南的矩形,我需要它以一个角度
require(geosphere)
bearingRhumb(bb[,1], bb[,2])
200.5686 所以边界框矩形应该是那个角度
我尝试了一种不同的方法,创建了一个代表直线的经度和纬度向量。
vect_line<-gcIntermediate(bb[,1], bb[,2], n = 1000, addStartEnd = TRUE)
这条直线是使用 geosphere 包中的“gcIntermediate”从两个 GPS 点计算得出的。我计划然后通过这条直线过滤大型数据集,但我需要在直线上添加一个边距。因此,过滤器不会被限制为精确匹配向量中的每个值,而是通过向量中的值加减位进行过滤。加号或减号是我的 lon 和 lat 向量内每个 GPS 坐标周围的距离(例如 1 m)。 也许像模糊过滤器之类的东西?或者也许以某种方式扩展直线向量?
我真的对任何想法持开放态度,所以如果有人有更好的方法来做我想做的事,那也很好。例如创建一个边界框,它是一个有角度的矩形(我的直线的方位角),并使用边界框过滤我的大型数据集。
如果我需要为我的问题添加更多详细信息,请告诉我。
【问题讨论】:
-
你的边界框的参数(纬度-经度-轴承-宽度)等是什么?