From: <bma...@us...> - 2009-06-10 15:13:05
|
Revision: 4864 http://fudaa.svn.sourceforge.net/fudaa/?rev=4864&view=rev Author: bmarchan Date: 2009-06-10 13:54:59 +0000 (Wed, 10 Jun 2009) Log Message: ----------- BugFix sur import de fichiers SIG + attributs ignor?\195?\169s corrctement trait?\195?\169. Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java Property Changed: ---------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java 2009-06-10 13:48:47 UTC (rev 4863) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelAttributeSubstitutionAdapter.java 2009-06-10 13:54:59 UTC (rev 4864) @@ -107,9 +107,9 @@ if(entry.getKey().getDataClass()!=entry.getValue().getDataClass()) throw new IllegalArgumentException("Les deux substitutions doivent avoir des valeurs de m\xEAme type."); if(model_.getIndiceOf(entry.getKey())==-1) - throw new IllegalArgumentException(entry.getKey().getID() + "n'est pas dans le model."); + throw new IllegalArgumentException(entry.getKey().getID() + " n'est pas dans le model."); if(model_.getIndiceOf(entry.getValue())==-1) - throw new IllegalArgumentException(entry.getValue().getID() + "n'est pas dans le model."); + throw new IllegalArgumentException(entry.getValue().getID() + " n'est pas dans le model."); // Ajout de la substitution substitutionTable_.put(model_.getIndiceOf(entry.getKey()), model_.getIndiceOf(entry.getValue())); } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java 2009-06-10 13:48:47 UTC (rev 4863) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java 2009-06-10 13:54:59 UTC (rev 4864) @@ -72,7 +72,7 @@ } public void preload(final GISAttributeInterface[] _att, final ProgressionInterface _prog) { - + model_.preload(_att, _prog); } public Envelope getEnvelopeInternal() { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISDataModelPointToMultiPointAdapter.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2009-06-10 13:48:47 UTC (rev 4863) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java 2009-06-10 13:54:59 UTC (rev 4864) @@ -31,7 +31,7 @@ * Ces mod\xE8les d'attributs sont ordonn\xE9s dans la liste des mod\xE8les d'attributs. * * @author Fred Deniger - * @version $Id: GISZoneCollection.java,v 1.16.6.4 2008-03-26 16:46:43 bmarchan Exp $ + * @version $Id$ */ public abstract class GISZoneCollection extends GISCollection implements GISAttributeListener, GISDataModel { @@ -247,6 +247,8 @@ Object val=fixedAttributes_.get(getAttribute(_iatt)); if (val==null) val=_init; ret = getDataModel(_iatt).getAttribute().createDataForGeom(val,nbPt); + // FIXME B.M. : Pas sur que ce soit le bienvenu. Si on veut des valeurs par d\xE9faut et que la g\xE9om\xE9trie poss\xE8de + // des Z, il ne faudrait pas que ce soit initialis\xE9 (cas d'import de fichier et ajout par addAll). if (getIdxAttZ()!=-1 && getAttributeIsZ().isAtomicValue() && _init == null && getDataModel(_iatt).getAttribute() == getAttributeIsZ()) { final GISAttributeModelDoubleArray array = (GISAttributeModelDoubleArray) ret; Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/ctulu/src/org/fudaa/ctulu/gis/GISZoneCollection.java ___________________________________________________________________ Added: svn:keywords + Id Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2009-06-10 13:48:47 UTC (rev 4863) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/ebli/src/org/fudaa/ebli/calque/edition/ZModeleGeometryDefault.java 2009-06-10 13:54:59 UTC (rev 4864) @@ -108,6 +108,8 @@ _pt.x_ = g.getX(_pointIdx); _pt.y_ = g.getY(_pointIdx); _pt.z_=g.getOrdinate(_pointIdx, 2); + // B.M. Ne devrait pas se produire, cela devrait \xEAtre fait en amont, a la cr\xE9ation de la g\xE9om\xE9trie. + if (Double.isNaN(_pt.z_)) _pt.z_=0; return true; } Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2009-06-10 13:48:47 UTC (rev 4863) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java 2009-06-10 13:54:59 UTC (rev 4864) @@ -11,6 +11,7 @@ import java.awt.Dimension; import java.util.Arrays; import java.util.Map; +import java.util.Map.Entry; import javax.swing.DefaultListModel; import javax.swing.JComponent; @@ -28,6 +29,7 @@ import org.fudaa.ctulu.CtuluUI; import org.fudaa.ctulu.ProgressionInterface; import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISAttributeDouble; import org.fudaa.ctulu.gis.GISAttributeInterface; import org.fudaa.ctulu.gis.GISAttributeNameComparator; import org.fudaa.ctulu.gis.GISDataModel; @@ -57,6 +59,7 @@ import com.memoire.bu.BuButtonPanel; import com.memoire.bu.BuGlassPaneStop; import com.memoire.bu.BuWizardTask; +import com.memoire.fu.FuLog; /** * Un Wizard d'import de fichiers contenant des donn\xE9es g\xE9om\xE9triques sous des formats tr\xE8s divers. Ce Wizard demande @@ -177,9 +180,9 @@ for(int j=0;j<models.length;j++) // Si le model est fait de point, on les convertis automatiquement en multipoints if(isPoint) - processGeometry(new GISDataModelPointToMultiPointAdapter(models[j]), formeOrigine, formeDestination, natureOrigine, natureDestination, attributesMapper, calqueDestination, cmp); + processGeometry(new GISDataModelPointToMultiPointAdapter(models[j]), formeOrigine, formeDestination, natureOrigine, natureDestination, attributesMapper, calqueDestination, _prog, cmp); else - processGeometry(models[j], formeOrigine, formeDestination, natureOrigine, natureDestination, attributesMapper, calqueDestination, cmp); + processGeometry(models[j], formeOrigine, formeDestination, natureOrigine, natureDestination, attributesMapper, calqueDestination, _prog, cmp); } if (mng_!=null) mng_.addCmd(cmp.getSimplify()); } @@ -208,16 +211,37 @@ * le mapper d'attribut * @param _calqueDestination * le calque dans lequel ajouter la g\xE9om\xE9trie + * @param _prog L'interface de progression */ private void processGeometry(GISDataModel _modelDonnees, int _formeOrigine, int _formeDestination, String _natureOrigine, String _natureDestination, - FSigExportImportAttributesMapper _attributesMapper, ZCalqueAffichageDonneesAbstract _calqueDestination, CtuluCommandComposite _cmd) { + FSigExportImportAttributesMapper _attributesMapper, ZCalqueAffichageDonneesAbstract _calqueDestination, ProgressionInterface _prog, CtuluCommandComposite _cmd) { + +// for (int i=0; i<_modelDonnees.getNbAttributes(); i++) FuLog.trace("Att "+(i+1)+":"+_modelDonnees.getAttribute(i).getLongName()); + if (_attributesMapper!=null) { + + // Chargement en m\xE9moire des seuls attributs sources utilis\xE9s (necessaire pour des sources d'origine SIG). \\ + + GISAttributeInterface[] attrs=new GISAttributeInterface[_attributesMapper.getDestReadMap().size()]; + int i=0; + for (Entry<GISAttributeInterface,GISAttributeInterface> att: _attributesMapper.getDestReadMap().entrySet()) + attrs[i++]=att.getValue(); + + _modelDonnees.preload(attrs,_prog); + + // On cache les attributs ignor\xE9s par le mapping. + _modelDonnees = GISDataModelFilterAdapter.buildAdapter(_modelDonnees, attrs); + } +// for (int i=0; i<_modelDonnees.getNbAttributes(); i++) FuLog.trace("Att "+(i+1)+":"+_modelDonnees.getAttribute(i).getLongName()); + // Selection des g\xE9om\xE9tries avec la nature \\ + if(_natureOrigine=="") _modelDonnees = new GISDataModelSelectionAdapter(_modelDonnees, new Object[][]{{GISAttributeConstants.NATURE, ""}, {GISAttributeConstants.NATURE, GISDataModelSelectionAdapter.ATTRIBUT_NOT_EXIST}}); else _modelDonnees = new GISDataModelSelectionAdapter(_modelDonnees, new Object[][]{{GISAttributeConstants.NATURE, _natureOrigine}}); // Conversion de la forme \\ + if(_formeOrigine!=_formeDestination){ if(_formeOrigine==DeForme.LIGNE_BRISEE&&_formeDestination==DeForme.MULTI_POINT) // Conversion de polyligne en multiPoint @@ -240,8 +264,10 @@ } // Mapping des attributs \\ + // Extraction des attributs du calque de destination GISZoneCollection zoneCollection = ((ZModeleGeometry)_calqueDestination.modeleDonnees()).getGeomData(); + // Ajout des attributs manquant (ceux du calque de destination) GISDataModelAttributeAdapter adapter = new GISDataModelAttributeAdapter(_modelDonnees); if (_attributesMapper!=null) { @@ -251,14 +277,29 @@ } // Remplacement de l'ancien model par le nouveau _modelDonnees = adapter; +// for (int i=0; i<_modelDonnees.getNbAttributes(); i++) FuLog.trace("Att "+(i+1)+":"+_modelDonnees.getAttribute(i).getLongName()); + if (_attributesMapper!=null) // Substitution des attributs _modelDonnees=new GISDataModelAttributeSubstitutionAdapter(_modelDonnees, _attributesMapper.getDestReadMap()); - // Masquage des attributs n'\xE9tant pas dans le calque de destination - GISDataModel model = GISDataModelFilterAdapter.buildAdapter(_modelDonnees, zoneCollection.getAttributes()); + +// for (int i=0; i<_modelDonnees.getNbAttributes(); i++) FuLog.trace("Att "+(i+1)+":"+_modelDonnees.getAttribute(i).getLongName()); + // Mise en conformit\xE9 du mod\xE8le pour qu'il contienne les m\xEAmes attributs que le calque de destination. + // Les attributs en trop sont cach\xE9s, les attributs manquants sont ajout\xE9s avec des valeurs nulles. + _modelDonnees = GISDataModelFilterAdapter.buildAdapter(_modelDonnees, zoneCollection.getAttributes()); +// for (int i=0; i<_modelDonnees.getNbAttributes(); i++) if (_modelDonnees.getAttribute(i)!=null) FuLog.trace("Att "+(i+1)+":"+_modelDonnees.getAttribute(i).getLongName()); + // Ajout dans le calque \\ - zoneCollection.addAll(model, _cmd, false); + + // Pb : addAll() initialise l'attribut Z avec les coordonn\xE9es Z, m\xEAme si on souhaite ignorer le Z. On met donc l'attribut + // isZ=null avant de le restituer. + GISAttributeDouble isZ=zoneCollection.getAttributeIsZ(); + if (isZ!=null && !_attributesMapper.getDestReadMap().containsKey(isZ)) { + zoneCollection.setAttributeIsZ(null); + } + zoneCollection.addAll(_modelDonnees, _cmd, false); + zoneCollection.setAttributeIsZ(isZ); } protected void rebuildAtt() { Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/fudaa/src/org/fudaa/fudaa/modeleur/MdlWizardImport.java ___________________________________________________________________ Added: svn:keywords + Id This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |