package me.drton.flightplot.processors;
import me.drton.jmavlib.geo.GlobalPositionProjector;
import me.drton.jmavlib.geo.LatLonAlt;
import java.util.HashMap;
import java.util.Map;
/**
* User: ton Date: 11.07.13 Time: 22:14
*/
public class GlobalPositionProjection extends PlotProcessor {
private GlobalPositionProjector positionProjector = new GlobalPositionProjector();
private String[] param_Fields;
@Override
public Map<String, Object> getDefaultParameters() {
Map<String, Object> params = new HashMap<String, Object>();
params.put("Fields", "GPS.Lat GPS.Lon");
params.put("Ref", "");
return params;
}
@Override
public void init() {
positionProjector.reset();
param_Fields = ((String) parameters.get("Fields")).split(WHITESPACE_RE);
String[] ref = ((String) parameters.get("Ref")).split(WHITESPACE_RE);
if (ref.length >= 2) {
positionProjector.init(new LatLonAlt(Double.parseDouble(ref[0]), Double.parseDouble(ref[1]), 0.0));
}
addSeries("X");
addSeries("Y");
}
@Override
public void process(double time, Map<String, Object> update) {
// GPS
Number latNum = (Number) update.get(param_Fields[0]);
Number lonNum = (Number) update.get(param_Fields[1]);
if (latNum != null && lonNum != null) {
LatLonAlt latLonAlt = new LatLonAlt(latNum.doubleValue(), lonNum.doubleValue(), 0.0);
if (!positionProjector.isInited()) {
positionProjector.init(latLonAlt);
}
double[] xyz = positionProjector.project(latLonAlt);
addPoint(0, time, xyz[0]);
addPoint(1, time, xyz[1]);
}
}
}