Skip to content
Snippets Groups Projects

GEFS

Merged Tucker Gary Siegel requested to merge gefs into master
6 files
+ 248
27
Compare changes
  • Side-by-side
  • Inline
Files
6
+ 101
0
gefsCoords = require('../models/coordinates.js');
current_year = require('../models/gdd_current.js');
utils = require('../lib/utils');
function find(collection, query, projection, t_base, res, product) {
current_year.find(query).limit(1).then(function(cy) {
var min_temps = cy[0]["min_temps"]
var max_temps = cy[0]["max_temps"]
var gdd_sum_cy = 0;
for (var i = 0; i < min_temps.length; i++) {
gdd_value = utils.calculate_gdd(min_temps[i], max_temps[i], t_base, product);
gdd_sum_cy += gdd_value
}
collection.find(query).limit(10).then(function(data) {
// console.log(data);
var base_date = data[0]["time"]
var gdds = []
for (var i = 0; i < 10; i++) {
gdd_value = utils.calculate_gdd(data[i].min_temp, data[i].max_temp, t_base, product);
gdd_sum_cy += gdd_value
gdds.push(gdd_sum_cy)
}
res.json({
message: "GEFS GDD",
data: gdds,
base_date: base_date,
closest_lon: data[0]["location"]["coordinates"][0],
closest_lat: data[0]["location"]["coordinates"][1]
})
}, function(err) {
res.status(500).send({"internal error": err})
})
}, function(err) {
res.status(500).send({"internal error": err})
})
}
exports.gefs = function (req, res) {
var product = req.params.product;
var latitude = parseFloat(req.body.latitude)
var longitude = parseFloat(req.body.longitude)
var query = {
location: {
"$near": {
"$geometry": {
"type": "Point",
"coordinates": [longitude, latitude]
},
},
},
}
var projection = {
min_temp: 1,
max_temp: 1,
location: 1,
}
var t_base = 50
errors = []
if (latitude < 24.083334 || latitude > 49.916668) {
errors.push({
parameter_error: "latitude",
message: latitude.toString() + " is out of bounds for GDD calculations. Must be between 24.083334 - 49.916668"
});
}
if (req.body.hasOwnProperty("t_base")) {
t_base = parseFloat(req.body.t_base);
} else {
out = utils.product_base_switch(product, errors, t_base);
t_base = out.t_base;
errors = out.errors;
}
if (longitude < -125 || longitude > -66.5) {
errors.push({
parameter_error: "longitude",
message: longitude.toString() + " is out of bounds for GDD calculations. Must be between -125.0 - -66.5"
});
}
if (errors.length > 0) {
res.status(400).send({
errors: errors
})
}
find(gefsCoords, query, projection, t_base, res, product);
};
\ No newline at end of file
Loading