检测某个纬度/经度位于美国

时间:2011-03-24 11:49:17

标签: geolocation latitude-longitude bounding-box

我知道大多数人都会看到这个问题,并指向Google Geocode - 但我正在寻找一个数学公式,允许某人接受一个Lat / Lng点,看看它是否在美国境内(或一个边界)框)。有没有办法通过PHP,我可以做一个计算,以查看某个点是否在某个Box(如加利福尼亚州)?

2 个答案:

答案 0 :(得分:1)

嗯,没有任何公式可以告诉你什么状态在哪里(如果有美国 - 墨西哥战争的结果,它将完全是一个破坏者!)所以你需要得到它来自某个地方的数据。

这会变成两个问题之一,具体取决于你想要的准确程度。

如果你有墨卡托或类似投影上显示的矩形边界框的详细信息(也就是说,它有北纬和南纬的经度,东经西经度),那么公式就是:

inBox = latitude <= north && latitude >= south && longitude <= west && longitude >= east

如果你有更多细节,并且有一系列定义状态边界的点(显然,点数越多,精度越高)那么它就成了多边形点问题的一个变种,并带有保证只涉及简单的多边形(没有美国国家有一个自身交叉的边界,也没有完全包围this C code中使用的边界。有可能会有边缘情况受到这是一个2D平面算法的影响,而不是一个球形的,但我想你需要在状态的边界上有一些非常精确的数据,因为算法的不精确度要大于数据造成的数据。

答案 1 :(得分:0)

我认为最简单的方法是为每个州使用绑定框,可以从Flicker Geo API中找到,这是CA的一个示例https://www.flickr.com/places/info/2347563