001: /*
002: * This file is part of the GeOxygene project source files.
003: *
004: * GeOxygene aims at providing an open framework which implements OGC/ISO specifications for
005: * the development and deployment of geographic (GIS) applications. It is a open source
006: * contribution of the COGIT laboratory at the Institut Géographique National (the French
007: * National Mapping Agency).
008: *
009: * See: http://oxygene-project.sourceforge.net
010: *
011: * Copyright (C) 2005 Institut Géographique National
012: *
013: * This library is free software; you can redistribute it and/or modify it under the terms
014: * of the GNU Lesser General Public License as published by the Free Software Foundation;
015: * either version 2.1 of the License, or any later version.
016: *
017: * This library is distributed in the hope that it will be useful, but WITHOUT ANY
018: * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
019: * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
020: *
021: * You should have received a copy of the GNU Lesser General Public License along with
022: * this library (see file LICENSE if present); if not, write to the Free Software
023: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024: *
025: */
026:
027: package fr.ign.cogit.geoxygene.contrib.appariement.surfaces;
028:
029: /**
030: * Paramètres de l'appariement de surfaces.
031: *
032: * @author Mustiere - IGN / Laboratoire COGIT
033: * @version 1.0
034: *
035: */
036:
037: public class ParametresAppSurfaces implements Cloneable {
038:
039: /** 2 surfaces, pour être appariées, doivent s'intersecter et l'intersection
040: * doit faire au moins la taille fixée par ce seuil. A l'extrême, ce paramètre peut être nul.
041: * Valeur par défaut : 1 m2
042: */
043: public double surface_min_intersection = 1;
044:
045: /** 2 surfaces, pour être appariées, doivent s'intersecter et l'intersection
046: * doit faire au moins la taille d'une des surfaces multipliée
047: * par ce paramètre. A l'extrême, ce paramètre peut être nul.
048: * Valeur par défaut : 0.2
049: */
050: public double pourcentage_min_intersection = 0.2;
051:
052: /** Si 2 surfaces s'intersectent d'au moins la taille d'une des surfaces multipliée
053: * par ce paramètre, on garde ce lien à coup sûr.
054: * Valeur par défaut : 0.8
055: */
056: public double pourcentage_intersection_sur = 0.8;
057:
058: /** Mesure de ressemblance entre surfaces (ou groupes de surfaces)
059: * à optimiser lors du choix final de l'appariement.
060: * 2 possibilités :
061: * TRUE : minimise la distance surfacique
062: * (conseillé par Atef en cas de données avec des niveaux de détail similaires).
063: * FALSE : minimise la somme Exactitude + Complétude.
064: *
065: * Remarque :
066: * - Complétude = surf(Sref inter Scomp) / Sref
067: * - Exactitude = surf(Sref inter Scomp) / Scomp.
068: *
069: */
070: public boolean minimiseDistanceSurfacique = true;
071:
072: /** Si on utilise le critère de Distance Surfacique
073: * (cf. parametre minimiseDistanceSurfacique):
074: * On n'accepte que les appariements finaux pour lesquels
075: * distance surfacique est inférieure à ce seuil.
076: */
077: public double distSurfMaxFinal = 0.6;
078:
079: /** Si on utilise le critère d'exactitude/complétude :
080: * (cf. parametre minimiseDistanceSurfacique):
081: * On n'accepte que les appariements finaux pour lesquels la somme
082: * exactitude + complétude est supérieur à ce seuil.
083: */
084: public double completudeExactitudeMinFinal = 0.3;
085:
086: /** Paramètre indiquant si on souhaite faire un regroupement optimal
087: * des liens
088: */
089: public boolean regroupementOptimal = true;
090:
091: /** Paramètre indiquant si on souhaite faire un filtrage final
092: * des liens sur des critères de distance surfacique ou de complétude
093: */
094: public boolean filtrageFinal = true;
095:
096: /** Paramètre indiquant si on souhaite faire un raffinement
097: * en essayant d'aparier les petites surfaces non appariées
098: */
099: public boolean ajoutPetitesSurfaces = false;
100:
101: /** On ne rajout que les petites surface de taille inférieure à
102: * ce paramètre * taille de la surface à laquelle on le rajoute
103: */
104: public double seuilPourcentageTaillePetitesSurfaces = 0.1;
105:
106: /** Paramètre indiquant si les liens fianux sont redus persistant ou non.
107: * Par défaut: false
108: */
109: public boolean persistant = false;
110:
111: /** Uniquement pour des problèmes de robustesse du code si les surfaces
112: * en entrée ne sont pas propres (existence de mini-boucles).
113: * Si JTS plante à cuase de ces surfaces bizarres, celles-ci seront
114: * filtrées avec DouglasPeucker.
115: * On essaiera plusieurs forces de filtrage:
116: * entre resolutionMin et resolutionMax.
117: */
118: public double resolutionMin = 1;
119:
120: /** Uniquement pour des problèmes de robustesse du code si les surfaces
121: * en entrée ne sont pas propres (existence de mini-boucles).
122: * Si JTS plante à cuase de ces surfaces bizarres, celles-ci seront
123: * filtrées avec DouglasPeucker.
124: * On essaiera plusieurs forces de filtrage:
125: * entre resolutionMin et resolutionMax.
126: */
127: public double resolutionMax = 11;
128:
129: /** Clone l'objet. */
130: public Object clone() {
131: try {
132: return super .clone();
133: } catch (Exception e) {
134: e.printStackTrace();
135: return null;
136: }
137: }
138: }
|