如何才能获得相当准确的GPS位置 - 或至少更多的卫星?

时间:2017-01-08 03:30:39

标签: android gps

如何才能获得相当准确的GPS定位?

我正试图为我的" LG Leon LTE"创建一个简单的高尔夫应用程序。电话告诉我每次击中的距离。我的计划是仅在需要时使用GPS - 获取我的起点位置,然后得到我的终点位置,并计算它们之间的距离。我认为我不需要不断更新。

我编写了一个测试程序,它使用以下内容在起点和终点获得单个位置:

  locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, locationListener, null);

我的locationlistener包括:

longitude = loc.getLongitude(); 
latitude = loc.getLatitude();

我还包括:

accuracy = loc.getAccuracy();
numberOfSatellites = loc.getExtras().getInt("satellites");

计算我使用的两点之间的距离:

loc.distanceBetween(oldLatitude, oldLongitude, newLatitude, newLongitude, result);
distance = ((int) ((result[0] * 1.09361) + 0.5));  // meters to yards

我的应用的清单包括:

android.permission.ACCESS_FINE_LOCATION
android.hardware.location.gps

和我的手机"位置"功能打开,"位置模式"设置是       "仅限GPS"

希望提高准确性,我在起点和终点收集5个数据点,并用两种方式计算行进距离:

  1. 使用"平均值"的开始和结束位置,以及
  2. 使用" best"开始和结束位置(具有最低"准确度"值的那些)。
  3. 我的简单测试是在我家前面的一个住宅区进行的,房子只在街道的一侧,它们包括:

    1. 站在一个地方并显示行进的距离,
    2. 起跑20码并显示行进距离。 (请注意,在高尔夫球场上,我始终如一地步行100码,准确度在±2码范围内。
    3. 结果非常令人困惑。

      1. 站着不动产生"行走距离"结果范围从0到20码,通常在7-10码范围内。
      2. 起搏20码,结果范围为1-15码。 (我从来没有得到20码或更多。)
      3. 不平均"也不是最好的"计算始终显示出优势。有时"平均"产生更准确的结果,有时候"最好"是最好的。
      4. 卫星的数量永远不会超过9.有时它是1,有时它是0! (获得0卫星位置意味着什么?)我下载了#34; GPS必备"应用程序,当我站在我家门前时它显示20颗或更多卫星!
      5. 有人可以提出改善结果的方法 - 更多的卫星,更准确吗? (我的手机的高尔夫测距仪应用程序似乎更准确;他们是如何做到的?)

        谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎认为GPS具有无限的准确性。它没有。对于普通手机中的硬件类型,其精确到大约10-15米 - 称之为30-50英尺。如果没有真正准确的GPS设备,你不会比那更好,只需花费几百美元购买GPS。所以看到20码的摆动并没有超出规格,它是关于我期望的(记住准确性是一个圆,因此10-15米是半径 - 期望在两个极端之间20-30米)。你甚至会偶尔得到一些完全不合适的奇怪读物。

对于卫星 - 整个GPS系统有24颗卫星。如果您在家外看到20个,要么显示美国和欧盟网络,要么显示系统中的每个卫星。即使您可以同时收听两个网络,也无法一次达到20。 7足以获得你的位置。 9甚至更好。你不会得到比以往更多的东西,你没有视线。

也就是说,您可以使用过滤算法来尝试滤除噪音并获得更稳定的位置。查看卡尔曼滤波。