|
From: <bma...@us...> - 2015-02-12 13:49:54
|
Revision: 9012
http://sourceforge.net/p/fudaa/svn/9012
Author: bmarchan
Date: 2015-02-12 13:49:51 +0000 (Thu, 12 Feb 2015)
Log Message:
-----------
R?\195?\169cup?\195?\169ration des r?\195?\169sultats instantan?\195?\169s filtr?\195?\169s et affichage dans de nouveaux calques
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
Added Paths:
-----------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredFileFormat.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredReader.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivOriginalView.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -40,8 +40,8 @@
* @author Bertrand Marchand (mar...@de...)
*/
public class PivOriginalView implements PivViewI, PivProjectStateListener {
- /** Le nom de la vue en espace image reconditionn\xE9e */
- public static final String TITLE=PivResource.getS("Espace image reconditionn\xE9e");
+ /** Le nom de la vue en espace image source */
+ public static final String TITLE=PivResource.getS("Espace image source");
/** La d\xE9finition de coordonn\xE9e pour X */
private static final EbliCoordinateDefinition DEF_COOR_I=new EbliCoordinateDefinition("I", new EbliFormatter(NonSI.PIXEL));
@@ -92,7 +92,7 @@
}
/**
- * Construction des calques pour l'espace reconditionn\xE9.
+ * Construction des calques pour l'espace image source.
*/
private void buildLayers() {
layers_.clear();
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivRealView.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -92,12 +92,16 @@
PivImageRasterLayer cqRealImg_;
/** L'affichage d'un transect */
ZCalqueLigneBriseeEditable cqTransect_;
- /** L'affichage des r\xE9sultats moyenn\xE9s */
+ /** L'affichage des vitesses moyenn\xE9es */
PivVelResultsLayer cqVelResults;
- /** L'affichage des r\xE9sultats instantan\xE9s */
+ /** L'affichage des vitesses instantan\xE9es */
PivVelResultsLayer cqInstantVelResults_;
+ /** L'affichage des vitesses filtr\xE9es instantan\xE9es */
+ PivVelResultsLayer cqInstantVelFltResults_;
/** L'affichage des r\xE9sultats de d\xE9bit */
ZCalqueFleche cqFlowResults;
+ /** L'affichage des r\xE9sultats instantan\xE9s filtr\xE9s */
+ PivResultsLayer cqInstantFltIso_;
/** L'affichage des r\xE9sultats instantan\xE9s */
PivResultsLayer cqInstantIso_;
/** L'affichage des r\xE9sultats moyenn\xE9s */
@@ -110,7 +114,9 @@
PivTransectModel mdlTransect;
PivFlowResultsModel mdlFlowResults;
PivVelResultsModel mdlInstantVelResults;
+ PivVelResultsModel mdlInstantVelFltResults;
PivResultsModel mdlInstantResults;
+ PivResultsModel mdlInstantFltResults;
PivResultsModel mdlAverageResults;
/**
@@ -181,7 +187,7 @@
}
/**
- * Construction des calques pour l'espace reconditionn\xE9.
+ * Construction des calques.
*/
private void buildLayers() {
layers_.clear();
@@ -218,7 +224,7 @@
cqRealImg_.setTitle(PivResource.getS("Image transform\xE9e"));
cqRealImg_.setName("cqRealImg");
- // Layer des vitesses resultantes.
+ // Layer des vitesses moyennes.
cqVelResults = new PivVelResultsLayer();
cqVelResults.setTitle(PivResource.getS("Vit. surf. moy."));
cqVelResults.setLongTitle(PivResource.getS("Vitesses de surface moyenn\xE9es"));
@@ -226,6 +232,7 @@
cqVelResults.setName("cqRealVel");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
cqVelResults.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.RED));
+ cqVelResults.setVisible(false);
cqVelResults.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if ("visible".equals(evt.getPropertyName())) {
@@ -234,7 +241,7 @@
}
});
- // Layer des vitesses instantan\xE9es resultantes.
+ // Layer des vitesses instantan\xE9es non filtr\xE9es.
cqInstantVelResults_ = new PivVelResultsLayer();
cqInstantVelResults_.setTitle(PivResource.getS("Vit. surf. inst."));
cqInstantVelResults_.setLongTitle(PivResource.getS("Vitesses de surface instantan\xE9es"));
@@ -242,14 +249,32 @@
cqInstantVelResults_.setName("cqInstantVel");
// Donne la couleur des fl\xE8ches si pas de palette de couleurs.
cqInstantVelResults_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.ORANGE));
- cqInstantVelResults_.addPropertyChangeListener(new PropertyChangeListener() {
- public void propertyChange(PropertyChangeEvent evt) {
- if ("visible".equals(evt.getPropertyName())) {
+ cqInstantVelResults_.setVisible(false);
+// cqInstantVelResults_.addPropertyChangeListener(new PropertyChangeListener() {
+// public void propertyChange(PropertyChangeEvent evt) {
+// if ("visible".equals(evt.getPropertyName())) {
// pnLayers_.getShowVelocitiesAction().setSelected((Boolean)evt.getNewValue());
- }
- }
- });
+// }
+// }
+// });
+ // Layer des vitesses instantan\xE9es filtr\xE9es.
+ cqInstantVelFltResults_ = new PivVelResultsLayer();
+ cqInstantVelFltResults_.setTitle(PivResource.getS("Vit. surf. inst. filtr\xE9es"));
+ cqInstantVelFltResults_.setLongTitle(PivResource.getS("Vitesses de surface instantan\xE9es filtr\xE9es"));
+ cqInstantVelFltResults_.setTitleModifiable(true);
+ cqInstantVelFltResults_.setName("cqInstantVelFlt");
+ // Donne la couleur des fl\xE8ches si pas de palette de couleurs.
+ cqInstantVelFltResults_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.GREEN.darker()));
+ cqInstantVelFltResults_.setVisible(false);
+// cqInstantVelFltResults_.addPropertyChangeListener(new PropertyChangeListener() {
+// public void propertyChange(PropertyChangeEvent evt) {
+// if ("visible".equals(evt.getPropertyName())) {
+// pnLayers_.getShowVelocitiesAction().setSelected((Boolean)evt.getNewValue());
+// }
+// }
+// });
+
// Layer des d\xE9bits.
cqFlowResults = new ZCalqueFleche() {
@Override
@@ -282,6 +307,14 @@
cqTransect_.setEditor(pnLayers_.getEditor());
getNewTransectAction().setTransectLayer(cqTransect_);
+ // Layer des iso couleurs instantan\xE9es filtr\xE9es
+ cqInstantFltIso_ = new PivResultsLayer();
+ cqInstantFltIso_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.LIGHT_GRAY));
+ cqInstantFltIso_.setTitle(PivResource.getS("R\xE9sultats inst. filtr\xE9s"));
+ cqInstantFltIso_.setName("cqInstantFltResults");
+ cqInstantFltIso_.setDestructible(false);
+ cqInstantFltIso_.setVisible(false);
+
// Layer des iso couleurs instantan\xE9es
cqInstantIso_ = new PivResultsLayer();
cqInstantIso_.setLineModel(0, new TraceLigneModel(TraceLigne.LISSE, 1, Color.LIGHT_GRAY));
@@ -298,12 +331,14 @@
cqAverageIso_.setDestructible(false);
cqAverageIso_.setVisible(false);
+ layers_.add(cqTransect_);
+ layers_.add(cqRealOrthoPoints_);
layers_.add(cqVelResults);
+ layers_.add(cqInstantVelFltResults_);
layers_.add(cqInstantVelResults_);
layers_.add(cqFlowResults);
- layers_.add(cqTransect_);
- layers_.add(cqRealOrthoPoints_);
layers_.add(cqAverageIso_);
+ layers_.add(cqInstantFltIso_);
layers_.add(cqInstantIso_);
layers_.add(cqRealImg_);
}
@@ -326,7 +361,7 @@
cqRealImg_.setModele(mdlRealImage);
if (prj_.getAverageResults()!=null) {
- mdlVelResults=new PivVelResultsModel(new PivResultsI[]{prj_.getAverageResults()});
+ mdlVelResults=new PivVelResultsModel(prj_.getAverageResults());
cqVelResults.setModele(mdlVelResults);
cqVelResults.setVisible(false);
}
@@ -336,6 +371,12 @@
cqInstantVelResults_.setModele(mdlInstantVelResults);
cqInstantVelResults_.setVisible(false);
}
+
+ if (prj_.getInstantFilteredResults()!=null) {
+ mdlInstantVelFltResults=new PivVelResultsModel(prj_.getInstantFilteredResults());
+ cqInstantVelFltResults_.setModele(mdlInstantVelFltResults);
+ cqInstantVelFltResults_.setVisible(false);
+ }
mdlFlowResults=new PivFlowResultsModel();
mdlFlowResults.setProjet(prj_);
@@ -351,6 +392,11 @@
cqInstantIso_.setModele(mdlInstantResults);
}
+ if (prj_.getInstantFilteredResults()!=null) {
+ mdlInstantFltResults=new PivResultsModel(prj_.getInstantFilteredResults(),null);
+ cqInstantFltIso_.setModele(mdlInstantFltResults);
+ }
+
if (prj_.getAverageResults()!=null) {
mdlAverageResults=new PivResultsModel(new PivResultsI[]{prj_.getAverageResults()}, null);
cqAverageIso_.setModele(mdlAverageResults);
@@ -417,14 +463,14 @@
// Le bouton de lock entre images et vitesses instantann\xE9es.
btLock_ = new BuTransparentToggleButton(PivResource.PIV.getIcon("non-lie-horizontal"), PivResource.PIV.getIcon("lie-horizontal"));
btLock_.setBorder(BorderFactory.createEmptyBorder(5, 3, 5, 3));
- btLock_.setToolTipText(PivResource.getS("Lie/d\xE9lie l'image et les vitesses"));
+ btLock_.setToolTipText(PivResource.getS("Lie/d\xE9lie l'image et le r\xE9sultat instantan\xE9"));
btLock_.setEnabled(false);
// La liste d\xE9roulante des r\xE9sultats.
cbVel_ = new BuComboBox();
cbVel_.setPreferredSize(new Dimension(180, cbVel_.getPreferredSize().height));
cbVel_.setMaximumSize(cbVel_.getPreferredSize());
- cbVel_.setToolTipText(PivResource.getS("Affiche les vitesses instantan\xE9es s\xE9lectionn\xE9es"));
+ cbVel_.setToolTipText(PivResource.getS("Affiche le r\xE9sultat instantan\xE9 s\xE9lectionn\xE9"));
cbVel_.setEnabled(false);
cbVel_.addItemListener(new ItemListener() {
@@ -447,14 +493,23 @@
private void setSelectedResult(int _ind) {
if (cqInstantVelResults_!=null && cqInstantVelResults_.modeleDonnees()!=null) {
- ((PivVelResultsModel)cqInstantVelResults_.modeleDonnees()).setSelectedResult(_ind);
+ cqInstantVelResults_.modeleDonnees().setSelectedResult(_ind);
// Pour que le calque soit r\xE9affich\xE9.
cqInstantVelResults_.repaint();
}
+ if (cqInstantVelFltResults_!=null && cqInstantVelFltResults_.modeleDonnees()!=null) {
+ cqInstantVelFltResults_.modeleDonnees().setSelectedResult(_ind);
+ // Pour que le calque soit r\xE9affich\xE9.
+ cqInstantVelFltResults_.repaint();
+ }
if (cqInstantIso_!=null && cqInstantIso_.modeleDonnees()!=null) {
cqInstantIso_.modele().setCurrentTimeIdx(_ind);
cqInstantIso_.repaint();
}
+ if (cqInstantFltIso_!=null && cqInstantFltIso_.modeleDonnees()!=null) {
+ cqInstantFltIso_.modele().setCurrentTimeIdx(_ind);
+ cqInstantFltIso_.repaint();
+ }
}
private void setSelectedImage(int _ind) {
@@ -478,6 +533,12 @@
cqInstantIso_.repaint();
}
}
+ else if (cq==cqInstantFltIso_) {
+ if (cqInstantFltIso_.modele()!=null) {
+ cqInstantFltIso_.modele().setCurrentVar(_var);
+ cqInstantFltIso_.repaint();
+ }
+ }
else if (cq==cqAverageIso_) {
if (cqAverageIso_.modele()!=null) {
cqAverageIso_.modele().setCurrentVar(_var);
@@ -521,7 +582,7 @@
cbImg_.setEnabled(imgs.length > 0);
}
- // La liste des vitesses instantan\xE9es
+ // La liste des r\xE9sultats instantan\xE9s
PivResultsI[] instantRes=prj_.getInstantResults();
if (instantRes != null) {
for (int i = 0; i < instantRes.length; i++) {
@@ -561,6 +622,10 @@
cbVar_.setEnabled(true);
cbVar_.setSelectedItem(cqInstantIso_.modele().getCurrentVar());
}
+ else if (cq==cqInstantFltIso_ && cqInstantFltIso_.modele()!=null) {
+ cbVar_.setEnabled(true);
+ cbVar_.setSelectedItem(cqInstantFltIso_.modele().getCurrentVar());
+ }
else {
cbVar_.setEnabled(false);
}
@@ -609,6 +674,20 @@
majTools();
}
+ else if ("instantFilteredResults".equals(_prop)) {
+ if (_prj.getInstantFilteredResults()!=null) {
+ mdlInstantFltResults=new PivResultsModel(prj_.getInstantFilteredResults(),null);
+ mdlInstantVelFltResults=new PivVelResultsModel(prj_.getInstantFilteredResults());
+ }
+ else {
+ mdlInstantResults=null;
+ mdlInstantVelFltResults=null;
+ }
+ cqInstantFltIso_.setModele(mdlInstantFltResults);
+ cqInstantVelFltResults_.setModele(mdlInstantVelFltResults);
+
+ majTools();
+ }
pnLayers_.getVueCalque().repaint();
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeAverageAction.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -83,7 +83,7 @@
CtuluAnalyze ana=new CtuluAnalyze();
// Filtrage
- PivExeLauncher.instance().launchFilterVelocities(ana, impl.getCurrentProject(),this);
+ PivExeLauncher.instance().launchFilterInstantResultats(ana, impl.getCurrentProject(),this);
if (ana.containsErrorOrFatalError()) {
impl.error(ana.getResume());
return;
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivImportGRPAction.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -85,6 +85,6 @@
@Override
public String getEnableCondition() {
- return PivResource.getS("Il doit exister au moins une image reconditionn\xE9e");
+ return PivResource.getS("Il doit exister au moins une image source");
}
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOriginalViewAction.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -48,7 +48,7 @@
return false;
}
if (!impl.getCurrentProject().hasSrcImages()) {
- impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet doit contenir au moins 1 image reconditionn\xE9e"));
+ impl.error(PivResource.getS("Erreur"), PivResource.getS("Le projet doit contenir au moins 1 image source"));
return false;
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -239,7 +239,7 @@
@Override
public String getEnableCondition() {
- return PivResource.getS("Il doit exister au moins une image reconditionn\xE9e");
+ return PivResource.getS("Il doit exister au moins une image source");
}
/**
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoParamAction.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -35,7 +35,7 @@
}
public String getEnableCondition() {
- return PivResource.getS("Il doit exister au moins une image reconditionn\xE9e");
+ return PivResource.getS("Il doit exister au moins une image source");
}
/**
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivExeLauncher.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -439,7 +439,7 @@
// On renomme le fichier
new File(prjVelRaw,"piv.dat").renameTo(new File(prjVelRaw,"piv"+computeImgNumber(i+1)+".dat"));
- prog=(i+1)*90/(imgOut.length-1);
+ prog=(i+1)*90/(imgOut.length-1)+5;
if (_task!=null)
_task.setProgression(prog);
}
@@ -529,17 +529,15 @@
}
/**
- * Lance le filtrage des vitesses et leur restitution dans l'espace r\xE9el, en tenant compte des resultats
- * instantan\xE9s s\xE9lectionn\xE9s.
+ * Lance le filtrage des r\xE9sultats et leur restitution dans l'espace r\xE9el.
* Le filtrage est fait dans le r\xE9pertoire projet.
*
* @param _ana L'analyse pour la tache ex\xE9cut\xE9e.
* @param _prj Le projet.
* @param _task La tache en cours d'execution.
* @return true : Tout s'est bien d\xE9roul\xE9.
- * @see #launchPiv
*/
- public boolean launchFilterVelocities(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) {
+ public boolean launchFilterInstantResultats(CtuluAnalyze _ana, PivProject _prj, CtuluTaskOperationGUI _task) {
File prjRoot=_prj.getRoot();
File prjOutputs=new File(prjRoot,OUTPUT_DIR);
File prjVelFlt=new File(prjRoot,VEL_FILTER_DIR);
@@ -548,16 +546,18 @@
prjVelFlt.mkdir();
for (File f : prjVelFlt.listFiles()) f.delete();
- String desc=PivResource.getS("Filtrage des vitesses...");
+ String desc=PivResource.getS("Filtrage des r\xE9sultats...");
FuLog.trace(desc);
if (_task!=null) {
_task.setDesc(desc);
_task.setProgression(0);
}
+ PivResultsI[] res=null;
+
try {
// Cr\xE9ation du fichier contenant la liste des fichiers piv.dat obtenus par calcul.
- _prj.saveUsedInstantResults();
+ _prj.saveInstantResultsList(true);
// PIV_param.dat
File paramFile=new File(prjOutputs, "PIV_param.dat");
@@ -576,7 +576,7 @@
String outs = FuLib.runProgram(new String[]{exePath+File.separator+EXE.filter + EXE_EXT}, prjRoot);
if (!outs.trim().equals("")) {
- _ana.addError(PivResource.getS("Erreur de filtrage des vitesses:\n")+outs);
+ _ana.addError(PivResource.getS("Erreur de filtrage des r\xE9sultats:\n")+outs);
return false;
}
@@ -588,12 +588,16 @@
_task.setProgression(80);
FuLog.trace(PivResource.getS("Filtrage ok."));
+
+ // Chargement des r\xE9sultats
+ res=_prj.loadFilteredInstantResults(_task);
}
catch (IOException ex) {
_ana.addError(ex.getMessage());
return false;
}
finally {
+ _prj.setInstantFilteredResults(res);
}
return true;
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredFileFormat.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredFileFormat.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredFileFormat.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -0,0 +1,49 @@
+package org.fudaa.fudaa.piv.io;
+
+import org.fudaa.ctulu.fileformat.FileFormatUnique;
+import org.fudaa.ctulu.fileformat.FileReadOperationAbstract;
+import org.fudaa.ctulu.fileformat.FileWriteOperationAbstract;
+import org.fudaa.fudaa.piv.PivResource;
+
+/**
+ * La classe d\xE9crivant le format d'un fichier pivxxxx.dat contenant les
+ * r\xE9sultats instantan\xE9es filtr\xE9s en espace r\xE9el.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivInstantFilteredFileFormat extends FileFormatUnique {
+
+ private PivInstantFilteredFileFormat() {
+ super(1);
+ nom_ = PivResource.getS("PIV instant filtered real results");
+ description_ = PivResource.getS("Fichier contenant les r\xE9sultats instantan\xE9s filtr\xE9s r\xE9els");
+ extensions_=new String[]{"dat"};
+ }
+ static final PivInstantFilteredFileFormat INSTANCE = new PivInstantFilteredFileFormat();
+
+ /**
+ * Retourne le singleton pour instancier un reader ou un writer.
+ * @return Le singleton
+ */
+ public static PivInstantFilteredFileFormat getInstance() {
+ return INSTANCE;
+ }
+
+ /**
+ * Cr\xE9ation d'un reader.
+ * @return Le reader
+ */
+ public FileReadOperationAbstract createReader() {
+ return new PivInstantFilteredReader();
+ }
+
+ /**
+ * Cr\xE9ation d'un writer.
+ * @return Le writer
+ */
+ public FileWriteOperationAbstract createWriter() {
+ return null;
+ }
+
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredFileFormat.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredReader.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredReader.java (rev 0)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredReader.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -0,0 +1,123 @@
+/**
+ * @creation 2002-11-21
+ * @modification $Date: 2007/05/04 13:47:27 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.fudaa.piv.io;
+
+import java.io.EOFException;
+import java.io.File;
+import java.io.IOException;
+
+import org.fudaa.ctulu.CtuluActivity;
+import org.fudaa.dodico.fortran.FileOpReadCharSimpleAbstract;
+import org.fudaa.fudaa.piv.PivResource;
+import org.fudaa.fudaa.piv.metier.PivResultsDefault;
+import org.fudaa.fudaa.piv.metier.PivResultsI.TYPE;
+
+/**
+ * Un lecteur pour les fichiers des r\xE9sultats instantan\xE9es filtr\xE9s en espace r\xE9el.
+ *
+ * @author Bertrand Marchand (mar...@de...)
+ * @version $Id$
+ */
+public class PivInstantFilteredReader extends FileOpReadCharSimpleAbstract implements CtuluActivity {
+
+ /** Drapeau d'interruption */
+ boolean bstop_;
+ /** Nb d'octets du fichier a lire pour stat sur pourcentage effectu\xE9 */
+ int nbOctets;
+
+ /**
+ * Le constructeur.
+ */
+ public PivInstantFilteredReader() {
+ }
+
+ /**
+ * Lit les r\xE9sultats de vitesses et les retourne.
+ * @return Les r\xE9sultats
+ */
+ protected PivResultsDefault internalRead() {
+ return readVelocities();
+ }
+
+ protected void processFile(final File _f) {
+ nbOctets = (int) _f.length();
+ }
+
+ /**
+ * Utilise FortranReader ( donc un buffer).
+ *
+ * @return les infos non bloquantes.
+ */
+ private synchronized PivResultsDefault readVelocities() {
+ // TODO Bertrand : A verifier
+ PivResultsDefault res = new PivResultsDefault(new TYPE[]{TYPE.VX,TYPE.VY,TYPE.CORREL,TYPE.NORME,TYPE.OMEGA,TYPE.DIVERG});
+
+ if (super.in_ == null) {
+ analyze_.addErrorFromFile(PivResource.getS("Flux d'entr\xE9e non trouv\xE9"), 0);
+ return null;
+ }
+
+ try {
+ int lu=0;
+ boolean afficheAvance = false;
+ if ((progress_ != null) && (nbOctets > 0)) {
+ afficheAvance = true;
+ progress_.setProgression(0);
+ }
+ int pourcentageEnCours = 0;
+
+ in_.setJumpBlankLine(true);
+
+ // Boucle jusque fin de fichier. Exception EOF si fin.
+ while (true) {
+ in_.readFields();
+
+ double[] vals=new double[res.getResults().length];
+ for (int i=0; i<3/*vals.length*/; i++) {
+ vals[i]=in_.doubleField(i+2);
+ }
+ // Norme
+ vals[3]=Math.sqrt(vals[0]*vals[0]+vals[1]*vals[1]);
+ // Les autres
+ for (int i=4; i<vals.length; i++) {
+ vals[i]=i;
+ }
+ res.addPoint(in_.doubleField(0), in_.doubleField(1), vals);
+
+ lu+=26; // Si le formattage en fortran
+
+ if ((afficheAvance) && ((lu * 100 / nbOctets) >= (pourcentageEnCours + 20))) {
+ pourcentageEnCours += 20;
+ progress_.setProgression(pourcentageEnCours);
+ }
+ }
+ }
+ // Sortie normale
+ catch (final EOFException e) {
+ }
+ catch (final IOException e) {
+ analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber());
+ }
+ catch (final NumberFormatException e) {
+ analyze_.addErrorFromFile(PivResource.getS("Une erreur de lecture s'est produite"), in_.getLineNumber());
+ }
+
+ if (progress_ != null) {
+ progress_.setProgression(100);
+ }
+
+ return res;
+ }
+
+ /**
+ * Interruption asynchrone de l'activit\xE9 de lecture.
+ */
+ public void stop() {
+ bstop_ = true;
+ }
+}
Property changes on: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/io/PivInstantFilteredReader.java
___________________________________________________________________
Added: svn:keywords
## -0,0 +1 ##
+Id
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOriginalImageModel.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -13,7 +13,7 @@
import org.fudaa.fudaa.piv.metier.PivProject;
/**
- * Un modele pour l'image reconditionn\xE9e.
+ * Un modele pour l'image source.
*
* @author Bertrand Marchand (mar...@de...)
* @version $Id$
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -22,7 +22,7 @@
/**
* Un modele pour les points d'orthorectification, soit dans l'espace d'image
- * reconditionn\xE9e, soit dans l'espace r\xE9el.
+ * source, soit dans l'espace r\xE9el.
*
* @author Bertrand Marchand (mar...@de...)
* @version $Id$
@@ -68,7 +68,7 @@
/**
* Construction du mod\xE8le.
- * @param _type Le mod\xE8le est d\xE9fini soit dans l'espace d'image reconditionn\xE9e
+ * @param _type Le mod\xE8le est d\xE9fini soit dans l'espace d'image source
* {@linkplain PivVisuPanel#MODE_ORIGINAL_VIEW}, soit dans l'espace r\xE9el
* {@linkplain PivVisuPanel#MODE_REAL_VIEW}.
*/
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivVelResultsModel.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -31,7 +31,7 @@
/**
* Le constructeur.
*/
- public PivVelResultsModel(PivResultsI[] _res) {
+ public PivVelResultsModel(PivResultsI... _res) {
results_=_res;
}
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2015-02-09 11:29:41 UTC (rev 9011)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/metier/PivProject.java 2015-02-12 13:49:51 UTC (rev 9012)
@@ -45,6 +45,7 @@
import org.fudaa.fudaa.piv.io.PivGridParamFileFormat;
import org.fudaa.fudaa.piv.io.PivHFileFormat;
import org.fudaa.fudaa.piv.io.PivImgRefFileFormat;
+import org.fudaa.fudaa.piv.io.PivInstantFilteredFileFormat;
import org.fudaa.fudaa.piv.io.PivInstantScalFileFormat;
import org.fudaa.fudaa.piv.io.PivInstantVelFileFormat;
import org.fudaa.fudaa.piv.io.PivParamFileFormat;
@@ -61,7 +62,7 @@
public class PivProject implements PivProjectStateI {
/** Le repertoire projet des fichiers de donn\xE9es */
public static final String OUTPUT_DIR="outputs.dir";
- /** Le r\xE9pertoire projet des images reconditionn\xE9es */
+ /** Le r\xE9pertoire projet des images sources */
public static final String IMG_PGM_DIR="img_pgm";
/** Le r\xE9pertoire projet des images transform\xE9es */
public static final String IMG_TRANSF_DIR="img_transf";
@@ -71,6 +72,8 @@
public static final String VEL_REAL_DIR="vel_real";
/** Le r\xE9pertoire des scalaires instantan\xE9s */
public static final String VEL_SCAL_DIR="vel_scal";
+ /** Le r\xE9pertoire des vitesses instantan\xE9es filtr\xE9es. */
+ public static final String VEL_FILTER_DIR="vel_filter";
public static final FileFilter FLT_FILES=new FileFilter() {
@Override
@@ -105,6 +108,8 @@
protected PivResultsI averageResults;
/** Les r\xE9sultats instantan\xE9s */
protected PivResultsI[] instantResults;
+ /** Les r\xE9sultats instantan\xE9s filtr\xE9s */
+ protected PivResultsI[] instantFilteredResults;
/** Les r\xE9sultats instantan\xE9s utilis\xE9s pour le calcul des vitesses moyennes. */
protected boolean[] usedInstantResults;
/** Les r\xE9sultats de d\xE9bit calcul\xE9 */
@@ -113,7 +118,7 @@
protected Dimension imgTransfSize=null;
/** True : Les images transform\xE9es ont \xE9t\xE9 modifi\xE9es */
protected boolean areTransfImagesChanged=true;
- /** La taille des images reconditionn\xE9es */
+ /** La taille des images sources */
protected Dimension imgPgmSize=null;
/** True : Les images d'origine ont \xE9t\xE9 modifi\xE9es */
protected boolean areSrcImagesChanged=true;
@@ -122,7 +127,7 @@
protected HashSet<PivProjectStateListener> listeners=new HashSet<PivProjectStateListener>();
/** L'etat modifi\xE9 ou non du projet */
protected boolean isModified=false;
- /** L'input stream pour l'image cache reconditionn\xE9e */
+ /** L'input stream pour l'image cache source */
ImageInputStream cachePgmInputStream_;
/** L'input stream pour l'image cache transform\xE9e */
ImageInputStream cacheTransfInputStream_;
@@ -171,8 +176,8 @@
}
/**
- * Le projet contient-il au moins une image reconditionn\xE9e ?
- * @return true si le projet contient au moins 1 image reconditionn\xE9e.
+ * Le projet contient-il au moins une image source ?
+ * @return true si le projet contient au moins 1 image source.
*/
public boolean hasSrcImages() {
return getSrcImageFiles().length>0;
@@ -778,11 +783,12 @@
// Les r\xE9sultats moyennes
averageResults=loadAverageResults(_prog);
- // Les r\xE9sultats instantan\xE9es dans l'espace r\xE9el.
+ // Les r\xE9sultats instantan\xE9s
instantResults=loadInstantResults(_prog);
-
+ // Les r\xE9sultats instantan\xE9s filtr\xE9s
+ instantFilteredResults=loadFilteredInstantResults(_prog);
// Et ceux utilis\xE9s pour le calcul de moyenne
- usedInstantResults=loadUsedInstantResults(_prog);
+ usedInstantResults=loadInstantResultsList(_prog);
// Les param\xE8tres globaux
PivGlobalXmlFileFormat.Param paramXml=loadGlobalData(_prog);
@@ -946,6 +952,31 @@
}
/**
+ * Charge les resultats instantan\xE9s filtr\xE9s dans l'espace r\xE9el, suivant l'ordre
+ * alphab\xE9tique des fichiers.
+ *
+ * @param _prog L'interface de progression.
+ * @return Les resultats ou <tt>null</tt> si aucun r\xE9sultat.
+ */
+ public PivResultsI[] loadFilteredInstantResults(ProgressionInterface _prog) {
+ File[] instantFltFiles=new File(rootPath,VEL_FILTER_DIR).listFiles();
+
+ if (instantFltFiles!=null && instantFltFiles.length>0) {
+ Arrays.sort(instantFltFiles);
+
+ PivResultsI[] instantRes=new PivResultsI[instantFltFiles.length];
+ for (int i=0; i<instantFltFiles.length; i++) {
+
+ FileReadOperationAbstract reader=PivInstantFilteredFileFormat.getInstance().createReader();
+ CtuluIOOperationSynthese ret=reader.read(instantFltFiles[i], _prog);
+ instantRes[i]=(PivResultsI)ret.getSource();
+ }
+ return instantRes;
+ }
+ return null;
+ }
+
+ /**
* Charge les resultats moyenn\xE9s dans l'espace r\xE9el.
*
* @param _prog L'interface de progression.
@@ -977,7 +1008,7 @@
* @param _prog L'interface de progression.
* @return L'utilisation du resultat si l'index correspondant est true.
*/
- public boolean[] loadUsedInstantResults(ProgressionInterface _prog) {
+ public boolean[] loadInstantResultsList(ProgressionInterface _prog) {
boolean[] res;
File[] instantVelFiles=getRawVelocityFiles();
@@ -1099,7 +1130,7 @@
}
// Les resultats utilis\xE9s pour le calcul de vitesse moyenne.
- saveUsedInstantResults();
+ saveInstantResultsList(false);
// Les donn\xE9es globales
saveGlobalData();
@@ -1109,10 +1140,11 @@
}
/**
- * Sauvegarde sur une liste les resultats instantan\xE9es utilis\xE9s pour le calcul des
+ * Sauvegarde sur une liste les resultats instantan\xE9s utilis\xE9s pour le calcul des
* resultats moyenn\xE9s.
+ * @param _all Tous les r\xE9sultats sont list\xE9s, sinon seulement ceux pour le calcul de moyenne.
*/
- public void saveUsedInstantResults() {
+ public void saveInstantResultsList(boolean _all) {
File[] instantVelFiles=getRawVelocityFiles();
// Pas de r\xE9sultats instantan\xE9s
@@ -1126,7 +1158,7 @@
// que la taille du tableau usedInstantResults. Ce n'est pas toujours le cas,
// par exemple quand le calcul s'est mal pass\xE9.
for (int i=0; i<usedInstantResults.length; i++) {
- if (usedInstantResults[i])
+ if (_all || usedInstantResults[i])
out.println(instantVelFiles[i].getName());
}
}
@@ -1330,6 +1362,28 @@
}
/**
+ * Retourne les r\xE9sultats instantan\xE9s filtr\xE9s.
+ * @return Les r\xE9sultats, ou <tt>null</tt> s'ils n'ont pas \xE9t\xE9 d\xE9finis.
+ */
+ public PivResultsI[] getInstantFilteredResults() {
+ return instantFilteredResults;
+ }
+
+ /**
+ * Definit les r\xE9sultats instantan\xE9s filtr\xE9s de calcul, et notifie que le projet a \xE9t\xE9
+ * modifi\xE9.
+ * @param _res Les r\xE9sultats. <tt>null</tt> est autoris\xE9.
+ */
+ public void setInstantFilteredResults(PivResultsI[] _res) {
+ if (CtuluLibArray.isEquals(instantFilteredResults, _res)) return;
+
+ instantFilteredResults=_res;
+
+ isModified=true;
+ fireProjectStateChanged("instantFilteredResults");
+ }
+
+ /**
* Retourne les r\xE9sultats instantan\xE9s.
* @return Les r\xE9sultats, ou <tt>null</tt> s'ils n'ont pas \xE9t\xE9 d\xE9finis.
*/
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|