[bknr-cvs] r2408 - in branches/bos/projects/bos: m2 web
ksprotte at common-lisp.net
ksprotte at common-lisp.net
Fri Jan 25 13:15:36 UTC 2008
Author: ksprotte
Date: Fri Jan 25 08:15:35 2008
New Revision: 2408
Modified:
branches/bos/projects/bos/m2/m2.lisp
branches/bos/projects/bos/m2/packages.lisp
branches/bos/projects/bos/web/kml-handlers.lisp
Log:
exporting contracts to GE now works with polygons + color
Modified: branches/bos/projects/bos/m2/m2.lisp
==============================================================================
--- branches/bos/projects/bos/m2/m2.lisp (original)
+++ branches/bos/projects/bos/m2/m2.lisp Fri Jan 25 08:15:35 2008
@@ -113,6 +113,13 @@
(let ((m2 (apply #'get-m2 p)))
(and m2 (eql contract (m2-contract m2))))))))
+(defun m2s-polygon-lon-lat (m2s)
+ (let ((polygon (m2s-polygon m2s)))
+ (mapcar (lambda (point)
+ (destructuring-bind (x y) point
+ (geo-utm:utm-x-y-to-lon-lat (+ +nw-utm-x+ x) (- +nw-utm-y+ y) +utm-zone+ t)))
+ polygon)))
+
;;;; SPONSOR
;;; Exportierte Funktionen:
Modified: branches/bos/projects/bos/m2/packages.lisp
==============================================================================
--- branches/bos/projects/bos/m2/packages.lisp (original)
+++ branches/bos/projects/bos/m2/packages.lisp Fri Jan 25 08:15:35 2008
@@ -91,6 +91,8 @@
#:m2-utm-y
#:m2-utm
#:m2-lon-lat
+ #:m2s-polygon
+ #:m2s-polygon-lon-lat
#:escape-nl
#:return-m2s
Modified: branches/bos/projects/bos/web/kml-handlers.lisp
==============================================================================
--- branches/bos/projects/bos/web/kml-handlers.lisp (original)
+++ branches/bos/projects/bos/web/kml-handlers.lisp Fri Jan 25 08:15:35 2008
@@ -10,9 +10,12 @@
(setf max-y (max (m2-utm-y m2) (or max-y (m2-utm-y m2)))))
(list min-x max-y max-x min-y)))
-(defun points2string (points)
+(defun kml-format-points (points)
(format nil "~:{~F,~F,0 ~}" points))
+(defun kml-format-color (color &optional (opacity 255))
+ (format nil "~2,'0X~{~2,'0X~}" opacity (reverse color)))
+
(defclass contract-kml-handler (object-handler)
())
@@ -20,20 +23,24 @@
(with-xml-response (:content-type "application/vnd.google-earth.kml+xml" :root-element "kml")
;; when name is xmlns, the attribute does not show up - why (?)
;; (attribute "xmlns" "http://earth.google.com/kml/2.2")
- (destructuring-bind (left top right bottom) (contract-utm-bounding-box contract)
+ (let ((polygon (m2s-polygon-lon-lat (contract-m2s contract))))
(with-element "Document"
(with-element "Placemark"
(with-element "name" (format nil "contract~a" (store-object-id contract)))
- (with-element "description" "a description")
- (with-element "Polygon"
+ (with-element "description" "a description")
+ (with-element "Style"
+ (attribute "id" "#region")
+ (with-element "LineStyle"
+ (with-element "color" (text "ffff3500")))
+ (with-element "PolyStyle"
+ (with-element "color" (text (kml-format-color (contract-color contract) 175)))))
+ (with-element "Polygon"
+ (with-element "styleUrl" "#region")
(with-element "tessellate" (text "1"))
(with-element "outerBoundaryIs"
(with-element "LinearRing"
(with-element "coordinates"
- (text (points2string (list (geo-utm:utm-x-y-to-lon-lat left bottom +utm-zone+ t)
- (geo-utm:utm-x-y-to-lon-lat right bottom +utm-zone+ t)
- (geo-utm:utm-x-y-to-lon-lat right top +utm-zone+ t)
- (geo-utm:utm-x-y-to-lon-lat left top +utm-zone+ t)))))))))))))
+ (text (kml-format-points polygon)))))))))))
(defmethod handle-object ((handle-object contract-kml-handler) (object null) req)
(error "Contract not found."))
More information about the Bknr-cvs
mailing list