- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对 GPS 数据有疑问。我的数据看起来像
问题是,我想从那个数据中提取信息到value3,我想用“steady”和“moving”填充value3。
根据纬度和经度的值稳定和移动,但我仍然感到困惑,因为当我试图绘制时。
例子:
35.1754255,126.9130674
35.1754281,126.9130184
35.1754225,126.9130536
35.1807405,126.9055772
绘图结果:
值 1 ~ 3 正在移动,但只是很少移动,所以可能 value3 将填充“稳定”、“短移动”、“长移动”,但我仍然不知道阈值定义哪个是短的,哪个是长的。
我的第二个问题是如何使用 R 代码生成 value3。其实我可以比较下一个值和当前值,如果不同则表示移动,如果不是则表示稳定,但我仍然对短移动和长移动感到困惑。
dput() 从我的数据中输出
> dput(loc)
structure(list(time = c("2014-06-30 08:26:36", "2014-06-30 08:31:30",
"2014-06-30 08:36:30", "2014-06-30 08:41:30", "2014-06-30 08:46:30",
"2014-06-30 08:51:30", "2014-06-30 08:56:31", "2014-06-30 09:01:30",
"2014-06-30 09:06:30", "2014-06-30 09:11:30", "2014-06-30 09:16:30",
"2014-06-30 09:21:30", "2014-06-30 09:26:30", "2014-06-30 09:31:30",
"2014-06-30 09:36:30", "2014-06-30 09:41:30", "2014-06-30 09:46:30",
"2014-06-30 09:51:52", "2014-06-30 09:56:30", "2014-06-30 10:01:30",
"2014-06-30 10:06:53", "2014-06-30 10:11:30", "2014-06-30 10:16:52",
"2014-06-30 10:21:30", "2014-06-30 10:26:30", "2014-06-30 10:31:30",
"2014-06-30 10:36:51", "2014-06-30 10:41:30", "2014-06-30 10:46:54",
"2014-06-30 10:51:51", "2014-06-30 10:57:30", "2014-06-30 11:01:51",
"2014-06-30 11:06:30", "2014-06-30 11:11:51", "2014-06-30 11:16:30",
"2014-06-30 11:21:51", "2014-06-30 11:26:30", "2014-06-30 11:31:30",
"2014-06-30 11:36:52", "2014-06-30 11:41:30", "2014-06-30 11:46:51",
"2014-06-30 11:51:30", "2014-06-30 11:56:53", "2014-06-30 12:01:32",
"2014-06-30 12:07:30", "2014-06-30 12:11:51", "2014-06-30 12:16:33",
"2014-06-30 12:21:30", "2014-06-30 12:26:30", "2014-06-30 12:31:51",
"2014-06-30 12:36:30", "2014-06-30 12:41:36", "2014-06-30 12:46:30",
"2014-06-30 12:52:10", "2014-06-30 12:56:30", "2014-06-30 13:01:30",
"2014-06-30 13:06:30", "2014-06-30 13:11:30", "2014-06-30 13:16:30",
"2014-06-30 13:21:30", "2014-06-30 13:26:30", "2014-06-30 13:31:30",
"2014-06-30 13:36:30", "2014-06-30 13:41:30", "2014-06-30 13:46:30",
"2014-06-30 13:51:30", "2014-06-30 13:56:30", "2014-06-30 14:01:30",
"2014-06-30 14:06:55", "2014-06-30 14:11:19", "2014-06-30 14:16:19",
"2014-06-30 14:21:19", "2014-06-30 14:26:19", "2014-06-30 14:31:19",
"2014-06-30 14:36:19", "2014-06-30 14:41:19", "2014-06-30 14:46:19",
"2014-06-30 14:51:19", "2014-06-30 14:56:19", "2014-06-30 15:01:19",
"2014-06-30 15:06:19", "2014-06-30 15:11:19", "2014-06-30 15:16:19",
"2014-06-30 15:21:19", "2014-06-30 15:26:19", "2014-06-30 15:31:19",
"2014-06-30 15:36:19", "2014-06-30 15:41:19", "2014-06-30 15:46:19",
"2014-06-30 15:51:19", "2014-06-30 15:56:19", "2014-06-30 16:01:19",
"2014-06-30 16:06:19", "2014-06-30 16:11:19", "2014-06-30 16:16:20",
"2014-06-30 16:21:19", "2014-06-30 16:26:19", "2014-06-30 16:31:19",
"2014-06-30 16:36:19", "2014-06-30 16:41:19"), type = c("location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location", "location", "location", "location",
"location", "location", "location"), value1 = c("35.1754255",
"35.1754281", "35.1754225", "35.1753982", "35.1753991", "35.1753997",
"35.1754333", "35.1754143", "35.1754126", "35.1754142", "35.1753987",
"35.1754178", "35.1754176", "35.1753914", "35.1754066", "35.1753833",
"35.1753883", "35.174465", "35.174465", "35.1735813", "35.1744781",
"35.1735813", "35.174502", "35.1749091", "35.1749091", "35.1749091",
"35.1744991", "35.1749091", "35.1751931", "35.1748972", "35.1755879",
"35.1759928", "35.1759928", "35.1763946", "35.1763946", "35.1763882",
"35.1763882", "35.1762131", "35.1760547", "35.1760547", "35.1774352",
"35.1774352", "35.1785821", "35.1785821", "35.1773562", "35.1807058",
"35.1807058", "35.1813436", "35.1802903", "35.1807615", "35.1807615",
"35.1807405", "35.1807405", "35.1805536", "35.1805536", "35.1808169",
"35.1797636", "35.1836812", "35.1836812", "35.1897643", "35.1898214",
"35.1897615", "35.1897765", "35.1897157", "35.1896921", "35.1897299",
"35.18975", "35.1897503", "35.1897673", "35.1897539", "35.1897932",
"35.1897702", "35.1897627", "35.189763", "35.1897438", "35.1898021",
"35.1897853", "35.1897405", "35.1897803", "35.1897844", "35.1897624",
"35.1897769", "35.1897656", "35.1897265", "35.1897488", "35.1897599",
"35.1897477", "35.1897951", "35.189759", "35.1897624", "35.1897692",
"35.1898468", "35.1897727", "35.1897624", "35.1897958", "35.189817",
"35.1897391", "35.1897317", "35.189745", "35.1897624"), value2 = c("126.9130674",
"126.9130184", "126.9130536", "126.9130597", "126.9130549", "126.9130598",
"126.9130484", "126.9130638", "126.9130687", "126.9130553", "126.913074",
"126.9130686", "126.9130779", "126.9130496", "126.9130196", "126.9130507",
"126.9130474", "126.9135807", "126.9135807", "126.9119189", "126.9137426",
"126.9119189", "126.9137499", "126.9124954", "126.9124954", "126.9124954",
"126.9137861", "126.9124954", "126.9142743", "126.9118689", "126.912267",
"126.9131502", "126.9131502", "126.9130495", "126.9130495", "126.9131069",
"126.9131069", "126.911819", "126.9121906", "126.9121906", "126.9123621",
"126.9123621", "126.9093961", "126.9093961", "126.9041179", "126.9055765",
"126.9055765", "126.904599", "126.9054961", "126.905568", "126.905568",
"126.9055772", "126.9055772", "126.9052718", "126.9052718", "126.9050475",
"126.9059447", "126.9052348", "126.9052348", "126.9063181", "126.9062802",
"126.9063452", "126.9064237", "126.9065031", "126.9065168", "126.9063599",
"126.9064195", "126.9064469", "126.9063441", "126.9063828", "126.9064423",
"126.9063459", "126.9063602", "126.9063096", "126.9063355", "126.9063742",
"126.9063253", "126.9063123", "126.9063434", "126.9063729", "126.906397",
"126.9063288", "126.906282", "126.9062903", "126.9063502", "126.9063432",
"126.9063004", "126.9063742", "126.9063343", "126.9063969", "126.9062847",
"126.9063212", "126.9063034", "126.9063969", "126.9063237", "126.906375",
"126.9063572", "126.9063514", "126.9062548", "126.906397"), value3 = c("",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
"", "", "")), .Names = c("time", "type", "value1", "value2",
"value3"), row.names = c(NA, 100L), class = "data.frame")
最佳答案
这是我的尝试。正如我在上面的评论中提到的,您想自己定义“短线运动”和“长线运动”。例如,在 R 中,您可以使用 dplyr
包中的 lag()
并计算移动。我可能错了,但是 1 度大约是 111.32 公里。所以 0.0001 度大约是 11 米。在这次尝试中,如果这个人在经纬度上移动超过11米且小于55米,我认为这个移动是“小移动”。任何更长的运动都被认为是“长运动”。由于我不是gis专业人士,所以我的做法可能不合适。但是,我希望这能让您对自己想要做什么有所了解。
附言如果您有大量数据,此 ifelse()
会减慢处理速度。您想考虑使用 data.table
包。
# Note: 1 degree = 111.32 km
#0.0001 degree 11.1132 m
# Convert character to numeric
mydf$value1 <- as.numeric(mydf$value1)
mydf$value2 <- as.numeric(mydf$value2)
library(dplyr)
select(mydf, -type, -value3) %>%
mutate(movement = ifelse(value1 == lag(value1) & value2 == lag(value2), "same",
ifelse(between(abs(value1 - lag(value1)), 0.0001, 0.0005) == TRUE &
between(abs(value2 - lag(value2)), 0.0001, 0.0005) == TRUE, "little", "long")))
# A part of the outcome
#33 2014-06-30 11:06:30 35.175993 126.91315 same
#34 2014-06-30 11:11:51 35.176395 126.91305 little
#35 2014-06-30 11:16:30 35.176395 126.91305 same
#36 2014-06-30 11:21:51 35.176388 126.91311 long
#37 2014-06-30 11:26:30 35.176388 126.91311 same
#38 2014-06-30 11:31:30 35.176213 126.91182 long
#39 2014-06-30 11:36:52 35.176055 126.91219 little
#40 2014-06-30 11:41:30 35.176055 126.91219 same
#41 2014-06-30 11:46:51 35.177435 126.91236 long
#42 2014-06-30 11:51:30 35.177435 126.91236 same
关于android - 提取GPS信息到 "steady"和 "Moving",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28248607/
我有一个 GSM/GPS 单元连接到一个微 Controller ,它们之间的通信工作正常。我能够获取 GPS 并将其发送到微 Controller ,但有时设备在建筑物内,所以我无法真正获取当前的
它显示,错误指出“没有符合条件的应用安装设备” 设备规范如下, 型号:联想A369i Android 操作系统版本:4.2.2 我在 android mainfest 文件中执行以下权限
我有一个 Adafruit FONA 3G/GPS 模块 ( American Version )。我已经可以使用蜂窝功能,但 GPS 功能却遇到了困难。我尝试过无源和有源天线。 这是 SIM5320
今天在将我的应用程序上传到市场时,我发现它仅适用于具有 GPS 的设备,因此不包括某些平板电脑。 我的应用程序中的 GPS 是可选的。是否可以为有和没有 GPS 的设备发布一个应用程序,或者我需要制作
在 Monodroid 中,我正在尝试访问 GPS 服务。我只需要一个位置对象。 这一行报错: _locationManager.RequestLocationUpdates(LocationMana
我是 GPS 世界的新手。我需要知道如何使用 DGPS 进行后处理。我在网上找到了关于 DGPS、后处理等的定义,但是,找不到关于如何实际进行 DGPS 后处理的明确步骤。在搜索提供商时,我发现 CO
我有一系列 gps 值,每个值包含:timestamp, latitude, longitude, n_sats, gps_speed, gps_direction, ... ( NMEA data
抱歉,如果这是错误的“堆栈”。我找不到更合适的。 我为我的狗买了一个 GPS 追踪器,它附带订阅、一张 SIM 卡和一个开发不佳的应用程序。 我已取消订阅并想使用该设备将位置信息发送到我自己的服务器。
有没有一种在线方法可以用来获取 Google map 上两点之间路线上的所有 gps 点?即,如果我给出起点和终点,我需要获取该特定路线上的所有 GPS 点。 最佳答案 除了数据的所有者之外,每个人都
我正在尝试从 GPS 跟踪设备转换 GPS 数据。该公司提供了协议(protocol)手册,但不清楚。我能够从我从设备收到的数据包中解码的大部分数据。通信是通过 TCP/IP 进行的。我在解码经度和纬
我想从 GPS 坐标中获取城市名称。我可以使用 Google API 获取 GPS 点的详细信息 http://maps.googleapis.com/maps/api/geocode/output?
我做了一个 .gpx 文件来模拟 IOS 模拟器上的路线,现在我想模拟水平精度我该怎么做? 以下是我的 .gpx 文件的摘录: //how add horizontal accuracy
我有两个 GPS 坐标 例如(Lat1, Long1) 和 (Lat2,Long2) 谁能帮我找到这两点之间的角度。 值应为 0-360 度。 最佳答案 取自 this以前的SO帖子: float d
我正在为一个小类项目寻找 GPS。我们想要尽可能小的 GPS,我们真正需要它做的就是在我们轮询时为我们提供经度和纬度值。 我尝试查看 sparkfun,但由于我们之前没有真正使用过这种类型的硬件,因此
我正在处理 GPS 数据,每秒获取值并在 map 上显示当前位置。问题在于,有时(特别是当精度较低时)这些值变化很大,使得当前位置在 map 中的远距离点之间“跳跃”。 我想知道一些足够简单的方法来避
我正在创建一个请求用户位置的 BREW 应用程序。 如果手机无法获取位置,我想显示错误。 在确定手机不太可能获得 GPS 定位之前,我应该等待回调多久? 最佳答案 当需要冷启动时,接收器必须下载全套星
我有一辆安装了跟踪器的车辆。该设备具有 GPS 系统、3 轴加速度计、3 轴磁力计和陀螺仪。是否可以通过车辆在斜坡或山坡上向后滚动的程度来确定。使用 gps 角度不是一种选择,因为为短距离向后移动提供
我们计划编写一个软件,每 5 秒左右跟踪一次汽车的 GPS 位置、GPS 信号强度、加速度计(X、Y、Z)和陀螺仪(X、Y、Z)。并将数据发送到服务器进行后期处理。服务器将确定哪些道路上有汽车。所以这
这是我的问题:智能手机会向我的服务器发送一些 gps 坐标(纬度、经度、高度),我必须将这些坐标与存储在数据库中的地址进行比较,以查看智能手机和服务器之间的距离地址。为了进行实际比较,我还需要获取此地
HTML5 浏览器可以检索计算机的 gps 位置。 http://diveintohtml5.ep.io/geolocation.html 我想创建一个伪造 GPS 设备的应用程序,但我无法在任何地方
我是一名优秀的程序员,十分优秀!