removed libkdtree++ dependency.

This commit is contained in:
Dennis Luxen
2010-07-26 08:17:52 +00:00
parent 92963ced1f
commit ec0108553f
8 changed files with 283 additions and 81 deletions
+6 -1
View File
@@ -78,7 +78,12 @@ inline NodeID readOSMRGraphFromStream(istream &in, vector<EdgeT>& edgeList, vect
// translate the external NodeIDs to internal IDs
ExternalNodeMap::iterator intNodeID = ext2IntNodeMap.find(source);
if( intNodeID == ext2IntNodeMap.end()) { cerr << "unresolved source NodeID: " << source << endl; exit(0); }
if( intNodeID == ext2IntNodeMap.end())
{
cerr << "after " << edgeList.size() << " edges" << endl;
cerr << "->" << source << "," << target << "," << length << "," << dir << "," << weight << endl;
cerr << "unresolved source NodeID: " << source << endl; exit(0);
}
source = intNodeID->second;
intNodeID = ext2IntNodeMap.find(target);
if(intNodeID == ext2IntNodeMap.end()) { cerr << "unresolved target NodeID : " << target << endl; exit(0); }
+8 -15
View File
@@ -39,23 +39,23 @@ class SearchEngine {
private:
const GraphT * _graph;
public:
SearchEngine(GraphT * g, KDTST * k) : _graph(g), kdtree(k) {}
SearchEngine(GraphT * g, KDTST * k) : _graph(g), nodeHelpDesk(k) {}
~SearchEngine() {}
const NodeInfo& getNodeInfo(NodeID id) const
const void getNodeInfo(NodeID id, NodeInfo * info) const
{
return kdtree->getExternalNodeInfo(id);
nodeHelpDesk->getExternalNodeInfo(id, info);
}
unsigned int numberOfNodes() const
{
return kdtree->getNumberOfNodes();
return nodeHelpDesk->getNumberOfNodes();
}
unsigned int ComputeRoute(NodeID start, NodeID target, vector<NodeID> * path)
{
_Heap * _forwardHeap = new _Heap(kdtree->getNumberOfNodes());
_Heap * _backwardHeap = new _Heap(kdtree->getNumberOfNodes());
_Heap * _forwardHeap = new _Heap(nodeHelpDesk->getNumberOfNodes());
_Heap * _backwardHeap = new _Heap(nodeHelpDesk->getNumberOfNodes());
NodeID middle = ( NodeID ) 0;
unsigned int _upperbound = std::numeric_limits<unsigned int>::max();
_forwardHeap->Insert(start, 0, start);
@@ -93,16 +93,10 @@ public:
packedPath.push_back( pathNode );
}
// for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
// {
// cout << packedPath[i] << endl;
// }
// push start node explicitely
path->push_back(packedPath[0]);
for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
{
// path->push_back(*it);
_UnpackEdge(packedPath[i], packedPath[i+1], path);
}
@@ -115,10 +109,10 @@ public:
unsigned int findNearestNodeForLatLon(const int lat, const int lon, NodeCoords<NodeID> * data) const
{
return kdtree->findNearestNodeIDForLatLon( lat, lon, data);
return nodeHelpDesk->findNearestNodeIDForLatLon( lat, lon, data);
}
private:
KDTST * kdtree;
KDTST * nodeHelpDesk;
void _RoutingStep(_Heap * _forwardHeap, _Heap *_backwardHeap, const bool& forwardDirection, NodeID * middle, unsigned int * _upperbound)
{
@@ -190,7 +184,6 @@ private:
}
}
assert(smallestWeight != SPECIAL_EDGEID);
const EdgeData ed = _graph->GetEdgeData(smallestEdge);