Example #1
0
        /// <summary>
        /// Update the CIMPointGraphic location
        /// </summary>
        /// <param name="point"></param>
        public void UpdateLocation(PointN point)
        {
            ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(point.SpatialReference.WKID);
            MapPoint mapPoint = MapPointBuilder.CreateMapPoint(point.X, point.Y, sptlRef);

            _graphic.Location = mapPoint;
        }
Example #2
0
        /// <summary>
        /// Create a CIMPointGaphic which can be added to the MapView overlay.
        /// </summary>
        /// <param name="point">The location for the point (as a CIM point)</param>
        /// <returns></returns>
        public CIMPointGraphic MakeCIMPointGraphic(PointN point)
        {
            CIMMarker marker = SymbolFactory.Instance.ConstructMarker(Red, 10, SimpleMarkerStyle.Star);

            CIMSymbolLayer[] layers = new CIMSymbolLayer[1];
            layers[0] = marker;

            CIMPointSymbol pointSymbol = new CIMPointSymbol()
            {
                SymbolLayers = layers,
                ScaleX       = 1
            };
            CIMSymbolReference symbolRef = new CIMSymbolReference()
            {
                Symbol = pointSymbol
            };
            CIMPointGraphic pointGraphic = new CIMPointGraphic();

            ArcGIS.Core.Geometry.SpatialReference spatialRef = SpatialReferenceBuilder.CreateSpatialReference(point.SpatialReference.WKID);
            MapPoint mapPoint = MapPointBuilder.CreateMapPoint(point.X, point.Y, spatialRef);

            pointGraphic.Location = mapPoint;
            pointGraphic.Symbol   = symbolRef;

            return(pointGraphic);
        }
        /// <summary>
        /// Zoom to the specified location
        /// </summary>
        /// <param name="extent">The extent of the geocoded candidate</param>
        /// <returns></returns>
        public static Task ZoomToLocation(CandidateExtent extent)
        {
            return(QueuedTask.Run(() =>
            {
                ArcGIS.Core.Geometry.SpatialReference spatialReference = SpatialReferenceBuilder.CreateSpatialReference(extent.WKID);
                ArcGIS.Core.Geometry.Envelope envelope = EnvelopeBuilder.CreateEnvelope(extent.XMin, extent.YMin, extent.XMax, extent.YMax, spatialReference);

                //apply extent
                MapView.Active.ZoomTo(GeometryEngine.Expand(envelope, 3, 3, true));
            }));
        }
        public override void Project(int factoryCode)
        {
            var temp = QueuedTask.Run(() =>
            {
                ArcGIS.Core.Geometry.SpatialReference spatialReference = SpatialReferenceBuilder.CreateSpatialReference(factoryCode);

                Point = (MapPoint)GeometryEngine.Project(Point, spatialReference);

                return(true);
            }).Result;
        }
        public async Task <MapPoint> ToMapPoint()
        {
            if (_mapPoint == null)
            {
                await QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sr = SpatialReferenceBuilder.CreateSpatialReference(WKID);
                    _mapPoint = MapPointBuilder.CreateMapPoint(Feature.Location.X, Feature.Location.Y, sr);
                });
            }

            return(_mapPoint);
        }
        private void CreateSpatialReference()
        {
            if (string.IsNullOrEmpty(SRSName))
            {
                ArcGisSpatialReference = null;
            }
            else
            {
                string strsrs = SRSName.Replace("EPSG:", string.Empty);

                if (int.TryParse(strsrs, out var srs))
                {
                    try
                    {
                        ArcGisSpatialReference = SpatialReferenceBuilder.CreateSpatialReference(srs);
                    }
                    catch (ArgumentException)
                    {
                        if (string.IsNullOrEmpty(CompatibleSRSNames))
                        {
                            ArcGisSpatialReference = null;
                        }
                        else
                        {
                            strsrs = CompatibleSRSNames.Replace("EPSG:", string.Empty);

                            if (int.TryParse(strsrs, out srs))
                            {
                                try
                                {
                                    ArcGisSpatialReference = SpatialReferenceBuilder.CreateSpatialReference(srs);
                                }
                                catch (ArgumentException)
                                {
                                    ArcGisSpatialReference = null;
                                }
                            }
                            else
                            {
                                ArcGisSpatialReference = null;
                            }
                        }
                    }
                }
                else
                {
                    ArcGisSpatialReference = null;
                }
            }
        }
Example #7
0
        private CoordinateType GetCoordinateType(string input, out MapPoint point)
        {
            point = null;

            // DD
            CoordinateDD dd;

            if (CoordinateDD.TryParse(input, out dd))
            {
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DD);
            }

            // DDM
            CoordinateDDM ddm;

            if (CoordinateDDM.TryParse(input, out ddm))
            {
                dd    = new CoordinateDD(ddm);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DDM);
            }
            // DMS
            CoordinateDMS dms;

            if (CoordinateDMS.TryParse(input, out dms))
            {
                dd    = new CoordinateDD(dms);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DMS);
            }

            return(CoordinateType.Unknown);
        }
        /// Camera
        /// <example>
        /// <code title="Camera Dock Pane" description="Create a dock pane showing the camera properties for the active map view." source="..\..\ArcGIS\SharedArcGIS\SDK\Examples\ArcGIS.Desktop.Mapping\MapExploration\CameraDockPane.xaml" lang="XAML"/>
        /// <code source="..\..\ArcGIS\SharedArcGIS\SDK\Examples\ArcGIS.Desktop.Mapping\MapExploration\CameraDockPane.xaml.cs" lang="CS"/>
        /// <code source="..\..\ArcGIS\SharedArcGIS\SDK\Examples\ArcGIS.Desktop.Mapping\MapExploration\CameraDockPaneViewModel.cs" lang="CS"/>
        /// </example>

        /// Camera.Heading
        /// <example>
        /// <code title="Rotate Map View" description="Rotate the active map view." region="Rotate Map View Asynchronous" source="..\..\ArcGIS\SharedArcGIS\SDK\Examples\ArcGIS.Desktop.Mapping\MapExploration\MapView_Examples.cs" lang="CS"/>
        /// </example>

        /// Camera.SpatialReference
        /// <example>
        /// <code title="Project Camera" description="Project a camera into a new spatial reference." region="Project Camera" source="..\..\ArcGIS\SharedArcGIS\SDK\Examples\ArcGIS.Desktop.Mapping\MapExploration\Camera_Examples.cs" lang="CS"/>
        /// </example>
        #region Project Camera
        public Task <Camera> ProjectCamera(Camera camera, ArcGIS.Core.Geometry.SpatialReference spatialReference)
        {
            return(QueuedTask.Run(() =>
            {
                var mapPoint = MapPointBuilder.CreateMapPoint(camera.X, camera.Y, camera.Z, camera.SpatialReference);
                var newPoint = GeometryEngine.Instance.Project(mapPoint, spatialReference) as MapPoint;
                var newCamera = new Camera()
                {
                    X = newPoint.X,
                    Y = newPoint.Y,
                    Z = newPoint.Z,
                    Scale = camera.Scale,
                    Pitch = camera.Pitch,
                    Heading = camera.Heading,
                    Roll = camera.Roll,
                    Viewpoint = camera.Viewpoint,
                    SpatialReference = spatialReference
                };
                return newCamera;
            }));
        }
Example #9
0
        private async void OnFlashPointCommand(object obj)
        {
            CoordinateDD dd;
            var          ctvm = CTView.Resources["CTViewModel"] as CoordinateToolViewModel;

            if (ctvm != null)
            {
                if (!CoordinateDD.TryParse(ctvm.InputCoordinate, out dd))
                {
                    return;
                }
            }
            else
            {
                return;
            }

            ArcGIS.Core.CIM.CIMPointSymbol symbol = null;
            var point = await QueuedTask.Run(() =>
            {
                ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
            });

            await QueuedTask.Run(() =>
            {
                // Construct point symbol
                symbol = SymbolFactory.ConstructPointSymbol(ColorFactory.Red, 10.0, SimpleMarkerStyle.Star);
            });

            //Get symbol reference from the symbol
            CIMSymbolReference symbolReference = symbol.MakeSymbolReference();

            await QueuedTask.Run(() =>
            {
                ClearOverlay();
                _overlayObject = MapView.Active.AddOverlay(point, symbolReference);
                MapView.Active.ZoomToAsync(point, new TimeSpan(2500000), true);
            });
        }
        private CoordinateType GetCoordinateType(string input, out MapPoint point)
        {
            point = null;

            // DD
            CoordinateDD dd;

            if (CoordinateDD.TryParse(input, out dd))
            {
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DD);
            }

            // DDM
            CoordinateDDM ddm;

            if (CoordinateDDM.TryParse(input, out ddm))
            {
                dd    = new CoordinateDD(ddm);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DDM);
            }
            // DMS
            CoordinateDMS dms;

            if (CoordinateDMS.TryParse(input, out dms))
            {
                dd    = new CoordinateDD(dms);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DMS);
            }

            CoordinateGARS gars;

            if (CoordinateGARS.TryParse(input, out gars))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(gars.ToString("", new CoordinateGARSFormatter()), sptlRef, GeoCoordinateType.GARS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.GARS);
                }
                catch { }
            }

            CoordinateMGRS mgrs;

            if (CoordinateMGRS.TryParse(input, out mgrs))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(mgrs.ToString("", new CoordinateMGRSFormatter()), sptlRef, GeoCoordinateType.MGRS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.MGRS);
                }
                catch { }
            }

            CoordinateUSNG usng;

            if (CoordinateUSNG.TryParse(input, out usng))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(usng.ToString("", new CoordinateMGRSFormatter()), sptlRef, GeoCoordinateType.USNG, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.USNG);
                }
                catch { }
            }

            CoordinateUTM utm;

            if (CoordinateUTM.TryParse(input, out utm))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(utm.ToString("", new CoordinateUTMFormatter()), sptlRef, GeoCoordinateType.UTM, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.UTM);
                }
                catch { }
            }


            return(CoordinateType.Unknown);
        }
        private async void OnFlashPointCommand(object obj)
        {
            var previous = IsToolActive;

            if (!IsToolActive)
            {
                IsToolActive = true;
            }

            CoordinateDD dd;
            var          ctvm = CTView.Resources["CTViewModel"] as CoordinateConversionViewModel;

            if (ctvm != null)
            {
                if (!CoordinateDD.TryParse(ctvm.InputCoordinate, out dd))
                {
                    return;
                }
            }
            else
            {
                return;
            }

            ArcGIS.Core.CIM.CIMPointSymbol symbol = null;
            var point = await QueuedTask.Run(() =>
            {
                ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
            });

            //await QueuedTask.Run(() =>
            //{
            //    // Construct point symbol
            //    symbol = SymbolFactory.ConstructPointSymbol(ColorFactory.Red, 10.0, SimpleMarkerStyle.Star);
            //});

            ////Get symbol reference from the symbol
            //CIMSymbolReference symbolReference = symbol.MakeSymbolReference();

            //QueuedTask.Run(() =>
            //{
            //    ClearOverlay();
            //    _overlayObject = MapView.Active.AddOverlay(point, symbolReference);
            //    //MapView.Active.ZoomToAsync(point, new TimeSpan(2500000), true);
            //});


            QueuedTask.Run(() =>
            {
                Mediator.NotifyColleagues("UPDATE_FLASH", point);
            });

            //await QueuedTask.Run(() =>
            //{
            //    Task.Delay(500);
            //    ClearOverlay();
            //    //_overlayObject = MapView.Active.AddOverlay(point, symbolReference);
            //    //MapView.Active.ZoomToAsync(point, new TimeSpan(2500000), true);
            //});
            //if (previous != IsToolActive)
            //    IsToolActive = previous;
            //await QueuedTask.Run(() =>
            //{
            //    Task.Delay(500);
            //    ClearOverlay();
            //    MapView.Active.LookAt(MapView.Active.Extent.Center);
            //});
        }
Example #12
0
        private async Task <CCCoordinate> GetCoordinateType(string input)
        {
            MapPoint point = null;

            // DD
            CoordinateDD dd;

            if (CoordinateDD.TryParse(input, out dd, true))
            {
                if (dd.Lat > 90 || dd.Lat < -90 || dd.Lon > 180 || dd.Lon < -180)
                {
                    return new CCCoordinate()
                           {
                               Type = CoordinateType.Unknown, Point = null
                           }
                }
                ;
                point = await QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                });//.Result;

                return(new CCCoordinate()
                {
                    Type = CoordinateType.DD, Point = point, PointInformation = dd
                });
            }

            // DDM
            CoordinateDDM ddm;

            if (CoordinateDDM.TryParse(input, out ddm, true))
            {
                dd = new CoordinateDD(ddm);
                if (dd.Lat > 90 || dd.Lat < -90 || dd.Lon > 180 || dd.Lon < -180)
                {
                    return new CCCoordinate()
                           {
                               Type = CoordinateType.Unknown, Point = null
                           }
                }
                ;
                point = await QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                });//.Result;

                return(new CCCoordinate()
                {
                    Type = CoordinateType.DDM, Point = point, PointInformation = ddm
                });
            }
            // DMS
            CoordinateDMS dms;

            if (CoordinateDMS.TryParse(input, out dms, true))
            {
                dd = new CoordinateDD(dms);
                if (dd.Lat > 90 || dd.Lat < -90 || dd.Lon > 180 || dd.Lon < -180)
                {
                    return new CCCoordinate()
                           {
                               Type = CoordinateType.Unknown, Point = null
                           }
                }
                ;
                point = await QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                });//.Result;

                return(new CCCoordinate()
                {
                    Type = CoordinateType.DMS, Point = point, PointInformation = dms
                });
            }

            CoordinateGARS gars;

            if (CoordinateGARS.TryParse(input, out gars))
            {
                try
                {
                    point = await QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(gars.ToString("", new CoordinateGARSFormatter()), sptlRef, GeoCoordinateType.GARS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    });//.Result;

                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.GARS, Point = point, PointInformation = gars
                    });
                }
                catch { }
            }

            CoordinateMGRS mgrs;

            if (CoordinateMGRS.TryParse(input, out mgrs))
            {
                try
                {
                    point = await QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(mgrs.ToString(), sptlRef, GeoCoordinateType.MGRS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    });//.Result;

                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.MGRS, Point = point, PointInformation = mgrs
                    });
                }
                catch { }
            }

            CoordinateUSNG usng;

            if (CoordinateUSNG.TryParse(input, out usng))
            {
                try
                {
                    point = await QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(usng.ToString("", new CoordinateMGRSFormatter()), sptlRef, GeoCoordinateType.USNG, FromGeoCoordinateMode.Default);
                        return(tmp);
                    });//.Result;

                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.USNG, Point = point, PointInformation = usng
                    });
                }
                catch { }
            }

            CoordinateUTM utm;

            if (CoordinateUTM.TryParse(input, out utm))
            {
                try
                {
                    point = await QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(utm.ToString("", new CoordinateUTMFormatter()), sptlRef, GeoCoordinateType.UTM, FromGeoCoordinateMode.Default);
                        return(tmp);
                    });//.Result;

                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.UTM, Point = point, PointInformation = utm
                    });
                }
                catch { }
            }

            /*
             * Updated RegEx to capture invalid coordinates like 00, 45, or 456987.
             */
            Regex regexMercator = new Regex(@"^(?<latitude>\-?\d+[.,]?\d*)[+,;:\s]{1,}(?<longitude>\-?\d+[.,]?\d*)");

            var matchMercator = regexMercator.Match(input);

            if (matchMercator.Success && matchMercator.Length == input.Length)
            {
                try
                {
                    var Lat = Double.Parse(matchMercator.Groups["latitude"].Value);
                    var Lon = Double.Parse(matchMercator.Groups["longitude"].Value);
                    var sr  = proCoordGetter.Point != null ? proCoordGetter.Point.SpatialReference : SpatialReferences.WebMercator;
                    point = await QueuedTask.Run(() =>
                    {
                        return(MapPointBuilder.CreateMapPoint(Lon, Lat, sr));
                    });//.Result;

                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.DD, Point = point
                    });
                }
                catch (Exception)
                {
                    return(new CCCoordinate()
                    {
                        Type = CoordinateType.Unknown, Point = null
                    });
                }
            }

            return(new CCCoordinate()
            {
                Type = CoordinateType.Unknown, Point = null
            });
        }
    }
}
        /// <summary>
        /// asynchronous function to request or this spatial reference exists in the current area
        /// </summary>
        public async Task <bool> ExistsInAreaAsync()
        {
            await QueuedTask.Run(() =>
            {
                if (ArcGisSpatialReference == null)
                {
                    CreateSpatialReference();
                }

                if (ArcGisSpatialReference != null)
                {
                    MapView activeView = MapView.Active;
                    Envelope envelope  = null;

                    if (activeView == null)
                    {
                        FileSettings settings             = FileSettings.Instance;
                        SpatialReference spatialReference = settings.CycloramaViewerCoordinateSystem;

                        if (spatialReference != null)
                        {
                            if (spatialReference.ArcGisSpatialReference == null)
                            {
                                spatialReference.CreateSpatialReference();
                            }

                            if (spatialReference.ArcGisSpatialReference != null)
                            {
                                Bounds bounds     = spatialReference.NativeBounds;
                                var minCoordinate = new Coordinate2D(bounds.MinX, bounds.MinY);
                                var maxCoordinate = new Coordinate2D(bounds.MaxX, bounds.MaxY);
                                envelope          = EnvelopeBuilder.CreateEnvelope(minCoordinate, maxCoordinate,
                                                                                   spatialReference.ArcGisSpatialReference);
                            }
                        }
                    }
                    else
                    {
                        envelope = activeView.Extent;
                    }

                    if (envelope != null)
                    {
                        ArcGISSpatialReference spatEnv = envelope.SpatialReference;
                        int spatEnvFactoryCode         = spatEnv?.Wkid ?? 0;

                        if (spatEnv != null && spatEnvFactoryCode != ArcGisSpatialReference.Wkid)
                        {
                            try
                            {
                                ProjectionTransformation projection = ProjectionTransformation.Create(envelope.SpatialReference,
                                                                                                      ArcGisSpatialReference);

                                if (!(GeometryEngine.Instance.ProjectEx(envelope, projection) is Envelope copyEnvelope) || copyEnvelope.IsEmpty)
                                {
                                    ArcGisSpatialReference = null;
                                }
                                else
                                {
                                    if (NativeBounds != null)
                                    {
                                        double xMin = NativeBounds.MinX;
                                        double yMin = NativeBounds.MinY;
                                        double xMax = NativeBounds.MaxX;
                                        double yMax = NativeBounds.MaxY;

                                        if (copyEnvelope.XMin < xMin || copyEnvelope.XMax > xMax || copyEnvelope.YMin < yMin ||
                                            copyEnvelope.YMax > yMax)
                                        {
                                            ArcGisSpatialReference = null;
                                        }
                                    }
                                }
                            }
                            catch (ArgumentException)
                            {
                                ArcGisSpatialReference = null;
                            }
                        }
Example #14
0
        private CoordinateType GetCoordinateType(string input, out MapPoint point)
        {
            point = null;

            // DD
            CoordinateDD dd;

            if (CoordinateDD.TryParse(input, out dd))
            {
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DD);
            }

            // DDM
            CoordinateDDM ddm;

            if (CoordinateDDM.TryParse(input, out ddm))
            {
                dd    = new CoordinateDD(ddm);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DDM);
            }
            // DMS
            CoordinateDMS dms;

            if (CoordinateDMS.TryParse(input, out dms))
            {
                dd    = new CoordinateDD(dms);
                point = QueuedTask.Run(() =>
                {
                    ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                    return(MapPointBuilder.CreateMapPoint(dd.Lon, dd.Lat, sptlRef));
                }).Result;
                return(CoordinateType.DMS);
            }

            CoordinateGARS gars;

            if (CoordinateGARS.TryParse(input, out gars))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(gars.ToString("", new CoordinateGARSFormatter()), sptlRef, GeoCoordinateType.GARS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.GARS);
                }
                catch { }
            }

            CoordinateMGRS mgrs;

            if (CoordinateMGRS.TryParse(input, out mgrs))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(mgrs.ToString("", new CoordinateMGRSFormatter()), sptlRef, GeoCoordinateType.MGRS, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.MGRS);
                }
                catch { }
            }

            CoordinateUSNG usng;

            if (CoordinateUSNG.TryParse(input, out usng))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(usng.ToString("", new CoordinateMGRSFormatter()), sptlRef, GeoCoordinateType.USNG, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.USNG);
                }
                catch { }
            }

            CoordinateUTM utm;

            if (CoordinateUTM.TryParse(input, out utm))
            {
                try
                {
                    point = QueuedTask.Run(() =>
                    {
                        ArcGIS.Core.Geometry.SpatialReference sptlRef = SpatialReferenceBuilder.CreateSpatialReference(4326);
                        var tmp = MapPointBuilder.FromGeoCoordinateString(utm.ToString("", new CoordinateUTMFormatter()), sptlRef, GeoCoordinateType.UTM, FromGeoCoordinateMode.Default);
                        return(tmp);
                    }).Result;

                    return(CoordinateType.UTM);
                }
                catch { }
            }

            Regex regexMercator = new Regex(@"^(?<latitude>\-?\d+[.,]?\d*)[+,;:\s]*(?<longitude>\-?\d+[.,]?\d*)");

            var matchMercator = regexMercator.Match(input);

            if (matchMercator.Success && matchMercator.Length == input.Length)
            {
                try
                {
                    var Lat = Double.Parse(matchMercator.Groups["latitude"].Value);
                    var Lon = Double.Parse(matchMercator.Groups["longitude"].Value);
                    var sr  = proCoordGetter.Point != null ? proCoordGetter.Point.SpatialReference : SpatialReferences.WebMercator;
                    point = QueuedTask.Run(() =>
                    {
                        return(MapPointBuilder.CreateMapPoint(Lon, Lat, sr));
                    }).Result;
                    return(CoordinateType.DD);
                }
                catch (Exception ex)
                {
                    return(CoordinateType.Unknown);
                }
            }

            return(CoordinateType.Unknown);
        }