BALTRAD PPC
pdp_processor.h
Go to the documentation of this file.
1/* --------------------------------------------------------------------
2Copyright (C) 2019 Swedish Meteorological and Hydrological Institute, SMHI,
3
4This file is part of baltrad-ppc.
5
6baltrad-ppc is free software: you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation, either version 3 of the License, or
9(at your option) any later version.
10
11baltrad-ppc is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU Lesser General Public License for more details.
15
16You should have received a copy of the GNU Lesser General Public License
17along with baltrad-ppc. If not, see <http://www.gnu.org/licenses/>.
18------------------------------------------------------------------------*/
26#ifndef PDP_PROCESSOR_H
27#define PDP_PROCESSOR_H
28#include "polarvolume.h"
29#include "rave_data2d.h"
30#include "ppc_radar_options.h"
35
39extern RaveCoreObjectType PdpProcessor_TYPE;
40
44#define TRAP_UNDEF_VALUE -99999999999.0
45
55
61
70PolarScan_t* PdpProcessor_process(PdpProcessor_t* self, PolarScan_t* scan, RaveData2D_t* sclutterMap);
71
78
84
91RaveData2D_t* PdpProcessor_texture(PdpProcessor_t* self, RaveData2D_t* X);
92
102RaveData2D_t* PdpProcessor_trap(PdpProcessor_t* self, RaveData2D_t* x, double a, double b, double s, double t);
103
117RaveData2D_t* PdpProcessor_clutterID(PdpProcessor_t* self, RaveData2D_t* Z, RaveData2D_t* VRADH,
118 RaveData2D_t* texturePHIDP, RaveData2D_t* RHOHV, RaveData2D_t* textureZ, RaveData2D_t* clutterMap, double nodataZ, double nodataVRADH);
119
137int PdpProcessor_clutterCorrection(PdpProcessor_t* self, RaveData2D_t* Z, RaveData2D_t* VRADH,
138 RaveData2D_t* texturePHIDP, RaveData2D_t* RHOHV, RaveData2D_t* textureZ, RaveData2D_t* clutterMap,
139 double nodataZ, double nodataVRADH, double qualityThreshold,
140 RaveData2D_t** outZ, RaveData2D_t** outQuality, RaveData2D_t** outClutterMask);
141
151RaveData2D_t* PdpProcessor_medfilt(PdpProcessor_t* self, RaveData2D_t* Z, double thresh, double nodataZ, long filtXsize, long filtYsize);
152
163RaveData2D_t* PdpProcessor_residualClutterFilter(PdpProcessor_t* self, RaveData2D_t* Z,
164 double thresholdZ, double thresholdTexture, long filtXsize, long filtYsize);
165
166int PdpProcessor_pdpProcessing(PdpProcessor_t* self, RaveData2D_t* pdp, double dr, long window, long nrIter, RaveData2D_t** pdpf, RaveData2D_t** kdp);
167
168int PdpProcessor_pdpScript(PdpProcessor_t* self, RaveData2D_t* pdp, double dr, double rWin1, double rWin2, long nrIter, RaveData2D_t** pdpf, RaveData2D_t** kdp);
169
170int PdpProcessor_attenuation(PdpProcessor_t* self, RaveData2D_t* Z, RaveData2D_t* zdr, RaveData2D_t* dbzh, RaveData2D_t* pdp,
171 RaveData2D_t* mask, double gamma_h, double alpha, double zundetect, double dbzhundetect, RaveData2D_t** outz, RaveData2D_t** outzdr, RaveData2D_t** outPIA, RaveData2D_t** outDBZH);
172
173int PdpProcessor_zphi(PdpProcessor_t* self, RaveData2D_t* Z, RaveData2D_t* pdp, RaveData2D_t* mask,
174 double dr, double BB, double gamma_h, RaveData2D_t** outzphi, RaveData2D_t** outAH);
175#endif
RaveData2D_t * PdpProcessor_clutterID(PdpProcessor_t *self, RaveData2D_t *Z, RaveData2D_t *VRADH, RaveData2D_t *texturePHIDP, RaveData2D_t *RHOHV, RaveData2D_t *textureZ, RaveData2D_t *clutterMap, double nodataZ, double nodataVRADH)
Clutter identificaton function.
Definition pdp_processor.c:927
double PdpProcessor_getMeltingLayerBottomHeight(PdpProcessor_t *scan)
Definition pdp_processor.c:768
void PdpProcessor_setMeltingLayerBottomHeight(PdpProcessor_t *scan, double height)
Sets the melting layer bottom height.
Definition pdp_processor.c:763
int PdpProcessor_setRadarOptions(PdpProcessor_t *self, PpcRadarOptions_t *options)
Sets the option instance to be used in the processing.
Definition pdp_processor.c:313
RaveData2D_t * PdpProcessor_residualClutterFilter(PdpProcessor_t *self, RaveData2D_t *Z, double thresholdZ, double thresholdTexture, long filtXsize, long filtYsize)
Runs the residual clutter filter on the image.
Definition pdp_processor.c:1178
int PdpProcessor_clutterCorrection(PdpProcessor_t *self, RaveData2D_t *Z, RaveData2D_t *VRADH, RaveData2D_t *texturePHIDP, RaveData2D_t *RHOHV, RaveData2D_t *textureZ, RaveData2D_t *clutterMap, double nodataZ, double nodataVRADH, double qualityThreshold, RaveData2D_t **outZ, RaveData2D_t **outQuality, RaveData2D_t **outClutterMask)
Performs the clutter correction.
Definition pdp_processor.c:1028
PolarScan_t * PdpProcessor_process(PdpProcessor_t *self, PolarScan_t *scan, RaveData2D_t *sclutterMap)
Combines all functions implemented in this class into one process that performs the actual polar data...
Definition pdp_processor.c:353
RaveCoreObjectType PdpProcessor_TYPE
Type definition to use when creating a rave object.
Definition pdp_processor.c:1834
RaveData2D_t * PdpProcessor_trap(PdpProcessor_t *self, RaveData2D_t *x, double a, double b, double s, double t)
Trapezoidal function.
Definition pdp_processor.c:873
PpcRadarOptions_t * PdpProcessor_getRadarOptions(PdpProcessor_t *self)
Definition pdp_processor.c:324
RaveData2D_t * PdpProcessor_medfilt(PdpProcessor_t *self, RaveData2D_t *Z, double thresh, double nodataZ, long filtXsize, long filtYsize)
Creates a median filtered field.
Definition pdp_processor.c:1096
RaveData2D_t * PdpProcessor_texture(PdpProcessor_t *self, RaveData2D_t *X)
Calculates the texture from the data 2d field.
Definition pdp_processor.c:777
Keeps one radar options setup This object does support #RAVE_OBJECT_CLONE.
Represents one transformator.
Definition pdp_processor.c:41
PpcRadarOptions_t * options
the processing options
Definition pdp_processor.c:44
The radar options class.
Definition ppc_radar_options.c:39