|
From: <bma...@us...> - 2011-12-01 13:46:49
|
Revision: 6747
http://fudaa.svn.sourceforge.net/fudaa/?rev=6747&view=rev
Author: bmarchan
Date: 2011-12-01 13:46:42 +0000 (Thu, 01 Dec 2011)
Log Message:
-----------
Add : Possibilit?\195?\169 de modiification de structure pour une g?\195?\169om?\195?\169trie
Modified Paths:
--------------
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.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/layer/PivCntGridModel.java
trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-01 13:43:22 UTC (rev 6746)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/PivTransfView.java 2011-12-01 13:46:42 UTC (rev 6747)
@@ -17,12 +17,10 @@
import javax.units.NonSI;
import org.fudaa.ebli.calque.BCalqueAffichage;
-import org.fudaa.ebli.calque.ZCalqueImageRaster;
import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.ZCalqueLigneBriseeEditable;
import org.fudaa.ebli.calque.edition.ZCalquePointEditable;
import org.fudaa.ebli.calque.edition.ZModelePointEditable;
-import org.fudaa.ebli.commun.EbliActionAbstract;
import org.fudaa.ebli.commun.EbliCoordinateDefinition;
import org.fudaa.ebli.commun.EbliFormatter;
import org.fudaa.ebli.commun.EbliUIProperties;
@@ -177,6 +175,13 @@
}
/**
+ * @return Le calque comportant le contour de grille
+ */
+ public ZCalqueLigneBriseeEditable getCntGridLayer() {
+ return cqCntGrille_;
+ }
+
+ /**
* Construction des outils sp\xE9cifiques \xE0 cette vue.
*/
private void buildTools() {
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-12-01 13:43:22 UTC (rev 6746)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivComputeGridDefinitionAction.java 2011-12-01 13:46:42 UTC (rev 6747)
@@ -7,13 +7,15 @@
*/
package org.fudaa.fudaa.piv.action;
-import com.memoire.bu.BuDesktop;
import java.awt.Container;
+
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import javax.swing.SwingUtilities;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+
+import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.ZCalqueEditionInteraction;
import org.fudaa.ebli.calque.edition.ZCalqueEditionInteractionTargetI;
@@ -29,6 +31,8 @@
import org.fudaa.fudaa.piv.metier.PivCntGrid;
import org.fudaa.fudaa.piv.metier.PivGrid;
+import com.memoire.bu.BuDesktop;
+
/**
* Une action pour saisir le contour de grille et la grille de calcul.
*
@@ -66,8 +70,9 @@
* @return true.
*/
public boolean addNewPolygone(GrPolygone _pg, ZEditionAttributesDataI _data) {
- if (_pg.sommets_.nombre()!=4) {
- pnCalques_.getCtuluUI().error(PivResource.getS("Le contour de grille doit comporter 4 sommets."));
+ CtuluAnalyze ana=new CtuluAnalyze();
+ if (!pnCalques_.getTransfView().getCntGridLayer().modeleDonnees().isDataValid(_pg.toCoordinateSequence(), _data, ana)) {
+ pnCalques_.getCtuluUI().error(ana.getFatalError());
cqEdition_.cancelEdition();
atomicChanged();
return true;
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 2011-12-01 13:43:22 UTC (rev 6746)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/action/PivOrthoGRPAction.java 2011-12-01 13:46:42 UTC (rev 6747)
@@ -7,13 +7,11 @@
*/
package org.fudaa.fudaa.piv.action;
-import com.memoire.bu.BuButton;
-import com.memoire.bu.BuDesktop;
-import com.memoire.fu.FuLog;
import java.awt.Container;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
+
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
@@ -21,6 +19,8 @@
import javax.swing.SwingUtilities;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+
+import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ebli.calque.dessin.DeForme;
import org.fudaa.ebli.calque.edition.BPaletteEdition;
import org.fudaa.ebli.calque.edition.BPaletteEditionClientInterface;
@@ -38,6 +38,10 @@
import org.fudaa.fudaa.piv.layer.PivOrthoPointsModel;
import org.fudaa.fudaa.piv.metier.PivOrthoPoint;
+import com.memoire.bu.BuButton;
+import com.memoire.bu.BuDesktop;
+import com.memoire.fu.FuLog;
+
/**
* Une action pour saisir les points de r\xE9f\xE9rence au sol. Cette action est
* utilis\xE9e comme controller \xE0 la palette et au calque d'\xE9dition d\xE9di\xE9.
@@ -79,26 +83,19 @@
* @return Si false, la saisie n'est pas stopp\xE9e.
*/
public boolean addNewMultiPoint(GrPolyligne _pg, ZEditionAttributesDataI _data) {
- if (_pg.sommets_.nombre() < 6) {
- pnCalques_.getCtuluUI().error(PivResource.getS("Le nombre de points doit \xEAtre au minimum de 6."));
-// pnCalques_.getCalqueDessin().cancelEdition();
-// atomicChanged();
+ CtuluAnalyze ana=new CtuluAnalyze();
+ if (!pnCalques_.getOriginalView().getOrthoPointsLayer().modeleDonnees().isDataValid(_pg.toCoordinateSequence(), _data, ana)) {
+ pnCalques_.getCtuluUI().error(ana.getFatalError());
return false;
}
-
- // Controle des valeurs des points r\xE9els.
+
+ // Valeurs des points r\xE9els.
GrPoint[] realPts = new GrPoint[_pg.sommets_.nombre()];
for (int i = 0; i < _pg.sommets_.nombre(); i++) {
Double x = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_XR, i);
Double y = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_YR, i);
Double z = (Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i);
realPts[i] = new GrPoint(x.doubleValue(), y.doubleValue(), z.doubleValue());
- for (int j = 0; j < i; j++) {
- if (realPts[j].distance(realPts[i]) == 0) {
- pnCalques_.getCtuluUI().error(PivResource.getS("Les points {0} et {1} ont des coordonn\xE9es r\xE9elles confondues.",j+1,i+1));
- return false;
- }
- }
}
// Cr\xE9ation des orthopoints => les coordonn\xE9es images sont invers\xE9es.
Modified: trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java
===================================================================
--- trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-12-01 13:43:22 UTC (rev 6746)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivCntGridModel.java 2011-12-01 13:46:42 UTC (rev 6747)
@@ -1,15 +1,19 @@
package org.fudaa.fudaa.piv.layer;
-import com.vividsolutions.jts.geom.CoordinateSequence;
+import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.gis.GISAttribute;
import org.fudaa.ctulu.gis.GISAttributeModelObjectArray;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
+import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI;
import org.fudaa.ebli.calque.edition.ZModeleLigneBriseeEditable;
import org.fudaa.ebli.geometrie.GrPolygone;
+import org.fudaa.fudaa.piv.PivResource;
import org.fudaa.fudaa.piv.PivVisuPanel;
import org.fudaa.fudaa.piv.metier.PivCntGrid;
import org.fudaa.fudaa.piv.metier.PivProject;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+
/**
* Un modele pour le contour de grille
*
@@ -27,11 +31,20 @@
*/
public PivCntGridModel() {
super(new GISZoneCollectionLigneBrisee());
-
+
GISAttribute[] attrs = new GISAttribute[]{PivVisuPanel.ATT_LABEL};
getGeomData().setAttributes(attrs, null);
}
+ @Override
+ public boolean isDataValid(CoordinateSequence _seq, ZEditionAttributesDataI _data, CtuluAnalyze _ana) {
+ if (_seq.size()!=5) {
+ _ana.addFatalError(PivResource.getS("Le contour de grille doit comporter 4 sommets."));
+ return false;
+ }
+ return true;
+ }
+
/**
* Redefinit le projet, et remet a jour le modele.
* @param _prj Le projet courant.
@@ -53,8 +66,8 @@
this.addGeometry(pl, null, null, null);
// Les labels
- GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pl.nombre());
- for (int i=0; i<pl.nombre(); i++) {
+ GISAttributeModelObjectArray lbData = (GISAttributeModelObjectArray) PivVisuPanel.ATT_LABEL.createDataForGeom(null, pl.nombre()+1);
+ for (int i=0; i<lbData.getSize(); i++) {
lbData.set(i, "P"+(i+1));
}
zl.getModel(PivVisuPanel.ATT_LABEL) .setObject(0, lbData, null);
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 2011-12-01 13:43:22 UTC (rev 6746)
+++ trunk/soft/fudaa-lspiv/src/main/java/org/fudaa/fudaa/piv/layer/PivOrthoPointsModel.java 2011-12-01 13:46:42 UTC (rev 6747)
@@ -1,7 +1,8 @@
package org.fudaa.fudaa.piv.layer;
-import com.vividsolutions.jts.geom.CoordinateSequence;
import java.awt.Dimension;
+
+import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.gis.GISAttribute;
import org.fudaa.ctulu.gis.GISAttributeDouble;
import org.fudaa.ctulu.gis.GISAttributeModelDoubleArray;
@@ -9,6 +10,7 @@
import org.fudaa.ctulu.gis.GISGeometryFactory;
import org.fudaa.ctulu.gis.GISMultiPoint;
import org.fudaa.ctulu.gis.GISZoneCollectionMultiPoint;
+import org.fudaa.ebli.calque.edition.ZEditionAttributesDataI;
import org.fudaa.ebli.calque.edition.ZModeleMultiPointEditable;
import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.fudaa.piv.PivResource;
@@ -16,6 +18,8 @@
import org.fudaa.fudaa.piv.metier.PivOrthoPoint;
import org.fudaa.fudaa.piv.metier.PivProject;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+
/**
* Un modele pour les points d'orthorectification, soit dans l'espace d'image
* reconditionn\xE9e, soit dans l'espace r\xE9el.
@@ -57,9 +61,9 @@
}
};
- // Le projet.
+ /** Le projet. */
PivProject prj_;
- // Le type de mod\xE8le
+ /** Le type de mod\xE8le */
int type_=PivVisuPanel.MODE_ORIGINAL_VIEW;
/**
@@ -83,6 +87,41 @@
getGeomData().setAttributes(attrs, null);
}
+ @Override
+ public boolean isDataValid(CoordinateSequence _seq, ZEditionAttributesDataI _data, CtuluAnalyze _ana) {
+
+ if (_seq.size() < 6) {
+ _ana.addFatalError(PivResource.getS("Le nombre de points doit \xEAtre au minimum de 6."));
+ return false;
+ }
+
+ // Controle des valeurs des points r\xE9els.
+ GrPoint[] realPts = new GrPoint[_seq.size()];
+ for (int i = 0; i < _seq.size(); i++) {
+ Double x;
+ Double y;
+ if (type_ == PivVisuPanel.MODE_ORIGINAL_VIEW) {
+ x = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_XR, i);
+ y = (Double) _data.getValue(PivOrthoPointsModel.ATT_IND_YR, i);
+ }
+ else {
+ x = _seq.getOrdinate(i, 0);
+ y = _seq.getOrdinate(i, 1);
+ }
+ Double z = (Double) _data.getValue(PivVisuPanel.ATT_IND_ZR, i);
+ realPts[i] = new GrPoint(x.doubleValue(), y.doubleValue(), z.doubleValue());
+
+ for (int j = 0; j < i; j++) {
+ if (realPts[j].distance(realPts[i]) == 0) {
+ _ana.addFatalError(PivResource.getS("Les points {0} et {1} ont des coordonn\xE9es r\xE9elles confondues.", j + 1, i + 1));
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+
/**
* Redefinit le projet, et remet a jour le modele
* @param _prj Le projet associ\xE9 au mod\xE8le.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|