将lat / long分配给邮政编码

时间:2011-08-02 14:02:07

标签: python r reverse-geocoding zipcode

我在R中有一个数据框纬度和经度点。使用R data science toolkit,我可以将这些点分配给国家/州/郡/市/选区/社区,这很有用。

我想将这些点分配给R或python中的5位邮政编码(甚至9位邮政编码!)。有一个简单的方法吗?

编辑:我找到了file that contains zip code boundaries。不幸的是,它是一个.lpk文件。如何将其导入R?
编辑2:我找到了shape file,这将更容易使用。

2 个答案:

答案 0 :(得分:5)

  1. 在某处找到一个邮政编码shapefile(.shp格式,有时称为 ArcGIS Shapefiles)。

  2. 使用maptoolsreadShapePoly将其加载到R中 命令。

  3. 创建一个SpatialPointsDataFrame来保存点。

  4. 确保您的预测正确无误。

  5. 使用sp包的overlay命令将点叠加到多边形中。

  6. 您可以在taRifx包中找到cleanLatLon有用。

答案 1 :(得分:3)

我跑了gsk3放在一起,它就像一个魅力。这是具体的代码。我还包括我的latlong数据帧的str以供参考。

> # Shape files found here by state: http://www.census.gov/geo/www/cob/z52000.html#shp
> 
> library(maptools)
> library(maps)
> 
> zip.map <- readShapePoly("zt48_d00.shp")
> latlong <- read.csv("latlong.csv")
> str(latlong)
'data.frame':   2102 obs. of  3 variables:
 $ ref : Factor w/ 1594 levels ...
 $ lat : num  32.9 32.9 32.9 32.9 32.9 ...
 $ long: num  -96.7 -96.7 -96.7 -96.7 -96.7 ...
> coordinates(latlong) = ~long+lat
> write.csv(cbind(latlong, overlay(zip.map,latlong)),"zip.match.csv" )