org.fudaa.dodico.mascaret.io.MascaretBief Maven / Gradle / Ivy
package org.fudaa.dodico.mascaret.io;
import com.memoire.fu.FuLog;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.CoordinateSequence;
import com.vividsolutions.jts.geom.impl.CoordinateArraySequence;
import java.util.ArrayList;
import java.util.List;
import org.fudaa.ctulu.CtuluAnalyze;
import org.fudaa.ctulu.ProgressionInterface;
import org.fudaa.ctulu.gis.CtuluLibGeometrie;
import org.fudaa.ctulu.gis.GISAttributeConstants;
import org.fudaa.ctulu.gis.GISAttributeInterface;
import org.fudaa.ctulu.gis.GISGeometryFactory;
import org.fudaa.ctulu.gis.GISLib;
import org.fudaa.ctulu.gis.GISPolyligne;
import org.fudaa.ctulu.gis.GISZoneCollectionLigneBrisee;
import org.fudaa.dodico.commun.DodicoLib;
import org.fudaa.ebli.geometrie.GrPoint;
import org.fudaa.ebli.geometrie.GrVecteur;
/**
* Une repr?sentation d'un bief Mascaret.
* @author bmarchan
*/
public class MascaretBief {
/** Profils ordonn?es du bief */
List profils_=new ArrayList();
public void addProfil(MascaretProfilAbstractRepresentation _prof) {
profils_.add(_prof);
}
public int getNbProfils() {
return profils_.size();
}
public MascaretProfilAbstractRepresentation getProfil(int _i) {
return profils_.get(_i);
}
/**
* @return Le nom du bief, ou null si aucun profil dans le bief.
*/
public String getBiefName() {
if (profils_.size()>0) return profils_.get(0).nomBief;
return null;
}
/**
* @param _analyze Pour suivi du traitement.
* @param _progress La progression de lecture.
* @return Les 5 zones correspondant aux traces, profils, axe, rives, stockage
* dans cet ordre.
*/
public GISZoneCollectionLigneBrisee[] buildZones(CtuluAnalyze _analyze, ProgressionInterface _progress) {
if (profils_.size()==0)
_analyze.addError(DodicoLib.getS("Aucun profil dans le bief."));
GISZoneCollectionLigneBrisee traces=new GISZoneCollectionLigneBrisee();
traces.setAttributes(new GISAttributeInterface[]{
GISAttributeConstants.TITRE, GISAttributeConstants.NATURE}, null);
GISZoneCollectionLigneBrisee profs=new GISZoneCollectionLigneBrisee();
profs.setAttributes(new GISAttributeInterface[]{
GISAttributeConstants.TITRE, GISAttributeConstants.NATURE,
GISAttributeConstants.BATHY, GISAttributeConstants.COMMENTAIRE_HYDRO}, null);
// G?n?ration des profiles et des traces de profiles \\
for(int k=0;k1) {
GrPoint p;
int iProfFin=profils_.size()-1;
double lgBief=profils_.get(iProfFin).abscLong-profils_.get(0).abscLong;
List lcoords=new ArrayList();
// Ajout du premier point extremit?, au dela du premier profil
GrVecteur vext=new GrVecteur(
profils_.get(1).ptAxeHydrau[0]-profils_.get(0).ptAxeHydrau[0],
profils_.get(1).ptAxeHydrau[1]-profils_.get(0).ptAxeHydrau[1], 0).normaliseXY();
double decal=lgBief/20;
vext.autoMultiplication(decal);
p=new GrPoint(profils_.get(0).ptAxeHydrau[0],profils_.get(0).ptAxeHydrau[1],0).soustraction(vext);
lcoords.add(new Coordinate(p.x_, p.y_));
for (int i=0; i