lambert/
zone.rs

1
2/// `Zone` represents a Lambert projection zone.
3#[derive(Copy, Clone)]
4pub enum Zone {
5    LambertI,
6    LambertII,
7    LambertIII,
8    LambertIV,
9    LambertIIe,
10    Lambert93
11}
12
13pub fn n(zone:Zone) -> f32 {
14    match zone {
15        Zone::LambertI => 0.7604059656,
16        Zone::LambertII => 0.7289686274,
17        Zone::LambertIII => 0.6959127966,
18        Zone::LambertIV => 0.6712679322,
19        Zone::LambertIIe => 0.7289686274,
20        Zone::Lambert93 =>  0.7256077650,
21    }
22}
23
24pub fn c(zone:Zone) -> f32 {
25    match zone {
26        Zone::LambertI => 11603796.98,
27        Zone::LambertII => 11745793.39,
28        Zone::LambertIII => 11947992.52,
29        Zone::LambertIV => 12136281.99,
30        Zone::LambertIIe => 11745793.39,
31        Zone::Lambert93 =>  11754255.426,
32    }
33}
34
35pub fn xs(zone:Zone) -> f32 {
36    match zone {
37        Zone::LambertI => 600000.0,
38        Zone::LambertII => 600000.0,
39        Zone::LambertIII => 600000.0,
40        Zone::LambertIV => 234.358,
41        Zone::LambertIIe => 600000.0,
42        Zone::Lambert93 =>  700000.0,
43    }
44}
45
46pub fn ys(zone:Zone) -> f32 {
47    match zone {
48        Zone::LambertI => 5657616.674,
49        Zone::LambertII => 6199695.768,
50        Zone::LambertIII => 6791905.085,
51        Zone::LambertIV => 7239161.542,
52        Zone::LambertIIe => 8199695.768,
53        Zone::Lambert93 =>  12655612.050,
54    }
55}