Esempio n. 1
0
        }         // public OverlayOp( Geometry g0, Geometry g1 ) : base( g0, g1 )

        #endregion

        #region Static Methods
        /// <summary>
        /// Initializes a new instance of the OverlayOp class.
        /// </summary>
        public static Geometry Overlay(Geometry geom0, Geometry geom1, int opCode)
        {
            OverlayOp gov    = new OverlayOp(geom0, geom1);
            Geometry  geomOv = gov.GetResultGeometry(opCode);

            return(geomOv);
        }         // public static Geometry Overlay( Geometry geom0, Geometry geom1, int opCode )
Esempio n. 2
0
        }         // public void CollectLineEdge( DirectedEdge de, int opCode, ArrayList edges )

        /// <summary>
        /// Collect edges from Area input which should be in the result by which have not been included
        /// in a result area.  This happens ONLY:
        /// &lt;ul&gt;
        ///		&lt;li&gt;during an intersection when the boundaries of two areas touch in a line segment.
        ///		&lt;li&gt;OR as a result of a dimensional collapse.
        ///	&lt;/ul&gt;
        /// </summary>
        /// <param name="de"></param>
        /// <param name="opCode"></param>
        /// <param name="edges"></param>
        public void CollectBoundaryTouchEdge(DirectedEdge de, int opCode, ArrayList edges)
        {
            Label label = de.Label;

            // this smells like a bit of a hack, but it seems to work...
            if (!de.IsLineEdge &&
                !de.IsInteriorAreaEdge &&                  // added to handle dimensional collapses
                !de.Edge.IsInResult &&
                !de.Visited &&
                OverlayOp.IsResultOfOp(label, opCode) &&
                opCode == OverlayOp.Intersection)
            {
                edges.Add(de.Edge);
                de.SetVisitedEdge(true);
            }
        }         // public void CollectBoundaryTouchEdge( DirectedEdge de, int opCode, ArrayList edges )
Esempio n. 3
0
        }         // private void CollectLines( int opCode )

        /// <summary>
        ///
        /// </summary>
        /// <param name="de"></param>
        /// <param name="opCode"></param>
        /// <param name="edges"></param>
        public void CollectLineEdge(DirectedEdge de, int opCode, ArrayList edges)
        {
            Label label = de.Label;
            Edge  e     = de.Edge;

            // include L edges which are in the result
            if (de.IsLineEdge)
            {
                if (!de.Visited && OverlayOp.IsResultOfOp(label, opCode) && !e.IsCovered)
                {
                    //Trace.WriteLine("de: " + de.Label.ToString() );
                    //Trace.WriteLine("edge: " + e.Label.ToString() );

                    edges.Add(e);
                    de.SetVisitedEdge(true);
                } // if ( !de.Visited && OverlayOp.IsResultOfOp( label, opCode ) && !e.IsCovered )
            }     // if ( de.IsLineEdge )
        }         // public void CollectLineEdge( DirectedEdge de, int opCode, ArrayList edges )
Esempio n. 4
0
        }         // public ArrayList Build( int opCode )

        private ArrayList CollectNodes(int opCode)
        {
            ArrayList resultNodeList = new ArrayList();

            // add nodes from edge intersections which have not already been included in the result
            foreach (DictionaryEntry obj in _op.Graph.Nodes)
            {
                Node n = (Node)obj.Value;
                if (!n.IsInResult)
                {
                    Label label = n.Label;
                    if (OverlayOp.IsResultOfOp(label, opCode))
                    {
                        resultNodeList.Add(n);
                    }
                } // if ( !n.IsInResult )
            }     // foreach ( object obj in _op.Graph.Nodes )
            return(resultNodeList);
        }         // private ArrayList CollectNodes( int opCode )
Esempio n. 5
0
		} // public OverlayOp( Geometry g0, Geometry g1 ) : base( g0, g1 )

		#endregion

		#region Static Methods
		/// <summary>
		/// Initializes a new instance of the OverlayOp class.
		/// </summary>
		public static Geometry Overlay( Geometry geom0, Geometry geom1, int opCode )
		{
			OverlayOp gov = new OverlayOp( geom0, geom1 );
			Geometry geomOv = gov.GetResultGeometry( opCode );
			return geomOv;
		} // public static Geometry Overlay( Geometry geom0, Geometry geom1, int opCode )
Esempio n. 6
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="op"></param>
		/// <param name="geometryFactory"></param>
		/// <param name="ptLocator"></param>
		public LineBuilder( OverlayOp op, GeometryFactory geometryFactory, PointLocator ptLocator ) 
		{
			_op = op;
			_geometryFactory = geometryFactory;
			_ptLocator = ptLocator;
		} // public LineBuilder( OverlayOp op, GeometryFactory geometryFactory, PointLocator ptLocator )
Esempio n. 7
0
 /// <summary>
 /// Initializes a new instance of the PointBuilder class.
 /// </summary>
 public PointBuilder(OverlayOp op, GeometryFactory geometryFactory, PointLocator ptLocator)
 {
     _op = op;
     _geometryFactory = geometryFactory;
     _ptLocator       = ptLocator;
 }