在地图上找到“终点”城市


13

我想找到末端的村庄/城市。这意味着:我需要这些村庄,这些村庄在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编写了脚本。我更喜欢真实的距离:例如,如果有两个村庄,被一个小山隔开,并且山上没有道路,那么它们之间的距离将是连接它们的最短道路。
尼卡比曹

Answers:


2

在我看来,您需要逐步遍历线几何,以获取每个终点/终点缓冲区的坐标,如果仅返回一个要素的终点/终点,则选择线几何(从您的道路fc),如果大于一个不是,并循环通过。希望这有道理...


好吧,该怎么做?
尼卡比曹

您也许可以使用Modelbuilder并将其导出到Python。ArcObjects是另一条路线,但更为复杂。您以前使用过Modelbuilder吗?
user17260

带有“触摸”选项的空间选择可能会让您入门。当您将选择集反转为不接触的选择集时,可能会缩小原始选择集的范围。
user17260

我没有使用Modelbuilder。我需要一个逐步的答案,因为这是我第一次与OSM数据进行交互。:D我很难找到关于它的教程。
尼卡比曹

哇,这是一个很大的要求。您可以访问ArcMap的ArcInfo许可证吗?
user17260

2

通过使用QGIS和最初旨在计算景观连接性的软件(例如GraphabConefor),您可能能够实现此目的。例如 :

  • 通过拖放或使用OpenStreetMap插件将OSM数据导入QGIS。
  • 将数据另存为形状(右键单击)
  • 使用Conefor插件生成的节点和连接文件,说明在这里
  • 使用Conefor计算每个节点和链接的重要性。“端节点”对于连接而言并不重要。我认为您可以使用BC(IIC)指标,因为它考虑了“通过特定节点的所有补丁对之间的最短路径数(...)[以及]节点的长度(链接数)涉及特定节点的补丁之间的路径”(请参见此处

我无法对此进行测试-很遗憾,我现在没有足够的时间。但我认为,如果您愿意进行一些调整,它可能会起作用。例如,您可能必须手动(如果它们不太多)或通过使用地理处理功能和包含障碍物的形状来删除连接障碍物两侧(山等)上的两个节点的链接。


谢谢你!会尽快尝试。[和]长度(链接数) -请问我的距离以公里为单位(如果没有,我如何得到?)?
尼卡比曹

为了获得点之间的距离,您不必费心使用QGIS以外的任何软件。例如,请参见此处此处。使用的距离单位取决于图层坐标系。
Mefimefi

另外,如果您想获得有关横向连接工具的更多信息,则可能需要看一下Researchgate的讨论
Mefimefi

我发现QGIS有点问题(至少在我的Macbook上有问题),但是最后一个链接很有用。还将检查他们的答案。谢谢!
尼卡比曹

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.