如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
高斯投影正反算程序设计一.程序设计流程本程序的设计思路如下:(1),程序采用VS08版本作为开发平台,并采用C#语言作为开发语言,设计为WindowsForm窗体程序形式。(2),程序主要的算法来自于教材。但是本程序为了更加实用,添加了更多的解算基准,包括:WGS-84,国际椭球1975,克氏椭球,和2000国家大地坐标系。(3),程序为了更方便的读取数据和输出数据,故需要自己定义了固定的数据输入格式和数据输出格式或形式,请老师注意查看。二.代码usingSystem;usingSystusingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;namespaceGauss{publicpartialclassForm1:Form{//大地坐标//GeodeticCoordinatepublicstructCRDGEODETIC{publicdoubledLongitude;publicdoubledLatitude;publicdoubledHeight;}//笛卡尔坐标//CartesianCoordinatepublicstructCRDCARTESIAN1/9{publicdoublex;publicdoubley;publicdoublez;}publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){doubleee=0;doublea=0;stringtt;try{}catch{MessageBox.Show("GaussInverse:Choosedatumerror!");return;}if(tt.CompareTo("克氏椭球")==0){a=6378245.00;}if(tt.CompareTo("WGS-84")==0){a=6378137.00;}if(tt.CompareTo("1975国际椭球")==0){a=6378140.00;ee=}if(tt.CompareTo("2000国家大地坐标系")==0)2/9{a=6378137.0;}constdoublepai=3.1415926;doubleb=Math.Sqrt(a*a*(1-ee*ee));doublec=a*a/b;doubleepp=Math.Sqrt((a*a-b*b)/b/b);CRDGEODETICpcrdGeo;CRDCARTESIANpcrdCar;doublemidlong;//求纬度string[]temp;double[]tempradius=newdouble[3];for(inti=0;i<3;i++){tempradius[i]=Convert.ToDouble(temp[i]);}pcrdGeo.dLatitude=tempradius[0]/180.0*pai+tempradius[1]/180.0/60.0*pai+tempradius[2]/180/60.0/60*pai;//求经度for(inti=0;i<3;i++){tempradius[i]=Convert.ToDouble(temp[i]);}pcrdGeo.dLongitude=tempradius[0]/180.0*pai+tempradius[1]/180.0/60.0*pai+tempradius[2]/180/60.0/60*pai;intdeglon=Convert.ToInt32(pcrdGeo.dLongitude*180/pai);//求中央经度intnum;//带号midlong=0;//默认值,需要制定分带try{}catch3/9{MessageBox.Show("Choose3/6error!");return;}if(tt.CompareTo("3度带")==0){num=Convert.ToInt32(deglon/6+1);midlong=(6*num-3)/180.0*pai;}if(tt.CompareTo("6度带")==0){num=Convert.ToInt32((deglon+1.5)/3);midlong=num*3*pai/180;}doublelp=pcrdGeo.dLongitude-midlong;doubleN=c/