如何查找网格中的所有节点

时间:2017-01-31 04:57:58

标签: algorithm matlab graph grid gis

对于我所描述的问题,我对关键字/方向有一些疑问。我会尽力描述下面的问题。

我有一个带有节点的地图(例如4km x 4km)(作为设施+有GIS位置)。

我想要

1)在地图上扫描某个固定范围的网格(例如1km x 1km)并列出网格中的所有节点。最后,我将扫描网格中节点上的完整地图范围信息。 使用4km×4km作为地图范围,我将有4个固定网格范围1km x 1km,每个网格提供1km x 1km网格中节点数量的信息。

OR

2)扫描一个节点特定节点范围内的所有节点(例如距节点1km半径)并列出网格中的所有节点。

我可以通过一些关键词来推进我的研究吗?

对于(1),我在线搜索并且最初认为“占用网格”可能是我正在寻找的但我不确定,因为它似乎与我正在寻找的目标不同。我并不局限于程序的使用,但希望函数或用户创建的函数可能在matlab中。

对于(2),列出与网格中每个其他节点具有相应距离的所有节点,并过滤我“范围”内的所有节点可能是一个答案。但是,是否有任何已建立的算法可供使用?我用Google搜索并看到了很多关于“Dijkstra算法”的结果,但我认为我的问题不是最短路径问题。

就个人而言,我实际上更感兴趣的是找到(1)的答案,但在最坏的情况下,(2)可能会被使用。 我现在使用的程序是matlab和QGIS。

1 个答案:

答案 0 :(得分:1)

假设网格中有一个节点矩阵A,其中每一行代表以km为单位的节点的笛卡尔坐标(或任何你想要的单位):

% Generating random nodes... You can easily make these 3D by changing columns from 2 to 3
A = randn(10,2);

此外,假设我们有一些参考点B,我们希望找到x的{​​{1}} km内的所有节点

B

然后,A和B中每个点之间的距离矢量D由

给出
% Generating a random reference point
B = randn(1,2);

并且每个这些向量的范数由

给出
D = A - repmat(B,size(A,1),1);

所以位于B的x km范围内的所有节点都由

给出
E = sqrt(sum(D.^2,2))