Skip to content
Snippets Groups Projects

add cfs to server

Merged Tucker Gary Siegel requested to merge cfs into master
6 files
+ 310
34
Compare changes
  • Side-by-side
  • Inline
Files
6
+ 112
0
 
cfs = require('../models/cfs.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(200).then(function(data) {
 
// console.log(data);
 
var base_date = data[0]["time"]
 
var lat = data[0]["location"]["coordinates"][1]
 
var lon = data[0]["location"]["coordinates"][0]
 
var gdds = []
 
var i = 0;
 
while (data[i] !== undefined) {
 
if (lat != data[i]["location"]["coordinates"][1] ||
 
lon != data[i]["location"]["coordinates"][0]) {
 
break;
 
}
 
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)
 
i += 1
 
}
 
// for (var i = 0; i < 10; i++) {
 
//
 
// }
 
 
res.json({
 
message: "CFS 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.cfs = 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(cfs, query, projection, t_base, res, product);
 
};
 
\ No newline at end of file
Loading