summaryrefslogtreecommitdiff
path: root/tagstats/tagstats_handler.hpp
diff options
context:
space:
mode:
authorJochen Topf <jochen@topf.org>2011-10-13 10:24:30 +0200
committerJochen Topf <jochen@topf.org>2011-10-13 10:24:30 +0200
commit13c3e0d2742b90eed09beb19e3622b795da9002b (patch)
treebae2df6729f7ed0266da8eef7ab40e62cc586729 /tagstats/tagstats_handler.hpp
parentfc9dbd0508e37c0c7398c480d28a69f2a1c3e58a (diff)
downloadtaginfo-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.hpp18
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");