diff --git a/MapControl/Shared/AutoEquirectangularProjection.cs b/MapControl/Shared/AutoEquirectangularProjection.cs index 1ba7f033..de9dfe92 100644 --- a/MapControl/Shared/AutoEquirectangularProjection.cs +++ b/MapControl/Shared/AutoEquirectangularProjection.cs @@ -9,6 +9,11 @@ using System.Windows; namespace MapControl { + /// + /// Auto-Equirectangular Projection - AUTO2:42004. + /// Equidistant cylindrical projection with standard parallel and central meridian set by the Center property. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.90-91. + /// public class AutoEquirectangularProjection : MapProjection { public const string DefaultCrsId = "AUTO2:42004"; @@ -16,24 +21,21 @@ namespace MapControl public AutoEquirectangularProjection() { CrsId = DefaultCrsId; + IsNormalCylindrical = true; } public override Point LocationToMap(Location location) { - var xScale = Wgs84MetersPerDegree * Math.Cos(Center.Latitude * Math.PI / 180d); - return new Point( - xScale * (location.Longitude - Center.Longitude), + Wgs84MetersPerDegree * (location.Longitude - Center.Longitude) * Math.Cos(Center.Latitude * Math.PI / 180d), Wgs84MetersPerDegree * location.Latitude); } public override Location MapToLocation(Point point) { - var xScale = Wgs84MetersPerDegree * Math.Cos(Center.Latitude * Math.PI / 180d); - return new Location( point.Y / Wgs84MetersPerDegree, - point.X / xScale + Center.Longitude); + point.X / (Wgs84MetersPerDegree * Math.Cos(Center.Latitude * Math.PI / 180d)) + Center.Longitude); } } } diff --git a/MapControl/Shared/AzimuthalEquidistantProjection.cs b/MapControl/Shared/AzimuthalEquidistantProjection.cs index bd03eefe..5e0953d9 100644 --- a/MapControl/Shared/AzimuthalEquidistantProjection.cs +++ b/MapControl/Shared/AzimuthalEquidistantProjection.cs @@ -10,12 +10,11 @@ using System.Windows; namespace MapControl { /// - /// Spherical Azimuthal Equidistant Projection. + /// Spherical Azimuthal Equidistant Projection - No standard CRS ID. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.195-197. /// public class AzimuthalEquidistantProjection : AzimuthalProjection { - // No standard CRS ID - public override Point LocationToMap(Location location) { if (location.Equals(Center)) diff --git a/MapControl/Shared/EquirectangularProjection.cs b/MapControl/Shared/EquirectangularProjection.cs index 39469fba..a2bd0be0 100644 --- a/MapControl/Shared/EquirectangularProjection.cs +++ b/MapControl/Shared/EquirectangularProjection.cs @@ -13,8 +13,9 @@ using System.Windows; namespace MapControl { /// - /// Equirectangular Projection. - /// Longitude and Latitude values are transformed linearly to X and Y values in meters. + /// Equirectangular Projection - EPSG:4326. + /// Equidistant cylindrical projection with zero standard parallel and central meridian. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.90-91. /// public class EquirectangularProjection : MapProjection { diff --git a/MapControl/Shared/GnomonicProjection.cs b/MapControl/Shared/GnomonicProjection.cs index feb8ac9e..20b5f963 100644 --- a/MapControl/Shared/GnomonicProjection.cs +++ b/MapControl/Shared/GnomonicProjection.cs @@ -10,7 +10,8 @@ using System.Windows; namespace MapControl { /// - /// Spherical Gnomonic Projection. + /// Spherical Gnomonic Projection - AUTO2:97001. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.165-167. /// public class GnomonicProjection : AzimuthalProjection { diff --git a/MapControl/Shared/OrthographicProjection.cs b/MapControl/Shared/OrthographicProjection.cs index bad81d2f..ca1b46ec 100644 --- a/MapControl/Shared/OrthographicProjection.cs +++ b/MapControl/Shared/OrthographicProjection.cs @@ -10,7 +10,8 @@ using System.Windows; namespace MapControl { /// - /// Spherical Orthographic Projection. + /// Spherical Orthographic Projection - AUTO2:42003. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.148-150. /// public class OrthographicProjection : AzimuthalProjection { diff --git a/MapControl/Shared/StereographicProjection.cs b/MapControl/Shared/StereographicProjection.cs index 8d5683db..32baff7a 100644 --- a/MapControl/Shared/StereographicProjection.cs +++ b/MapControl/Shared/StereographicProjection.cs @@ -10,7 +10,8 @@ using System.Windows; namespace MapControl { /// - /// Spherical Stereographic Projection. + /// Spherical Stereographic Projection - AUTO2:97002. + /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.157-160. /// public class StereographicProjection : AzimuthalProjection { diff --git a/MapControl/Shared/WebMercatorProjection.cs b/MapControl/Shared/WebMercatorProjection.cs index 5fd7bf4b..234fb7ab 100644 --- a/MapControl/Shared/WebMercatorProjection.cs +++ b/MapControl/Shared/WebMercatorProjection.cs @@ -10,7 +10,7 @@ using System.Windows; namespace MapControl { /// - /// Spherical Mercator Projection, EPSG:3857. + /// Spherical Mercator Projection - EPSG:3857. /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.41-44. /// public class WebMercatorProjection : MapProjection diff --git a/MapControl/Shared/WorldMercatorProjection.cs b/MapControl/Shared/WorldMercatorProjection.cs index 6592bb45..abdc71f2 100644 --- a/MapControl/Shared/WorldMercatorProjection.cs +++ b/MapControl/Shared/WorldMercatorProjection.cs @@ -10,7 +10,7 @@ using System.Windows; namespace MapControl { /// - /// Elliptical Mercator Projection, EPSG:3395. + /// Elliptical Mercator Projection - EPSG:3395. /// See "Map Projections - A Working Manual" (https://pubs.usgs.gov/pp/1395/report.pdf), p.44-45. /// public class WorldMercatorProjection : MapProjection diff --git a/MapProjections/Shared/PolarStereographicProjection.cs b/MapProjections/Shared/PolarStereographicProjection.cs index c2a6b438..33dead12 100644 --- a/MapProjections/Shared/PolarStereographicProjection.cs +++ b/MapProjections/Shared/PolarStereographicProjection.cs @@ -112,6 +112,9 @@ namespace MapControl.Projections } } + /// + /// Elliptical North Polar Stereographic Projection - EPSG:32661. + /// public class UpsNorthProjection : PolarStereographicProjection { public const string DefaultCrsId = "EPSG:32661"; @@ -122,6 +125,9 @@ namespace MapControl.Projections } } + /// + /// Elliptical South Polar Stereographic Projection - EPSG:32761. + /// public class UpsSouthProjection : PolarStereographicProjection { public const string DefaultCrsId = "EPSG:32761";