Exemplo n.º 1
0
 static void DecodeDelta(OsmNode[] nodes)
 {
     for (int i = 1; i < nodes.Length; i++)
     {
         nodes[i] = new OsmNode(nodes[i].id + nodes[i - 1].id, nodes[i].latCode + nodes[i - 1].latCode, nodes[i].lonCode + nodes[i - 1].lonCode, nodes[i].values);
     }
 }
Exemplo n.º 2
0
        private OsmWorldData ToWorld(OsmResponse response, float s, float w, float n, float e)
        {
            var nodes  = new List <OsmNode>();
            var ways   = new List <OsmWay>();
            var others = new List <OsmElement>();

            foreach (var element in response.elements)
            {
                switch (element.type)
                {
                case "way":
                    ways.Add(OsmWay.FromElement(element));
                    break;

                case "node":
                    nodes.Add(OsmNode.FromElement(element));
                    break;

                default:
                    others.Add(element);
                    break;
                }
            }

            return(new OsmWorldData(response.version, response.generator, new OsmRect(s, w, n, e), response.osm3s, ways,
                                    nodes, others));
        }
Exemplo n.º 3
0
        private void ProcessRuleForRelationNodes()
        {
            foreach (OsmRelation relation in osmDataSource.OsmDatabase.Relations)
            {
                foreach (OsmRelationMember member in relation.EnumerateMembers())
                {
                    if (member.MemberReference.ReferenceType == OsmReferenceType.Node &&
                        ((currentRule.Targets & RenderingRuleTargets.Nodes) != 0))
                    {
                        if (osmDataSource.OsmDatabase.HasNode(member.MemberReference.ReferenceId))
                        {
                            OsmNode node =
                                osmDataSource.OsmDatabase.GetNode(member.MemberReference.ReferenceId);

                            if (consumedNodes.Contains(node.ObjectId))
                            {
                                continue;
                            }

                            consumedNodes.Add(node.ObjectId);

                            if (true == ProcessNode(node, relation))
                            {
                                break;
                            }
                        }
                    }
                }
            }
        }
        private void ReadNode(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>();

            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);
            }

            OsmNode node = new OsmNode()
            {
                Id        = id,
                Lat       = lat,
                Lon       = lon,
                Version   = version,
                Timestamp = timestamp,
                Changeset = changeset,
                Tags      = tags,
            };

            NodeRead(node);
        }
Exemplo n.º 5
0
        private bool ProcessNode(OsmNode node, OsmRelation relation)
        {
            // ignore untagged nodes (but not if they are part of a relation)
            if (false == node.IsTagged && relation == null)
            {
                return(false);
            }

            int layer = GetOsmObjectLayerNumber(node);

            if (currentRule.IsMatch(relation, node))
            {
                // if we are just running the first run on the rule engine
                // to detect levels and types that are used in the mapWriter
                if (justDetectLevelsAndTypesUsed)
                {
                    currentRule.MarkHardwareLevelsUsed(analysis);
                    currentRule.Template.RegisterType(currentRule.RuleName, mapMakerSettings.TypesRegistry, false);
                    return(true);
                }

                AddRenderElementCommandForNode(node, relation, layer, currentRule);
            }

            return(false);
        }
Exemplo n.º 6
0
    void makeRoad()
    {
        foreach (OsmWay w in ways)
        {
            if (w.Visible)
            {
                Color      c             = Color.cyan;
                GameObject toInstantiate = buildingVisualizer;
                if (!w.isBoundary)
                {
                    toInstantiate = roadVisualizer;
                }

                for (int i = 1; i < w.NodeIDs.Count; i++)
                {
                    OsmNode p1 = nodes[w.NodeIDs[i - 1]];
                    OsmNode p2 = nodes[w.NodeIDs[i]];

                    Vector3 v1 = p1 - bounds.Centre;
                    Vector3 v2 = p2 - bounds.Centre;
                    Debug.DrawLine(v1, v2, c);
                    GameObject road = Instantiate(toInstantiate, v1, Quaternion.identity);
                    RaycastHit hit;
                    road.GetComponent <LineRenderer>().SetPosition(0, v1);
                    road.GetComponent <LineRenderer>().SetPosition(1, v2);
                    road.GetComponent <LineRenderer>().startWidth = 2f;
                    road.GetComponent <LineRenderer>().endWidth   = 2f;
                }
            }
        }
    }
Exemplo n.º 7
0
    void Update()
    {
        foreach (OsmWay w in ways)
        {
            if (w.Visible)
            {
                Color c = Color.cyan;                 //cyan for buildings
                if (!w.IsBoundary)
                {
                    c = Color.red;                     // red for roads
                }
                for (int i = 1; i < w.NodeIDs.Count; i++)
                {
                    OsmNode p1 = nodes[w.NodeIDs[i - 1]];
                    OsmNode p2 = nodes[w.NodeIDs[i]];

                    Vector3 v1 = p1 - bounds.Centre;
                    Vector3 v2 = p2 - bounds.Centre;


                    Debug.DrawLine(v1, v2, c);
                }
            }
        }
    }
Exemplo n.º 8
0
    void Update()
    {
        foreach (OsmWay w in ways)
        {
            if (w.Visible)
            {
                Color c = Color.cyan;
                if (!w.IsBoundary)
                {
                    c = Color.black;
                }

                for (int i = 1; i < w.NodeIDs.Count; i++)
                {
                    OsmNode p1 = nodes[w.NodeIDs[i - 1]];
                    OsmNode p2 = nodes[w.NodeIDs[i]];

                    Vector3 v1 = p1 - bounds.Center;
                    Vector3 v2 = p2 - bounds.Center;

                    Debug.DrawLine(v1, v2, c);
                }
            }
        }
    }
Exemplo n.º 9
0
        public OsmNode FetchOsmNode(int id)
        {
            var xmlNode = FetchElementXml(nodeApiUrl + id.ToString());
            var osmNode = new OsmNode();

            //API always returns a single node.
            XmlNode elementXmlNode = xmlNode.GetElementsByTagName("node")[0];

            //Reading Metadata
            FetchBasicAttributes(elementXmlNode, ref osmNode);
            osmNode.Lat = float.Parse(elementXmlNode.Attributes["lat"].Value);
            osmNode.Lon = float.Parse(elementXmlNode.Attributes["lon"].Value);

            //Reading Tags
            var tagList = new List<Tag>();
            XmlNodeList tagXmlNodes = xmlNode.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);
            }

            osmNode.TagList = tagList;
            return osmNode;
        }
Exemplo n.º 10
0
 static void EncodeDelta(OsmNode[] nodes)
 {
     for (int i = nodes.Length - 1; i > 0; i--)
     {
         nodes[i] = new OsmNode(nodes[i].id - nodes[i - 1].id, nodes[i].latCode - nodes[i - 1].latCode, nodes[i].lonCode - nodes[i - 1].lonCode, nodes[i].values);
     }
 }
Exemplo n.º 11
0
        /// <summary>
        /// Extracts all Nodes of importance, that are not included in any Way, from OSM API Response XML
        /// </summary>
        private static ICollection <OsmNode> ExtractSingleNodes(XDocument xmlData)
        {
            Debug.Assert(xmlData.Root != null, "xmlData.Root == null");

            var nodes = new List <OsmNode>();

            foreach (var nodeElement in xmlData.Root.Descendants(Constants.OsmXml.Tags.Node))
            {
                // filter by tags
                var tags = nodeElement.Elements(Constants.OsmXml.Tags.Tag).ToArray();
                if (tags.All(t => t.Attribute(Constants.OsmXml.Attributes.K).Value != Constants.OsmXml.Values.Amenity))
                {
                    continue;
                }

                // create Node
                var osmNode = new OsmNode
                {
                    Id        = Convert.ToInt64(nodeElement.Attribute(Constants.OsmXml.Attributes.Id).Value),
                    Latitude  = Convert.ToDouble(nodeElement.Attribute(Constants.OsmXml.Attributes.Lat).Value),
                    Longitude = Convert.ToDouble(nodeElement.Attribute(Constants.OsmXml.Attributes.Lon).Value),
                    Tags      = new Dictionary <string, string>()
                };
                // populate tags
                foreach (var tagElement in tags)
                {
                    osmNode.Tags.Add(tagElement.Attribute(Constants.OsmXml.Attributes.K).Value,
                                     tagElement.Attribute(Constants.OsmXml.Attributes.V).Value);
                }

                nodes.Add(osmNode);
            }
            return(nodes);
        }
Exemplo n.º 12
0
 void GetNodes(XmlNodeList xmlNodeList)
 {
     foreach (XmlNode n in xmlNodeList)
     {
         OsmNode node = new OsmNode(n);
         nodes[node.ID] = node;
     }
 }
Exemplo n.º 13
0
 private static void WriteNode(XmlWriter writer, OsmNode osmNode)
 {
     writer.WriteStartElement(Constants.Constants.osmNode);
     writer.WriteAttributeString(Constants.Constants.IdString, osmNode.Id.ToString(CultureInfo.InvariantCulture));
     writer.WriteAttributeString(Constants.Constants.LatString, osmNode.Point.Lat.ToString(CultureInfo.InvariantCulture));
     writer.WriteAttributeString(Constants.Constants.LonString, osmNode.Point.Lon.ToString(CultureInfo.InvariantCulture));
     WriteTags(writer, osmNode.Tags);
     writer.WriteEndElement();
 }
Exemplo n.º 14
0
 private void AddRenderElementCommandForNode(
     OsmNode node,
     OsmRelation parentRelation,
     int elementLayer,
     RenderingRule renderingRule)
 {
     renderingRule.Template.RenderOsmObject(mapMakerSettings, analysis, osmDataSource.OsmDatabase, node, parentRelation, mapWriter);
     mapMakerSettings.MapContentStatistics.IncrementFeaturesCount(renderingRule.RuleName);
 }
Exemplo n.º 15
0
        private bool IsTown(OsmNode node)
        {
            if (node == null)
            {
                return(false);
            }

            return(node.Tags.Any(x => cityKeys.Any(y => y.Equals(x.Key, StringComparison.OrdinalIgnoreCase))));
        }
        private void NodeRead(OsmNode node)
        {
            nodeCount++;

            if (nodeCount % 100 == 0)
            {
                UpdateStatus();
            }
        }
Exemplo n.º 17
0
        /// <inheritdoc cref="IOverpassApi"/>
        public OsmNode[] LoadNodesFromOverpass(string csvQuery)
        {
            List <OsmNode> result = new List <OsmNode>();

            string[] data = GetCvsOverPassData(csvQuery);

            if (data == null || data.Length < 2)
            {
                return(null);
            }

            //first row determins the Keys of the Tags
            //0 -> id, 1 -> latutide, 2 -> longitude, 3 till whatever -> keys
            string[] firstRow = data[0].Split('\t');

            for (int i = 0; i < data.Length; i++)
            {
                string[] row = data[i].Split('\t');

                for (int y = 0; y < row.Length; y++)
                {
                    row[y] = Cleanup(row[y]);
                }

                OsmNode rowNode = new OsmNode();
                rowNode.ID        = long.Parse(row[0]);
                rowNode.Latitude  = ParsingHelper.StringToDouble(row[1]);
                rowNode.Longitude = ParsingHelper.StringToDouble(row[2]);
                rowNode.Name      = row[3];
                for (int y = 4; y < row.Length; y++)
                {
                    rowNode.Tags.Add(new KeyValuePair(firstRow[y], row[y]));
                }

                result.Add(rowNode);
            }

            //cleanup
            HashSet <long> idHash = new HashSet <long>();

            result = result.Where(x => !string.IsNullOrWhiteSpace(x.Name) && x.ID != 0 && x.Latitude != 0 && x.Longitude != 0 && idHash.Add(x.ID)).ToList();

            foreach (var entry in result)
            {
                for (int i = 0; i < entry.Tags.Count; i++)
                {
                    if (string.IsNullOrWhiteSpace(entry.Tags[i].Value))
                    {
                        entry.Tags.RemoveAt(i);
                        i--;
                    }
                }
            }

            return(result.ToArray());
        }
Exemplo n.º 18
0
        protected static OsmNode[] GetNodesForWay(IOsmDataFastAccess osmDatabase, OsmWay way)
        {
            OsmNode[] nodes = new OsmNode[way.NodesCount];
            for (int i = 0; i < way.NodesCount; i++)
            {
                nodes[i] = osmDatabase.GetNode(way.Nodes[i]);
            }

            return(nodes);
        }
Exemplo n.º 19
0
        public OsmObjectMother AddNode()
        {
            double latitude = ConstructLatitude(idCounter);

            OsmNode node = new OsmNode(idCounter++, latitude, idCounter * 0.001);

            osmDatabase.AddNode(node);
            currentObject = node;
            return(this);
        }
Exemplo n.º 20
0
    protected override void OnObjectCreated(OsmWay way, Vector3 origin, List <Vector3> vectors, List <Vector3> normals, List <Vector2> uvs, List <int> indices)
    {
        for (int i = 1; i < way.NodeIDs.Count; i++)
        {
            OsmNode p1 = map.nodes[way.NodeIDs[i - 1]];
            OsmNode p2 = map.nodes[way.NodeIDs[i]];

            Vector3 s1 = p1 - origin;
            Vector3 s2 = p2 - origin;

            Vector3 diff = (s2 - s1).normalized;

            // https://en.wikipedia.org/wiki/Lane
            // According to the article, it's 3.7m in Canada
            var cross = Vector3.Cross(diff, Vector3.up) * 3.7f * way.Lanes;

            Vector3 v1 = s1 + cross;
            Vector3 v2 = s1 - cross;

            Vector3 v3 = s2 + cross;
            Vector3 v4 = s2 - cross;

            vectors.Add(v1);
            vectors.Add(v2);
            vectors.Add(v3);
            vectors.Add(v4);

            uvs.Add(new Vector2(0, 0));
            uvs.Add(new Vector2(1, 0));
            uvs.Add(new Vector2(0, 1));
            uvs.Add(new Vector2(1, 1));

            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);

            int idx1, idx2, idx3, idx4;
            idx4 = vectors.Count - 1;
            idx3 = vectors.Count - 2;
            idx2 = vectors.Count - 3;
            idx1 = vectors.Count - 4;

            // first triangle v1 v3 v2
            indices.Add(idx1);
            indices.Add(idx3);
            indices.Add(idx2);

            // first triangle v3 v4 v2
            indices.Add(idx3);
            indices.Add(idx4);
            indices.Add(idx2);
        }
    }
Exemplo n.º 21
0
    protected override void OnObjectCreated(OsmWay way, Vector3 origin, List <Vector3> vectors, List <Vector3> normals, List <Vector2> uvs, List <int> indices)
    {
        for (int i = 1; i < way.NodeIDs.Count; i++) //  在这里改成spline, procedural 点到axis(spline)到面
        {
            OsmNode p1 = map.nodes[way.NodeIDs[i - 1]];
            OsmNode p2 = map.nodes[way.NodeIDs[i]];

            Vector3 s1 = p1 - origin;
            Vector3 s2 = p2 - origin;

            Vector3 diff = (s2 - s1).normalized;

            // Lanes need to check!
            var cross = Vector3.Cross(diff, Vector3.up) * 3.7f * way.Lanes;

            // points represent the width of the road
            Vector3 v1 = s1 + cross;
            Vector3 v2 = s1 - cross;
            Vector3 v3 = s2 + cross;
            Vector3 v4 = s2 - cross;

            vectors.Add(v1);
            vectors.Add(v2);
            vectors.Add(v3);
            vectors.Add(v4);

            uvs.Add(new Vector2(0, 0));
            uvs.Add(new Vector2(1, 0));
            uvs.Add(new Vector2(0, 1));
            uvs.Add(new Vector2(1, 1));

            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);

            int idx1, idx2, idx3, idx4;
            idx4 = vectors.Count - 1;
            idx3 = vectors.Count - 2;
            idx2 = vectors.Count - 3;
            idx1 = vectors.Count - 4;

            // first triangle v1, v3, v2
            indices.Add(idx1);
            indices.Add(idx3);
            indices.Add(idx2);

            // second         v3, v4, v2
            indices.Add(idx3);
            indices.Add(idx4);
            indices.Add(idx2);
        }
    }
Exemplo n.º 22
0
        static int ReadNodesPath(byte[] buf, int ofs, out OsmNode[] nodes)
        {
            ulong tmp;
            int   p = ProtoBuf.ReadVarInt(buf, ofs, out tmp);

            nodes = new OsmNode[tmp];
            for (int i = 0; i < nodes.Length; i++)
            {
                p += OsmNode.ReadBinary(buf, ofs + p, out nodes[i]);
            }
            return(p);
        }
Exemplo n.º 23
0
        public InMemoryOsmDatabase Provide()
        {
            InMemoryOsmDatabase osmDatabase = new InMemoryOsmDatabase();

            for (int i = 0; i < pointTypesCount; i++)
            {
                OsmNode node = new OsmNode(i + 1, 15 + (i % width) * 0.1, 46 + (i / width) * 0.1);
                node.SetTag("garmin_icon", i.ToString(CultureInfo.InvariantCulture));
                osmDatabase.AddNode(node);
            }

            return(osmDatabase);
        }
Exemplo n.º 24
0
 private Waypoint GetWaypointForNode(OsmNode node)
 {
     if (Waypoints.ContainsKey(node.Id))
     {
         return(Waypoints[node.Id]);
     }
     else
     {
         Waypoint nw = new Waypoint(node);
         Waypoints.Add(node.Id, nw);
         return(nw);
     }
 }
Exemplo n.º 25
0
    protected override void OnObjectCreated(OsmWay way, Vector3 origin, List <Vector3> vectors, List <Vector3> normals, List <Vector2> uvs, List <int> indices)
    {
        for (int i = 1; i < way.NodeIDs.Count; i++)
        {
            OsmNode p1 = map.nodes[way.NodeIDs[i - 1]];
            OsmNode p2 = map.nodes[way.NodeIDs[i]];

            Vector3 s1 = p1 - origin;
            Vector3 s2 = p2 - origin;

            Vector3 diff = (s2 - s1).normalized;

            var cross = Vector3.Cross(diff, Vector3.up) * 3.7f * way.Lanes;


            Vector3 v1 = s1 + cross;
            Vector3 v2 = s1 - cross;
            Vector3 v3 = s2 + cross;
            Vector3 v4 = s2 - cross;

            vectors.Add(v1);
            vectors.Add(v2);
            vectors.Add(v3);
            vectors.Add(v4);

            uvs.Add(new Vector2(0, 0));
            uvs.Add(new Vector2(1, 0));
            uvs.Add(new Vector2(0, 1));
            uvs.Add(new Vector2(1, 1));

            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);
            normals.Add(Vector3.up);

            int idx1, idx2, idx3, idx4;
            idx4 = vectors.Count - 1;
            idx3 = vectors.Count - 2;
            idx2 = vectors.Count - 3;
            idx1 = vectors.Count - 4;


            indices.Add(idx1);
            indices.Add(idx3);
            indices.Add(idx2);

            indices.Add(idx3);
            indices.Add(idx4);
            indices.Add(idx2);
        }
    }
Exemplo n.º 26
0
        public CGpsMapperMapWriter AddCoordinates(string parameterName, int level, OsmNode node)
        {
            StringBuilder line = new StringBuilder();

            line.AppendFormat("{0}{1}=", parameterName, level);

            line.AppendFormat(CultureInfo.InvariantCulture,
                              "({0},{1})",
                              RenderCoordinateValue(node.Y),
                              RenderCoordinateValue(node.X));

            AppendLine(line.ToString());

            return(this);
        }
Exemplo n.º 27
0
        public static void testPostgreSQL()
        {
            OSMPostgresqlSource sourcePostgre = new OSMPostgresqlSource(connPostGreSql);
            var     bbbbpostgre = sourcePostgre.Bounds;
            OsmNode nooode      = new OsmNode();

            nooode.id = "81069";
            var taagspg = nooode.GetTagsPostgreSQL(connPostGreSql);

            Aram.OSMParser.Relation rel = new Aram.OSMParser.Relation("2340");
            var members = rel.GetMembersPostgreSQL(connPostGreSql);

            Console.WriteLine("Completed without errors.");
            Console.ReadLine();
        }
Exemplo n.º 28
0
    void DrawSpline(OsmWay w, Color c)
    {
        for (int i = 1; i < w.NodeIDs.Count; i++)//draw a lines between point to point
        {
            //OsmNode p1 = nodes[w.NodeIDs[i - 1]];
            //OsmNode p2 = nodes[w.NodeIDs[i]];

            //Vector3 v1 = p1 - bounds.Centre;
            //Vector3 v2 = p2 - bounds.Centre;

            //Debug.DrawLine(v1, v2, c);

            OsmNode p = nodes[w.NodeIDs[i]];
            Vector3 v = p - bounds.Centre;
        }
    }
Exemplo n.º 29
0
        private static string SingleNodeDescription(OsmNode node)
        {
            Debug.Assert(node != null, "node == null");

            var result = node.Tags[Constants.OsmXml.Values.Amenity];

            if (node.Tags.ContainsKey(Constants.OsmXml.Values.Name))
            {
                result += " " + node.Tags[Constants.OsmXml.Values.Name];
            }
            else if (node.Tags.Count == 2)
            {
                result += " " + node.Tags.First(x => x.Key != Constants.OsmXml.Values.Amenity).Value;
            }
            return(result);
        }
Exemplo n.º 30
0
        public static void CreatePower(OsmNode towerData, OsmBounds bounds, Transform parent)
        {
            Vector3[] linePoints = new Vector3[2];

            linePoints[0]   = OsmToUnityConverter.GetPointFromUnityPointVec3(towerData.Point, bounds);
            linePoints[1]   = linePoints[0];
            linePoints[1].y = GetPowerTowerHeight();

            float width = GetPowerTowerWidth();
            Color color = GetPowerTowerColor();

            GameObject result = LineFactory.CreateLine(linePoints, width, color, new Material(Shader.Find("Sprites/Default")));

            result.name = "<powertower>";

            result.transform.parent = parent;
        }
Exemplo n.º 31
0
        private void Parse()
        {
            XDocument doc  = XDocument.Load(File);
            XElement  root = doc.Root;

            foreach (var xElement in root.Elements("node"))
            {
                var newNode = OsmNode.FromXElement(xElement);
                Nodes.Add(newNode.Id, newNode);
            }

            foreach (var xElement in root.Elements("way"))
            {
                var newWay = OsmWay.FromXElement(xElement, Nodes);
                Ways.Add(newWay.Id, newWay);
            }
        }
Exemplo n.º 32
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;
        }
Exemplo n.º 33
0
 public void FetchBasicAttributes(XmlNode elementXmlNode, ref OsmNode osmNode)
 {
     FetchBasicAttributes(elementXmlNode, (OsmElement)osmNode);
 }