如何构建具有数千个节点的图?

问题描述

我想从两个 geojson 文件创建一个图表。节点和边。如您所见,我可以在几秒钟内轻松创建包含数百个节点的图表。

问题是现在我正在读取具有数千个节点的 geojson 文件,这需要太多时间。我很容易读取所有节点,但是当我必须在它们之间创建连接(边)时……这需要太多时间。你知道有什么其他方法可以更快地构建图表吗?

这是代码......我想我使用了太多的循环。

    NodesJson nodes;
    nodes = objectMapper.readValue(new File("C://Users//marcg//OneDrive//Documentos//OSM//map_directory_big/nodes.geojson"),NodesJson.class);
    for (Features_node finder : nodes.getFeatures()) {
        nodesList.add(finder.getProperties().getNode_id());
        coordinatesList.add(finder.getGeometry().getCoordinates());
    }

    EdgesJson edges;
    edges = objectMapper.readValue(new File("C://Users//marcg//OneDrive//Documentos//OSM//map_directory_big/edges.geojson"),EdgesJson.class);
    for (Features_edge finder : edges.getFeatures()) {
        fromIdList.add(finder.getProperties().getFrom_id());
        toIdList.add(finder.getProperties().getTo_id());
        lenghtList.add(finder.getProperties().getLength());
    }

    List<Vertex> vertexList = new ArrayList<>();
    for (int i = 0; i < nodesList.size(); i++) {
        vertexList.add(new Vertex(i,coordinatesList.get(i),false,0));
    }
    
    //From here it takes as much as time I can't run all program

    for (int i = 0; i < nodesList.size(); i++) {
        for (int j = 0; j < fromIdList.size(); j++) {
            for (int k = 0; k < nodesList.size(); k++) {
                if (Precision.equals(nodesList.get(i),fromIdList.get(j)) == true && Precision.equals(nodesList.get(k),toIdList.get(j)) == true) {

                    vertexList.get(i).addNeighbour(new Edge(lenghtList.get(j) / 100,vertexList.get(i),vertexList.get(k)));

                }
            }
        }
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)