diff options
author | Jochen Topf <jochen@topf.org> | 2011-10-13 10:24:30 +0200 |
---|---|---|
committer | Jochen Topf <jochen@topf.org> | 2011-10-13 10:24:30 +0200 |
commit | 13c3e0d2742b90eed09beb19e3622b795da9002b (patch) | |
tree | bae2df6729f7ed0266da8eef7ab40e62cc586729 /tagstats/tagstats_handler.hpp | |
parent | fc9dbd0508e37c0c7398c480d28a69f2a1c3e58a (diff) | |
download | taginfo-13c3e0d2742b90eed09beb19e3622b795da9002b.tar taginfo-13c3e0d2742b90eed09beb19e3622b795da9002b.tar.gz |
fix: distribution map did not work when there were no nodes with a tag
Diffstat (limited to 'tagstats/tagstats_handler.hpp')
-rw-r--r-- | tagstats/tagstats_handler.hpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/tagstats/tagstats_handler.hpp b/tagstats/tagstats_handler.hpp index 58a6212..75b4e65 100644 --- a/tagstats/tagstats_handler.hpp +++ b/tagstats/tagstats_handler.hpp @@ -183,7 +183,7 @@ class TagStatsHandler : public Osmium::Handler::Base { void _print_and_clear_distribution_images(bool for_nodes) { int sum_size=0; - Osmium::Sqlite::Statement* statement_insert_into_key_distributions = db->prepare(for_nodes ? "INSERT INTO key_distributions (nodes, key) VALUES (?, ?);" : "UPDATE key_distributions SET ways=? WHERE key=?"); + Osmium::Sqlite::Statement* statement_insert_into_key_distributions = db->prepare("INSERT INTO key_distributions (key, object_type, png) VALUES (?, ?, ?);"); db->begin_transaction(); for (key_hash_map_t::const_iterator it = tags_stat.begin(); it != tags_stat.end(); it++) { @@ -200,8 +200,9 @@ class TagStatsHandler : public Osmium::Handler::Base { sum_size += size; statement_insert_into_key_distributions - ->bind_blob(ptr, size) // column: nodes/ways - ->bind_text(it->first) // column: key + ->bind_text(it->first) // column: key + ->bind_text(for_nodes ? "n" : "w") // column: object_type + ->bind_blob(ptr, size) // column: png ->execute(); stat->distribution.free_png(ptr); @@ -338,6 +339,17 @@ public: void after_nodes() { _timer_info("processing nodes"); _print_memory_usage(); + + int size; + void* ptr = GeoDistribution::create_empty_png(&size); + Osmium::Sqlite::Statement* statement_insert_into_key_distributions = db->prepare("INSERT INTO key_distributions (png) VALUES (?);"); + db->begin_transaction(); + statement_insert_into_key_distributions + ->bind_blob(ptr, size) // column: png + ->execute(); + db->commit(); + delete statement_insert_into_key_distributions; + _print_and_clear_distribution_images(true); timer = time(0); _timer_info("dumping images"); |