Beispiel #1
0
        /// <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);
                    }
                }
            }
        }
Beispiel #2
0
        /// <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);
                                }
                            }
                        }
                    }
                }
            }
        }