Added new applyWindConfidencefilter setting for polar data mining

This commit is contained in:
Frederik Petersen committed 2015-09-17 11:07:06 +02:00
1 parent fea30197a9
commit 4fbd47033a
8 files changed
+43 -26

No files matched your search

@@ -561,6 +561,8 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String polarSheetWindSteppingMaxDistanceTooltip();
String polarSheetSplitByWindGauges();
String polarSheetSplitByWindGaugesTooltip();
String applyMinimumWindConfidence();
String applyMinimumWindConfidenceTooltip();
String pleaseSeeToolTips();
String numberOfManeuversInRaceTooltip();
String competitorColumnTooltip();
@@ -555,6 +555,8 @@ polarSheetWindSteppingMaxDistance=Max. distance to wind level
polarSheetWindSteppingMaxDistanceTooltip=Sets a max radius for which fixes will be assigned to the wind levels.
polarSheetSplitByWindGauges=Split Windsources
polarSheetSplitByWindGaugesTooltip=Splitting Windsources allows a better search for bad wind gauges.\nThe statistical correctness cannot be guaranteed. The same fix can\ncount into the resulting polar sheet multiple times (for different wind gauges).
applyMinimumWindConfidence=Apply minimum wind confidence
applyMinimumWindConfidenceTooltip=If checked the value in the box above will be used as the minimum valid wind confidence during generation.
pleaseSeeToolTips=Please hover over the options to view tooltips where available.
competitorColumnTooltip=Names of the members of this competitor.
sailIdColumnTooltip=Shows the flag of the country and the sail number of the competitor.
@@ -555,6 +555,8 @@ polarSheetWindSteppingMaxDistance=Max. Distanz zu den Windstufen
polarSheetWindSteppingMaxDistanceTooltip=Stellt den maximales Radius um die Windstufen ein,\ndamit keine Fixes vollkommen entfernten Windgeschwindigkeiten\ndazugezogen werden.
polarSheetSplitByWindGauges=Windquellen splitten
polarSheetSplitByWindGaugesTooltip=Das Splitten der Windquellen erlaubt eine einfachere Suche nach Fehlern.\nEs werden für jeden Fix, für alle Windmesser, Daten zum Polardiagramm hinzugefügt.\nDiese Option garantiert keine statistische Aussagekraft.
applyMinimumWindConfidence=Minimale Windkonfidenz anwenden
applyMinimumWindConfidenceTooltip=Falls diese Box markiert ist, wird der Wert in der obigen Box als minimaler Windkonfidenzwert angewendet.
pleaseSeeToolTips=Bitte den Mauszeiger über die Optionen halten um Tooltips zu sehen.
competitorColumnTooltip=Namen der Segler dieses Teilnehmers
sailIdColumnTooltip=Zeigt die Länderflagge und die Segelnummer des Teilnehmers
@@ -28,6 +28,7 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom
private CheckBox useOnlyEstimationForWindDirectionBox;
private WindSpeedSteppingConfiguratorPanel windSteppingBox;
private DoubleBox windSteppingMaxDistanceBox;
private CheckBox applyMinimumWindConfidenceBox;
public PolarDataMiningSettingsDialogComponent(PolarDataMiningSettings settings) {
this.settings = settings;
@@ -37,7 +38,7 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom
@Override
public Widget getAdditionalWidget(DataEntryDialog<?> dialog) {
VerticalPanel vp = new VerticalPanel();
Grid grid = new Grid(14, 2);
Grid grid = new Grid(10, 2);
grid.setCellPadding(5);
vp.add(grid);
setupGrid(grid, dialog);
@@ -60,6 +61,12 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom
grid.setWidget(2, 0, minimumWindConfidenceLabel);
minimumWindConfidenceBox = dialog.createDoubleBox(settings.getMinimumWindConfidence(), 6);
grid.setWidget(2, 1, minimumWindConfidenceBox);
Label applyMinimumWindConfidenceLabel = new Label(stringMessages.applyMinimumWindConfidence() + ":");
applyMinimumWindConfidenceLabel.setTitle(stringMessages.applyMinimumWindConfidenceTooltip());
grid.setWidget(3, 0, applyMinimumWindConfidenceLabel);
applyMinimumWindConfidenceBox = dialog.createCheckbox("");
applyMinimumWindConfidenceBox.setValue(settings.useOnlyEstimatedForWindDirection());
grid.setWidget(3, 1, applyMinimumWindConfidenceBox);
Label useOnlyWindGaugesForWindSpeedLabel = new Label(stringMessages.polarSheetUseOnlyWindGaugeData() + ":");
useOnlyWindGaugesForWindSpeedLabel.setTitle(stringMessages.polarSheetUseOnlyWindGaugeDataTooltip());
grid.setWidget(4, 0, useOnlyWindGaugesForWindSpeedLabel);
@@ -68,30 +75,31 @@ public class PolarDataMiningSettingsDialogComponent implements SettingsDialogCom
grid.setWidget(4, 1, useOnlyWindGaugesForWindSpeedBox);
Label useOnlyEstimationForWindDirectionLabel = new Label(stringMessages.polarSheetUseOnlyEstimationData() + ":");
useOnlyEstimationForWindDirectionLabel.setTitle(stringMessages.polarSheetUseOnlyEstimationDataTooltip());
grid.setWidget(6, 0, useOnlyEstimationForWindDirectionLabel);
grid.setWidget(5, 0, useOnlyEstimationForWindDirectionLabel);
useOnlyEstimationForWindDirectionBox = dialog.createCheckbox("");
useOnlyEstimationForWindDirectionBox.setValue(settings.useOnlyEstimatedForWindDirection());
grid.setWidget(6, 1, useOnlyEstimationForWindDirectionBox);
grid.setWidget(10, 0, new Label(stringMessages.polarSheetNumberOfHistogramColumns() + ":"));
grid.setWidget(5, 1, useOnlyEstimationForWindDirectionBox);
grid.setWidget(6, 0, new Label(stringMessages.polarSheetNumberOfHistogramColumns() + ":"));
numberOfHistogramColumnsBox = dialog.createIntegerBox(settings.getNumberOfHistogramColumns(), 3);
grid.setWidget(10, 1, numberOfHistogramColumnsBox);
grid.setWidget(11, 0, new Label(stringMessages.polarSheetWindSteppingInKnots() + ":"));
grid.setWidget(6, 1, numberOfHistogramColumnsBox);
grid.setWidget(7, 0, new Label(stringMessages.polarSheetWindSteppingInKnots() + ":"));
windSteppingBox = new WindSpeedSteppingConfiguratorPanel(settings.getWindSpeedStepping());
grid.setWidget(11, 1, windSteppingBox);
grid.setWidget(7, 1, windSteppingBox);
Label windSteppingMaxDistanceLabel = new Label(stringMessages.polarSheetWindSteppingMaxDistance() + ":");
windSteppingMaxDistanceLabel.setTitle(stringMessages.polarSheetWindSteppingMaxDistanceTooltip());
grid.setWidget(12, 0, windSteppingMaxDistanceLabel);
grid.setWidget(8, 0, windSteppingMaxDistanceLabel);
windSteppingMaxDistanceBox = dialog.createDoubleBox(settings.getWindSpeedStepping().getMaxDistance(), 6);
grid.setWidget(12, 1, windSteppingMaxDistanceBox);
grid.setWidget(13, 0, new Label(stringMessages.pleaseSeeToolTips()));
grid.setWidget(8, 1, windSteppingMaxDistanceBox);
grid.setWidget(9, 0, new Label(stringMessages.pleaseSeeToolTips()));
}
@Override
public PolarDataMiningSettings getResult() {
return new PolarDataMiningSettingsImpl(minimumGraphDataSizeBox.getValue(), minimumWindConfidenceBox.getValue(),
minimumDataCountPerAngleBox.getValue(), numberOfHistogramColumnsBox.getValue(),
useOnlyWindGaugesForWindSpeedBox.getValue(), useOnlyEstimationForWindDirectionBox.getValue(),
windSteppingBox.getStepping(windSteppingMaxDistanceBox.getValue()));
applyMinimumWindConfidenceBox.getValue(), minimumDataCountPerAngleBox.getValue(),
numberOfHistogramColumnsBox.getValue(), useOnlyWindGaugesForWindSpeedBox.getValue(),
useOnlyEstimationForWindDirectionBox.getValue(), windSteppingBox.getStepping(windSteppingMaxDistanceBox
.getValue()));
}
@Override
@@ -10,6 +10,8 @@ public abstract class PolarDataMiningSettings extends SerializableSettings {
public abstract Integer getMinimumDataCountPerGraph();
public abstract double getMinimumWindConfidence();
public abstract boolean applyMinimumWindConfidence();
public abstract Integer getMinimumDataCountPerAngle();
@@ -7,7 +7,7 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
public static PolarDataMiningSettingsImpl createStandardPolarSettings() {
double[] levels = { 4., 6., 8., 10., 12., 14., 16., 20., 25., 30. };
WindSpeedSteppingWithMaxDistance windStepping = new WindSpeedSteppingWithMaxDistance(levels, 2.5);
return new PolarDataMiningSettingsImpl(50, 0.01, 20, 20, true, true, windStepping);
return new PolarDataMiningSettingsImpl(50, 0.01, true, 20, 20, true, true, windStepping);
}
private static final long serialVersionUID = 2731616509404813790L;
@@ -18,16 +18,18 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
private boolean useOnlyWindGaugesForWindSpeed;
private boolean useOnlyEstimationForWindDirection;
private WindSpeedSteppingWithMaxDistance windStepping;
private boolean applyMinimumWindConfidence;
//GWT
PolarDataMiningSettingsImpl() {};
public PolarDataMiningSettingsImpl(Integer minimumDataCountPerGraph, double minimumWindConfidence,
Integer minimumDataCountPerAngle, Integer numberOfHistogramColumns,
boolean useOnlyWindGaugesForWindSpeed,
boolean useOnlyEstimationForWindDirection, WindSpeedSteppingWithMaxDistance windStepping) {
boolean applyMinimumWindConfidence, Integer minimumDataCountPerAngle, Integer numberOfHistogramColumns,
boolean useOnlyWindGaugesForWindSpeed, boolean useOnlyEstimationForWindDirection,
WindSpeedSteppingWithMaxDistance windStepping) {
this.minimumDataCountPerGraph = minimumDataCountPerGraph;
this.minimumWindConfidence = minimumWindConfidence;
this.applyMinimumWindConfidence = applyMinimumWindConfidence;
this.minimumDataCountPerAngle = minimumDataCountPerAngle;
this.numberOfHistogramColumns = numberOfHistogramColumns;
this.useOnlyWindGaugesForWindSpeed = useOnlyWindGaugesForWindSpeed;
@@ -69,6 +71,11 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
public WindSpeedSteppingWithMaxDistance getWindSpeedStepping() {
return windStepping;
}
@Override
public boolean applyMinimumWindConfidence() {
return applyMinimumWindConfidence;
}
@Override
public boolean areDefault() {
@@ -79,6 +86,7 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + (applyMinimumWindConfidence ? 1231 : 1237);
result = prime * result + ((minimumDataCountPerAngle == null) ? 0 : minimumDataCountPerAngle.hashCode());
result = prime * result + ((minimumDataCountPerGraph == null) ? 0 : minimumDataCountPerGraph.hashCode());
long temp;
@@ -100,6 +108,8 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
if (getClass() != obj.getClass())
return false;
PolarDataMiningSettingsImpl other = (PolarDataMiningSettingsImpl) obj;
if (applyMinimumWindConfidence != other.applyMinimumWindConfidence)
return false;
if (minimumDataCountPerAngle == null) {
if (other.minimumDataCountPerAngle != null)
return false;
@@ -129,6 +139,5 @@ public class PolarDataMiningSettingsImpl extends PolarDataMiningSettings {
return true;
}
}
@@ -11,9 +11,6 @@ public interface HasGPSFixPolarContext {
@Dimension(messageKey="WindRange")
ClusterDTO getWindSpeedRange();
@Dimension(messageKey="WindIsConfident")
Boolean windIsConfident();
@Statistic(messageKey="PolarData")
PolarStatistic getPolarStatistics();
@@ -52,9 +52,4 @@ public class GPSFixWithPolarContext implements HasGPSFixPolarContext {
return competitorPolarContext;
}
@Override
public Boolean windIsConfident() {
return wind.getConfidence() >= settings.getMinimumWindConfidence();
}
}