将经纬度转换为邮政编码/社区名称

6
我有一大批带有GPS位置的照片,编码为纬度/经度坐标,主要位于洛杉矶。我想将它们转换为(1)邮政编码和(2)社区名称。是否有任何免费的网络服务或数据库可以实现这一点?
到目前为止,我能想到的最好的方法是从LA times page中爬取社区多边形,并尝试找出每个坐标所在的多边形。然而,这可能需要相当多的工作,并且并非所有的坐标都在洛杉矶。至于邮政编码,我能找到的最好的是这个2004年的database,但邮政编码被编码为单个坐标而不是多边形。因此,我能做的最好的事情就是找到给定坐标到给定邮政编码坐标的最小距离,但这并不是最优解。
我曾认为谷歌地图或开放街道地图应该能够做到这一点(因为它们似乎“知道”每个社区和邮政编码的确切位置),但我找不到任何可进行查询的API。
5个回答

14

现在你可以直接通过 R 来实现这一点,这要感谢相当棒的 ggmap 包。

就像其他人提到的一样,你将使用 Google Maps API 进行逆地理编码(因此每天仅限 2,500 次查询),但这很简单:

library("ggmap")

# generate a single example address
lonlat_sample <- as.numeric(geocode("the hollyood bowl"))
lonlat_sample  # note the order is longitude, latitiude

res <- revgeocode(lonlat_sample, output="more")
# can then access zip and neighborhood where populated
res$postal_code
res$neighborhood

1
它只返回了翻译后的文本,没有提供附近信息! - ayush singhal
使用一个包含多个经纬度的数据框怎么样? - mar355

1
使用反向地理编码将您的纬度/经度转换为地址。但是,它每天查询的数量有一定限制。

1

这里有一篇不错的博客文章,其中提供了使用谷歌地图进行地理编码和反向地理编码的示例。


0

试试这个:

http://www.usnaviguide.com/zip.htm

在该网站上,每天你能进行的查询次数是有限制的,但他们也会出售完整的数据库,每隔几个月就会更新一次。 很抱歉我不知道有任何免费的资源。


0

正如其他人建议的那样,将它们的地理编码转换成街道地址对于邮政编码应该是可行的。但我不太确定关于街区,因为你可能需要查看街道号码是奇数还是偶数,以确定它位于道路的哪一侧,从而确定所在的街区。

另一种方法是准备GIS多边形特征(例如ESRI shape文件),测试每个点与这组多边形的交集,并确定属于哪一个。

邮政编码非常直接,你可以从人口普查局下载shape文件。

http://www.census.gov/cgi-bin/geo/shapefiles2010/main

我猜邻域可能更难处理。在美国的另一个地方,我不得不自己创建形状文件,将市政府、房地产网站、报纸等定义组合起来,使其看起来像城市中人们认为的邻域,而没有任何重叠或间隙。这需要一些时间来组成这样的多边形集合。您可以从上面的页面中抓取人口普查“街区群”,甚至是人口普查“街区”,然后将它们合并。

准备好多边形特征后,有几个GIS工具可以在不同的环境(独立可执行文件、GUI程序、c/python/sql等API,可能还包括R)上进行多边形和点的交集计算。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接