Oyster Harvest Area Closure Analysis 0.1
Prediction and analysis of NSW oyster harvest area closures.
Loading...
Searching...
No Matches
timeseries.h
Go to the documentation of this file.
1#ifndef HA_CLOSURE_ANALYSIS_TIMESERIES_H
2#define HA_CLOSURE_ANALYSIS_TIMESERIES_H
3
4#include <curl/curl.h>
5#include <cjson/cJSON.h>
6#include <math.h>
7#include <time.h>
8#include <libpq-fe.h>
9#include <log.h>
10
12#include "transform.h"
13#include "http.h"
14#include "utils.h"
15
17#define IBM_URL_SIZE 250
18
20#define IBM_PRECIPITATION_ID 49097
21#define IBM_MIN_TEMPERATURE_ID 26019
22#define IBM_MAX_TEMPERATURE_ID 26018
23
25#define IBM_MAX_RESPONSE_LENGTH 2000
26
28static const char* IBM_REQUEST_URL = "https://pairs.res.ibm.com";
29
31static const char* IBM_ALT_REQUEST_URL = "https://ibmpairs-mvp2-api.mybluemix.net";
32
34typedef struct {
35 uint16_t layer_id;
36 float latitude;
37 float longitude;
38 time_t start;
39 time_t end;
41
43typedef struct {
44 time_t start;
45 time_t end;
46 time_t timestamps[IBM_MAX_RESPONSE_LENGTH];
47 double values[IBM_MAX_RESPONSE_LENGTH];
48 int32_t count;
50
52CURLcode IBM_GetTimeseries(IBM_AuthHandle_TypeDef *auth_handle,
55 uint8_t alt_flag);
56
60
63
68 PGconn* psql_conn);
69
71 const char* start_time,
72 const char* end_time,
73 PGconn* psql_conn);
74
75#endif //HA_CLOSURE_ANALYSIS_TIMESERIES_H
IBM token handler.
Definition: authenticate.h:25
Request response data containing IBM EMS timeseries data.
Definition: timeseries.h:43
time_t start
Data start time (unix timestamp in seconds).
Definition: timeseries.h:44
int32_t count
Number of returned values.
Definition: timeseries.h:48
time_t end
Data end time (unix timestamp in seconds).
Definition: timeseries.h:45
Request structure for IBM EMS timeseries data.
Definition: timeseries.h:34
time_t end
The end time as UNIX epoch time.
Definition: timeseries.h:39
uint16_t layer_id
The layer ID of interest (obtained from IBM query)
Definition: timeseries.h:35
float longitude
The longitude of interest.
Definition: timeseries.h:37
time_t start
The start time as UNIX epoch time.
Definition: timeseries.h:38
float latitude
The latitude of interest.
Definition: timeseries.h:36
Structure of a location (i.e. program location)
Definition: transform.h:33
Locations lookup table structure.
Definition: transform.h:49
void IBM_TimeseriesToDB(IBM_TimeseriesReq_TypeDef *req_info, IBM_TimeseriesDataset_TypeDef *dataset, T_LocationLookup_TypeDef *location, PGconn *psql_conn)
Write timeseries dataset to PostgreSQL table.
Definition: timeseries.c:421
CURLcode IBM_GetTimeseries(IBM_AuthHandle_TypeDef *auth_handle, IBM_TimeseriesReq_TypeDef *request, IBM_TimeseriesDataset_TypeDef *dataset, uint8_t alt_flag)
Get timeseries data from IBM EMS.
Definition: timeseries.c:50
#define IBM_MAX_RESPONSE_LENGTH
Max number of values in response.
Definition: timeseries.h:25
void IBM_BuildTSDatabase(T_LocationsLookup_TypeDef *locations, const char *start_time, const char *end_time, PGconn *psql_conn)
Definition: timeseries.c:526
int8_t IBM_TimeseriesToCSV(IBM_TimeseriesReq_TypeDef *request, IBM_TimeseriesDataset_TypeDef *dataset)
Write timeseries dataset to .csv file.
Definition: timeseries.c:333
IBM_TimeseriesDataset_TypeDef IBM_TimeseriesFromCSV(const char *filename)
Load IBM timeseries dataset from local .csv file.
Definition: timeseries.c:371
static const char * IBM_REQUEST_URL
IBM URL.
Definition: timeseries.h:28
static const char * IBM_ALT_REQUEST_URL
Alternative IBM URL.
Definition: timeseries.h:31