我对GIS和R比较陌生,我正在做一个项目,将犯罪数据映射到城市的特定社区。数据文件采用CSV格式,包含事件ID,经度和纬度。邻域多边形由shapefile定义。这是我在R中的代码:
require(sp)
require(rgdal)
require(maps)
crime<-read.csv("crime sample.csv")
crime<-subset(crime,!is.na(crime$Latitude))
coordinates(crime)<-c("Longitude","Latitude")
Neigh <- readOGR(".", "Neighborhoods_2012b")
proj4string(crime)<-proj4string(Neigh)
inside.Neigh <- !is.na(over(crime, as(Neigh, "SpatialPolygons")))
然而,结果显示没有任何点落在任何多边形内。
proj4string(Neigh)
给出
[1] "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333333333 +k=0.999975
+x_0=300000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs +ellps=GRS80 +towgs84=0,0,0
此链接提供使用的数据文件: file
感谢您的帮助。
答案 0 :(得分:4)
您必须重新投影一个数据集。 spTransform
方法提供了数据与投影之间的转换之间的转换:
Neigh_wgs84 <- spTransform(Neigh, CRS("+proj=longlat +datum=WGS84"))
proj4string(crime) <- proj4string(Neigh_wgs84)
plot(Neigh_wgs84)
plot(crime, add=TRUE, col="red")
R> over(crime, Neigh_wgs84)
PRI_NEIGH SEC_NEIGH SHAPE_AREA SHAPE_LEN
1 Gage Park MARQUETTE PARK,GAGE PARK 61284896 32294
2 Humboldt Park HUMBOLDT PARK 125010426 46127
3 Grand Boulevard BRONZEVILLE 48492503 28197
4 Garfield Ridge MIDWAY AIRPORT 117890778 60080
5 Auburn Gresham AUBURN GRESHAM 105065354 46758