使用带有sp包中的over()函数的N / A值

时间:2013-11-18 18:21:38

标签: r gis polygon point

我对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

感谢您的帮助。

1 个答案:

答案 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")

plot

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