苏维克,
我不确定我在跟踪你。
是否只是在dms中格式化lat long,
或者需要将x-y转换为lat和long?
这里的格式设置非常快,请检查:
; angtodms by ymg ;; Given an angle in radian and number of decimal after the seconds ;; Returns a string formatted in Degree Minutes and Seconds, ;; with proper symblol for degree and leading 0 on the minutes and seconds ;; 0°00'00.0" 271°05'06.3" etc. ;(defun angtodms (a prec /) (setq a (angtos a 1 (+ prec 4))) (while (< (vl-string-position (ascii "d") a) 3) (setq a (strcat " " a)) ) (if (< (vl-string-position (ascii "'") a) 6) (setq a (strcat (substr a 1 4) "0" (substr a 5))) ) (if (< (vl-string-position (ascii """) a) (+ 9 (if (= 0 prec) 0 (1+ prec)))) (setq a (strcat (substr a 1 7) "0" (substr a )) ) (vl-string-subst "°" "d" a) )(defun dtr (a) (* pi (/ a 180.0)));; lltodms ;;; ;;; Arguments: ll, A list (lat lon) in decimal degree ;;; prec, Number of decimals on the second ;;; Returns: A string "S 24°34'08.2042" - E 52°22'11.5320"" ;;; ;;; Example: (lltodms '(-24.5689456 52.36987) 4) ;;; Needs subroutine angtodms and dtr ;(defun lltodms (ll prec /) (setq lat (angtodms (abs (dtr (car ll))) prec) lon (angtodms (abs (dtr (cadr ll))) prec) ) (if (minusp (car ll)) (setq lat (strcat "S" lat)) (setq lat (strcat "N" lat)) ) (if (minusp (car ll)) (setq lon (strcat "W" lon)) (setq lon (strcat "E" lon)) ) (strcat lat " - " lon))
ymg公司