1

我在数据库中定义并存储了大约 100 个地理围栏(多边形)。我的跟踪设备每分钟更新一次位置。检查给定 LatLng 在这些地理围栏中的最佳方法是什么?我想在任何这些地理围栏中的设备时触发警报。

我能想到的是,在从跟踪设备接收到位置后的每一分钟,我必须从数据库或数组中查询地理围栏信息并一次比较一个。但这似乎在计算上很昂贵。

任何想法和帮助,请..

4

1 回答 1

1

假设存储的地理围栏是相对静态的(即不经常修改/添加/删除),您可以通过选择用合适的空间数据结构表示您的地理围栏来交换存储空间以换取点查找时间。

例如, R-Trees ( https://en.wikipedia.org/wiki/R-tree ) 可用于存储哪些地理围栏可能适用于给定的点位置,以便只需要这些围栏的子集检查以确定该点是否在其中。

务实地,您可能最好使用已经存在的启用空间的数据库,如 PostgreSQL+PostGIS ( http://postgis.net/ ),它允许您基于空间关系有效地发布查询(在您的应用程序中可能是 ST_Within 或 ST_Contains)

于 2013-05-12T18:10:06.787 回答