void relation(const shared_ptr<Osmium::OSM::Relation const>& relation) { update_common_stats(*relation); m_stats.relations++; if (m_id > static_cast<int64_t>(m_stats.max_relation_id)) { m_stats.max_relation_id = m_id; } m_stats.relation_tags += m_tag_count; osm_sequence_id_t member_count = relation->members().size(); m_stats.relation_members += member_count; if (m_tag_count > static_cast<int64_t>(m_stats.max_tags_on_relation)) { m_stats.max_tags_on_relation = m_tag_count; } if (member_count > static_cast<int64_t>(m_stats.max_members_on_relation)) { m_stats.max_members_on_relation = member_count; } if (m_version > static_cast<int64_t>(m_stats.max_relation_version)) { m_stats.max_relation_version = m_version; } m_stats.sum_relation_version += m_version; BOOST_FOREACH(const Osmium::OSM::RelationMember& member, relation->members()) { switch (member.type()) { case 'n': ++m_stats.relation_member_nodes; break; case 'w': ++m_stats.relation_member_ways; break; case 'r': ++m_stats.relation_member_relations; break; } } }
void way(const shared_ptr<Osmium::OSM::Way const>& way) { update_common_stats(*way); m_stats.ways++; if (way->is_closed()) { m_stats.closed_ways++; } if (m_id > static_cast<int64_t>(m_stats.max_way_id)) { m_stats.max_way_id = m_id; } m_stats.way_tags += m_tag_count; m_stats.way_nodes += way->nodes().size(); if (m_tag_count > static_cast<int64_t>(m_stats.max_tags_on_way)) { m_stats.max_tags_on_way = m_tag_count; } if (way->nodes().size() > static_cast<int64_t>(m_stats.max_nodes_on_way)) { m_stats.max_nodes_on_way = way->nodes().size(); } if (m_version > static_cast<int64_t>(m_stats.max_way_version)) { m_stats.max_way_version = m_version; } m_stats.sum_way_version += m_version; osm_object_id_t ref = 0; BOOST_FOREACH(const Osmium::OSM::WayNode& wn, way->nodes()) { osm_object_id_t diff = wn.ref() - ref; if (diff == 1) { ++m_stats.way_nodes_consecutive; } else if (diff <= 127) { // 2^7-1 ++m_stats.way_nodes_within_127; } else if (diff <= 32767) { // 2^15-1 ++m_stats.way_nodes_within_32767; } ref = wn.ref(); } }
void callback_node(const OSM::Node *node) { update_common_stats(node); stats.nodes++; if (tag_count == 0) stats.nodes_without_tags++; if (id > (int64_t) stats.max_node_id) stats.max_node_id = id; stats.node_tags += tag_count; if (tag_count > (int64_t) stats.max_tags_on_node) stats.max_tags_on_node = tag_count; if (version > (int64_t) stats.max_node_version) stats.max_node_version = version; stats.sum_node_version += version; }
void callback_relation(const OSM::Relation *relation) { update_common_stats(relation); stats.relations++; if (id > (int64_t) stats.max_relation_id) stats.max_relation_id = id; stats.relation_tags += tag_count; osm_sequence_id_t member_count = relation->member_count(); stats.relation_members += member_count; if (tag_count > (int64_t) stats.max_tags_on_relation) stats.max_tags_on_relation = tag_count; if (member_count > (int64_t) stats.max_members_on_relation) stats.max_members_on_relation = member_count; if (version > (int64_t) stats.max_relation_version) stats.max_relation_version = version; stats.sum_relation_version += version; }
void callback_way(const OSM::Way *way) { update_common_stats(way); stats.ways++; if (way->is_closed()) stats.closed_ways++; if (id > (int64_t) stats.max_way_id) stats.max_way_id = id; stats.way_tags += tag_count; stats.way_nodes += way->node_count(); if (tag_count > (int64_t) stats.max_tags_on_way) stats.max_tags_on_way = tag_count; if (way->node_count() > (int64_t) stats.max_nodes_on_way) stats.max_nodes_on_way = way->node_count(); if (version > (int64_t) stats.max_way_version) stats.max_way_version = version; stats.sum_way_version += version; }
void relation(const shared_ptr<Osmium::OSM::Relation const>& relation) { update_common_stats(relation); m_stats.relations++; if (m_id > (int64_t) m_stats.max_relation_id) { m_stats.max_relation_id = m_id; } m_stats.relation_tags += m_tag_count; osm_sequence_id_t member_count = relation->members().size(); m_stats.relation_members += member_count; if (m_tag_count > (int64_t) m_stats.max_tags_on_relation) { m_stats.max_tags_on_relation = m_tag_count; } if (member_count > (int64_t) m_stats.max_members_on_relation) { m_stats.max_members_on_relation = member_count; } if (m_version > (int64_t) m_stats.max_relation_version) { m_stats.max_relation_version = m_version; } m_stats.sum_relation_version += m_version; }