2011-08-02 56 views
3

我有一個數據幀的緯度和經度點R.使用R data science toolkit,我可以將這些點國家/州/縣/市/社羣/鄰居,這是非常有用的。分配經/緯來郵政編碼

我想這些點分配給5位數拉鍊碼(或甚至9數字郵政編碼!)中的R或Python。是否有捷徑可尋?

編輯:我發現了一個file that contains zip code boundaries。不幸的是,它是一個.lpk文件。我如何導入到R?
編輯2:我發現一個shape file,這將更容易處理。

+2

嘗試在R上的包'zipcode'其中有5層郵編全面上市。這裏有一個關於它包含什麼的簡短描述的鏈接 - http://www.r-bloggers.com/my-first-r-package-zipcode/ – Ramnath

+1

@Ramnath:如果不需要精度,那麼這將工作得很好。但基本上,因爲它包含質心,你將不得不考慮每個郵政編碼一個圓圈。取決於他的需求。 –

+0

@Ramnath:給定經緯度點,我如何使用'zipcode'包將其分配給一個郵政編碼?我的直覺是使用距離公式來找到最接近的郵政編碼中心,但直覺往往是錯誤的... – Zach

回答

5
  1. 查找郵政編碼shape文件的某處(.SHP格式,有時也被稱爲 ArcGIS的形狀文件)。

  2. 使用maptools程序包的readShapePoly 命令將其加載到R.

  3. 創建SpatialPointsDataFrame舉行點。

  4. 確保您的預測是正確的。

  5. 使用sp程序包的overlay命令將點疊加到多邊形中。

您可能會發現在taRifx軟件包中的cleanLatLon有幫助。

+0

我在哪裏可以找到一個郵政編碼shapefile?我如何確保我的預測是正確的?正如我所說,現在我只有一個經緯度點的列表,沒有相關的投影... – Zach

+0

**投影**:只要你的shapefile在緯度/經度上,就沒問題。否則,你將不得不將它們投影到相同的格式。編輯你的文章,當你有一個shapefile,如果你需要項目我會發布更多的細節。 ** Shapefile **:在這裏嘗試http://www.cartotalk.com/index.php?showtopic=4416。另外,許多大學圖書館都備有ESRI Maps&Data光盤,因爲他們免費獲得網站許可證。 –

+0

好的,我在這裏找到了一個shapefile。我如何將它導入到R?這是一個.lpk文件:http://www.arcgis.com/home/item.html?id=8d2012a2016e484dafaac0451f9aea24 – Zach

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") 
相關問題