/
pl.yaml
209 lines (203 loc) · 7.61 KB
/
pl.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# Use external scheduler. This example uses dask.distributed.Client,
# but any other class can be used as long as it returns a client and
# registers itself to dask. The `settings` are passed as keyword
# arguments to the class when instantiated.
# dask_distributed:
# class: !!python/name:dask.distributed.Client
# settings:
# address: localhost:8786
product_list: &product_list
output_dir: &output_dir
/tmp/satnfs/polar_out/pps2018/direct_readout/
publish_topic: /NWC-CF/L3
subscribe_topics:
- /foo/bar
- /bar/foo
use_extern_calib: false
# Scene creation settings
reader: nwcsaf-pps_nc
fname_pattern: &fname
"{platform_name}_{start_time:%Y%m%d_%H%M}_{areaname}_{productname}.{format}"
formats: &formats
- format: tif
writer: geotiff
- format: nc
writer: cf
#resolution: 1000
#metadata_aliases:
# platform_name:
# j01: NOAA-20
# noaa15: NOAA-15
# noaa18: NOAA-18
# noaa19: NOAA-19
# sensor:
# avhrr/3: avhrr-3
#sunzen_check_lon: 25.0
#sunzen_check_lat: 60.0
# Set delay_composites to `False` to create composites before resampling.
# Default is to create them after resampling (`True`), which is much
# faster in most cases
# delay_composites: False
# Send emails about crashes using sendmail
# Check area coverage by `collection_area_id` in the input metadata.
# Default: False
# coverage_by_collection_area: True
# Add extra metadata to the published messages
# extra_metadata:
# processing_center: SMHI
# Check fraction of sunlit area. Remove affected products outside the
# given limits. For daytime products define only `min`, and for nighttime
# products define only `max`. To check sunlit fraction within a swath of
# a polar-orbiting satellite, define `check_pass: True`.
# sunlight_coverage:
# min: 20.0 # if lower than this, products are removed
# max: 80.0 # if higher than this, products are removed
# check_pass: True # check coverage within the swath
# min_coverage: 20 # at least 20% coverage
areas:
omerc_bb:
# Resampler settings can be global (in common section above) or per area
#radius_of_influence: 5000
#resampler: bilinear
#reduce_data: False
areaname: omerc_bb
# Set high priority (small value) for this area
# priority: 1
# Use "null" for default priority, or don't define priority at all
# priority: null
products:
ct:
productname: ct
output_dir: *output_dir
formats:
- format: nc
writer: cf
# Remove product if SZA is more than this
#sunzen_maximum_angle: 90.0
# Remove product if sunligth coverage is less that this
#min_sunlight_coverage: 10.0
# Remove product if valid data fraction less than this
#min_valid_data_fraction: 10.0
ctth_alti:
productname: ctth_alti
output_dir: *output_dir
formats:
- format: nc
writer: cf
# Remove product if SZA is less than this
#sunzen_minimum_angle: 90.0
cloudtype:
productname: cloudtype
output_dir: *output_dir
formats:
- format: tif
writer: geotiff
cloud_top_height:
productname: cloud_top_height
output_dir: *output_dir
formats:
- format: tif
writer: geotiff
# Add small scale embedded images to the file
# To use add `add_overviews` to workers after `save_datasets`
# overviews: [4, 8, 16, 32, 64, 128, 256]
# null: # satellite projection
# # For satellite projection it is possible to define `resampler: native`
# # for satellites that have multiple resolutions for a channel
# areaname: satellite_projection
# # Use lowest listed priority for area in satellite projection.
# # To be able to save the data the composites need to be
# # created, and it will slow down processing for other areas.
# # The composites will be reloaded and created automatically
# # for this area.
# priority: 3
# products:
# cloudtype:
# productname: cloudtype
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
# - format: jpg
# writer: simple_image
# fill_value: 0
# cloudmask:
# productname: cloudmask
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
# - format: jpg
# writer: simple_image
# fill_value: 0
# cloud_top_height:
# productname: cloud_top_height
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
# - format: jpg
# writer: simple_image
# fill_value: 0
# fname_pattern: "{platform_name:s}_{time:%Y%m%d_%H%M}_{areaname:s}_ctth.{format}"
# cloud_top_phase:
# productname: cloud_top_phase
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
# - format: jpg
# writer: simple_image
# fill_value: 0
# fname_pattern: "{platform_name:s}_{time:%Y%m%d_%H%M}_{areaname:s}_cpp-cph.{format}"
# cloud_drop_effective_radius:
# productname: cloud_drop_effective_radius
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
# - format: jpg
# writer: simple_image
# fill_value: 0
# fname_pattern: "{platform_name:s}_{time:%Y%m%d_%H%M}_{areaname:s}_cpp-reff.{format}"
#
# germ:
# areaname: germ
# priority: 2
# products:
# cloudtype:
# productname: cloudtype
# output_dir: /satdmz/pps/www/latest_2018/
# formats:
# - format: png
# writer: simple_image
workers:
- fun: !!python/name:trollflow2.plugins.create_scene
# Check sunlight area coverage fraction. See configuration above.
# The worker can be in three different stages:
# - after create_scene: when area is defined in areas.yaml
# - after load_composites: when area is `null` (save full disk GEO data)
# - after resampler: for backwards compatibility
# - fun: !!python/name:trollflow2.plugins.check_sunlight_coverage
- fun: !!python/name:trollflow2.plugins.load_composites
- fun: !!python/name:trollflow2.plugins.resample
# remove products with valid data within covered area less than 10%
# - fun: !!python/name:trollflow2.plugins.check_valid_data_fraction
# if, for whatever reason, save_datasets does not finish within 300 seconds,
# interrupt and give up (only supported on Linux, may work on other systems)
- fun: !!python/name:trollflow2.plugins.save_datasets
timeout: 300
- fun: !!python/object:trollflow2.plugins.FilePublisher {}
# Or add keyword arguments
# - fun: !!python/object:trollflow2.plugins.FilePublisher {port: 40002, nameservers: [localhost]}
# Things to run in case of a crash
#crash_handlers:
# config:
# sendmail:
# from: "user@server"
# to: "user@institute"
# subject: "Crash report"
# header: "Header text before the error message"
# sendmail: "/usr/sbin/sendmail"
# handlers:
# - fun: !!python/name:trollflow2.launcher.sendmail