在R中使用sp包的over()函数使用N / A值

use*_*718 2 gis r point polygon

我是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")))
Run Code Online (Sandbox Code Playgroud)

但是,结果表明没有点落在任何多边形内。

proj4string(Neigh) 
Run Code Online (Sandbox Code Playgroud)

[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
Run Code Online (Sandbox Code Playgroud)

使用此链接的数据文件可用: file

谢谢你的帮助。

rcs*_*rcs 5

您必须重新投影一个数据集。这些spTransform方法提供基准之间的转换以及投影之间的转换:

Neigh_wgs84 <- spTransform(Neigh, CRS("+proj=longlat +datum=WGS84"))
proj4string(crime) <- proj4string(Neigh_wgs84)
plot(Neigh_wgs84)
plot(crime, add=TRUE, col="red")
Run Code Online (Sandbox Code Playgroud)

情节

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
Run Code Online (Sandbox Code Playgroud)