如何解决如何从R中北极的连接点停止最近邻居分析
我试图通过连接各大洲上的随机点来制作地图。我设法接近期望的结果,但是我不希望北美的观点与西伯利亚的观点联系起来。但是我无法使用最大距离来做到这一点,因为跨北极的点很近。查看附图,了解我的意思。
neighbors <- 5
nearest <- st_nn(pts,pts,k = neighbors+1,maxdist = 3500000)
connect <- st_connect(pts,nearest) %>% st_as_sf
然后我用
绘制地图 geom_sf(data = connect,color = 'white') +
geom_sf(data = pts,color = 'white',shape = 1,size = 3)
我曾尝试为北美,欧洲和亚洲制作单独的文件,但是这些点的距离不一致。除非我应该使用其他工具来获取点,否则也许直接在R中生成它们?到目前为止,我已经使用QGIS在多边形中生成随机点。
您将如何解决这个问题?
干杯!
解决方法
也许这可以通过只删除那些在一定程度的“距离”之上的线来解决?请看下面:
library(sf)
library(nngeo)
library(ggplot2)
# Points
pts = read.csv("https://raw.githubusercontent.com/jankomag/delaunay_map/main/points2.csv",sep = ";")
pts = st_as_sf(pts,coords = c("X","Y"),crs = 4326)
# Lines
neighbors = 5
nearest = st_nn(pts,pts,k = neighbors+1,maxdist = 3500000)
connect = st_connect(pts,nearest) %>% st_as_sf
# Remove very long lines
l = st_length(st_set_crs(connect,NA))
connect = connect[l < 100,]
# Plot
ggplot() +
geom_sf(data = connect) +
geom_sf(data = pts,shape = 1,size = 3)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。