public void TestAddNode()
        {
            Node testNode =new Node();
            testNode.Id = -1;
            testNode.Latitude = 0;
            testNode.Longitude = 0;

            var source = new MemoryDataSource();
            source.AddNode(testNode);

            // test if the node is actually there.
            Assert.AreEqual(testNode, source.GetNode(-1));

            // test if the node was not remove after getting it.
            Assert.AreEqual(testNode, source.GetNodes(new List<long>() { -1 })[0]);

            // test if the node is in the list of nodes.
            Assert.AreEqual(testNode, new List<Node>(source.GetNodes())[0]);

            // test if the node will be retrieved using a list of ids.
            var ids = new List<long>();
            ids.Add(-1);
            IList<Node> nodes = source.GetNodes(ids);
            Assert.IsNotNull(nodes);
            Assert.AreEqual(1, nodes.Count);
            Assert.AreEqual(testNode, nodes[0]);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="node"></param>
        public override void AddNode(Node node)
        {
            if (node == null) throw new ArgumentNullException("node");
            if (node.Id == null) throw new Exception("node.Id is null");

            this.Store(node);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Creates a new node.
 /// </summary>
 /// <param name="id"></param>
 /// <param name="latitude"></param>
 /// <param name="longitude"></param>
 /// <returns></returns>
 public static Node Create(long id, double latitude, double longitude)
 {
     Node node = new Node();
     node.Id = id;
     node.Latitude = latitude;
     node.Longitude = longitude;
     return node;
 }
        public override void AddNode(Node node)
        {
            if (!node.Id.HasValue)
                return;

            MaxStringLength(node.UserName, ref NodeUsr);

            if (node.Tags == null)
                return;

            foreach (Tag tag in node.Tags)
            {
                MaxStringLength(tag.Key, ref NodeTagsKey);
                MaxStringLength(tag.Value, ref NodeTagsValue);
            }
        }
        public void TestWayAreaIsYesArea()
        {
            var node1 = new Node();
            node1.Id = 1;
            node1.Latitude = 0;
            node1.Longitude = 0;
            var node2 = new Node();
            node2.Id = 2;
            node2.Latitude = 1;
            node2.Longitude = 0;
            var node3 = new Node();
            node3.Id = 3;
            node3.Latitude = 0;
            node3.Longitude = 1;

            var way = new Way();
            way.Id = 1;
            way.Nodes = new List<long>();
            way.Nodes.Add(1);
            way.Nodes.Add(2);
            way.Nodes.Add(3);
            way.Nodes.Add(1);
            way.Tags = new TagsCollection();
            way.Tags.Add("area", "yes");

            var source = new List<OsmGeo>();
            source.Add(node1);
            source.Add(node2);
            source.Add(node3);
            source.Add(way);

            // create source stream.
            var sourceStream = new OsmSharp.Osm.Streams.Complete.OsmSimpleCompleteStreamSource(source.ToOsmStreamSource());

            // create features source.
            var featuresSourceStream = new OsmFeatureStreamSource(sourceStream);

            // pull stream.
            var features = new List<Feature>(featuresSourceStream);

            Assert.IsNotNull(features);
            Assert.AreEqual(1, features.Count);
            var feature = features[0];
            Assert.IsInstanceOf<LineairRing>(feature.Geometry);
            Assert.IsTrue(feature.Attributes.ContainsKeyValue("area", "yes"));
        }
 /// <summary>
 /// Compares the two complete objects.
 /// </summary>
 public static void CompareComplete(Node expected, Node actual)
 {
     if (expected == null)
     { // ok, if the value is also null.
         Assert.IsNull(actual);
     }
     else
     { // check and compare the value.
         Assert.IsNotNull(actual);
         Assert.AreEqual(expected.Id, actual.Id);
         Assert.AreEqual(expected.ChangeSetId, actual.ChangeSetId);
         Assert.AreEqual(expected.Coordinate, actual.Coordinate);
         Assert.AreEqual(expected.TimeStamp, actual.TimeStamp);
         Assert.AreEqual(expected.UserName, actual.UserName);
         Assert.AreEqual(expected.UserId, actual.UserId);
         Assert.AreEqual(expected.Version, actual.Version);
         Assert.AreEqual(expected.Visible, actual.Visible);
     }
 }
Exemplo n.º 7
0
        public void TestEmptyCSS()
        {
            // create 'test' objects.
            Node node1 = new Node();
            node1.Id = 1;
            node1.Latitude = 1;
            node1.Longitude = 1;

            Node node2 = new Node();
            node2.Id = 2;
            node2.Latitude = 2;
            node2.Longitude = 2;

            Way way = new Way();
            way.Id = 1;
            way.Nodes = new List<long>();
            way.Nodes.Add(1);
            way.Nodes.Add(2);

            // create the datasource.
            MemoryDataSource dataSource = new MemoryDataSource();
            dataSource.AddNode(node1);
            dataSource.AddNode(node2);
            dataSource.AddWay(way);

            // create the projection and scene objects.
            var mercator = new WebMercator();
            Scene2D scene = new Scene2D(new OsmSharp.Math.Geo.Projections.WebMercator(), 16);

            // create the interpreter.
            MapCSSInterpreter interpreter = new MapCSSInterpreter(string.Empty,
                new MapCSSDictionaryImageSource());
            interpreter.Translate(scene, mercator, dataSource, node1);
            interpreter.Translate(scene, mercator, dataSource, node2);
            interpreter.Translate(scene, mercator, dataSource, way);

            // test the scene contents.
            Assert.AreEqual(0, scene.Count);
            Assert.AreEqual(SimpleColor.FromKnownColor(KnownColor.Black).Value, scene.BackColor);
        }
        public void TestWayAreaIsYes()
        {
            Node node1 = new Node();
            node1.Id = 1;
            node1.Latitude = 0;
            node1.Longitude = 0;
            Node node2 = new Node();
            node2.Id = 2;
            node2.Latitude = 1;
            node2.Longitude = 0;
            Node node3 = new Node();
            node3.Id = 3;
            node3.Latitude = 0;
            node3.Longitude = 1;

            Way way = new Way();
            way.Id = 1;
            way.Nodes = new List<long>();
            way.Nodes.Add(1);
            way.Nodes.Add(2);
            way.Nodes.Add(3);
            way.Nodes.Add(1);
            way.Tags = new TagsCollection();
            way.Tags.Add("area", "yes");

            var source = new List<OsmGeo>();
            source.Add(node1);
            source.Add(node2);
            source.Add(node3);
            source.Add(way);

            // the use of natural=water implies an area-type.
            var interpreter = new SimpleFeatureInterpreter();
            var completeStreamSource = new OsmSimpleCompleteStreamSource(source.ToOsmStreamSource());

            // use the stream to interpret.
            var features = new List<Feature>(new FeatureInterpreterStreamSource(completeStreamSource, interpreter));

            Assert.AreEqual(1, features.Count);
        }
Exemplo n.º 9
0
 private OsmSharp.Osm.Node Convertv6XmlNode(node xml_node)
 {
     OsmSharp.Osm.Node node = new OsmSharp.Osm.Node();
     node.Id        = new long?(xml_node.id);
     node.Latitude  = new double?(xml_node.lat);
     node.Longitude = new double?(xml_node.lon);
     if (xml_node.tag != null)
     {
         node.Tags = (TagsCollectionBase) new TagsCollection();
         foreach (tag tag in xml_node.tag)
         {
             node.Tags.Add(tag.k, tag.v);
         }
     }
     node.ChangeSetId = new long?(xml_node.changeset);
     node.TimeStamp   = new DateTime?(xml_node.timestamp);
     node.UserName    = xml_node.user;
     node.UserId      = new long?(xml_node.uid);
     node.Version     = new ulong?(xml_node.version);
     node.Visible     = new bool?(xml_node.visible);
     return(node);
 }
Exemplo n.º 10
0
 /// <summary>
 /// Adds a node.
 /// </summary>
 /// <param name="node"></param>
 private void AddNode(Node node)
 {
     if (_nodes.ContainsKey(node.Id))
     {
         throw new InvalidOperationException("Cannot add an object that already exists in this source!" + Environment.NewLine +
             "If there is a modification use a changeset!");
     }
     else
     {
         _nodes.Add(node.Id, node);
     }
 }
Exemplo n.º 11
0
 /// <summary>
 /// Returns the way(s) for the given node.
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public IList<Way> GetWaysFor(Node node)
 {
     if (_ways_per_node.ContainsKey(node.Id))
     {
         return this.GetWays(_ways_per_node[node.Id]);
     }
     return null;
 }
Exemplo n.º 12
0
        /// <summary>
        /// Converts an Xml node to an Osm domain model node.
        /// </summary>
        /// <returns></returns>
        public static node ConvertTo(this OsmSharp.Osm.Node node)
        {
            var xmlNode = new node();

            // set the changeset.
            if (node.ChangeSetId.HasValue)
            {
                xmlNode.changeset          = node.ChangeSetId.Value;
                xmlNode.changesetSpecified = true;
            }

            // set the id.
            if (node.Id.HasValue)
            {
                xmlNode.id          = node.Id.Value;
                xmlNode.idSpecified = true;
            }

            if (node.Tags != null)
            {
                xmlNode.tag = new tag[node.Tags.Count];
                int idx = 0;
                foreach (var tag in node.Tags)
                {
                    var t = new tag();
                    t.k = tag.Key;
                    t.v = tag.Value;
                    xmlNode.tag[idx] = t;
                    idx++;
                }
            }

            // set the timestamp.
            if (node.TimeStamp.HasValue)
            {
                xmlNode.timestamp          = node.TimeStamp.Value;
                xmlNode.timestampSpecified = true;
            }

            // set the user data.
            if (node.UserId.HasValue)
            {
                xmlNode.uid          = node.UserId.Value;
                xmlNode.uidSpecified = true;
            }
            xmlNode.user = xmlNode.user;

            // set the version.
            if (node.Version.HasValue)
            {
                xmlNode.version          = (ulong)node.Version.Value;
                xmlNode.versionSpecified = true;
            }

            // set the visible.
            if (node.Visible.HasValue)
            {
                xmlNode.visible          = node.Visible.Value;
                xmlNode.visibleSpecified = true;
            }

            // set the node-specific properties.
            if (node.Latitude.HasValue)
            {
                xmlNode.lat          = node.Latitude.Value;
                xmlNode.latSpecified = true;
            }
            if (node.Longitude.HasValue)
            {
                xmlNode.lon          = node.Longitude.Value;
                xmlNode.lonSpecified = true;
            }

            return(xmlNode);
        }
Exemplo n.º 13
0
        public void APITestRelationCreateGet()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            long changesetId = apiInstance.ChangeSetOpen("Simple Relation Creation Test");

            // initialize the relation.
            var relation = new Relation();
            relation.Tags = new TagsCollection();
            relation.Tags.Add("type", "testrelation");
            relation.Members = new List<RelationMember>();
            relation.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });

            // save the relation.
            relation = apiInstance.RelationCreate(relation);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(relation.Id.HasValue);

            // get the new relation id.
            long relationId = relation.Id.Value;

            // get the relation from the api.
            Relation relationAPI = apiInstance.RelationGet(relation.Id.Value);
            Assert.AreEqual(relationId, relationAPI.Id.Value);
            Assert.AreEqual(relation.Tags.Count, relationAPI.Tags.Count);
            Assert.AreEqual(relation.Visible, relationAPI.Visible);
            Assert.IsTrue(relationAPI.ChangeSetId.HasValue);
            Assert.AreEqual(changesetId, relationAPI.ChangeSetId.Value);
            Assert.AreEqual(relation.Members[0].MemberId, relationAPI.Members[0].MemberId);
            Assert.AreEqual(relation.Members[0].MemberRole, relationAPI.Members[0].MemberRole);
            Assert.AreEqual(relation.Members[0].MemberType, relationAPI.Members[0].MemberType);
            Assert.AreEqual(relation.Members[1].MemberId, relationAPI.Members[1].MemberId);
            Assert.AreEqual(relation.Members[1].MemberRole, relationAPI.Members[1].MemberRole);
            Assert.AreEqual(relation.Members[1].MemberType, relationAPI.Members[1].MemberType);
        }
Exemplo n.º 14
0
        public void TestCanvasJOSMSettingsCSS()
        {
            // create CSS.
            string css = "canvas { " +
                "background-color: white; " +
                "default-points: true; " + // adds default points for every node (color: black, size: 2).
                "default-lines: true; " + // adds default lines for every way (color: red, width: 1).
                "} ";

            // create 'test' objects.
            Node node1 = new Node();
            node1.Id = 1;
            node1.Latitude = 1;
            node1.Longitude = 1;

            Node node2 = new Node();
            node2.Id = 2;
            node2.Latitude = 2;
            node2.Longitude = 2;

            Way way = new Way();
            way.Id = 1;
            way.Nodes = new List<long>();
            way.Nodes.Add(1);
            way.Nodes.Add(2);

            // create the datasource.
            MemoryDataSource dataSource = new MemoryDataSource();
            dataSource.AddNode(node1);
            dataSource.AddNode(node2);
            dataSource.AddWay(way);

            // create the projection and scene objects.
            var mercator = new WebMercator();
            Scene2D scene = new Scene2D(new OsmSharp.Math.Geo.Projections.WebMercator(), 16);

            // create the interpreter.
            MapCSSInterpreter interpreter = new MapCSSInterpreter(css,
                new MapCSSDictionaryImageSource());
            interpreter.Translate(scene, mercator, dataSource, node1);
            interpreter.Translate(scene, mercator, dataSource, node2);
            interpreter.Translate(scene, mercator, dataSource, way);

            // test the scene contents.
            Assert.AreEqual(3, scene.Count);
            Assert.AreEqual(SimpleColor.FromKnownColor(KnownColor.White).Value, scene.BackColor);

            // test the scene point 1.
            Primitive2D primitive = scene.Get(0);
            Assert.IsNotNull(primitive);
            Assert.IsInstanceOf<Primitive2D>(primitive);
            Point2D pointObject = primitive as Point2D;
            Assert.AreEqual(2, pointObject.Size);
            Assert.AreEqual(SimpleColor.FromKnownColor(KnownColor.Black).Value, pointObject.Color);
            Assert.AreEqual(mercator.LongitudeToX(1), pointObject.X);
            Assert.AreEqual(mercator.LatitudeToY(1), pointObject.Y);

            // test the scene point 2.
            primitive = scene.Get(1);
            Assert.IsNotNull(primitive);
            Assert.IsInstanceOf<Point2D>(primitive);
            pointObject = primitive as Point2D;
            Assert.AreEqual(2, pointObject.Size);
            Assert.AreEqual(SimpleColor.FromKnownColor(KnownColor.Black).Value, pointObject.Color);
            Assert.AreEqual(mercator.LongitudeToX(2), pointObject.X);
            Assert.AreEqual(mercator.LatitudeToY(2), pointObject.Y);

            // test the scene line 2.
            primitive = scene.Get(2);
            Assert.IsNotNull(primitive);
            Assert.IsInstanceOf<Line2D>(primitive);
            Line2D line = primitive as Line2D;
            Assert.AreEqual(1, line.Width);
            Assert.AreEqual(SimpleColor.FromKnownColor(KnownColor.Red).Value, line.Color);
            Assert.IsNotNull(line.X);
            Assert.IsNotNull(line.Y);
            Assert.AreEqual(2, line.X.Length);
            Assert.AreEqual(2, line.Y.Length);
            Assert.AreEqual(mercator.LongitudeToX(1), line.X[0]);
            Assert.AreEqual(mercator.LatitudeToY(1), line.Y[0]);
            Assert.AreEqual(mercator.LongitudeToX(2), line.X[1]);
            Assert.AreEqual(mercator.LatitudeToY(2), line.Y[1]);
        }
Exemplo n.º 15
0
        /// <summary>
        /// Compares a found node to an expected node.
        /// </summary>
        /// <param name="expected"></param>
        /// <param name="found"></param>
        private void CompareNodes(Node expected, Node found)
        {
            Assert.IsNotNull(expected);
            Assert.IsNotNull(found);
            Assert.AreEqual(expected.Id, found.Id);
            Assert.AreEqual(expected.ChangeSetId, found.ChangeSetId);
            Assert.AreEqual((float)expected.Latitude, (float)found.Latitude);
            Assert.AreEqual((float)expected.Longitude, (float)found.Longitude);
            Assert.AreEqual(expected.TimeStamp, found.TimeStamp);
            Assert.AreEqual(expected.Type, found.Type);
            Assert.AreEqual(expected.UserId, found.UserId);
            Assert.AreEqual(expected.UserName, found.UserName);
            Assert.AreEqual(expected.Version, found.Version);
            Assert.AreEqual(expected.Visible, found.Visible);

            this.CompareTags(expected.Tags, found.Tags);
        }
        public void TestWayNaturalIsWaterArea()
        {
            Node node1 = new Node();
            node1.Id = 1;
            node1.Latitude = 0;
            node1.Longitude = 0;
            Node node2 = new Node();
            node2.Id = 2;
            node2.Latitude = 1;
            node2.Longitude = 0;
            Node node3 = new Node();
            node3.Id = 3;
            node3.Latitude = 0;
            node3.Longitude = 1;

            Way way = new Way();
            way.Id = 1;
            way.Nodes = new List<long>();
            way.Nodes.Add(1);
            way.Nodes.Add(2);
            way.Nodes.Add(3);
            way.Nodes.Add(1);
            way.Tags = new SimpleTagsCollection();
            way.Tags.Add("natural", "water");

            MemoryDataSource source = new MemoryDataSource();
            source.AddNode(node1);
            source.AddNode(node2);
            source.AddNode(node3);
            source.AddWay(way);

            // the use of natural=water implies an area-type.
            GeometryInterpreter interpreter = new SimpleGeometryInterpreter();
            GeometryCollection geometries = interpreter.Interpret(way, source);

            Assert.IsNotNull(geometries);
            Assert.AreEqual(1, geometries.Count);
            Geometry geometry = geometries[0];
            Assert.IsInstanceOf<LineairRing>(geometry);
            Assert.IsTrue(geometry.Attributes.ContainsKeyValue("natural", "water"));
        }
Exemplo n.º 17
0
        public void APITestNodeCreateGetDelete()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Node Creation Test");

            // initialize the node.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode");
            node.Visible = true;

            // save the node.
            node = apiInstance.NodeCreate(node);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(node.Id.HasValue);

            // get the new node id.
            long nodeId = node.Id.Value;

            // get the node again: a node can only be deleted using the correct changesetid and version.
            node = apiInstance.NodeGet(node.Id.Value);

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Node Delete Test");

            // get the node.
            apiInstance.NodeDelete(node);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the node.
            Node apiNode = apiInstance.NodeGet(node.Id.Value);
            Assert.IsNull(apiNode);
        }
Exemplo n.º 18
0
        public void APITestWayCreateGetUpdate()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Way Creation Test");

            // initialize the way.
            var way = new Way();
            way.Tags = new TagsCollection();
            way.Tags.Add("type", "testway");
            way.Nodes = new List<long>();
            way.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);

            // save the way.
            way = apiInstance.WayCreate(way);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(way.Id.HasValue);

            // get the new way id.
            long wayId = way.Id.Value;

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Way Update Test");

            // get the way.
            Way apiWay = apiInstance.WayGet(way.Id.Value);
            apiWay.Tags.Add("another_tag", "test adding a tag!");
            apiInstance.WayUpdate(apiWay);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the api way.
            apiWay = apiInstance.WayGet(way.Id.Value);

            Assert.AreEqual(2, apiWay.Tags.Count);
            Assert.IsTrue(apiWay.Tags.ContainsKey("another_tag"));
            Assert.AreEqual("test adding a tag!", apiWay.Tags["another_tag"]);
        }
Exemplo n.º 19
0
        public void APITestWayCreateGetDelete()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Way Creation Test");

            // initialize the way.
            var way = new Way();
            way.Tags = new TagsCollection();
            way.Tags.Add("type", "testway");
            way.Nodes = new List<long>();
            way.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);

            // save the way.
            way = apiInstance.WayCreate(way);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(way.Id.HasValue);

            // get the new way id.
            long wayId = way.Id.Value;

            // get the way again: a way can only be deleted using the correct changesetid and version.
            way = apiInstance.WayGet(way.Id.Value);

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Way Delete Test");

            // get the way.
            apiInstance.WayDelete(way);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the way.
            Way apiWay = apiInstance.WayGet(way.Id.Value);
            Assert.IsNull(apiWay);
        }
Exemplo n.º 20
0
        public void APITestWayCreateGet()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            long changesetId = apiInstance.ChangeSetOpen("Simple Way Creation Test");

            // initialize the way.
            var way = new Way();
            way.Tags = new TagsCollection();
            way.Tags.Add("type", "testway");
            way.Nodes = new List<long>();
            way.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            way.Nodes.Add(node.Id.Value);

            // save the way.
            way = apiInstance.WayCreate(way);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(way.Id.HasValue);

            // get the new way id.
            long wayId = way.Id.Value;

            // get the way from the api.
            Way wayAPI = apiInstance.WayGet(way.Id.Value);
            Assert.AreEqual(wayId, wayAPI.Id.Value);
            Assert.AreEqual(way.Tags.Count, wayAPI.Tags.Count);
            Assert.AreEqual(way.Visible, wayAPI.Visible);
            Assert.IsTrue(wayAPI.ChangeSetId.HasValue);
            Assert.AreEqual(changesetId, wayAPI.ChangeSetId.Value);
            Assert.AreEqual(way.Nodes[0], wayAPI.Nodes[0]);
            Assert.AreEqual(way.Nodes[1], wayAPI.Nodes[1]);
        }
Exemplo n.º 21
0
        public void APITestRelationCreateGetUpdate()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Relation Creation Test");

            // initialize the relation.
            var relation = new Relation();
            relation.Tags = new TagsCollection();
            relation.Tags.Add("type", "testrelation");
            relation.Members = new List<RelationMember>();
            relation.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });

            // save the relation.
            relation = apiInstance.RelationCreate(relation);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(relation.Id.HasValue);

            // get the new relation id.
            long relationId = relation.Id.Value;

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Relation Update Test");

            // get the relation.
            Relation apiRelation = apiInstance.RelationGet(relation.Id.Value);
            apiRelation.Tags.Add("another_tag", "test adding a tag!");
            apiInstance.RelationUpdate(apiRelation);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the api relation.
            apiRelation = apiInstance.RelationGet(relation.Id.Value);

            Assert.AreEqual(2, apiRelation.Tags.Count);
            Assert.IsTrue(apiRelation.Tags.ContainsKey("another_tag"));
            Assert.AreEqual("test adding a tag!", apiRelation.Tags["another_tag"]);
        }
Exemplo n.º 22
0
        public void APITestRelationCreateGetDelete()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Relation Creation Test");

            // initialize the relation.
            var relation = new Relation();
            relation.Tags = new TagsCollection();
            relation.Tags.Add("type", "testrelation");
            relation.Members = new List<RelationMember>();
            relation.Visible = true;

            // initialize the nodes.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode1");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });
            node = new Node();
            node.Latitude = -0.494497 + 0.0001f;
            node.Longitude = -24.119325 + 0.0001f;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode2");
            node.Visible = true;
            node = apiInstance.NodeCreate(node);
            relation.Members.Add(new RelationMember()
            {
                MemberId = node.Id.Value,
                MemberRole = "some_nodes_role",
                MemberType = OsmGeoType.Node
            });

            // save the relation.
            relation = apiInstance.RelationCreate(relation);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(relation.Id.HasValue);

            // get the new relation id.
            long relationId = relation.Id.Value;

            // get the relation again: a relation can only be deleted using the correct changesetid and version.
            relation = apiInstance.RelationGet(relation.Id.Value);

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Relation Delete Test");

            // get the relation.
            apiInstance.RelationDelete(relation);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the relation.
            Relation apiRelation = apiInstance.RelationGet(relation.Id.Value);
            Assert.IsNull(apiRelation);
        }
        /// <summary>
        /// Compares a found node to an expected node.
        /// </summary>
        public static void CompareSimple(Node expected, Node actual)
        {
            Assert.IsNotNull(expected);
            Assert.IsNotNull(actual);
            Assert.AreEqual(expected.Id, actual.Id);
            Assert.AreEqual(expected.ChangeSetId, actual.ChangeSetId);
            Assert.AreEqual((float)expected.Latitude, (float)actual.Latitude);
            Assert.AreEqual((float)expected.Longitude, (float)actual.Longitude);
            Assert.AreEqual(expected.TimeStamp, actual.TimeStamp);
            Assert.AreEqual(expected.Type, actual.Type);
            Assert.AreEqual(expected.UserId, actual.UserId);
            Assert.AreEqual(expected.UserName, actual.UserName);
            Assert.AreEqual(expected.Version, actual.Version);
            Assert.AreEqual(expected.Visible, actual.Visible);

            ComparisonHelpers.CompareTags(expected.Tags, actual.Tags);
        }
Exemplo n.º 24
0
        ///// <summary>
        ///// Converts an domain model changeset to and Xml changeset.
        ///// </summary>
        ///// <param name="changeset"></param>
        ///// <returns></returns>
        //public static changeset ConvertTo(this ChangeSet changeset)
        //{
        //    throw new NotImplementedException();
        //}

        ///// <summary>
        ///// Converts a domain model relation to an Xml relation.
        ///// </summary>
        ///// <param name="dom_obj"></param>
        ///// <returns></returns>
        //public static relation ConvertTo(this SimpleRelation dom_obj)
        //{
        //    relation xml_obj = new relation();

        //    // set the changeset.
        //    if (dom_obj.ChangeSetId.HasValue)
        //    {
        //        xml_obj.changeset = dom_obj.ChangeSetId.Value;
        //        xml_obj.changesetSpecified = true;
        //    }

        //    // set the id.
        //    if (dom_obj.Id.HasValue)
        //    {
        //        xml_obj.id = dom_obj.Id.Value;
        //        xml_obj.idSpecified = true;
        //    }
        //    else
        //    {
        //        xml_obj.idSpecified = false;
        //    }

        //    if (dom_obj.Tags != null)
        //    {
        //        xml_obj.tag = new tag[dom_obj.Tags.Count];
        //        int idx = 0;
        //        foreach (var tag in dom_obj.Tags)
        //        {
        //            tag t = new tag();
        //            t.k = tag.Key;
        //            t.v = tag.Value;
        //            xml_obj.tag[idx] = t;
        //            idx++;
        //        }
        //    }

        //    // set the timestamp.
        //    if (dom_obj.TimeStamp.HasValue)
        //    {
        //        xml_obj.timestamp = dom_obj.TimeStamp.Value;
        //        xml_obj.timestampSpecified = true;
        //    }

        //    // set the user data.
        //    if (dom_obj.UserId.HasValue)
        //    {
        //        xml_obj.uid = dom_obj.UserId.Value;
        //        xml_obj.uidSpecified = true;
        //    }
        //    xml_obj.user = xml_obj.user;

        //    // set the version.
        //    if (dom_obj.Version.HasValue)
        //    {
        //        xml_obj.version = (ulong)dom_obj.Version.Value;
        //        xml_obj.versionSpecified = true;
        //    }

        //    // set the visible.
        //    if (dom_obj.Visible.HasValue)
        //    {
        //        xml_obj.visible = dom_obj.Visible.Value;
        //        xml_obj.visibleSpecified = true;
        //    }
        //    else
        //    {
        //        xml_obj.visibleSpecified = false;
        //    }

        //    // set the way-specific properties.
        //    xml_obj.member = new member[dom_obj.Members.Count];
        //    for (int idx = 0; idx < dom_obj.Members.Count; idx++)
        //    {
        //        RelationMember dom_member = dom_obj.Members[idx];
        //        member m = new member();

        //        switch(dom_member.Member.Type)
        //        {
        //            case OsmType.Node:
        //                m.type = memberType.node;
        //                m.typeSpecified = true;
        //                break;
        //            case OsmType.Relation:
        //                m.type = memberType.relation;
        //                m.typeSpecified = true;
        //                break;
        //            case OsmType.Way:
        //                m.type = memberType.way;
        //                m.typeSpecified = true;
        //                break;
        //        }

        //        m.@ref = dom_member.Member.Id;
        //        m.refSpecified = true;
        //        m.role = dom_member.Role;

        //        xml_obj.member[idx] = m;
        //    }

        //    return xml_obj;
        //}

        ///// <summary>
        ///// Converts a domain model way to an Xml way.
        ///// </summary>
        ///// <param name="dom_obj"></param>
        ///// <returns></returns>
        //public static way ConvertTo(this Way dom_obj)
        //{
        //    way xml_obj = new way();

        //    // set the changeset.
        //    if (dom_obj.ChangeSetId.HasValue)
        //    {
        //        xml_obj.changeset = dom_obj.ChangeSetId.Value;
        //        xml_obj.changesetSpecified = true;
        //    }

        //    // set the id.
        //    xml_obj.id = dom_obj.Id;
        //    xml_obj.idSpecified = true;

        //    if (dom_obj.Tags != null)
        //    {
        //        xml_obj.tag = new tag[dom_obj.Tags.Count];
        //        int idx = 0;
        //        foreach (var tag in dom_obj.Tags)
        //        {
        //            tag t = new tag();
        //            t.k = tag.Key;
        //            t.v = tag.Value;
        //            xml_obj.tag[idx] = t;
        //            idx++;
        //        }
        //    }

        //    // set the timestamp.
        //    if (dom_obj.TimeStamp.HasValue)
        //    {
        //        xml_obj.timestamp = dom_obj.TimeStamp.Value;
        //        xml_obj.timestampSpecified = true;
        //    }

        //    // set the user data.
        //    if (dom_obj.UserId.HasValue)
        //    {
        //        xml_obj.uid = dom_obj.UserId.Value;
        //        xml_obj.uidSpecified = true;
        //    }
        //    xml_obj.user = xml_obj.user;

        //    // set the version.
        //    if (dom_obj.Version.HasValue)
        //    {
        //        xml_obj.version = (ulong)dom_obj.Version.Value;
        //        xml_obj.versionSpecified = true;
        //    }

        //    // set the visible.
        //    xml_obj.visible = dom_obj.Visible;
        //    xml_obj.visibleSpecified = true;

        //    // set the way-specific properties.
        //    xml_obj.nd = new nd[dom_obj.Nodes.Count];
        //    for(int idx = 0;idx < dom_obj.Nodes.Count;idx++)
        //    {
        //        nd n = new nd();
        //        n.@ref =  dom_obj.Nodes[idx].Id;
        //        n.refSpecified = true;
        //        xml_obj.nd[idx] = n;
        //    }

        //    return xml_obj;
        //}

        ///// <summary>
        ///// Converts an Xml node to an Osm domain model node.
        ///// </summary>
        ///// <param name="dom_obj"></param>
        ///// <returns></returns>
        //public static node ConvertTo(this Node dom_obj)
        //{
        //    node xml_obj = new node();

        //    // set the changeset.
        //    if(dom_obj.ChangeSetId.HasValue)
        //    {
        //        xml_obj.changeset = dom_obj.ChangeSetId.Value;
        //        xml_obj.changesetSpecified = true;
        //    }

        //    // set the id.
        //    xml_obj.id = dom_obj.Id;
        //    xml_obj.idSpecified = true;

        //    if (dom_obj.Tags != null)
        //    {
        //        xml_obj.tag = new tag[dom_obj.Tags.Count];
        //        int idx = 0;
        //        foreach (var tag in dom_obj.Tags)
        //        {
        //            tag t = new tag();
        //            t.k = tag.Key;
        //            t.v = tag.Value;
        //            xml_obj.tag[idx] = t;
        //            idx++;
        //        }
        //    }

        //    // set the timestamp.
        //    if (dom_obj.TimeStamp.HasValue)
        //    {
        //        xml_obj.timestamp = dom_obj.TimeStamp.Value;
        //        xml_obj.timestampSpecified = true;
        //    }

        //    // set the user data.
        //    if (dom_obj.UserId.HasValue)
        //    {
        //        xml_obj.uid = dom_obj.UserId.Value;
        //        xml_obj.uidSpecified = true;
        //    }
        //    xml_obj.user = xml_obj.user;

        //    // set the version.
        //    if (dom_obj.Version.HasValue)
        //    {
        //        xml_obj.version = (ulong)dom_obj.Version.Value;
        //        xml_obj.versionSpecified = true;
        //    }

        //    // set the visible.
        //    xml_obj.visible = dom_obj.Visible;
        //    xml_obj.visibleSpecified = true;

        //    // set the node-specific properties.
        //    xml_obj.lat = dom_obj.Coordinate.Latitude;
        //    xml_obj.latSpecified = true;
        //    xml_obj.lon = dom_obj.Coordinate.Longitude;
        //    xml_obj.lonSpecified = true;

        //    return xml_obj;
        //}

        /// <summary>
        /// Converts an Xml node to an Osm domain model node.
        /// </summary>
        /// <param name="dom_obj"></param>
        /// <returns></returns>
        public static node ConvertTo(this OsmSharp.Osm.Node dom_obj)
        {
            node xml_obj = new node();

            // set the changeset.
            if (dom_obj.ChangeSetId.HasValue)
            {
                xml_obj.changeset          = dom_obj.ChangeSetId.Value;
                xml_obj.changesetSpecified = true;
            }

            // set the id.
            if (dom_obj.Id.HasValue)
            {
                xml_obj.id          = dom_obj.Id.Value;
                xml_obj.idSpecified = true;
            }

            if (dom_obj.Tags != null)
            {
                xml_obj.tag = new tag[dom_obj.Tags.Count];
                int idx = 0;
                foreach (var tag in dom_obj.Tags)
                {
                    tag t = new tag();
                    t.k = tag.Key;
                    t.v = tag.Value;
                    xml_obj.tag[idx] = t;
                    idx++;
                }
            }

            // set the timestamp.
            if (dom_obj.TimeStamp.HasValue)
            {
                xml_obj.timestamp          = dom_obj.TimeStamp.Value;
                xml_obj.timestampSpecified = true;
            }

            // set the user data.
            if (dom_obj.UserId.HasValue)
            {
                xml_obj.uid          = dom_obj.UserId.Value;
                xml_obj.uidSpecified = true;
            }
            xml_obj.user = xml_obj.user;

            // set the version.
            if (dom_obj.Version.HasValue)
            {
                xml_obj.version          = (ulong)dom_obj.Version.Value;
                xml_obj.versionSpecified = true;
            }

            // set the visible.
            xml_obj.visible          = dom_obj.Visible.Value;
            xml_obj.visibleSpecified = true;

            // set the node-specific properties.
            xml_obj.lat          = dom_obj.Latitude.Value;
            xml_obj.latSpecified = true;
            xml_obj.lon          = dom_obj.Longitude.Value;
            xml_obj.lonSpecified = true;

            return(xml_obj);
        }
        private void Delete(Node node)
        {
            OracleCommand command;

            command = this.CreateCommand("delete from node_tags where node_id = :node_id");
            command.Parameters.Add(new OracleParameter("node_id", node.Id.Value));
            command.ExecuteNonQuery();
            command.Dispose();

            command = this.CreateCommand("delete from node where id = :id");
            command.Parameters.Add(new OracleParameter("id", node.Id.Value));
            command.ExecuteNonQuery();
            command.Dispose();
        }
Exemplo n.º 26
0
        /// <summary>
        /// Tests read/writing a node.
        /// </summary>
        protected void TestNodeReadWrite()
        {
            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            Node node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;

            // create a target, add the node, create a source and verify node in db.
            var target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            var dataSource = this.CreateDataSource();
            Node foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";
            node.UserId = 10;

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";
            node.UserId = 10;
            node.Version = 1;

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";
            node.UserId = 10;
            node.Version = 1;
            node.Visible = true;

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";
            node.UserId = 10;
            node.Version = 1;
            node.Visible = true;
            node.TimeStamp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
                DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);

            this.NotifyEmptyExpected(); // empty test database.

            // create a test-node.
            node = new Node();
            node.Id = 1;
            node.Latitude = 51.0;
            node.Longitude = 4.0;
            node.UserName = "******";
            node.UserId = 10;
            node.Version = 1;
            node.Visible = true;
            node.TimeStamp = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day,
                DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
            node.Tags = new SimpleTagsCollection();
            node.Tags.Add("tag", "value");

            // create a target, add the node, create a source and verify node in db.
            target = this.CreateDataStreamTarget();
            target.Initialize();
            target.AddNode(node);
            target.Flush();
            target.Close();
            dataSource = this.CreateDataSource();
            foundNode = dataSource.GetNode(1);
            this.CompareNodes(node, foundNode);
        }
        /// <summary>
        /// Modifies the given node.
        /// </summary>
        /// <param name="node"></param>
        private void Modify(Node node)
        {
            OracleCommand command;

            string sql = string.Empty;

            DateTime? timestamp = node.TimeStamp;
            if (timestamp.HasValue)
            {
                sql = "update node set latitude = :latitude, longitude = :longitude, changeset_id = :changeset_id, visible=:visible, timestamp=to_date('{0}','YYYY/MM/DD HH24:MI'), tile=:tile, version=:version, usr=:usr, usr_id=:usr_id where id=:id";
                sql = string.Format(sql,timestamp.Value.ToString("yyyy/MM/dd HH:mm"));
            }
            else
            {
                sql = "update node set latitude = :latitude, longitude = :longitude, changeset_id = :changeset_id, visible=:visible, timestamp=null, tile=:tile, version=:version where id=:id";
            }
            command = this.CreateCommand(sql);

            // format data and create parameters.
            int? latitude = (int)(node.Latitude * 10000000); // latitude should always contain a value.
            command.Parameters.Add("latitude",latitude.ConvertToDBValue<int>());

            int? longitude = (int)(node.Longitude * 10000000); // longitude should always containt a value.
            command.Parameters.Add("longitude",longitude.ConvertToDBValue<int>());

            long? changeset_id = node.ChangeSetId;
            command.Parameters.Add("changeset_id",changeset_id.ConvertToDBValue<long>());

            bool? visible = node.Visible;
            int visible_int = 1;
            if (!visible.HasValue || !visible.Value)
            {
                visible_int = 0;
            }
            command.Parameters.Add("visible", visible_int);

            // calculate the tile the node belongs to.
            long tile = TileCalculations.xy2tile(TileCalculations.lon2x(node.Longitude.Value), TileCalculations.lat2y(node.Latitude.Value));
            command.Parameters.Add("tile", tile);

            long? version = (long)node.Version;
            command.Parameters.Add("version",version.ConvertToDBValue<long>());

            command.Parameters.Add("usr", node.UserName);
            command.Parameters.Add("usr_id", node.UserId);

            long? id = node.Id;
            command.Parameters.Add("id", id.ConvertToDBValue<long>());

            // execute the update command.
            command.ExecuteNonQuery();
            command.Dispose();

            if (this.Exists("node",id.Value))
            {
                // modify the node tags.
                this.ModifyTags(node.Id.Value, node.Tags, "node_tags", "node_id");
            }

            // raise the modified event.
            this.RaiseChange(ChangeType.Modify, OsmGeoType.Node, node.Id.Value);
        }
Exemplo n.º 28
0
 /// <summary>
 /// Returns all the ways for a given node.
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public override IList<Way> GetWaysFor(Node node)
 {
     return this.GetWaysFor(node.Id.Value);
 }
Exemplo n.º 29
0
 /// <summary>
 /// Returns true if this way contains the given node.
 /// </summary>
 /// <param name="node"></param>
 /// <returns></returns>
 public bool HasNode(Node node)
 {
     return this.Nodes.Contains(node);
 }
Exemplo n.º 30
0
 /// <summary>
 /// Creates a new node.
 /// </summary>
 /// <param name="id"></param>
 /// <param name="tags"></param>
 /// <param name="latitude"></param>
 /// <param name="longitude"></param>
 /// <returns></returns>
 public static Node Create(long id, TagsCollection tags, double latitude, double longitude)
 {
     Node node = new Node();
     node.Id = id;
     node.Latitude = latitude;
     node.Longitude = longitude;
     node.Tags = tags;
     return node;
 }
Exemplo n.º 31
0
        public void APITestNodeCreateGetUpdate()
        {
            // intialize the connection.
            var apiInstance = new APIConnection("http://api06.dev.openstreetmap.org/",
                "osmsharp", "osmsharp");

            // open a changeset.
            apiInstance.ChangeSetOpen("Simple Node Creation Test");

            // initialize the node.
            var node = new Node();
            node.Latitude = -0.494497;
            node.Longitude = -24.119325;
            node.Tags = new TagsCollection();
            node.Tags.Add("type", "testnode");
            node.Visible = true;

            // save the node.
            node = apiInstance.NodeCreate(node);

            // close the changeset.
            apiInstance.ChangeSetClose();

            // check if the id now has a value.
            Assert.IsTrue(node.Id.HasValue);

            // get the new node id.
            long nodeId = node.Id.Value;

            // open new changeset.
            apiInstance.ChangeSetOpen("Simple Node Update Test");

            // get the node.
            Node apiNode = apiInstance.NodeGet(node.Id.Value);
            apiNode.Tags.Add("another_tag", "test adding a tag!");
            apiInstance.NodeUpdate(apiNode);

            // close the current changeset.
            apiInstance.ChangeSetClose();

            // get the api node.
            apiNode = apiInstance.NodeGet(node.Id.Value);

            Assert.AreEqual(2, apiNode.Tags.Count);
            Assert.IsTrue(apiNode.Tags.ContainsKey("another_tag"));
            Assert.AreEqual("test adding a tag!", apiNode.Tags["another_tag"]);
        }
        private bool DoMoveNextNode()
        {
            if (_node_reader == null)
            {
                SQLiteCommand node_command = new SQLiteCommand("select * from node left join node_tags on node_tags.node_id = node.id order by node.id");
                node_command.Connection = _connection;
                _node_reader = node_command.ExecuteReader();
                if (!_node_reader.Read())
                    _node_reader.Close();
            }

            // read next node.
            if (!_node_reader.IsClosed)
            {
                // load/parse data.
                Node node = new Node();
                node.Id = _node_reader.GetInt64(0);
                node.Latitude = _node_reader.GetInt64(1) / 10000000.0;
                node.Longitude = _node_reader.GetInt64(2) / 10000000.0;
                node.ChangeSetId = _node_reader.GetInt64(3);
                node.TimeStamp = _node_reader.GetDateTime(5);
                node.Version = (ulong)_node_reader.GetInt64(7);
                node.Visible = _node_reader.GetInt64(4) == 1;
                //node.UserName = _node_reader.GetString(8);
                //node.UserId = _node_reader.IsDBNull(9) ? -1 : _node_reader.GetInt64(9);

                //Has tags?
                if (!_node_reader.IsDBNull(10))
                {
                    //if (node.Tags == null)
                    //node.Tags = new Dictionary<string, string>();

                    long currentnode = node.Id.Value;
                    while (currentnode == node.Id.Value)
                    {
                        //string key = _node_reader.GetString(11);
                        //string value = _node_reader.GetString(12);
                        //node.Tags.Add(key, value);
                        if (!_node_reader.Read())
                        {
                            _node_reader.Close();
                            break;
                        }
                        currentnode = _node_reader.GetInt64(0);
                    }
                }
                else if (!_node_reader.Read())
                    _node_reader.Close();
                // set the current variable!
                _current = node;
                return true;
            }
            _node_reader.Close();
            _node_reader.Dispose();
            _node_reader = null;
            _current_type = OsmGeoType.Way;
            return false;
        }
        private void Create(Node node)
        {
            OracleCommand command;

            command = this.CreateCommand("insert into node (id,latitude,longitude,changeset_id,visible,timestamp,tile,version,usr,usr_id) values (:id,:latitude,:longitude,:changeset_id,:visible,:timestamp,:tile,:version,:usr,:usr_id)");

            // format data and create parameters.
            long? id = node.Id;
            command.Parameters.Add(new OracleParameter("id", id.ConvertToDBValue<long>()));

            int? latitude = (int)(node.Latitude * 10000000); // latitude should always contain a value.
            command.Parameters.Add(new OracleParameter("latitude", latitude.ConvertToDBValue<int>()));

            int? longitude = (int)(node.Longitude * 10000000); // longitude should always containt a value.
            command.Parameters.Add(new OracleParameter("longitude", longitude.ConvertToDBValue<int>()));

            long? changeset_id = node.ChangeSetId;
            command.Parameters.Add(new OracleParameter("changeset_id", changeset_id.ConvertToDBValue<long>()));

            bool? visible = node.Visible;
            int visible_int = 1;
            if (!visible.HasValue)
            {
                visible_int = 1;
            }
            command.Parameters.Add(new OracleParameter("visible", visible_int));

            DateTime? timestamp = node.TimeStamp;
            command.Parameters.Add(new OracleParameter("ts", timestamp.ConvertToDBValue<DateTime>()));

            // calculate the tile the node belongs to.
            long tile = TileCalculations.xy2tile(TileCalculations.lon2x(node.Longitude.Value), TileCalculations.lat2y(node.Latitude.Value));
            command.Parameters.Add(new OracleParameter("tile", tile));

            long? version = (long)node.Version;
            command.Parameters.Add(new OracleParameter("version", version.ConvertToDBValue<long>()));

            command.Parameters.Add("usr", node.UserName);
            command.Parameters.Add("usr_id", node.UserId);

            command.ExecuteNonQuery();
            command.Dispose();

            // insert tags.
            this.CreateTags(node.Id.Value, node.Tags, "node_tags", "node_id");
        }