自适应最近邻 R 代码以识别每个池塘 1 公里范围内的池塘位置

     2023-03-05     228

关键词:

【中文标题】自适应最近邻 R 代码以识别每个池塘 1 公里范围内的池塘位置【英文标题】:Adaptation of nearest neighbour R code to identify locations of ponds within 1 km for each pond 【发布时间】:2013-08-28 20:27:25 【问题描述】:

我有一个 csv 文件,其中包含 17,305 个池塘的池塘面积和纬度和经度坐标。对于每个池塘,我想确定其 1 公里范围内所有池塘的坐标。我是 R 新手,所以我想我可以调整一些最近邻代码。我在 Crawley 的 The R Book 中找到了这个循环:

x<-runif(100)
y<-runif(100)

par(pty="s")
plot(x,y,pch=16)

distance<-function(x1, y1, x2, y2) sqrt((x2 − x1)^2 + (y2 − y1)^2)

r<-numeric(100)
nn<-numeric(100)
d<-numeric(100)
for (i in 1:100) 
for (k in 1:100) d[k]<-distance(x[i],y[i],x[k],y[k])
r[i]<-min(d[-i])
nn[i]<-which(d==min(d[-i]))
   

for (i in 1:100) lines(c(x[i],x[nn[i]]),c(y[i],y[nn[i]]))

我对其进行了调整,并在化石中使用了 deg.dist 函数,该函数使用 Haversine 公式而不是使用毕达哥拉斯。

install.packages("fossil")
library(fossil)

Pond_A<-read.csv("C:\\ PondArea_data\\Pond_areas.csv")

r<-numeric(17305)
nn<-numeric(17305)
d<-numeric(17305)
for (i in 1:17305)
for (k in 1:17305) d[k]<-with(Pond_A,deg.dist(Longitude[i],Latitude[i],Longitude[k],Latitude[k]))
  r[i]<-min(d[-i])
  nn<-which(d<=1)

这似乎给了我最后一个池塘 1 公里内所有池塘的身份。但是尽我所能,我无法弄清楚如何为所有池塘找到答案。如果有人能给我一个解决方案并解释它为什么有效,我将不胜感激。

谢谢,

艾丹

【问题讨论】:

您看过sp 包吗?其中的spDists 函数应该为您提供一些易于使用的功能。 【参考方案1】:

您可以使用 rgeos 包中的 gWithinDistance 创建一个布尔矩阵。 row/col 值表示 sp 对象的行名。然后,您可以将矩阵强制转换为数据框并分配回 sp 对象。对于这个例子,我使用 sp 包中的 meuse 数据。

require(sp)
require(rgeos)
data(meuse)
  coordinates(meuse) <- ~x+y

# Create boolean matrix where TRUE is distance condition is |nnd <= d| TRUE else FALSE
d=200
DistMat <- gWithinDistance(meuse, meuse, dist=d, byid=TRUE)  

# Turn self-evaluation values to NA 
diag(DistMat) <- NA

# Join back to data
cids <- colnames(DistMat)
  DistMat <- as.data.frame(DistMat)
    names(DistMat) <- paste("NID", cids, sep=".")
      meuse@data <- data.frame(meuse@data, DistMat) 
        str(meuse@data)

【讨论】:

非常感谢您的回答。抱歉这么久才回复我想确保我理解答案并可以应用它。意识到如果我使用纬度/经度坐标,距离将以度为单位,所以我需要转换为东向和北向。

R中的空间最近邻分配

】R中的空间最近邻分配【英文标题】:SpatialnearestneighborassignmentinR【发布时间】:2018-05-1916:23:23【问题描述】:我正在进行一项研究,试图根据具体个人的地址将颗粒物暴露量分配给他们。我有两个带有经度和纬度坐标的数据集... 查看详情

k-最近邻,其中每个类中的对象数差异很大

】k-最近邻,其中每个类中的对象数差异很大【英文标题】:k-nearestneighborswhere#ofobjectsineachclassdiffersvastly【发布时间】:2016-10-0223:18:46【问题描述】:我在一个对象被分类为A或B的数据集上运行knn(在R中)。但是,A的数量比B的... 查看详情

r语言学习笔记—k近邻算法(代码片段)

K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。即每个样本都可以用它最接近的k个邻居来代表。KNN算法适合分类,也适... 查看详情

如何通过R-最近邻求解最近邻?

】如何通过R-最近邻求解最近邻?【英文标题】:HowtosolvenearestneighborthroughtheR-nearestneighbor?【发布时间】:2016-10-0818:18:12【问题描述】:引用E2LSH手册(关于这个特定库并不重要,这句话应该适用于一般的NN问题):E2LSH也可用于... 查看详情

机器学习实战之k近邻算法

k近邻算法概述简单地说,K近邻算法采用测量不同特征值之间的距离方法进行分类。优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。适用数据范围:数值型和标称型。它的工作原理是:存在一... 查看详情

使用最近邻算法进行图像模式识别

】使用最近邻算法进行图像模式识别【英文标题】:UsingNearestNeighbourAlgorithmforimagepatternrecognition【发布时间】:2011-02-1417:59:41【问题描述】:所以我希望能够识别图像中的模式(例如数字4),我一直在阅读不同的算法,我真的很... 查看详情

自适应粒子群优化算法的matlab性能仿真(代码片段)

...的位置向量和速度向量,以及一个由目标函数决定的适应度。所有微粒在搜索空间中以一定的速度飞行,通过追随当前搜索到的最优值来寻找全局最优。    PSO初始化为一群随机粒子(随机解),然后通过迭代找到最... 查看详情

在 Spark 中使用 LSH 对数据帧中的每个点运行最近邻查询

】在Spark中使用LSH对数据帧中的每个点运行最近邻查询【英文标题】:UsingLSHinsparktorunnearestneighborsqueryoneverypointindataframe【发布时间】:2017-09-0815:03:24【问题描述】:对于数据帧中的每个特征向量,我需要k个最近邻。我正在使用... 查看详情

matlab点云处理:kd树近邻搜索(k近邻|半径r近邻)(代码片段)

文章目录0ObjectFunctions(对象函数)1findNearestNeighbors(K近邻搜索)1.1重载函数1----[indices,dists]=findNearestNeighbors(ptCloud,point,K)1.2重载函数2----[indices,dists]=findNearestNeighb 查看详情

在 R 中使用 k-NN(类包)的最近邻索引

】在R中使用k-NN(类包)的最近邻索引【英文标题】:Indexesofnearestneighborsusingk-NN(classpackage)inR【发布时间】:2015-01-2104:45:08【问题描述】:我正在使用class包的knn函数:k<-knn(train=training,test=testset,cl=classes,k=1,prob=TRUE)对于测试集... 查看详情

simpleandeffectivefew-shotnamedentityrecognitionwithstructurednearestneighborlearning

...应用于多个领域,如新闻、医学和社交媒体。然而,使NER适应新领域的主要挑战之一是不同领域特定实体类型之间的不匹配。例如,在I2B22014数据中标注的23种实体类型中,只有两种可以在OntoNotes5注释中找到。不幸的是,获取新... 查看详情

pcl:半径r近邻搜索的实现(代码片段)

文章目录1半径R近邻2实现代码3输出结果1半径R近邻待补充…2实现代码#include<iostream>#include<pcl\\io\\pcd_io.h>#include<pcl\\kdtree\\kdtree_flann.h>usingnamespacestd;intmain() //--------------------------------从硬 查看详情

拓端tecdat|r语言bootstrap的岭回归和自适应lasso回归可视化(代码片段)

原文链接:http://tecdat.cn/?p=22921原文出处:拓端数据部落公众号拟合岭回归和LASSO回归,解释系数,并对其在λ范围内的变化做一个直观的可视化。 #加载CBI数据 #子集所需的变量(又称,列) CBI_sub<-CBI   #... 查看详情

从公里 (km) 转换为十进制度

...8-0915:34:22【问题描述】:使用scipy.KDTree进行一些快速的最近邻搜索。我正在使用KDTree.query_ball_point(pnt,r=some_distance)进行搜索。由于我的点是纬度,要搜索的长半径值(some_distance)必须是十进制度数(我 查看详情

1.初级篇——最基础的"穷竭搜索”(代码片段)

A.LakeCounting(POJ2386)题意:由于最近的降雨,农夫约翰田地的各个地方都有水汇聚,用NxM(1<=N<=100;1<=M<=100)的矩形表示。每个方格包含水(‘W‘)或干燥土地(‘。‘)。农夫约翰想弄清楚他的田地里形成了多少个池塘... 查看详情

layui弹框自适应高度(代码片段)

layer.open自适应高度方式一:如下,可有效防止高度超出可视范围layer.open(skin:‘layui-layer-molv‘,type:1,title:‘预览‘,area:[‘640px‘,‘95%‘],//高度设置为95%,防止超出可视范围shade:0.8,//遮罩层透明度id:‘LAY_layuipro‘,//设定一个id,防止重... 查看详情

使用 OpenCL 内核的最近邻插值代码

】使用OpenCL内核的最近邻插值代码【英文标题】:NearestNeigbourInterpolationcodeusingOpenCLkernel【发布时间】:2022-01-1622:49:52【问题描述】:我需要编写一个OpenCL内核。通过内核参数,我得到一个具有特定尺寸的输入图像(例如:width:60... 查看详情

宽高自适应,高度塌陷,伪对象选择符(代码片段)

宽高自适应 网页布局中经常要定义元素的宽和高。但很多时候我们希望元素的大小能够根据窗口或子元素自动调整,这就是pc自适应。自适应的优点: 元素自适应在网页布局中非常重要,它能够使网页显示更灵活,可以适应在... 查看详情