Merge branch 'master' of https://DennisOSRM@github.com/DennisOSRM/Project-OSRM.git
This commit is contained in:
commit
bfaab86330
@ -239,7 +239,8 @@ public:
|
|||||||
bool flushedContractor = false;
|
bool flushedContractor = false;
|
||||||
while ( numberOfContractedNodes < numberOfNodes ) {
|
while ( numberOfContractedNodes < numberOfNodes ) {
|
||||||
if(!flushedContractor && (numberOfContractedNodes > (numberOfNodes*0.75) ) ){
|
if(!flushedContractor && (numberOfContractedNodes > (numberOfNodes*0.75) ) ){
|
||||||
INFO("Flushing memory after " << numberOfContractedNodes << " nodes");
|
std::vector<_ContractorEdge> newSetOfEdges; //this one is not explicitely cleared since it goes out of scope anywa
|
||||||
|
std::cout << " [flush " << numberOfContractedNodes << " nodes] " << std::flush;
|
||||||
|
|
||||||
//Delete old heap data to free memory that we need for the coming operations
|
//Delete old heap data to free memory that we need for the coming operations
|
||||||
for ( unsigned threadNum = 0; threadNum < maxThreads; threadNum++ ) {
|
for ( unsigned threadNum = 0; threadNum < maxThreads; threadNum++ ) {
|
||||||
@ -264,9 +265,6 @@ public:
|
|||||||
remainingNodes[newNodeID].first = newNodeID;
|
remainingNodes[newNodeID].first = newNodeID;
|
||||||
}
|
}
|
||||||
|
|
||||||
//create new _DynamicGraph, goes out of scope after the renumbering
|
|
||||||
boost::shared_ptr<_DynamicGraph> _newGraph ( new _DynamicGraph(remainingNodes.size()) );
|
|
||||||
|
|
||||||
//Write dummy number of edges to temporary file
|
//Write dummy number of edges to temporary file
|
||||||
std::ofstream temporaryEdgeStorage(temporaryEdgeStorageFilename.c_str(), std::ios::binary);
|
std::ofstream temporaryEdgeStorage(temporaryEdgeStorageFilename.c_str(), std::ios::binary);
|
||||||
initialFilePosition = temporaryEdgeStorage.tellp();
|
initialFilePosition = temporaryEdgeStorage.tellp();
|
||||||
@ -277,7 +275,6 @@ public:
|
|||||||
for(unsigned i = 0; i < _graph->GetNumberOfNodes(); ++i) {
|
for(unsigned i = 0; i < _graph->GetNumberOfNodes(); ++i) {
|
||||||
//INFO("Restructuring node " << i << "|" << _graph->GetNumberOfNodes());
|
//INFO("Restructuring node " << i << "|" << _graph->GetNumberOfNodes());
|
||||||
const NodeID start = i;
|
const NodeID start = i;
|
||||||
//UINT_MAX indicates that node is already contracted
|
|
||||||
for(_DynamicGraph::EdgeIterator currentEdge = _graph->BeginEdges(start); currentEdge < _graph->EndEdges(start); ++currentEdge) {
|
for(_DynamicGraph::EdgeIterator currentEdge = _graph->BeginEdges(start); currentEdge < _graph->EndEdges(start); ++currentEdge) {
|
||||||
_DynamicGraph::EdgeData & data = _graph->GetEdgeData(currentEdge);
|
_DynamicGraph::EdgeData & data = _graph->GetEdgeData(currentEdge);
|
||||||
const NodeID target = _graph->GetTarget(currentEdge);
|
const NodeID target = _graph->GetTarget(currentEdge);
|
||||||
@ -290,10 +287,15 @@ public:
|
|||||||
}else {
|
}else {
|
||||||
//node is not yet contracted.
|
//node is not yet contracted.
|
||||||
//add (renumbered) outgoing edges to new DynamicGraph.
|
//add (renumbered) outgoing edges to new DynamicGraph.
|
||||||
data.originalViaNodeID = true;
|
_ContractorEdge newEdge;
|
||||||
|
newEdge.source = newNodeIDFromOldNodeIDMap[start];
|
||||||
|
newEdge.target = newNodeIDFromOldNodeIDMap[target];
|
||||||
|
newEdge.data = data;
|
||||||
|
newEdge.data.originalViaNodeID = true;
|
||||||
assert(UINT_MAX != newNodeIDFromOldNodeIDMap[start] );
|
assert(UINT_MAX != newNodeIDFromOldNodeIDMap[start] );
|
||||||
assert(UINT_MAX != newNodeIDFromOldNodeIDMap[target]);
|
assert(UINT_MAX != newNodeIDFromOldNodeIDMap[target]);
|
||||||
_newGraph->InsertEdge(newNodeIDFromOldNodeIDMap[start], newNodeIDFromOldNodeIDMap[target], data );
|
// _newGraph->InsertEdge(newNodeIDFromOldNodeIDMap[start], newNodeIDFromOldNodeIDMap[target], data );
|
||||||
|
newSetOfEdges.push_back(newEdge);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,17 +312,22 @@ public:
|
|||||||
nodePriority.swap(newNodePriority);
|
nodePriority.swap(newNodePriority);
|
||||||
//Delete old nodePriority vector
|
//Delete old nodePriority vector
|
||||||
std::vector<double>().swap(newNodePriority);
|
std::vector<double>().swap(newNodePriority);
|
||||||
//Alten Graphen löschen und neuen Graphen speichern.
|
//old Graph is removed
|
||||||
|
_graph.reset();
|
||||||
|
|
||||||
|
//create new graph
|
||||||
|
std::sort(newSetOfEdges.begin(), newSetOfEdges.end());
|
||||||
|
|
||||||
|
//int nodes, const ContainerT &graph
|
||||||
|
_graph.reset( new _DynamicGraph(remainingNodes.size(), newSetOfEdges));
|
||||||
|
flushedContractor = true;
|
||||||
|
|
||||||
|
//INFO: MAKE SURE THIS IS THE LAST OPERATION OF THE FLUSH!
|
||||||
//reinitialize heaps and ThreadData objects with appropriate size
|
//reinitialize heaps and ThreadData objects with appropriate size
|
||||||
for ( unsigned threadNum = 0; threadNum < maxThreads; ++threadNum ) {
|
for ( unsigned threadNum = 0; threadNum < maxThreads; ++threadNum ) {
|
||||||
threadData.push_back( new _ThreadData( _newGraph->GetNumberOfNodes() ) );
|
threadData.push_back( new _ThreadData( _graph->GetNumberOfNodes() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
//old Graph is removed
|
|
||||||
_graph.swap(_newGraph);
|
|
||||||
|
|
||||||
flushedContractor = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const int last = ( int ) remainingNodes.size();
|
const int last = ( int ) remainingNodes.size();
|
||||||
|
1
Rakefile
1
Rakefile
@ -64,6 +64,7 @@ def write_server_ini osm_file
|
|||||||
|
|
||||||
hsgrData=#{DATA_FOLDER}/#{osm_file}.osrm.hsgr
|
hsgrData=#{DATA_FOLDER}/#{osm_file}.osrm.hsgr
|
||||||
nodesData=#{DATA_FOLDER}/#{osm_file}.osrm.nodes
|
nodesData=#{DATA_FOLDER}/#{osm_file}.osrm.nodes
|
||||||
|
edgesData=#{DATA_FOLDER}/#{osm_file}.osrm.edges
|
||||||
ramIndex=#{DATA_FOLDER}/#{osm_file}.osrm.ramIndex
|
ramIndex=#{DATA_FOLDER}/#{osm_file}.osrm.ramIndex
|
||||||
fileIndex=#{DATA_FOLDER}/#{osm_file}.osrm.fileIndex
|
fileIndex=#{DATA_FOLDER}/#{osm_file}.osrm.fileIndex
|
||||||
namesData=#{DATA_FOLDER}/#{osm_file}.osrm.names
|
namesData=#{DATA_FOLDER}/#{osm_file}.osrm.names
|
||||||
|
@ -58,6 +58,7 @@ Given /^the preprocessed files for "([^"]*)" are present and up to date$/ do |ar
|
|||||||
File.exists?("#{area}.osrm.restrictions").should == true
|
File.exists?("#{area}.osrm.restrictions").should == true
|
||||||
File.exists?("#{area}.osrm.hsgr").should == true
|
File.exists?("#{area}.osrm.hsgr").should == true
|
||||||
File.exists?("#{area}.osrm.nodes").should == true
|
File.exists?("#{area}.osrm.nodes").should == true
|
||||||
|
File.exists?("#{area}.osrm.edges").should == true
|
||||||
File.exists?("#{area}.osrm.ramIndex").should == true
|
File.exists?("#{area}.osrm.ramIndex").should == true
|
||||||
File.exists?("#{area}.osrm.fileIndex").should == true
|
File.exists?("#{area}.osrm.fileIndex").should == true
|
||||||
end
|
end
|
||||||
|
@ -10,7 +10,7 @@ end
|
|||||||
def read_speedprofile profile
|
def read_speedprofile profile
|
||||||
@speedprofile = {}
|
@speedprofile = {}
|
||||||
@speedprofile_str = nil
|
@speedprofile_str = nil
|
||||||
s = File.read "speedprofiles/#{profile}.ini"
|
s = File.read "test/speedprofiles/#{profile}.ini"
|
||||||
s.scan /(.*)=(.*)/ do |option|
|
s.scan /(.*)=(.*)/ do |option|
|
||||||
@speedprofile[option[0].strip] = option[1].strip
|
@speedprofile[option[0].strip] = option[1].strip
|
||||||
end
|
end
|
||||||
@ -32,6 +32,7 @@ Port = 5000
|
|||||||
|
|
||||||
hsgrData=#{@osm_file}.osrm.hsgr
|
hsgrData=#{@osm_file}.osrm.hsgr
|
||||||
nodesData=#{@osm_file}.osrm.nodes
|
nodesData=#{@osm_file}.osrm.nodes
|
||||||
|
edgesData=#{@osm_file}.osrm.edges
|
||||||
ramIndex=#{@osm_file}.osrm.ramIndex
|
ramIndex=#{@osm_file}.osrm.ramIndex
|
||||||
fileIndex=#{@osm_file}.osrm.fileIndex
|
fileIndex=#{@osm_file}.osrm.fileIndex
|
||||||
namesData=#{@osm_file}.osrm.names
|
namesData=#{@osm_file}.osrm.names
|
||||||
|
@ -6,9 +6,6 @@ Feature: Estimation of travel time
|
|||||||
|
|
||||||
Background: Use specific speeds
|
Background: Use specific speeds
|
||||||
Given the speedprofile "bicycle"
|
Given the speedprofile "bicycle"
|
||||||
And the speedprofile settings
|
|
||||||
| primary | 15 |
|
|
||||||
| footway | 5 |
|
|
||||||
|
|
||||||
Scenario: Basic travel time, 1m scale
|
Scenario: Basic travel time, 1m scale
|
||||||
Given a grid size of 1 meters
|
Given a grid size of 1 meters
|
||||||
@ -179,4 +176,3 @@ Feature: Estimation of travel time
|
|||||||
| 4 | 3 | ab | 24s |
|
| 4 | 3 | ab | 24s |
|
||||||
| 4 | 2 | ab | 48s |
|
| 4 | 2 | ab | 48s |
|
||||||
| 4 | 1 | ab | 72s |
|
| 4 | 1 | ab | 72s |
|
||||||
|
|
||||||
|
@ -66,7 +66,7 @@ BOOL WINAPI console_ctrl_handler(DWORD ctrl_type)
|
|||||||
int main (int argc, char *argv[]) {
|
int main (int argc, char *argv[]) {
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
if(!mlockall(MCL_CURRENT | MCL_FUTURE))
|
if(!mlockall(MCL_CURRENT | MCL_FUTURE))
|
||||||
ERR("Process " << argv[0] << "could not be locked to RAM");
|
WARN("Process " << argv[0] << "could not be locked to RAM");
|
||||||
#endif
|
#endif
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
|
||||||
|
10
test/speedprofiles/bicycle.ini
Normal file
10
test/speedprofiles/bicycle.ini
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[bicycle]
|
||||||
|
accessTag = bicycle
|
||||||
|
obeyOneways = yes
|
||||||
|
obeyBollards = no
|
||||||
|
useRestrictions = yes
|
||||||
|
takeMinimumOfSpeeds = yes
|
||||||
|
defaultSpeed = 15
|
||||||
|
primary = 15
|
||||||
|
cycleway = 15
|
||||||
|
footway = 5
|
23
test/speedprofiles/car.ini
Normal file
23
test/speedprofiles/car.ini
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
[car]
|
||||||
|
accessTag = motorcar
|
||||||
|
defaultSpeed = 50
|
||||||
|
obeyOneways = yes
|
||||||
|
useRestrictions = yes
|
||||||
|
barrier = bollard
|
||||||
|
|
||||||
|
motorway = 100
|
||||||
|
motorway_link = 90
|
||||||
|
trunk = 90
|
||||||
|
trunk_link = 70
|
||||||
|
primary = 70
|
||||||
|
primary_link = 60
|
||||||
|
secondary = 60
|
||||||
|
secondary_link = 50
|
||||||
|
tertiary = 50
|
||||||
|
tertiary_link = 40
|
||||||
|
road = 40
|
||||||
|
residential = 40
|
||||||
|
unclassified = 30
|
||||||
|
service = 20
|
||||||
|
living_street = 10
|
||||||
|
|
28
test/speedprofiles/foot.ini
Normal file
28
test/speedprofiles/foot.ini
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
[foot]
|
||||||
|
accessTag = foot
|
||||||
|
defaultSpeed = 5
|
||||||
|
obeyOneways = no
|
||||||
|
useRestrictions = no
|
||||||
|
obeyBollards = no
|
||||||
|
|
||||||
|
primary = 5
|
||||||
|
primary_link = 5
|
||||||
|
secondary = 5
|
||||||
|
secondary_link = 5
|
||||||
|
tertiary = 5
|
||||||
|
residential = 5
|
||||||
|
unclassified = 5
|
||||||
|
living_street = 5
|
||||||
|
road = 5
|
||||||
|
service = 5
|
||||||
|
track = 5
|
||||||
|
path = 5
|
||||||
|
cycleway = 5
|
||||||
|
footway = 5
|
||||||
|
pedestrian = 5
|
||||||
|
pier = 5
|
||||||
|
steps = 2
|
||||||
|
|
||||||
|
ferry = 5
|
||||||
|
|
||||||
|
excludeFromGrid = ferry
|
Loading…
Reference in New Issue
Block a user