Geolocation 如何确定每个由经度、纬度和半径定义的区域包含给定位置?

Geolocation 如何确定每个由经度、纬度和半径定义的区域包含给定位置?,geolocation,geocoding,geospatial,geo,Geolocation,Geocoding,Geospatial,Geo,我有一个很大的区域数据集,每个区域由经度、纬度和给定半径定义。我有一个带有经纬度的定位点,我需要确定哪个区域包含我的点 目前我正在使用蛮力:我计算目标点和每个区域的中心经纬度之间的距离;如果距离小于区域的半径,我会在结果中包含该区域。 显然,这个解决方案是站不住脚的 GeoHash可以用于制定解决方案吗 编辑:商业问题是给一组已知范围的手机和一组固定的可用位置,这些位置由房地产控股公司拥有,那里是信号中继器的位置。当然,除了位置和距离之外,还有其他考虑因素。否则,会有人开车带着信号检测套件在全国

我有一个很大的区域数据集,每个区域由经度、纬度和给定半径定义。我有一个带有经纬度的定位点,我需要确定哪个区域包含我的点

目前我正在使用蛮力:我计算目标点和每个区域的中心经纬度之间的距离;如果距离小于区域的半径,我会在结果中包含该区域。 显然,这个解决方案是站不住脚的

GeoHash可以用于制定解决方案吗

编辑:商业问题是给一组已知范围的手机和一组固定的可用位置,这些位置由房地产控股公司拥有,那里是信号中继器的位置。当然,除了位置和距离之外,还有其他考虑因素。否则,会有人开车带着信号检测套件在全国各地兜风——这不是最佳选择。不是家庭作业问题。我有计算机科学背景,但地理信息系统对我来说是新的,我愿意学习


编辑:我将继续在几个ec2实例中使用暴力。虽然不是最理想的解决方案,但它确实有效。感谢大家提出的解决方案,但不幸的是,考虑到时间和知识的限制以及方法的模糊性,我无法尝试它们。

通常的方法是使用空间索引,如四叉树或kd树。 向该索引添加所有圆的矩形边界以建立索引

使用四叉树: 查询在给定位置与四元节点重叠的对象的索引。结果将是一些圆圈,您可以按照描述检查这些圆圈


四叉树不喜欢删除元素。

什么语言?java,C++,SQL等?我不关心语言,就像这个问题的算法一样。语言定义了数学函数可以使用。只是好奇:你需要什么样的项目?你需要多少次计算?一次,一秒钟一次。我喜欢四叉树:如果我理解你的方法,我应该为圆形区域创建一个有界区域,为区域创建四叉树-用四叉树键索引这些区域,然后确定哪些区域包含位置,我应该为这个位置创建一个四叉树,并使用它来查询索引?边界区域是矩形。每个矩形获得一个id或数组位置。将矩形添加到key=id的四边形中;quad.addRect,26;其中26是rectangöle e-.g数组pos later List foundObjects=quad.findlat,lon的键;在应用程序中不需要四键。使用lat、lon查询四叉树,并返回lat/lon附近的对象列表。或者,根据您的查找方法,您可以返回位置所在的对象列表。@Phpdna我对四叉树很有经验。他不需要相邻的东西。他想知道哪些对象包含该点,因此矩形四叉树是与R-树相同的最佳解决方案之一,R-树的实现要复杂得多。别忘了有大量不同的四叉树。点Qwuad树,基于桶,基于区域,MX,MX-CIF,PMR。公关等等。。我已经为一个专业的汽车设备实现了这一点。阅读Hannan Sammet:多维度量数据结构的基础。