|
46 | 46 | (some #(and (= (:name %) psa-name) (some #{value} (:values %)))
|
47 | 47 | (:product-specific-attributes granule))))
|
48 | 48 |
|
| 49 | +(defn- sanitize-version-id |
| 50 | + "When version-id is nil, return nil |
| 51 | + When version-id is a number, return string version with preceeding zeros |
| 52 | + When version-id is a string, parse into number, then return as string with preceeding zeros. |
| 53 | + When version-id is a string without a number, return 001. (This should never be the case)" |
| 54 | + [version-id] |
| 55 | + (when-not (empty? version-id) |
| 56 | + (if (number? version-id) |
| 57 | + (format "%03d" version-id) |
| 58 | + (as-> (re-find #"\d+" version-id) version-id |
| 59 | + (or version-id "1") |
| 60 | + (Integer/parseInt version-id) |
| 61 | + (format "%03d" version-id))))) |
| 62 | + |
49 | 63 | (def day-granule? (matches-value [:data-granule :day-night] "DAY"))
|
50 | 64 | (def tir-mode? (matches-on-psa "TIR_ObservationMode" "ON"))
|
51 | 65 | (def swir-mode? (matches-on-psa "SWIR_ObservationMode" "ON"))
|
|
99 | 113 | :matcher (match-all vnir1-mode? vnir2-mode? day-granule?)}
|
100 | 114 | {:entry-title "ASTER L1B Registered Radiance at the Sensor V003"
|
101 | 115 | :short-name "AST_L1B"
|
102 |
| - :version-id "003"}]} |
| 116 | + :version-id "003"} |
| 117 | + {:entry-title "ASTER Level 1 Precision Terrain Corrected Registered At-Sensor Radiance V031" |
| 118 | + :short-name "AST_L1T" |
| 119 | + :version-id "031"}]} |
103 | 120 | ["GES_DISC" "OMI/Aura Surface UVB Irradiance and Erythemal Dose Daily L3 Global 1.0x1.0 deg Grid V003 (OMUVBd) at GES DISC"]
|
104 | 121 | {:short-name "OMUVBd"
|
105 | 122 | :virtual-collections [
|
|
231 | 248 |
|
232 | 249 | (defmulti generate-granule-ur
|
233 | 250 | "Generates a new granule ur for the virtual collection"
|
234 |
| - (fn [provider-id source-short-name virtual-short-name granule-ur] |
235 |
| - [provider-id source-short-name])) |
| 251 | + (fn [provider-id source-short-name virtual-granule granule-ur] |
| 252 | + source-short-name)) |
236 | 253 |
|
237 | 254 | (defmethod generate-granule-ur :default
|
238 |
| - [provider-id source-short-name virtual-short-name granule-ur] |
239 |
| - (str/replace-first granule-ur source-short-name virtual-short-name)) |
| 255 | + [provider-id source-short-name virtual-granule granule-ur] |
| 256 | + (str/replace-first granule-ur source-short-name (:short-name virtual-granule))) |
| 257 | + |
| 258 | +(defmethod generate-granule-ur "AST_L1A" |
| 259 | + [provider-id source-short-name virtual-granule granule-ur] |
| 260 | + (let [virtual-version-id (sanitize-version-id (:version-id virtual-granule))] |
| 261 | + (as-> (str/replace-first granule-ur source-short-name (:short-name virtual-granule)) granule-ur |
| 262 | + (if virtual-version-id |
| 263 | + (str/replace-first granule-ur #"\.\d\d\d" (str "." virtual-version-id)) |
| 264 | + granule-ur)))) |
240 | 265 |
|
241 | 266 | ;; The granule urs of granules in the virtual collection based on AST_L1A is a simple
|
242 | 267 | ;; transformation of the granule urs of the corresponding source granules and its inverse is trivial.
|
|
436 | 461 | virtual-granule-ur (generate-granule-ur
|
437 | 462 | provider-id
|
438 | 463 | source-short-name
|
439 |
| - virtual-short-name |
| 464 | + virtual-coll |
440 | 465 | (:granule-ur source-umm))]
|
441 | 466 | (-> source-umm
|
442 | 467 | ;; Remove measured parameters from virtual granules
|
|
0 commit comments