static void Main(string[] args) { try { Geodesic geod = new Geodesic(); // WGS84 const double lat0 = 48 + 50 / 60.0, lon0 = 2 + 20 / 60.0; // Paris AzimuthalEquidistant proj = new AzimuthalEquidistant(geod); { // Sample forward calculation double lat = 50.9, lon = 1.8; // Calais double x, y; proj.Forward(lat0, lon0, lat, lon, out x, out y); Console.WriteLine(String.Format("X: {0} Y: {1}", x, y)); } { // Sample reverse calculation double x = -38e3, y = 230e3; double lat, lon; proj.Reverse(lat0, lon0, x, y, out lat, out lon); Console.WriteLine(String.Format("Latitude: {0} Longitude: {1}", lat, lon)); } } catch (GeographicErr e) { Console.WriteLine(String.Format("Caught exception: {0}", e.Message)); } }
static void Main(string[] args) { try { Geodesic geod = new Geodesic(); // WGS84 const double lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; // Paris AzimuthalEquidistant proj = new AzimuthalEquidistant(geod); { // Sample forward calculation double lat = 50.9, lon = 1.8; // Calais double x, y; proj.Forward(lat0, lon0, lat, lon, out x, out y); Console.WriteLine( String.Format("X: {0} Y: {1}", x, y ) ); } { // Sample reverse calculation double x = -38e3, y = 230e3; double lat, lon; proj.Reverse(lat0, lon0, x, y, out lat, out lon); Console.WriteLine( String.Format("Latitude: {0} Longitude: {1}", lat, lon ) ); } } catch (GeographicErr e) { Console.WriteLine( String.Format( "Caught exception: {0}", e.Message ) ); } }
private void OnValidate(object sender, EventArgs e) { try { double lat = 0.0, lon = 0.0, x = 0.0, y = 0.0, x1 = 0.0, y1 = 0.0, azi = 0.0, rk = 0.0; AzimuthalEquidistant azimuthal = new AzimuthalEquidistant(m_geodesic); azimuthal = new AzimuthalEquidistant(); azimuthal.Forward(32.0, -86.0, 33.0, -87.0, out x, out y, out azi, out rk); azimuthal.Forward(32.0, -86.0, 33.0, -87.0, out x1, out y1); if (x != x1 || y != y1) { throw new Exception("Error in AzimuthalEquidistant.Forward"); } azimuthal.Reverse(32.0, -86.0, x, y, out lat, out lon, out azi, out rk); azimuthal.Reverse(32.0, -86.0, x, y, out x1, out y1); if (x1 != lat || y1 != lon) { throw new Exception("Error in AzimuthalEquidistant.Reverse"); } CassiniSoldner cassini = new CassiniSoldner(32.0, -86.0, m_geodesic); cassini = new CassiniSoldner(32.0, -86.0); cassini.Reset(31.0, -87.0); cassini.Forward(32.0, -86.0, out x, out y, out azi, out rk); cassini.Forward(32.0, -86.0, out x1, out y1); if (x != x1 || y != y1) { throw new Exception("Error in CassiniSoldner.Forward"); } cassini.Reverse(x, y, out lat, out lon, out azi, out rk); cassini.Reverse(x, y, out x1, out y1); if (x1 != lat || y1 != lon) { throw new Exception("Error in CassiniSoldner.Reverse"); } Gnomonic gnomonic = new Gnomonic(m_geodesic); gnomonic = new Gnomonic(); gnomonic.Forward(32.0, -86.0, 31.0, -87.0, out x, out y, out azi, out rk); gnomonic.Forward(32.0, -86.0, 31.0, -87.0, out x1, out y1); if (x != x1 || y != y1) { throw new Exception("Error in Gnomonic.Forward"); } gnomonic.Reverse(32.0, -86.0, x, y, out lat, out lon, out azi, out rk); gnomonic.Reverse(32.0, -86.0, x, y, out x1, out y1); if (x1 != lat || y1 != lon) { throw new Exception("Error in Gnomonic.Reverse"); } } catch (Exception xcpt) { MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } MessageBox.Show("No errors detected", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public void Should_ConvertXYToLatLon() { var proj = new AzimuthalEquidistant(90, 0); var length = xy.Length; for (int i = 0; i < length - 1; i += 2) { var x = xy[i]; var y = xy[i + 1]; var point = proj.ToSphere(x, y); var lat = latlon[i]; var lon = latlon[i + 1]; Assert.AreEqual(lat, point.X, TOLERANCE); Assert.AreEqual(lon, point.Y, TOLERANCE); } }
public void Should_ConvertLatLonToXY() { var proj = new AzimuthalEquidistant(90, 0); var length = latlon.Length; for (int i = 0; i < length - 1; i += 2) { var lat = latlon[i]; var lon = latlon[i + 1]; var point = proj.ToPlane(lat, lon); var x = xy[i]; var y = xy[i + 1]; Assert.AreEqual(x, point.X, TOLERANCE); Assert.AreEqual(y, point.Y, TOLERANCE); } }
private void OnProjectectionType(object sender, EventArgs e) { m_type = (ProjectionTypes)m_projectionComboBox.SelectedIndex; switch (m_type) { case ProjectionTypes.AzimuthalEquidistant: m_azimuthal = new AzimuthalEquidistant(m_geodesic); break; case ProjectionTypes.CassiniSoldner: double lat0 = Double.Parse(m_lat0TextBox.Text); double lon0 = Double.Parse(m_lon0TextBox.Text); m_cassini = new CassiniSoldner(lat0, lon0, m_geodesic); break; case ProjectionTypes.Gnomonic: m_gnomonic = new Gnomonic(m_geodesic); break; } }
private void OnValidate(object sender, EventArgs e) { try { double lat = 0.0, lon = 0.0, x = 0.0, y = 0.0, x1 = 0.0, y1 = 0.0, azi = 0.0, rk = 0.0; AzimuthalEquidistant azimuthal = new AzimuthalEquidistant(m_geodesic); azimuthal = new AzimuthalEquidistant(); azimuthal.Forward(32.0, -86.0, 33.0, -87.0, out x, out y, out azi, out rk); azimuthal.Forward(32.0, -86.0, 33.0, -87.0, out x1, out y1); if (x != x1 || y != y1) throw new Exception("Error in AzimuthalEquidistant.Forward"); azimuthal.Reverse(32.0, -86.0, x, y, out lat, out lon, out azi, out rk); azimuthal.Reverse(32.0, -86.0, x, y, out x1, out y1); if ( x1 != lat || y1 != lon ) throw new Exception("Error in AzimuthalEquidistant.Reverse"); CassiniSoldner cassini = new CassiniSoldner(32.0, -86.0, m_geodesic); cassini = new CassiniSoldner(32.0, -86.0); cassini.Reset(31.0, -87.0); cassini.Forward(32.0, -86.0, out x, out y, out azi, out rk); cassini.Forward(32.0, -86.0, out x1, out y1); if (x != x1 || y != y1) throw new Exception("Error in CassiniSoldner.Forward"); cassini.Reverse(x, y, out lat, out lon, out azi, out rk); cassini.Reverse(x, y, out x1, out y1); if (x1 != lat || y1 != lon) throw new Exception("Error in CassiniSoldner.Reverse"); Gnomonic gnomonic = new Gnomonic(m_geodesic); gnomonic = new Gnomonic(); gnomonic.Forward(32.0, -86.0, 31.0, -87.0, out x, out y, out azi, out rk); gnomonic.Forward(32.0, -86.0, 31.0, -87.0, out x1, out y1); if (x != x1 || y != y1) throw new Exception("Error in Gnomonic.Forward"); gnomonic.Reverse(32.0, -86.0, x, y, out lat, out lon, out azi, out rk); gnomonic.Reverse(32.0, -86.0, x, y, out x1, out y1); if (x1 != lat || y1 != lon) throw new Exception("Error in Gnomonic.Reverse"); } catch (Exception xcpt) { MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } MessageBox.Show("No errors detected", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information); }
private void OnProjectectionType(object sender, EventArgs e) { m_type = (ProjectionTypes)m_projectionComboBox.SelectedIndex; switch (m_type) { case ProjectionTypes.AzimuthalEquidistant: m_azimuthal = new AzimuthalEquidistant(m_geodesic); break; case ProjectionTypes.CassiniSoldner: double lat0 = Double.Parse( m_lat0TextBox.Text ); double lon0 = Double.Parse( m_lon0TextBox.Text ); m_cassini = new CassiniSoldner(lat0, lon0, m_geodesic); break; case ProjectionTypes.Gnomonic: m_gnomonic = new Gnomonic(m_geodesic); break; } }