经纬度 BL 换算到高斯平面直角坐标 XY (高斯投影正算)的源码及算法在 gis 的帖子"用 excel 完成 gps 坐标转换的简易方法"基础上, 我给出对应的 vb 程序段,我在 evb 开发的 gps 定位功能中,用它实现坐标换算(具体的参数请参考 gis 的帖子)。感觉速度比较快,效果比较好。所以帖上来,希望与名位交流: ===================================== '经纬度 bl换算到高斯平面直角坐标 xy (高斯投影正算) private function bl2xy(byref a2 as double, byref f2as double, byref e 2as double, _ byref s2 as double, byref t2as double) as boolean 'a2 输入中央子午线,,如 115 度 30 分则输入 ; 起算数据 l0 'f2 以度小数形式输入经度值,l 'e2 以度小数形式输入纬度值, b 's2 计算结果,横坐标 y 't2 计算结果,纵坐标 x '投影带号计算 n=[l/6]+1 如:测得经度 ,故 n=[]+1=17+1=18 '中央经线经度 l0= n*6-3 = [l/6]*6+3 dim b2 as double 'dim g2 as double dim h2 as double dim i2as double dim j2as double dim k2 as double dim l2as double dim m2 as double dim n2 as double dim o2 as double dim p2 as double dim q2 as double dim r2as double b2 = int(a2) + (int(a2 * 100) - int(a2) * 100) / 60 + (a2 * 10000 - int(a2 * 100) * 100) / 3600 '把 l0化成度(a2) 'g2 = f2- b2 'l -l0 'h2 = g2 / '化作弧度 h2 = (f2 - b2) / '将经差的单位化为弧度 i2= tan(e2 / ) 'tan (b) j2= cos(e2 / ) ' cos (b) k2 = * j2* j2 l2= i2* i2 m2 =1+ k2 n2 = / sqr(m2) o2 = h2 * h2 * j2* j2 p2 = i2* j2 q2 = p2 * p2 r2= ( + q2 * ( + q2 * )) s2 = ((((l2 - 18) * l2- (58 * l2- 14) * k2 + 5)* o2 / 20 + m2 - l2) * o2 /6+ 1)* n2 * (h2 * j2) s2 = s2 + 18500000 '在计算的基础上加上了“带号”( 18 )和“东移”( 500km ) '计算结果,横坐标 y t2= * e2 / - p2 * j2* r2+ ((((l2 - 58) * l2+ 61) *_ o2 / 30 + (4* k2 + 5)* m2 - l2) * o2 / 12 + 1)* n2 * i2* o2 /2 '计算结果,纵坐标 x 'msgbox "pts2= "& s2 &" pt t2= "& t2 bl2xy = true end function ? brightyang ??等级: 发表于: 2007-07-19 13:37:292 楼得分: 100 // : Defines the entry point for the console application. // #include " " #include " " #include " " #include <iostream> using namespace std; void main(int argc, char* argv[]) { double MyL0 = 108; //中央子午线 double MyB = ; //33 du 44 fen 6 miao do
经纬度BL换算到高斯平面直角坐标XY12-word资料(精) 来自淘豆网m.daumloan.com转载请标明出处.