4

我在 R 中有一个数据框纬度和经度点。使用R 数据科学工具包,我可以将这些点分配给 Country/State/County/City/Constituency/Neighborhood,这很有用。

我想将这些点分配给 R 或 python 中的 5 位邮政编码(甚至是 9 位邮政编码!)。是否有捷径可寻?

编辑:我找到了一个包含邮政编码边界的文件。不幸的是,它是一个 .lpk 文件。如何将其导入 R?
编辑 2:我找到了一个shape 文件,使用起来会更容易。

4

2 回答 2

5
  1. 在某处查找邮政编码 shapefile(.shp 格式,有时称为 ArcGIS Shapefile)。

  2. maptools使用包的readShapePoly 命令将其加载到 R 中。

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

  4. 确保你的预测是正确的。

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

您可能会cleanLatLon在 taRifx 包中找到有用的信息。

于 2011-08-02T14:05:58.547 回答
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" )
于 2011-12-31T18:31:04.203 回答