static void Main(string[] args) { try { // See also example-GeoCoords.cpp { // Sample forward calculation double lat = 33.3, lon = 44.4; // Baghdad int zone; bool northp; double x, y; UTMUPS.Forward(lat, lon, out zone, out northp, out x, out y, -1, true); string zonestr = UTMUPS.EncodeZone(zone, northp, true); Console.WriteLine(String.Format("{0} {1} {2}", zonestr, x, y)); } { // Sample reverse calculation string zonestr = "38N"; int zone; bool northp; UTMUPS.DecodeZone(zonestr, out zone, out northp); double x = 444e3, y = 3688e3; double lat, lon; UTMUPS.Reverse(zone, northp, x, y, out lat, out lon, true); Console.WriteLine(String.Format("{0} {1}", 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); } }