Esempio n. 1
0
        public void TestDecodeRelation()
        {
            var block = new PrimitiveBlock();

            block.date_granularity = 1000;
            block.granularity      = 100;
            block.lat_offset       = 0;
            block.lon_offset       = 0;
            block.stringtable      = new StringTable();
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'.
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("fake role"));

            var pbfRelation = new OsmSharp.IO.PBF.Relation()
            {
                id   = 1,
                info = new Info()
                {
                    changeset = 10,
                    timestamp = 10,
                    uid       = 100,
                    user_sid  = 3,
                    version   = 2
                }
            };

            pbfRelation.keys.Add(1);
            pbfRelation.vals.Add(2);
            pbfRelation.memids.Add(10);
            pbfRelation.memids.Add(1); // delta-encoding.
            pbfRelation.roles_sid.Add(4);
            pbfRelation.roles_sid.Add(4);
            pbfRelation.types.Add(OsmSharp.IO.PBF.Relation.MemberType.NODE);
            pbfRelation.types.Add(OsmSharp.IO.PBF.Relation.MemberType.WAY);

            var relation = Encoder.DecodeRelation(block, pbfRelation);

            Assert.IsNotNull(relation);
            Assert.AreEqual(1, relation.Id);
            Assert.AreEqual(10, relation.ChangeSetId);
            Assert.AreEqual(PBFExtensions.FromUnixTime(10000), relation.TimeStamp);
            Assert.AreEqual(OsmSharp.OsmGeoType.Relation, relation.Type);
            Assert.AreEqual(100, relation.UserId);
            Assert.AreEqual("Ben", relation.UserName);
            Assert.AreEqual(2, relation.Version);
            Assert.AreEqual(2, relation.Members.Length);
            Assert.AreEqual(10, relation.Members[0].Id);
            Assert.AreEqual(OsmSharp.OsmGeoType.Node, relation.Members[0].Type);
            Assert.AreEqual("fake role", relation.Members[0].Role);
            Assert.AreEqual(11, relation.Members[1].Id);
            Assert.AreEqual(OsmSharp.OsmGeoType.Way, relation.Members[1].Type);
            Assert.AreEqual("fake role", relation.Members[1].Role);
        }
Esempio n. 2
0
        public void TestDecodeWay()
        {
            var block = new PrimitiveBlock();

            block.date_granularity = 1000;
            block.granularity      = 100;
            block.lat_offset       = 0;
            block.lon_offset       = 0;
            block.stringtable      = new StringTable();
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'.
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben"));

            var pbfWay = new OsmSharp.IO.PBF.Way()
            {
                id   = 1,
                info = new Info()
                {
                    changeset = 10,
                    timestamp = 10,
                    uid       = 100,
                    user_sid  = 3,
                    version   = 2
                }
            };

            pbfWay.keys.Add(1);
            pbfWay.vals.Add(2);
            pbfWay.refs.Add(0);
            pbfWay.refs.Add(1);

            var way = Encoder.DecodeWay(block, pbfWay);

            Assert.IsNotNull(way);
            Assert.AreEqual(1, way.Id);
            Assert.AreEqual(10, way.ChangeSetId);
            Assert.AreEqual(PBFExtensions.FromUnixTime(10000), way.TimeStamp);
            Assert.AreEqual(OsmSharp.OsmGeoType.Way, way.Type);
            Assert.AreEqual(100, way.UserId);
            Assert.AreEqual("Ben", way.UserName);
            Assert.AreEqual(2, way.Version);
            Assert.AreEqual(2, way.Nodes.Length);
            Assert.AreEqual(0, way.Nodes[0]);
            Assert.AreEqual(1, way.Nodes[1]);
        }
Esempio n. 3
0
        public void TestDecodeNode()
        {
            var block = new PrimitiveBlock();

            block.date_granularity = 1000;
            block.granularity      = 100;
            block.lat_offset       = 0;
            block.lon_offset       = 0;
            block.stringtable      = new StringTable();
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes(string.Empty)); // always encode empty string as '0'.
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("highway"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("residential"));
            block.stringtable.s.Add(System.Text.Encoding.UTF8.GetBytes("Ben"));

            var pbfNode = new OsmSharp.IO.PBF.Node()
            {
                id   = 1,
                info = new Info()
                {
                    changeset = 10,
                    timestamp = 10,
                    uid       = 100,
                    user_sid  = 3,
                    version   = 2
                },
                lat = Encoder.EncodeLatLon(10.9f, block.lat_offset, block.granularity),
                lon = Encoder.EncodeLatLon(11.0f, block.lat_offset, block.granularity)
            };

            pbfNode.keys.Add(1);
            pbfNode.vals.Add(2);

            var node = Encoder.DecodeNode(block, pbfNode);

            Assert.IsNotNull(node);
            Assert.AreEqual(1, node.Id);
            Assert.AreEqual(10, node.ChangeSetId);
            Assert.AreEqual(10.9f, node.Latitude);
            Assert.AreEqual(11.0f, node.Longitude);
            Assert.AreEqual(PBFExtensions.FromUnixTime(10000), node.TimeStamp);
            Assert.AreEqual(OsmSharp.OsmGeoType.Node, node.Type);
            Assert.AreEqual(100, node.UserId);
            Assert.AreEqual("Ben", node.UserName);
            Assert.AreEqual(2, node.Version);
        }