我想找到末端的村庄/城市。这意味着:我需要这些村庄,这些村庄在X公里的距离上最多与一个村庄相连。
我只是想知道如何调用此算法(我猜有人曾经创建过类似的东西)。
有这个工具吗?这个概念怎么称呼?
例如
City ------------ Village 1 ------- Village 2 ------ Village 3 - - - [ Mountain]
\ \ \
Village 4 | Road
| \ in mountains
Village 5----------Village6---------Village7 - - - - -
只要山区的道路长于Xkm,Village 3
并且Village 7
由我终端考虑,因为它们链接到一个村庄(V2和V6)。
否则,我将要使用我们拥有的开放数据构建一个。
我已经试过:
下载我国(罗马尼亚)的OSM数据,并将村庄和城市导入数据库。使用数据库中的地理位置功能,我可以找到半径R km 以内不超过X个村庄的村庄。
但是,这并不是我的情况的解决方案,因为在我的情况下,就像上面的示例一样,一个村庄可能位于山的另一侧,但是没有好的方法(或者根本没有办法)。
3
概念是连通性,在图论中将表示为“节点”具有的“边”数。在滤除超出权重阈值的边缘后,您会寻找一个边缘的节点。实际的解决方案将取决于您所使用的工具,语言或软件。
—
RoperMaps
@RoperMaps我还没有设置任何工具,但是总的来说要问(最终,如果有人以前构建过类似的东西)。我将对此进行扩展,给出一个分数(该节点比X短多少倍)。得分越高,连接越多(终端越少)。如果要构建它,可能最终我会使用Node.js解析一些图,但是只是想知道以前是否有人做过。:d
—
尼卡比曹
@RoperMaps我想我可以为此使用OSM,但是我发现这非常困难(例如,有多种方法可以连接节点,但是这些节点只是点,不代表城市)。我可以编写一种算法来查找图形中的叶子或针对我的情况进行扩展的对象,但是我不确定如何为此使用OSM数据(或者有比OSM更简单的方法吗?)。
—
尼卡比曹
您正在使用什么软件?您是在真实距离还是鸟类飞行距离下工作?
—
radouxju
@radouxju我的第一个可行的原型是鸟类的飞行距离(半径,基于坐标),同样,这只是一个开始,但这不是我想要的。我在Node.js中使用MongoDB编写了脚本。我更喜欢真实的距离:例如,如果有两个村庄,被一个小山隔开,并且山上没有道路,那么它们之间的距离将是连接它们的最短道路。
—
尼卡比曹