Example #1
0
        public void ValidateAllGridsCorners()
        {
            double maxHeight = double.MinValue;
            double maxWidth  = double.MinValue;
            double minWidth  = double.MaxValue;
            double minHeight = double.MaxValue;

            UtmGrid G = new UtmGrid(utm, 1, 'C');

            for (int zone = 1; zone <= UtmGrid.NumberOfZones; zone++)
            {
                for (int band = 0; band < UtmGrid.NumberOfBands; band++)
                {
                    bool valid = true;
                    try
                    {
                        G = new UtmGrid(utm, zone, band);
                    }
                    catch (Exception)
                    { valid = false; }
                    if (valid)
                    {
                        validateCorners(G);
                        minWidth  = Math.Min(minWidth, G.MapWidth);
                        maxWidth  = Math.Max(maxWidth, G.MapWidth);
                        minHeight = Math.Min(minHeight, G.MapHeight);
                        maxHeight = Math.Max(maxHeight, G.MapHeight);
                    }
                }
            }
            Assert.IsTrue(maxHeight >= minHeight && minHeight > 0.0);
            Assert.IsTrue(maxWidth >= minWidth && minWidth > 0.0);
        }
Example #2
0
        /// <summary>
        /// Instantiate the Mesh with the given nuber of meters as the size
        /// of the mesh squares. We do not support squares less than 1m.
        /// Please note that the actual mesh size used is a derived value
        /// that approximates the requested mesh size in order to provide
        /// better computational efficiency.
        /// </summary>
        /// <param name="meshSizeinMeters">The size of the squares in meter. The defauklt value is 1000m.</param>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        /// <exception cref="ArgumentOutOfRangeException"></exception>
        public GlobalMesh(int meshSizeinMeters = 1000)
        {
            if (meshSizeinMeters < MinimumMeshSize)
            {
                throw new ArgumentOutOfRangeException(Properties.Resources.MESHSIZE_MIN_VIOLATION);
            }

            MeshSize = meshSizeinMeters;
            var dblSquareSize = (double)meshSizeinMeters;
            var maxWidth      = double.MinValue;
            var maxHeight     = double.MinValue;

            for (var ord = 0; ord < UtmGrid.NumberOfGrids; ord++)
            {
                if (UtmGrid.IsValidOrdinal(ord))
                {
                    var theGrid = new UtmGrid(Projection, ord);
                    maxWidth  = Math.Max(maxWidth, theGrid.MapWidth);
                    maxHeight = Math.Max(maxHeight, theGrid.MapHeight);
                }
            }

            var maxHorizontalMeshes =
                (long)Math.Round((maxWidth + dblSquareSize - 1.0) / dblSquareSize, MidpointRounding.AwayFromZero);

            _maxVerticalMeshes =
                (long)Math.Round((maxHeight + dblSquareSize - 1.0) / dblSquareSize, MidpointRounding.AwayFromZero);

            if (maxHorizontalMeshes < 2 || _maxVerticalMeshes < 2)
            {
                throw new ArgumentOutOfRangeException(Properties.Resources.MESHSIZE_TOO_BIG);
            }

            Count = maxHorizontalMeshes * _maxVerticalMeshes;
        }
Example #3
0
        private void ApplySettingsButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            Grid grid;

            // First, update the grid based on the type selected.
            switch (gridTypeCombo.SelectedValue.ToString())
            {
            case "LatLong":
                grid = new LatitudeLongitudeGrid();
                // Apply the label format setting.
                string selectedFormatString = labelFormatCombo.SelectedValue.ToString();
                ((LatitudeLongitudeGrid)grid).LabelFormat =
                    (LatitudeLongitudeGridLabelFormat)Enum.Parse(typeof(LatitudeLongitudeGridLabelFormat), selectedFormatString);
                break;

            case "MGRS":
                grid = new MgrsGrid();
                break;

            case "UTM":
                grid = new UtmGrid();
                break;

            case "USNG":
            default:
                grid = new UsngGrid();
                break;
            }

            // Next, apply the label visibility setting.
            grid.IsLabelVisible = labelVisibilityCheckbox.IsChecked.Value;

            // Next, apply the grid visibility setting.
            grid.IsVisible = gridVisibilityCheckbox.IsChecked.Value;

            // Next, apply the grid color and label color settings for each zoom level.
            for (long level = 0; level < grid.LevelCount; level++)
            {
                // Set the line symbol.
                Symbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Colors.FromName(gridColorCombo.SelectedItem.ToString()), 2);
                grid.SetLineSymbol(level, lineSymbol);

                // Set the text symbol.
                Symbol textSymbol = new TextSymbol
                {
                    Color        = Colors.FromName(labelColorCombo.SelectedItem.ToString()),
                    OutlineColor = Colors.FromName(haloColorCombo.SelectedItem.ToString()),
                    Size         = 16,
                    HaloColor    = Colors.FromName(haloColorCombo.SelectedItem.ToString()),
                    HaloWidth    = 3
                };
                grid.SetTextSymbol(level, textSymbol);
            }

            // Next, apply the label position setting.
            grid.LabelPosition = (GridLabelPosition)Enum.Parse(typeof(GridLabelPosition), labelPositionCombo.SelectedValue.ToString());

            // Apply the updated grid.
            MyMapView.Grid = grid;
        }
Example #4
0
        public void TestConstructor_37X()
        {
            var g = new UtmGrid(utm, 37, 'X');

            Assert.AreEqual(g.Width, 9.0);
            validateCorners(g);
        }
        private void _applySettingsButton_Click(object sender, EventArgs e)
        {
            Grid grid;

            // First, update the grid based on the type selected.
            switch (_gridTypeSpinner.SelectedItem.ToString())
            {
            case "LatLong":
                grid = new LatitudeLongitudeGrid();
                // Apply the label format setting.
                string selectedFormatString = _labelFormatSpinner.SelectedItem.ToString();
                ((LatitudeLongitudeGrid)grid).LabelFormat =
                    (LatitudeLongitudeGridLabelFormat)Enum.Parse(typeof(LatitudeLongitudeGridLabelFormat), selectedFormatString);
                break;

            case "MGRS":
                grid = new MgrsGrid();
                break;

            case "UTM":
                grid = new UtmGrid();
                break;

            case "USNG":
            default:
                grid = new UsngGrid();
                break;
            }

            // Next, apply the label visibility setting.
            grid.IsLabelVisible = _labelVisibilitySwitch.Checked;

            // Next, apply the grid visibility setting.
            grid.IsVisible = _gridVisibilitySwitch.Checked;

            // Next, apply the grid color and label color settings for each zoom level.
            for (long level = 0; level < grid.LevelCount; level++)
            {
                // Set the line symbol.
                string lineColor  = ((ArrayAdapter <string>)_gridColorSpinner.Adapter).GetItem(_gridColorSpinner.SelectedItemPosition);
                Symbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Colors.FromName(lineColor), 2);
                grid.SetLineSymbol(level, lineSymbol);

                // Set the text symbol.
                string labelColor = ((ArrayAdapter <String>)_labelColorSpinner.Adapter).GetItem(_labelColorSpinner.SelectedItemPosition);
                Symbol textSymbol = new TextSymbol
                {
                    Color      = Colors.FromName(labelColor),
                    Size       = 16,
                    FontWeight = FontWeight.Bold
                };
                grid.SetTextSymbol(level, textSymbol);
            }

            // Next, apply the label position setting.
            grid.LabelPosition = (GridLabelPosition)Enum.Parse(typeof(GridLabelPosition), _labelPositionSpinner.SelectedItem.ToString());

            // Apply the updated grid.
            _myMapView.Grid = grid;
        }
Example #6
0
        public void TestInEquality()
        {
            var g1 = new UtmGrid(utm, 1, 'C');
            var g2 = new UtmGrid(utm, 1, 'D');

            Assert.IsTrue(g1 != g2);
        }
Example #7
0
        public void TestEquals1()
        {
            string s = "123";
            var    g = new UtmGrid(utm, 1, 'C');

            Assert.IsFalse(g.Equals(s));
        }
        public void TestConstructor_32V()
        {
            var g = new UtmGrid(utm, 32, 'V');

            Assert.AreEqual(9.0, g.Width);
            ValidateCorners(g);
        }
Example #9
0
        public void TestEquality()
        {
            var g1 = new UtmGrid(utm, 1, 'C');
            var g2 = new UtmGrid(utm, 1, 'D');

            g2.Band = 'C';
            Assert.IsTrue(g1 == g2);
        }
Example #10
0
        public void TestEquals2()
        {
            var g1 = new UtmGrid(utm, 1, 'C');
            var g2 = new UtmGrid(utm, 1, 'D');

            g2.Band = 'C';
            Assert.IsTrue(g1.Equals(g2));
        }
Example #11
0
        public void TestConstructor4()
        {
            var loc = new GlobalCoordinates(utm.MaxLatitude, 0);
            var g   = new UtmGrid(utm, loc);

            Assert.IsTrue(true);
            validateCorners(g);
        }
Example #12
0
        public void TestConstructor1()
        {
            var g = new UtmGrid(utm, 1, 'C');

            Assert.AreEqual(g.LowerLeftCorner.Longitude, -180);
            Assert.AreEqual(g.LowerLeftCorner.Latitude, utm.MinLatitude);
            Assert.AreEqual(g.Width, 6.0);
            validateCorners(g);
        }
Example #13
0
        public void TestConstructor2()
        {
            var g = new UtmGrid(utm, 1, 'X');

            Assert.AreEqual(g.LowerLeftCorner.Longitude, -180);
            Assert.AreEqual(g.LowerLeftCorner.Latitude, utm.MaxLatitude - g.Height);
            Assert.AreEqual(g.Height, 12.0);
            Assert.AreEqual(g.Width, 6.0);
            validateCorners(g);
        }
Example #14
0
        public void TestOriginCompute()
        {
            var g = new UtmGrid(utm, 32, 'U');
            var o = g.Origin;

            Assert.AreEqual(o.Projection, utm);
            Assert.AreEqual(o.Grid.ToString(), "32U");
            Assert.IsTrue(Math.Abs(o.ScaleFactor - 1.0) < 0.001);
            validateCorners(g);
        }
Example #15
0
        public void TestZoneSetter()
        {
            var g0 = new UtmGrid(utm, 32, 'U');
            var g  = new UtmGrid(utm, 32, 'U');

            g.Zone = 33;
            Assert.AreEqual(g.ToString(), "33U");
            Assert.AreEqual(g.LowerLeftCorner.Longitude - g0.LowerLeftCorner.Longitude, g0.Width);
            validateCorners(g);
        }
Example #16
0
        public void TestBandSetter()
        {
            var g0 = new UtmGrid(utm, 32, 'U');
            var g  = new UtmGrid(utm, 32, 'U');

            g.Band = 'V';
            Assert.AreEqual(g.ToString(), "32V");
            Assert.AreEqual(g.LowerLeftCorner.Latitude - g0.LowerLeftCorner.Latitude, g0.Height);
            validateCorners(g);
        }
Example #17
0
        public void TestOrdinal()
        {
            var g   = new UtmGrid(utm, 32, 'U');
            int ord = g.Ordinal;
            var g2  = new UtmGrid(utm, ord);

            Assert.AreEqual(g, g2);
            validateCorners(g);
            validateCorners(g2);
        }
Example #18
0
 public void TestOrdinal2()
 {
     for (int ord = 0; ord < 1200; ord++)
     {
         if (UtmGrid.IsValidOrdinal(ord))
         {
             var g = new UtmGrid(utm, ord);
             Assert.AreEqual(g.Ordinal, ord);
         }
     }
 }
        public void TestOriginCompute()
        {
            var g = new UtmGrid(utm, 32, 'U');

            if (g.Origin is UtmCoordinate o)
            {
                Assert.AreEqual(o.Projection, utm);
                Assert.AreEqual("32U", o.Grid.ToString());
                Assert.IsTrue(Math.Abs(o.ScaleFactor - 1.0) < 0.001);
            }

            ValidateCorners(g);
        }
Example #20
0
        public void TestCorners()
        {
            var g    = new UtmGrid(utm, 32, 'U');
            var glrc = new UtmGrid(utm, g.LowerRightCorner);

            Assert.AreEqual(glrc.ToString(), "32U");
            var gulc = new UtmGrid(utm, g.UpperLeftCorner);

            Assert.AreEqual(gulc.ToString(), "32U");
            var gurc = new UtmGrid(utm, g.UpperRightCorner);

            Assert.AreEqual(gurc.ToString(), "32U");
            validateCorners(g);
        }
Example #21
0
        public void TestConstructor_35X()
        {
            var g = new UtmGrid(utm, 35, 'X');

            Assert.AreEqual(g.Width, 12.0);
            var l = g.LowerRightCorner;

            l.Longitude += 1.0;
            var g2 = new UtmGrid(utm, l);

            Assert.AreEqual(g2.ToString(), "37X");
            validateCorners(g);
            validateCorners(g2);
        }
        public void TestConstructor_33X()
        {
            var g = new UtmGrid(utm, 33, 'X');

            Assert.AreEqual(12.0, g.Width);
            var l = g.LowerRightCorner;

            l.Longitude += 1.0;
            var g2 = new UtmGrid(utm, l);

            Assert.AreEqual("35X", g2.ToString());
            ValidateCorners(g);
            ValidateCorners(g2);
        }
Example #23
0
        public void TestConstructor_31X()
        {
            var g = new UtmGrid(utm, 31, 'X');

            Assert.AreEqual(g.Width, 9.0);
            var l = g.LowerLeftCorner;

            // Going a little more than width should bring us
            // into the next zone 32, but not in this band
            l.Longitude += g.Width + 1.0;
            var g2 = new UtmGrid(utm, l);

            Assert.AreEqual(g2.ToString(), "33X");
            validateCorners(g);
            validateCorners(g2);
        }
Example #24
0
        public void TestConstructor_31V()
        {
            var g = new UtmGrid(utm, 31, 'V');

            Assert.AreEqual(g.Width, 3.0);
            var l = g.LowerLeftCorner;

            // 4 degrees east of lower left is normally in the same grid
            // but not so in 31V
            l.Longitude += 4.0;
            var g2 = new UtmGrid(utm, l);

            Assert.AreEqual(g2.ToString(), "32V");
            validateCorners(g);
            validateCorners(g2);
        }
Example #25
0
        public void TestNeighbors()
        {
            var g = new UtmGrid(utm, Constants.MyHome);

            Assert.IsTrue(g.Band == 'U' && g.Zone == 32);
            var n = g.North;

            Assert.IsTrue(n.Band == 'V' && n.Zone == 32);
            var s = g.South;

            Assert.IsTrue(s.Band == 'T' && s.Zone == 32);
            var w = g.West;

            Assert.IsTrue(w.Band == 'U' && w.Zone == 31);
            var e = g.East;

            Assert.IsTrue(e.Band == 'U' && e.Zone == 33);
        }
        private void ApplyCurrentSettings()
        {
            Grid grid;

            // First, update the grid based on the type selected.
            switch (_selectedGridType)
            {
            case "LatLong":
                grid = new LatitudeLongitudeGrid();
                break;

            case "MGRS":
                grid = new MgrsGrid();
                break;

            case "UTM":
                grid = new UtmGrid();
                break;

            case "USNG":
            default:
                grid = new UsngGrid();
                break;
            }

            // Next, apply the label position setting.
            grid.LabelPosition = _selectedLabelPosition;

            // Next, apply the grid color and label color settings for each zoom level.
            for (long level = 0; level < grid.LevelCount; level++)
            {
                // Set the grid color if the grid is selected for display.
                if (_selectedGridColor != null)
                {
                    // Set the line symbol.
                    Symbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, _selectedGridColor.Value, 2);
                    grid.SetLineSymbol(level, lineSymbol);
                }

                // Set the label color if labels are enabled for display.
                if (_selectedLabelColor != null)
                {
                    // Set the text symbol.
                    Symbol textSymbol = new TextSymbol
                    {
                        Color      = _selectedLabelColor.Value,
                        Size       = 16,
                        FontWeight = FontWeight.Bold
                    };
                    grid.SetTextSymbol(level, textSymbol);
                }
            }

            // Next, hide the grid if it has been hidden.
            if (_selectedGridColor == null)
            {
                grid.IsVisible = false;
            }

            // Next, hide the labels if they have been hidden.
            if (_selectedLabelColor == null)
            {
                grid.IsLabelVisible = false;
            }

            // Apply the updated grid.
            _myMapView.Grid = grid;
        }
Example #27
0
 public void TestConstructor_34X()
 {
     var g = new UtmGrid(utm, 34, 'X');
 }
Example #28
0
 public void TestConstructor8()
 {
     var g = new UtmGrid(utm, UtmGrid.NumberOfGrids + 1);
 }
Example #29
0
 public void TestConstructor7()
 {
     var g = new UtmGrid(null, 1, 'C');
 }
Example #30
0
 public void TestConstructor6()
 {
     var g = new UtmGrid(utm, 1, 'A');
 }