高斯克吕格投影分带计算C#
高斯克吕格投影分带计算
三度带和六度带
1.高斯投影6度带:自0子午线起每隔经差6自西向东分带,0-6°为第一带,6°到12°为第二带,依次编号1,2,3,…。我国6度带中央子午线的经度,由69°起每隔6°而至135°,共计12带(12~23带),带号用N表示,中央子午线的经度用L0表示,它们的关系是:L0=6N-3。
2.高斯投影3度带:它的中央子午线一部分同6度带中央子午线重合,一部分同6度带的分界子午线重合,如用n表示3度带的带号,表示带中央子午线经度,它们的关系图所示。我国带共计22带(24~45带)。
已知带号,求中央子午线经度
1.六度带
λ=6°N-3°
2.三度带
λ=3°N
(上述公式中, λ为中央子午线的经度,N为带号)
已知经度,求带号和中央子午线经度
先求带号,推算出带号之后,再根据前面提到的公式,求出中央子午线经度
1.六度带
N=[(经度+6°)/6°]
λ=6°N-3°
2.三度带
N=[(经度+1.5°)/3]
λ=3°N
(上述公式中[ ]代表[ ]中的数值向下取整,例如[9.3]=9)
算例
已知经度为108°54′E,分别求出三度带和六度带下的带号和中央子午线经度
N=[(108°54′+6°)/6°]=19 (六度带)
λ=6°19-3°=111°
N=[(108°54′+1.5°)/3]=36(三度带)
λ=3°36=108°
C#代码实现
界面设计
做的很简单,只用了label,button和textbox
C#代码
public double DMStoDEG(double degrees){double d = Math.Truncate(degrees);double m = Math.Truncate((degrees - d) * 100);double s = ((degrees - d) * 100 - m) * 100;double radians = d + m / 60 + s / 3600;return radians;}private void button1_Click(object sender, EventArgs e){double a = double.Parse(textBox5.Text);double b = DMStoDEG(a);double N6 = Math.Floor((b + 6) / 6);double N3 = Math.Floor((b + 1.5) / 3);double r6 = 6 * N6 - 3;double r3 = 3 * N3;textBox1.Text = N6.ToString();textBox2.Text = N3.ToString();textBox3.Text = r6.ToString();textBox4.Text = r3.ToString();}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!