예제 #1
0
 public override com.epl.geometry.ogc.OGCGeometry Boundary()
 {
     com.epl.geometry.Polyline polyline = new com.epl.geometry.Polyline();
     polyline.Add(polygon, true);
     // adds reversed path
     return((com.epl.geometry.ogc.OGCMultiCurve)com.epl.geometry.ogc.OGCGeometry.CreateFromEsriGeometry(polyline, esriSR, true));
 }
예제 #2
0
 // warning fix
 private void Generate_polyline_cuts_()
 {
     com.epl.geometry.MultiPath left  = new com.epl.geometry.Polyline();
     com.epl.geometry.MultiPath right = new com.epl.geometry.Polyline();
     com.epl.geometry.MultiPath uncut = new com.epl.geometry.Polyline();
     m_cuts.Add(left);
     m_cuts.Add(right);
     System.Collections.Generic.List <com.epl.geometry.OperatorCutLocal.CutPair> cutPairs = new System.Collections.Generic.List <com.epl.geometry.OperatorCutLocal.CutPair>(0);
     com.epl.geometry.Cutter.CutPolyline(m_bConsiderTouch, (com.epl.geometry.Polyline)m_cuttee, m_cutter, m_tolerance, cutPairs, null, m_progressTracker);
     for (int icut = 0; icut < cutPairs.Count; icut++)
     {
         com.epl.geometry.OperatorCutLocal.CutPair cutPair = cutPairs[icut];
         if (cutPair.m_side == com.epl.geometry.OperatorCutLocal.Side.Left)
         {
             left.Add((com.epl.geometry.MultiPath)cutPair.m_geometry, false);
         }
         else
         {
             if (cutPair.m_side == com.epl.geometry.OperatorCutLocal.Side.Right || cutPair.m_side == com.epl.geometry.OperatorCutLocal.Side.Coincident)
             {
                 right.Add((com.epl.geometry.MultiPath)cutPair.m_geometry, false);
             }
             else
             {
                 if (cutPair.m_side == com.epl.geometry.OperatorCutLocal.Side.Undefined)
                 {
                     m_cuts.Add((com.epl.geometry.MultiPath)cutPair.m_geometry);
                 }
                 else
                 {
                     uncut.Add((com.epl.geometry.MultiPath)cutPair.m_geometry, false);
                 }
             }
         }
     }
     if (!uncut.IsEmpty() && (!left.IsEmpty() || !right.IsEmpty() || m_cuts.Count >= 3))
     {
         m_cuts.Add(uncut);
     }
     if (left.IsEmpty() && right.IsEmpty() && m_cuts.Count < 3)
     {
         m_cuts.Clear();
     }
 }