2017-04-18 73 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

真棒!谢谢! –