/// <summary> /// Command method to paste points from clipboard. /// </summary> /// <param name="obj"></param> internal virtual void OnPasteCommand(object obj) { var mode = obj.ToString(); if (string.IsNullOrWhiteSpace(mode)) { return; } var input = Clipboard.GetText().Trim(); string[] lines = input.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); var coordinates = new List <string>(); foreach (var item in lines) { string outFormattedString = string.Empty; string coordinate = item.Trim().ToString(); CoordinateConversionLibrary.Models.CoordinateType ccType = CoordinateConversionLibrary.Helpers.ConversionUtils.GetCoordinateString(coordinate, out outFormattedString); if (ccType == CoordinateConversionLibrary.Models.CoordinateType.Unknown) { Regex regexMercator = new Regex(@"^(?<latitude>\-?\d+\.?\d*)[+,;:\s]*(?<longitude>\-?\d+\.?\d*)"); var matchMercator = regexMercator.Match(coordinate); if (matchMercator.Success && matchMercator.Length == coordinate.Length) { ccType = CoordinateType.DD; } } IPoint point = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetPointFromString(outFormattedString) : null; if (point != null) { if (mode == VisibilityLibrary.Properties.Resources.ToolModeObserver) { ToolMode = MapPointToolMode.Observer; Point1 = point; if ((ArcMap.Document != null) && (ArcMap.Document.FocusMap != null)) { point.Project(ArcMap.Document.FocusMap.SpatialReference); } OnNewMapPointEvent(Point1); } else if (mode == VisibilityLibrary.Properties.Resources.ToolModeTarget) { ToolMode = MapPointToolMode.Target; Point2 = point; if ((ArcMap.Document != null) && (ArcMap.Document.FocusMap != null)) { point.Project(ArcMap.Document.FocusMap.SpatialReference); } OnNewMapPointEvent(Point2); } } } }
/// <summary> /// Command method to import points from csv file. /// </summary> /// <param name="obj"></param> public virtual void OnImportCSVFileCommand(object obj) { var mode = obj.ToString(); CoordinateConversionLibraryConfig.AddInConfig.DisplayAmbiguousCoordsDlg = false; var fileDialog = new Microsoft.Win32.OpenFileDialog(); fileDialog.CheckFileExists = true; fileDialog.CheckPathExists = true; fileDialog.Filter = "csv files|*.csv"; // attemp to import var fieldVM = new CoordinateConversionLibrary.ViewModels.SelectCoordinateFieldsViewModel(); var result = fileDialog.ShowDialog(); if (result.HasValue && result.Value == true) { var dlg = new CoordinateConversionLibrary.Views.SelectCoordinateFieldsView(); using (Stream s = new FileStream(fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var headers = CoordinateConversionLibrary.Helpers.ImportCSV.GetHeaders(s); if (headers != null) { foreach (var header in headers) { fieldVM.AvailableFields.Add(header); System.Diagnostics.Debug.WriteLine("header : {0}", header); } dlg.DataContext = fieldVM; } else { System.Windows.Forms.MessageBox.Show(VisibilityLibrary.Properties.Resources.MsgNoDataFound); return; } } if (dlg.ShowDialog() == true) { using (Stream s = new FileStream(fileDialog.FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { var lists = CoordinateConversionLibrary.Helpers.ImportCSV.Import <CoordinateConversionLibrary.ViewModels.ImportCoordinatesList>(s, fieldVM.SelectedFields.ToArray()); foreach (var item in lists) { string outFormattedString = string.Empty; var sb = new StringBuilder(); sb.Append(item.lat.Trim()); if (fieldVM.UseTwoFields) { sb.Append(string.Format(" {0}", item.lon.Trim())); } string coordinate = sb.ToString(); CoordinateConversionLibrary.Models.CoordinateType ccType = CoordinateConversionLibrary.Helpers.ConversionUtils.GetCoordinateString(coordinate, out outFormattedString); if (ccType == CoordinateConversionLibrary.Models.CoordinateType.Unknown) { Regex regexMercator = new Regex(@"^(?<latitude>\-?\d+\.?\d*)[+,;:\s]*(?<longitude>\-?\d+\.?\d*)"); var matchMercator = regexMercator.Match(coordinate); if (matchMercator.Success && matchMercator.Length == coordinate.Length) { ccType = CoordinateType.DD; } } IPoint point = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetPointFromString(outFormattedString) : null; if (point != null) { if (mode == VisibilityLibrary.Properties.Resources.ToolModeObserver) { ToolMode = MapPointToolMode.Observer; Point1 = point; if ((ArcMap.Document != null) && (ArcMap.Document.FocusMap != null)) { point.Project(ArcMap.Document.FocusMap.SpatialReference); } OnNewMapPointEvent(Point1); } else if (mode == VisibilityLibrary.Properties.Resources.ToolModeTarget) { ToolMode = MapPointToolMode.Target; Point2 = point; if ((ArcMap.Document != null) && (ArcMap.Document.FocusMap != null)) { point.Project(ArcMap.Document.FocusMap.SpatialReference); } OnNewMapPointEvent(Point2); } } } } } } }