我知道大多数人会查看这个问题并将我指向谷歌地理编码 - 但我正在寻找一个数学公式,允许某人获取纬度/经度点并查看它是否在美国州内(或边界框)。有没有通过 PHP 的方法,我可以计算一个点是否在某个框(例如加利福尼亚)中?
问问题
2187 次
2 回答
1
好吧,没有公式可以告诉你什么州在哪里(如果有的话,这将完全成为美墨战争结果的剧透!)所以你需要从某个地方获取这些数据.
然后,这会变成两个问题之一,具体取决于您想要的准确度。
如果您有在墨卡托或类似投影上显示时为矩形的边界框的详细信息(即,它具有南北纬度以及东西经度),那么公式很简单:
inBox = latitude <= north && latitude >= south && longitude <= west && longitude >= east
如果您有更多细节,并且有一系列定义状态边界的点(显然,点越多,精度越高),那么它就成为多边形点问题的变体,保证只涉及简单的多边形(美国各州的边界都没有交叉,也没有完全包围此 C 代码中使用的边界。由于这是一种 2D 平面算法而不是球形算法,因此可能会出现边缘情况,但是我想你需要有一些关于状态边界的非常精确的数据,以使算法的不精确性大于数据造成的不精确性。
于 2011-03-24T12:29:20.217 回答
0
我认为最简单的方法是为每个状态使用绑定框,可以从 Flicker Geo API 中找到,CA 的一个示例- https://www.flickr.com/places/info/2347563
于 2014-10-14T17:59:08.263 回答