对于我所描述的问题,我对关键字/方向有一些疑问。我会尽力描述下面的问题。
我有一个带有节点的地图(例如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。
答案 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))