【问题标题】:How can I convert meters to GPS coordinates and find GPS coordinates around me?如何将米转换为 GPS 坐标并找到我周围的 GPS 坐标?
【发布时间】:2014-05-06 21:01:41
【问题描述】:

我有一个 SQLITE 数据库,它将地点的坐标存储为浮点数。

PLACE TABLE
--------------------------------
placeID  | latitude | longitude
--------------------------------
1        | XX.XXXXXX| YY.YYYYYY
2        | X1.XXXXXX| Y1.YYYYYY

假设我站在具有特定坐标(纬度和经度)的地方。

我想找到我周围 1 公里(一圈)的所有地方。

1) 如何将米转换为坐标?

2) 我如何从数据库中获取距离我 1 公里以外的所有地方? 因为我想将米添加到坐标中。

这可能吗?

谢谢,提前

【问题讨论】:

  • 数据库中有多少条目
  • 很多条目大约300个
  • 300 什么都不是,只需在应用程序启动时将所有条目读入主内存(例如 in , List, Array )。等等。然后进行蛮力搜索。

标签: sqlite gps coordinates


【解决方案1】:

只需使用 API 的 distanceTo() 或 distanceBetween(lat1, lon1, lat2, lon2) 函数即可。
如果你没有这样的方法,那就搜索haversine公式吧。

如果您与对象的距离为

在代码中:

double radius = 1000; // 1 km
double distanceMeters = haversineDistance(mylat, mylon, otherLat, otherLon);
if (distanceeMeters <= radius) {
  // other location (otherLat, otherfLOn) is inside of radius of 1km
}

【讨论】:

  • 感谢回复,我的问题在double distanceMeters = haversineDistance(mylat, mylon, otherLat, otherLon);。我必须获取数据库中的所有坐标才能检查距离是否
  • otherLat 和 otherLon 来自数据库。所以,我必须检查数据库中的所有点,这对我来说不是最好的解决方案......我想获得小于 1000m 点的 LAT 和 LON
  • 如果要检查的位置超过 10.000 个,则需要地理空间索引,例如四叉树、kd 树或 R-树。 Postgres DB就有这样的空间索引
  • 好吧,我用的是 Sqlite,我想我应该在那里用一棵树。还有其他方法可以反转Haversine公式吗?我想将米转换为 X 和 Y 坐标。这可能吗?
  • 如果你有一个庞大的数据集,这对你没有帮助。但是,是的,它称为 UTM 转换。但在比较来自不同 UTM 区域的两个位置时要小心。如果感兴趣的区域小于几公里,则还有其他此类 WGS84 到笛卡尔转换。但这需要一些地理知识。我只会使用haversine。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多