[求助]高斯正算朋友写的,总算不对,帮忙看下
<p>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sub function;;;;;;;;;;;;;;;;;;;<br/>;;;;;;;;;expain:<br/> ;;;;;;;; 本函数用于根据大地坐标使用高斯投影正算法计算国家平面坐标<br/> ;;;;;;;; 型参:<br/> ;;;;;;;; L ,大地经度坐标值<br/> ;;;;;;;; B ,大地纬度坐标值<br/> ;;;;;;;; FN_flags, 三度带分幅 还是 六度带分幅标志<br/> ;;;;;;;; 函数返回值:<br/> ;;;;;;;; 一个包含平面坐标 X,Y 的表!<br/> ;;;;******************************************************************</p><p>(defun tkzs_gszs (LB FN_flags <br/> / cos_dbl_B a0<br/> a4 a6 a3<br/> a5 p xl<br/> N X Y<br/> X_Y L B<br/> L_D B_D <br/> )<br/> <br/> ;;;;;;; the first step: translate 度为弧度;;;;;;;;;;;;;;;;;;;;<br/> <br/> (setq L (* (car LB)<br/> (/ PI 180)<br/> )<br/> )<br/> (setq B (* (cadr LB)<br/> (/ PI 180)<br/> )<br/> )<br/> (setq L_D (car LB))<br/> (setq B_D (cadr LB))<br/> (setq cos_dbl_B (* (cos B) <br/> (cos B)<br/> )<br/> )<br/> (setq a0 (- 32140.404 (* cos_dbl_B<br/> (- 135.3302 (* cos_dbl_B<br/> (- 0.7092 (* 0.0040 cos_dbl_B))<br/> )<br/> )<br/> )<br/> )<br/> )<br/> <br/> ;;;;;;;;<br/> <br/> (setq a4 (- (* cos_dbl_B<br/> (+ 0.25 (* 0.00252 cos_dbl_B))<br/> )<br/> 0.04166<br/> )<br/> );;end setq<br/> ;;;;;;;;;<br/> (setq a6 (* cos_dbl_B <br/> (- (* 0.166 cos_dbl_B)<br/> 0.084<br/> )<br/> )<br/> );;end setq<br/> ;;;;;;;;;<br/> (setq a3 (- (* cos_dbl_B<br/> (+ 0.3333333 (* 0.001123 cos_dbl_B))<br/> )<br/> 0.1666667<br/> )<br/> );;;;end setq<br/> ;;;;;;;;;<br/> (setq a5 (- 0.0083<br/> (* cos_dbl_B<br/> (- 0.1667<br/> (* cos_dbl_B<br/> (+ 0.1968 <br/> (* 0.0040 cos_dbl_B)<br/> )<br/> )<br/> )<br/> )<br/> )<br/> )<br/> ;;;end setq<br/> ;;;;;;;;;;<br/> (if (= FN_flags "0")<br/> (progn ;;;;;;;;;假如为 6 度带<br/> (setq fixed_L (fix L_D))</p><p> (setq L0 (- (* (1+ (fix (/ fixed_L 6)))<br/> 6<br/> ) <br/> 3<br/> )<br/> );;end setq<br/> )<br/> (progn<br/> (setq fixed_L (fix L_D))<br/> (setq L0 (* (1+ (fix (/ fixed_L 3)))<br/> 3.0<br/> )<br/> );;end setq<br/> (setq L0 (* (atoi(rtos (/ L_D 3.0) 2 0))<br/> 3<br/> )<br/> );;end setq<br/> )<br/> );;end if<br/> (setq p (* (/ 180 PI) 3600.0))<br/> <br/> (setq xl (/ (* (- L_D L0) 3600.0) p))<br/> (setq N (* 0.004 cos_dbl_B cos_dbl_B cos_dbl_B cos_dbl_B))<br/> (setq N (+ N (* 108.973 cos_dbl_B cos_dbl_B)))<br/> (setq N (+ 6399698.902 N))<br/> (setq N (- N (* 21562.267 cos_dbl_B) (* 0.612 cos_dbl_B cos_dbl_B cos_dbl_B)))<br/> ;;;;;;;;;<br/> (setq X (- (/ (* 6367558.4969 (* B_D 3600.0)) p)<br/> (* (sin B)<br/> (cos B) <br/> (- a0 (* xl xl N (+ 0.5<br/> (* (+ a4 (* xl xl a6)) xl xl)<br/> )<br/> )<br/> )<br/> )<br/> )<br/> );;end setq <br/> (setq Y (+ 500000<br/> (* xl<br/> N <br/> (cos B) <br/> (+ 1<br/> (* xl xl (+ a3 (* a5 xl xl)))<br/> )<br/> )<br/> )<br/> )<br/> ;;;;;;;将函数返回值列表;;;;;;;;;;;;;<br/> ;(setq x_y (list Y (- X 3000000)))<br/> (setq x_y (list Y X))<br/>);;end def<br/></p> 是测绘源码,顶起.
页:
[1]