void relation(const osmium::Relation& relation) {
                    if (m_write_change_ops) {
                        open_close_op_tag(relation.visible() ? (relation.version() == 1 ? operation::op_create : operation::op_modify) : operation::op_delete);
                    }

                    write_prefix();
                    m_out += "<relation";
                    write_meta(relation);

                    if (relation.tags().empty() && relation.members().empty()) {
                        m_out += "/>\n";
                        return;
                    }

                    m_out += ">\n";

                    for (const auto& member : relation.members()) {
                        write_prefix();
                        m_out += "  <member type=\"";
                        m_out += item_type_to_name(member.type());
                        oprintf(m_out, "\" ref=\"%" PRId64 "\" role=\"", member.ref());
                        xml_string(m_out, member.role());
                        m_out += "\"/>\n";
                    }

                    write_tags(relation.tags());

                    write_prefix();
                    m_out += "</relation>\n";
                }
示例#2
0
 void relation_member_list(const osmium::RelationMemberList& rml) {
     print_title("MEMBERS", rml);
     for (const auto& member : rml) {
         *m_out << m_prefix
                << "  type="
                << item_type_to_name(member.type())
                << " ref="
                << member.ref()
                << " role=|"
                << member.role()
                << "|\n";
         if (member.full_member()) {
             Dump dump(*m_out, m_with_size, m_prefix + "  | ");
             osmium::apply_item(member.get_object(), dump);
         }
     }
 }