public Feature MapAsSingleFeature(Prescription adaptPrescription)
        {
            Feature prescriptionFeature = null;

            // Prescription, types
            if (adaptPrescription is RasterGridPrescription)
            {
                Console.WriteLine($"Mapping RasterGridPrescription");
                prescriptionFeature = Map(adaptPrescription as RasterGridPrescription);
            }
            else if (adaptPrescription is VectorPrescription)
            {
                Console.WriteLine($"Mapping VectorPrescription");
                prescriptionFeature = Map(adaptPrescription as VectorPrescription);
            }
            else if (adaptPrescription is ManualPrescription)
            {
                // @ToDo or not to do? just log?
                Console.WriteLine($"Mapping ManualPrescription");
                prescriptionFeature = Map(adaptPrescription as ManualPrescription);
            }
            else
            {
                // @ToDo or not to do? just log?
                prescriptionFeature = Map(adaptPrescription);
            }

            if (prescriptionFeature != null)
            {
                prescriptionFeature.Properties.Add("Guid", UniqueIdMapper.GetUniqueGuid(adaptPrescription.Id));
                Field adaptField = _dataModel.Catalog.Fields.Where(f => f.Id.ReferenceId == adaptPrescription.FieldId).FirstOrDefault();
                if (adaptField != null)
                {
                    Guid fieldguid = UniqueIdMapper.GetUniqueGuid(adaptField.Id);
                    prescriptionFeature.Properties.Add("FieldId", fieldguid);
                }
                else
                {
                    prescriptionFeature.Properties.Add("FieldId", adaptPrescription.FieldId);
                }

                if (_properties.Anonymise)
                {
                    prescriptionFeature.Properties.Add("Description", "Prescription " + adaptPrescription.Id.ReferenceId);
                }
                else
                {
                    prescriptionFeature.Properties.Add("Description", adaptPrescription.Description);
                }

                if (adaptPrescription.CropZoneId != null)
                {
                    prescriptionFeature.Properties.Add("CropZoneId", adaptPrescription.CropZoneId);

                    //adaptPrescription.CropZoneId
                    //Prescription adaptPrescription = _dataModel.Catalog.Prescriptions.Where(f => f.Id.ReferenceId == workItemOperation.PrescriptionId).FirstOrDefault();
                }
            }
            return(prescriptionFeature);
        }
        private Feature Map(FieldBoundary fieldBoundary)
        {
            GeoJSON.Net.Geometry.MultiPolygon multiPolygon = MultiPolygonMapper.Map(fieldBoundary.SpatialData, _properties.AffineTransformation);
            if (multiPolygon == null)
            {
                return(null);
            }

            Dictionary <string, object> properties = new Dictionary <string, object>();

            properties.Add("Guid", UniqueIdMapper.GetUniqueGuid(fieldBoundary.Id, UniqueIdSourceCNH));

            if (_properties.Anonymise)
            {
                properties.Add("Description", "Field boundary " + fieldBoundary.Id.ReferenceId);
            }
            else
            {
                properties.Add("Description", fieldBoundary.Description);
            }

            // GpsSource
            var gpsSource = fieldBoundary.GpsSource;

            properties.Add("GpsSource", null);
            if (gpsSource != null)
            {
                properties["GpsSource"] = fieldBoundary.GpsSource.ToString();
            }

            // Created time
            var creationTime = fieldBoundary.TimeScopes.Where(ts => ts.DateContext == DateContextEnum.Creation).FirstOrDefault();

            properties.Add("CreationTime", null);
            if (creationTime != null)
            {
                if (creationTime.TimeStamp1 != null)
                {
                    properties["CreationTime"] = ((DateTime)creationTime.TimeStamp1).ToString("O", CultureInfo.InvariantCulture);
                }
            }

            // Modified time
            var modifiedTime = fieldBoundary.TimeScopes.Where(ts => ts.DateContext == DateContextEnum.Modification).FirstOrDefault();

            properties.Add("ModifiedTime", null);
            if (modifiedTime != null)
            {
                if (modifiedTime.TimeStamp1 != null)
                {
                    properties["ModifiedTime"] = ((DateTime)modifiedTime.TimeStamp1).ToString("O", CultureInfo.InvariantCulture);
                }
            }

            Feature fieldBoundaryDto = new Feature(multiPolygon, properties);

            return(fieldBoundaryDto);
        }