0

我正在研究 GPS 位置,我需要在相应地址中转换纬度和经度。我有一个包含所有纬度和经度的数据库(超过 1,50,000 个数据),其实际地标即地址位于一个主表中。

我们已经在许多穿越所有地理位置的车辆上安装了 GPS 设备。该设备每 2 分钟发送一次经纬度的实际位置,我得到这个纬度和经度并映射到我们的主表并检查我们主表的哪个地标附近。为了进行这个计算,我做了一些数学运算,将一些增量值添加到从车辆获取的纬度和经度上,然后从我的主表中找到最近的搜索,一旦我们发现我们显示车辆距离 XYZ 位置 5 公里,我们得到 XYZ 位置主表是最近的点。

这个程序基本上要花很多时间来计算位置,因为我们在 Vehicle 上安装了 10,000 个 GPS 设备,每个设备在 2 分钟内发送 GPS 数据,所以你可以想象我们得到了多少数据。

你能帮我解决这个问题,让它变得非常可扩展和快速。

提前致谢。

4

1 回答 1

1

在您的数据库上使用 GIS 图层怎么样?像 PostGIS 这样的东西为 sql 添加了一个具有这种功能的新层。从常见问题解答

3.7. 找到另一个对象半径内的所有对象的最佳方法是什么?

为了最有效地使用数据库,最好进行半径查询,将半径测试与边界框测试相结合:边界框测试使用空间索引,可以快速访问随后应用半径测试的数据子集.

ST_DWithin(geometry, geometry, distance) 函数是一种执行索引距离搜索的便捷方式。它的工作原理是创建一个足够大以包围距离半径的搜索矩形,然后对索引的结果子集执行精确距离搜索。

例如,要查找具有 100 米 POINT(1000 1000) 的所有对象,以下查询会很好地工作:

SELECT * FROM geotable WHERE ST_DWithin(geocolumn, 'POINT(1000 1000)', 100.0);

于 2012-04-14T23:40:36.173 回答