diff options
Diffstat (limited to 'tagstats/statistics_handler.hpp')
-rw-r--r-- | tagstats/statistics_handler.hpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tagstats/statistics_handler.hpp b/tagstats/statistics_handler.hpp index ad5c91a..04801ea 100644 --- a/tagstats/statistics_handler.hpp +++ b/tagstats/statistics_handler.hpp @@ -47,6 +47,9 @@ public: "ways", "way_tags", "way_nodes", + "way_nodes_consecutive", + "way_nodes_within_127", + "way_nodes_within_32767", "max_way_id", "max_tags_on_way", "max_nodes_on_way", @@ -119,6 +122,19 @@ public: 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 relation(const shared_ptr<Osmium::OSM::Relation const>& relation) { @@ -186,6 +202,9 @@ private: uint64_t ways; uint64_t way_tags; uint64_t way_nodes; + uint64_t way_nodes_consecutive; + uint64_t way_nodes_within_127; + uint64_t way_nodes_within_32767; uint64_t max_way_id; uint64_t max_tags_on_way; uint64_t max_nodes_on_way; |