当前位置: 首页>>代码示例>>C#>>正文


C# IGeometry.Intersection方法代码示例

本文整理汇总了C#中IGeometry.Intersection方法的典型用法代码示例。如果您正苦于以下问题:C# IGeometry.Intersection方法的具体用法?C# IGeometry.Intersection怎么用?C# IGeometry.Intersection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IGeometry的用法示例。


在下文中一共展示了IGeometry.Intersection方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Intersection

 /// <summary>
 /// Computes the set-theoretic intersection of two <c>Geometry</c>s, using enhanced precision.
 /// </summary>
 /// <param name="geom0">The first Geometry.</param>
 /// <param name="geom1">The second Geometry.</param>
 /// <returns>The Geometry representing the set-theoretic intersection of the input Geometries.</returns>
 public static IGeometry Intersection(IGeometry geom0, IGeometry geom1)
 {
     ApplicationException originalEx;
     try
     {
         IGeometry result = geom0.Intersection(geom1);
         return result;
     }
     catch (ApplicationException ex)
     {
         originalEx = ex;
     }
     /*
      * If we are here, the original op encountered a precision problem
      * (or some other problem).  Retry the operation with
      * enhanced precision to see if it succeeds
      */
     try
     {
         CommonBitsOp cbo = new CommonBitsOp(true);
         IGeometry resultEp = cbo.Intersection(geom0, geom1);
         // check that result is a valid point after the reshift to orginal precision
         if (!resultEp.IsValid)
             throw originalEx;
         return resultEp;
     }
     catch (ApplicationException)
     {
         throw originalEx;
     }
 }
开发者ID:ExRam,项目名称:DotSpatial-PCL,代码行数:37,代码来源:EnhancedPrecisionOp.cs

示例2: Perform

        private static long Perform(IGeometry geom1, IGeometry geom2)
        {
            var stopWatch = new Stopwatch();
            stopWatch.Start();
            var result = geom1.Intersection(geom2);
            stopWatch.Stop();

            Assert.IsNotNull(result);
            Assert.IsTrue(result.IsValid);
            return stopWatch.ElapsedMilliseconds;
        }
开发者ID:Walt-D-Cat,项目名称:NetTopologySuite,代码行数:11,代码来源:NodingValidatorFixture.cs

示例3: DoIntersection

        private static void DoIntersection(IGeometry poly1, IGeometry poly2, IGeometry clip = null)
        {
            Assert.IsTrue(poly1.IsValid);
            Assert.IsTrue(poly1 is IPolygon);

            Assert.IsTrue(poly2.IsValid);
            Assert.IsTrue(poly2 is IPolygon);

            IGeometry intersection = poly1.Intersection(poly2);
            Assert.IsNotNull(intersection);
            Assert.IsTrue(intersection.IsValid);

            WKTReader reader = new WKTReader();
            IGeometry expectedIntersection = reader.Read(ExpectedResult);
            if (clip != null)
                expectedIntersection = expectedIntersection.Intersection(clip);

            double hd = DiscreteHausdorffDistance.Distance(intersection, expectedIntersection);
            Assert.That(hd < 0.001, "Intersection error: result not same as JTS");
        }
开发者ID:Walt-D-Cat,项目名称:NetTopologySuite,代码行数:20,代码来源:Issue27Fixture.cs

示例4: InvokeGeometryOverlayMethod

        public static IGeometry InvokeGeometryOverlayMethod(SpatialFunction opCode, IGeometry g0, IGeometry g1)
        {
            switch (opCode)
            {
                case SpatialFunction.Intersection:
                    return g0.Intersection(g1);

                case SpatialFunction.Union:
                    return g0.Union(g1);

                case SpatialFunction.Difference:
                    return g0.Difference(g1);

                case SpatialFunction.SymDifference:
                    return g0.SymmetricDifference(g1);
            }
            throw new ArgumentException(@"Unknown overlay op code");
        }
开发者ID:abrobston,项目名称:NHibernate.Spatial,代码行数:18,代码来源:OverlayValidatedGeometryOperation.cs

示例5: AreaDiff

 public static double AreaDiff(IGeometry g0, IGeometry g1)
 {
     double areaA = g0.Area;
     double areaAdiffB = g0.Difference(g1).Area;
     double areaAintB = g0.Intersection(g1).Area;
     return areaA - areaAdiffB - areaAintB;
 }
开发者ID:abrobston,项目名称:NHibernate.Spatial,代码行数:7,代码来源:OverlayValidatedGeometryOperation.cs

示例6: measure

 /*
 public static double measure(Geometry a, Geometry b)
 {
 AreaSimilarityMeasure gv = new AreaSimilarityMeasure(a, b);
 return gv.measure();
 }
 */
 public double Measure(IGeometry g1, IGeometry g2)
 {
     double areaInt = g1.Intersection(g2).Area;
     double areaUnion = g1.Union(g2).Area;
     return areaInt / areaUnion;
 }
开发者ID:leoliusg,项目名称:NetTopologySuite,代码行数:13,代码来源:AreaSimilarityMeasure.cs

示例7: IntersectionArea

 private static double IntersectionArea(IGeometry geometry, IGeometry other)
 {
     if (geometry.Intersects(other.Envelope))
     {
         OverlayOp.NodingValidatorDisabled = true;
         double area;
         try
         {
             area = geometry.Intersection(other).Area;
         }
         catch (Exception)
         {
             area = GetSampledIntersectionArea(geometry, other);
         }
         OverlayOp.NodingValidatorDisabled = false;
         return area;
     }
     return 0.0;
 }
开发者ID:lishxi,项目名称:_SharpMap,代码行数:19,代码来源:GeometryHelper.cs

示例8: GetRightHalfGeometry

        private static IGeometry GetRightHalfGeometry(IGeometry geometry, double splitPointX)
        {
            double maxXValue = geometry.EnvelopeInternal.MaxX + 1;
            double minYValue = geometry.EnvelopeInternal.MinY - 1;
            double maxYValue = geometry.EnvelopeInternal.MaxY + 1;

            var coordinatesRight = new[]
                                       {
                                           new Coordinate(splitPointX, maxYValue),
                                           new Coordinate(splitPointX, minYValue),
                                           new Coordinate(maxXValue, minYValue),
                                           new Coordinate(maxXValue, maxYValue),
                                           new Coordinate(splitPointX, maxYValue)
                                       };
            //
            var leftRectangle = new Polygon(new LinearRing(coordinatesRight));
            return geometry.Intersection(leftRectangle);
        }
开发者ID:lishxi,项目名称:_SharpMap,代码行数:18,代码来源:GeometryHelper.cs

示例9: intersection

 public static IGeometry intersection(IGeometry a, IGeometry b)
 {
     return a.Intersection(b);
 }
开发者ID:abrobston,项目名称:NHibernate.Spatial,代码行数:4,代码来源:OverlayFunctions.cs

示例10: CheckIntersection

        public void CheckIntersection(IGeometry baseGeom, IGeometry testGeom)
        {
            // this line can be used to test for the presence of noding failures for
            // non-tricky cases
            // Geometry star = rr2;
            Console.WriteLine("Star:");
            Console.WriteLine(baseGeom);
            Console.WriteLine("Rectangle:");
            Console.WriteLine(testGeom);

            // test to see whether the basic overlay code fails
            try
            {
                var intTrial = baseGeom.Intersection(testGeom);
                NetTopologySuite.Utilities.Assert.IsTrue(intTrial != null);
            }
            catch (Exception)
            {
                _failureCount++;
            }

            // this will throw an intersection if a robustness error occurs,
            // stopping the run
            var intersection = SnapIfNeededOverlayOp.Intersection(baseGeom, testGeom);
            Console.WriteLine("Intersection:");
            Console.WriteLine(intersection);
        }
开发者ID:Walt-D-Cat,项目名称:NetTopologySuite,代码行数:27,代码来源:OverlayNodingStressTest.cs


注:本文中的IGeometry.Intersection方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。