/// <summary> /// Computes the Geodetic coordinate reference system. /// </summary> /// <returns>The Geodetic coordinate reference system.</returns> /// <exception cref="System.IO.InvalidDataException">Geodetic coordinate reference system code is invalid.</exception> private GeographicCoordinateReferenceSystem ComputeGeodeticCoordinateReferenceSystem() { Int32 code = Convert.ToInt32(_currentGeoKeys[GeoKey.GeodeticCoordinateReferenceSystemType]); // EPSG geodetic coordinate reference system codes if (code < 32767) { GeographicCoordinateReferenceSystem referenceSystem = GeographicCoordinateReferenceSystems.FromIdentifier("EPSG::" + code).FirstOrDefault(); if (referenceSystem == null) { return(new GeographicCoordinateReferenceSystem("EPSG::" + code, "undefined", CoordinateSystems.EllipsoidalLatLonD, GeodeticDatums.WGS84, AreasOfUse.World)); } return(referenceSystem); } // user-defined geodetic coordinate reference system if (code == Int16.MaxValue) { String citation = _currentGeoKeys[GeoKey.GeodeticCoordinateReferenceSystemCitation].ToString(); GeodeticDatum datum = ComputeGeodeticDatum(); UnitOfMeasurement angleUnit = ComputeAngularUnit(); CoordinateSystem coordinateSystem = new CoordinateSystem(CoordinateSystem.UserDefinedIdentifier, CoordinateSystem.UserDefinedName, CoordinateSystemType.Ellipsoidal, CoordinateSystemAxisFactory.GeodeticLatitude(angleUnit), CoordinateSystemAxisFactory.GeodeticLongitude(angleUnit)); return(new GeographicCoordinateReferenceSystem(GeographicCoordinateReferenceSystem.UserDefinedIdentifier, GeographicCoordinateReferenceSystem.UserDefinedName, citation, null, null, coordinateSystem, datum, null)); } throw new InvalidDataException("Geodetic coordinate reference system code is invalid."); }
/// <summary> /// Returns a collection with items matching a specified datum. /// </summary> /// <param name="datum">The geodetic datum.</param> /// <returns>A collection containing the items that match the specified datum.</returns> /// <exception cref="System.ArgumentNullException">The datum is null.</exception> public IEnumerable <GeographicCoordinateReferenceSystem> WithDatum(GeodeticDatum datum) { if (datum == null) { throw new ArgumentNullException(nameof(datum)); } return(this.GetReferences().Where(referenceSystem => referenceSystem.Datum.Equals(datum))); }
static public ISpatialReference AXL2SpatialReference(XmlNode coordSysNode) { ISpatialReference sRef = null; if (coordSysNode != null) { try { if (coordSysNode.Attributes["id"] != null && coordSysNode.Attributes["id"].Value != "0") { sRef = gView.Framework.Geometry.SpatialReference.FromID("epsg:" + coordSysNode.Attributes["id"].Value); } else if (coordSysNode.Attributes["string"] != null) { sRef = gView.Framework.Geometry.SpatialReference.FromWKT(coordSysNode.Attributes["string"].Value); } if (sRef != null && coordSysNode.Attributes["datumtransformid"] != null) { GeodeticDatum datum = Const.FromID(coordSysNode.Attributes["datumtransformid"].Value); if (datum != null) { sRef.Datum = datum; } } else if (sRef != null && coordSysNode.Attributes["datumid"] != null) { GeodeticDatum datum = Const.FromID(coordSysNode.Attributes["datumid"].Value); if (datum != null) { sRef.Datum = datum; } } else if (sRef != null && coordSysNode.Attributes["datumtransformstring"] != null) { GeodeticDatum datum = GeodeticDatum.FromESRIWKT(coordSysNode.Attributes["datumtransformstring"].Value); if (datum != null) { sRef.Datum = datum; } } else if (sRef != null && coordSysNode.Attributes["datumstring"] != null) { GeodeticDatum datum = GeodeticDatum.FromESRIWKT(coordSysNode.Attributes["datumstring"].Value); if (datum != null) { sRef.Datum = datum; } } } catch { } } return(sRef); }
public GeodeticDatumProperties(GeodeticDatum datum) { if (datum != null) { _datum = datum; } else { _datum = new GeodeticDatum(); } }
public override string GetStepParameters() { var parameters = new List <string>(); parameters.Add(Name != null ? Name.ToStepValue() : "$"); parameters.Add(Description != null ? Description.ToStepValue() : "$"); parameters.Add(GeodeticDatum != null ? GeodeticDatum.ToStepValue() : "$"); parameters.Add(VerticalDatum != null ? VerticalDatum.ToStepValue() : "$"); parameters.Add(MapProjection != null ? MapProjection.ToStepValue() : "$"); parameters.Add(MapZone != null ? MapZone.ToStepValue() : "$"); parameters.Add(MapUnit != null ? MapUnit.ToStepValue() : "$"); return(string.Join(", ", parameters.ToArray())); }
public GeodeticDatum CreateGeodeticDatum() { GeodeticDatum datum = new GeodeticDatum(this.Name); switch (_method.ToLower()) { case "geocentric_translation": if (_parameters.Count != 3) { throw new Exception("Wrong number of parameters"); } datum.X_Axis = _parameters.GetDouble("x_axis_translation"); datum.Y_Axis = _parameters.GetDouble("y_axis_translation"); datum.Z_Axis = _parameters.GetDouble("z_axis_translation"); break; case "coordinate_frame": case "position_vector": if (_parameters.Count != 7) { throw new Exception("Wrong number of parameters"); } datum.X_Axis = _parameters.GetDouble("x_axis_translation"); datum.Y_Axis = _parameters.GetDouble("y_axis_translation"); datum.Z_Axis = _parameters.GetDouble("z_axis_translation"); datum.X_Rotation = _parameters.GetDouble("x_axis_rotation"); datum.Y_Rotation = _parameters.GetDouble("y_axis_rotation"); datum.Z_Rotation = _parameters.GetDouble("z_axis_rotation"); datum.Scale_Diff = _parameters.GetDouble("scale_difference"); break; default: throw new Exception("Unknown Method: " + _method); } return(datum); }
/// <summary> /// Returns a collection with items matching a specified datum. /// </summary> /// <param name="collection">The coordinate reference system collection.</param> /// <param name="datum">The geodetic datum.</param> /// <returns>A collection containing the items that match the specified datum.</returns> /// <exception cref="System.ArgumentNullException"> /// The collection is null. /// or /// The datum is null. /// </exception> public static IEnumerable <CoordinateReferenceSystem> WithDatum(this IEnumerable <CoordinateReferenceSystem> collection, GeodeticDatum datum) { if (collection == null) { throw new ArgumentNullException(nameof(collection)); } if (datum == null) { throw new ArgumentNullException(nameof(datum)); } return(collection.Where(item => item.Datum.Equals(datum))); }
/// <summary> /// Returns a collection with items matching a specified datum. /// </summary> /// <param name="datum">The geodetic datum.</param> /// <returns>A collection containing the items that match the specified datum.</returns> /// <exception cref="System.ArgumentNullException">The datum is null.</exception> public IEnumerable <VerticalCoordinateReferenceSystem> WithDatum(GeodeticDatum datum) { return(this.GetReferences().Where(referenceSystem => referenceSystem.Datum.Equals(datum))); }