Ejemplo n.º 1
0
        public OsmWay FetchOsmWay(int id)
        {
            var xmlWay = FetchElementXml(wayApiUrl + id.ToString());
            var osmWay = new OsmWay();

            //API always returns a single way.
            XmlNode elementXmlWay = xmlWay.GetElementsByTagName("way")[0];

            //Reading Metadata
            FetchBasicAttributes(elementXmlWay, ref osmWay);

            //Reading Way Nodes
            var nodeList = new List<OsmNode>();
            XmlNodeList xmlNodes = xmlWay.GetElementsByTagName("nd");

            foreach (XmlNode xmlNode in xmlNodes)
            {
                var nodeRef = int.Parse(xmlNode.Attributes["ref"].Value);
                var nodeParser = new OsmNodeParser();
                var node = new OsmNode();

                node = nodeParser.FetchOsmNode(nodeRef);
                nodeList.Add(node);
            }

            osmWay.NodesList = nodeList;

            //Reading Way Tags
            var tagList = new List<Tag>();
            XmlNodeList tagXmlNodes = xmlWay.GetElementsByTagName("tag");

            foreach (XmlNode tagXml in tagXmlNodes)
            {
                var tag = new Tag();
                tag.Key = tagXml.Attributes["k"].Value;
                tag.Value = tagXml.Attributes["v"].Value;
                tagList.Add(tag);
            }

            osmWay.TagList = tagList;

            return osmWay;
        }
Ejemplo n.º 2
0
 public void FetchBasicAttributes(XmlNode elementXmlNode, ref OsmWay osmWay)
 {
     FetchBasicAttributes(elementXmlNode, (OsmElement)osmWay);
 }