From: <bma...@us...> - 2009-02-10 16:55:33
|
Revision: 4452 http://fudaa.svn.sourceforge.net/fudaa/?rev=4452&view=rev Author: bmarchan Date: 2009-02-10 16:55:27 +0000 (Tue, 10 Feb 2009) Log Message: ----------- Tache #157 : Nouveau format libre Sinusx Modified Paths: -------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxFileFormat.java Added Paths: ----------- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterAbstract.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV20.java branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV21.java Removed Paths: ------------- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java Modified: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxFileFormat.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxFileFormat.java 2009-02-10 10:42:29 UTC (rev 4451) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxFileFormat.java 2009-02-10 16:55:27 UTC (rev 4452) @@ -17,6 +17,7 @@ import org.fudaa.dodico.commun.DodicoLib; import org.fudaa.dodico.fichiers.FileFormatSoftware; +import com.sun.java_cup.internal.version; /** * @author deniger @@ -25,6 +26,8 @@ public final class SinusxFileFormat extends FileFormatUnique { static final SinusxFileFormat INSTANCE = new SinusxFileFormat(); + + private String version_="2.1"; /** * @return singleton @@ -41,6 +44,18 @@ description_ = DodicoLib.getS("Comporte les d\xE9finitions de points,polylignes et polygones"); software_ = FileFormatSoftware.TELEMAC_IS; } + + /** + * Change de version de fichier. + * @param _version "2.0" : Le fichier est \xE9crit en format fixe. "2.1" : Format libre. + */ + public void setVersionName(String _version) { + version_=_version; + } + + public String getVersionName() { + return version_; + } public FileReadOperationAbstract createReader() { return new SinusxReader(this); @@ -50,8 +65,11 @@ return super.write(_f, _source, _prog); } - public FileWriteOperationAbstract createWriter() { - return new SinusxWriter(this); + public SinusxWriterAbstract createWriter() { + if ("2.0".equals(version_)) + return new SinusxWriterV20(this); + else + return new SinusxWriterV21(this); } } \ No newline at end of file Deleted: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2009-02-10 10:42:29 UTC (rev 4451) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java 2009-02-10 16:55:27 UTC (rev 4452) @@ -1,303 +0,0 @@ -/* - * @creation 2002-11-21 - * @modification $Date: 2007-05-04 13:47:27 $ - * @license GNU General Public License 2 - * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne - * @mail de...@fu... - */ -package org.fudaa.dodico.telemac.io; - -import java.io.IOException; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Locale; - -import org.fudaa.ctulu.CtuluActivity; -import org.fudaa.ctulu.CtuluLibString; -import org.fudaa.ctulu.ProgressionUpdater; -import org.fudaa.ctulu.fileformat.FileFormatVersionInterface; -import org.fudaa.ctulu.gis.GISAttributeConstants; -import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; -import org.fudaa.ctulu.gis.GISDataModel; -import org.fudaa.ctulu.gis.GISGeometry; -import org.fudaa.ctulu.gis.GISLib; -import org.fudaa.ctulu.gis.GISMultiPoint; -import org.fudaa.ctulu.gis.GISPolygone; -import org.fudaa.ctulu.gis.GISPolyligne; -import org.fudaa.ctulu.gis.GISVisitorDefault; -import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract; -import org.fudaa.dodico.h2d.resource.H2dResource; - -import com.vividsolutions.jts.geom.Coordinate; -import com.vividsolutions.jts.geom.CoordinateSequence; -import com.vividsolutions.jts.geom.LineString; -import com.vividsolutions.jts.geom.LinearRing; -import com.vividsolutions.jts.geom.Point; -import com.vividsolutions.jts.geom.Polygon; - -/** - * @version $Id: SinusxWriter.java,v 1.24 2007-05-04 13:47:27 deniger Exp $ - * @author Fred Deniger - */ -public class SinusxWriter extends FileOpWriterCharSimpleAbstract implements CtuluActivity { - - boolean stop_; - - public void stop() { - stop_ = true; - } - - class SinusxObjectIdentifier extends GISVisitorDefault { - - boolean isClosed_; - boolean isLigne_; - boolean isNiveau_; - boolean isPt_; - - public boolean visitPoint(final Point _p) { - isPt_ = true; - isLigne_ = false; - isClosed_ = false; - isNiveau_ = false; - return true; - } - - public boolean visitPolygone(final LinearRing _p) { - isPt_ = false; - isLigne_ = true; - isClosed_ = true; - isNiveau_ = ((GISPolygone) _p).isNiveau() || GISLib.isNiveau(_p.getCoordinateSequence()); - return true; - } - - public boolean visitPolygoneWithHole(final Polygon _p) { - isPt_ = false; - isLigne_ = false; - isClosed_ = false; - isNiveau_ = false; - return true; - } - - public boolean visitPolyligne(final LineString _p) { - isPt_ = false; - isLigne_ = true; - isClosed_ = false; - isNiveau_ = ((GISPolyligne) _p).isNiveau() || GISLib.isNiveau(_p.getCoordinateSequence()); - return true; - } - } - private final String pointPlus_ = "+"; - - /** 1 formate selon les spec de sinusx. */ - private final String unString_ = "+1.000000E+00"; - - /** 0 formate selon les spec de sinusx. */ - private final String zeroString_ = "+0.000000E+00"; - - final String bi_; - - final String bs_; - - final DecimalFormat formate_ = new DecimalFormat("0.000000E00", new DecimalFormatSymbols(Locale.US)); - - final String idxoy_; - final SinusxKeyWord key_ = new SinusxKeyWord(); - final FileFormatVersionInterface v_; - - /** - * @param _v la version utilisee. - */ - public SinusxWriter(final FileFormatVersionInterface _v) { - v_ = _v; - bs_ = key_.getBlocSep(); - bi_ = key_.getBlocInfos(); - idxoy_ = key_.getIdPlanXoy(); - } - - private String courbeDefaut(final int _nb) { - final StringBuffer r = new StringBuffer(250); - for (int i = 0; i < _nb; i++) { - r.append(CtuluLibString.ESPACE).append(zeroString_); - } - return r.toString(); - } - - private void writeCoordinateSequence(final CoordinateSequence _s, final ProgressionUpdater _up, final boolean _ferme) - throws IOException { - int n = _s.size(); - if (_ferme) { - n--; - } - for (int k = 0; k < n; k++) { - writelnToOut(CtuluLibString.ESPACE + formate_.format(_s.getX(k)) + CtuluLibString.ESPACE - + formate_.format(_s.getY(k)) + CtuluLibString.ESPACE - + formate_.format(_s.getOrdinate(k, CoordinateSequence.Z)) + " A"); - if (_up != null) { - _up.majAvancement(); - } - if (stop_) { - return; - } - } - } - - private void writeEntete(final int _idx, final String _nom, final String _spec, final boolean _ferme) - throws IOException { - final StringBuffer buf = new StringBuffer(); - if (_idx == 0) { - buf.append(repereDefaut()); - } - buf.append(lineSep_); - buf.append(key_.getBlocNomEntite()).append(CtuluLibString.ESPACE).append(_nom); - buf.append(lineSep_); - // DEBUG:A voir - buf.append(bi_).append(CtuluLibString.ESPACE).append(_ferme ? key_.getCourbeFermee() : key_.getCourbeNonFermee()) - .append(CtuluLibString.ESPACE).append(key_.getCourbeReliee()); - buf.append(lineSep_); - // if(ferme) buf_.append(COURBE_NON_RELIEE) - if (_spec != null) { - buf.append(bi_).append(CtuluLibString.ESPACE).append(_spec); - buf.append(lineSep_); - } - buf.append(bi_).append(CtuluLibString.ESPACE).append(idxoy_); - writelnToOut(buf.toString()); - } - - protected void internalWrite(final Object _o) { - if (_o instanceof GISDataModel[][]) { - writeZones((GISDataModel[][]) _o); - } else { - donneesInvalides((GISDataModel[][]) _o); - } - } - - protected String profilDefaut() { - return CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE - + unString_ + CtuluLibString.ESPACE + unString_; - } - - protected String repereDefaut() { - return CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE - + zeroString_ + CtuluLibString.ESPACE + unString_ + CtuluLibString.ESPACE + unString_ + CtuluLibString.ESPACE - + unString_ + " 1"; - } - - /** - * @return la version - */ - public FileFormatVersionInterface getVersion() { - return v_; - } - - /** - * @param _zones les zones a ecrire. - */ - public void writeZones(final GISDataModel[][] _zones) { - if (_zones == null) { - analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles")); - return; - } - final SinusxObjectIdentifier identifieur = new SinusxObjectIdentifier(); - final ProgressionUpdater up = new ProgressionUpdater(progress_); - if (progress_ != null) { - progress_.setProgression(0); - } - up.majProgessionStateOnly(); - int nbPoints=0; - for(int i=0;i<_zones.length;i++) - for(int j=0;j<_zones[i].length;j++) - for(int k=0;k<_zones[i][j].getNumGeometries();k++) - nbPoints+=_zones[i][j].getGeometry(k).getNumPoints(); - up.setValue(5, nbPoints); - - final String bc = key_.getBlocCommentaire(); - try { - writelnToOut(bc + "\t" + H2dResource.getS("Fichier g\xE9n\xE9r\xE9 par Fudaa")); - final String date = new SimpleDateFormat("yyyy-M-d k:mm:ss").format(Calendar.getInstance().getTime()); - writelnToOut(bc + "\tVersion " + key_.getVersion() + " - Date " + date); - writelnToOut(bc); - writelnToOut(bc); - writelnToOut(bc); - String spec; - formate_.setPositivePrefix(pointPlus_); - - // Points - GISDataModel[] models=_zones[0]; - for (int j=0; j<models.length; j++) { - if (stop_) - return; - final StringBuffer buf=new StringBuffer(50); - buf.append(bs_).append(' '); - buf.append(key_.getTypeSemis()); - writeToOut(buf.toString()); - writeEntete(j, "semis", null, false); - Coordinate[] coord=new Coordinate[models[j].getNumGeometries()]; - for (int k=0; k<coord.length; k++) - coord[k]=models[j].getGeometry(k).getCoordinate(); - writeCoordinateSequence(new GISCoordinateSequenceFactory().create(coord), up, false); - } - // Polylignes - models=_zones[1]; - for (int j=0; j<models.length; j++) { - final int nbPoly=models[j].getNumGeometries(); - int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); - for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { - if (stop_) - return; - final StringBuffer buf=new StringBuffer(); - buf.append(bs_).append(CtuluLibString.ESPACE); - final LineString geom=(LineString)models[j].getGeometry(polyIdx); - ((GISGeometry)geom).accept(identifieur); - final boolean ferme=identifieur.isClosed_; - - final String nom; - if (attName==-1) - nom=((ferme) ? "polygone":"polyligne")+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); - else - nom=(String)models[j].getValue(attName, polyIdx); - - if (identifieur.isNiveau_) { - buf.append(key_.getTypeCourbeNiveau()); - spec=formate_.format(geom.getCoordinateSequence().getOrdinate(0, 2)); - } - else { - buf.append(key_.getTypeCourbe()); - spec=courbeDefaut(key_.getCourbeNBIndic()); - } - writeToOut(buf.toString()); - writeEntete(j+polyIdx, nom, spec, ferme); - writeCoordinateSequence(geom.getCoordinateSequence(), up, ferme); - } - } - // Multipoint - models=_zones[2]; - for (int j=0; j<models.length; j++) { - int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); - final int nbPoly=models[j].getNumGeometries(); - for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { - if (stop_) - return; - final StringBuffer buf=new StringBuffer(); - buf.append(bs_).append(CtuluLibString.ESPACE); - final GISMultiPoint geom=(GISMultiPoint)models[j].getGeometry(polyIdx); - - final String nom; - if (attName==-1) - nom="semis"+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); - else - nom=(String)models[j].getValue(attName, polyIdx); - - buf.append(key_.getTypeSemis()); - spec=null; - writeToOut(buf.toString()); - writeEntete(j+polyIdx, nom, spec, false); - writeCoordinateSequence(geom.getCoordinateSequence(), up, false); - } - } - } catch (final IOException e) { - analyze_.manageException(e); - } - } -} \ No newline at end of file Copied: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterAbstract.java (from rev 4451, branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java) =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterAbstract.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterAbstract.java 2009-02-10 16:55:27 UTC (rev 4452) @@ -0,0 +1,287 @@ +/* + * @creation 2002-11-21 + * @modification $Date: 2007-05-04 13:47:27 $ + * @license GNU General Public License 2 + * @copyright (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail de...@fu... + */ +package org.fudaa.dodico.telemac.io; + +import java.io.IOException; +import java.text.DecimalFormat; +import java.text.DecimalFormatSymbols; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; + +import org.fudaa.ctulu.CtuluActivity; +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.ProgressionUpdater; +import org.fudaa.ctulu.fileformat.FileFormatVersionInterface; +import org.fudaa.ctulu.gis.GISAttributeConstants; +import org.fudaa.ctulu.gis.GISCoordinateSequenceFactory; +import org.fudaa.ctulu.gis.GISDataModel; +import org.fudaa.ctulu.gis.GISGeometry; +import org.fudaa.ctulu.gis.GISLib; +import org.fudaa.ctulu.gis.GISMultiPoint; +import org.fudaa.ctulu.gis.GISPolygone; +import org.fudaa.ctulu.gis.GISPolyligne; +import org.fudaa.ctulu.gis.GISVisitorDefault; +import org.fudaa.dodico.fortran.FileOpWriterCharSimpleAbstract; +import org.fudaa.dodico.h2d.resource.H2dResource; + +import com.vividsolutions.jts.geom.Coordinate; +import com.vividsolutions.jts.geom.CoordinateSequence; +import com.vividsolutions.jts.geom.LineString; +import com.vividsolutions.jts.geom.LinearRing; +import com.vividsolutions.jts.geom.Point; +import com.vividsolutions.jts.geom.Polygon; + +/** + * @version $Id: SinusxWriter.java,v 1.24 2007-05-04 13:47:27 deniger Exp $ + * @author Fred Deniger + */ +public abstract class SinusxWriterAbstract extends FileOpWriterCharSimpleAbstract implements CtuluActivity { + + boolean stop_; + + public void stop() { + stop_ = true; + } + + class SinusxObjectIdentifier extends GISVisitorDefault { + + boolean isClosed_; + boolean isLigne_; + boolean isNiveau_; + boolean isPt_; + + public boolean visitPoint(final Point _p) { + isPt_ = true; + isLigne_ = false; + isClosed_ = false; + isNiveau_ = false; + return true; + } + + public boolean visitPolygone(final LinearRing _p) { + isPt_ = false; + isLigne_ = true; + isClosed_ = true; + isNiveau_ = ((GISPolygone) _p).isNiveau() || GISLib.isNiveau(_p.getCoordinateSequence()); + return true; + } + + public boolean visitPolygoneWithHole(final Polygon _p) { + isPt_ = false; + isLigne_ = false; + isClosed_ = false; + isNiveau_ = false; + return true; + } + + public boolean visitPolyligne(final LineString _p) { + isPt_ = false; + isLigne_ = true; + isClosed_ = false; + isNiveau_ = ((GISPolyligne) _p).isNiveau() || GISLib.isNiveau(_p.getCoordinateSequence()); + return true; + } + } + private final String pointPlus_ = "+"; + + /** 1 formate selon les spec de sinusx. */ + private final String unString_ = "+1.000000E+00"; + + /** 0 formate selon les spec de sinusx. */ + private final String zeroString_ = "+0.000000E+00"; + + final String bi_; + + final String bs_; + + final DecimalFormat formate_ = new DecimalFormat("0.000000E00", new DecimalFormatSymbols(Locale.US)); + + final String idxoy_; + final SinusxKeyWord key_ = new SinusxKeyWord(); + final FileFormatVersionInterface v_; + + /** + * @param _v la version utilisee. + */ + public SinusxWriterAbstract(final FileFormatVersionInterface _v) { + v_ = _v; + bs_ = key_.getBlocSep(); + bi_ = key_.getBlocInfos(); + idxoy_ = key_.getIdPlanXoy(); + } + + private String courbeDefaut(final int _nb) { + final StringBuffer r = new StringBuffer(250); + for (int i = 0; i < _nb; i++) { + r.append(CtuluLibString.ESPACE).append(zeroString_); + } + return r.toString(); + } + + protected abstract void writeCoordinateSequence(final CoordinateSequence _s, final ProgressionUpdater _up, final boolean _ferme) + throws IOException; + + private void writeEntete(final int _idx, final String _nom, final String _spec, final boolean _ferme) + throws IOException { + final StringBuffer buf = new StringBuffer(); + if (_idx == 0) { + buf.append(repereDefaut()); + } + buf.append(lineSep_); + buf.append(key_.getBlocNomEntite()).append(CtuluLibString.ESPACE).append(_nom); + buf.append(lineSep_); + // DEBUG:A voir + buf.append(bi_).append(CtuluLibString.ESPACE).append(_ferme ? key_.getCourbeFermee() : key_.getCourbeNonFermee()) + .append(CtuluLibString.ESPACE).append(key_.getCourbeReliee()); + buf.append(lineSep_); + // if(ferme) buf_.append(COURBE_NON_RELIEE) + if (_spec != null) { + buf.append(bi_).append(CtuluLibString.ESPACE).append(_spec); + buf.append(lineSep_); + } + buf.append(bi_).append(CtuluLibString.ESPACE).append(idxoy_); + writelnToOut(buf.toString()); + } + + protected void internalWrite(final Object _o) { + if (_o instanceof GISDataModel[][]) { + writeZones((GISDataModel[][]) _o); + } else { + donneesInvalides((GISDataModel[][]) _o); + } + } + + protected String profilDefaut() { + return CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + + unString_ + CtuluLibString.ESPACE + unString_; + } + + protected String repereDefaut() { + return CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + zeroString_ + CtuluLibString.ESPACE + + zeroString_ + CtuluLibString.ESPACE + unString_ + CtuluLibString.ESPACE + unString_ + CtuluLibString.ESPACE + + unString_ + " 1"; + } + + /** + * @return la version + */ + public FileFormatVersionInterface getVersion() { + return v_; + } + + /** + * @param _zones les zones a ecrire. + */ + public void writeZones(final GISDataModel[][] _zones) { + if (_zones == null) { + analyze_.addFatalError(H2dResource.getS("Les donn\xE9es sont nulles")); + return; + } + final SinusxObjectIdentifier identifieur = new SinusxObjectIdentifier(); + final ProgressionUpdater up = new ProgressionUpdater(progress_); + if (progress_ != null) { + progress_.setProgression(0); + } + up.majProgessionStateOnly(); + int nbPoints=0; + for(int i=0;i<_zones.length;i++) + for(int j=0;j<_zones[i].length;j++) + for(int k=0;k<_zones[i][j].getNumGeometries();k++) + nbPoints+=_zones[i][j].getGeometry(k).getNumPoints(); + up.setValue(5, nbPoints); + + final String bc = key_.getBlocCommentaire(); + try { + writelnToOut(bc + "\t" + H2dResource.getS("Fichier g\xE9n\xE9r\xE9 par Fudaa")); + final String date = new SimpleDateFormat("yyyy-M-d k:mm:ss").format(Calendar.getInstance().getTime()); + writelnToOut(bc + "\tVersion " + v_.getVersionName() + " - Date " + date); + writelnToOut(bc); + writelnToOut(bc); + writelnToOut(bc); + String spec; + formate_.setPositivePrefix(pointPlus_); + + // Points + GISDataModel[] models=_zones[0]; + for (int j=0; j<models.length; j++) { + if (stop_) + return; + final StringBuffer buf=new StringBuffer(50); + buf.append(bs_).append(' '); + buf.append(key_.getTypeSemis()); + writeToOut(buf.toString()); + writeEntete(j, "semis", null, false); + Coordinate[] coord=new Coordinate[models[j].getNumGeometries()]; + for (int k=0; k<coord.length; k++) + coord[k]=models[j].getGeometry(k).getCoordinate(); + writeCoordinateSequence(new GISCoordinateSequenceFactory().create(coord), up, false); + } + // Polylignes + models=_zones[1]; + for (int j=0; j<models.length; j++) { + final int nbPoly=models[j].getNumGeometries(); + int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); + for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { + if (stop_) + return; + final StringBuffer buf=new StringBuffer(); + buf.append(bs_).append(CtuluLibString.ESPACE); + final LineString geom=(LineString)models[j].getGeometry(polyIdx); + ((GISGeometry)geom).accept(identifieur); + final boolean ferme=identifieur.isClosed_; + + final String nom; + if (attName==-1) + nom=((ferme) ? "polygone":"polyligne")+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); + else + nom=(String)models[j].getValue(attName, polyIdx); + + if (identifieur.isNiveau_) { + buf.append(key_.getTypeCourbeNiveau()); + spec=formate_.format(geom.getCoordinateSequence().getOrdinate(0, 2)); + } + else { + buf.append(key_.getTypeCourbe()); + spec=courbeDefaut(key_.getCourbeNBIndic()); + } + writeToOut(buf.toString()); + writeEntete(j+polyIdx, nom, spec, ferme); + writeCoordinateSequence(geom.getCoordinateSequence(), up, ferme); + } + } + // Multipoint + models=_zones[2]; + for (int j=0; j<models.length; j++) { + int attName=models[j].getIndiceOf(GISAttributeConstants.TITRE); + final int nbPoly=models[j].getNumGeometries(); + for (int polyIdx=0; polyIdx<nbPoly; polyIdx++) { + if (stop_) + return; + final StringBuffer buf=new StringBuffer(); + buf.append(bs_).append(CtuluLibString.ESPACE); + final GISMultiPoint geom=(GISMultiPoint)models[j].getGeometry(polyIdx); + + final String nom; + if (attName==-1) + nom="semis"+CtuluLibString.ESPACE+(j+1)+"-"+(polyIdx+1); + else + nom=(String)models[j].getValue(attName, polyIdx); + + buf.append(key_.getTypeSemis()); + spec=null; + writeToOut(buf.toString()); + writeEntete(j+polyIdx, nom, spec, false); + writeCoordinateSequence(geom.getCoordinateSequence(), up, false); + } + } + } catch (final IOException e) { + analyze_.manageException(e); + } + } +} \ No newline at end of file Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterAbstract.java ___________________________________________________________________ Added: svn:mergeinfo + /branches/Br_FudaaModeleur_TF/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java:3445-3850 /branches/FudaaModeleur_TC1/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriter.java:3861-3891 Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV20.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV20.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV20.java 2009-02-10 16:55:27 UTC (rev 4452) @@ -0,0 +1,50 @@ +/* + * @creation 10 f\xE9vr. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.dodico.telemac.io; + +import java.io.IOException; + +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.ProgressionUpdater; +import org.fudaa.ctulu.fileformat.FileFormatVersionInterface; + +import com.vividsolutions.jts.geom.CoordinateSequence; + +/** + * Une classe pour ecrire les fichiers Sinusx sous un format fixe. Version 2.0 + * @author Bertrand Marchand + * @version $Id:$ + */ +public class SinusxWriterV20 extends SinusxWriterAbstract { + + /** + * @param _v + */ + public SinusxWriterV20(FileFormatVersionInterface _v) { + super(_v); + } + + protected void writeCoordinateSequence(final CoordinateSequence _s, final ProgressionUpdater _up, final boolean _ferme) + throws IOException { + int n=_s.size(); + if (_ferme) { + n--; + } + for (int k=0; k<n; k++) { + writelnToOut(CtuluLibString.ESPACE+formate_.format(_s.getX(k))+CtuluLibString.ESPACE+formate_.format(_s.getY(k)) + +CtuluLibString.ESPACE+formate_.format(_s.getOrdinate(k, CoordinateSequence.Z))+" A"); + if (_up!=null) { + _up.majAvancement(); + } + if (stop_) { + return; + } + } + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV20.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native Added: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV21.java =================================================================== --- branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV21.java (rev 0) +++ branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV21.java 2009-02-10 16:55:27 UTC (rev 4452) @@ -0,0 +1,58 @@ +/* + * @creation 10 f\xE9vr. 2009 + * @modification $Date:$ + * @license GNU General Public License 2 + * @copyright (c)1998-2009 CETMEF 2 bd Gambetta F-60231 Compiegne + * @mail fud...@li... + */ +package org.fudaa.dodico.telemac.io; + +import java.io.IOException; + +import org.fudaa.ctulu.CtuluLibString; +import org.fudaa.ctulu.ProgressionUpdater; +import org.fudaa.ctulu.fileformat.FileFormatVersionInterface; + +import com.vividsolutions.jts.geom.CoordinateSequence; + +/** + * Une classe pour ecrire les fichiers Sinusx sous un format libre. Version 2.1. + * @author Bertrand Marchand + * @version $Id:$ + */ +public class SinusxWriterV21 extends SinusxWriterAbstract { + + /** + * @param _v + */ + public SinusxWriterV21(FileFormatVersionInterface _v) { + super(_v); + } + + /** + * Ecriture des coordonn\xE9es. Elles sont \xE9crites en format libre, pour ne plus avoir de pb avec les troncatures. + */ + protected void writeCoordinateSequence(final CoordinateSequence _s, final ProgressionUpdater _up, final boolean _ferme) + throws IOException { + int n=_s.size(); + if (_ferme) { + n--; + } + for (int k=0; k<n; k++) { + // Attention : La premi\xE8re valeur est inscrite avec un '+' ou '-' obligatoire pour la relecture. C'est ce qui atteste qu'on est + // sur une ligne de coordonn\xE9es. + String x=""+_s.getX(k); + if (x.charAt(0)!='-' && x.charAt(0)!='+') x="+"+x; + + writelnToOut(CtuluLibString.ESPACE+x+CtuluLibString.ESPACE+_s.getY(k) + +CtuluLibString.ESPACE+_s.getOrdinate(k, CoordinateSequence.Z)+" A"); + if (_up!=null) { + _up.majAvancement(); + } + if (stop_) { + return; + } + } + } + +} Property changes on: branches/FudaaModeleur_TC1Bis/fudaa_devel/dodico/src/org/fudaa/dodico/telemac/io/SinusxWriterV21.java ___________________________________________________________________ Added: svn:keywords + Id Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |