如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Collections;namespace算法演示{classchangeProjectionClass{constdoubleH=Math.PI;constInt32maxsize=1024;constInt32nn=100;publicInt32rnum;//记录二维数组中行数,以便确定二维数组中的有效数字publicInt32rnumjwx,rnumjwy;privateGraphicscmyGraphics;privatePenpen;publicStreamReaderstrd;publicdouble[,]zbL=newdouble[600,maxsize];publicdouble[,]zbB=newdouble[600,maxsize];publicdouble[,]Lamzbx=newdouble[600,maxsize];publicdouble[,]Lamzby=newdouble[600,maxsize];publicdouble[,]Merzbx=newdouble[600,maxsize];publicdouble[,]Merzby=newdouble[600,maxsize];publicdouble[]jwx=newdouble[maxsize];publicdouble[]jwy=newdouble[maxsize];publicdouble[,]jwsanx=newdouble[40,40];publicdouble[,]jwsany=newdouble[40,40];publicvoidgivenjw(){inti;inta=0,b=73;rnumjwx=0;rnumjwy=0;for(i=0;;i+=2){if(a>57){if(b>136)break;//经线jwx[i]=b;jwy[i]=0;jwx[i+1]=b;jwy[i+1]=57;b+=3;rnumjwy++;}else{jwx[i]=73;//纬线jwy[i]=a;jwx[i+1]=136;jwy[i+1]=a;rnumjwx++;}a+=3;//MessageBox.Show(jw.x[i].ToString());}}publicvoidjwto()//经纬网的二维坐标转换,用于墨卡托和兰伯特投影变换中{inti,j;inta=38,b=0;for(i=0;i<rnumjwx;i++){for(j=0;j<rnumjwy;j++){jwsanx[i,j]=jwx[a]+b;jwsany[i,j]=jwy[a]+3;b+=3;}a-=2;b=0;}}publicvoidLBtoMercatorxy(GraphicsmyGraphics,Int32rnum,Int32type){doubleB0=0,L0=105;doublea=6378245;doubleb=6356863.01877;doubleK,Nb0;inti;longj=0;B0=(B0/180)*H;doublee,E;e=Math.Sqrt(0.006693421622966);//第一偏心率E=Math.Sqrt(0.006738525414684);//第二偏心率Nb0=(a*a/b)/Math.Sqrt(1+E*E*Math.Cos(B0)*Math.Cos(B0));K=Nb0*Math.Cos(B0);for(i=0;i<rnum;i++)//所要绘制的地区的投影变换{do{Merzbx[i,j]=K*Math.Log(Math.Tan(H/4+(zbB[i,j]/360)*H)*Math.Sqrt(Math.Pow((1-e*Math.Sin((zbB[i,j]/180)*H))/(1+e*Math.Sin((zbB[i,j]/180)*H)),e)));Merzby[i,j]=K*((zbL[i,j]/180)*H-(L0/180)*H);j++;}while(zbL[i,j]!=0);j=0;}for(i=0;i<rnumjwx;i++)//坐标网的投影变换{wh