示例#1
0
        }         // private static bool ContainsPoint(Coordinate p, Geometry geom)

        private static bool ContainsPointInPolygon(Coordinate p, Polygon poly)
        {
            if (poly.IsEmpty())
            {
                return(false);
            }

            LinearRing shell = (LinearRing)poly.GetExteriorRing();

            if (!_cga.IsPointInRing(p, shell.GetCoordinates()))
            {
                return(false);
            }

            // now test if the point lies in or on the holes
            for (int i = 0; i < poly.GetNumInteriorRing(); i++)
            {
                LinearRing lr = poly.GetInteriorRingN(i);
                if (_cga.IsPointInRing(p, lr.GetCoordinates()))
                {
                    return(false);
                }
            }
            return(true);
        }         // private static bool ContainsPointInPolygon(Coordinate p, Polygon poly)
示例#2
0
        }         // private int Locate( Coordinate p, LineString l )

        /// <summary>
        ///
        /// </summary>
        /// <param name="p"></param>
        /// <param name="ring"></param>
        /// <returns></returns>
        private int Locate(Coordinate p, LinearRing ring)
        {
            if (_cga.IsOnLine(p, ring.GetCoordinates()))
            {
                return(Location.Boundary);
            }
            if (_cga.IsPointInRing(p, ring.GetCoordinates()))
            {
                return(Location.Interior);
            }
            return(Location.Exterior);
        }         // private int Locate( Coordinate p, LinearRing ring )
示例#3
0
 public bool IsInside(Coordinate pt)
 {
     return(_cga.IsPointInRing(pt, _pts));
 }