假设有一条长度为len
,类为SpatialLines
的线段。这条特定的线段从左上角开始。
library(sp)
x <- structure(list(x = c(-7.23437435517476, 6.35937810318614, -5.86718660792582,
7.96094089282062), y = c(7.08139459814975, 6.8633712983227, -7.61337581019376,
-6.2180266913006)), .Names = c("x", "y"))
xline <- SpatialLines(list(Lines(Line(x), ID = 1)))
#len <- LineLength(as.matrix(data.frame(x)))
len <- LineLength(as.matrix(data.frame(coordinates(xline))))
plot(0,0, xlim = c(-10, 10), ylim = c(-10, 10), type = "n")
lines(xline)
我想要在这条直线上找到一个距离起点findme
个单位长度的点。例如,如果我想要找到距离起点10个单位长度的点,我会得到一个接近第一段和第二段之间节点的点。欢迎您提供更为健壮的解决方案。
我已经试过使用spsample
方法(见下文),但这种方法不太可靠,并且对于位于该直线后半部分的点无法正常工作。
# very approximate method, not very suitable
findme <- 11 # 11, 12 and 13 give same result
segs <- 1/(findme/xline.length)
xsam <- spsample(x = xline, n = segs, type = "regular", offset = 0)
points(xsam)
xline.length
是什么?另外,你是想要一个沿着该直线路径寻找findme
单位的点吗?还是指鸟瞰视角下findme
单位的距离? - Josh O'Brienxline.length
是xline
的总长度(我放弃了这个方法,并忘记提供xline.length
)。我想要那条特定线上的点。 - Roman Luštrik