Esempio n. 1
0
    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;
            }
        }
    }
Esempio n. 2
0
    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();
        }
    }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 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;
 }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
 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;
 }