Original Edge Data gets written to output stream with buffering
This commit is contained in:
parent
8fdfff3014
commit
26662b7190
@ -194,11 +194,14 @@ void EdgeBasedGraphFactory::InsertEdgeBasedNode(
|
||||
edgeBasedNodes.push_back(currentNode);
|
||||
}
|
||||
|
||||
void EdgeBasedGraphFactory::Run() {
|
||||
// edgeBasedNodes.reserve(_nodeBasedGraph->GetNumberOfEdges());
|
||||
void EdgeBasedGraphFactory::Run(const char * originalEdgeDataFilename) {
|
||||
Percent p(_nodeBasedGraph->GetNumberOfNodes());
|
||||
int numberOfSkippedTurns(0);
|
||||
int nodeBasedEdgeCounter(0);
|
||||
unsigned numberOfOriginalEdges(0);
|
||||
std::ofstream originalEdgeDataOutFile(originalEdgeDataFilename, std::ios::binary);
|
||||
originalEdgeDataOutFile.write((char*)&numberOfOriginalEdges, sizeof(unsigned));
|
||||
|
||||
|
||||
//loop over all edges and generate new set of nodes.
|
||||
for(_NodeBasedDynamicGraph::NodeIterator u = 0; u < _nodeBasedGraph->GetNumberOfNodes(); ++u ) {
|
||||
@ -265,6 +268,12 @@ void EdgeBasedGraphFactory::Run() {
|
||||
OriginalEdgeData oed(v,edgeData2.nameID, turnInstruction);
|
||||
EdgeBasedEdge newEdge(edgeData1.edgeBasedNodeID, edgeData2.edgeBasedNodeID, edgeBasedEdges.size(), distance, true, false );
|
||||
originalEdgeData.push_back(oed);
|
||||
if(originalEdgeData.size() > 100000) {
|
||||
originalEdgeDataOutFile.write((char*)&(originalEdgeData[0]), originalEdgeData.size()*sizeof(OriginalEdgeData));
|
||||
originalEdgeData.clear();
|
||||
}
|
||||
++numberOfOriginalEdges;
|
||||
++nodeBasedEdgeCounter;
|
||||
edgeBasedEdges.push_back(newEdge);
|
||||
} else {
|
||||
++numberOfSkippedTurns;
|
||||
@ -274,6 +283,12 @@ void EdgeBasedGraphFactory::Run() {
|
||||
}
|
||||
p.printIncrement();
|
||||
}
|
||||
numberOfOriginalEdges += originalEdgeData.size();
|
||||
originalEdgeDataOutFile.write((char*)&(originalEdgeData[0]), originalEdgeData.size()*sizeof(OriginalEdgeData));
|
||||
originalEdgeDataOutFile.seekp(std::ios::beg);
|
||||
originalEdgeDataOutFile.write((char*)&numberOfOriginalEdges, sizeof(unsigned));
|
||||
originalEdgeDataOutFile.close();
|
||||
|
||||
INFO("Sorting edge-based Nodes");
|
||||
std::sort(edgeBasedNodes.begin(), edgeBasedNodes.end());
|
||||
INFO("Removing duplicate nodes (if any)");
|
||||
|
@ -126,7 +126,7 @@ public:
|
||||
template< class InputEdgeT >
|
||||
explicit EdgeBasedGraphFactory(int nodes, std::vector<InputEdgeT> & inputEdges, std::vector<NodeID> & _bollardNodes, std::vector<NodeID> & trafficLights, std::vector<_Restriction> & inputRestrictions, std::vector<NodeInfo> & nI, boost::property_tree::ptree speedProfile, std::string & srtm);
|
||||
|
||||
void Run();
|
||||
void Run(const char * originalEdgeDataFilename);
|
||||
void GetEdgeBasedEdges( std::vector< EdgeBasedEdge >& edges );
|
||||
void GetEdgeBasedNodes( std::vector< EdgeBasedNode> & nodes);
|
||||
void GetOriginalEdgeData( std::vector< OriginalEdgeData> & originalEdgeData);
|
||||
|
@ -126,7 +126,7 @@ int main (int argc, char *argv[]) {
|
||||
EdgeBasedGraphFactory * edgeBasedGraphFactory = new EdgeBasedGraphFactory (nodeBasedNodeNumber, edgeList, bollardNodes, trafficLightNodes, inputRestrictions, internalToExternalNodeMapping, speedProfile, SRTM_ROOT);
|
||||
std::vector<ImportEdge>().swap(edgeList);
|
||||
|
||||
edgeBasedGraphFactory->Run();
|
||||
edgeBasedGraphFactory->Run(edgeOut);
|
||||
std::vector<_Restriction>().swap(inputRestrictions);
|
||||
std::vector<NodeID>().swap(bollardNodes);
|
||||
std::vector<NodeID>().swap(trafficLightNodes);
|
||||
@ -157,12 +157,12 @@ int main (int argc, char *argv[]) {
|
||||
std::vector<OriginalEdgeData> originalEdgeData;
|
||||
edgeBasedGraphFactory->GetOriginalEdgeData(originalEdgeData);
|
||||
|
||||
std::ofstream oedOutFile(edgeOut, std::ios::binary);
|
||||
unsigned numberOfOrigEdges = originalEdgeData.size();
|
||||
oedOutFile.write((char*)&numberOfOrigEdges, sizeof(unsigned));
|
||||
oedOutFile.write((char*)&(originalEdgeData[0]), originalEdgeData.size()*sizeof(OriginalEdgeData));
|
||||
oedOutFile.close();
|
||||
std::vector<OriginalEdgeData>().swap(originalEdgeData);
|
||||
// std::ofstream oedOutFile(edgeOut, std::ios::binary);
|
||||
// unsigned numberOfOrigEdges = originalEdgeData.size();
|
||||
// oedOutFile.write((char*)&numberOfOrigEdges, sizeof(unsigned));
|
||||
// oedOutFile.write((char*)&(originalEdgeData[0]), originalEdgeData.size()*sizeof(OriginalEdgeData));
|
||||
// oedOutFile.close();
|
||||
// std::vector<OriginalEdgeData>().swap(originalEdgeData);
|
||||
|
||||
std::vector<EdgeBasedGraphFactory::EdgeBasedNode> nodeBasedEdgeList;
|
||||
edgeBasedGraphFactory->GetEdgeBasedNodes(nodeBasedEdgeList);
|
||||
|
Loading…
Reference in New Issue
Block a user