我是R新用户。我在R中有一个shapfile,我想用它来计算K最近邻居。每个多边形的质心(Inside_X&Inside_Y)在arcmap中进行计算(示例:X:32570914 Y:5791442)。我使用sf
包获取我的坐标的CRS。理想情况下,我想使用我的shapefile的proj,但在R中似乎无效。下面是我的代码。我的问题是,即使设置了CRS,knearneighbor
也会考虑knearneigh: coordinates are not geographical
,st_is_longlat
会给出[FALSE]
。请帮助。
>data<- readOGR (dsn = ".", layer ="My_Data")
>summary(data)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 32568756 32641426
y 5723944 5853056
Is projected: TRUE
proj4string :
[+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y_0=0 +ellps=GRS80 +units=m +no_defs]
Data attributes:
>data.sf <- st_as_sf(data)
## Set CRS
>data.crs <- st_transform(data.sf, crs = 4839)
>st_crs(data.crs)
data.coord <- cbind(data.crs$INSIDE_X, data.crs$INSIDE_Y)
## K Nearest neighbor
>library(spdep)
>data.knn <- knearneigh(data.coord, k = 10, longlat = TRUE)
Warning message:
In knearneigh(data.coord, k = 10, longlat = TRUE) :
knearneigh: coordinates are not geographical: longlat argument wrong
使用EPSG 4326代替4839,项目4839是项目https://epsg.io/4839