コード例 #1
0
ファイル: FeatureCutter.cs プロジェクト: ProSuite/ProSuite
        private ChangeAlongZSource DetermineZSource(IFeature feature)
        {
            string             note    = null;
            ChangeAlongZSource zSource = ZSourceProvider?.GetValue(feature, out note) ??
                                         ChangeAlongZSource.Target;

            if (note != null)
            {
                _msg.Info(note);
            }

            return(zSource);
        }
コード例 #2
0
        private void ProcessFeature([NotNull] IFeature feature,
                                    [NotNull] IPolycurve overlappingGeometry)
        {
            IGeometry featureShape = feature.Shape;

            if (GeometryUtils.Disjoint(featureShape, overlappingGeometry))
            {
                return;
            }

            IList <IGeometry> overlappingResults;

            string             note    = null;
            ChangeAlongZSource zSource = ZSourceProvider?.GetValue(feature, out note) ??
                                         ChangeAlongZSource.Target;

            if (note != null)
            {
                _msg.Info(note);
            }

            var sourceMultipatch = featureShape as IMultiPatch;

            IList <IGeometry> modifiedGeometries =
                sourceMultipatch != null
                                        ? RemoveOverlaps(sourceMultipatch, (IPolygon)overlappingGeometry,
                                                         zSource, out overlappingResults)
                                        : RemoveOverlap((IPolycurve)featureShape, overlappingGeometry,
                                                        zSource, out overlappingResults);

            // additional check for undefined z values - this happens if the target has no Zs or UseSourceZs is active
            // -> currently the undefined Zs are interpolated before storing
            if (HasAnyGeometryUndefinedZs(modifiedGeometries))
            {
                _msg.DebugFormat(
                    "The result geometry of {0} has undefined z values.",
                    GdbObjectUtils.ToString(feature));
            }

            OverlapResultGeometries singleFeatureResult =
                new OverlapResultGeometries(feature, modifiedGeometries,
                                            overlappingResults);

            Result.ResultsByFeature.Add(singleFeatureResult);
        }