public void CantGetDistanceToNonPlanarPolygon() { const double z1 = 10; var g1 = GeometryFactory.CreatePoint(100, 0, z1); var polygon = CurveConstruction.StartPoly(0, 0, 10) .LineTo(10, 0, 10) .LineTo(10, 10, 11) .LineTo(0, 10, 10) .ClosePolygon(); var polygonClass = new FeatureClassMock( 1, "polygon", esriGeometryType.esriGeometryPolygon, esriFeatureType.esriFTSimple, SpatialReferenceUtils.CreateSpatialReference(WellKnownHorizontalCS.LV95)); var feature = polygonClass.CreateFeature(polygon); var intersectionPoints = ZDifferenceStrategyIntersectionPoints.GetDistanceToPlane( g1, feature, 0.01); foreach (var either in intersectionPoints) { either.Match(e => { Console.WriteLine( $@"expected nonplanar error: {e.Message} ({e.MaximumOffset})"); Assert.AreEqual(0.3324801391253977, e.MaximumOffset); return(0); }, pts => { Assert.Fail("Unexpected intersection point"); return(-1); }); } }
public void CanGetDistanceToPlanarPolygon() { const double z1 = 10; const double z2 = 20; var g1 = GeometryFactory.CreatePoint(100, 0, z1); var g2 = GeometryFactory.CreatePolygon(0, 0, 100, 200); GeometryUtils.MakeZAware(g2); g2 = GeometryUtils.ConstantZ(g2, z2); var polygonClass = new FeatureClassMock( 1, "polygon", esriGeometryType.esriGeometryPolygon, esriFeatureType.esriFTSimple, SpatialReferenceUtils.CreateSpatialReference(WellKnownHorizontalCS.LV95)); var feature = polygonClass.CreateFeature(g2); var intersectionPoints = ZDifferenceStrategyIntersectionPoints.GetDistanceToPlane( g1, feature, 0.01); foreach (var either in intersectionPoints) { either.Match(e => { Assert.Fail($"unexpected nonplanar error: {e.Message}"); return(-1); }, pts => { var points = pts.ToList(); Assert.AreEqual(1, points.Count); Assert.AreEqual(z2 - z1, points[0].Distance); return(0); }); } }