private void OnConvertLatLon(object sender, EventArgs e) { try { int zone; bool northp; double x, y; string str; double lat = Double.Parse(m_latitudeTextBox.Text); double lon = Double.Parse(m_longitudeTextBox.Text); UTMUPS.Forward(lat, lon, out zone, out northp, out x, out y, (int)UTMUPS.ZoneSpec.STANDARD, true); m_utmPoleCheckBox.Checked = northp; m_utmXTextBox.Text = x.ToString(); m_utmYTextBox.Text = y.ToString(); m_utmZoneTextBox.Text = zone.ToString(); MGRS.Forward(zone, northp, x, y, 8, out str); m_mgrsTextBox.Text = str; OSGB.Forward(lat, lon, out x, out y); m_osgbXTextBox.Text = x.ToString(); m_osgbYTextBox.Text = y.ToString(); OSGB.GridReference(x, y, 8, out str); m_osgbTextBox.Text = str; } catch (Exception xcpt) { MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
static void Main(string[] args) { try { { // Sample forward calculation from // A guide to coordinate systems in Great Britain double lat = DMS.Decode(52, 39, 27.2531), lon = DMS.Decode(1, 43, 4.5177); double x, y; OSGB.Forward(lat, lon, out x, out y); string gridref; OSGB.GridReference(x, y, 2, out gridref); Console.WriteLine(String.Format("{0} {1} {2}", x, y, gridref)); } { // Sample reverse calculation string gridref = "TG5113"; double x, y; int prec; OSGB.GridReference(gridref, out x, out y, out prec, true); double lat, lon; OSGB.Reverse(x, y, out lat, out lon); Console.WriteLine(String.Format("{0} {1} {2}", prec, lat, lon)); } } catch (GeographicErr e) { Console.WriteLine(String.Format("Caught exception: {0}", e.Message)); } }
private void OnValidate(object sender, EventArgs e) { try { string str; int prec, zone, zout; bool northp; double x, y, x1, y1, gamma, k, lat, lon; OSGB.Forward(52.0, -2.0, out x, out y, out gamma, out k); OSGB.Forward(52.0, -2.0, out x1, out y1); if (x != x1 || y != y1) { throw new Exception("Error in OSGB.Forward"); } OSGB.Reverse(x, y, out lat, out lon, out gamma, out k); OSGB.Reverse(x, y, out x1, out y1); if (lat != x1 || lon != y1) { throw new Exception("Error in OSGB.Reverse"); } OSGB.GridReference(x, y, 8, out str); OSGB.GridReference(str, out x1, out y1, out prec, true); UTMUPS.StandardZone(32.0, -80.0, (int)UTMUPS.ZoneSpec.STANDARD); UTMUPS.UTMShift(); UTMUPS.StandardZone(32.0, -86.0, (int)UTMUPS.ZoneSpec.STANDARD); UTMUPS.Forward(32.0, -86.0, out zone, out northp, out x, out y, out gamma, out k, (int)UTMUPS.ZoneSpec.STANDARD, true); UTMUPS.Forward(32.0, -86.0, out zone, out northp, out x1, out y1, (int)UTMUPS.ZoneSpec.STANDARD, true); if (x != x1 || y != y1) { throw new Exception("Error in UTMUPS.Forward"); } UTMUPS.Reverse(zone, northp, x, y, out lat, out lon, out gamma, out k, true); UTMUPS.Reverse(zone, northp, x, y, out x1, out y1, true); if (lat != x1 || lon != y1) { throw new Exception("Error in UTMUPS.Reverse"); } UTMUPS.Transfer(zone, northp, x, y, zone + 1, true, out x1, out y1, out zout); str = UTMUPS.EncodeZone(zone, northp, true); prec = UTMUPS.EncodeEPSG(zone, northp); UTMUPS.DecodeZone(str, out zone, out northp); UTMUPS.DecodeEPSG(prec, out zone, out northp); MGRS.Forward(zone, northp, x, y, 8, out str); MGRS.Forward(zone, northp, x, y, 32.0, 8, out str); MGRS.Reverse(str, out zone, out northp, out x, out y, out prec, true); MessageBox.Show("No errors detected", "OK", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception xcpt) { MessageBox.Show(xcpt.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }