expose component_id in phantom node

This commit is contained in:
Dennis Luxen 2014-12-24 10:25:27 +01:00
parent c7d3d635f6
commit 1bb3da0332
3 changed files with 16 additions and 4 deletions

View File

@ -29,7 +29,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PhantomNode::PhantomNode(NodeID forward_node_id, NodeID reverse_node_id, unsigned name_id,
int forward_weight, int reverse_weight, int forward_offset, int reverse_offset,
unsigned packed_geometry_id, FixedPointCoordinate &location,
unsigned packed_geometry_id, unsigned component_id, FixedPointCoordinate &location,
unsigned short fwd_segment_position,
TravelMode forward_travel_mode, TravelMode backward_travel_mode) :
forward_node_id(forward_node_id),
@ -40,6 +40,7 @@ PhantomNode::PhantomNode(NodeID forward_node_id, NodeID reverse_node_id, unsigne
forward_offset(forward_offset),
reverse_offset(reverse_offset),
packed_geometry_id(packed_geometry_id),
component_id(component_id),
location(location),
fwd_segment_position(fwd_segment_position),
forward_travel_mode(forward_travel_mode),
@ -55,6 +56,7 @@ PhantomNode::PhantomNode() :
forward_offset(0),
reverse_offset(0),
packed_geometry_id(SPECIAL_EDGEID),
component_id(-1),
fwd_segment_position(0),
forward_travel_mode(TRAVEL_MODE_INACCESSIBLE),
backward_travel_mode(TRAVEL_MODE_INACCESSIBLE)
@ -105,6 +107,11 @@ bool PhantomNode::is_valid(const unsigned number_of_nodes) const
);
}
bool PhantomNode::is_in_tiny_component() const
{
return component_id != 0;
}
bool PhantomNode::is_valid() const
{
return location.is_valid() &&

View File

@ -39,7 +39,7 @@ struct PhantomNode
{
PhantomNode(NodeID forward_node_id, NodeID reverse_node_id, unsigned name_id,
int forward_weight, int reverse_weight, int forward_offset, int reverse_offset,
unsigned packed_geometry_id, FixedPointCoordinate &location,
unsigned packed_geometry_id, unsigned component_id, FixedPointCoordinate &location,
unsigned short fwd_segment_position,
TravelMode forward_travel_mode, TravelMode backward_travel_mode);
@ -53,6 +53,7 @@ struct PhantomNode
int forward_offset;
int reverse_offset;
unsigned packed_geometry_id;
unsigned component_id;
FixedPointCoordinate location;
unsigned short fwd_segment_position;
TravelMode forward_travel_mode : 4;
@ -70,6 +71,8 @@ struct PhantomNode
bool is_valid() const;
bool is_in_tiny_component() const;
bool operator==(const PhantomNode & other) const;
};
@ -104,6 +107,7 @@ inline std::ostream& operator<<(std::ostream &out, const PhantomNode & pn)
"fwd-o: " << pn.forward_offset << ", " <<
"rev-o: " << pn.reverse_offset << ", " <<
"geom: " << pn.packed_geometry_id << ", " <<
"comp: " << pn.component_id << ", " <<
"pos: " << pn.fwd_segment_position << ", " <<
"loc: " << pn.location;
return out;

View File

@ -765,14 +765,14 @@ class StaticRTree
const EdgeDataT & current_segment = current_query_node.node.template get<EdgeDataT>();
// don't collect too many results from big components
if (number_of_results_found_in_big_cc == number_of_results &&
if (number_of_results_found_in_big_cc == number_of_results &&
current_segment.component_id == 0)
{
continue;
}
// don't collect too many results from small components
if (number_of_results_found_in_tiny_cc == number_of_results &&
if (number_of_results_found_in_tiny_cc == number_of_results &&
current_segment.component_id != 0)
{
continue;
@ -804,6 +804,7 @@ class StaticRTree
current_segment.forward_offset,
current_segment.reverse_offset,
current_segment.packed_geometry_id,
current_segment.component_id,
foot_point_coordinate_on_segment,
current_segment.fwd_segment_position,
current_segment.forward_travel_mode,