Changeset 2499

Show
Ignore:
Timestamp:
02/15/08 12:51:09 (1 year ago)
Author:
ksprotte
Message:

manually merged over some chs from bos branch

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/trunk-reorg/projects/bos/m2/geometry.lisp

    r2414 r2499  
    215215      (nreverse polygon)))) 
    216216 
     217 
     218;;; formatting 
     219;; proposed by Michael Weber on alexandria-devel 
     220(defun format-mixed-radix-number (stream number radix-list format-list 
     221                                  &key lsb-first leading-zeros 
     222                                  (trailing-zeros t)) 
     223  "Prints NUMBER to STREAM in mixed-radix RADIX. 
     224representation-LIST is a list of radixes, least-significant first. 
     225FORMAT-LIST is a list of format directives, one for each digit. 
     226When LSB-FIRST is nil (default), print most-significant digit first, 
     227otherwise least-significant digit first. 
     228When LEADING-ZEROS and TRAILING-ZEROS are nil, leading and 
     229trailing zero digits are not printed, respectively. \(default: remove 
     230leading zeros, keep trailing zeros)" 
     231  (let ((format-pairs 
     232         (loop with digit and fraction 
     233            initially (setf (values number fraction) 
     234                            (truncate number)) 
     235            for f-list on format-list 
     236            and r-list = radix-list then (rest r-list) 
     237            collect (list (first f-list) 
     238                          (cond ((endp r-list) 
     239                                 (shiftf number 0)) 
     240                                ((rest f-list) 
     241                                 (setf (values number digit) 
     242                                       (truncate number (first r-list))) 
     243                                 digit) 
     244                                (t number))) 
     245            into list 
     246            finally (progn 
     247                      (incf (cadar list) fraction) 
     248                      (return (nreverse list)))))) 
     249    (unless trailing-zeros 
     250      (setf format-pairs (member-if #'plusp format-pairs :key 
     251                                    #'second))) 
     252    (when lsb-first 
     253      (setf format-pairs (nreverse format-pairs))) 
     254    (unless leading-zeros 
     255      (setf format-pairs (member-if #'plusp format-pairs :key 
     256                                    #'second))) 
     257    (format stream "~{~{~@?~}~}" format-pairs))) 
     258 
     259 
     260(defun format-decimal-degree (degree) 
     261  (format-mixed-radix-number nil (* 60 60 degree) '(60 60 360) '(" ~,2FÂŽÂŽ" " ~DÂŽ" "~D°"))) 
     262 
     263(defun format-lon-lat (stream lon lat) 
     264  (format stream "~A ~:[S~;N~], ~A ~:[W~;E~]" 
     265          (format-decimal-degree (abs lat)) 
     266          (plusp lat) 
     267          (format-decimal-degree (abs lon)) 
     268          (plusp lon))) 
     269 
  • branches/trunk-reorg/projects/bos/m2/make-certificate.lisp

    r2055 r2499  
    4343                   :master-code (sponsor-master-code sponsor) 
    4444                   :sqm-count (length (contract-m2s contract)) 
    45                    :sqm-ids (with-output-to-string (s) 
    46                               (loop for group in (group-by (mapcar #'m2-num-string (contract-m2s contract)) *num-coords-per-line*) 
    47                                     do (loop for nums on group 
    48                                              do (princ (car nums) s) 
    49                                              do (princ (if (cdr nums) #\Tab #\Newline) s))))))) 
     45                   ;; :sqm-ids (with-output-to-string (s) 
     46                   ;;                         (loop for group in (group-by (mapcar #'m2-num-string (contract-m2s contract)) *num-coords-per-line*) 
     47                   ;;                            do (loop for nums on group 
     48                   ;;                                  do (princ (car nums) s) 
     49                   ;;                                  do (princ (if (cdr nums) #\Tab #\Newline) s)))) 
     50                   ;; should later be called :sqm-coordinates 
     51                   :sqm-ids 
     52                   (flet ((format-point (stream x y) 
     53                            (apply #'geometry:format-lon-lat stream 
     54                                   (geo-utm:utm-x-y-to-lon-lat (+ +nw-utm-x+ x) 
     55                                                               (- +nw-utm-y+ y) +utm-zone+ t)))) 
     56                     (destructuring-bind (left top width height) 
     57                         (contract-bounding-box contract) 
     58                       (with-output-to-string (out) 
     59                         (format-point out left top) (terpri out)                         
     60                         (format-point out (+ left width) (+ top height)) (terpri out))))))) 
  • branches/trunk-reorg/projects/bos/m2/packages.lisp

    r2479 r2499  
    1010           #:point-in-circle-p 
    1111           #:find-boundary-point 
    12            #:region-to-polygon)) 
     12           #:region-to-polygon 
     13           #:format-lon-lat)) 
    1314 
    1415(defpackage :geo-utm 
  • branches/trunk-reorg/projects/bos/web/tags.lisp

    r2484 r2499  
    168168    (setf (get-template-var :infotext) (sponsor-info-text sponsor)) 
    169169    (setf (get-template-var :name) (user-full-name sponsor)) 
    170     (setf (get-template-var :sqm-x) (format nil "~,3f" (m2-utm-x (first (contract-m2s contract))))) 
    171     (setf (get-template-var :sqm-y) (format nil "~,3f" (m2-utm-y (first (contract-m2s contract))))) 
     170    (setf (get-template-var :sqm-x) (format nil "~,3f" (m2-utm-x (first (contract-m2s contract)))))  
     171    (setf (get-template-var :sqm-y) (format nil "~,3f" (m2-utm-y (first (contract-m2s contract)))))  
     172    (setf (get-template-var :geo-coord) (destructuring-bind (left top . ignore) 
     173                                            (contract-bounding-box contract) 
     174                                          (declare (ignore ignore)) 
     175                                          (apply #'geometry:format-lon-lat nil 
     176                                                 (geo-utm:utm-x-y-to-lon-lat (+ +nw-utm-x+ left) 
     177                                                                             (- +nw-utm-y+ top) +utm-zone+ t)))) 
    172178    (setf (get-template-var :numsqm) 
    173179          (format nil "~D"