Exemple #1
0
        /// <summary>
        /// Creates a new object that is a copy of the current instance.
        /// </summary>
        /// <returns>
        /// A new object that is a copy of this instance.
        /// </returns>
        public object Clone()
        {
            OsmWay clone = new OsmWay(ObjectId);

            CopyToClone(clone);
            clone.nodesList = new List <long> (nodesList);
            return(clone);
        }
Exemple #2
0
        public void AddWay(OsmWay way)
        {
            if (this.ways.ContainsKey(way.ObjectId))
            {
                throw new OsmDuplicatedObjectIdException(way);
            }

            ways.Add(way.ObjectId, way);
        }
Exemple #3
0
        public void ImportData(osm osmData)
        {
            foreach (osmNode originalNode in osmData.Node)
            {
                OsmObjectAction objectAction = ParseOsmObjectAction(originalNode.Action);
                if (objectAction == OsmObjectAction.Delete)
                {
                    continue;
                }

                OsmNode node = new OsmNode(originalNode.Id, originalNode.Lat, originalNode.Lon);
                if (originalNode.Timestamp != null)
                {
                    node.Timestamp = DateTime.Parse(originalNode.Timestamp, CultureInfo.InvariantCulture);
                }
                node.User        = OsmUser.Fetch(originalNode.User, originalNode.Uid);
                node.ChangesetId = originalNode.Changeset;
                node.Visible     = originalNode.Visible;
                node.Action      = objectAction;

                foreach (tag tag in originalNode.Tag)
                {
                    node.SetTag(tag.K, tag.V);
                }

                AddNode(node);
            }

            foreach (osmWay originalWay in osmData.Way)
            {
                OsmObjectAction objectAction = ParseOsmObjectAction(originalWay.Action);
                if (objectAction == OsmObjectAction.Delete)
                {
                    continue;
                }

                OsmWay way = new OsmWay(originalWay.Id);
                if (originalWay.Timestamp != null)
                {
                    way.Timestamp = DateTime.Parse(originalWay.Timestamp, CultureInfo.InvariantCulture);
                }
                way.User        = OsmUser.Fetch(originalWay.User, originalWay.Uid);
                way.ChangesetId = originalWay.Changeset;
                way.Visible     = originalWay.Visible;
                way.Action      = objectAction;

                foreach (osmWayND nd in originalWay.Nd)
                {
                    way.AddNode(nd.Ref);
                }

                foreach (tag tag in originalWay.Tag)
                {
                    way.SetTag(tag.K, tag.V);
                }

                AddWay(way);
            }

            foreach (osmRelation originalRelation in osmData.Relation)
            {
                OsmObjectAction objectAction = ParseOsmObjectAction(originalRelation.Action);
                if (objectAction == OsmObjectAction.Delete)
                {
                    continue;
                }

                if (originalRelation.Action == "delete")
                {
                    continue;
                }

                OsmRelation relation = new OsmRelation(originalRelation.Id);
                if (originalRelation.Timestamp != null)
                {
                    relation.Timestamp = DateTime.Parse(originalRelation.Timestamp, CultureInfo.InvariantCulture);
                }
                relation.User        = OsmUser.Fetch(originalRelation.User, originalRelation.Uid);
                relation.ChangesetId = originalRelation.Changeset;
                relation.Visible     = originalRelation.Visible;
                relation.Action      = objectAction;

                foreach (osmRelationMember member in originalRelation.Member)
                {
                    OsmReferenceType referenceType = ParseOsmReferenceType(member.Type);
                    relation.AddMember(referenceType, member.Ref, member.Role);
                }

                foreach (tag tag in originalRelation.Tag)
                {
                    relation.SetTag(tag.K, tag.V);
                }

                AddRelation(relation);
            }
        }
Exemple #4
0
 static public double ValueNum(OsmWay osmElement, string key)
 {
     return(Double.Parse(osmElement.GetTagValue(key), System.Globalization.CultureInfo.InvariantCulture));
 }
Exemple #5
0
 static public string ValueString(OsmWay osmElement, string key)
 {
     return(osmElement.GetTagValue(key));
 }
Exemple #6
0
 static public bool IsTaggedWith(OsmWay osmElement, string key)
 {
     return(osmElement.HasTag(key));
 }