我已经使用maptools成功地将NYC PUMA区域的shapefile加载到R中,我想在其上方绘制55个点,如下所示:
X Y pumace10 events_2008 events_2009
-73.9092456917 40.8916125162 3701 2 0
-73.8617096298 40.8899373255 3702 0 0
-73.8010284966 40.8460832277 3703 1 1
但是,积分不会用。
首先我这样绘制shapefile:
plot(nycs)
然后我尝试在顶部绘制点,但无论以下哪一点我总是失败:
points(nyc_data$X,nnyc_data$Y,pch=20,col="red")
或
plot(nyc_data, pch=16, col='firebrick',add=TRUE)
或
plot(nyc_data$X,nyc_data$Y,pch=20,col="red")
(最后一个在新图上绘制数据,只是一个X-Y散射而不是覆盖在shapefile上)
任何想法如何做到这一点?
编辑,添加文件(修改为工作文件,希望!):
Shapefile信息:https://www.sendspace.com/file/wbqrpb 点文件:https://www.sendspace.com/file/9yrrbu
答案 0 :(得分:0)
无论如何你可以发送你正在使用的文件吗?
我的猜测是你有两个问题之一:
1)“点”空间数据框或NYC PUMA文件没有坐标参照系。
2)他们都有参考系统,但它们是不同的。
可能,你的问题是这些点缺乏参考系统。
编辑:
问题是这两个数据集位于不同的坐标中,我不确定这些点的坐标系是什么。这是我的代码。问题是这些点的CRS显然既不是常规的lat / long,也不是shapefile中使用的投影。如果您有关于数据点来源的更多信息,我们可以看到他们使用的投影。
library(sp)
library(maptools)
library(rgdal)
library(rgeos)
Points=read.csv("nyc_data_sample.csv",stringsAsFactors=F)
shapefile=readOGR("shapefiles","nyu_2451_34512")
Points_Shape = SpatialPoints(Points[,c("X","Y")],proj4string=CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0"))
#Points_Shape = SpatialPoints(Points[,c("X","Y")],proj4string=CRS(proj4string(shapefile)))
Points_Shape = SpatialPointsDataFrame(Points_Shape,Points)