nompute a vector<bool> that indicates if it's possible at all to take a turn at a certain node
This commit is contained in:
parent
676f64b0ef
commit
94cfb4aad7
@ -107,10 +107,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Run() {
|
void Run() {
|
||||||
double time = _Timestamp();
|
|
||||||
RemoveUselessShortcuts();
|
RemoveUselessShortcuts();
|
||||||
time = _Timestamp() - time;
|
|
||||||
cout << "Postprocessing Time: " << time << " s" << endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
template< class EdgeT >
|
template< class EdgeT >
|
||||||
|
@ -274,7 +274,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< class InputEdge >
|
template< class InputEdge >
|
||||||
void checkForAllOrigEdges(std::vector< InputEdge >& inputEdges)
|
void CheckForAllOrigEdges(std::vector< InputEdge >& inputEdges)
|
||||||
{
|
{
|
||||||
for(unsigned int i = 0; i < inputEdges.size(); i++)
|
for(unsigned int i = 0; i < inputEdges.size(); i++)
|
||||||
{
|
{
|
||||||
@ -295,6 +295,29 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template< class InputEdge >
|
||||||
|
void ComputeTurnInfoVector(std::vector< InputEdge >& inputEdges, std::vector<bool> * forwardTurnInfo, std::vector<bool> * backwardTurnInfo)
|
||||||
|
{
|
||||||
|
forwardTurnInfo->resize(inputEdges.size(), false);
|
||||||
|
backwardTurnInfo->resize(inputEdges.size(), false);
|
||||||
|
for(unsigned n = 0; n < inputEdges.size(); n++) {
|
||||||
|
if(inputEdges[n].data.forward)
|
||||||
|
{
|
||||||
|
NodeID target = inputEdges[n].target;
|
||||||
|
if(_graph->BeginEdges(target)+1 < _graph->EndEdges(target)) {
|
||||||
|
forwardTurnInfo->at(n) = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(inputEdges[n].data.backward)
|
||||||
|
{
|
||||||
|
NodeID source = inputEdges[n].source;
|
||||||
|
if(_graph->BeginEdges(source)+1 < _graph->EndEdges(source)) {
|
||||||
|
backwardTurnInfo->at(n) = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Run() {
|
void Run() {
|
||||||
const NodeID numberOfNodes = _graph->GetNumberOfNodes();
|
const NodeID numberOfNodes = _graph->GetNumberOfNodes();
|
||||||
_LogData log;
|
_LogData log;
|
||||||
@ -480,7 +503,6 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
double _Timestamp() {
|
double _Timestamp() {
|
||||||
return time(NULL);
|
return time(NULL);
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ int main (int argc, char *argv[])
|
|||||||
contractor->Run();
|
contractor->Run();
|
||||||
|
|
||||||
cout << "checking data sanity ..." << flush;
|
cout << "checking data sanity ..." << flush;
|
||||||
contractor->checkForAllOrigEdges(edgeList);
|
contractor->CheckForAllOrigEdges(edgeList);
|
||||||
cout << "ok" << endl;
|
cout << "ok" << endl;
|
||||||
std::vector< ContractionCleanup::Edge > contractedEdges;
|
std::vector< ContractionCleanup::Edge > contractedEdges;
|
||||||
contractor->GetEdges( contractedEdges );
|
contractor->GetEdges( contractedEdges );
|
||||||
@ -143,6 +143,14 @@ int main (int argc, char *argv[])
|
|||||||
std::vector< GridEdge> cleanedEdgeList;
|
std::vector< GridEdge> cleanedEdgeList;
|
||||||
cleanup->GetData(cleanedEdgeList);
|
cleanup->GetData(cleanedEdgeList);
|
||||||
|
|
||||||
|
cout << "computing turn vector info ..." << flush;
|
||||||
|
vector<bool> * forwardTurnInfo = new vector<bool>();
|
||||||
|
vector<bool> * backwardTurnInfo = new vector<bool>();
|
||||||
|
contractor->ComputeTurnInfoVector(cleanedEdgeList, forwardTurnInfo, backwardTurnInfo);
|
||||||
|
assert(backwardTurnInfo->size() == forwardTurnInfo->size());
|
||||||
|
//todo: serialize info somewhere
|
||||||
|
cout << "ok" << endl;
|
||||||
|
|
||||||
ofstream edgeOutFile(edgeOut, ios::binary);
|
ofstream edgeOutFile(edgeOut, ios::binary);
|
||||||
|
|
||||||
//Serializing the edge list.
|
//Serializing the edge list.
|
||||||
@ -182,5 +190,7 @@ int main (int argc, char *argv[])
|
|||||||
|
|
||||||
delete cleanup;
|
delete cleanup;
|
||||||
delete contractor;
|
delete contractor;
|
||||||
|
delete forwardTurnInfo;
|
||||||
|
delete backwardTurnInfo;
|
||||||
cout << "finished" << endl;
|
cout << "finished" << endl;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user