问题描述
我想从两个 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 (将#修改为@)