private static GpsPoint FromFeature(Feature feature)
 {
     if (feature == null)
         return null;
     if (!feature.IsEditing)
         feature.StartEditing();
     var gpsPoint = new GpsPoint { Feature = feature };
     gpsPoint.LoadAttributes();
     GpsPoints[gpsPoint.Guid] = gpsPoint;
     return gpsPoint;
 }
        private static Observation FromFeature(Feature feature)
        {
            if (feature == null)
                return null;
            if (!feature.IsEditing)
                feature.StartEditing();
            var observation = new Observation { Feature = feature };
            bool existing = observation.LoadAttributes();
            Observations[observation.Guid] = observation;
            //load birdgroups.  must becalled after updating Observations[], to avoid an infinite loop: obs->bird->obs->bird->...
            if (existing)
                observation.LoadBirdGroups();

            return observation;
        }
 private static BirdGroupFeature FromFeature(Feature feature)
 {
     if (feature == null)
         return null;
     if (!feature.IsEditing)
         feature.StartEditing();
     var birdGroup = new BirdGroupFeature { Feature = feature };
     birdGroup.LoadAttributes();
     BirdGroups[birdGroup.Guid] = birdGroup;
     return birdGroup;
 }
 private static TrackLog FromFeature(Feature feature)
 {
     if (feature == null)
         return null;
     if (!feature.IsEditing)
         feature.StartEditing();
     feature.Geometry = new Polyline();
     var trackLog = new TrackLog { Feature = feature };
     trackLog.LoadAttributes();
     TrackLogs[trackLog.Guid] = trackLog;
     return trackLog;
 }