常用地图投影变换算法源码.pdf
上传人:文库****品店 上传时间:2024-09-15 格式:PDF 页数:8 大小:193KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

常用地图投影变换算法源码.pdf

常用地图投影变换算法源码.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

10 金币

下载此文档

如果您无法下载资料,请参考说明:

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