public override bool CanGetDMS(int srFactoryCode, out string coord) { coord = string.Empty; if (base.CanGetDMS(srFactoryCode, out coord)) { return true; } else { if (base.CanGetDD(srFactoryCode, out coord)) { // convert dd to ddm CoordinateDD dd; if (CoordinateDD.TryParse(coord, out dd)) { var dms = new CoordinateDMS(dd); coord = dms.ToString("", new CoordinateDMSFormatter()); return true; } } } return false; }
public void FormatterDMS() { var coord = new CoordinateDMS(40, 16, 22.9728, -78, 50, 50.7372); var temp = coord.ToString("", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "40°16'23.0\"N 78°50'50.7\"W"); temp = coord.ToString("A0°B0'C0.0##\"N X0°Y0'Z0.0##\"E", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "40°16'22.973\"N 78°50'50.737\"W"); temp = coord.ToString("NA0°B0'C0.0##\" EX0°Y0'Z0.0##\"", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "N40°16'22.973\" W78°50'50.737\""); temp = coord.ToString("A0° B0' C0.0##\" N X0° Y0' Z0.0##\" E", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "40° 16' 22.973\" N 78° 50' 50.737\" W"); temp = coord.ToString("A+-#°B0'C0.0##\" X+-#°Y0'Z0.0##\"", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "+40°16'22.973\" -78°50'50.737\""); temp = coord.ToString("A0 B0 C0.0## N X0 Y0 Z0.0## E", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "40 16 22.973 N 78 50 50.737 W"); temp = coord.ToString("A0°B0'C0.0##\"N, X0°Y0'Z0.0##\"E", new CoordinateDMSFormatter()); Assert.AreEqual(temp, "40°16'22.973\"N, 78°50'50.737\"W"); }
private void UpdateSample() { var type = GetCoordinateType(); switch(type) { case CoordinateType.DD: var dd = new CoordinateDD(); if (ctdict.ContainsKey(CoordinateType.DD)) { CoordinateDD.TryParse(ctdict[type], out dd); } Sample = dd.ToString(Format, new CoordinateDDFormatter()); break; case CoordinateType.DDM: var ddm = new CoordinateDDM(); if(ctdict.ContainsKey(type)) { CoordinateDDM.TryParse(ctdict[type], out ddm); } Sample = ddm.ToString(Format, new CoordinateDDMFormatter()); break; case CoordinateType.DMS: var dms = new CoordinateDMS(); if(ctdict.ContainsKey(type)) { CoordinateDMS.TryParse(ctdict[type], out dms); } Sample = dms.ToString(Format, new CoordinateDMSFormatter()); break; case CoordinateType.GARS: var gars = new CoordinateGARS(); if(ctdict.ContainsKey(type)) { CoordinateGARS.TryParse(ctdict[type], out gars); } Sample = gars.ToString(Format, new CoordinateGARSFormatter()); break; case CoordinateType.MGRS: var mgrs = new CoordinateMGRS(); if(ctdict.ContainsKey(type)) { CoordinateMGRS.TryParse(ctdict[type], out mgrs); } Sample = mgrs.ToString(Format, new CoordinateMGRSFormatter()); break; case CoordinateType.USNG: var usng = new CoordinateUSNG(); if(ctdict.ContainsKey(type)) { CoordinateUSNG.TryParse(ctdict[type], out usng); } Sample = usng.ToString(Format, new CoordinateMGRSFormatter()); break; case CoordinateType.UTM: var utm = new CoordinateUTM(); if(ctdict.ContainsKey(type)) { CoordinateUTM.TryParse(ctdict[type], out utm); } Sample = utm.ToString(Format, new CoordinateUTMFormatter()); break; default: break; } RaisePropertyChanged(() => Sample); }