|
From: <bma...@us...> - 2008-06-27 15:21:12
|
Revision: 3662
http://fudaa.svn.sourceforge.net/fudaa/?rev=3662&view=rev
Author: bmarchan
Date: 2008-06-27 08:21:09 -0700 (Fri, 27 Jun 2008)
Log Message:
-----------
Un peu de doc...
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-06-27 15:16:05 UTC (rev 3661)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-06-27 15:21:09 UTC (rev 3662)
@@ -12,6 +12,10 @@
import org.fudaa.ctulu.ProgressionInterface;
/**
+ * Un adapteur permettant d'exposer certains attributs seulement d'un mod\xE8le de donn\xE9es. Seuls des attributs existants dans
+ * le modele original peuvent \xEAtre filtr\xE9s. Les indices des attributs expos\xE9s sont donn\xE9s sous forme d'un tableau,
+ * pas n\xE9cessairement dans un ordre croissant.
+ *
* @author fred deniger
* @version $Id: GISDataModelAbstract.java,v 1.1 2007-01-10 08:58:47 deniger Exp $
*/
@@ -20,6 +24,10 @@
final int[] attShown_;
protected final GISDataModel model_;
+ /**
+ * @param _attShown Les indices des seuls attributs a exposer.
+ * @param _model Le mod\xE8le d'origine.
+ */
public GISDataModelAbstract(final int[] _attShown, final GISDataModel _model) {
super();
attShown_ = _attShown;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-06-27 15:16:05 UTC (rev 3661)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-06-27 15:21:09 UTC (rev 3662)
@@ -14,19 +14,28 @@
import org.fudaa.ctulu.CtuluLibArray;
/**
+ * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es
+ * et/ou certaines g\xE9om\xE9tries.<p>
+ * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine.
+ * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles.
* @author Fred Deniger
* @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $
*/
public class GISDataModelFilterAdapter extends GISDataModelAbstract {
+ /**
+ * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s.
+ */
public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
final GISAttributeInterface[] _att) {
return buildAdapter(_collection, _att, null);
}
/**
+ * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s.
* @param _collection la zone a adapter
* @param _att les attributs dans l'ordre voulu.
+ * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer.
* @return l'adapteur
*/
public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
@@ -42,6 +51,9 @@
}
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s.
+ */
public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection,
final GISAttributeInterface[] _att) {
boolean allLigneBrisee = true;
@@ -62,6 +74,9 @@
return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
}
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
+ */
public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection,
final GISAttributeInterface[] _att) {
boolean allLigneFermee = true;
@@ -82,6 +97,9 @@
return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
}
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
+ */
public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection,
final GISAttributeInterface[] _att) {
boolean allLigneBrisee = true;
@@ -102,6 +120,9 @@
return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
}
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s.
+ */
public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection,
final GISAttributeInterface[] _att) {
boolean allPoint = true;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-06-27 15:21:40
|
Revision: 3663
http://fudaa.svn.sourceforge.net/fudaa/?rev=3663&view=rev
Author: bmarchan
Date: 2008-06-27 08:21:44 -0700 (Fri, 27 Jun 2008)
Log Message:
-----------
Ajout d'une m?\195?\169thode getId() pour retourner identifiant unique sur g?\195?\169om?\195?\169trie. Ceci pour constituer un nom par d?\195?\169faut unique.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometry.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -13,6 +13,14 @@
* @version $Id: GISGeometry.java,v 1.2 2006-02-09 08:59:28 deniger Exp $
*/
public interface GISGeometry {
+
+ /**
+ * L'identifiant, unique pour une g\xE9om\xE9trie. Cet identifiant peut \xEAtre utilis\xE9 pour donner
+ * un nom par d\xE9faut \xE0 une g\xE9om\xE9trie.
+ * @see GISGeometryFactory
+ * @return L'identifiant de la g\xE9om\xE9trie.
+ */
+ long getId();
boolean accept(GISVisitor _v);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryCollection.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -24,5 +24,7 @@
public boolean accept(final GISVisitor _v) {
return _v.visitGeometryCollection(this);
}
+
+ public long getId() { return -1; }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGeometryFactory.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -16,15 +16,21 @@
*/
public final class GISGeometryFactory extends GeometryFactory {
- /**
- * Singletion.
- */
+ /** Numero d'identifiant, incr\xE9ment\xE9 \xE0 chaque nouvelle cr\xE9ation de g\xE9om\xE9trie.
+ En cas de suppression de g\xE9om\xE9trie, ce num\xE9ro n'est pas d\xE9cr\xE9ment\xE9. */
+ protected long numid_=0;
+ /** Singletion */
public static final GISGeometryFactory INSTANCE = new GISGeometryFactory();
private GISGeometryFactory() {
super(new PrecisionModel(10E6), 0, new GISCoordinateSequenceFactory());
}
+
+ /** Retourne un nouvel identifiant a affecter a la g\xE9om\xE9trie */
+ protected long getNewId() {
+ return ++numid_;
+ }
public Point createPoint(final Coordinate _coordinate){
return new GISPoint(_coordinate);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -21,6 +21,7 @@
public class GISMultiPoint extends MultiPoint implements GISGeometry {
CoordinateSequence seq_;
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
public GISMultiPoint() {
super(null, GISGeometryFactory.INSTANCE);
@@ -31,6 +32,10 @@
super(_points, GISGeometryFactory.INSTANCE);
seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates());
}
+
+ public long getId() {
+ return id_;
+ }
public boolean accept(final GISVisitor _v) {
return _v.visitMultiPoint(this);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolygoneWithHole.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -17,6 +17,11 @@
* @version $Id: GISMultiPolygoneWithHole.java,v 1.8 2007-01-17 10:45:25 deniger Exp $
*/
public class GISMultiPolygoneWithHole extends MultiPolygon implements GISGeometry {
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
public GISMultiPolygoneWithHole() {
super(null, GISGeometryFactory.INSTANCE);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPolyligne.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -17,6 +17,11 @@
* @version $Id: GISMultiPolyligne.java,v 1.8 2007-01-17 10:45:25 deniger Exp $
*/
public class GISMultiPolyligne extends MultiLineString implements GISPointContainerInterface, GISGeometry {
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
public GISMultiPolyligne() {
this(null);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -18,6 +18,12 @@
* @version $Id: GISPoint.java,v 1.5 2006-07-13 13:34:35 deniger Exp $
*/
public class GISPoint extends Point implements GISGeometry {
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
+
/**
* @param _p1 le point 1
* @param _p2 le point 2
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygone.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -19,6 +19,11 @@
* @version $Id: GISPolygone.java,v 1.10 2007-01-17 10:45:25 deniger Exp $
*/
public class GISPolygone extends LinearRing implements GISPointContainerInterface, GISLigneBrisee {
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
GISPolygone() {
super(GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolygoneWithHole.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -18,6 +18,11 @@
* @version $Id: GISPolygoneWithHole.java,v 1.6 2007-01-17 10:45:25 deniger Exp $
*/
public class GISPolygoneWithHole extends Polygon implements GISGeometry{
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
public GISPolygoneWithHole() {
super(new GISPolygone(), null, GISGeometryFactory.INSTANCE);
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPolyligne.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -18,6 +18,11 @@
* @version $Id: GISPolyligne.java,v 1.7 2007-01-17 10:45:25 deniger Exp $
*/
public class GISPolyligne extends LineString implements GISPointContainerInterface, GISLigneBrisee {
+ protected long id_=GISGeometryFactory.INSTANCE.getNewId();
+
+ public long getId() {
+ return id_;
+ }
/**
* @param _points
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISRien.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -21,6 +21,7 @@
* @version $Id: GISRien.java,v 1.5 2007-01-17 10:45:25 deniger Exp $
*/
public final class GISRien extends Geometry implements GISGeometry {
+ public long getId() { return -1; }
public final static GISRien INSTANCE = new GISRien();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZone.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -20,6 +20,7 @@
* @version $Id: GISZone.java,v 1.6.8.1 2008-02-01 14:42:44 bmarchan Exp $
*/
public class GISZone extends GISCollection{
+ public long getId() { return -1; }
String nom_;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-06-27 15:21:09 UTC (rev 3662)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-06-27 15:21:44 UTC (rev 3663)
@@ -64,6 +64,8 @@
public GISZoneCollection(final int _nbObject) {
super(_nbObject);
}
+
+ public long getId() { return -1; }
protected void fireAttributesChanged(final GISAttributeInterface _att) {
if (listener_ != null) {
@@ -175,6 +177,8 @@
/**
* Ne fait pas de verif quant a l'origine des donnees.
+ * Remarque : Le modele a ajouter doit avoir le m\xEAme nombre d'attributs que le mod\xE8le courant. Si ce n'est pas
+ * le cas, une erreur est d\xE9clench\xE9e.
*
* @param _model le model a ajouter
* @param _cmd le receveur de commande
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-01 14:45:05
|
Revision: 3666
http://fudaa.svn.sourceforge.net/fudaa/?rev=3666&view=rev
Author: bmarchan
Date: 2008-07-01 07:44:38 -0700 (Tue, 01 Jul 2008)
Log Message:
-----------
Bug#30 : Cr?\195?\169ation/modification semis de points puis sauvegarde : le Z est a pr?\195?\169sent restitu?\195?\169.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-06-27 15:25:48 UTC (rev 3665)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-01 14:44:38 UTC (rev 3666)
@@ -15,22 +15,20 @@
/**
* Un multipoint est un ensemble de points, qui peut \xEAtre r\xE9duit \xE0 1 point seulement.
- * @author Fred Deniger
+ * @author Bertrand Marchand
* @version $Id: GISMultiPoint.java,v 1.8.6.2 2008-04-01 17:09:56 bmarchan Exp $
*/
public class GISMultiPoint extends MultiPoint implements GISGeometry {
- CoordinateSequence seq_;
+ CoordinateSequence seq_=null;
protected long id_=GISGeometryFactory.INSTANCE.getNewId();
public GISMultiPoint() {
super(null, GISGeometryFactory.INSTANCE);
- seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates());
}
public GISMultiPoint(final Point[] _points) {
super(_points, GISGeometryFactory.INSTANCE);
- seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates());
}
public long getId() {
@@ -43,9 +41,18 @@
/**
* Cette methode est ajout\xE9e pour des questions de performance lors du rafraichissement de multipoints
- * avec beaucoup de points.
+ * avec beaucoup de points. La sequence agit directement sur les implementations internes des Point.
*/
public CoordinateSequence getCoordinateSequence() {
+ if (seq_==null) {
+ // Doit g\xE9rer des CoordinateSequence[]. Sinon, un getCoordinateSequence().setOrdinate(i,2) n'affecte pas le Z du multipoint,
+ // mais le Z d'une copie des coordonn\xE9es du multipoint.
+// seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates());
+ Point[] pts=new Point[getNumGeometries()];
+ for (int i=0; i<getNumGeometries(); i++)
+ pts[i]=(Point)getGeometryN(i);
+ seq_=new GISSequencesCoordinateSequence(pts);
+ }
return seq_;
}
@@ -55,7 +62,6 @@
*/
public GISMultiPoint(final Point[] _points, final GeometryFactory _factory) {
super(_points, _factory);
- seq_=GISGeometryFactory.INSTANCE.getCoordinateSequenceFactory().create(this.getCoordinates());
}
public boolean fillListWithPoint(final GISCollectionPointInteface _listToFill) {
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java 2008-07-01 14:44:38 UTC (rev 3666)
@@ -0,0 +1,119 @@
+/*
+ * @creation 18 mars 2005
+ * @modification $Date: 2006-09-19 14:36:53 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import com.vividsolutions.jts.geom.Coordinate;
+import com.vividsolutions.jts.geom.CoordinateSequence;
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Point;
+
+/**
+ * Une sequence de coordonn\xE9es bas\xE9e sur des sequences unique.<p>
+ *
+ * Ceci permet notamment de modifier les coordonn\xE9es d'un {@link GISMultiPoint} qui s'appuie sur les <code>Point</code>.
+ * La modification des coordonn\xE9es d'un {@link Point} ne ne peut se faire qu'au travers de sa {@link CoordinateSequence},
+ * la Coordinate n'\xE9tant qu'une copie de son impl\xE9mentation interne.
+ *
+ * @author Bertrand Marchand
+ * @version $Id: GISCoordinateSequenceUnique.java,v 1.9 2006-09-19 14:36:53 deniger Exp $
+ */
+public class GISSequencesCoordinateSequence implements CoordinateSequence {
+
+ CoordinateSequence[] seqs_;
+
+ /**
+ * Construction a partir de sequences. Les sequences doivent \xEAtre des {@link GISCoordinateSequenceUnique} (non control\xE9).
+ * @param _seqs Les s\xE9quences.
+ */
+ public GISSequencesCoordinateSequence(CoordinateSequence[] _seqs) {
+ seqs_=_seqs;
+ }
+
+ /**
+ * Construction a partir de points.
+ * @param _pts Les points.
+ */
+ public GISSequencesCoordinateSequence(Point[] _pts) {
+ seqs_=new CoordinateSequence[_pts.length];
+ for (int i=0; i<_pts.length; i++) {
+ seqs_[i]=_pts[i].getCoordinateSequence();
+ }
+ }
+
+ public int getDimension() {
+ return 3;
+ }
+
+ public Object clone() {
+ return new GISSequencesCoordinateSequence(seqs_);
+ }
+
+ public Envelope expandEnvelope(final Envelope _env) {
+ for (int i=0; i<seqs_.length; i++) {
+ _env.expandToInclude(seqs_[i].getX(0),seqs_[i].getY(0));
+ }
+ return _env;
+ }
+
+ public void getCoordinate(final int _index, final Coordinate _coord) {
+ _coord.x = seqs_[_index].getOrdinate(0,0);
+ _coord.y = seqs_[_index].getOrdinate(0,1);
+ _coord.z = seqs_[_index].getOrdinate(0,2);
+ }
+
+ public Coordinate getCoordinate(final int _index) {
+ return seqs_[_index].getCoordinate(0);
+ }
+
+ public Coordinate getCoordinateCopy(final int _index) {
+ return (Coordinate)getCoordinate(_index).clone();
+ }
+
+ public double getOrdinate(final int _index, final int _ordinateIndex) {
+ switch (_ordinateIndex) {
+ case CoordinateSequence.X:
+ case CoordinateSequence.Y:
+ case CoordinateSequence.Z:
+ return seqs_[_index].getOrdinate(0, _ordinateIndex);
+ default:
+ throw new IllegalArgumentException("bad ordinate");
+ }
+ }
+
+ public double getX(final int _index) {
+ return seqs_[_index].getOrdinate(0,0);
+ }
+
+ public double getY(final int _index) {
+ return seqs_[_index].getOrdinate(0,1);
+ }
+
+ public void setOrdinate(final int _index, final int _ordinateIndex, final double _value) {
+ switch (_ordinateIndex) {
+ case CoordinateSequence.X:
+ case CoordinateSequence.Y:
+ case CoordinateSequence.Z:
+ seqs_[_index].setOrdinate(0,_ordinateIndex,_value);
+ break;
+ default:
+ throw new IllegalArgumentException("bad ordinate");
+ }
+ }
+
+ public int size() {
+ return seqs_.length;
+ }
+
+ public Coordinate[] toCoordinateArray() {
+ Coordinate[] coords=new Coordinate[seqs_.length];
+ for (int i=0; i<coords.length; i++) {
+ coords[i]=seqs_[i].getCoordinate(0);
+ }
+ return coords;
+ }
+}
\ No newline at end of file
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISSequencesCoordinateSequence.java
___________________________________________________________________
Name: svn:eol-style
+ native
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-09 15:48:46
|
Revision: 3671
http://fudaa.svn.sourceforge.net/fudaa/?rev=3671&view=rev
Author: bmarchan
Date: 2008-07-09 08:48:54 -0700 (Wed, 09 Jul 2008)
Log Message:
-----------
Implementent GISCoordinateSequenceContainerInterface pour traitements g?\195?\169n?\195?\169riques.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java
Added Paths:
-----------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java
Added: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java (rev 0)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java 2008-07-09 15:48:54 UTC (rev 3671)
@@ -0,0 +1,24 @@
+/*
+ * @creation 11 f\xE9vr. 2004
+ * @modification $Date: 2006-02-09 08:59:28 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import com.vividsolutions.jts.geom.CoordinateSequence;
+
+/**
+ * Interface definissant des g\xE9om\xE9tries \xE0 base de {@link CoordinateSequence}.
+ *
+ * @author Bertrand Marchand
+ * @version $Id: GISPointContainerInterface.java,v 1.3 2006-02-09 08:59:28 deniger Exp $
+ */
+public interface GISCoordinateSequenceContainerInterface {
+
+ /**
+ * @return La sequence de coordonn\xE9es pour la g\xE9om\xE9trie.
+ */
+ public CoordinateSequence getCoordinateSequence();
+}
Property changes on: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISCoordinateSequenceContainerInterface.java
___________________________________________________________________
Name: svn:eol-style
+ native
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java 2008-07-08 14:47:31 UTC (rev 3670)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISLigneBrisee.java 2008-07-09 15:48:54 UTC (rev 3671)
@@ -12,7 +12,7 @@
* @author Fred Deniger
* @version $Id: GISLigneBrisee.java,v 1.2 2006-02-09 08:59:28 deniger Exp $
*/
-public interface GISLigneBrisee extends GISGeometry{
+public interface GISLigneBrisee extends GISGeometry, GISCoordinateSequenceContainerInterface{
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-08 14:47:31 UTC (rev 3670)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISMultiPoint.java 2008-07-09 15:48:54 UTC (rev 3671)
@@ -18,7 +18,7 @@
* @author Bertrand Marchand
* @version $Id: GISMultiPoint.java,v 1.8.6.2 2008-04-01 17:09:56 bmarchan Exp $
*/
-public class GISMultiPoint extends MultiPoint implements GISGeometry {
+public class GISMultiPoint extends MultiPoint implements GISGeometry, GISCoordinateSequenceContainerInterface {
CoordinateSequence seq_=null;
protected long id_=GISGeometryFactory.INSTANCE.getNewId();
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-07-08 14:47:31 UTC (rev 3670)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISPoint.java 2008-07-09 15:48:54 UTC (rev 3671)
@@ -17,7 +17,7 @@
* @author deniger
* @version $Id: GISPoint.java,v 1.5 2006-07-13 13:34:35 deniger Exp $
*/
-public class GISPoint extends Point implements GISGeometry {
+public class GISPoint extends Point implements GISGeometry, GISCoordinateSequenceContainerInterface {
protected long id_=GISGeometryFactory.INSTANCE.getNewId();
public long getId() {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-09 16:05:59
|
Revision: 3673
http://fudaa.svn.sourceforge.net/fudaa/?rev=3673&view=rev
Author: bmarchan
Date: 2008-07-09 09:05:52 -0700 (Wed, 09 Jul 2008)
Log Message:
-----------
Correctif pour correspondre au contrat GISDataModel
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-07-09 15:56:30 UTC (rev 3672)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAbstract.java 2008-07-09 16:05:52 UTC (rev 3673)
@@ -39,8 +39,9 @@
}
public final int getIndiceOf(final GISAttributeInterface _att) {
+ if (_att==null) return -1;
for (int i = getNbAttributes() - 1; i >= 0; i--) {
- if (getAttribute(i).equals(_att)) {
+ if (_att.equals(getAttribute(i))) {
return i;
}
}
@@ -52,11 +53,16 @@
}
public final GISAttributeInterface getAttribute(final int _idxAtt) {
- return model_.getAttribute(attShown_ == null ? _idxAtt : attShown_[_idxAtt]);
+ int idx=getRealAttributIndex(_idxAtt);
+ if (idx<0 || idx>model_.getNbAttributes()) return null;
+ return model_.getAttribute(idx);
}
public Envelope getEnvelopeInternal() {
return model_.getEnvelopeInternal();
}
-
+
+ protected int getRealAttributIndex(final int _idxAtt) {
+ return attShown_ == null ? _idxAtt : attShown_[_idxAtt];
+ }
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-07-09 15:56:30 UTC (rev 3672)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelFilterAdapter.java 2008-07-09 16:05:52 UTC (rev 3673)
@@ -1,188 +1,188 @@
-/*
- * @creation 6 juin 2005
- * @modification $Date: 2007-01-10 08:58:47 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.gis;
-
-import java.util.BitSet;
-
-import com.vividsolutions.jts.geom.Geometry;
-
-import org.fudaa.ctulu.CtuluLibArray;
-
-/**
- * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es
- * et/ou certaines g\xE9om\xE9tries.<p>
- * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine.
- * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles.
- * @author Fred Deniger
- * @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $
- */
-public class GISDataModelFilterAdapter extends GISDataModelAbstract {
-
- /**
- * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s.
- */
- public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att) {
- return buildAdapter(_collection, _att, null);
- }
-
- /**
- * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s.
- * @param _collection la zone a adapter
- * @param _att les attributs dans l'ordre voulu.
- * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer.
- * @return l'adapteur
- */
- public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att, final int[] _idxGeom) {
-
- final int[] idx = _att == null ? null : new int[_att.length];
- if (_att != null) {
- for (int i = _att.length - 1; i >= 0; i--) {
- idx[i] = _collection.getIndiceOf(_att[i]);
- }
- }
- return new GISDataModelFilterAdapter(_collection, idx, _idxGeom);
-
- }
-
- /**
- * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s.
- */
- public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att) {
- boolean allLigneBrisee = true;
- final GISVisitorChooser chooser = new GISVisitorChooser();
- final int nb = _collection.getNumGeometries();
- final BitSet set = new BitSet(nb);
- for (int i = 0; i < nb; i++) {
- ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
- if (chooser.isPolyligne() || chooser.isPolygone()) {
- set.set(i);
- } else {
- allLigneBrisee = false;
- }
- }
- if (allLigneBrisee) {
- return buildAdapter(_collection, _att, null);
- }
- return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
- }
-
- /**
- * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
- */
- public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att) {
- boolean allLigneFermee = true;
- final GISVisitorChooser chooser = new GISVisitorChooser();
- final int nb = _collection.getNumGeometries();
- final BitSet set = new BitSet(nb);
- for (int i = 0; i < nb; i++) {
- ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
- if (chooser.isPolygone()) {
- set.set(i);
- } else {
- allLigneFermee = false;
- }
- }
- if (allLigneFermee) {
- return buildAdapter(_collection, _att, null);
- }
- return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
- }
-
- /**
- * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
- */
- public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att) {
- boolean allLigneBrisee = true;
- final GISVisitorChooser chooser = new GISVisitorChooser();
- final int nb = _collection.getNumGeometries();
- final BitSet set = new BitSet(nb);
- for (int i = 0; i < nb; i++) {
- ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
- if (chooser.isPolyligne()) {
- set.set(i);
- } else {
- allLigneBrisee = false;
- }
- }
- if (allLigneBrisee) {
- return buildAdapter(_collection, _att, null);
- }
- return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
- }
-
- /**
- * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s.
- */
- public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection,
- final GISAttributeInterface[] _att) {
- boolean allPoint = true;
- final GISVisitorChooser chooser = new GISVisitorChooser();
- final int nb = _collection.getNumGeometries();
- final BitSet set = new BitSet(nb);
- for (int i = 0; i < nb; i++) {
- ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
- if (chooser.isPt()) {
- set.set(i);
- } else {
- allPoint = false;
- }
- }
- if (allPoint) {
- return buildAdapter(_collection, _att, null);
- }
- return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
- }
-
- final int[] geometryShown_;
-
- /**
- * @param _model
- * @param _idxAtt
- */
- public GISDataModelFilterAdapter(final GISDataModel _model, final int[] _idxAtt, final int[] _idxGeom) {
- super(_idxAtt, _model);
-
- geometryShown_ = _idxGeom;
- }
-
- private int getRealGeometryIndex(final int _init) {
- return geometryShown_ == null ? _init : geometryShown_[_init];
- }
-
- // geom
-
- public double getDoubleValue(final int _idxAtt, final int _idxGeom) {
- final int idx = attShown_ == null ? _idxAtt : attShown_[_idxAtt];
- if (idx < 0 || idx >= model_.getNbAttributes()) {
- return 0;
- }
- return model_.getDoubleValue(idx, getRealGeometryIndex(_idxGeom));
- }
-
- public Geometry getGeometry(final int _idxGeom) {
- return model_.getGeometry(getRealGeometryIndex(_idxGeom));
- }
-
- public int getNumGeometries() {
- return geometryShown_ == null ? model_.getNumGeometries() : geometryShown_.length;
- }
-
- public Object getValue(final int _idxAtt, final int _idxGeom) {
- final int idx = attShown_ == null ? _idxAtt : attShown_[_idxAtt];
- if (idx < 0 || idx >= model_.getNbAttributes()) {
- return null;
- }
- return model_.getValue(idx, getRealGeometryIndex(_idxGeom));
- }
-
-}
+/*
+ * @creation 6 juin 2005
+ * @modification $Date: 2007-01-10 08:58:47 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import java.util.BitSet;
+
+import com.vividsolutions.jts.geom.Geometry;
+
+import org.fudaa.ctulu.CtuluLibArray;
+
+/**
+ * Un filtre permettant d'exposer certains attributs d'un mod\xE8le de donn\xE9es
+ * et/ou certaines g\xE9om\xE9tries.<p>
+ * <b>Important</b> : Le filtre autorise des attributs qui ne sont pas dans le modele d'origine.
+ * Pour ces attributs, les valeurs retourn\xE9es pour chaque g\xE9om\xE9trie sont nulles.
+ * @author Fred Deniger
+ * @version $Id: GISDataModelFilterAdapter.java,v 1.1 2007-01-10 08:58:47 deniger Exp $
+ */
+public class GISDataModelFilterAdapter extends GISDataModelAbstract {
+
+ /**
+ * Cr\xE9ation d'un filtre conservant toutes les g\xE9om\xE9tries et seulement les attributs donn\xE9s.
+ */
+ public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att) {
+ return buildAdapter(_collection, _att, null);
+ }
+
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les g\xE9om\xE9tries d'indices donn\xE9s et les attributs donn\xE9s.
+ * @param _collection la zone a adapter
+ * @param _att les attributs dans l'ordre voulu.
+ * @param _idxGeom Les indices des seules g\xE9om\xE9tries \xE0 exposer, dans l'ordre souhait\xE9.
+ * @return l'adapteur
+ */
+ public static GISDataModelFilterAdapter buildAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att, final int[] _idxGeom) {
+
+ final int[] idx = _att == null ? null : new int[_att.length];
+ if (_att != null) {
+ for (int i = _att.length - 1; i >= 0; i--) {
+ idx[i] = _collection.getIndiceOf(_att[i]);
+ }
+ }
+ return new GISDataModelFilterAdapter(_collection, idx, _idxGeom);
+
+ }
+
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes et les d'attributs donn\xE9s.
+ */
+ public static GISDataModelFilterAdapter buildLigneAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att) {
+ boolean allLigneBrisee = true;
+ final GISVisitorChooser chooser = new GISVisitorChooser();
+ final int nb = _collection.getNumGeometries();
+ final BitSet set = new BitSet(nb);
+ for (int i = 0; i < nb; i++) {
+ ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
+ if (chooser.isPolyligne() || chooser.isPolygone()) {
+ set.set(i);
+ } else {
+ allLigneBrisee = false;
+ }
+ }
+ if (allLigneBrisee) {
+ return buildAdapter(_collection, _att, null);
+ }
+ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
+ }
+
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
+ */
+ public static GISDataModelFilterAdapter buildLigneFermeeAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att) {
+ boolean allLigneFermee = true;
+ final GISVisitorChooser chooser = new GISVisitorChooser();
+ final int nb = _collection.getNumGeometries();
+ final BitSet set = new BitSet(nb);
+ for (int i = 0; i < nb; i++) {
+ ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
+ if (chooser.isPolygone()) {
+ set.set(i);
+ } else {
+ allLigneFermee = false;
+ }
+ }
+ if (allLigneFermee) {
+ return buildAdapter(_collection, _att, null);
+ }
+ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
+ }
+
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les lignes ferm\xE9es et les d'attributs donn\xE9s.
+ */
+ public static GISDataModelFilterAdapter buildLigneOuverteAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att) {
+ boolean allLigneBrisee = true;
+ final GISVisitorChooser chooser = new GISVisitorChooser();
+ final int nb = _collection.getNumGeometries();
+ final BitSet set = new BitSet(nb);
+ for (int i = 0; i < nb; i++) {
+ ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
+ if (chooser.isPolyligne()) {
+ set.set(i);
+ } else {
+ allLigneBrisee = false;
+ }
+ }
+ if (allLigneBrisee) {
+ return buildAdapter(_collection, _att, null);
+ }
+ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
+ }
+
+ /**
+ * Cr\xE9ation d'un filtre ne conservant que les points et les d'attributs donn\xE9s.
+ */
+ public static GISDataModelFilterAdapter buildPointAdapter(final GISDataModel _collection,
+ final GISAttributeInterface[] _att) {
+ boolean allPoint = true;
+ final GISVisitorChooser chooser = new GISVisitorChooser();
+ final int nb = _collection.getNumGeometries();
+ final BitSet set = new BitSet(nb);
+ for (int i = 0; i < nb; i++) {
+ ((GISGeometry) _collection.getGeometry(i)).accept(chooser);
+ if (chooser.isPt()) {
+ set.set(i);
+ } else {
+ allPoint = false;
+ }
+ }
+ if (allPoint) {
+ return buildAdapter(_collection, _att, null);
+ }
+ return buildAdapter(_collection, _att, CtuluLibArray.getSelectedIdx(set));
+ }
+
+ final int[] geometryShown_;
+
+ /**
+ * @param _model
+ * @param _idxAtt
+ */
+ public GISDataModelFilterAdapter(final GISDataModel _model, final int[] _idxAtt, final int[] _idxGeom) {
+ super(_idxAtt, _model);
+
+ geometryShown_ = _idxGeom;
+ }
+
+ private int getRealGeometryIndex(final int _init) {
+ return geometryShown_ == null ? _init : geometryShown_[_init];
+ }
+
+ // geom
+
+ public double getDoubleValue(final int _idxAtt, final int _idxGeom) {
+ final int idx = getRealAttributIndex(_idxAtt);
+ if (idx < 0 || idx >= model_.getNbAttributes()) {
+ return 0;
+ }
+ return model_.getDoubleValue(idx, getRealGeometryIndex(_idxGeom));
+ }
+
+ public Geometry getGeometry(final int _idxGeom) {
+ return model_.getGeometry(getRealGeometryIndex(_idxGeom));
+ }
+
+ public int getNumGeometries() {
+ return geometryShown_ == null ? model_.getNumGeometries() : geometryShown_.length;
+ }
+
+ public Object getValue(final int _idxAtt, final int _idxGeom) {
+ final int idx = getRealAttributIndex(_idxAtt);
+ if (idx < 0 || idx >= model_.getNbAttributes()) {
+ return null;
+ }
+ return model_.getValue(idx, getRealGeometryIndex(_idxGeom));
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-10 07:45:29
|
Revision: 3679
http://fudaa.svn.sourceforge.net/fudaa/?rev=3679&view=rev
Author: bmarchan
Date: 2008-07-10 00:45:36 -0700 (Thu, 10 Jul 2008)
Log Message:
-----------
Un peu de doc
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java 2008-07-10 07:42:43 UTC (rev 3678)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeInterface.java 2008-07-10 07:45:36 UTC (rev 3679)
@@ -1,98 +1,108 @@
-/*
- * @creation 7 avr. 2005
- * @modification $Date: 2008-02-06 18:04:21 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.gis;
-
-import org.fudaa.ctulu.CtuluVariable;
-import org.fudaa.ctulu.gui.CtuluValueEditorI;
-
-/**
- * Une interface pour un attribut qui peut \xEAtre associ\xE9 aux objets GIS. Un attribut peut
- * \xEAtre global \xE0 l'objet auquel il est associ\xE9, ou atomique.<p>
- *
- * Lorsqu'il est atomique, il est associ\xE9 \xE0 chaque sous partie d'un objet. Exemple : les
- * points d'une ligne.
- *
- * @author Fred Deniger
- * @version $Id: GISAttributeInterface.java,v 1.9.8.2 2008-02-06 18:04:21 bmarchan Exp $
- */
-public interface GISAttributeInterface extends CtuluVariable {
-
- boolean isEditable();
-
- boolean isUserVisible();
-
- boolean isSameContent(final GISAttributeInterface _att);
-
-
- /**
- * @param _nbValues
- * @return un modele a utilise pour des donn\xE9es sur les vertex
- */
- GISAttributeModelListener createAtomicModel(Object[] _initValues, int _nbValues);
-
- /**
- * Permet de creer facilement les donn\xE9es correspondant a l'att.
- *
- * @param _initValues la ou les valeurs initiales, peut etre null. Si c'est un tableau et l'attribute est global, la
- * moyenne sera prise. Inversement, l'objet sera duplique si un tableau doit etre construit.
- * @param _nbPt le nombre de points pour l'objet geometriques correspondant
- * @return l'objet correspondant. Si atomique, un {@link GISAttributeModelListener} est renvoy\xE9. Sinon,
- * retourne un objet de classe {@link #getDataClass()}
- */
- Object createDataForGeom(Object _initValues, int _nbPt);
-
- /**
- * @param _defaultCap la capacit\xE9 par defaut: optimisation.
- * @return le modele a utiliser pour une liste variable en taille.
- */
- GISAttributeModelListener createListModel(int _defaultCap);
-
- /**
- * @return la valeur par defaut
- */
- Object getDefaultValue();
-
- boolean setName(String _s);
-
- /**
- * Retourne les donn\xE9es utilisateur, autres que les valeurs d'attributs.
- * @return donnee utilisateur
- */
- Object getUserData();
-
- /**
- * Affecte des donn\xE9es utilisateur, autres que les valeurs d'attributs.
- * @param _userData donnee utilisateur
- */
- void setUserData(Object _userData);
-
- /**
- * Par exemple renvoie double.
- *
- * @return la classe primitive
- */
- Class getDataClass();
-
- /**
- * @return l'\xE9diteur associe
- */
- CtuluValueEditorI getEditor();
-
- /**
- * @return le nombre de chiffres apr\xE8s la virgule
- */
- int getPrecision();
-
- /**
- * Retourne l'atomicit\xE9 de l'attribut (a utiliser pour les polygones,polylignes).
- *
- * @return si true, cet attribut signifie que les valeurs sont associees a chaque point
- */
- boolean isAtomicValue();
-
-}
+/*
+ * @creation 7 avr. 2005
+ * @modification $Date: 2008-02-06 18:04:21 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import org.fudaa.ctulu.CtuluVariable;
+import org.fudaa.ctulu.gui.CtuluValueEditorI;
+
+/**
+ * Une interface pour un attribut qui peut \xEAtre associ\xE9 aux objets GIS. Un attribut peut
+ * \xEAtre global \xE0 l'objet auquel il est associ\xE9, ou atomique.<p>
+ *
+ * Lorsqu'il est atomique, il est associ\xE9 \xE0 chaque sous partie d'un objet. Exemple : les
+ * points d'une ligne.
+ *
+ * @author Fred Deniger
+ * @version $Id: GISAttributeInterface.java,v 1.9.8.2 2008-02-06 18:04:21 bmarchan Exp $
+ */
+public interface GISAttributeInterface extends CtuluVariable {
+
+ /**
+ * D\xE9termine si l'attribut est \xE9ditable dans les \xE9diteurs.<p>
+ * FIXME BM: Actuellement, un attribut non \xE9ditable est invisible dans les \xE9diteurs.
+ * @return Si true : Editable
+ */
+ boolean isEditable();
+
+ /**
+ * D\xE9termine si l'attribut est visible de l'utilisateur. Si c'est le cas, il est \xE9galement non \xE9ditable.<p>
+ * FIXME BM: Lorsque l'attribut est \xE9ditable et invisible, on peut tout de m\xEAme l'\xE9diter.
+ * @return Si true : Visible
+ */
+ boolean isUserVisible();
+
+ boolean isSameContent(final GISAttributeInterface _att);
+
+
+ /**
+ * @param _nbValues
+ * @return un modele a utilise pour des donn\xE9es sur les vertex
+ */
+ GISAttributeModelListener createAtomicModel(Object[] _initValues, int _nbValues);
+
+ /**
+ * Permet de creer facilement les donn\xE9es correspondant a l'att.
+ *
+ * @param _initValues la ou les valeurs initiales, peut etre null. Si c'est un tableau et l'attribute est global, la
+ * moyenne sera prise. Inversement, l'objet sera duplique si un tableau doit etre construit.
+ * @param _nbPt le nombre de points pour l'objet geometriques correspondant
+ * @return l'objet correspondant. Si atomique, un {@link GISAttributeModelListener} est renvoy\xE9. Sinon,
+ * retourne un objet de classe {@link #getDataClass()}
+ */
+ Object createDataForGeom(Object _initValues, int _nbPt);
+
+ /**
+ * @param _defaultCap la capacit\xE9 par defaut: optimisation.
+ * @return le modele a utiliser pour une liste variable en taille.
+ */
+ GISAttributeModelListener createListModel(int _defaultCap);
+
+ /**
+ * @return la valeur par defaut
+ */
+ Object getDefaultValue();
+
+ boolean setName(String _s);
+
+ /**
+ * Retourne les donn\xE9es utilisateur, autres que les valeurs d'attributs.
+ * @return donnee utilisateur
+ */
+ Object getUserData();
+
+ /**
+ * Affecte des donn\xE9es utilisateur, autres que les valeurs d'attributs.
+ * @param _userData donnee utilisateur
+ */
+ void setUserData(Object _userData);
+
+ /**
+ * Par exemple renvoie double.
+ *
+ * @return la classe primitive
+ */
+ Class getDataClass();
+
+ /**
+ * @return l'\xE9diteur associe
+ */
+ CtuluValueEditorI getEditor();
+
+ /**
+ * @return le nombre de chiffres apr\xE8s la virgule
+ */
+ int getPrecision();
+
+ /**
+ * Retourne l'atomicit\xE9 de l'attribut (a utiliser pour les polygones,polylignes).
+ *
+ * @return si true, cet attribut signifie que les valeurs sont associees a chaque point
+ */
+ boolean isAtomicValue();
+
+}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java 2008-07-10 07:42:43 UTC (rev 3678)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeModel.java 2008-07-10 07:45:36 UTC (rev 3679)
@@ -12,7 +12,7 @@
import org.fudaa.ctulu.collection.CtuluCollection;
/**
- * Un mod\xE8le associant une valeur \xE0 chaque objet d'une collection GIS {@link GISZoneCollection} pour
+ * Un mod\xE8le associant une valeur \xE0 chaque g\xE9ometrie d'une collection GIS {@link GISZoneCollection} pour
* un attribut particulier.<p>
*
* Une collection GIS peut comporter plusieurs de ces mod\xE8les.
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java 2008-07-10 07:42:43 UTC (rev 3678)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModel.java 2008-07-10 07:45:36 UTC (rev 3679)
@@ -1,84 +1,84 @@
-/*
- * @creation 20 mai 2005
- * @modification $Date: 2006-12-05 10:12:51 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.gis;
-
-import com.vividsolutions.jts.geom.Envelope;
-import com.vividsolutions.jts.geom.Geometry;
-
-import org.fudaa.ctulu.ProgressionInterface;
-
-/**
- * Un mod\xE8le associant des valeurs d'attributs \xE0 un ensemble de g\xE9om\xE9tries.
- * Dans ce mod\xE8le, les g\xE9om\xE9tries ont toutes le m\xEAme nombre d'attributs du m\xEAme type dans le m\xEAme ordre.
- * Les g\xE9om\xE9tries peuvent \xEAtre ou non de m\xEAme type.
- *
- * @author Fred Deniger
- * @version $Id: GISDataModel.java,v 1.6 2006-12-05 10:12:51 deniger Exp $
- */
-public interface GISDataModel {
-
- /**
- * @return le nombre de geometries definies dans ce source
- */
- int getNumGeometries();
-
- /**
- * Cette m\xE9thode est utile lorsqu'on charge des donn\xE9es issues de sig.
- * Elle permet de charger en memoire les donn\xE9es des attributs <code>_att</code>
- *
- * @param _att les attributs a charger
- */
- void preload(GISAttributeInterface[] _att, ProgressionInterface _prog);
-
- /**
- * Permet de recuperer le polygone recouvrant si calcule (null sinon).
- *
- * @return le polygone recouvrant. Peut etre null si le calcul n'est pas immediat
- */
- Envelope getEnvelopeInternal();
-
- /**
- * @return le nombre d'attributs definis.
- */
- int getNbAttributes();
-
- /**
- * @param _idxGeom l'indice de la geometrie [0,getNbGeometries[
- * @return la geometrie _i
- */
- Geometry getGeometry(int _idxGeom);
-
- /**
- * @param _idxAtt l'indice de l'attribute [0,getNbAttributes[
- * @return la description de l'attribut _i
- */
- GISAttributeInterface getAttribute(final int _idxAtt);
-
- /**
- * @param _att l'attribut a tester
- * @return l'indice de l'attribut.
- */
- int getIndiceOf(GISAttributeInterface _att);
-
- /**
- * @param _idxAtt l'indice de l'attribute
- * @param _idxGeom l'indice de la geometrie
- * @return la valeur demande ou null si mauvais indices
- */
- Object getValue(final int _idxAtt, int _idxGeom);
-
- /**
- * Dangereux: a utiliser que si on est sur que les valeurs sont des double.
- *
- * @param _idxAtt l'indice de l'attributs
- * @param _idxGeom l'indice de la geom
- * @return la valeur correspondante.
- */
- double getDoubleValue(final int _idxAtt, int _idxGeom);
-
-}
+/*
+ * @creation 20 mai 2005
+ * @modification $Date: 2006-12-05 10:12:51 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import com.vividsolutions.jts.geom.Envelope;
+import com.vividsolutions.jts.geom.Geometry;
+
+import org.fudaa.ctulu.ProgressionInterface;
+
+/**
+ * Un mod\xE8le associant des valeurs d'attributs \xE0 un ensemble de g\xE9om\xE9tries.
+ * Dans ce mod\xE8le, les g\xE9om\xE9tries ont toutes le m\xEAme nombre d'attributs du m\xEAme type dans le m\xEAme ordre.
+ * Les g\xE9om\xE9tries peuvent \xEAtre ou non de m\xEAme type.
+ *
+ * @author Fred Deniger
+ * @version $Id: GISDataModel.java,v 1.6 2006-12-05 10:12:51 deniger Exp $
+ */
+public interface GISDataModel {
+
+ /**
+ * @return le nombre de geometries definies dans ce source
+ */
+ int getNumGeometries();
+
+ /**
+ * Cette m\xE9thode est utile lorsqu'on charge des donn\xE9es issues de sig.
+ * Elle permet de charger en memoire les donn\xE9es des attributs <code>_att</code>
+ *
+ * @param _att les attributs a charger
+ */
+ void preload(GISAttributeInterface[] _att, ProgressionInterface _prog);
+
+ /**
+ * Permet de recuperer le polygone recouvrant si calcule (null sinon).
+ *
+ * @return le polygone recouvrant. Peut etre null si le calcul n'est pas immediat
+ */
+ Envelope getEnvelopeInternal();
+
+ /**
+ * @return le nombre d'attributs definis.
+ */
+ int getNbAttributes();
+
+ /**
+ * @param _idxGeom l'indice de la geometrie [0,getNbGeometries[
+ * @return la geometrie _i
+ */
+ Geometry getGeometry(int _idxGeom);
+
+ /**
+ * @param _idxAtt l'indice de l'attribute [0,getNbAttributes[
+ * @return l'attribut ou <code>null</code> si non trouv\xE9.
+ */
+ GISAttributeInterface getAttribute(final int _idxAtt);
+
+ /**
+ * @param _att l'attribut a tester
+ * @return l'indice de l'attribut. -1 si l'attribut est introuvable.
+ */
+ int getIndiceOf(GISAttributeInterface _att);
+
+ /**
+ * @param _idxAtt l'indice de l'attribute
+ * @param _idxGeom l'indice de la geometrie
+ * @return la valeur demande ou null si mauvais indices
+ */
+ Object getValue(final int _idxAtt, int _idxGeom);
+
+ /**
+ * Dangereux: a utiliser que si on est sur que les valeurs sont des double.
+ *
+ * @param _idxAtt l'indice de l'attributs
+ * @param _idxGeom l'indice de la geom
+ * @return la valeur correspondante.
+ */
+ double getDoubleValue(final int _idxAtt, int _idxGeom);
+
+}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java 2008-07-10 07:42:43 UTC (rev 3678)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISGuiBuilder.java 2008-07-10 07:45:36 UTC (rev 3679)
@@ -17,12 +17,20 @@
import org.fudaa.ctulu.gui.CtuluValuesEditorPanel;
/**
+ * Un builder de panneau d'\xE9ditions d'objets GIS.
* @author fred deniger
* @version $Id: GISGuiBuilder.java,v 1.5 2007-01-10 08:58:47 deniger Exp $
*/
public final class GISGuiBuilder {
private GISGuiBuilder() {}
+ /**
+ * Construction d'un panneau d'\xE9dition de plusieurs points d'une m\xEAme collection.
+ * @param _pt La collection de points
+ * @param _idx Les index des points de la collection concern\xE9s.
+ * @param _cmd Le manager de commandes.
+ * @return Un panneau d'\xE9dition.
+ */
public static CtuluValuesEditorPanel buildFor(final GISZoneCollectionPoint _pt, final int[] _idx, final CtuluCommandContainer _cmd) {
final List names = new ArrayList(_pt.getNbAttributes() + 2);
final List editor = new ArrayList(names.size());
@@ -34,6 +42,7 @@
model.add(_pt.createEditForX());
model.add(_pt.createEditForY());
for (int i = 0; i < _pt.getNbAttributes(); i++) {
+ // FIXME BM: G\xE9rer attribut non visible.
if (_pt.getAttribute(i).isEditable()) {
names.add(_pt.getAttribute(i).getName());
editor.add(_pt.getAttribute(i).getEditor());
@@ -45,6 +54,13 @@
.toArray(new CtuluCollection[model.size()]), _cmd);
}
+ /**
+ * Construction d'un panneau d'\xE9dition de plusieurs g\xE9om\xE9tries d'une m\xEAme collection.
+ * @param _pt La collection
+ * @param _idx Les index des g\xE9om\xE9tries de la collection concern\xE9s.
+ * @param _cmd Le manager de commandes.
+ * @return Un panneau d'\xE9dition.
+ */
public static CtuluValuesEditorPanel buildForGlobAtt(final GISZoneCollection _pt, final int[] _idx, final CtuluCommandContainer _cmd) {
final int nbAtt = _pt.getNbAttributes();
final List names = new ArrayList(nbAtt);
@@ -52,6 +68,7 @@
final List model = new ArrayList(nbAtt);
for (int i = 0; i < nbAtt; i++) {
final GISAttributeInterface att = _pt.getAttribute(i);
+ // FIXME BM: G\xE9rer attribut non visible.
if (!att.isAtomicValue() && att.isEditable()) {
names.add(att.getName());
editor.add(att.getEditor());
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-10 07:45:53
|
Revision: 3680
http://fudaa.svn.sourceforge.net/fudaa/?rev=3680&view=rev
Author: bmarchan
Date: 2008-07-10 00:45:55 -0700 (Thu, 10 Jul 2008)
Log Message:
-----------
Mise en place des attributs ?\195?\160 valeurs fixe.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-07-10 07:45:36 UTC (rev 3679)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneAttributeFactory.java 2008-07-10 07:45:55 UTC (rev 3680)
@@ -1,255 +1,245 @@
-/*
- * @creation 7 avr. 2005
- * @modification $Date: 2008-03-26 16:46:43 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.gis;
-
-import java.util.Arrays;
-
-import com.sun.j3d.loaders.vrml97.impl.Coordinate;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
-
-/**
- * @author Fred Deniger
- * @version $Id: GISZoneAttributeFactory.java,v 1.10.6.1 2008-03-26 16:46:43 bmarchan Exp $
- */
-public final class GISZoneAttributeFactory {
-
- private GISZoneAttributeFactory() {
- super();
- }
-
- /**
- * @param _att l'attribut
- * @param _src la liste des points source
- * @param _target la liste des points cible
- * @param _model le model initial
- * @return l'interpolateur 1d
- */
- public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att,
- final LineString _src, final LineString _target, final GISAttributeModel _model) {
- final Class clazz = _att.getDataClass();
- if (clazz == Integer.class) {
- return new GISReprojectInterpolateur1DInteger(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
- (GISAttributeModelIntegerInterface) _model);
- } else if (clazz == Double.class) {
- return new GISReprojectInterpolateur1DDouble(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
- (GISAttributeModelDoubleInterface) _model);
- } else if (clazz == Boolean.class) {
- return new GISReprojectInterpolateur1DBoolean(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
- (GISAttributeModelBooleanInterface) _model);
- } else {
- return new GISReprojectInterpolateur1DObject(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
- (GISAttributeModelObjectInterface) _model);
- }
-
- }
-
- /**
- * @param _att l'attribut
- * @param _src la liste des points source
- * @param _target la liste des points cible
- * @param _model le model initial
- * @return l'interpolateur 1d
- */
- public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att,
- final Geometry _src, final Geometry _target, final GISAttributeModel _model) {
- final Class clazz = _att.getDataClass();
- if (clazz == Integer.class) {
- return new GISReprojectInterpolateur1DInteger(
- new GISCoordinateSequence(_src.getCoordinates()),
- new GISCoordinateSequence(_target.getCoordinates()),
- (GISAttributeModelIntegerInterface) _model);
- } else if (clazz == Double.class) {
- return new GISReprojectInterpolateur1DDouble(
- new GISCoordinateSequence(_src.getCoordinates()),
- new GISCoordinateSequence(_target.getCoordinates()),
- (GISAttributeModelDoubleInterface) _model);
- } else if (clazz == Boolean.class) {
- return new GISReprojectInterpolateur1DBoolean(
- new GISCoordinateSequence(_src.getCoordinates()),
- new GISCoordinateSequence(_target.getCoordinates()),
- (GISAttributeModelBooleanInterface) _model);
- } else {
- return new GISReprojectInterpolateur1DObject(
- new GISCoordinateSequence(_src.getCoordinates()),
- new GISCoordinateSequence(_target.getCoordinates()),
- (GISAttributeModelObjectInterface) _model);
- }
-
- }
-
- /**
- * @param _capacity la capacity par defaut du model
- * @param _listener le listener
- * @return le model. null si class non valide
- */
- public static GISAttributeModel createModelList(final GISAttributeInterface _att, final int _capacity,
- final GISAttributeListener _listener) {
- final GISAttributeModelListener resfinal = _att.createListModel(_capacity);
- resfinal.setListener(_listener);
- return resfinal;
- }
-
- public static GISAttributeModel createModelList(final GISAttributeInterface _att, final int _capacity,
- final GISAttributeListener _listener, final int _initValuesNb) {
- final GISAttributeModelListener resfinal = _att.createListModel(_capacity);
- if (_initValuesNb > 0) {
- final Object[] add = new Object[_initValuesNb];
- Arrays.fill(add, _att.getDefaultValue());
- resfinal.addAllObject(add, null);
- }
- resfinal.setListener(_listener);
- return resfinal;
- }
-
- /**
- * @param _initSize la taille
- * @param _listener le listener
- * @return le model. null si class non valide
- */
- public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final int _initSize,
- final GISAttributeListener _listener) {
- final GISAttributeModelListener resfinal = _att.createAtomicModel(null, _initSize);
- resfinal.setListener(_listener);
- return resfinal;
- }
-
- public static Object[] createObjectArray(final GISAttributeInterface _att, final Object[] _init, final int _nbPt) {
- if (_init == null) {
- return null;
- }
- final Class clazz = _att.getDataClass();
- if (clazz == Integer.class) {
- final Integer[] r = new Integer[_nbPt];
- Arrays.fill(r, _att.getDefaultValue());
-
- for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
- final Object o = _init[i];
- r[i] = (Integer) _att.getDefaultValue();
- if (o != null && o instanceof Integer) {
- r[i] = (Integer) o;
- }
- }
- return r;
- } else if (clazz == Double.class) {
- final Double[] r = new Double[_nbPt];
- Arrays.fill(r, _att.getDefaultValue());
- for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
- final Object o = _init[i];
- r[i] = (Double) _att.getDefaultValue();
- if (o != null && o instanceof Double) {
- r[i] = (Double) o;
- }
- }
- return r;
- } else if (clazz == Boolean.class) {
- final Boolean[] r = new Boolean[_nbPt];
- Arrays.fill(r, _att.getDefaultValue());
- for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
- final Object o = _init[i];
- r[i] = (Boolean) _att.getDefaultValue();
- if (o != null && o instanceof Boolean) {
- r[i] = (Boolean) o;
- }
- }
- return r;
- } else {
- final Object[] r = new Object[_nbPt];
- Arrays.fill(r, _att.getDefaultValue());
- for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
- final Object o = _init[i];
- r[i] = _att.getDefaultValue();
- if (o != null) {
- r[i] = o;
- }
- }
- return r;
- }
- }
-
- /**
- * @param _att l'attribut
- * @param _initValues les valeurs initiales
- * @param _listener le listener
- * @return le model. null si class non valide
- */
- public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object[] _initValues,
- final GISAttributeListener _listener) {
- GISAttributeModelListener resfinal = null;
- final Class clazz = _att.getDataClass();
- if (clazz == Integer.class) {
- resfinal = new GISAttributeModelIntegerArray(_initValues, _att);
- } else if (clazz == Double.class) {
- resfinal = new GISAttributeModelDoubleArray(_initValues, _att);
- } else if (clazz == Boolean.class) {
- resfinal = new GISAttributeModelBooleanArray(_initValues, _att);
- } else {
- resfinal = new GISAttributeModelObjectArray(_initValues, _att);
- }
- resfinal.setListener(_listener);
- return resfinal;
- }
-
- /**
- * @param _listener le listener
- * @param _attr les attributs
- * @return une zone correctement initialis\xE9e
- */
- public static GISZoneCollectionLigneBrisee createPolyligne(final GISZoneListener _listener,
- final GISAttributeInterface[] _attr) {
- final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener);
- zone.initAttributes(_attr);
- return zone;
-
- }
-
- /**
- * @param _listener le listener
- * @param _attr les attributs
- * @return une zone correctement initialis\xE9e
- */
- public static GISZoneCollectionPoint createPoint(final GISZoneListener _listener, final GISAttributeInterface[] _attr) {
- final GISZoneCollectionPoint zone = new GISZoneCollectionPoint(_listener);
- zone.initAttributes(_attr);
- return zone;
-
- }
-
- /**
- * @param _listener le listener
- * @param _attr les attributs
- * @return une zone correctement initialis\xE9e
- */
- public static GISZoneCollectionLigneBrisee createLigneBrisee(final GISZoneListener _listener,
- final GISAttributeInterface[] _attr) {
- final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener);
- zone.initAttributes(_attr);
- return zone;
-
- }
-
- /**
- * @param _zone la zone concern\xE9e
- * @param _att l'attribut
- * @return le model ou nul si inconnu
- */
- public static GISAttributeModel createModel(final GISZoneCollection _zone, final GISAttributeInterface _att) {
- final int nbGeom = _zone.getNumGeometries();
- if (_att == null) return null;
- if (!_att.isAtomicValue() || (_zone instanceof GISZoneCollectionPoint)) {
- return createModelList(_att, (int) (nbGeom * 1.5), _zone, nbGeom);
- }
- final GISAttributeModel[] models = new GISAttributeModel[nbGeom];
- for (int i = 0; i < nbGeom; i++) {
- models[i] = createModelArray(_att, _zone.getGeometry(i).getNumPoints(), _zone);
- }
- final GISAttributeModelObjectList r = new GISAttributeModelObjectList(Arrays.asList(models), _att);
- r.setListener(_zone);
- return r;
- }
-}
+/*
+ * @creation 7 avr. 2005
+ * @modification $Date: 2008-03-26 16:46:43 $
+ * @license GNU General Public License 2
+ * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
+ * @mail de...@fu...
+ */
+package org.fudaa.ctulu.gis;
+
+import java.util.Arrays;
+
+import com.sun.j3d.loaders.vrml97.impl.Coordinate;
+import com.vividsolutions.jts.geom.Geometry;
+import com.vividsolutions.jts.geom.LineString;
+
+/**
+ * @author Fred Deniger
+ * @version $Id: GISZoneAttributeFactory.java,v 1.10.6.1 2008-03-26 16:46:43 bmarchan Exp $
+ */
+public final class GISZoneAttributeFactory {
+
+ private GISZoneAttributeFactory() {
+ super();
+ }
+
+ /**
+ * @param _att l'attribut
+ * @param _src la liste des points source
+ * @param _target la liste des points cible
+ * @param _model le model initial
+ * @return l'interpolateur 1d
+ */
+ public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att,
+ final LineString _src, final LineString _target, final GISAttributeModel _model) {
+ final Class clazz = _att.getDataClass();
+ if (clazz == Integer.class) {
+ return new GISReprojectInterpolateur1DInteger(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
+ (GISAttributeModelIntegerInterface) _model);
+ } else if (clazz == Double.class) {
+ return new GISReprojectInterpolateur1DDouble(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
+ (GISAttributeModelDoubleInterface) _model);
+ } else if (clazz == Boolean.class) {
+ return new GISReprojectInterpolateur1DBoolean(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
+ (GISAttributeModelBooleanInterface) _model);
+ } else {
+ return new GISReprojectInterpolateur1DObject(_src.getCoordinateSequence(), _target.getCoordinateSequence(),
+ (GISAttributeModelObjectInterface) _model);
+ }
+
+ }
+
+ /**
+ * @param _att l'attribut
+ * @param _src la liste des points source
+ * @param _target la liste des points cible
+ * @param _model le model initial
+ * @return l'interpolateur 1d
+ */
+ public static GISReprojectInterpolateurI create1DInterpolateur(final GISAttributeInterface _att,
+ final Geometry _src, final Geometry _target, final GISAttributeModel _model) {
+ final Class clazz = _att.getDataClass();
+ if (clazz == Integer.class) {
+ return new GISReprojectInterpolateur1DInteger(
+ new GISCoordinateSequence(_src.getCoordinates()),
+ new GISCoordinateSequence(_target.getCoordinates()),
+ (GISAttributeModelIntegerInterface) _model);
+ } else if (clazz == Double.class) {
+ return new GISReprojectInterpolateur1DDouble(
+ new GISCoordinateSequence(_src.getCoordinates()),
+ new GISCoordinateSequence(_target.getCoordinates()),
+ (GISAttributeModelDoubleInterface) _model);
+ } else if (clazz == Boolean.class) {
+ return new GISReprojectInterpolateur1DBoolean(
+ new GISCoordinateSequence(_src.getCoordinates()),
+ new GISCoordinateSequence(_target.getCoordinates()),
+ (GISAttributeModelBooleanInterface) _model);
+ } else {
+ return new GISReprojectInterpolateur1DObject(
+ new GISCoordinateSequence(_src.getCoordinates()),
+ new GISCoordinateSequence(_target.getCoordinates()),
+ (GISAttributeModelObjectInterface) _model);
+ }
+
+ }
+
+ public static GISAttributeModel createModelList(final GISAttributeInterface _att, final Object _valatt, final int _capacity,
+ final GISAttributeListener _listener, final int _initValuesNb) {
+ final GISAttributeModelListener resfinal = _att.createListModel(_capacity);
+ if (_initValuesNb > 0) {
+ final Object[] add = new Object[_initValuesNb];
+ Arrays.fill(add, _valatt);
+ resfinal.addAllObject(add, null);
+ }
+ resfinal.setListener(_listener);
+ return resfinal;
+ }
+
+ /**
+ * @param _initSize la taille
+ * @param _listener le listener
+ * @return le model. null si class non valide
+ */
+ public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object _valatt, final int _initSize,
+ final GISAttributeListener _listener) {
+ final GISAttributeModelListener resfinal = (GISAttributeModelListener)_att.createDataForGeom(_valatt, _initSize);
+ resfinal.setListener(_listener);
+ return resfinal;
+ }
+
+ public static Object[] createObjectArray(final GISAttributeInterface _att, final Object[] _init, final int _nbPt) {
+ if (_init == null) {
+ return null;
+ }
+ final Class clazz = _att.getDataClass();
+ if (clazz == Integer.class) {
+ final Integer[] r = new Integer[_nbPt];
+ Arrays.fill(r, _att.getDefaultValue());
+
+ for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
+ final Object o = _init[i];
+ r[i] = (Integer) _att.getDefaultValue();
+ if (o != null && o instanceof Integer) {
+ r[i] = (Integer) o;
+ }
+ }
+ return r;
+ } else if (clazz == Double.class) {
+ final Double[] r = new Double[_nbPt];
+ Arrays.fill(r, _att.getDefaultValue());
+ for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
+ final Object o = _init[i];
+ r[i] = (Double) _att.getDefaultValue();
+ if (o != null && o instanceof Double) {
+ r[i] = (Double) o;
+ }
+ }
+ return r;
+ } else if (clazz == Boolean.class) {
+ final Boolean[] r = new Boolean[_nbPt];
+ Arrays.fill(r, _att.getDefaultValue());
+ for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
+ final Object o = _init[i];
+ r[i] = (Boolean) _att.getDefaultValue();
+ if (o != null && o instanceof Boolean) {
+ r[i] = (Boolean) o;
+ }
+ }
+ return r;
+ } else {
+ final Object[] r = new Object[_nbPt];
+ Arrays.fill(r, _att.getDefaultValue());
+ for (int i = Math.min(r.length, _init.length) - 1; i >= 0; i--) {
+ final Object o = _init[i];
+ r[i] = _att.getDefaultValue();
+ if (o != null) {
+ r[i] = o;
+ }
+ }
+ return r;
+ }
+ }
+
+ /**
+ * @param _att l'attribut
+ * @param _initValues les valeurs initiales
+ * @param _listener le listener
+ * @return le model. null si class non valide
+ */
+ public static GISAttributeModel createModelArray(final GISAttributeInterface _att, final Object[] _initValues,
+ final GISAttributeListener _listener) {
+ GISAttributeModelListener resfinal = null;
+ final Class clazz = _att.getDataClass();
+ if (clazz == Integer.class) {
+ resfinal = new GISAttributeModelIntegerArray(_initValues, _att);
+ } else if (clazz == Double.class) {
+ resfinal = new GISAttributeModelDoubleArray(_initValues, _att);
+ } else if (clazz == Boolean.class) {
+ resfinal = new GISAttributeModelBooleanArray(_initValues, _att);
+ } else {
+ resfinal = new GISAttributeModelObjectArray(_initValues, _att);
+ }
+ resfinal.setListener(_listener);
+ return resfinal;
+ }
+
+ /**
+ * @param _listener le listener
+ * @param _attr les attributs
+ * @return une zone correctement initialis\xE9e
+ */
+ public static GISZoneCollectionLigneBrisee createPolyligne(final GISZoneListener _listener,
+ final GISAttributeInterface[] _attr) {
+ final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener);
+ zone.initAttributes(_attr);
+ return zone;
+
+ }
+
+ /**
+ * @param _listener le listener
+ * @param _attr les attributs
+ * @return une zone correctement initialis\xE9e
+ */
+ public static GISZoneCollectionPoint createPoint(final GISZoneListener _listener, final GISAttributeInterface[] _attr) {
+ final GISZoneCollectionPoint zone = new GISZoneCollectionPoint(_listener);
+ zone.initAttributes(_attr);
+ return zone;
+
+ }
+
+ /**
+ * @param _listener le listener
+ * @param _attr les attributs
+ * @return une zone correctement initialis\xE9e
+ */
+ public static GISZoneCollectionLigneBrisee createLigneBrisee(final GISZoneListener _listener,
+ final GISAttributeInterface[] _attr) {
+ final GISZoneCollectionLigneBrisee zone = new GISZoneCollectionLigneBrisee(_listener);
+ zone.initAttributes(_attr);
+ return zone;
+
+ }
+
+ /**
+ * @param _zone la zone concern\xE9e
+ * @param _att l'attribut
+ * @return le model ou nul si inconnu
+ */
+ public static GISAttributeModel createModel(final GISZoneCollection _zone, final GISAttributeInterface _att) {
+ final int nbGeom = _zone.getNumGeometries();
+ if (_att == null) return null;
+ Object valatt=_zone.fixedAttributes_.get(_att);
+ if (valatt==null) valatt=_att.getDefaultValue();
+ if (!_att.isAtomicValue() || (_zone instanceof GISZoneCollectionPoint)) {
+ return createModelList(_att, valatt, (int) (nbGeom * 1.5), _zone, nbGeom);
+ }
+ final GISAttributeModel[] models = new GISAttributeModel[nbGeom];
+ for (int i = 0; i < nbGeom; i++) {
+ models[i] = createModelArray(_att, valatt, _zone.getGeometry(i).getNumPoints(), _zone);
+ }
+ final GISAttributeModelObjectList r = new GISAttributeModelObjectList(Arrays.asList(models), _att);
+ r.setListener(_zone);
+ return r;
+ }
+}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-07-10 07:45:36 UTC (rev 3679)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2008-07-10 07:45:55 UTC (rev 3680)
@@ -22,6 +22,7 @@
import org.fudaa.ctulu.ProgressionInterface;
import org.fudaa.ctulu.collection.CtuluCollection;
import org.fudaa.ctulu.collection.CtuluCollectionDoubleEdit;
+import org.geotools.feature.type.SetAttributeType;
/**
* Une classe abstraite d'objets g\xE9ometriques auquels sont associ\xE9s des attributs dont les valeurs
@@ -37,6 +38,8 @@
/** La liste ordonn\xE9e des mod\xE8les d'attributs associ\xE9es \xE0 la collection. */
protected GISAttributeModelListener[] attr_;
+ /** La valeur de la nature pour pour cette collection si elle est impos\xE9e. null : non impos\xE9e. */
+ protected Map fixedAttributes_=new HashMap();
protected GISAttributeDouble attributeIsZ_ = GISAttributeConstants.BATHY; // Devrait \xEAtre null par defaut.
@@ -199,15 +202,17 @@
}
final int nbAttribute = getNbAttributes();
final List data = new ArrayList(nbAttribute);
- for (int i = 0; i < nbAttribute; i++) {
- final GISAttributeInterface gi = getAttribute(i);
+ for (int iatt = 0; iatt < nbAttribute; iatt++) {
+ final GISAttributeInterface gi = getAttribute(iatt);
final Object[] os = new Object[nbGeom];
- for (int j = 0; j < nbGeom; j++) {
- os[j] = gi.createDataForGeom(_model.getValue(i, j), pt[j].getNumPoints());
+ for (int igeom = 0; igeom < nbGeom; igeom++) {
+// os[igeom] = gi.createDataForGeom(_model.getValue(iatt, igeom), pt[igeom].getNumPoints());
+ os[igeom] = createOrAssignAttribut(iatt, _model.getValue(iatt, igeom), pt[igeom]);
}
data.add(nbGeom == 1 ? os[0] : os);
}
+
final int firstIdx = super.geometry_.getSize() - 1;
super.geometry_.addAll(pt, data, _cmd);
if (_doPostImport) {
@@ -217,6 +222,32 @@
return true;
}
+ /**
+ * Cr\xE9e ou assigne la valeur d'attribut pass\xE9e. Si la valeur pass\xE9e est null, une valeur par d\xE9faut est affect\xE9e.
+ * Si la valeur est scalaire et l'attribut atomique, un tableau de valeurs est cr\xE9e. Si la valeur est un tableau et
+ * l'attribut est global, une valeur scalaire moyenne et cr\xE9ee.
+ *
+ * @param _iatt L'indice d'attribut dans la liste des attributs.
+ * @param _valatt La valeur de l'attribut. Peut \xEAtre null.
+ * @param _dest La g\xE9om\xE9trie pour la cr\xE9ation de la valeur.
+ * @return La valeur pour l'attribut et la g\xE9om\xE9trie donn\xE9e.
+ */
+ protected Object createOrAssignAttribut(int _iatt, final Object _init, final Geometry _dest) {
+ Object ret;
+ final int nbPt = _dest.getNumPoints();
+ Object val=fixedAttributes_.get(getAttribute(_iatt));
+ if (val==null) val=_init;
+ ret = getDataModel(_iatt).getAttribute().createDataForGeom(val,nbPt);
+ if (attributeIsZ_ != null && attributeIsZ_.isAtomicValue() && _init == null &&
+ getDataModel(_iatt).getAttribute() == attributeIsZ_) {
+ final GISAttributeModelDoubleArray array = (GISAttributeModelDoubleArray) ret;
+ for (int k = nbPt - 1; k >= 0; k--) {
+ array.set(k, ((GISCoordinateSequenceContainerInterface)_dest).getCoordinateSequence().getOrdinate(k,2));
+ }
+ }
+ return ret;
+ }
+
public abstract void addCoordinateSequence(CoordinateSequence _seq, Object[] _datas, CtuluCommandContainer _cmd);
public abstract void addGeometry(Geometry _seq, Object[] _datas, CtuluCommandContainer _cmd);
@@ -403,6 +434,22 @@
}
/**
+ * Definit les attributs pour lesquels la valeur est immuable.<p>
+ * <b>Remarque</b> : Si des objets existent d\xE9j\xE0 avec une valeur pour l'attribut \xE0 rendre immuable, ces valeurs ne seront pas
+ * remplac\xE9e par la valeur constante. Utilisez {@link GISZoneCollection#setAttributes()}
+ * pour r\xE9initialiser les valeurs pour la collection.
+ *
+ * @param _att L'attribut \xE0 fixer.
+ * @param _value La valeur constante. Si null, l'attribut n'est pas obligatoirement fix\xE9.
+ */
+ public void setFixedAttributeValue(GISAttributeInterface _att, Object _value) {
+ if (_value==null)
+ fixedAttributes_.remove(_att);
+ else
+ fixedAttributes_.put(_att, _value);
+ }
+
+ /**
* Associe les attributs aux objets de la collection. Pour chaque attribut inexistant dans la liste est cr\xE9\xE9 un nouveau mod\xE8le.
* @param _att La liste des attributs, conditionnant l'ordre des mod\xE8les dans la liste des mod\xE8les.
* @param _cmd Le conteneur de commande.
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-10 07:45:36 UTC (rev 3679)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-10 07:45:55 UTC (rev 3680)
@@ -1,515 +1,507 @@
-/*
- * @creation 21 mars 2005
- * @modification $Date: 2008-04-01 07:22:47 $
- * @license GNU General Public License 2
- * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne
- * @mail de...@fu...
- */
-package org.fudaa.ctulu.gis;
-
-import gnu.trove.TIntArrayList;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import com.vividsolutions.jts.geom.Coordinate;
-import com.vividsolutions.jts.geom.CoordinateSequence;
-import com.vividsolutions.jts.geom.Geometry;
-import com.vividsolutions.jts.geom.LineString;
-
-import com.memoire.fu.FuLog;
-
-import org.fudaa.ctulu.CtuluCommandComposite;
-import org.fudaa.ctulu.CtuluCommandContainer;
-import org.fudaa.ctulu.CtuluLib;
-import org.fudaa.ctulu.CtuluLibArray;
-import org.fudaa.ctulu.CtuluLibString;
-import org.fudaa.ctulu.CtuluListSelectionInterface;
-import org.fudaa.ctulu.CtuluUI;
-import org.fudaa.ctulu.collection.CtuluCollectionDouble;
-
-/**
- * @author Fred Deniger
- * @version $Id: GISZoneCollectionLigneBrisee.java,v 1.20.6.4 2008-04-01 07:22:47 bmarchan Exp $
- */
-public class GISZoneCollectionLigneBrisee extends GISZoneCollection {
-
- public GISZoneCollectionLigneBrisee() {
- this(null);
- }
-
- /**
- * @param _listener le listener
- */
- public GISZoneCollectionLigneBrisee(final GISZoneListener _listener) {
- this(10, _listener);
- }
-
- /**
- * @param _listener le listener
- */
- public GISZoneCollectionLigneBrisee(final GISZoneListener _listener, final GISZoneCollectionLigneBrisee _br) {
- this(10, _listener);
- if (_br != null) {
- for (int i = 0; i < _br.getNumGeometries(); i++) {
- super.geometry_.add(_br.getGeometry(i), null, null);
- }
- }
- }
-
- public GISZoneCollectionLigneBrisee(final int _nbObject, final GISZoneListener _listener) {
- super(_nbObject);
- listener_ = _listener;
- }
-
- private List createListForSeveralAdd(final Object[][] _att, final int _nbGeom) {
- final int nbAttributes = getNbAttributes();
- final List attListe = new ArrayList(nbAttributes);
- for (int i = 0; i < nbAttributes; i++) {
- final Object[] oi = new Object[_nbGeom];
- for (int j = 0; j < _nbGeom; j++) {
- oi[j] = _att[j][i];
- }
- attListe.add(oi);
- }
- return attListe;
- }
-
- /**
- * @param _idx l'indice de la ligne a changer
- * @param _newLine la nouvelle ligne
- * @param _cmd le receveur de commande
- */
- private void setValueIntern(final int _idx, final LineString _newLine, final CtuluCommandContainer _cmd) {
- if (!isGeomModifiable_) {
- return;
- }
- final LineString old = (LineString) super.geometry_.getValueAt(_idx);
- if (old.getNumPoints() == _newLine.getNumPoints() || !containsAtomicAttribute()) {
- super.geometry_.setObject(_idx, _newLine, _cmd);
- } else {
- final CtuluCommandComposite cmp = new CtuluCommandComposite();
- for (int i = getNbAttributes() - 1; i >= 0; i--) {
- final GISAttributeInterface att = getAttribute(i);
- if (att.isAtomicValue()) {
- final GISAttributeModel m = (GISAttributeModel) (getModelListener(i).getObjectValueAt(_idx));
- final GISReprojectInterpolateurI interpolateur = GISZoneAttributeFactory.create1DInterpolateur(att, old,
- _newLine, m);
- getModelListener(i).setObject(_idx, m.deriveNewModel(_newLine.getNumPoints(), interpolateur), cmp);
- }
- }
- super.geometry_.setObject(_idx, _newLine, cmp);
- if (_cmd != null) {
- _cmd.addCmd(cmp.getSimplify());
- }
- }
- }
-
- /**
- * Cr\xE9e un tableau de valeurs d'attributs.<p>
- *
- * Les valeurs peuvent \xEAtre globales ou atomiques.
- *
- * @param _init Les valeurs d'initialisation, dans l'ordre et au nombre des mod\xE8les d'attributs.
- * Si null, les valeurs par d\xE9faut sont affect\xE9es (voir {@link GISAttributeInterface#getDefaultValue()})
- * @param _dest La g\xE9ometrie polyligne ou polygone.
- * @param _isClosed Param\xE8tre inutilis\xE9.
- * @return
- */
- protected Object[] createAttributeList(final Object[] _init, final Geometry _dest, final boolean _isClosed) {
- final Object[] rf = new Object[getNbAttributes()];
- final int nbPt = _dest.getNumPoints();
- if (_init != null && _init.length != getNbAttributes()) {
- throw new IllegalArgumentException("bad size");
- }
- for (int i = getNbAttributes() - 1; i >= 0; i--) {
- rf[i] = getDataModel(i).getAttribute().createDataForGeom(_init != null ? _init[i] : null, nbPt);
- if (attributeIsZ_ != null && attributeIsZ_.isAtomicValue() && (_init == null || _init[...
[truncated message content] |
|
From: <bma...@us...> - 2008-07-15 15:25:53
|
Revision: 3689
http://fudaa.svn.sourceforge.net/fudaa/?rev=3689&view=rev
Author: bmarchan
Date: 2008-07-15 08:24:26 -0700 (Tue, 15 Jul 2008)
Log Message:
-----------
Correction sur addGeometry(), qui se fait directement depuiis la g?\195?\169om?\195?\169trie cr?\195?\169?\195?\169e.
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-15 15:22:51 UTC (rev 3688)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionLigneBrisee.java 2008-07-15 15:24:26 UTC (rev 3689)
@@ -182,12 +182,12 @@
}
}
- public void addGeometry(final Geometry _seq, final Object[] _data, final CtuluCommandContainer _cmd) {
- final LineString s = (LineString) _seq;
- if (s.isClosed()) {
- addPolygone(s.getCoordinateSequence(), _data, _cmd);
- } else {
- addPolyligne(s.getCoordinateSequence(), _data, _cmd);
+ public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) {
+ if (!(_geom instanceof LineString))
+ throw new IllegalArgumentException("Bad type geometry");
+
+ if (isGeomModifiable_) {
+ geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd);
}
}
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-15 15:22:51 UTC (rev 3688)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollectionMultiPoint.java 2008-07-15 15:24:26 UTC (rev 3689)
@@ -173,9 +173,11 @@
}
public void addGeometry(final Geometry _geom, final Object[] _data, final CtuluCommandContainer _cmd) {
- if (!(_geom instanceof GISMultiPoint)) return;
+ if (!(_geom instanceof GISMultiPoint))
+ throw new IllegalArgumentException("Bad type geometry");
+
if (isGeomModifiable_) {
- super.geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd);
+ geometry_.add(_geom, Arrays.asList(createAttributeList(_data, _geom, true)), _cmd);
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <bma...@us...> - 2008-07-15 15:27:54
|
Revision: 3690
http://fudaa.svn.sourceforge.net/fudaa/?rev=3690&view=rev
Author: bmarchan
Date: 2008-07-15 08:26:24 -0700 (Tue, 15 Jul 2008)
Log Message:
-----------
Cr?\195?\169ation d'une valeur d'attribut String global a partir d'un tableau de String
Modified Paths:
--------------
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java
branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-15 15:24:26 UTC (rev 3689)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeConstants.java 2008-07-15 15:26:24 UTC (rev 3690)
@@ -116,10 +116,11 @@
// Si la valeur en entr\xE9e est la valeur par d\xE9faut, alors une nouvelle valeur en sortie est cr\xE9\xE9e.
// Ceci permet d'affecter automatiquement un nom nouveau \xE0 une g\xE9om\xE9trie cr\xE9\xE9e.
if (r == null || def_.equals(r)) {
- r="Geom_"+(++numid_);
+ return r="Geom_"+(++numid_);
}
- return r;
-
+ else {
+ return super.createGlobalValues(_initValues);
+ }
}
public Object getDefaultValue() {
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java 2008-07-15 15:24:26 UTC (rev 3689)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISAttributeString.java 2008-07-15 15:26:24 UTC (rev 3690)
@@ -41,6 +41,15 @@
public Object getDefaultValue(){
return CtuluLibString.EMPTY_STRING;
}
+
+ protected Object createGlobalValues(final Object _initValues) {
+ if (_initValues instanceof Object[]) { // Plusieurs valeurs en entr\xE9e : On prend la premi\xE8re.
+ return ((Object[])_initValues)[0];
+ }
+ else {
+ return super.createGlobalValues(_initValues);
+ }
+ }
public int getPrecision(){
return 50;
Modified: branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java
===================================================================
--- branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java 2008-07-15 15:24:26 UTC (rev 3689)
+++ branches/Br_FudaaModeleur_TF/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointMultiPointAdapter.java 2008-07-15 15:26:24 UTC (rev 3690)
@@ -134,7 +134,7 @@
ArrayList<Integer> idxpts=hibloc2ListPts_.get(_idxGeom);
Object[] vals=new Object[idxpts.size()];
for (int i=0; i<idxpts.size(); i++) vals[i]=initmd_.getValue(_idxAtt,idxpts.get(i));
- datas_[_idxAtt][_idxGeom]=getAttribute(_idxAtt).createAtomicModel(vals, vals.length);
+ datas_[_idxAtt][_idxGeom]=getAttribute(_idxAtt).createDataForGeom(vals, vals.length);
}
return datas_[_idxAtt][_idxGeom];
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|