Exemplo n.º 1
0
        private VegSampleDTO GetSample(VegDataDTO item, EntityBundle sites, Dictionary <Tuple <CompoundIdentity, Point2 <double> >, Dictionary <DateTime, VegSampleDTO> > elements)
        {
            Dictionary <DateTime, VegSampleDTO>        element = null;
            Tuple <CompoundIdentity, Point2 <double> > loc     = GetLocation(item, sites);

            if (!elements.ContainsKey(loc))
            {
                element       = new Dictionary <DateTime, VegSampleDTO>();
                elements[loc] = element;
            }
            else
            {
                element = elements[loc];
            }
            if (element.ContainsKey(item.MeasureDateTime.Value))
            {
                return(element[item.MeasureDateTime.Value]);
            }

            VegSampleDTO res = new VegSampleDTO(loc.Item1, item.MeasureDateTime.Value, loc.Item2, float.NaN, float.NaN);

            element[item.MeasureDateTime.Value] = res;
            return(res);
        }
Exemplo n.º 2
0
        private IEnumerable <VegSamplesDTO> ToSamples(VegDET det, Dictionary <string, CompoundIdentity> deployIds, EntityBundle sites, EntityBundle plotTypes, EntityBundle shrubSpecies, EntityBundle treeSpecies, EntityBundle herbSpecies, EntityBundle nonLiving)
        {
            Dictionary <string, VegSamplesDTO> samples = new Dictionary <string, VegSamplesDTO>();

            foreach (KeyValuePair <string, CompoundIdentity> cur in deployIds)
            {
                samples.Add(cur.Key, VegSamplesDTO.Create(cur.Value));
            }

            Dictionary <Tuple <CompoundIdentity, Point2 <double> >, Dictionary <DateTime, VegSampleDTO> > elements = new Dictionary <Tuple <CompoundIdentity, Point2 <double> >, Dictionary <DateTime, VegSampleDTO> >();

            foreach (VegElevationDTO cur in det.Elevations.Values)
            {
                if (cur.MeasureDateTime.HasValue)
                {
                    Dictionary <DateTime, VegSampleDTO>        element = null;
                    Tuple <CompoundIdentity, Point2 <double> > loc     = GetLocation(cur, sites);
                    if (!elements.ContainsKey(loc))
                    {
                        element       = new Dictionary <DateTime, VegSampleDTO>();
                        elements[loc] = element;
                    }
                    else
                    {
                        element = elements[loc];
                    }

                    float min = cur.MinElevation.HasValue ? (float)cur.MinElevation.Value : float.NaN;
                    float max = cur.MaxElevation.HasValue ? (float)cur.MaxElevation.Value : float.NaN;

                    element[cur.MeasureDateTime.Value] = new VegSampleDTO(loc.Item1, cur.MeasureDateTime.Value, loc.Item2, min, max);
                }
            }

            foreach (VegHerbDTO cur in det.Herbs.Values)
            {
                if (cur.MeasureDateTime.HasValue)
                {
                    VegSampleDTO it = GetSample(cur, sites, elements);
                    if (it != null)
                    {
                        float pct = cur.PctCover.HasValue ? (float)cur.PctCover.Value : float.NaN;
                        it.Add(new VegHerbSampleDTO(GetTaxa(cur.HerbSpeciesId, herbSpecies, nonLiving), pct, cur.Comments));
                        if (!samples[cur.SurveyId].ContainsKey(it.When))
                        {
                            samples[cur.SurveyId].Add(it);
                        }
                    }
                }
            }

            foreach (VegShrubDTO cur in det.Shrubs.Values)
            {
                if (cur.MeasureDateTime.HasValue)
                {
                    VegSampleDTO it = GetSample(cur, sites, elements);
                    if (it != null)
                    {
                        uint pct = cur.Count.HasValue ? cur.Count.Value : 0;
                        it.Add(new VegShrubSampleDTO(GetTaxa(cur.ShrubSpeciesId, shrubSpecies, nonLiving), cur.SizeClass, pct, cur.Comments));
                        if (!samples[cur.SurveyId].ContainsKey(it.When))
                        {
                            samples[cur.SurveyId].Add(it);
                        }
                    }
                }
            }

            foreach (VegTreeDTO cur in det.Trees.Values)
            {
                if (cur.MeasureDateTime.HasValue)
                {
                    VegSampleDTO it = GetSample(cur, sites, elements);
                    if (it != null)
                    {
                        float pct = cur.DBH.HasValue ? (float)cur.DBH.Value : float.NaN;
                        it.Add(new VegTreeSampleDTO(GetTaxa(cur.TreeSpeciesId, treeSpecies, nonLiving), pct, cur.Comments));
                        if (!samples[cur.SurveyId].ContainsKey(it.When))
                        {
                            samples[cur.SurveyId].Add(it);
                        }
                    }
                }
            }

            return(samples.Values);
        }