/// <summary> /// Method used to convert a string to a known coordinate /// Assumes WGS84 for now /// Uses the IConversionNotation interface /// </summary> /// <param name="coordinate">the coordinate as a string</param> /// <returns>IPoint if successful, null if not</returns> internal MapPoint GetMapPointFromString(string coordinate) { MapPoint point = null; // future use if order of GetValues is not acceptable //var listOfTypes = new List<GeoCoordinateType>(new GeoCoordinateType[] { // GeoCoordinateType.DD, // GeoCoordinateType.DDM, // GeoCoordinateType.DMS, // GeoCoordinateType.GARS, // GeoCoordinateType.GeoRef, // GeoCoordinateType.MGRS, // GeoCoordinateType.USNG, // GeoCoordinateType.UTM //}); var listOfTypes = Enum.GetValues(typeof(GeoCoordinateType)).Cast <GeoCoordinateType>(); foreach (var type in listOfTypes) { try { point = QueuedTask.Run(() => { return(MapPointBuilder.FromGeoCoordinateString(coordinate, MapView.Active.Map.SpatialReference, type, FromGeoCoordinateMode.Default)); }).Result; } catch (Exception ex) { // do nothing } if (point != null) { return(point); } } try { point = QueuedTask.Run(() => { return(MapPointBuilder.FromGeoCoordinateString(coordinate, MapView.Active.Map.SpatialReference, GeoCoordinateType.UTM, FromGeoCoordinateMode.UtmNorthSouth)); }).Result; } catch (Exception ex) { // do nothing } return(point); }
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); }
/// <summary> /// Method used to convert a string to a known coordinate /// Assumes WGS84 for now /// </summary> /// <param name="coordinate">the coordinate as a string</param> /// <returns>MapPoint if successful, null if not</returns> internal MapPoint GetMapPointFromString(string coordinate) { MapPoint point = null; // future use if order of GetValues is not acceptable //var listOfTypes = new List<GeoCoordinateType>(new GeoCoordinateType[] { // GeoCoordinateType.DD, // GeoCoordinateType.DDM, // GeoCoordinateType.DMS, // GeoCoordinateType.GARS, // GeoCoordinateType.GeoRef, // GeoCoordinateType.MGRS, // GeoCoordinateType.USNG, // GeoCoordinateType.UTM //}); var listOfTypes = Enum.GetValues(typeof(GeoCoordinateType)).Cast <GeoCoordinateType>(); foreach (var type in listOfTypes) { try { point = QueuedTask.Run(() => { return(MapPointBuilder.FromGeoCoordinateString(coordinate, MapView.Active.Map.SpatialReference, type, FromGeoCoordinateMode.Default)); }).Result; } catch (Exception ex) { // do nothing } if (point != null) { return(point); } } try { point = QueuedTask.Run(() => { return(MapPointBuilder.FromGeoCoordinateString(coordinate, MapView.Active.Map.SpatialReference, GeoCoordinateType.UTM, FromGeoCoordinateMode.UtmNorthSouth)); }).Result; } catch (Exception ex) { // do nothing } if (point == null) { coordinate = coordinate.Trim(); Regex regexMercator = new Regex(@"^(?<latitude>\-?\d+\.?\d*)[+,;:\s]*(?<longitude>\-?\d+\.?\d*)"); var matchMercator = regexMercator.Match(coordinate); if (matchMercator.Success && matchMercator.Length == coordinate.Length) { try { var Lat = Double.Parse(matchMercator.Groups["latitude"].Value); var Lon = Double.Parse(matchMercator.Groups["longitude"].Value); point = QueuedTask.Run(() => { return(MapPointBuilder.CreateMapPoint(Lon, Lat)); }).Result; return(point); } catch (Exception ex) { return(null); } } } return(point); }
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 }); } } }
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); }
async private void Image_MouseEnter(object sender, MouseEventArgs e) { Polygon polygon; var blackSolidLineSymbol = SymbolFactory.Instance.ConstructLineSymbol(ColorFactory.Instance.BlueRGB, 5, SimpleLineStyle.Solid); Geometry geometry = null; await ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() => { SpatialReference inSR = SpatialReferenceBuilder.CreateSpatialReference(32604); SpatialReference sr4326 = SpatialReferences.WGS84; SpatialReference sr3857 = SpatialReferences.WebMercator; ProjectionTransformation projTransFromSRs = ArcGIS.Core.Geometry.ProjectionTransformation.Create(inSR, sr3857); List <Coordinate2D> coordinates = new List <Coordinate2D>() { //new Coordinate2D(-159.20168702818188, 21.876487211082708), //new Coordinate2D(-159.42653907783114, 21.838951660451173), //new Coordinate2D(-159.44077880308507, 21.94718691051718), //new Coordinate2D(-159.21630329750306, 21.94718691051718), //new Coordinate2D(-159.21413990271841, 21.9365008022738), //new Coordinate2D(-159.21383956606297, 21.93655454291286), //new Coordinate2D(-159.20168702818188, 21.876487211082708), new Coordinate2D(-17773406.8675, 2478583.7239999995), new Coordinate2D(-17773406.8675, 2578583.7239999995), new Coordinate2D(-16773406.8675, 2578583.7239999995), new Coordinate2D(-17773406.8675, 2478583.7239999995) }; //MapPoint point = new MapPointBuilder.FromGeoCoordinateString() //List<MapPoint> mapPoints = new List<MapPoint>(); //foreach (Coordinate2D item in coordinates) //{ // MapPoint point = new MapPointBuilder() //} //mapPoints.Add( coordinates[0].ToMapPoint()); MapPointBuilder asas = new MapPointBuilder(new Coordinate2D(-159.20168702818188, 21.876487211082708), MapView.Active.Extent.SpatialReference); _polygonSymbol = SymbolFactory.Instance.ConstructPolygonSymbol(ColorFactory.Instance.BlackRGB, SimpleFillStyle.Null, SymbolFactory.Instance.ConstructStroke(ColorFactory.Instance.BlackRGB, 2.0, SimpleLineStyle.Solid)); MapPoint point = asas.ToGeometry(); MapPoint point2 = MapPointBuilder.FromGeoCoordinateString(point.ToGeoCoordinateString(new ToGeoCoordinateParameter(GeoCoordinateType.DD)), MapView.Active.Extent.SpatialReference, GeoCoordinateType.DD); using (PolygonBuilder polygonBuilder = new PolygonBuilder(coordinates, inSR)) { polygonBuilder.SpatialReference = inSR; polygon = polygonBuilder.ToGeometry(); geometry = polygonBuilder.ToGeometry(); Geometry geometry2 = GeometryEngine.Instance.ProjectEx(geometry, projTransFromSRs); _graphic = MapView.Active.AddOverlayAsync(geometry, _polygonSymbol.MakeSymbolReference()); //Application.Current. } }); //await QueuedTask.Run(() => //{ // MapView.Active.UpdateOverlay(_graphic, point, SymbolFactory.Instance.ConstructPointSymbol( // ColorFactory.Instance.BlueRGB, 20.0, SimpleMarkerStyle.Circle).MakeSymbolReference()); //}); //_graphic = await this.AddOverlayAsync(geometry, _lineSymbol.MakeSymbolReference()); Console.WriteLine(sender.ToString()); //_graphic = MapView.Active.AddOverlay(geometry, _lineSymbol.MakeSymbolReference()); //Geometry geometry = new PolygonBuilder.CreatePolygon(coordinates, inSR); ; }