Esempio n. 1
0
        /// <summary>
        /// Adds a HeatMap to the map.
        /// </summary>
        /// <param name="points">Points for the Heatmap.</param>
        private void AddHeatMap(List <HeatmapPoint> points)
        {
            var polygons = new List <ColorPolygon>();

            var max = points.Max(r => r.Mean);
            var min = points.Min(r => r.Mean);

            var difference = max - min;

            foreach (var item in points)
            {
                var singlepolygon = (ColorPolygon)MKPolygon.FromCoordinates(ConvertCoordinates(item.BoundingCoordinates));
                var red           = ((((item.Mean - min) / difference) * 245) + 10) / 255;
                var color         = Color.FromRgb(red, 0, 1 - red);
                singlepolygon.FillColor    = color.ToCGColor();
                singlepolygon.DrawOutlines = false;
                polygons.Add(singlepolygon);
            }

            var heatmap = new MultiPolygon(polygons);

            this.mapView.AddOverlay(heatmap);

            /* Showing a 'Real' heatmap using just points
             * current Version is using multiple polygons
             * TODO Readd LFHeatMap project first
             * Found at https://github.com/TreeWatch/LFHeatMaps
             * Code :
             * var positions = new List<Position>();
             * var weights = new List<Double>();
             *
             * foreach (var item in points)
             * {
             *
             *  foreach (var pos in item.BoundingCoordinates) {
             *      positions.Add(pos);
             *          weights.Add(item.Mean);
             *  }
             * }
             * var view = new UIHeatMapView(positions, weights, mapView);
             * mapView.AddSubview(view); */
        }
Esempio n. 2
0
        /// <summary>
        /// Adds the fields to the map.
        /// </summary>
        private void AddFields()
        {
            var connection = new TreeWatchDatabase();

            foreach (var field in this.myMap.Fields)
            {
                var query         = new DBQuery <Field>(connection);
                var blockPolygons = new List <ColorPolygon>();
                query.GetChildren(field);
                if (field.Blocks.Count != 0)
                {
                    foreach (var block in field.Blocks)
                    {
                        if (block.BoundingCoordinates.Count != 0 && block.BoundingCoordinates.Count >= 3)
                        {
                            var blockPoints  = ConvertCoordinates(block.BoundingCoordinates);
                            var blockPolygon = (ColorPolygon)MKPolygon.FromCoordinates(blockPoints);
                            blockPolygon.FillColor = block.TreeType.ColorProp.ToCGColor();
                            blockPolygons.Add(blockPolygon);
                        }
                    }

                    var blockMultiPolygon = new MultiPolygon(blockPolygons);

                    this.mapView.AddOverlay(blockMultiPolygon);
                }

                if (field.BoundingCoordinates.Count != 0 && field.BoundingCoordinates.Count >= 3)
                {
                    var points  = ConvertCoordinates(field.BoundingCoordinates);
                    var polygon = MKPolygon.FromCoordinates(points);
                    polygon.Title = "Field";
                    this.mapView.AddOverlay(polygon);
                }
            }

            var query2   = new DBQuery <HeatMap>(connection);
            var heatmaps = query2.GetAllWithChildren();
            var heatmap  = heatmaps[0];

            this.AddHeatMap(heatmap.Points);
        }
Esempio n. 3
0
        /// <summary>
        /// Adds a HeatMap to the map.
        /// </summary>
        /// <param name="points">Points for the Heatmap.</param>
        private void AddHeatMap(List<HeatmapPoint> points)
        {
            var polygons = new List<ColorPolygon>();

            var max = points.Max(r => r.Mean);
            var min = points.Min(r => r.Mean);

            var difference = max - min;

            foreach (var item in points)
            {
                var singlepolygon = (ColorPolygon)MKPolygon.FromCoordinates(ConvertCoordinates(item.BoundingCoordinates));
                var red = ((((item.Mean - min) / difference) * 245) + 10) / 255;
                var color = Color.FromRgb(red, 0, 1 - red);
                singlepolygon.FillColor = color.ToCGColor();
                singlepolygon.DrawOutlines = false;
                polygons.Add(singlepolygon);
            }

            var heatmap = new MultiPolygon(polygons);

            this.mapView.AddOverlay(heatmap);

            /* Showing a 'Real' heatmap using just points
             * current Version is using multiple polygons
             * TODO Readd LFHeatMap project first
             * Found at https://github.com/TreeWatch/LFHeatMaps
             * Code :
            var positions = new List<Position>();
            var weights = new List<Double>();

            foreach (var item in points)
            {

                foreach (var pos in item.BoundingCoordinates) {
                    positions.Add(pos);
                        weights.Add(item.Mean);
                }
            }
            var view = new UIHeatMapView(positions, weights, mapView);
            mapView.AddSubview(view); */
        }
Esempio n. 4
0
        /// <summary>
        /// Adds the fields to the map.
        /// </summary>
        private void AddFields()
        {
            var connection = new TreeWatchDatabase();
            foreach (var field in this.myMap.Fields)
            {
                var query = new DBQuery<Field>(connection);
                var blockPolygons = new List<ColorPolygon>();
                query.GetChildren(field);
                if (field.Blocks.Count != 0)
                {
                    foreach (var block in field.Blocks)
                    {
                        if (block.BoundingCoordinates.Count != 0 && block.BoundingCoordinates.Count >= 3)
                        {
                            var blockPoints = ConvertCoordinates(block.BoundingCoordinates);
                            var blockPolygon = (ColorPolygon)MKPolygon.FromCoordinates(blockPoints);
                            blockPolygon.FillColor = block.TreeType.ColorProp.ToCGColor();
                            blockPolygons.Add(blockPolygon);
                        }
                    }

                    var blockMultiPolygon = new MultiPolygon(blockPolygons);

                    this.mapView.AddOverlay(blockMultiPolygon);
                }

                if (field.BoundingCoordinates.Count != 0 && field.BoundingCoordinates.Count >= 3)
                {
                    var points = ConvertCoordinates(field.BoundingCoordinates);
                    var polygon = MKPolygon.FromCoordinates(points);
                    polygon.Title = "Field";
                    this.mapView.AddOverlay(polygon);
                }
            }

            var query2 = new DBQuery<HeatMap>(connection);
            var heatmaps = query2.GetAllWithChildren();
            var heatmap = heatmaps[0];

            this.AddHeatMap(heatmap.Points);
        }