void node(osmium::Node& node) { if (node.id() == 101000) { assert(node.version() == 1); assert(node.location().lon() == 1.12); assert(node.location().lat() == 1.02); } else if (node.id() == 101001) { assert(node.version() == 1); assert(node.location().lon() == 1.12); assert(node.location().lat() == 1.03); } else if (node.id() == 101002) { } else if (node.id() == 101003) { } else { throw std::runtime_error("Unknown ID"); } }
void parse_osmium_t::node(osmium::Node& node) { if (node.deleted()) { m_data->node_delete(node.id()); } else { // if the node is not valid, then node.location.lat/lon() can throw. // we probably ought to treat invalid locations as if they were // deleted and ignore them. if (!node.location().valid()) { fprintf(stderr, "WARNING: Node %" PRIdOSMID " (version %ud) has an invalid " "location and has been ignored. This is not expected to happen with " "recent planet files, so please check that your input is correct.\n", node.id(), node.version()); return; } if (!m_bbox || m_bbox->contains(node.location())) { if (m_append) { m_data->node_modify(node); } else { m_data->node_add(node); } m_stats.add_node(node.id()); } } }
void check_node_2(osmium::Node& node) { REQUIRE(2 == node.id()); REQUIRE(3 == node.version()); REQUIRE(true == node.visible()); REQUIRE(333 == node.changeset()); REQUIRE(21 == node.uid()); REQUIRE(123 == node.timestamp()); REQUIRE(osmium::Location(3.5, 4.7) == node.location()); REQUIRE(std::string("testuser") == node.user()); for (osmium::memory::Item& item : node) { REQUIRE(osmium::item_type::tag_list == item.type()); } REQUIRE(!node.tags().empty()); REQUIRE(2 == std::distance(node.tags().begin(), node.tags().end())); int n = 0; for (const osmium::Tag& tag : node.tags()) { switch (n) { case 0: REQUIRE(std::string("amenity") == tag.key()); REQUIRE(std::string("bank") == tag.value()); break; case 1: REQUIRE(std::string("name") == tag.key()); REQUIRE(std::string("OSM Savings") == tag.value()); break; } ++n; } REQUIRE(2 == n); }
void node(const osmium::Node& node) { if (m_write_change_ops) { open_close_op_tag(node.visible() ? (node.version() == 1 ? operation::op_create : operation::op_modify) : operation::op_delete); } write_prefix(); m_out += "<node"; write_meta(node); if (node.location()) { m_out += " lat=\""; osmium::util::double2string(std::back_inserter(m_out), node.location().lat_without_check(), 7); m_out += "\" lon=\""; osmium::util::double2string(std::back_inserter(m_out), node.location().lon_without_check(), 7); m_out += "\""; } if (node.tags().empty()) { m_out += "/>\n"; return; } m_out += ">\n"; write_tags(node.tags()); write_prefix(); m_out += "</node>\n"; }
void check_node_2(osmium::Node& node) { BOOST_CHECK_EQUAL(2, node.id()); BOOST_CHECK_EQUAL(3, node.version()); BOOST_CHECK_EQUAL(true, node.visible()); BOOST_CHECK_EQUAL(333, node.changeset()); BOOST_CHECK_EQUAL(21, node.uid()); BOOST_CHECK_EQUAL(123, node.timestamp()); BOOST_CHECK_EQUAL(osmium::Location(3.5, 4.7), node.location()); BOOST_CHECK_EQUAL("testuser", node.user()); for (osmium::memory::Item& item : node) { BOOST_CHECK_EQUAL(osmium::item_type::tag_list, item.type()); } BOOST_CHECK(!node.tags().empty()); BOOST_CHECK_EQUAL(2, std::distance(node.tags().begin(), node.tags().end())); int n = 0; for (osmium::Tag& tag : node.tags()) { switch (n) { case 0: BOOST_CHECK_EQUAL("amenity", tag.key()); BOOST_CHECK_EQUAL("bank", tag.value()); break; case 1: BOOST_CHECK_EQUAL("name", tag.key()); BOOST_CHECK_EQUAL("OSM Savings", tag.value()); break; } ++n; } BOOST_CHECK_EQUAL(2, n); }
// - walk over all node-versions // - walk over all bboxes // - if the node-id is recorded in the bboxes node-trackers // - send the node to the bboxes writer void node(const osmium::Node& node) { if (debug) { std::cerr << "cut_administrative node " << node.id() << " v" << node.version() << "\n"; } for (const auto& extract : info->extracts) { if (extract->node_tracker.get(node.id())){ extract->write(node); } } }
// - walk over all node-versions // - walk over all bboxes // - if the node-id is recorded in the bboxes node-tracker or in the extra-node-tracker // - send the node to the bboxes writer void node(const osmium::Node& node) { if (debug) { std::cerr << "softcut node " << node.positive_id() << " v" << node.version() << "\n"; } for (const auto& extract : info->extracts) { if (extract->node_tracker.get(node.positive_id()) || extract->extra_node_tracker.get(node.positive_id())) { extract->write(node); } } }
// - walk over all node-versions // - walk over all bboxes // - if the current node-version is inside the bbox // - record its id in the bboxes node-tracker void node(const osmium::Node& node) { if (debug) { std::cerr << "softcut node " << node.positive_id() << " v" << node.version() << "\n"; } for (const auto& extract : info->extracts) { if (extract->contains(node)) { if (debug) std::cerr << "node is in extract, recording in node_tracker\n"; extract->node_tracker.set(node.positive_id()); } } }
void node(const osmium::Node& node) { ++nodes; if (!matches_user_filter(node)) return; ++unodes; if (node.visible()==false) { m_nodefile << node.id() << "\t" << node.version() << "\t" << node.changeset() << "\t" << node.timestamp().to_iso() << "\t" << node.uid() << std::endl; } }
void check_node_1(osmium::Node& node) { REQUIRE(1 == node.id()); REQUIRE(3 == node.version()); REQUIRE(true == node.visible()); REQUIRE(333 == node.changeset()); REQUIRE(21 == node.uid()); REQUIRE(123 == node.timestamp()); REQUIRE(osmium::Location(3.5, 4.7) == node.location()); REQUIRE(std::string("testuser") == node.user()); for (osmium::memory::Item& item : node) { REQUIRE(osmium::item_type::tag_list == item.type()); } REQUIRE(node.tags().begin() == node.tags().end()); REQUIRE(node.tags().empty()); REQUIRE(0 == std::distance(node.tags().begin(), node.tags().end())); }
void check_node_1(osmium::Node& node) { BOOST_CHECK_EQUAL(1, node.id()); BOOST_CHECK_EQUAL(3, node.version()); BOOST_CHECK_EQUAL(true, node.visible()); BOOST_CHECK_EQUAL(333, node.changeset()); BOOST_CHECK_EQUAL(21, node.uid()); BOOST_CHECK_EQUAL(123, node.timestamp()); BOOST_CHECK_EQUAL(osmium::Location(3.5, 4.7), node.location()); BOOST_CHECK_EQUAL("testuser", node.user()); for (osmium::memory::Item& item : node) { BOOST_CHECK_EQUAL(osmium::item_type::tag_list, item.type()); } BOOST_CHECK_EQUAL(node.tags().begin(), node.tags().end()); BOOST_CHECK(node.tags().empty()); BOOST_CHECK_EQUAL(0, std::distance(node.tags().begin(), node.tags().end())); }