Map attribution WIP.
This commit is contained in:
parent
d75e557ded
commit
41d00d5707
38
package-lock.json
generated
38
package-lock.json
generated
@ -278,6 +278,16 @@
|
|||||||
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
|
"integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"canvas": {
|
||||||
|
"version": "2.6.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/canvas/-/canvas-2.6.1.tgz",
|
||||||
|
"integrity": "sha512-S98rKsPcuhfTcYbtF53UIJhcbgIAK533d1kJKMwsMwAIFgfd58MOyxRud3kktlzWiEkFliaJtvyZCBtud/XVEA==",
|
||||||
|
"requires": {
|
||||||
|
"nan": "^2.14.0",
|
||||||
|
"node-pre-gyp": "^0.11.0",
|
||||||
|
"simple-get": "^3.0.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
"caseless": {
|
"caseless": {
|
||||||
"version": "0.12.0",
|
"version": "0.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||||
@ -476,6 +486,14 @@
|
|||||||
"ms": "^2.1.1"
|
"ms": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"decompress-response": {
|
||||||
|
"version": "4.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz",
|
||||||
|
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
|
||||||
|
"requires": {
|
||||||
|
"mimic-response": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"deep-extend": {
|
"deep-extend": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
|
||||||
@ -1026,6 +1044,11 @@
|
|||||||
"mime-db": "1.42.0"
|
"mime-db": "1.42.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"mimic-response": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
|
||||||
|
},
|
||||||
"minimalistic-assert": {
|
"minimalistic-assert": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
|
||||||
@ -1588,6 +1611,21 @@
|
|||||||
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
|
||||||
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
|
||||||
},
|
},
|
||||||
|
"simple-concat": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
|
||||||
|
},
|
||||||
|
"simple-get": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==",
|
||||||
|
"requires": {
|
||||||
|
"decompress-response": "^4.2.0",
|
||||||
|
"once": "^1.3.1",
|
||||||
|
"simple-concat": "^1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"simple-swizzle": {
|
"simple-swizzle": {
|
||||||
"version": "0.2.2",
|
"version": "0.2.2",
|
||||||
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"shadow-cljs": "^2.8.109"
|
"shadow-cljs": "^2.8.109"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"canvas": "^2.6.1",
|
||||||
"commander": "^4.0.1",
|
"commander": "^4.0.1",
|
||||||
"geolib": "^3.2.0",
|
"geolib": "^3.2.0",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
(ns lemondronor.advisorycircular
|
(ns lemondronor.advisorycircular
|
||||||
(:require
|
(:require
|
||||||
|
["canvas" :as canvas]
|
||||||
["commander" :as commander]
|
["commander" :as commander]
|
||||||
["fs" :as fs]
|
["fs" :as fs]
|
||||||
[cljs.pprint :as pprint]
|
[cljs.pprint :as pprint]
|
||||||
@ -636,7 +637,7 @@
|
|||||||
(p/let [nearby (landmark config lat lon)
|
(p/let [nearby (landmark config lat lon)
|
||||||
;;_ (log-info "WOOO %s" nearby)
|
;;_ (log-info "WOOO %s" nearby)
|
||||||
ac-db-rec (if-let [ac-info-db-path (:aircraft-info-db-path config)]
|
ac-db-rec (if-let [ac-info-db-path (:aircraft-info-db-path config)]
|
||||||
(get-aircraft-info-record icao ac-info-db-path))]
|
(get-aircraft-info-record icao ac-info-db-path))]
|
||||||
(let [description (generate-description ac ac-db-rec coarse nearby)]
|
(let [description (generate-description ac ac-db-rec coarse nearby)]
|
||||||
(log-info "%s Description: %s" (:icao ac) description)
|
(log-info "%s Description: %s" (:icao ac) description)
|
||||||
description))])
|
description))])
|
||||||
@ -743,8 +744,18 @@
|
|||||||
|
|
||||||
(def default-config-path "config.yaml")
|
(def default-config-path "config.yaml")
|
||||||
|
|
||||||
|
|
||||||
|
(defn write-stream-to-file [stream path]
|
||||||
|
(p/promise
|
||||||
|
[resolve]
|
||||||
|
(let [out (fs/createWriteStream path)]
|
||||||
|
(.pipe stream out)
|
||||||
|
(.on out "finish" #(do (println "resolving") (resolve nil)))
|
||||||
|
(.on out "error" #(throw %)))))
|
||||||
|
|
||||||
|
|
||||||
(defn main [& args]
|
(defn main [& args]
|
||||||
(-> commander
|
(-> commander
|
||||||
(.option "--lat <lat>" "Latitude of the circle of region of interest" parse-number)
|
(.option "--lat <lat>" "Latitude of the circle of region of interest" parse-number)
|
||||||
(.option "--lon <lat>" "Longitude of the circle of the region of interest" parse-number)
|
(.option "--lon <lat>" "Longitude of the circle of the region of interest" parse-number)
|
||||||
(.option "--adsbx-url <url>" "ADSBX API url")
|
(.option "--adsbx-url <url>" "ADSBX API url")
|
||||||
@ -767,6 +778,30 @@
|
|||||||
(logging/set-log-prefix! (or (.-logPrefix commander) ""))
|
(logging/set-log-prefix! (or (.-logPrefix commander) ""))
|
||||||
(reset! log-prefix (or (.-logPrefix commander) ""))
|
(reset! log-prefix (or (.-logPrefix commander) ""))
|
||||||
(p/try
|
(p/try
|
||||||
|
(p/let [path (nth (.-argv js/process) 2)
|
||||||
|
_ (println path)
|
||||||
|
image (canvas/loadImage path)
|
||||||
|
canvas (canvas/createCanvas (.-width image) (.-height image))
|
||||||
|
ctx (.getContext canvas "2d")]
|
||||||
|
(.drawImage ctx image 0 0)
|
||||||
|
(set! (.-font ctx) "12px Impact")
|
||||||
|
(let [attribution "Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community" ;; "© OpenStreetMap contributors"
|
||||||
|
text-metrics (.measureText ctx attribution)
|
||||||
|
w (.-width text-metrics)
|
||||||
|
h 12
|
||||||
|
[mw mh] [1 1]
|
||||||
|
[pw ph] [2 2]
|
||||||
|
text-x (- (.-width image) w pw mw)
|
||||||
|
text-y (- (.-height image) h ph mh )]
|
||||||
|
(.beginPath ctx)
|
||||||
|
(set! (.-fillStyle ctx) "rgba(128,128,128,0.7)")
|
||||||
|
(.rect ctx (- text-x pw) (- text-y ph) (+ w pw pw) (+ h ph ph))
|
||||||
|
(.fill ctx)
|
||||||
|
(set! (.-fillStyle ctx) "black")
|
||||||
|
(.fillText ctx attribution text-x (+ text-y h)))
|
||||||
|
(write-stream-to-file (.createPNGStream canvas) "out.png")
|
||||||
|
(println "DONE!")
|
||||||
|
(.exit js/process 0))
|
||||||
(cond
|
(cond
|
||||||
(.-createAircraftInfoDbFromJson commander)
|
(.-createAircraftInfoDbFromJson commander)
|
||||||
(create-aircraft-info-db (.-createAircraftInfoDbFromJson commander) (.-aircraftInfoDb commander))
|
(create-aircraft-info-db (.-createAircraftInfoDbFromJson commander) (.-aircraftInfoDb commander))
|
||||||
@ -830,8 +865,8 @@
|
|||||||
(map #(str (:icao %) ":" (.toFixed (:curviness %) 0)))
|
(map #(str (:icao %) ":" (.toFixed (:curviness %) 0)))
|
||||||
(string/join " "))))))))
|
(string/join " "))))))))
|
||||||
(p/catch :default e
|
(p/catch :default e
|
||||||
(log-error "%s" e)
|
(log-error "wee1 %s" e)
|
||||||
(log-error "%s" (.-stack e))
|
(log-error "wee2 %s" (.-stack e))
|
||||||
(.exit js/process 1))))
|
(.exit js/process 1))))
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user