高斯投影正反算C语言程序代码,高斯投影正反算c代码

《高斯投影正反算c代码》由会员分享,可在线阅读,更多相关《高斯投影正反算c代码(11页珍藏版)》请在人人文库网上搜索。

1、高斯投影正反算程序设计一程序设计流程本程序的设计思路如下:(1),程序采用VS08版本作为开发平台,并采用C#语言作为开发语言,设计为WindowsForm 窗体程序形式。( 2),程序主要的算法来自于教材。但是本程序为了更加实用,添加了更多的解算基准,包括:WGS-84国际椭球1975,克氏椭球,和 2000国家大地坐标系。( 3),程序为了更方便的读取数据和输出数据, 故需要自己定义了固定的数据输入格式和 数据输出格式或形式,请老师注意查看。二代码using System;using System.Collections.Generic;using System.ComponentMode。

2、l;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Gausspublic partial class Form1 : Form/ 大地坐标/Geodetic Coordinatepublic struct CRDGEODETICpublic double dLongitude;public double dLatitude;public double dHeight;/ 笛卡尔坐标/Cartesian Coordinatepublic struct CR。

3、DCARTESIANpublic double x;public double y;public double z;public Form1()InitializeComponent();private void button1_Click(object sender, EventArgs e) double ee = 0;double a = 0;string tt;trytt = this.comboBox1.Itemsthis.comboBox1.SelectedIndex.ToString();catchMessageBox.Show(Gauss Inverse: Choose dat。

4、um error!);return;a = 6378245.00;ee = Math.Sqrt(0.006693421622);if (tt.CompareTo(WGS-84) = 0)a = 6378137.00;ee = Math.Sqrt(0.00669437999013);if (tt.CompareTo(1975 国际椭球 ) = 0)a = 6378140.00;ee = Math.Sqrt(0.006694384999588);if (tt.CompareTo(2000 国家大地坐标系 ) = 0) a = 6378137.0;ee =Math.Sqrt(0.0066943802。

5、290);const double pai = 3.1415926;double b = Math.Sqrt(a * a * (1 - ee * ee);double c = a * a / b;double epp = Math.Sqrt(a * a - b * b) / b / b);CRDGEODETIC pcrdGeo;CRDCARTESIAN pcrdCar; double midlong;/ 求纬度 string temp;temp = textBox1.Text.Split( );double tempradius = new double3;for (int i = 0; i 。

6、1E-10)B = Bf;double sb = Math.Sin(B);double cb = Math.Cos(B);double s2b = sb * cb * 2;double s4b = s2b * (1 - 2 * sb * sb) * 2;double s6b = s2b * Math.Sqrt(1 - s4b * s4b) + s4b * Math.Sqrt(1 - s2b* s2b);Bf = (pcrdCar.x - (-a2 / 2.0 * s2b + a4 / 4.0 * s4b - a6 / 6.0 * s6b)/ a0;double itaf, tf, Vf, Nf。

7、;itaf = epp * Math.Cos(Bf);tf = Math.Tan(Bf);Vf = Math.Sqrt(1 + epp * epp * Math.Cos(Bf) * Math.Cos(Bf);Nf = c / Vf;double ynf = pcrdCar.y / Nf;pcrdGeo.dLatitude = Bf - 1.0 / 2.0 * Vf * Vf *tf * (ynf* ynf - 1.0 / 12.0* Math.Pow(ynf, 4) * (5 + 3 * tf * tf + itaf * itaf - 9 * Math.Pow(itaf * tf, 2) +1。

8、.0 / 360.0 * (61 + 90 * tf * tf + 45 * Math.Pow(tf, 4) * Math.Pow(ynf, 6);pcrdGeo.dLongitude = (ynf / Math.Cos(Bf) - (1 + 2 * tf * tf + itaf * itaf)* Math.Pow(ynf, 3) / 6.0 / Math.Cos(Bf) +(5 + 28 * tf * tf + 24 * Math.Pow(tf, 4) + 6 * itaf * itaf + 8 * Math.Pow(itaf * tf, 2) * Math.Pow(ynf, 5) / 12。

9、0.0 / Math.Cos(Bf);pcrdGeo.dLongitude = pcrdGeo.dLongitude + midlong;/pcrdGeo.dLatitude = pcrdGeo.dLatitude;richTextBox2.Text = Results:nLatitude: + Convert.ToString(pcrdGeo.dLatitude) + nLongtitude: +Convert.ToString(pcrdGeo.dLongitude);private void label13_Click(object sender, EventArgs e)三.程序运行结果分析通过选取书上的具体实例进行测试,本程序的精度大体满足要求,一般正算的精度在0.01米和0.001米之间,反算的精度在0.0001秒左右。以下是程序运行的截图。

你可能感兴趣的:(高斯投影正反算C语言程序代码)