【问题标题】:Detecting a certain Latitude / Longitude is in a US State检测到某个纬度/经度位于美国某个州
【发布时间】:2011-07-22 01:50:36
【问题描述】:
我知道大多数人会查看这个问题并将我指向 Google 地理编码 - 但我正在寻找一个数学公式,它允许某人获取纬度/经度点并查看它是否在美国州内(或边界盒子)。有没有通过 PHP 的方法,我可以计算一个点是否在某个 Box(例如加利福尼亚)中?
【问题讨论】:
标签:
geolocation
latitude-longitude
bounding-box
【解决方案1】:
嗯,没有任何公式可以告诉你什么州在哪里(如果有的话,这将完全破坏美墨战争的结果!)所以你需要得到那个来自某处的数据。
这会变成两个问题之一,具体取决于您想要的准确度。
如果您有一个在墨卡托或类似投影上显示为矩形的边界框的详细信息(即,它具有南北纬度,东西经度),那么公式很简单:
inBox = latitude <= north && latitude >= south && longitude <= west && longitude >= east
如果你有更多细节,并且有一系列点来定义状态的边界(显然,点越多,精度越高),那么它就变成了多边形中点问题的变体,有保证只涉及简单的多边形(没有美国各州有一个交叉的边界,也没有完全包围this C code 中使用的边界。由于这是一个二维平面算法而不是球面算法,这可能会影响边缘情况一,但我想你需要有一些关于状态边界的非常精确的数据,以使算法的不精确性大于数据造成的不精确性。