Removed unnecessary nameID of first leg

This commit is contained in:
DennisOSRM 2011-11-16 18:10:51 +01:00
parent 9a6cf7b991
commit f66c1e4a4f
5 changed files with 20 additions and 28 deletions

View File

@ -47,8 +47,7 @@ private:
unsigned distance;
unsigned originalEdges;
unsigned via;
unsigned nameID1;
unsigned nameID2;
unsigned nameID;
bool shortcut;
bool forward;
bool backward;
@ -115,8 +114,7 @@ public:
}
#endif
edge.data.shortcut = false;
edge.data.nameID1 = i->nameID1();
edge.data.nameID2 = i->nameID2();
edge.data.nameID = i->getNameIDOfTurnTarget();
edge.data.via = i->via();
edge.data.turnInstruction = i->turnInstruction();
edge.data.forward = i->isForward();
@ -140,7 +138,7 @@ public:
const NodeID target = edges[i].target;
const NodeID via = edges[i].data.via;
const short turnType = edges[i].data.turnInstruction;
assert(turnType >= 0);
assert(turnType == 0 || turnType == 1);
//remove eigenloops
if ( source == target ) {
i++;
@ -153,8 +151,7 @@ public:
forwardEdge.data.forward = backwardEdge.data.backward = true;
forwardEdge.data.backward = backwardEdge.data.forward = false;
forwardEdge.data.turnInstruction = backwardEdge.data.turnInstruction = turnType;
forwardEdge.data.nameID1 = backwardEdge.data.nameID2 = edges[i].data.nameID1;
forwardEdge.data.nameID2 = backwardEdge.data.nameID1 = edges[i].data.nameID2;
forwardEdge.data.nameID = backwardEdge.data.nameID = edges[i].data.nameID;
forwardEdge.data.shortcut = backwardEdge.data.shortcut = false;
forwardEdge.data.via = backwardEdge.data.via = via;
forwardEdge.data.originalEdges = backwardEdge.data.originalEdges = 1;
@ -359,9 +356,8 @@ public:
newEdge.data.distance = data.distance;
newEdge.data.shortcut = data.shortcut;
newEdge.data.via = data.via;
newEdge.data.nameID1 = data.nameID1;
newEdge.data.nameID2 = data.nameID2;
newEdge.data.nameID1 = data.nameID;
newEdge.data.turnInstruction = data.turnInstruction;
newEdge.data.forward = data.forward;
newEdge.data.backward = data.backward;
edges.push_back( newEdge );
@ -524,7 +520,7 @@ private:
newEdge.data.backward = false;
newEdge.data.via = node;
newEdge.data.shortcut = true;
newEdge.data.turnInstruction = outData.turnInstruction;
newEdge.data.turnInstruction = inData.turnInstruction;
newEdge.data.originalEdges = outData.originalEdges + inData.originalEdges;
data->insertedEdges.push_back( newEdge );

View File

@ -148,11 +148,11 @@ void EdgeBasedGraphFactory::Run() {
newEdge.data.forward = true;
newEdge.data.backward = false;
newEdge.data.via = v;
newEdge.data.nameID1 = _nodeBasedGraph->GetEdgeData(e1).middleName.nameID;
newEdge.data.nameID2 = _nodeBasedGraph->GetEdgeData(e2).middleName.nameID;
newEdge.data.nameID = _nodeBasedGraph->GetEdgeData(e2).middleName.nameID;
//newEdge.data.nameID2 = _nodeBasedGraph->GetEdgeData(e2).middleName.nameID;
//Todo: turn instruction angeben
if(newEdge.data.nameID1 == newEdge.data.nameID2)
if(newEdge.data.nameID == _nodeBasedGraph->GetEdgeData(e1).middleName.nameID)
newEdge.data.turnInstruction = 0;
else {
//TODO: Winkel berechnen und angepasste Anweisung geben.
@ -163,7 +163,7 @@ void EdgeBasedGraphFactory::Run() {
EdgeBasedNode currentNode;
if(_nodeBasedGraph->GetEdgeData(e1).type != 14) {
currentNode.nameID = newEdge.data.nameID1;
currentNode.nameID = _nodeBasedGraph->GetEdgeData(e1).middleName.nameID;
currentNode.lat1 = inputNodeInfoList[u].lat;
currentNode.lon1 = inputNodeInfoList[u].lon;
currentNode.lat2 = inputNodeInfoList[v].lat;

View File

@ -55,8 +55,8 @@ private:
struct _EdgeBasedEdgeData {
int distance;
unsigned via;
unsigned nameID1;
unsigned nameID2;
unsigned nameID;
// unsigned nameID2;
bool forward;
bool backward;
short turnInstruction;

View File

@ -88,8 +88,7 @@ public:
_source(myEdge.source),
_target(myEdge.target),
_via(myEdge.data.via),
_nameID1(myEdge.data.nameID1),
_nameID2(myEdge.data.nameID2),
_nameID1(myEdge.data.nameID),
_weight(myEdge.data.distance),
forward(myEdge.data.forward),
backward(myEdge.data.backward),
@ -97,10 +96,10 @@ public:
/** Default constructor. target and weight are set to 0.*/
EdgeBasedEdge() :
_source(0), _target(0), _via(0), _nameID1(0), _nameID2(0), _weight(0), forward(0), backward(0), _turnInstruction(0) { assert(false); } //shall not be used.
_source(0), _target(0), _via(0), _nameID1(0), _weight(0), forward(0), backward(0), _turnInstruction(0) { assert(false); } //shall not be used.
explicit EdgeBasedEdge(NodeID s, NodeID t, NodeID v, unsigned n1, unsigned n2, EdgeWeight w, bool f, bool b, short ty) :
_source(s), _target(t), _via(v), _nameID1(n1), _nameID2(n2), _weight(w), forward(f), backward(b), _turnInstruction(ty) { assert(ty >= 0); }
_source(s), _target(t), _via(v), _nameID1(n1), _weight(w), forward(f), backward(b), _turnInstruction(ty) { assert(ty >= 0); }
NodeID target() const {return _target; }
NodeID source() const {return _source; }
@ -110,14 +109,13 @@ public:
bool isBackward() const { return backward; }
bool isForward() const { return forward; }
unsigned nameID1() const { return _nameID1; }
unsigned nameID2() const { return _nameID2; }
unsigned getNameIDOfTurnTarget() const { return _nameID1; }
NodeID _source;
NodeID _target;
NodeID _via;
unsigned _nameID1;
unsigned _nameID2;
// unsigned _nameID2;
EdgeWeight _weight;
bool forward;
bool backward;

View File

@ -121,18 +121,16 @@ int main (int argc, char *argv[]) {
sigaddset(&wait_mask, SIGQUIT);
sigaddset(&wait_mask, SIGTERM);
pthread_sigmask(SIG_BLOCK, &wait_mask, 0);
std::cout << "[server] running and waiting for requests" << std::endl;
sigwait(&wait_mask, &sig);
#else
// Set console control handler to allow server to be stopped.
console_ctrl_function = boost::bind(&Server::Stop, s);
SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
std::cout << "[server] running and waiting for requests" << std::endl;
s->Run();
#endif
std::cout << "[server] running and waiting for requests" << std::endl;
std::cout << std::endl << "[server] shutting down" << std::endl;
s->Stop();
t.join();