我有一个大的区域数据集,每个区域由经度,纬度和给定半径定义。我有一个纬度和经度的位置点,我需要确定哪个区域包含我的观点。
目前我正在使用蛮力:我计算目标点与每个区域的中心经度和纬度之间的距离;如果距离小于区域的半径,我在结果中包含区域。 显然这个解决方案并不成立。
GeoHash可以用来制定解决方案吗?
编辑:业务问题是给出一组具有已知范围的手机以及由房地产持有人拥有的固定的可用位置集,其中是信号中继器的位置。除了位置和距离之外,当然还有其他考虑因素。否则,有人会使用信号检测套件在全国各地开车 - 这不是最佳选择。不是作业问题。我有Comp Sci背景但GIS对我来说是新的,我愿意学习。
编辑:我将继续在几个ec2实例中使用暴力。不是最优的解决方案,但它的工作原理。感谢大家提出的解决方案,但遗憾的是,考虑到时间和知识限制以及方法的模糊性,我无法试用它们。
答案 0 :(得分:0)
通常的方法是使用像四叉树或kd树这样的空间索引。 在此索引中添加所有圆的矩形边界以构建索引。
使用四叉树: 查询哪些对象在给定位置与四元节点重叠的索引。结果将是一些圈子,您可以按照描述进行检查。
四棵树不喜欢删除元素。