【发布时间】:2019-07-25 11:59:57
【问题描述】:
我有一个简单的特征数据框,其中包含起点坐标。从这个起点开始,我需要找到新的、未知的、坐标,它们在起点以北 1 公里,以北 1 公里 + 以东 1 公里。
然后我需要创建从第一个点到第二个点以及第二个到第三个点的线段。
我想通过改变地理列来做到这一点。
例子:
library(sf)
library(dplyr)
SF_df <-
tibble(case = c("A", "B", "C"),
LAT = 523456, LONG = 652348) %>%
st_as_sf(coords = c("LONG", "LAT"), crs = "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs")
#make new points
SF_df %>%
mutate(geometry = ifelse(case == "A", geometry,
ifelse(case == "B", geometry+c(0,1000),
geometry + c(1000,1000))))
我试过了
SF_df %>%
mutate(geometry = ifelse(case == "A", st_linestring(geometry, geometry+c(0,1000)),
ifelse(case == "B", st_linestring(geometry+c(0,1000), geometry+c(1000,1000)), NA)))
这不起作用,因为st_linestring需要一个数值矩阵。我还尝试使用as.numeric(as.coordinates( x)) 转换点,这也不起作用。
结果应该是一个 sf 数据帧,每个点一行 + 点之间的每个线串 1 行。
任何指针将不胜感激!
【问题讨论】:
-
您是否要以 2 行结尾?
-
是的。 @www 的答案正是我要寻找的。span>