2017-04-18 81 views
0

從Rob Berry(http://rob-barry.com/2015/06/14/Mapping-in-R/)借來的代碼,我製作了紐約市的地圖。我想要在地圖上繪製很多經緯度點。問題是繪製這樣的地圖會導致繪圖區域的方式超出合理的經緯度範圍,所以我假設必須有一種方法將我的點轉換爲地圖比例,或者重新縮放地圖,以便繪圖空間可以放下lat()函數。 以下是Rob Berry的代碼:在Rgdal包中的地圖上繪製點與R

download.file(destfile = "nypp_15b.zip") 
unzip(zipfile = "nypp_15b.zip") 
library("rgdal") 
nypp <- readOGR("nypp_15b", "nypp") 
plot(nypp) 

漂亮的地圖!但現在看到的情節程度:

par(「usr」) 

的曲線空間的數字看似888196.7,1092361.0,114013.0,278953.2,所以喜歡的那些顯然緯度經度點下方不會在地圖上顯示出來。那麼如何讓我的觀點在地圖上正確繪圖?

lat <- c(40.75002, 40.74317) 
lon <- c(-73.96905 -74.00366) 

下不起作用,因爲規模是如此的不同:

points(lat,lon, col = 「red」) 

非常感謝你。

+0

見'rgdal :: project'? – nicola

回答

2

nypp在投影座標系中,所以你需要改變座標系或你的nypp點。你可以做這樣的事情: -

nypp <- readOGR("nypp_15b", "nypp") 
## Check the CRS of nypp 
crs(nypp) 
## CRS arguments: 
+proj=lcc +lat_1=40.66666666666666 +lat_2=41.03333333333333 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 
+y_0=0 +datum=NAD83 +units=us-ft +no_defs +ellps=GRS80 +towgs84=0,0,0 

plot(nypp) 

lat <- c(40.75002, 40.74317) 
lon <- c(-73.96905, -74.00366) 

df <- data.frame(lat, lon) 

## Convert to spatial dataframe and change the coordinates of the points 
coordinates(df) <- ~lon + lat 
crs(df) <- CRS("+proj=longlat +datum=WGS84") 
df <- spTransform(df, crs(nypp)) 

## Add points to the plot 
points(df$lon, df$lat, col = "red", pch =19) 

結果:

Points overlaid

+0

感謝您的詳細回覆。 crs()在不同的包中?我收到一個錯誤,說R無法找到該功能。 –

+0

它在'raster'package – ahly

+0

真棒!謝謝! –