diff -r 2ecda99293bd inst/referenceEllipsoid.m --- a/inst/referenceEllipsoid.m Wed Aug 05 22:53:19 2020 +0200 +++ b/inst/referenceEllipsoid.m Sun Aug 09 13:45:07 2020 +0000 @@ -1,4 +1,5 @@ ## Copyright (C) 2018-2020 Philip Nienhuis +## Copyright (C) 2014 Alfredo Foltran ## ## This program is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by @@ -21,15 +22,14 @@ ## @var{Name} can be the name (e.g., "wgs84") or (integer) EPSG code of a ## reference ellipoid. Case is not important. If the number or code 0 ## (zero) is specified, referenceEllipsoid echoes a list of implemented -## ellipsoids to the screen. The default ellipsoid is 'WGS84'. +## ellipsoids to the screen. ## -## @var{unit} can be the name of any unit accepted by function -## validateLengthUnit.m. Also here case is not important. The default is -## 'meters'. +## @var{unit} can be the name of any unit accepted by function +## validateLengthUnit.m. Also here case is not important. ## ## The output consists of a scalar struct with fields "Code" (EPSG code of the ## ellipsoid), "Name" (name of the ellipsoid), "LengthUnit", "SemimajorAxis", -## "SemiminorAxis", "InverseFlattening", "Eccentricity", "Flattening", +## "SemiminorAxis", "InverseFlattening", "Eccentricity", "Flattening", ## "ThirdFlattening", "MeanRadius", "SurfaceArea", and "Volume". ## ## Examples: @@ -58,7 +58,7 @@ ## ## @example ## >> E = referenceEllipsoid (7019) -## E = +## E = ## ## scalar structure containing the fields: ## @@ -107,29 +107,63 @@ ## List of implemented codes. To be updated if codes are added. persistent codes; if (isempty (codes)) - codes = {"7001", "Airy30", " "; ... - "7002", "Airy49", " "; ... - "7003", "Australia", " "; ... - "7004", "Bessel", " "; ... - "7008", "Clarke66", " "; ... - "7012", "Bessel 1880", " "; ... - "7015", "Everest 1830", " "; ... - "7019", "grs80", "1980"; ... - "7022", "int24", "1924"; ... - "7024", "Kras40", "Krasovsky"; ... - "7030", "Wgs84", "1984"; ... - "7043", "Wgs72", "1972"; ... - " ", "Sun", " "; ... - " ", "Mercury", " "; ... - " ", "Venus", " "; ... - " ", "Earth", " "; ... - " ", "Moon", " "; ... - " ", "Mars", " "; ... - " ", "Jupiter", " "; ... - " ", "Saturn", " "; ... - " ", "Uranus", " "; ... - " ", "Neptune", " "; ... - " ", "Pluto", " "}; + codes = {"7001", "Airy 1830", "Airy30"; ... + "7002", "Airy Modified 1849", "Airy49"; ... + "7003", "Australian National Spheroid", " "; ... + "7004", "Bessel 1841", "Bessel "; ... + "7005", "Bessel Modified", " "; ... + "7006", "Bessel Namibia", " "; ... + "7007", "Clarke 1858", " "; ... + "7008", "Clarke 1866", " "; ... + "7009", "Clarke 1866 Michigan", " "; ... + "7010", "Clarke 1880 (Benoit)", " "; ... + "7011", "Clarke 1880 (IGN)", " "; ... + "7012", "Clarke 1880 (RGS)", " "; ... + "7013", "Clarke 1880 (Arc)", " "; ... + "7014", "Clarke 1880 (SGA 1922)", " "; ... + "7015", "Everest 1830 (1937 Adjustment)", "Everest"; ... + "7016", "Everest 1830 (1967 Definition)", " "; ... + "7018", "Everest 1830 Modified", " "; ... + "7019", "grs80", "1980"; ... + "7020", "Helmert 1906", " "; ... + "7021", "Indonesian National Spheroid", " "; ... + "7022", "int24", "1924"; ... + "7024", "Kras40", "Krasovsky"; ... + "7025", "NWL 9D", " "; ... + "7027", "Plessis 1817", " "; ... + "7028", "Struve 1860", " "; ... + "7029", "War Office", " "; ... + "7030", "Wgs84", "1984"; ... + "7031", "GEM 10C", " "; ... + "7032", "OSU86F", " "; ... + "7033", "OSU91A", " "; ... + "7034", "Clarke 1880", " "; ... + "7035", "Sphere", " "; ... + "7036", "GRS 1967", " "; ... + "7041", "Average Terrestrial System 1977", " "; ... + "7042", "Everest (1830 Definition)", " "; ... + "7043", "Wgs72", "1972"; ... + "7044", "Everest 1830 (1962 Definition)", " "; ... + "7045", "Everest 1830 (1975 Definition)", " "; ... + "7046", "Bessel Namibia (GLM)", " "; ... + "7047", "GRS 1980 Authalic Sphere", " "; ... + "7048", "GRS 1980 Authalic Sphere", " "; ... + "7049", "Xian 1980", " "; ... + "7050", "GRS 1967 (SAD69)", " "; ... + "7051", "Danish 1876", " "; ... + "7052", "Clarke 1866 Authalic Sphere", " "; ... + "7053", "Hough 1960", " "; ... + " ", "Sun", " "; ... + " ", "Mercury", " "; ... + " ", "Venus", " "; ... + " ", "Earth", " "; ... + " ", "Moon", " "; ... + " ", "Mars", " "; ... + " ", "Jupiter", " "; ... + " ", "Saturn", " "; ... + " ", "Uranus", " "; ... + " ", "Neptune", " "; ... + " ", "Pluto", " "}; endif if (isnumeric (name) && isreal (name)) @@ -153,139 +187,343 @@ ## Planet values from Report of the IAU Working Group on ## CartographicCoordinates and Rotational Elements: 2015 - case lower (codes(1, :)) + case lower (codes (1, :)) Code = 7001; Name = "Airy 1830"; SemimajorAxis = 6377563.396; InverseFlattening = 299.3249646; - + case lower (codes (2, :)) Code = 7002; Name = "Airy Modified 1849"; SemimajorAxis = 6377340.189; InverseFlattening = 299.3249646; - + case lower (codes (3, :)) Code = 7003; - Name = "Australian National"; + Name = "Australian National Spheroid"; SemimajorAxis = 6378160; InverseFlattening = 298.25; - + case lower (codes (4, :)) Code = 7004; Name = "Bessel 1841"; SemimajorAxis = 6377397.155; InverseFlattening = 299.1528128; - + case lower (codes (5, :)) + Code = 7005; + Name = "Bessel Modified"; + SemimajorAxis = 6377492.018; + InverseFlattening = 299.1528128; + + case lower (codes (6, :)) + Code = 7006; + Name = "Bessel Namibia"; + SemimajorAxis = 6377483.865; + InverseFlattening = 299.1528128; + + case lower (codes (7, :)) + Code = 7007; + Name = "Clarke 1858"; + SemimajorAxis = 20926348; + InverseFlattening = 294.260676369; + + case lower (codes (8, :)) Code = 7008; Name = "Clarke 1866"; SemimajorAxis = 6378206.4; - InverseFlattening = 294.9786982; - - case lower (codes (6, :)) + InverseFlattening = 294.978698213898; + + case lower (codes (9, :)) + Code = 7009; + Name = "Clarke 1866 Michigan"; + SemimajorAxis = 20926631.531; + InverseFlattening = 294.978697164674; + + case lower (codes (10, :)) + Code = 7010; + Name = "Clarke 1880 (Benoit)"; + SemimajorAxis = 6378300.789; + InverseFlattening = 293.466315538981; + + case lower (codes (11, :)) + Code = 7011; + Name = "Clarke 1880 (IGN)"; + SemimajorAxis = 6378249.2; + InverseFlattening = 293.466021293627; + + case lower (codes (12, :)) Code = 7012; - Name = "Bessel 1880"; + Name = "Clarke 1880 (RGS)"; SemimajorAxis = 6378249.145; InverseFlattening = 293.465; - - case lower (codes (7, :)) + + case lower (codes (13, :)) + Code = 7013; + Name = "Clarke 1880 (Arc)"; + SemimajorAxis = 6378249.145; + InverseFlattening = 293.4663077; + + case lower (codes (14, :)) + Code = 7014; + Name = "Clarke 1880 (SGA 1922)"; + SemimajorAxis = 6378249.2; + InverseFlattening = 293.46598; + + case lower (codes (15, :)) Code = 7015; - Name = "Everest 1830"; + Name = "Everest 1830 (1937 Adjustment)"; SemimajorAxis = 6377276.34518; InverseFlattening = 300.8017; - - case lower (codes (8, :)) + + case lower (codes (16, :)) + Code = 7016; + Name = "Everest 1830 (1967 Definition)"; + SemimajorAxis = 6377298.556; + InverseFlattening = 300.8017; + + case lower (codes (17, :)) + Code = 7018; + Name = "Everest 1830 Modified"; + SemimajorAxis = 6377304.063; + InverseFlattening = 300.8017; + + case lower (codes (18, :)) Code = 7019; - Name = "Geodetic Reference System 1980"; + Name = "GRS 1980"; SemimajorAxis = 6378137; InverseFlattening = 298.257222101; - - case lower (codes (9, :)) + + case lower (codes (19, :)) + Code = 7020; + Name = "Helmert 1906"; + SemimajorAxis = 6378200; + InverseFlattening = 298.3; + + case lower (codes (20, :)) + Code = 7021; + Name = "Indonesian National Spheroid"; + SemimajorAxis = 6378160; + InverseFlattening = 298.247; + + case lower (codes (21, :)) Code = 7022; Name = "International 1924"; SemimajorAxis = 6378388; InverseFlattening = 297; - - case lower (codes (10, :)) + + case lower (codes (22, :)) Code = 7024; Name = "Krasovsky 1940"; SemimajorAxis = 6378245; InverseFlattening = 298.3; - - case lower (codes (11, :)) + + case lower (codes (23, :)) + Code = 7025; + Name = "NWL 9D"; + SemimajorAxis = 6378145; + InverseFlattening = 298.25; + + case lower (codes (24, :)) + Code = 7027; + Name = "Plessis 1817"; + SemimajorAxis = 6376523; + InverseFlattening = 308.64; + + case lower (codes (25, :)) + Code = 7028; + Name = "Struve 1860"; + SemimajorAxis = 6378298.3; + InverseFlattening = 294.73; + + case lower (codes (26, :)) + Code = 7029; + Name = "War Office"; + SemimajorAxis = 6378300; + InverseFlattening = 296; + + case lower (codes (27, :)) Code = 7030; Name = "World Geodetic System 1984"; SemimajorAxis = 6378137; - InverseFlattening = 298.2572235630; - - case lower (codes (12, :)) + InverseFlattening = 298.257223563; + + case lower (codes (28, :)) + Code = 7031; + Name = "GEM 10C"; + SemimajorAxis = 6378137; + InverseFlattening = 298.257223563; + + case lower (codes (29, :)) + Code = 7032; + Name = "OSU86F"; + SemimajorAxis = 6378136.2; + InverseFlattening = 298.257223563; + + case lower (codes (30, :)) + Code = 7033; + Name = "OSU91A"; + SemimajorAxis = 6378136.3; + InverseFlattening = 298.257223563; + + case lower (codes (31, :)) + Code = 7034; + Name = "Clarke 1880"; + SemimajorAxis = 20926202; + InverseFlattening = 293.465; + + case lower (codes (32, :)) + Code = 7035; + Name = "Sphere"; + SemimajorAxis = 6371000; + InverseFlattening = Inf; + + case lower (codes (33, :)) + Code = 7036; + Name = "GRS 1967"; + SemimajorAxis = 6378160; + InverseFlattening = 298.247167427; + + case lower (codes (34, :)) + Code = 7041; + Name = "Average Terrestrial System 1977"; + SemimajorAxis = 6378135; + InverseFlattening = 298.257; + + case lower (codes (35, :)) + Code = 7042; + Name = "Everest (1830 Definition)"; + SemimajorAxis = 20922931.8; + InverseFlattening = 300.8017; + + case lower (codes (36, :)) Code = 7043; Name = "World Geodetic System 1972"; SemimajorAxis = 6378135; InverseFlattening = 298.26; + + case lower (codes (37, :)) + Code = 7044; + Name = "Everest 1830 (1962 Definition)"; + SemimajorAxis = 6377301.243; + InverseFlattening = 300.8017255; + + case lower (codes (38, :)) + Code = 7045; + Name = "Everest 1830 (1975 Definition)"; + SemimajorAxis = 6377299.151; + InverseFlattening = 300.8017255; + + case lower (codes (39, :)) + Code = 7046; + Name = "Bessel Namibia (GLM)"; + SemimajorAxis = 6377397.155; + InverseFlattening = 299.1528128; + + case lower (codes (40, :)) + Code = 7047; + Name = "GRS 1980 Authalic Sphere"; + SemimajorAxis = 6370997; + InverseFlattening = Inf; + + case lower (codes (41, :)) + Code = 7048; + Name = "GRS 1980 Authalic Sphere"; + SemimajorAxis = 6371007; + InverseFlattening = Inf; + + case lower (codes (42, :)) + Code = 7049; + Name = "Xian 1980"; + SemimajorAxis = 6378140; + InverseFlattening = 298.257; + + case lower (codes (43, :)) + Code = 7050; + Name = "GRS 1967 (SAD69)"; + SemimajorAxis = 6378160; + InverseFlattening = 298.25; + + case lower (codes (44, :)) + Code = 7051; + Name = "Danish 1876"; + SemimajorAxis = 6377019.27; + InverseFlattening = 300; + + case lower (codes (45, :)) + Code = 7052; + Name = "Clarke 1866 Authalic Sphere"; + SemimajorAxis = 6370997; + InverseFlattening = Inf; + + case lower (codes (46, :)) + Code = 7053; + Name = "Hough 1960"; + SemimajorAxis = 6378270; + InverseFlattening = 297; - case lower (codes (13, :)) + case lower (codes (47, :)) Code = " "; Name = "Sun"; SemimajorAxis = 695700000; InverseFlattening = 111111; - case lower (codes (14, :)) + case lower (codes (48, :)) Code = " "; Name = "Mercury"; SemimajorAxis = 2440530; InverseFlattening = 1075; - case lower (codes (15, :)) + case lower (codes (49, :)) Code = " "; Name = "Venus"; SemimajorAxis = 6051800; InverseFlattening = Inf; - case lower (codes (16, :)) + case lower (codes (50, :)) Code = " "; Name = "Earth"; SemimajorAxis = 6378137; InverseFlattening = 298.2572235630; - case lower (codes (17, :)) + case lower (codes (51, :)) Code = " "; Name = "Moon"; SemimajorAxis = 1738100; InverseFlattening = 833.33; - case lower (codes (18, :)) + case lower (codes (52, :)) Code = " "; Name = "Mars"; SemimajorAxis = 3396190; InverseFlattening = 169.894; - case lower (codes (19, :)) + case lower (codes (52, :)) Code = " "; Name = "Jupiter"; SemimajorAxis = 71492000; InverseFlattening = 15.4144; - case lower (codes (20, :)) + case lower (codes (54, :)) Code = " "; Name = "Saturn"; SemimajorAxis = 60268000; InverseFlattening = 10.208; - case lower (codes (21, :)) + case lower (codes (55, :)) Code = " "; Name = "Uranus"; SemimajorAxis = 25559000; InverseFlattening = 43.616; - case lower (codes (22, :)) + case lower (codes (56, :)) Code = " "; Name = "Neptune"; SemimajorAxis = 24764000; InverseFlattening = 58.5437; - case lower (codes (23, :)) + case lower (codes (57, :)) Code = " "; Name = "Pluto"; SemimajorAxis = 1188300;