Exemple #1
0
 private void SetMinMax(GuidancePattern guidancePattern)
 {
     if (guidancePattern is APlus)
     {
         (guidancePattern as APlus).SetMinMax(_drawingUtil);
     }
     else if (guidancePattern is AbLine)
     {
         (guidancePattern as AbLine).SetMinMax(_drawingUtil);
     }
     else if (guidancePattern is AbCurve)
     {
         (guidancePattern as AbCurve).SetMinMax(_drawingUtil);
     }
     else if (guidancePattern is PivotGuidancePattern)
     {
         (guidancePattern as PivotGuidancePattern).SetMinMax(_drawingUtil);
     }
     else if (guidancePattern is MultiAbLine)
     {
         (guidancePattern as MultiAbLine).SetMinMax(_drawingUtil);
     }
     else if (guidancePattern is Spiral)
     {
         (guidancePattern as Spiral).SetMinMax(_drawingUtil);
     }
 }
Exemple #2
0
        private static GuidancePattern LoadGuidancePattern(XmlNode inputNode, out string patternId)
        {
            patternId = inputNode.GetXmlNodeValue("@A");
            if (string.IsNullOrEmpty(patternId))
            {
                return(null);
            }

            GuidancePattern pattern = GetPattern(inputNode);

            if (pattern == null)
            {
                return(null);
            }

            pattern.Description = inputNode.GetXmlNodeValue(@"B");

            pattern.PropagationDirection = GetPropagationDirection(inputNode.GetXmlNodeValue("@E"));
            pattern.BoundingPolygon      = ShapeLoader.LoadPolygon(inputNode.SelectNodes("PLN[0]"));
            pattern.Extension            = GetExtension(inputNode.GetXmlNodeValue("@F"));
            pattern.GpsSource            = GetGpsSource(inputNode);
            pattern.OriginalEpsgCode     = inputNode.GetXmlNodeValue("@M");

            return(pattern);
        }
Exemple #3
0
        private void WriteGuidancePattern(XmlWriter writer, GuidancePattern guidancePattern)
        {
            var patternType = ValidateAndGetPatternType(guidancePattern);

            // Bail out for inconsistent pattern type.
            if (string.IsNullOrEmpty(patternType))
            {
                return;
            }

            var guidancePatternId = guidancePattern.Id.FindIsoId() ?? GenerateId();

            TaskWriter.Ids.Add(guidancePatternId, guidancePattern.Id);

            writer.WriteStartElement(XmlPrefix);
            writer.WriteAttributeString("A", guidancePatternId);
            writer.WriteXmlAttribute("B", guidancePattern.Description);
            writer.WriteAttributeString("C", patternType);
            writer.WriteXmlAttribute("D", GetPropagationDirection(guidancePattern.PropagationDirection));
            writer.WriteXmlAttribute("E", GetExtension(guidancePattern.Extension));
            writer.WriteXmlAttribute("G", GetHeading(guidancePattern));
            writer.WriteXmlAttribute("M", guidancePattern.OriginalEpsgCode);

            WriteGpsData(writer, guidancePattern.GpsSource);
            WritePattern(writer, guidancePattern);

            WriteBoundary(writer, guidancePattern.BoundingPolygon);

            writer.WriteEndElement();
        }
Exemple #4
0
 private void ProcessPattern(GuidancePattern guidancePattern)
 {
     if (guidancePattern is APlus)
     {
         ProcessAPlus(guidancePattern as APlus);
     }
     else if (guidancePattern is AbLine)
     {
         ProcessAbLine(guidancePattern as AbLine);
     }
     else if (guidancePattern is AbCurve)
     {
         ProcessAbCurve(guidancePattern as AbCurve);
     }
     else if (guidancePattern is PivotGuidancePattern)
     {
         ProcessCenterPivot(guidancePattern as PivotGuidancePattern);
     }
     else if (guidancePattern is MultiAbLine)
     {
         ProcessMultiAbLine(guidancePattern as MultiAbLine);
     }
     else if (guidancePattern is Spiral)
     {
         ProcessSpiral(guidancePattern as Spiral);
     }
 }
Exemple #5
0
        private static void WritePattern(XmlWriter writer, GuidancePattern guidancePattern)
        {
            switch (guidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbCurve:
                WriteAbCurve(writer, guidancePattern as AbCurve);
                break;

            case GuidancePatternTypeEnum.AbLine:
                WriteAbLine(writer, guidancePattern as AbLine);
                break;

            case GuidancePatternTypeEnum.APlus:
                WriteAplus(writer, guidancePattern as APlus);
                break;

            case GuidancePatternTypeEnum.CenterPivot:
                WritePivot(writer, guidancePattern as CenterPivot);
                break;

            case GuidancePatternTypeEnum.Spiral:
                WriteSpiral(writer, guidancePattern as Spiral);
                break;
            }
        }
Exemple #6
0
        private static string GetHeading(GuidancePattern guidancePattern)
        {
            double?heading = null;

            switch (guidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbCurve:
                heading = (guidancePattern as AbCurve).Heading;
                break;

            case GuidancePatternTypeEnum.AbLine:
                heading = (guidancePattern as AbLine).Heading;
                break;

            case GuidancePatternTypeEnum.APlus:
                heading = (guidancePattern as APlus).Heading;
                break;
            }

            if (!heading.HasValue)
            {
                return(null);
            }

            return(heading.Value.ToString(CultureInfo.InvariantCulture));
        }
Exemple #7
0
        public void Write(XmlWriter writer, GuidancePattern guidancePattern)
        {
            if (guidancePattern == null)
            {
                return;
            }

            WriteGuidancePattern(writer, guidancePattern);
        }
Exemple #8
0
        private static string ValidateAndGetPatternType(GuidancePattern guidancePattern)
        {
            switch (guidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbLine:
            {
                var abLine = guidancePattern as AbLine;
                if (abLine == null || abLine.A == null || abLine.B == null)
                {
                    return(null);
                }
            }
                return("1");

            case GuidancePatternTypeEnum.APlus:
            {
                var aPlus = guidancePattern as APlus;
                if (aPlus == null || aPlus.Point == null)
                {
                    return(null);
                }
                return("2");
            }

            case GuidancePatternTypeEnum.AbCurve:
            {
                var abCurve = guidancePattern as AbCurve;
                if (abCurve == null || abCurve.Shape == null || abCurve.Shape.Count < 1)
                {
                    return(null);
                }
                return("3");
            }

            case GuidancePatternTypeEnum.CenterPivot:
            {
                var pivot = guidancePattern as CenterPivot;
                if (pivot == null || pivot.Center == null)
                {
                    return(null);
                }
                return("4");
            }

            case GuidancePatternTypeEnum.Spiral:
            {
                var spiral = guidancePattern as Spiral;
                if (spiral == null || spiral.Shape == null)
                {
                    return(null);
                }
                return("5");
            }
            }
            return(null);
        }
Exemple #9
0
        public void ProccessGuidancePattern(GuidancePattern guidancePattern)
        {
            using (var graphics = _spatialViewer.CreateGraphics())
            {
                _drawingUtil = new DrawingUtil(_spatialViewer.Width, _spatialViewer.Height, graphics);

                SetMinMax(guidancePattern);

                ProcessPattern(guidancePattern);
            }
        }
Exemple #10
0
        public ISOGuidancePattern ExportGuidancePattern(GuidancePattern adaptGuidancePattern)
        {
            ISOGuidancePattern gpn = new ISOGuidancePattern();

            //ID
            string gpnID = adaptGuidancePattern.Id.FindIsoId() ?? GenerateId();

            gpn.GuidancePatternId = gpnID;
            ExportIDs(adaptGuidancePattern.Id, gpnID);

            gpn.GuidancePatternDesignator = adaptGuidancePattern.Description;
            gpn.GuidancePatternType       = ExportGuidancePatternType(adaptGuidancePattern.GuidancePatternType);
            gpn.PropagationDirection      = ExportPropagationDirection(adaptGuidancePattern.PropagationDirection);
            gpn.Extension = ExportExtension(adaptGuidancePattern.Extension);
            gpn.Heading   = ExportHeading(adaptGuidancePattern);
            if (adaptGuidancePattern.GpsSource != null)
            {
                gpn.GNSSMethod = ExportGNSSMethod(adaptGuidancePattern.GpsSource.SourceType);
                if (adaptGuidancePattern.GpsSource.HorizontalAccuracy != null)
                {
                    gpn.HorizontalAccuracy = (decimal)adaptGuidancePattern.GpsSource.HorizontalAccuracy.AsConvertedDouble("m").Value;
                }
                if (adaptGuidancePattern.GpsSource.VerticalAccuracy != null)
                {
                    gpn.VerticalAccuracy = (decimal)adaptGuidancePattern.GpsSource.VerticalAccuracy.AsConvertedDouble("m").Value;
                }
            }
            gpn.OriginalSRID        = adaptGuidancePattern.OriginalEpsgCode;
            gpn.NumberOfSwathsLeft  = (uint?)adaptGuidancePattern.NumbersOfSwathsLeft;
            gpn.NumberOfSwathsRight = (uint?)adaptGuidancePattern.NumbersOfSwathsRight;

            //Pattern
            LineStringMapper lineStringMapper = new LineStringMapper(TaskDataMapper);

            gpn.LineString = lineStringMapper.ExportGuidancePattern(adaptGuidancePattern);

            if (adaptGuidancePattern is PivotGuidancePattern pivot &&
                pivot.DefinitionMethod == PivotGuidanceDefinitionEnum.PivotGuidancePatternCenterRadius &&
                pivot.Radius != null)
            {
                gpn.Radius = (uint)pivot.Radius.AsConvertedInt("mm").Value;
                gpn.GuidancePatternOptions = ISOGuidancePatternOption.FullCircle;
            }

            //Boundary
            if (adaptGuidancePattern.BoundingPolygon != null)
            {
                PolygonMapper polygonMapper = new PolygonMapper(TaskDataMapper);
                gpn.BoundaryPolygons = polygonMapper.ExportMultipolygon(adaptGuidancePattern.BoundingPolygon, ISOPolygonType.Other).ToList();
            }

            return(gpn);
        }
Exemple #11
0
        public ISOGuidanceGroup ExportGuidanceGroup(GuidanceGroup adaptGuidanceGroup)
        {
            ISOGuidanceGroup isoGroup = new ISOGuidanceGroup();

            //ID
            string id = adaptGuidanceGroup.Id.FindIsoId() ?? GenerateId();

            isoGroup.GuidanceGroupId = id;
            ExportIDs(adaptGuidanceGroup.Id, id);

            //Designator
            isoGroup.GuidanceGroupDesignator = adaptGuidanceGroup.Description;

            //Patterns
            if (adaptGuidanceGroup.GuidancePatternIds.Any())
            {
                List <GuidancePattern> patterns = new List <GuidancePattern>();
                foreach (int adaptID in adaptGuidanceGroup.GuidancePatternIds)
                {
                    GuidancePattern adaptPattern = DataModel.Catalog.GuidancePatterns.SingleOrDefault(p => p.Id.ReferenceId == adaptID);
                    if (adaptPattern != null)
                    {
                        patterns.Add(adaptPattern);
                    }
                }
                GuidancePatternMapper patternMapper = TaskDataMapper.GuidancePatternMapper;
                isoGroup.GuidancePatterns = patternMapper.ExportGuidancePatterns(patterns).ToList();
            }

            //Boundaries
            if (adaptGuidanceGroup.BoundingPolygon != null)
            {
                PolygonMapper polygonMapper = new PolygonMapper(TaskDataMapper);
                isoGroup.BoundaryPolygons = polygonMapper.ExportMultipolygon(adaptGuidanceGroup.BoundingPolygon, ISOPolygonType.Other).ToList();
            }

            return(isoGroup);
        }
Exemple #12
0
        public IEnumerable <GuidancePattern> ImportGuidancePatterns(IEnumerable <ISOGuidancePattern> isoGuidancePatterns)
        {
            //Import patterns
            List <GuidancePattern> adaptGuidancePatterns = new List <GuidancePattern>();

            foreach (ISOGuidancePattern isoGuidancePattern in isoGuidancePatterns)
            {
                GuidancePattern adaptGuidancePattern = ImportGuidancePattern(isoGuidancePattern);
                adaptGuidancePatterns.Add(adaptGuidancePattern);
            }

            //Add the patterns to the Catalog
            if (adaptGuidancePatterns.Any())
            {
                if (DataModel.Catalog.GuidancePatterns == null)
                {
                    DataModel.Catalog.GuidancePatterns = new List <GuidancePattern>();
                }
                DataModel.Catalog.GuidancePatterns.AddRange(adaptGuidancePatterns);
            }

            return(adaptGuidancePatterns);
        }
Exemple #13
0
        private static decimal?ExportHeading(GuidancePattern guidancePattern)
        {
            double?heading = null;

            switch (guidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbCurve:
                heading = (guidancePattern as AbCurve).Heading;
                break;

            case GuidancePatternTypeEnum.AbLine:
                heading = (guidancePattern as AbLine).Heading;
                break;

            case GuidancePatternTypeEnum.APlus:
                heading = (guidancePattern as APlus).Heading;
                break;
            }
            if (heading.HasValue)
            {
                return(Convert.ToDecimal(heading));
            }
            return(null);
        }
Exemple #14
0
        public ISOGuidancePattern ExportGuidancePattern(GuidancePattern adaptGuidancePattern)
        {
            ISOGuidancePattern gpn = new ISOGuidancePattern();

            //ID
            string gpnID = adaptGuidancePattern.Id.FindIsoId() ?? GenerateId();

            gpn.GuidancePatternId = gpnID;
            ExportIDs(adaptGuidancePattern.Id, gpnID);

            gpn.GuidancePatternDesignator = adaptGuidancePattern.Description;
            gpn.GuidancePatternType       = ExportGuidancePatternType(adaptGuidancePattern.GuidancePatternType);
            gpn.PropagationDirection      = ExportPropagationDirection(adaptGuidancePattern.PropagationDirection);
            gpn.Extension           = ExportExtension(adaptGuidancePattern.Extension);
            gpn.Heading             = ExportHeading(adaptGuidancePattern);
            gpn.GNSSMethod          = ExportGNSSMethod(adaptGuidancePattern.GpsSource.SourceType);
            gpn.HorizontalAccuracy  = (decimal)adaptGuidancePattern.GpsSource.HorizontalAccuracy.AsConvertedDouble("m");
            gpn.VerticalAccuracy    = (decimal)adaptGuidancePattern.GpsSource.VerticalAccuracy.AsConvertedDouble("m");
            gpn.OriginalSRID        = adaptGuidancePattern.OriginalEpsgCode;
            gpn.NumberOfSwathsLeft  = (uint?)adaptGuidancePattern.NumbersOfSwathsLeft;
            gpn.NumberOfSwathsRight = (uint?)adaptGuidancePattern.NumbersOfSwathsRight;

            //Pattern
            LineStringMapper lineStringMapper = new LineStringMapper(TaskDataMapper);

            switch (adaptGuidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbCurve:
                AbCurve curve = adaptGuidancePattern as AbCurve;
                gpn.LineString = lineStringMapper.ExportLineString(curve.Shape[0], ISOLineStringType.GuidancePattern);     //Only first linestring used.
                break;

            case GuidancePatternTypeEnum.AbLine:
                AbLine     abLine = adaptGuidancePattern as AbLine;
                LineString line   = new LineString {
                    Points = new List <Point>()
                };
                line.Points.Add(abLine.A);
                line.Points.Add(abLine.B);
                gpn.LineString = lineStringMapper.ExportLineString(line, ISOLineStringType.GuidancePattern);
                break;

            case GuidancePatternTypeEnum.APlus:
                APlus      aPlus     = adaptGuidancePattern as APlus;
                LineString aPlusLine = new LineString {
                    Points = new List <Point>()
                };
                aPlusLine.Points.Add(aPlus.Point);
                gpn.LineString = lineStringMapper.ExportLineString(aPlusLine, ISOLineStringType.GuidancePattern);
                break;

            case GuidancePatternTypeEnum.CenterPivot:
                PivotGuidancePattern pivot     = adaptGuidancePattern as PivotGuidancePattern;
                LineString           pivotLine = new LineString {
                    Points = new List <Point>()
                };
                pivotLine.Points.Add(pivot.Center);

                if (pivot.StartPoint != null)
                {
                    pivotLine.Points.Add(pivot.StartPoint);
                    if (pivot.EndPoint != null)
                    {
                        pivotLine.Points.Add(pivot.EndPoint);
                    }
                }
                gpn.LineString = lineStringMapper.ExportLineString(pivotLine, ISOLineStringType.GuidancePattern);
                //gpn.Radius = ?  //Not implemented
                //gpn.GuidancePatternOptions = ? //Not implemented
                break;

            case GuidancePatternTypeEnum.Spiral:
                Spiral spiral = adaptGuidancePattern as Spiral;
                gpn.LineString = lineStringMapper.ExportLineString(spiral.Shape, ISOLineStringType.GuidancePattern);
                break;
            }

            //Boundary
            if (adaptGuidancePattern.BoundingPolygon != null)
            {
                PolygonMapper polygonMapper = new PolygonMapper(TaskDataMapper);
                gpn.BoundaryPolygons = polygonMapper.ExportPolygons(adaptGuidancePattern.BoundingPolygon.Polygons, ISOPolygonType.Other).ToList();
            }

            return(gpn);
        }
Exemple #15
0
        public GuidancePattern ImportGuidancePattern(ISOGuidancePattern isoGuidancePattern)
        {
            GuidancePattern  pattern          = null;
            LineStringMapper lineStringMapper = new LineStringMapper(TaskDataMapper);
            PointMapper      pointMapper      = new PointMapper(TaskDataMapper);

            switch (isoGuidancePattern.GuidancePatternType)
            {
            case ISOGuidancePatternType.AB:
                pattern = new AbLine();
                AbLine abLine = pattern as AbLine;
                abLine.A = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points.First());
                abLine.B = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points.Last());
                break;

            case ISOGuidancePatternType.APlus:
                pattern = new APlus();
                APlus aPlus = pattern as APlus;
                aPlus.Point = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points.First());
                break;

            case ISOGuidancePatternType.Curve:
                pattern = new AbCurve();
                AbCurve abCurve = pattern as AbCurve;
                abCurve.Shape = new List <LineString>()
                {
                    lineStringMapper.ImportLineString(isoGuidancePattern.LineString)
                };                                                                                                               //As with export, we only have 1 linestring.
                break;

            case ISOGuidancePatternType.Pivot:
                pattern = new PivotGuidancePattern();
                PivotGuidancePattern pivot = pattern as PivotGuidancePattern;
                pivot.Center = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points.First());
                if (isoGuidancePattern.LineString.Points.Count == 3)
                {
                    pivot.StartPoint = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points[1]);
                    pivot.EndPoint   = pointMapper.ImportPoint(isoGuidancePattern.LineString.Points[2]);
                }
                //Radius & GuidancePatternOptions not implemented in ADAPT
                break;

            case ISOGuidancePatternType.Spiral:
                pattern = new Spiral();
                Spiral spiral = pattern as Spiral;
                spiral.Shape = lineStringMapper.ImportLineString(isoGuidancePattern.LineString);
                break;
            }

            //ID
            ImportIDs(pattern.Id, isoGuidancePattern.GuidancePatternId);

            pattern.Description          = isoGuidancePattern.GuidancePatternDesignator;
            pattern.GuidancePatternType  = ImportGuidancePatternType(isoGuidancePattern.GuidancePatternType);
            pattern.PropagationDirection = ImportPropagationDirection(isoGuidancePattern.PropagationDirection);
            pattern.Extension            = ImportExtension(isoGuidancePattern.Extension);

            //Heading
            if (isoGuidancePattern.Heading.HasValue)
            {
                double heading = Convert.ToDouble(isoGuidancePattern.Heading.Value);
                if (pattern is AbLine)
                {
                    (pattern as AbLine).Heading = heading;
                }
                if (pattern is AbCurve)
                {
                    (pattern as AbCurve).Heading = heading;
                }
                if (pattern is APlus)
                {
                    (pattern as APlus).Heading = heading;
                }
            }

            pattern.GpsSource                    = new GpsSource();
            pattern.GpsSource.SourceType         = ImportGNSSMethod(isoGuidancePattern.GNSSMethod);
            pattern.GpsSource.HorizontalAccuracy = GetAccuracy(isoGuidancePattern.HorizontalAccuracy);
            pattern.GpsSource.VerticalAccuracy   = GetAccuracy(isoGuidancePattern.VerticalAccuracy);

            pattern.NumbersOfSwathsLeft  = (int?)(isoGuidancePattern.NumberOfSwathsLeft);
            pattern.NumbersOfSwathsRight = (int?)(isoGuidancePattern.NumberOfSwathsRight);
            pattern.OriginalEpsgCode     = isoGuidancePattern.OriginalSRID;

            return(pattern);
        }
        public GuidancePattern ImportGuidancePattern(ISOGuidancePattern isoGuidancePattern)
        {
            GuidancePattern pattern = null;

            switch (isoGuidancePattern.GuidancePatternType)
            {
            case ISOGuidancePatternType.AB:
                pattern = new AbLine();
                break;

            case ISOGuidancePatternType.APlus:
                pattern = new APlus();
                break;

            case ISOGuidancePatternType.Curve:
                pattern = new AbCurve();
                break;

            case ISOGuidancePatternType.Pivot:
                pattern = new PivotGuidancePattern();
                break;

            case ISOGuidancePatternType.Spiral:
                pattern = new Spiral();
                break;
            }

            //ID
            ImportIDs(pattern.Id, isoGuidancePattern.GuidancePatternId);

            pattern.Description          = isoGuidancePattern.GuidancePatternDesignator;
            pattern.GuidancePatternType  = ImportGuidancePatternType(isoGuidancePattern.GuidancePatternType);
            pattern.PropagationDirection = ImportPropagationDirection(isoGuidancePattern.PropagationDirection);
            pattern.Extension            = ImportExtension(isoGuidancePattern.Extension);

            //Heading
            if (isoGuidancePattern.Heading.HasValue)
            {
                double heading = Convert.ToDouble(isoGuidancePattern.Heading.Value);
                if (pattern is AbLine)
                {
                    (pattern as AbLine).Heading = heading;
                }
                if (pattern is AbCurve)
                {
                    (pattern as AbCurve).Heading = heading;
                }
                if (pattern is APlus)
                {
                    (pattern as APlus).Heading = heading;
                }
            }

            pattern.GpsSource                    = new GpsSource();
            pattern.GpsSource.SourceType         = ImportGNSSMethod(isoGuidancePattern.GNSSMethod);
            pattern.GpsSource.HorizontalAccuracy = GetAccuracy(isoGuidancePattern.HorizontalAccuracy);
            pattern.GpsSource.VerticalAccuracy   = GetAccuracy(isoGuidancePattern.VerticalAccuracy);

            pattern.NumbersOfSwathsLeft  = (int?)(isoGuidancePattern.NumberOfSwathsLeft);
            pattern.NumbersOfSwathsRight = (int?)(isoGuidancePattern.NumberOfSwathsRight);
            pattern.OriginalEpsgCode     = isoGuidancePattern.OriginalSRID;

            return(pattern);
        }
        public ISOLineString ExportGuidancePattern(GuidancePattern adaptGuidancePattern)
        {
            ISOLineString lineString = new ISOLineString(TaskDataMapper.Version);

            lineString.LineStringType = ISOLineStringType.GuidancePattern;

            PointMapper pointMapper = new PointMapper(TaskDataMapper);

            List <Point> adaptPoints;

            switch (adaptGuidancePattern.GuidancePatternType)
            {
            case GuidancePatternTypeEnum.AbCurve:
                AbCurve curve = adaptGuidancePattern as AbCurve;
                adaptPoints = curve.Shape[0].Points;     //Only first linestring used.
                break;

            case GuidancePatternTypeEnum.AbLine:
                AbLine abLine = adaptGuidancePattern as AbLine;
                adaptPoints = new List <Point>();
                adaptPoints.Add(abLine.A);
                adaptPoints.Add(abLine.B);
                break;

            case GuidancePatternTypeEnum.APlus:
                APlus aPlus = adaptGuidancePattern as APlus;
                adaptPoints = new List <Point>();
                adaptPoints.Add(aPlus.Point);
                break;

            case GuidancePatternTypeEnum.CenterPivot:
                PivotGuidancePattern pivot = adaptGuidancePattern as PivotGuidancePattern;
                adaptPoints = new List <Point>();
                lineString.Points.Add(pointMapper.ExportPoint(pivot.Center, ISOPointType.GuidanceReferenceCenter));

                if (pivot.DefinitionMethod == PivotGuidanceDefinitionEnum.PivotGuidancePatternStartEndCenter &&
                    pivot.StartPoint != null &&
                    pivot.EndPoint != null)
                {
                    adaptPoints.Add(pivot.StartPoint);
                    adaptPoints.Add(pivot.EndPoint);
                }
                break;

            case GuidancePatternTypeEnum.Spiral:
                Spiral spiral = adaptGuidancePattern as Spiral;
                adaptPoints = spiral.Shape.Points;
                break;

            default:
                return(null);
            }

            for (int i = 0; i < adaptPoints.Count; i++)
            {
                ISOPointType pointType = i == 0
                    ? ISOPointType.GuidanceReferenceA
                    : (i == adaptPoints.Count - 1
                        ? ISOPointType.GuidanceReferenceB
                        : ISOPointType.GuidancePoint);

                lineString.Points.Add(pointMapper.ExportPoint(adaptPoints[i], pointType));
            }

            return(lineString);
        }