有没有一种功能可以根据 GPS 坐标的起点和终点之间的距离来隔离数据行?

问题描述 投票:0回答:1

新晋生态学家在这里学习如何使用 R studio 进行数据分析。我正在研究 GYE 中的野牛运动,以显示它们穿过高速公路的位置 - 数据从旧的自制软件传输后存储在 google Looker Studio 上。有两种类型的目击 - 静态目击和带有开始和停止显示运动的目击。

我需要将具有开始和停止数据的行与 R 中的静态行隔离开来,但问题是静态行和开始停止行都有开始和结束线串路径数据(例如:“LINESTRING(-111.097913 44.776748, - 111.097813 44.776748)" ) - 静态行在经度上的差异可以忽略不计,仅为 0.0001°,而显示实际移动的行则要大得多。静态行的纬度是一致的。

是否有一个函数可以根据两个线串经度数据点之间的差异来分离行数据?我是 R 的新手,正在通过课程/练习来培养我的技能,所以我不确定从哪里开始实现这样的功能,但这似乎是可能的。非常感谢任何帮助!

我尝试使用subset()基于“LINESTRING”列创建具有串联信息的向量,但我找不到基于这种规则来隔离数据的方法。

r gps subset latitude-longitude
1个回答
0
投票

我会在开始/停止点之间使用

sf::st_distance()
或在线串本身上使用
sf::st_length()
,例如:

data.frame(
  geom = c("LINESTRING(-111.097913 44.776748, -111.097813 44.776748)", 
           "LINESTRING(-111.097913 44.776748, -111.097813 44.776848)", 
           "LINESTRING(-111.097913 44.776748, -111.097813 44.716748)"),
  n = c(1, 2, 3)
  ) |>
  sf::st_as_sf(wkt = "geom", crs = "EPSG:4326") |>
  dplyr::mutate(length = sf::st_length(geom))
#> Simple feature collection with 3 features and 2 fields
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: -111.0979 ymin: 44.71675 xmax: -111.0978 ymax: 44.77685
#> Geodetic CRS:  WGS 84
#>   n                           geom          length
#> 1 1 LINESTRING (-111.0979 44.77...    7.893258 [m]
#> 2 2 LINESTRING (-111.0979 44.77...   13.636236 [m]
#> 3 3 LINESTRING (-111.0979 44.77... 6671.710745 [m]

并过滤掉那些“静态”,例如:

[...]
  dplyr::mutate(length = sf::st_length(geom)) |>
  subset(length >= units::as_units(15, "m"))

#> Simple feature collection with 1 feature and 2 fields
#> Geometry type: LINESTRING
#> Dimension:     XY
#> Bounding box:  xmin: -111.0979 ymin: 44.71675 xmax: -111.0978 ymax: 44.77675
#> Geodetic CRS:  WGS 84
#>   n                           geom       length
#> 3 3 LINESTRING (-111.0979 44.77... 6671.711 [m]

创建于 2024-03-04,使用 reprex v2.1.0

© www.soinside.com 2019 - 2024. All rights reserved.