在某个地方找到一个zip代码的shapefile(.shp格式,有时称为ArcGIS Shapefiles)。
使用maptools
包的readShapePoly
命令将其加载到R中。
创建一个SpatialPointsDataFrame来保存这些点。
确保您的投影是正确的。
使用sp
包的overlay
命令将点叠加到多边形中。
您可能会发现taRifx包中的cleanLatLon
很有帮助。
我运行了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" )
zipcode
包,它具有全面的5位邮政编码列表。这是一个链接,其中包含有关其内容的简短描述- http://www.r-bloggers.com/my-first-r-package-zipcode/ - Ramnathzipcode
包将其分配到邮政编码?我的直觉是使用距离公式找到最近的邮政编码中心,但直觉常常是错误的... - ZachpointDistPairwise
函数,然后你可以取其中的最小值。但是请仔细考虑这是否是你真正想要做的。邮政编码不是圆形的! - Ari B. Friedman