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"); }
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(); }); }
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)); }