Skip to content

Commit

Permalink
Merge pull request #1910 from joto/no-tags-no-processing
Browse files Browse the repository at this point in the history
Don't process objects without tags in pgsql/flex output in append mode
  • Loading branch information
lonvia authored Feb 11, 2023
2 parents b6ab0c6 + 4ebd470 commit 9c4d7f6
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 82 deletions.
103 changes: 35 additions & 68 deletions src/osmdata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,20 @@ void osmdata_t::node(osmium::Node const &node)
m_mid->node(node);

if (node.deleted()) {
node_delete(node.id());
} else {
if (m_append) {
node_modify(node);
m_output->node_delete(node.id());
return;
}

bool const has_tags_or_attrs = m_with_extra_attrs || !node.tags().empty();
if (m_append) {
if (has_tags_or_attrs) {
m_output->node_modify(node);
} else {
node_add(node);
m_output->node_delete(node.id());
}
m_dependency_manager->node_changed(node.id());
} else if (has_tags_or_attrs) {
m_output->node_add(node);
}
}

Expand All @@ -78,13 +85,20 @@ void osmdata_t::way(osmium::Way &way)
m_mid->way(way);

if (way.deleted()) {
way_delete(way.id());
} else {
if (m_append) {
way_modify(&way);
m_output->way_delete(way.id());
return;
}

bool const has_tags_or_attrs = m_with_extra_attrs || !way.tags().empty();
if (m_append) {
if (has_tags_or_attrs) {
m_output->way_modify(&way);
} else {
way_add(&way);
m_output->way_delete(way.id());
}
m_dependency_manager->way_changed(way.id());
} else if (has_tags_or_attrs) {
m_output->way_add(&way);
}
}

Expand All @@ -110,70 +124,23 @@ void osmdata_t::relation(osmium::Relation const &rel)
m_mid->relation(rel);

if (rel.deleted()) {
relation_delete(rel.id());
} else {
if (m_append) {
relation_modify(rel);
} else {
relation_add(rel);
}
}
}

void osmdata_t::after_relations() { m_mid->after_relations(); }

void osmdata_t::node_add(osmium::Node const &node) const
{
if (m_with_extra_attrs || !node.tags().empty()) {
m_output->node_add(node);
}
}

void osmdata_t::way_add(osmium::Way *way) const
{
if (m_with_extra_attrs || !way->tags().empty()) {
m_output->way_add(way);
m_output->relation_delete(rel.id());
return;
}
}

void osmdata_t::relation_add(osmium::Relation const &rel) const
{
if (m_with_extra_attrs || !rel.tags().empty()) {
bool const has_tags_or_attrs = m_with_extra_attrs || !rel.tags().empty();
if (m_append) {
if (has_tags_or_attrs) {
m_output->relation_modify(rel);
} else {
m_output->relation_delete(rel.id());
}
} else if (has_tags_or_attrs) {
m_output->relation_add(rel);
}
}

void osmdata_t::node_modify(osmium::Node const &node) const
{
m_output->node_modify(node);
m_dependency_manager->node_changed(node.id());
}

void osmdata_t::way_modify(osmium::Way *way) const
{
m_output->way_modify(way);
m_dependency_manager->way_changed(way->id());
}

void osmdata_t::relation_modify(osmium::Relation const &rel) const
{
m_output->relation_modify(rel);
}

void osmdata_t::node_delete(osmid_t id) const
{
m_output->node_delete(id);
}

void osmdata_t::way_delete(osmid_t id) const
{
m_output->way_delete(id);
}

void osmdata_t::relation_delete(osmid_t id) const
{
m_output->relation_delete(id);
}
void osmdata_t::after_relations() { m_mid->after_relations(); }

void osmdata_t::start() const
{
Expand Down
12 changes: 0 additions & 12 deletions src/osmdata.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,18 +61,6 @@ class osmdata_t : public osmium::handler::Handler
void stop() const;

private:
void node_add(osmium::Node const &node) const;
void way_add(osmium::Way *way) const;
void relation_add(osmium::Relation const &rel) const;

void node_modify(osmium::Node const &node) const;
void way_modify(osmium::Way *way) const;
void relation_modify(osmium::Relation const &rel) const;

void node_delete(osmid_t id) const;
void way_delete(osmid_t id) const;
void relation_delete(osmid_t id) const;

/**
* Run stage 1b and stage 1c processing: Process dependent objects in
* append mode.
Expand Down
4 changes: 2 additions & 2 deletions tests/test-parse-osmium.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,8 @@ TEST_CASE("parse diff file")
output, "008-ch.osc.gz", false);

REQUIRE(output->node.added == 0);
REQUIRE(output->node.modified == 1176);
REQUIRE(output->node.deleted == 16773);
REQUIRE(output->node.modified == 153);
REQUIRE(output->node.deleted == 17796);
REQUIRE(output->way.added == 0);
REQUIRE(output->way.modified == 161);
REQUIRE(output->way.deleted == 4);
Expand Down

0 comments on commit 9c4d7f6

Please sign in to comment.