예제 #1
0
 public bool Contains(LineairRing lineairRing)
 {
     foreach (GeoCoordinate coordinate in lineairRing.Coordinates)
     {
         if (!this.Contains(coordinate))
         {
             return(false);
         }
     }
     foreach (GeoCoordinate coordinate in this.Ring.Coordinates)
     {
         if (lineairRing.Contains(coordinate))
         {
             return(false);
         }
     }
     foreach (LineString hole in this.Holes)
     {
         foreach (GeoCoordinate coordinate in hole.Coordinates)
         {
             if (lineairRing.Contains(coordinate))
             {
                 return(false);
             }
         }
     }
     return(true);
 }
예제 #2
0
 /// <summary>
 /// Returns true if the given ring is contained in this polygon.
 /// </summary>
 /// <param name="lineairRing"></param>
 /// <returns></returns>
 public bool Contains(LineairRing lineairRing)
 {
     // check if all points are inside this polygon.
     foreach (var coordinate in lineairRing.Coordinates)
     {
         if (!this.Contains(coordinate))
         { // a coordinate ouside of this ring can never be part of a contained inner ring.
             return(false);
         }
     }
     // check if none of the points of this ring are inside the other ring.
     foreach (var coordinate in this.Ring.Coordinates)
     {
         if (lineairRing.Contains(coordinate))
         { // a coordinate ouside of this ring can never be part of a contained inner ring.
             return(false);
         }
     }
     foreach (LineairRing hole in this.Holes)
     {
         foreach (var coordinate in hole.Coordinates)
         {
             if (lineairRing.Contains(coordinate))
             { // a coordinate ouside of this ring can never be part of a contained inner ring.
                 return(false);
             }
         }
     }
     return(true);
 }
예제 #3
0
        public void TestLineairRingContainsRing()
        {
            LineairRing inner = new LineairRing(new GeoCoordinate(1, 1),
                new GeoCoordinate(1, 0.2), new GeoCoordinate(0.2, 1), new GeoCoordinate(1, 1));
            LineairRing outer = new LineairRing(new GeoCoordinate(0, 0),
                new GeoCoordinate(2, 0), new GeoCoordinate(2, 2), new GeoCoordinate(0, 2), new GeoCoordinate(0, 0));

            Assert.IsTrue(outer.Contains(inner));
        }
예제 #4
0
        public void TestLineairRingContainsPoint()
        {
            LineairRing ring = new LineairRing(new GeoCoordinate(0, 0),
                new GeoCoordinate(3, 0), new GeoCoordinate(0, 3), new GeoCoordinate(0, 0));

            foreach (GeoCoordinate ringCoordinate in ring.Coordinates)
            {
                Assert.IsTrue(ring.Contains(ringCoordinate));
            }

            GeoCoordinate coordinate = new GeoCoordinate(1, 1);
            Assert.IsTrue(ring.Contains(coordinate));
            coordinate = new GeoCoordinate(2, 2);
            Assert.IsFalse(ring.Contains(coordinate));
            coordinate = new GeoCoordinate(-1, 1);
            Assert.IsFalse(ring.Contains(coordinate));
            coordinate = new GeoCoordinate(0, 1);
            Assert.IsTrue(ring.Contains(coordinate));
            coordinate = new GeoCoordinate(1, 0);
            Assert.IsTrue(ring.Contains(coordinate));
        }
예제 #5
0
 /// <summary>
 /// Returns true if the given ring is contained in this ring.
 /// </summary>
 /// <param name="lineairRing"></param>
 /// <returns></returns>
 public bool Contains(LineairRing lineairRing)
 {
     // check if all points are inside this ring.
     foreach (var coordinate in lineairRing.Coordinates)
     {
         if (!this.Contains(coordinate))
         { // a coordinate ouside of this ring can never be part of a contained inner ring.
             return false;
         }
     }
     // check if none of the points of this ring are inside the other ring.
     foreach (var coordinate in this.Coordinates)
     {
         if (lineairRing.Contains(coordinate))
         { // a coordinate ouside of this ring can never be part of a contained inner ring.
             return false;
         }
     }
     return true;
 }