Esempio n. 1
0
        private static void WriteMember(XmlWriter writer, OsmMember member)
        {
            writer.WriteStartElement(Constants.Constants.osmNd);
            writer.WriteAttributeString(Constants.Constants.typeString, EnumExtensions.GetEnumAttributeValue(member.Type));
            writer.WriteAttributeString(Constants.Constants.refString, member.Ref.ToString());
            if (member.Role == RelationMemberRoleEnum.None)
            {
                writer.WriteAttributeString(Constants.Constants.roleString, "");
            }
            else
            {
                writer.WriteAttributeString(Constants.Constants.roleString, member.Role.ToString());
            }

            writer.WriteEndElement();
        }
        private void ReadRelation(XElement el)
        {
            long     id        = el.GetAttributeLong("id");
            double   lat       = el.GetAttributeDouble("lat");
            double   lon       = el.GetAttributeDouble("lon");
            int      version   = el.GetAttributeInt("version");
            DateTime timestamp = el.GetAttributeDateTime("timestamp", DateTime.MinValue);
            int      changeset = el.GetAttributeInt("changeset");

            Dictionary <string, string> tags    = new Dictionary <string, string>();
            List <OsmMember>            members = new List <OsmMember>();

            foreach (var element in el.Nodes().OfType <XElement>().Where(e => e.Name == "tag"))
            {
                string key   = element.Attribute("k").Value;
                string value = element.Attribute("v").Value;
                tags.Add(key, value);
            }

            foreach (var element in el.Nodes().OfType <XElement>().Where(e => e.Name == "member"))
            {
                OsmMember member = new OsmMember()
                {
                    Type = element.Attribute("type")?.Value,
                    Ref  = long.Parse(element.Attribute("ref")?.Value),
                    Role = element.Attribute("role")?.Value,
                };

                members.Add(member);
            }

            OsmRelation relation = new OsmRelation()
            {
                Id        = id,
                Version   = version,
                Timestamp = timestamp,
                Changeset = changeset,
                Tags      = tags,
                Members   = members,
            };

            RelationRead(relation);
        }