查找Lat / Long的县名称

时间:2011-05-03 02:58:06

标签: geolocation geocoding latitude-longitude

我正在尝试找到一个允许我获取特定Lat / Long的县名(而不是国家/地区)的网络服务。我将在服务器应用程序(可能是Java应用程序)中执行查找。如果我想有一些库,它没有一个web服务,但我想要最新的信息。我已经看了很多支持这个的API,但到目前为止我还没找到一个有效的API。我尝试过像这样的Yahoo API:

http://where.yahooapis.com/geocode?q=39.76144296429947,%20-104.8011589050293

但它没有填充地址信息。我试过一些“旗帜”选项也无济于事。

我也浏览了Googles API,但我读过很多他们没有填充县的地方。

那么有没有人知道任何带Lat / Long并返回与该位置相关联的县的API?如果你有任何例子,那就太好了。

我还想知道哪些API允许在商业应用中使用。我发现的很多数据都说你不能用数据来赚钱。我可能正在阅读那些错误,但我正在寻找建立一个我可能会收取使用这些数据的服务。所以我需要选择。也许是免费服务,而我正在探索各种选择,并在未来支付服务。

5 个答案:

答案 0 :(得分:19)

为了完整起见,我找到了另一个API来获取这些非常简单的数据,所以我想我会分享。

https://www.fcc.gov/developers/census-block-conversions-api

FCC为此问题提供了一个API,它使用人口普查数据来执行查找。

他们的使用限制政策是(来自developer@fcc.gov)

  

我们对块转换API没有任何使用限制,但如果可以,我们会要求您尝试分散您的请求。

答案 1 :(得分:17)

谷歌确实以县为例,

http://maps.googleapis.com/maps/api/geocode/json?latlng=39.76144296429947,-104.8011589050293&sensor=false

在回复中,查看包含代表address_components县的对象的密钥"Adams"

{
    long_name: "Adams"
    short_name: "Adams"
    -types: [
        "administrative_area_level_2"
        "political"
    ]
}

以下是地理编码API的docs

  

administrative_area_level_2表示国家级以下的二级民事实体。 在美国,这些行政级别是县。并非所有国家都表现出这些行政级别。

答案 2 :(得分:1)

您可能希望查看Tiger data并查看其属性中是否包含包含县名的多边形。如果是,Java Geotools API允许您使用此数据。您将在县多边形的多边形查询中执行点,然后执行要素属性查找。

答案 3 :(得分:1)

另一种选择:

  • http://download.geonames.org/export/dump/
  • 下载城市数据库
  • 将每个城市添加为纬度/经度 - >国家映射到空间索引,例如R-Tree(某些DB也具有该功能)
  • 使用最近邻搜索来查找与任何给定点最近的人类住区相对应的国家/地区

优点:

  • 不依赖于外部服务器
  • 快得多(每秒容易进行数千次查找)

缺点:

  • 可能会在边界附近给出错误答案,尤其是在人口稀少的地区

答案 4 :(得分:0)

也许这是一个很好的解决方案。它采用json格式。我总是在我的项目中使用它。

http://maps.google.com/maps/geo?ll= 10.345561,123.896932

只需使用php提取信息。

$x = file_get_contents("http://maps.google.com/maps/geo?ll=10.345561,123.896932");

$j_decodex = json_decode($x);

print_r($j_decodex);