/// <summary> /// <member type="way" ref="50905280" role=""/> /// </summary> /// <param name="node"></param> /// <returns></returns> public static OSMMember ParseRelationMember(XmlNode node) { OSMMember osmRelationMember = new OSMMember(); // parse node-attributes foreach (XmlAttribute attribute in node.Attributes) { string name = attribute.Name; switch (name) { case "type": osmRelationMember.Type = (OSMMemberType)int.Parse(attribute.Value); break; case "ref": osmRelationMember.Reference = long.Parse(attribute.Value); break; case "role": osmRelationMember.Role = attribute.Value; break; default: break; } } return(osmRelationMember); }
//<relation id="448540" user="******" uid="172947" visible="true" version="21" changeset="4699466" timestamp="2010-05-14T20:09:09Z"> public static OSMRelation ParseRelation(XmlNode node, ref OSMMap map) { OSMRelation osmRelation = new OSMRelation(); //HashDictionary<int, OSMNode> tmpNodesDict = new HashDictionary<int, OSMNode>(); //bool keep = false; // parse node-attributes foreach (XmlAttribute attribute in node.Attributes) { string name = attribute.Name; switch (name) { case "id": osmRelation.Id = int.Parse(attribute.Value); break; case "visible": osmRelation.Visible = bool.Parse(attribute.Value); break; case "version": osmRelation.version = int.Parse(attribute.Value); break; default: break; } } // parse <nd /> Nodes foreach (XmlNode childnode in node.ChildNodes) { switch (childnode.Name) { case "member": //osmRelation.AddMember(OSMRelationMember.ParseRelationMember(childnode)); osmRelation.Members.Add(OSMMember.ParseRelationMember(childnode)); break; case "tag": //osmRelation.AddTag(OSMParser.ReadKeyValue(childnode)); osmRelation.AddTag(childnode.Attributes[0].Value, childnode.Attributes[0].Value); //KeyValuePair<string, string> tag = OSMParser.ReadKeyValue(childnode); break; default: break; } } return(osmRelation); }