public static bool Validate(CoordinateUTM utm) { if (utm.Zone < 1 || utm.Zone > 60) { return(false); } return(true); }
public static bool TryParse(string input, out CoordinateUTM utm) { utm = new CoordinateUTM(); if (string.IsNullOrWhiteSpace(input)) { return(false); } input = input.Trim(); Regex regexUTM = new Regex(@"^\s*(?<zone>\d{1,2})(?<hemi>[NS]?)[-,;:\sm]*(?<easting>\d{1,9})[-,;:\sm]*(?<northing>\d{1,9})[-,;:\sm]*"); var matchUTM = regexUTM.Match(input); if (matchUTM.Success && matchUTM.Length == input.Length) { if (ValidateNumericCoordinateMatch(matchUTM, new string[] { "zone", "easting", "northing" })) { // need to validate the gzd and gs try { utm.Zone = Int32.Parse(matchUTM.Groups["zone"].Value); utm.Easting = Int32.Parse(matchUTM.Groups["easting"].Value); utm.Northing = Int32.Parse(matchUTM.Groups["northing"].Value); utm.Hemi = matchUTM.Groups["hemi"].Value; } catch { return(false); } return(Validate(utm)); } } return(false); }
public static bool TryParse(string input, out CoordinateUTM utm) { utm = new CoordinateUTM(); if (string.IsNullOrWhiteSpace(input)) return false; input = input.Trim(); Regex regexUTM = new Regex(@"^\s*(?<zone>\d{1,2})(?<hemi>[NS]?)[-,;:\sm]*(?<easting>\d{1,9})[-,;:\sm]*(?<northing>\d{1,9})[-,;:\sm]*"); var matchUTM = regexUTM.Match(input); if (matchUTM.Success && matchUTM.Length == input.Length) { if (ValidateNumericCoordinateMatch(matchUTM, new string[] { "zone","easting","northing" })) { // need to validate the gzd and gs try { utm.Zone = Int32.Parse(matchUTM.Groups["zone"].Value); utm.Easting = Int32.Parse(matchUTM.Groups["easting"].Value); utm.Northing = Int32.Parse(matchUTM.Groups["northing"].Value); utm.Hemi = matchUTM.Groups["hemi"].Value; } catch { return false; } return Validate(utm); } } return false; }
public static bool Validate(CoordinateUTM utm) { if (utm.Zone < 1 || utm.Zone > 60) return false; return true; }
public void FormatterUTM() { var coord = new CoordinateUTM(17, "N", 683016, 4460286); var temp = coord.ToString("", new CoordinateUTMFormatter()); Assert.AreEqual(temp, "17N 683016 4460286"); temp = coord.ToString("Z+-# X0m Y0m", new CoordinateUTMFormatter()); Assert.AreEqual(temp, "+17 683016m 4460286m"); temp = coord.ToString("Z#H X0m E Y0m N", new CoordinateUTMFormatter()); Assert.AreEqual(temp, "17N 683016m E 4460286m N"); temp = coord.ToString("Z#H X0 E Y0 N", new CoordinateUTMFormatter()); Assert.AreEqual(temp, "17N 683016 E 4460286 N"); }
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); }