// when someone hits the enter key, create geodetic graphic internal override void OnEnterKeyCommand(object obj) { if (ArcMap.Document.FocusMap.SpatialReference == null) { MessageBox.Show( DistanceAndDirectionLibrary.Properties.Resources.InvalidSpatialReferenceError, DistanceAndDirectionLibrary.Properties.Resources.DistanceDirectionLabel, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } string outFormattedString = string.Empty; CoordinateConversionLibrary.Models.CoordinateType ccType = CoordinateConversionLibrary.Models.CoordinateType.Unknown; if (LineFromType == LineFromTypes.Points) { ccType = CoordinateConversionLibrary.Helpers.ConversionUtils.GetCoordinateString(Point1Formatted, out outFormattedString); Point1 = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetPointFromString(outFormattedString) : null; ccType = CoordinateConversionLibrary.Helpers.ConversionUtils.GetCoordinateString(Point2Formatted, out outFormattedString); Point2 = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetPointFromString(outFormattedString) : null; if (!Azimuth.HasValue || Point1 == null || Point2 == null) { return; } } else { ccType = CoordinateConversionLibrary.Helpers.ConversionUtils.GetCoordinateString(Point1Formatted, out outFormattedString); Point1 = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetPointFromString(outFormattedString) : null; if (!Azimuth.HasValue || Point1 == null) { return; } } HasPoint1 = true; HasPoint2 = true; IGeometry geo = CreatePolyline(); IPolyline line = geo as IPolyline; if (line == null) { return; } IDictionary <String, Double> lineAttributes = new Dictionary <String, Double>(); lineAttributes.Add("distance", Distance); lineAttributes.Add("angle", (double)Azimuth); AddGraphicToMap(line, attributes: lineAttributes); ResetPoints(); ClearTempGraphics(); base.OnEnterKeyCommand(obj); }
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 = CoordinateConversionLibrary.Models.CoordinateType.DD; } } MapPoint point = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetMapPointFromString(outFormattedString) : null; if (point != null) { if (mode == VisibilityLibrary.Properties.Resources.ToolModeObserver) { ToolMode = MapPointToolMode.Observer; Point1 = point; OnNewMapPointEvent(Point1); } else if (mode == VisibilityLibrary.Properties.Resources.ToolModeTarget) { ToolMode = MapPointToolMode.Target; Point2 = point; OnNewMapPointEvent(Point2); } } } }
public virtual void OnImportCSVFileCommand(object obj) { var mode = obj as string; CoordinateConversionLibrary.Models.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.ProSelectCoordinateFieldsView(); 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 { ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show(VisibilityLibrary.Properties.Resources.MsgNoDataFound, VisibilityLibrary.Properties.Resources.CaptionError); 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 = CoordinateConversionLibrary.Models.CoordinateType.DD; } } MapPoint point = (ccType != CoordinateConversionLibrary.Models.CoordinateType.Unknown) ? GetMapPointFromString(outFormattedString) : null; if (point != null) { if (mode == VisibilityLibrary.Properties.Resources.ToolModeObserver) { ToolMode = MapPointToolMode.Observer; Point1 = point; OnNewMapPointEvent(Point1); } else if (mode == VisibilityLibrary.Properties.Resources.ToolModeTarget) { ToolMode = MapPointToolMode.Target; Point2 = point; OnNewMapPointEvent(Point2); } } } } } } }