Пример #1
0
        public ResultComparePolygonSegments CompareSegments(PolygonSegment polygonSegment)
        {
            if (polygonSegment == null)
            {
                return(new ResultComparePolygonSegments());
            }

            ResultComparePolygonSegments result = new ResultComparePolygonSegments();

            if (this.FrontPoint.GetDistanceTo(polygonSegment.FrontPoint) == 0)
            {
                result.FrontPoint = CoincidencePoints.Coincides_With_Front;
            }
            else if (this.FrontPoint.GetDistanceTo(polygonSegment.MediumPoint) == 0)
            {
                result.FrontPoint = CoincidencePoints.Coincides_With_Medium;
            }
            else if (this.FrontPoint.GetDistanceTo(polygonSegment.BackPoint) == 0)
            {
                result.FrontPoint = CoincidencePoints.Coincides_With_Back;
            }

            if (this.MediumPoint.GetDistanceTo(polygonSegment.FrontPoint) == 0)
            {
                result.MediumPoint = CoincidencePoints.Coincides_With_Front;
            }
            else if (this.MediumPoint.GetDistanceTo(polygonSegment.MediumPoint) == 0)
            {
                result.MediumPoint = CoincidencePoints.Coincides_With_Medium;
            }
            else if (this.MediumPoint.GetDistanceTo(polygonSegment.BackPoint) == 0)
            {
                result.MediumPoint = CoincidencePoints.Coincides_With_Back;
            }

            if (this.BackPoint.GetDistanceTo(polygonSegment.FrontPoint) == 0)
            {
                result.BackPoint = CoincidencePoints.Coincides_With_Front;
            }
            else if (this.BackPoint.GetDistanceTo(polygonSegment.MediumPoint) == 0)
            {
                result.BackPoint = CoincidencePoints.Coincides_With_Medium;
            }
            else if (this.BackPoint.GetDistanceTo(polygonSegment.BackPoint) == 0)
            {
                result.BackPoint = CoincidencePoints.Coincides_With_Back;
            }

            return(result);
        }
Пример #2
0
        public List <NeighborsSegment> GetCommonNeighborSegments(LandPolygon polygon)
        {
            List <NeighborsSegment> commonNeighborSegments = new List <NeighborsSegment>();

            List <PolygonSegment>        parcelSegmets = this.GetPolygonSegments();
            List <PolygonSegment>        foundSegments = null;
            ResultComparePolygonSegments resultCompare = null;

            foreach (PolygonSegment parcelSegment in parcelSegmets)
            {
                foundSegments = polygon.GetPolygonSegmentsByMediumPoint(parcelSegment.MediumPoint);

                foreach (PolygonSegment neighborSegmet in foundSegments)
                {
                    resultCompare = parcelSegment.CompareSegments(neighborSegmet);

                    if (
                        resultCompare.FrontPoint == CoincidencePoints.Coincides_With_Nothing &&
                        resultCompare.MediumPoint == CoincidencePoints.Coincides_With_Medium &&
                        resultCompare.BackPoint == CoincidencePoints.Coincides_With_Nothing
                        )
                    {
                        commonNeighborSegments.Add
                        (
                            new NeighborsSegment(neighborSegmet, parcelSegment.GetTypeNeighbor_OnlyOnePoint(neighborSegmet))
                        );
                    }
                    else if (
                        resultCompare.FrontPoint == CoincidencePoints.Coincides_With_Nothing &&
                        resultCompare.MediumPoint == CoincidencePoints.Coincides_With_Medium &&
                        resultCompare.BackPoint == CoincidencePoints.Coincides_With_Front
                        )
                    {
                        commonNeighborSegments.Add
                        (
                            new NeighborsSegment(neighborSegmet, TypeNeighbor.Ending)
                        );
                    }
                    else if (
                        resultCompare.FrontPoint == CoincidencePoints.Coincides_With_Back &&
                        resultCompare.MediumPoint == CoincidencePoints.Coincides_With_Medium &&
                        resultCompare.BackPoint == CoincidencePoints.Coincides_With_Front
                        )
                    {
                        commonNeighborSegments.Add
                        (
                            new NeighborsSegment(neighborSegmet, TypeNeighbor.Intermediate)
                        );
                    }
                    else if (
                        resultCompare.FrontPoint == CoincidencePoints.Coincides_With_Back &&
                        resultCompare.MediumPoint == CoincidencePoints.Coincides_With_Medium &&
                        resultCompare.BackPoint == CoincidencePoints.Coincides_With_Nothing
                        )
                    {
                        commonNeighborSegments.Add
                        (
                            new NeighborsSegment(neighborSegmet, TypeNeighbor.Starting)
                        );
                    }
                    else if (
                        resultCompare.MediumPoint == CoincidencePoints.Coincides_With_Medium
                        )
                    {
                        commonNeighborSegments.Add
                        (
                            new NeighborsSegment(neighborSegmet, TypeNeighbor.Undefined)
                        );
                    }
                }
            }

            return(commonNeighborSegments);
        }