C# Windows Phone GeoCoordinateWatcher上相同物理位置的不同GPS位置读数

C# Windows Phone GeoCoordinateWatcher上相同物理位置的不同GPS位置读数,c#,windows-phone-7,geolocation,gps,geocoding,C#,Windows Phone 7,Geolocation,Gps,Geocoding,我得到了Windows Phone GeoWatcher的坐标,如下所示 private GeoCoordinateWatcher _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); _watcher.MovementThreshold = 2; // Threshold Value _watcher.PositionChanged += Watcher_PositionChanged; //R

我得到了Windows Phone GeoWatcher的坐标,如下所示

     private GeoCoordinateWatcher _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High);
     _watcher.MovementThreshold = 2; // Threshold Value
    _watcher.PositionChanged += Watcher_PositionChanged; //Registering Watcher Position Change Event
     _watcher.Start(); // Starting Watcher

//Watcher position Change Event
    private void Watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
    {
      var coord = new GeoCoordinate(Convert.ToDouble(e.Position.Location.Latitude.ToString("0.00000").Replace(",", ".")), Convert.ToDouble(e.Position.Location.Longitude.ToString("0.00000").Replace(",", ".")));
}

如果我不改变我的位置,我怎么能在距离上获得精确的距离呢?它应该不会给我不同的坐标。

这显示了一个非常糟糕的GPS设备。 如果你跳了570米,GPS信号就永远不会出现这种情况。 确保位置只能从GPS获取(在android和ios上,如果你不在意,位置也可能来自wifi位置服务的cell Tower)。 还要检查第一个位置的时间戳,并将其与系统时间进行比较,以确保它不是缓存的旧位置

当你站着的时候,GPS的坐标移动到30米是正常的。 因此,一些智能手机制造商启用了“静止”过滤器。 似乎您必须编写自己的“静止”过滤器

最简单的方法是读取位置。getSpeed():如果超过5km/h,则取该位置,否则忽略它。(这适用于车辆,但不适用于步行)


同样重要的是,坐在靠近窗户的桌子上,你的Gps信号可能最差。最好出去测试一下。

这显示了一个非常糟糕的GPS设备。 如果你跳了570米,GPS信号就永远不会出现这种情况。 确保位置只能从GPS获取(在android和ios上,如果你不在意,位置也可能来自wifi位置服务的cell Tower)。 还要检查第一个位置的时间戳,并将其与系统时间进行比较,以确保它不是缓存的旧位置

当你站着的时候,GPS的坐标移动到30米是正常的。 因此,一些智能手机制造商启用了“静止”过滤器。 似乎您必须编写自己的“静止”过滤器

最简单的方法是读取位置。getSpeed():如果超过5km/h,则取该位置,否则忽略它。(这适用于车辆,但不适用于步行)


同样重要的是,坐在靠近窗户的桌子上,你的Gps信号可能最差。最好出去测试一下。

我认为你的阈值设置是一个“危险信号”。你的临界值为2意味着“除非我从上一读数移动超过2米,否则不要向我报告。”这就是你所看到的。阈值设置不是问题或解决方案

正如建议的那样,您可能无法仅基于GPS获取位置,要确保仅使用GPS,您需要将您的属性设置为“高”

如果这个问题仍然存在(而且它将继续存在,但希望程度会降低),那么我建议这是关于GPS定位的质量的问题。也许您应该在PostionChanged事件参数中检查地理坐标的大小和值

这些的高值表示“差”GPS定位(例如,10表示坐标距离给定值+/-10米)。也许手机只能看到3颗卫星,或者它看到的卫星都在同一片天空中。所有这些都会降低定位精度。如果你想以高精度跟踪,你应该考虑拒绝价值,满足你的需要。 我刚刚从我的一个GPS感知WP8应用程序(在Glory中)捕获了日志,并获得了以下原始数据:

time 05/02/2014 18:38:05 +00:00 spd 0.75 coords 53.7589650973678, -0.365797486156225 [err 21, 48]
time 05/02/2014 18:38:07 +00:00 spd 0.25 coords 53.7589640915394, -0.36607475951314 [err 10, 24]
time 05/02/2014 18:38:08 +00:00 spd 0 coords 53.7589303962886, -0.366103509441018 [err 10, 24]
time 05/02/2014 18:38:09 +00:00 spd 0 coords 53.7589660193771, -0.365918939933181 [err 11, 24]
time 05/02/2014 18:38:10 +00:00 spd 0 coords 53.7590100243688, -0.365963699296117 [err 16, 32]

正如你所见,在静止状态下,我的精度在10-30米范围内,速度在0-0.75米范围内。使用此选项可以过滤掉只是GPS噪音的位置更新。

我认为您的阈值设置是一种“误导”。你的临界值为2意味着“除非我从上一读数移动超过2米,否则不要向我报告。”这就是你所看到的。阈值设置不是问题或解决方案

正如建议的那样,您可能无法仅基于GPS获取位置,要确保仅使用GPS,您需要将您的属性设置为“高”

如果这个问题仍然存在(而且它将继续存在,但希望程度会降低),那么我建议这是关于GPS定位的质量的问题。也许您应该在PostionChanged事件参数中检查地理坐标的大小和值

这些的高值表示“差”GPS定位(例如,10表示坐标距离给定值+/-10米)。也许手机只能看到3颗卫星,或者它看到的卫星都在同一片天空中。所有这些都会降低定位精度。如果你想以高精度跟踪,你应该考虑拒绝价值,满足你的需要。 我刚刚从我的一个GPS感知WP8应用程序(在Glory中)捕获了日志,并获得了以下原始数据:

time 05/02/2014 18:38:05 +00:00 spd 0.75 coords 53.7589650973678, -0.365797486156225 [err 21, 48]
time 05/02/2014 18:38:07 +00:00 spd 0.25 coords 53.7589640915394, -0.36607475951314 [err 10, 24]
time 05/02/2014 18:38:08 +00:00 spd 0 coords 53.7589303962886, -0.366103509441018 [err 10, 24]
time 05/02/2014 18:38:09 +00:00 spd 0 coords 53.7589660193771, -0.365918939933181 [err 11, 24]
time 05/02/2014 18:38:10 +00:00 spd 0 coords 53.7590100243688, -0.365963699296117 [err 16, 32]

正如你所见,在静止状态下,我的精度在10-30米范围内,速度在0-0.75米范围内。使用此选项可过滤掉仅是GPS噪音的位置更新。

它总是发生,还是仅在开始时发生?我认为这是可能的,因为传感器没有得到非常准确的数据。@anderZubi:这种情况经常发生。假设我观察了10-15分钟的位置,我得到了很多读数,有些返回相同的lat-long,但有些读数与我上面的数据类似。有时读数可能不太准确。这可能是因为传感器从较少的卫星、附近的建筑物、天气状况中获取信号……我在手机上注意到了同样的问题。你最后是怎么解决的?嗨,我需要增加我的阈值。这取决于你所处的位置。您可以从GPS获取位置信息。要么你是从手机发射塔得到的,要么你的手机GPS有多准确。所以有很多因素,它总是发生,还是只发生在一开始?我认为这是可能的,因为传感器没有得到非常准确的数据。@anderZubi:这种情况经常发生。假设我观察了10-15分钟的位置,我得到了很多读数,有些返回相同的lat-long,但有些读数与我上面的数据类似。有时读数可能不太准确。这可能是因为传感器从较少的卫星获取信号,