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();
}