将lat / lon转换为zipcode /邻居名称

时间:2012-07-01 06:55:04

标签: r google-maps gis geospatial openstreetmap

我有大量带有GPS位置的图片,编码为纬度/经度坐标,主要在洛杉矶。我想将这些转换为(1)zipcodes,以及(2)邻域名称。有没有免费的网络服务或数据库呢?

到目前为止,我能想出的最好的是从LA times page中抓取邻域多边形并尝试找出每个坐标在哪个多边形中。然而,这可能是相当多的工作,并非我的所有坐标都在洛杉矶。至于zipcodes,这个2004 database是我能找到的最好的,但是zipcodes被编码为单个坐标而不是多边形。所以我能做的最好的事情是找到从给定坐标到给定的zipcode坐标的最小距离,这不是最佳的。

我认为谷歌地图或开放街道地图应该能够做到这一点(因为他们似乎'知道'确切地说每个neighboorhood和邮政编码在哪里),但我找不到任何API来做查找/查询。

5 个答案:

答案 0 :(得分:13)

现在,您可以直接在R内部执行此操作,这要归功于相当棒的ggmap包。

与其他人一样,您将使用Google地图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 :(得分:1)

使用Reverse Geocoding将您的lat / lon转换为地址。但它每天的查询数量有一些限制。

答案 2 :(得分:1)

这是一个不错的blog post,其中包含如何使用google-maps对地理编码进行地理编码和反转的示例。

答案 3 :(得分:0)

试试这个:

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

您可以在网站上每天进行多少次查询,但他们还会销售完整的数据库,每隔几个月就会更改一次。 抱歉,我不知道有任何免费资源。

答案 4 :(得分:0)

正如其他人所建议的那样,将它们地理编码到街道地址应该可以正常使用邮政编码。我对附近区域不太确定,因为你可能需要查看街道号码是否奇数/偶数,看看它是否位于确定邻域的道路的哪一侧。

另一种方法是准备GIS多边形要素(例如ESRI形状文件),针对这组多边形测试每个点,看看它与哪一个相交。

邮政编码非常简单,您可以从人口普查中下载形状文件。

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

邻居更难,我猜。在美国的另一部分,我必须自己创建我的形状文件,结合市政府,房地产网站,报纸等的定义,以便看起来人们认为城市中的邻居没有任何重叠或差距。构成这样的多边形可能需要一些时间。你可以螃蟹普查“阻止群体”,甚至从上面的人口普查“阻止”并合并它们

准备好多边形特征后,在不同的环境中有几种GIS工具(独立的可执行文件,GUI程序,c / python / sql等API,也可能是R,用于做多边形和点的交集。