ocssw
V2022
|
#include <stdlib.h>
#include <stdio.h>
#include <netcdf.h>
#include <genutils.h>
#include "readL2scan.h"
#include <sensorInfo.h>
#include <timeutils.h>
#include <nc4utils.h>
#include "find_variable.h"
#include <hdf.h>
#include <mfhdf.h>
Go to the source code of this file.
Classes | |
struct | cache_struct |
struct | pixelAreaInfo_t |
Macros | |
#define | TITLE "title" |
#define | TITLE_OLD "Title" |
#define | INFILES "input_sources" |
#define | INFILES_OLD "Input Files" |
#define | SENNME "instrument" |
#define | SENNME_OLD "Sensor Name" |
#define | DCENTER "project" |
#define | DCENTER_OLD "Data Center" |
#define | NFREC "Filled Scan Lines" |
#define | PCTFLAG "flag_percentages" |
#define | PCTFLAG_OLD "Flag Percentages" |
#define | NTIME "equatorCrossingDateTime" |
#define | NTIME_OLD "Node Crossing Time" |
#define | SNODE "startDirection" |
#define | SNODE_OLD "Start Node" |
#define | ENODE "endDirection" |
#define | ENODE_OLD "End Node" |
#define | MISSION "platform" |
#define | MISSION_OLD "Mission" |
#define | MSNCHAR "Mission Characteristics" |
#define | SENSOR "Sensor" |
#define | SNSCHAR "Sensor Characteristics" |
#define | ORBNUM "orbit_number" |
#define | ORBNUM_OLD "Orbit Number" |
#define | NLAT "northernmost_latitude" |
#define | NLAT_OLD "Northernmost Latitude" |
#define | SLAT "southernmost_latitude" |
#define | SLAT_OLD "Southernmost Latitude" |
#define | WLON "westernmost_longitude" |
#define | WLON_OLD "Westernmost Longitude" |
#define | ELON "easternmost_longitude" |
#define | ELON_OLD "Easternmost Longitude" |
#define | STCLAT "start_center_latitude" |
#define | STCLAT_OLD "Start Center Latitude" |
#define | STCLON "start_center_longitude" |
#define | STCLON_OLD "Start Center Longitude" |
#define | ENDCLAT "end_center_latitude" |
#define | ENDCLAT_OLD "End Center Latitude" |
#define | ENDCLON "end_center_longitude" |
#define | ENDCLON_OLD "End Center Longitude" |
#define | NODEL "equatorCrossingLongitude" |
#define | NODEL_OLD "Orbit Node Longitude" |
#define | LAC_PX_ST "LAC Pixel Start Number" |
#define | LAC_PX_SUBSAMP "LAC Pixel Subsampling" |
#define | NUM_LATLON_NAME 4 |
#define | INIT_DELTA 10000 |
#define | SHOW_NC_ERROR(func, err, ...) |
#define | FREE(ptr) |
Typedefs | |
typedef idDS | ds_id_prod_t[1000] |
typedef int32_t | prodtype_t[1000] |
typedef float | slope_t[1000] |
typedef idDS | ds_id_ll_t[3] |
typedef idDS | ds_id_geonav_t[6] |
typedef int32_t | grp_id_t[6] |
Functions | |
void | enableL2PixelArea (enum L2PixelMode_t val) |
int32_t | get_dtype (int32_t dtype, ds_format_t fileformat) |
void | free_rowgroup_cache () |
void | init_rowgroup_cache () |
void | allocateDatabuf (l2_prod *l2_str, int maxThirdDim) |
int32_t | openL2 (const char *fname, const char *plist, l2_prod *l2_str) |
int32_t | reopenL2 (int32_t fileindex, l2_prod *l2_str) |
int32_t | readdata_cached (idDS ds_id, char *name, int32_t *start, int32_t *stride, int32_t *edges, void *data, unsigned char *scan_in_rowgroup, cache_str *cache, int32_t dtype) |
void | clampDeltaLon (float *deltaLon) |
void | interpolatePixelCorners (float *lat0, float *lon0, float *lat1, float *lon1, float *latOut, float *lonOut, int32_t numPoints) |
void | extrapolatePixelCorners (float *lat0, float *lon0, float *lat1, float *lon1, float *latOut, float *lonOut, int32_t numPoints) |
void | calculatePixelDeltas (float *lat0, float *lon0, float *lat1, float *lon1, float *latOut, float *lonOut, int32_t numPoints) |
int32_t | readL2 (l2_prod *l2_str, int32_t ifile, int32_t recnum, int32_t iprod, unsigned char *scan_in_rowgroup) |
int32_t | readlonlat (l2_prod *l2_str, int32_t ifile, int32_t *start, int32_t *edges, unsigned char *scan_in_rowgroup) |
int32_t | closeL2 (l2_prod *l2_str, int32_t ifile) |
int32_t | freeL2 (l2_prod *l2_str) |
int32_t | findprod (l2_prod *l2_str, char *prodname) |
int32_t | readL2meta (meta_l2Type *meta_l2, int32_t ifile) |
int32_t | freeL2meta (meta_l2Type *meta_l2) |
int32_t | getL3units (l2_prod *l2_str, int32_t ifile, char *l3b_prodname, char *units) |
Variables | |
const char * | possible_latitude_names [NUM_LATLON_NAME] = {"latitude", "Latitude", "lat", "Lat"} |
const char * | possible_longitude_names [NUM_LATLON_NAME] = {"longitude", "Longitude", "lon", "Lon"} |
Macro Definition Documentation
◆ DCENTER
#define DCENTER "project" |
Definition at line 76 of file readL2scan.c.
◆ DCENTER_OLD
#define DCENTER_OLD "Data Center" |
Definition at line 77 of file readL2scan.c.
◆ ELON
#define ELON "easternmost_longitude" |
Definition at line 100 of file readL2scan.c.
◆ ELON_OLD
#define ELON_OLD "Easternmost Longitude" |
Definition at line 101 of file readL2scan.c.
◆ ENDCLAT
#define ENDCLAT "end_center_latitude" |
Definition at line 106 of file readL2scan.c.
◆ ENDCLAT_OLD
#define ENDCLAT_OLD "End Center Latitude" |
Definition at line 107 of file readL2scan.c.
◆ ENDCLON
#define ENDCLON "end_center_longitude" |
Definition at line 108 of file readL2scan.c.
◆ ENDCLON_OLD
#define ENDCLON_OLD "End Center Longitude" |
Definition at line 109 of file readL2scan.c.
◆ ENODE
#define ENODE "endDirection" |
Definition at line 85 of file readL2scan.c.
◆ ENODE_OLD
#define ENODE_OLD "End Node" |
Definition at line 86 of file readL2scan.c.
◆ FREE
#define FREE | ( | ptr | ) |
◆ INFILES
#define INFILES "input_sources" |
Definition at line 72 of file readL2scan.c.
◆ INFILES_OLD
#define INFILES_OLD "Input Files" |
Definition at line 73 of file readL2scan.c.
◆ INIT_DELTA
#define INIT_DELTA 10000 |
Definition at line 115 of file readL2scan.c.
◆ LAC_PX_ST
#define LAC_PX_ST "LAC Pixel Start Number" |
Definition at line 112 of file readL2scan.c.
◆ LAC_PX_SUBSAMP
#define LAC_PX_SUBSAMP "LAC Pixel Subsampling" |
Definition at line 113 of file readL2scan.c.
◆ MISSION
#define MISSION "platform" |
Definition at line 87 of file readL2scan.c.
◆ MISSION_OLD
#define MISSION_OLD "Mission" |
Definition at line 88 of file readL2scan.c.
◆ MSNCHAR
#define MSNCHAR "Mission Characteristics" |
Definition at line 89 of file readL2scan.c.
◆ NFREC
#define NFREC "Filled Scan Lines" |
Definition at line 78 of file readL2scan.c.
◆ NLAT
#define NLAT "northernmost_latitude" |
Definition at line 94 of file readL2scan.c.
◆ NLAT_OLD
#define NLAT_OLD "Northernmost Latitude" |
Definition at line 95 of file readL2scan.c.
◆ NODEL
#define NODEL "equatorCrossingLongitude" |
Definition at line 110 of file readL2scan.c.
◆ NODEL_OLD
#define NODEL_OLD "Orbit Node Longitude" |
Definition at line 111 of file readL2scan.c.
◆ NTIME
#define NTIME "equatorCrossingDateTime" |
Definition at line 81 of file readL2scan.c.
◆ NTIME_OLD
#define NTIME_OLD "Node Crossing Time" |
Definition at line 82 of file readL2scan.c.
◆ NUM_LATLON_NAME
#define NUM_LATLON_NAME 4 |
Definition at line 114 of file readL2scan.c.
◆ ORBNUM
#define ORBNUM "orbit_number" |
Definition at line 92 of file readL2scan.c.
◆ ORBNUM_OLD
#define ORBNUM_OLD "Orbit Number" |
Definition at line 93 of file readL2scan.c.
◆ PCTFLAG
#define PCTFLAG "flag_percentages" |
Definition at line 79 of file readL2scan.c.
◆ PCTFLAG_OLD
#define PCTFLAG_OLD "Flag Percentages" |
Definition at line 80 of file readL2scan.c.
◆ SENNME
#define SENNME "instrument" |
Definition at line 74 of file readL2scan.c.
◆ SENNME_OLD
#define SENNME_OLD "Sensor Name" |
Definition at line 75 of file readL2scan.c.
◆ SENSOR
#define SENSOR "Sensor" |
Definition at line 90 of file readL2scan.c.
◆ SHOW_NC_ERROR
#define SHOW_NC_ERROR | ( | func, | |
err, | |||
... | |||
) |
Definition at line 116 of file readL2scan.c.
◆ SLAT
#define SLAT "southernmost_latitude" |
Definition at line 96 of file readL2scan.c.
◆ SLAT_OLD
#define SLAT_OLD "Southernmost Latitude" |
Definition at line 97 of file readL2scan.c.
◆ SNODE
#define SNODE "startDirection" |
Definition at line 83 of file readL2scan.c.
◆ SNODE_OLD
#define SNODE_OLD "Start Node" |
Definition at line 84 of file readL2scan.c.
◆ SNSCHAR
#define SNSCHAR "Sensor Characteristics" |
Definition at line 91 of file readL2scan.c.
◆ STCLAT
#define STCLAT "start_center_latitude" |
Definition at line 102 of file readL2scan.c.
◆ STCLAT_OLD
#define STCLAT_OLD "Start Center Latitude" |
Definition at line 103 of file readL2scan.c.
◆ STCLON
#define STCLON "start_center_longitude" |
Definition at line 104 of file readL2scan.c.
◆ STCLON_OLD
#define STCLON_OLD "Start Center Longitude" |
Definition at line 105 of file readL2scan.c.
◆ TITLE
#define TITLE "title" |
Definition at line 70 of file readL2scan.c.
◆ TITLE_OLD
#define TITLE_OLD "Title" |
Definition at line 71 of file readL2scan.c.
◆ WLON
#define WLON "westernmost_longitude" |
Definition at line 98 of file readL2scan.c.
◆ WLON_OLD
#define WLON_OLD "Westernmost Longitude" |
Definition at line 99 of file readL2scan.c.
Typedef Documentation
◆ ds_id_geonav_t
typedef idDS ds_id_geonav_t[6] |
Definition at line 154 of file readL2scan.c.
◆ ds_id_ll_t
typedef idDS ds_id_ll_t[3] |
Definition at line 150 of file readL2scan.c.
◆ ds_id_prod_t
typedef idDS ds_id_prod_t[1000] |
Definition at line 140 of file readL2scan.c.
◆ grp_id_t
typedef int32_t grp_id_t[6] |
Definition at line 157 of file readL2scan.c.
◆ prodtype_t
typedef int32_t prodtype_t[1000] |
Definition at line 143 of file readL2scan.c.
◆ slope_t
typedef float slope_t[1000] |
Definition at line 146 of file readL2scan.c.
Function Documentation
◆ allocateDatabuf()
void allocateDatabuf | ( | l2_prod * | l2_str, |
int | maxThirdDim | ||
) |
Definition at line 304 of file readL2scan.c.
◆ calculatePixelDeltas()
void calculatePixelDeltas | ( | float * | lat0, |
float * | lon0, | ||
float * | lat1, | ||
float * | lon1, | ||
float * | latOut, | ||
float * | lonOut, | ||
int32_t | numPoints | ||
) |
calculate the half width and height of the pixels into Out, given 0 and 1.
- Parameters
-
lat0 first row lat lon0 first row lon lat1 second row lat lon1 second row lon latOut output lat delta lonOut output lon delta numPoints number of elements in the input arrays
Definition at line 1311 of file readL2scan.c.
◆ clampDeltaLon()
void clampDeltaLon | ( | float * | deltaLon | ) |
Definition at line 1210 of file readL2scan.c.
◆ closeL2()
int32_t closeL2 | ( | l2_prod * | l2_str, |
int32_t | ifile | ||
) |
Definition at line 1995 of file readL2scan.c.
◆ enableL2PixelArea()
void enableL2PixelArea | ( | enum L2PixelMode_t | val | ) |
Turn on the calculation of the lat/lon deltas. Used for area weighting.
- Parameters
-
val L2PixelOff(0)=off, L2PixelCorner(1)=pixel corners, L2PixelDelta(2)=pixel deltas
Definition at line 213 of file readL2scan.c.
◆ extrapolatePixelCorners()
void extrapolatePixelCorners | ( | float * | lat0, |
float * | lon0, | ||
float * | lat1, | ||
float * | lon1, | ||
float * | latOut, | ||
float * | lonOut, | ||
int32_t | numPoints | ||
) |
extrapolate Out points given 0 and 1. Note the the output array has one extra element in it.
- Parameters
-
lat0 first row lat lon0 first row lon lat1 second row lat lon1 second row lon latOut output lat (has one more element than input) lonOut output lon (has one more element than input) numPoints number of elements in the input arrays
Definition at line 1274 of file readL2scan.c.
◆ findprod()
int32_t findprod | ( | l2_prod * | l2_str, |
char * | prodname | ||
) |
Definition at line 2140 of file readL2scan.c.
◆ free_rowgroup_cache()
void free_rowgroup_cache | ( | ) |
Definition at line 259 of file readL2scan.c.
◆ freeL2()
int32_t freeL2 | ( | l2_prod * | l2_str | ) |
Definition at line 2083 of file readL2scan.c.
◆ freeL2meta()
int32_t freeL2meta | ( | meta_l2Type * | meta_l2 | ) |
Definition at line 2325 of file readL2scan.c.
◆ get_dtype()
int32_t get_dtype | ( | int32_t | dtype, |
ds_format_t | fileformat | ||
) |
get_dtype get proper data type for reading This converts to appropriate NCDF type given an HDF type May want a better mouse trap, but for now solves the problem
Definition at line 231 of file readL2scan.c.
◆ getL3units()
int32_t getL3units | ( | l2_prod * | l2_str, |
int32_t | ifile, | ||
char * | l3b_prodname, | ||
char * | units | ||
) |
Definition at line 2346 of file readL2scan.c.
◆ init_rowgroup_cache()
void init_rowgroup_cache | ( | ) |
Definition at line 287 of file readL2scan.c.
◆ interpolatePixelCorners()
void interpolatePixelCorners | ( | float * | lat0, |
float * | lon0, | ||
float * | lat1, | ||
float * | lon1, | ||
float * | latOut, | ||
float * | lonOut, | ||
int32_t | numPoints | ||
) |
interpolate Out points given 0 and 1. Note the the output array has one extra element in it.
- Parameters
-
lat0 first row lat lon0 first row lon lat1 second row lat lon1 second row lon latOut output lat (has one more element than input) lonOut output lon (has one more element than input) numPoints number of elements in the input arrays
Definition at line 1236 of file readL2scan.c.
◆ openL2()
Definition at line 316 of file readL2scan.c.
◆ readdata_cached()
int32_t readdata_cached | ( | idDS | ds_id, |
char * | name, | ||
int32_t * | start, | ||
int32_t * | stride, | ||
int32_t * | edges, | ||
void * | data, | ||
unsigned char * | scan_in_rowgroup, | ||
cache_str * | cache, | ||
int32_t | dtype | ||
) |
Definition at line 1149 of file readL2scan.c.
◆ readL2()
int32_t readL2 | ( | l2_prod * | l2_str, |
int32_t | ifile, | ||
int32_t | recnum, | ||
int32_t | iprod, | ||
unsigned char * | scan_in_rowgroup | ||
) |
Definition at line 1336 of file readL2scan.c.
◆ readL2meta()
int32_t readL2meta | ( | meta_l2Type * | meta_l2, |
int32_t | ifile | ||
) |
Definition at line 2151 of file readL2scan.c.
◆ readlonlat()
int32_t readlonlat | ( | l2_prod * | l2_str, |
int32_t | ifile, | ||
int32_t * | start, | ||
int32_t * | edges, | ||
unsigned char * | scan_in_rowgroup | ||
) |
Definition at line 1828 of file readL2scan.c.
◆ reopenL2()
int32_t reopenL2 | ( | int32_t | fileindex, |
l2_prod * | l2_str | ||
) |
Definition at line 1050 of file readL2scan.c.
Variable Documentation
◆ possible_latitude_names
const char* possible_latitude_names[NUM_LATLON_NAME] = {"latitude", "Latitude", "lat", "Lat"} |
Definition at line 200 of file readL2scan.c.
◆ possible_longitude_names
const char* possible_longitude_names[NUM_LATLON_NAME] = {"longitude", "Longitude", "lon", "Lon"} |
Definition at line 201 of file readL2scan.c.