Inheritance: IGeoRSS
Exemple #1
0
        public static GeometryObject ToGeometry(this GeoRssBox georssBox)
        {
            if (georssBox.Item == null)
            {
                return(null);
            }

            List <IPosition>  position = new List <IPosition>();
            List <LineString> polygon  = new List <LineString>();
            string            georssbox;

            georssbox = georssBox.Item.Trim();

            string[] pos = georssbox.Split(' ');

            if (pos.Length != 4)
            {
                throw new InvalidFormatException("invalid GeoRSS representation: georss:box members are not 4 :" + georssbox);
            }

            position.Add(new GeographicPosition(pos[0], pos[1]));
            position.Add(new GeographicPosition(pos[0], pos[3]));
            position.Add(new GeographicPosition(pos[2], pos[3]));
            position.Add(new GeographicPosition(pos[2], pos[1]));
            position.Add(new GeographicPosition(pos[0], pos[1]));

            polygon.Add(new LineString(position));
            return(new Polygon(polygon));
        }
Exemple #2
0
        public void GeoRssBoxTestCase()
        {
            string xml = "<georss:box xmlns:georss=\"http://www.georss.org/georss\">42.943 -71.032 43.039 -69.856</georss:box>";

            var reader = XmlReader.Create(new StringReader(xml));

            Terradue.GeoJson.GeoRss.GeoRssBox box = (Terradue.GeoJson.GeoRss.GeoRssBox)Terradue.GeoJson.GeoRss.GeoRssHelper.Deserialize(reader);

            var geom = box.ToGeometry();

            Assert.That(geom is Polygon);

            Assert.That(((Polygon)geom).LineStrings[0].Positions[0] is GeographicPosition);

            Assert.AreEqual(42.943, ((GeographicPosition)((Polygon)geom).LineStrings[0].Positions[0]).Latitude);

            Assert.AreEqual(-71.032, ((GeographicPosition)((Polygon)geom).LineStrings[0].Positions[0]).Longitude);

            Assert.AreEqual(42.943, ((GeographicPosition)((Polygon)geom).LineStrings[0].Positions[1]).Latitude);

            Assert.AreEqual(-69.856, ((GeographicPosition)((Polygon)geom).LineStrings[0].Positions[1]).Longitude);

            Assert.True(((Polygon)geom).LineStrings[0].IsClosed());

            var poly = (GeoRssPolygon)geom.ToGeoRss();
            var sw   = new StringWriter();

            GeoRssHelper.Serialize(XmlWriter.Create(sw), poly);

            var xml1 = sw.ToString();

            sw = new StringWriter();

            GeoRssHelper.Serialize(XmlWriter.Create(sw), box);

            sw.Close();

            xml1 = sw.ToString();

            Assert.IsTrue(XNode.DeepEquals(XDocument.Parse(xml).Root, XDocument.Parse(xml1).Root));
        }