All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fudaa.dodico.mascaret.io.MascaretBief Maven / Gradle / Ivy

There is a newer version: 2.7
Show newest version
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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy