예제 #1
0
        private void OnLineDigitized(double x1, double y1, double x2, double y2)
        {
            MgMapBase map = mgMapViewer1.GetMap();
            //Create a coordiante system from the map's SRS
            MgCoordinateSystemFactory csFactory = new MgCoordinateSystemFactory();
            MgCoordinateSystem        mapCs     = csFactory.Create(map.GetMapSRS());

            //Invoke the appropriate measure method depending on the type
            //of coordinate system
            double dist = 0.0;

            if (mapCs.GetType() == MgCoordinateSystemType.Geographic)
            {
                dist = mapCs.MeasureGreatCircleDistance(x1, y1, x2, y2);
            }
            else
            {
                dist = mapCs.MeasureEuclideanDistance(x1, y1, x2, y2);
            }

            //Convert this distance to meters
            dist = mapCs.ConvertCoordinateSystemUnitsToMeters(dist);

            MessageBox.Show("Distance is: " + dist + " meters");
        }
예제 #2
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            btnStart.Enabled = false;
            _segments.Clear();
            _viewer.DigitizeLineString((coordinates) => //Completed
            {
                btnStart.Enabled = true;
            }, (x1, y1, x2, y2) => //Segment completed
            {
                double dist = 0.0;
                if (_mapCs.GetType() == MgCoordinateSystemType.Geographic)
                {
                    dist = _mapCs.MeasureGreatCircleDistance(x1, y1, x2, y2);
                }
                else
                {
                    dist = _mapCs.MeasureEuclideanDistance(x1, y1, x2, y2);
                }

                //Convert this distance to meters
                dist = _mapCs.ConvertCoordinateSystemUnitsToMeters(dist);
                //Add to list of line segments
                _segments.Add(new MeasuredLineSegment()
                {
                    MapDistanceMeters = dist, Units = (MeasurementUnit)cmbUnits.SelectedItem
                });

                lblUnits.Text = TotalUnits(_segments).ToString();
            });
        }
예제 #3
0
        private static void Main(string[] args)
        {
            if (args.Length == 1)
            {
                if (string.IsNullOrEmpty(Environment.GetEnvironmentVariable("MENTOR_DICTIONARY_PATH")))
                {
                    var currentDir    = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
                    var dictionaryDir = Path.Combine(currentDir, "Dictionaries");
                    if (Directory.Exists(dictionaryDir))
                    {
                        Environment.SetEnvironmentVariable("MENTOR_DICTIONARY_PATH", dictionaryDir, EnvironmentVariableTarget.Process);
                    }
                    else
                    {
                        Console.WriteLine("Error: Could not find CS-Map dictionary path");
                    }
                }

                MgCoordinateSystemFactory csFact = null;
                MgCoordinateSystem        cs     = null;
                try
                {
                    csFact = new MgCoordinateSystemFactory();
                    cs     = csFact.Create(args[0]);
                    double mpu = cs.ConvertCoordinateSystemUnitsToMeters(1.0);
                    Console.WriteLine(mpu);
                    cs.Dispose();
                    csFact.Dispose();
                }
                catch (MgException ex)
                {
                    Console.WriteLine(ex.Message);
                    ex.Dispose();
                }
                finally
                {
                    if (cs != null)
                    {
                        cs.Dispose();
                    }
                    if (csFact != null)
                    {
                        csFact.Dispose();
                    }
                }
            }
            else
            {
                Console.WriteLine("Error: Insufficient arguments. Usage: MpuCalc.exe [Coord sys WKT]");
            }
        }
        public double Calculate(string csWkt, double units)
        {
            MgCoordinateSystem cs = _csFact.Create(csWkt);

            return(cs.ConvertCoordinateSystemUnitsToMeters(units));
        }