简体   繁体   English

如何执行地理定位以获取尽可能精确的数据?

[英]How do I perform geolocation to get data as accurate and precise as possible?

we are developing a multiplatform (android and ios) application in react-native, which mainly deals with geolocation data, thus it higly depends on accuracy and precision of the data. 我们正在react-native中开发一个多平台(android和ios)应用程序,该应用程序主要处理地理位置数据,因此它在很大程度上取决于数据的准确性和准确性。 For instance, the application accumulates - reads and saves - the user's geolocation data every 5 seconds for ie 10 minutes (lets call it a track). 例如,应用程序每5秒(即10分钟)累积(读取并保存)用户的地理位置数据(称为跟踪)。 So, during the track, there are about 200 measurements saved. 因此,在跟踪过程中,大约保存了200个测量值。 Later on, we perform different computations based on the data accumulated during the track and visualise results to the user. 稍后,我们根据在跟踪过程中积累的数据执行不同的计算,并将结果可视化给用户。

While on iphone the altitude graph of data measured at physically (nearly) identical alltitude has rather linear/smooth characteristics, on android there tend to be +-5 meters peaks. 在iPhone上,以物理(几乎)相同高度测量的数据的高度图具有相当的线性/平滑特征,而在android上,则倾向于有+ -5米的峰值。 Lets say we want to measure total meters elevated during the track, thus to compute the sum of differences between succeeding measurements. 假设我们要测量轨道上升高的总米,从而计算后续测量之间的差异之和。 Now imagine, how much the mentioned imprecision influences the result - there might be 5 meters altitude change every 5 seconds. 现在想象一下,上述不精确度对结果有多大影响-每5秒可能会有5米的高度变化。 Although physically your total elevation is +-0 meters, the total elevation computed may differ drastically. 尽管从物理上讲您的总海拔是+ -0米,但计算出的总海拔可能会大不相同。

So, to eliminate the errors, for us, there are basically two ways: 因此,为消除错误,对于我们来说,基本上有两种方法:

  • to make the measurements more accurate and precise (this is natural) 使测量更加准确和精确(这是自然的)
  • to perform some sort of approximation and adjust the measurements accordingly (this is hacky) 执行某种近似并相应地调整测量值(这很麻烦)

The first way sounds much better, but we are aware of the specific device's hardware limitation - we simply cannot fix inaccurate hardware with our software. 第一种方法听起来好多了,但是我们知道特定设备的硬件限制-我们根本无法使用我们的软件修复不正确的硬件。 The problem is, even on the same device, other commercial apps (ie Runtastic) perform the measurement "better" (even offline). 问题是,即使在同一设备上,其他商业应用程序(即Runtastic)也可以“更好地”执行测量(甚至离线)。 That makes me think about the second (approximation) way. 那让我考虑第二种(近似)方法。 This way is rather hacky, and although it can lead to good-looking result in many cases, we think (but cannot prove) there is not such a prefrect approximation that will never corrupt the data "too much". 这种方式很容易出错,尽管在很多情况下可以带来漂亮的结果,但我们认为(但无法证明)这种预言近似不会使数据“过多”损坏。

So, our questions are: 因此,我们的问题是:

  1. What are the techniques to make every altitude measurement as accurate and precise as possible on android? 有什么技术可以在Android上使每次高度测量尽可能准确和精确? Which tools can be useful to accomplish that and how should we use them to get the best experience? 哪些工具可以帮助实现这一目标,我们应该如何使用它们来获得最佳体验? We can think of: 我们可以想到:
    • gps altitude GPS高度
    • nmea altitude 纳米海拔
    • barometer 晴雨表
    • online API to get altitude based on latitude and longitude 在线API可根据纬度和经度获取海拔高度
  2. Is it worth to apply some sort of approximation on the accumulated data? 在累积数据上应用某种近似值值得吗? If so, what aspects (or even better ideas) should we take into account? 如果是这样,我们应该考虑哪些方面(甚至更好的主意)? Is this technique common? 这种技术常见吗?
  3. Is there any different solution we did not mention? 有没有我们未提及的其他解决方案?

Thanks in advance! 提前致谢!

  1. GPS altitude is the best one. GPS高度是最好的。 but it depend on the gps chip. 但这取决于gps芯片。 There are some with high accurate(High Cost). 有一些具有较高的准确性(高成本)。 Most Phone GPS use online to get data also(For get good Hot start) 大多数手机GPS也在网上使用以获取数据(为了获得良好的热启动)

  2. To Smooth GPS data(Or any other) ,You can use Kalman Filter. 要平滑GPS数据(或其他任何数据),可以使用卡尔曼滤波器。 It complex and heavy but. 它复杂而沉重。 it can guarantee the result and avoid misleading data very well. 它可以保证结果并很好地避免误导数据。
    OR 要么
    you can omit misleading packets base on pervious ones (Mean Filter) - Simple, But should be coded preciously 您可以根据以前的数据忽略误导性数据包(均值过滤器)-简单,但应进行宝贵的编码

NOTE : I haven't use barometer. 注意:我没有使用气压计。 I gave my answer without it. 我没有给出答案。 Good luck 祝好运

If you have a barometer then it's accuracy can be a lot better for altitude than you get with a phone quality gps. 如果您有气压计,那么它的高度精度比手机质量gps更好。 It's why high end bike computers and gps tracking watches have barometers in them. 这就是为什么高端自行车计算机和GPS追踪手表中都装有气压计的原因。 This is especially true if your interested in relative altitude differences rather than the actual real altitude. 如果您对相对海拔差异而不是实际实际海拔高度感兴趣,则尤其如此。 To get a good actual altitude with the barometer you need some sensible calibration scheme and be aware of the effects of the weather over time. 为了使用气压计获得良好的实际海拔,您需要一些明智的校准方案,并注意天气随时间的影响。

Whatever your source of altitude data you should expect to do some form of post processing on the data to get something sensible. 无论您使用哪种海拔数据,都应该对数据进行某种形式的后处理,以获取明智的信息。 What the processing will need to be will depend on your situation and what what you consider important. 处理将取决于您的情况和您认为重要的内容。

For getting the total climb over a track you have 3 cases to consider. 要获得一条轨道的总爬升量,您需要考虑3种情况。 The easy case is simple going up or down a single consistent hill, you want to get the correct altitude difference value which is easy to check with a good map. 简单的情况是,在一个一致的山丘上向上或向下移动很简单,您想要获得正确的高度差值,并且可以通过一张好的地图轻松地进行检查。 At the other end going along a totally flat route you want to get zero climb again nice and easy to check but not so easy to achieve with typical hardware. 在另一端,沿着完全平坦的路线,您想要再次零爬升,既容易又容易检查,但使用典型硬件却不那么容易。 In the middle going over undulating terrain is far harder to check although possibly the far more interesting case for the user. 在中间,起伏的地形很难检查,尽管对于用户而言可能更有趣。 Getting this accurate is some form of trade off against the totally flat situation. 获得这种精确度是某种与完全平坦的情况之间的权衡取舍。 I have code doing this in my app and with the filtering I have I know that the totally flat will over read a bit clocking up 20-30m climb in an hour. 我在我的应用程序中有执行此操作的代码,通过过滤,我知道整个平面将在一个小时内超过20-30m的上升时间。 The undulating case will under count by about 1m for each undulation. 每次起伏,起伏的情况将少于1m。 The single big hill is generally pretty accurate given the known limitation of a barometric type system. 考虑到气压式系统的已知局限性,单个大山丘通常相当准确。 Gps only based is nothing like as good. 仅基于Gps的效果不佳。 Typically going back to an online lookup approach is more consistent for a gps based system but it depends on the quality of the lookup data and the type of terrain. 通常,对于基于gps的系统,返回在线查找方法更为一致,但这取决于查找数据的质量和地形的类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何有一个非常精确的地理位置? - How to have a very precise geolocation? 如何获得 Android 设备的最准确高度 - How do I get the most Accurate Altitude for Android Devices 如何使用 Android 获取最准确的时间? - How do I get the most accurate time with Android? 我如何获得准确的Wifi getLinkSpeed MBPS - How do i get accurate Wifi getLinkSpeed MBPS 如何在Android应用中以正确的时间发送数据? - How do I send data with accurate timing in Android app? 如何/应该实施卡尔曼滤波器以获得准确的加速度计数据? - How to/Should I implement a Kalman filter to get accurate Accelerometer data? 如何获得用户的经度和纬度? 我也想将其转换为尽可能精确的地址 - How to get Longitude and Latitude of user? I also wanted to convert that in an address as precise as possible 如何从Android地理位置应用程序向Postgresql数据库发送准确的时间戳信息? - How can I send accurate timestamp information from Android geolocation app to Postgresql database? 如何获得更准确的位置? - How can I get a more accurate location? 加速度计仅测量正值吗? 如果是,然后如何修改/过滤原始数据以获得准确的加速度? - Do accelerometers measure only positive values? if yes and then how to modify/filter the raw data to get accurate accelerations?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM