Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有方法获取边所属方式的ID?_Java_Openstreetmap_Graphhopper - Fatal编程技术网

Java 是否有方法获取边所属方式的ID?

Java 是否有方法获取边所属方式的ID?,java,openstreetmap,graphhopper,Java,Openstreetmap,Graphhopper,可能吗?我需要从任何边缘跳到一个地方。考虑到它已经在OSM中生成,WayID看起来非常方便。但是我什么也找不到。如果你想知道为什么我需要这个,它很简单-一种方法可以用作一组边的公共属性的容器。它消除了重复信息的需要 AllEdgesIterator ei = graph.getGraph().getAllEdges(); logger.info("Wring {} edges...", ei.getMaxId()); while (ei.next()) {

可能吗?我需要从任何边缘跳到一个地方。考虑到它已经在OSM中生成,WayID看起来非常方便。但是我什么也找不到。如果你想知道为什么我需要这个,它很简单-一种方法可以用作一组边的公共属性的容器。它消除了重复信息的需要

    AllEdgesIterator ei = graph.getGraph().getAllEdges();

    logger.info("Wring {} edges...", ei.getMaxId());

    while (ei.next()) {
                // TODO (ds): get way ID here
                ...
    }

OSM通道id未存储在GraphHopper中。您需要在导入时创建一个长值数组来维护它们:

arr[edgeId]=osmId

是 啊我开始在OSMReader中添加这一点。这有点复杂,因为只有OSMReader在创建边时才能处理它。我用edge存储它们,这需要在序列化部分做一些工作。是的,也许我们应该为此提供一个钩子。您使用edge存储它们是什么意思?你是说你扩展了GraphOpperStorage来做这个吗?您可能只需要一个DataAccess对象(类似于一个数组,但带有序列化),但实际上并不需要。我将
wayId
添加到边缘和几个访问者,
getWayId
setWayId
。很好。不幸的是,它在大小上造成了很大的影响:显然,它增加了8个字节,使edge类和edge文件的大小增加了一倍。从这个角度来看,我想知道我是否需要
long
作为道路ID。GH将其定义为
long
,但我不认为OSM数据超出了max int。接下来的事情是获取可用于分析的way标记。GH非常棒,我相信我可以让它更具信息性。顺便说一句,我确实尝试过使用类似于名称存储方式的方法,但后来又放弃了,因为除了ID存储方式之外,没有其他方法。但是对于标签,我可能必须按照您的建议使用
DataAccess
,因为标签太多了。。。重新标记:在核心GH中也很好,例如通过配置。也许您可以提供一个PR:)嘿,您是否最终实现了一个解决方案,在将OSM方式和节点元数据导入Graphhopper后,您可以通过该解决方案向后访问它们?对不起,我不记得我最终得到了什么--已经有一段时间了