为什么 graphopper 使用一些 OpenStreeMap 铁路元素来构建汽车图



项目graphhopper(OpenStreetMap的开源路由(导入稍后在道路网络图中使用的特定铁路元素。

在 CarFlagEncoder 文件中.java允许将存储在 acceptedRailways 中的某些特定铁路类型添加到图形中:

   // do not drive cars over railways (sometimes incorrectly mapped!)
   if (way.hasTag("railway") && !way.hasTag("railway", acceptedRailways))
        return 0;

接受的铁路在AbstractFlagEncoder中定义:

    acceptedRailways.add("tram");
    acceptedRailways.add("abandoned");
    acceptedRailways.add("abandoned_tram");
    acceptedRailways.add("disused");
    acceptedRailways.add("dismantled");
    acceptedRailways.add("razed");
    acceptedRailways.add("historic");
    acceptedRailways.add("obliterated");

虽然我可以理解为什么使用"电车"(汽车和有轨电车有时共用一条道路,因此汽车可以在上面行驶(,但我不了解其他铁路类型。

为什么需要它们?谁想通过历史悠久的不存在的铁路进行路线?如图所示 http://wiki.openstreetmap.org/wiki/Demolished_Railway

这是由于OSM中的奇怪标记而引入的,并导致铁路用于汽车,这是不可接受的。

现在,凭借我们的"OSM市场力量",我们正在考虑完全删除此解决方法并修复数据。这不仅是更好的方法,而且还会导致其他地方当前的行为问题,请参阅此处以获取更详细的讨论。

我不

熟悉确切的项目,我想我可以从设计/代码审查的角度回答你的具体问题。

为什么需要它们?谁想通过历史不存在的路线 铁路?

我认为我们需要关注路线的来源。

Graphhopper 项目事前使用 OpenStreetMap 数据源中的所有路由。此项目似乎包含所有类型的路由。这意味着事前所有路线都是有效的;公路/渡轮/铁路。

然后在构建地图时对其进行解析。你可以在你提到的函数 acceptWay 中看到这一点。这里需要或限制各种标签。

请注意前几行:我们已经需要高速公路标签。(或处理其他案件(。

String highwayValue = way.getTag("highway");
if (highwayValue == null)
{
      if (way.hasTag("route", ferries))
      {
           String motorcarTag = way.getTag("motorcar");
           if (motorcarTag == null)
               motorcarTag = way.getTag("motor_vehicle");
           if (motorcarTag == null && !way.hasTag("foot") && !way.hasTag("bicycle") || "yes".equals(motorcarTag))
               return acceptBit | ferryBit;
       }
       return 0;
 }

一旦我们通过主要高速公路标签检查,就会执行其他检查。铁路检查就是其中之一。


现在:我们为什么要允许其他子类型的铁路?

因为,这些类型的铁路目前可能是可以通过的。

acceptedRailways.add("tram");
acceptedRailways.add("abandoned");
acceptedRailways.add("abandoned_tram");
acceptedRailways.add("disused");
acceptedRailways.add("dismantled");
acceptedRailways.add("razed");
acceptedRailways.add("historic");
acceptedRailways.add("obliterated");

进一步支持:除了电车,所有这些词都意味着某种形式的当前不存在。

有时,地图/路线会包含旧标记。所以,我有根据的猜测是,程序的设计者做出了权衡。

如果acceptedRailways高速公路并且满足有效高速公路的所有标准,则允许它。否则,它将像其他任何失败一样失败。

(这也可以看作是对铁路标签检查的限制的放松;设计者不愿意冒险允许带有铁路标签的路线,没有特殊的,不存在的类似标签。即使它可能有高速公路标签!

相关内容

  • 没有找到相关文章

最新更新