Назначьте широту / долготу почтовым индексам - PullRequest
4 голосов
/ 02 августа 2011

У меня есть точка широты и долготы в кадре R. Используя инструментарий R для науки о данных , я могу назначить эти точки для страны / штата / округа / города / избирательного округа / района, что очень полезно. 1003 *

Я бы хотел назначить эти точки 5-значным почтовым индексам (или даже 9-значным почтовым индексам!) В R или Python. Есть ли простой способ сделать это?

Редактировать: Я нашел файл, который содержит границы почтового индекса . К сожалению, это файл .lpk. Как мне импортировать это в R?
Изменить 2: Я нашел файл формы , с которым будет легче работать.

Ответы [ 2 ]

5 голосов
/ 02 августа 2011
  1. Найдите шейп-файл почтового индекса (формат .shp, иногда называемый Шейп-файлы ArcGIS).

  2. Загрузите его в R, используя maptools пакет readShapePoly команда.

  3. Создайте SpatialPointsDataFrame для хранения точек.

  4. Убедитесь, что ваши прогнозы верны.

  5. Используйте команду overlay пакета sp для наложения точек на многоугольники.

Вы можете найти cleanLatLon в пакете taRifx, чтобы быть полезным.

3 голосов
/ 31 декабря 2011

Я запустил то, что gsk3 собрал, и это сработало как шарм. Вот конкретный код. Для справки я также включил 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" )
...