Source Code Cross Referenced for ParametresApp.java in  » GIS » GeOxygene-1.3 » fr » ign » cogit » geoxygene » contrib » appariement » reseaux » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » GIS » GeOxygene 1.3 » fr.ign.cogit.geoxygene.contrib.appariement.reseaux 
Source Cross Referenced  Class Diagram Java Document (Java Doc) 


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.reseaux;
028:
029:        import java.util.ArrayList;
030:        import java.util.List;
031:
032:        import fr.ign.cogit.geoxygene.feature.Population;
033:
034:        /** 
035:         * Paramètres de l'appariement.
036:         * 
037:         * @author Mustiere - IGN / Laboratoire COGIT
038:         * @version 1.0 
039:         */
040:        public class ParametresApp implements  Cloneable {
041:
042:            /////////////////////////////////////////////////////////////////////////////////
043:            /////////////   PARAMETRES SPECIFIANT QUELLE DONNEES SONT TRAITEES   ////////////
044:            /////////////////////////////////////////////////////////////////////////////////
045:
046:            /** Liste des classes d'arcs de la BD 1 (la moins détaillée) concernés par l'appariement */
047:            public List populationsArcs1 = new ArrayList();
048:
049:            /** Liste des classes de noeuds de la BD 1 (la moins détaillée) concernés par l'appariement */
050:            public List populationsNoeuds1 = new ArrayList();
051:
052:            /** Liste des classes d'arcs de la BD 2 (la plus détaillée) concernés par l'appariement */
053:            public List populationsArcs2 = new ArrayList();
054:
055:            /** Liste des classes de noeuds de la BD 2 (la plus détaillée) concernés par l'appariement */
056:            public List populationsNoeuds2 = new ArrayList();
057:
058:            /** Prise en compte de l'orientation des arcs sur le terrain (sens de circulation).
059:             * Si true : on suppose tous les arcs en double sens.
060:             * Si false: on suppose tous les arcs en sens unique, celui défini par la géométrie.
061:             * NB: ne pas confondre cette orientation 'géographique réelle', avec l'orientation de la géoémtrie. 
062:             * 
063:             * Utile ensuite pour l'appariement des arcs.
064:             */
065:            public boolean populationsArcsAvecOrientationDouble = true;
066:
067:            /////////////////////////////////////////////////////////////////////////////////
068:            /////////////////             TAILLES DE RECHERCHE        ///////////////////////
069:            /////////////////        Ecarts de distance autorisés     ///////////////////////
070:            /////////////////      CE SONT LES PARAMETRES PRINCIPAUX  ///////////////////////
071:            /////////////////////////////////////////////////////////////////////////////////
072:
073:            /** Distance maximale autorisée entre deux noeuds appariés.
074:             */
075:            public float distanceNoeudsMax = 150;
076:
077:            /** Distance maximale autorisée entre deux noeuds appariés, quand le noeud du réseau 1
078:             *  est une impasse uniquement.
079:             *  Ce paramètre permet de prendre en compte le fait que la localisation exacte des extrémités d'impasse
080:             *  est assez imprécise dans certains réseaux (où commence exactement une rivière par exemple?). 
081:             *  
082:             *  Si cette distance est strictement négative, alors ce paramètre n'est pas pris en compte, 
083:             *  et la distance maximale est la même pour tous les noeuds, y-compris aux extrémités. 
084:             */
085:            public float distanceNoeudsImpassesMax = -1;
086:
087:            /** Distance maximum autorisée entre les arcs des deux réseaux.
088:             * La distance est définie au sens de la "demi-distance de Hausdorf" des arcs
089:             * du réseau 2 vers les arcs du réseau 1.
090:             */
091:            public float distanceArcsMax = 100;
092:
093:            /** Distance minimum sous laquelle l'écart de distance pour divers arcs du réseaux 2 
094:             * (distance vers les arcs du réseau 1) n'a plus aucun sens.
095:             *  Cette distance est typiquement de l'ordre de la précision géométrique du rééseau le moins précis.
096:             */
097:            public float distanceArcsMin = 30;
098:
099:            /////////////////////////////////////////////////////////////////////////////////
100:            /////////////         TRAITEMENTS TOPOLOGIQUES A L'IMPORT       /////////////////
101:            /////////////////////////////////////////////////////////////////////////////////
102:
103:            /** Les noeuds proches du réseau 1 sont fusionnés en un seul noeud  
104:             *  (proches = éloignés de moins que ce paramètre).
105:             *  Si ce paramètre est >0, les noeuds sont fusionés à une position moyenne, et les arcs sont déformés pour suivre.
106:             *  Si ce paramètre est =0, seul les noeuds strictement superposés sont fusionnés.
107:             *  Si ce paramètre est <0 (défaut), aucune fusion n'est faite.
108:             */
109:            public double topologieSeuilFusionNoeuds1 = -1;
110:
111:            /** Les noeuds proches du réseau 2 sont fusionnés en un seul noeud  
112:             *  (proches = éloignés de moins que ce paramètre).
113:             *  Si ce paramètre est >0, les noeuds sont fusionés à une position moyenne, et les arcs sont déformés pour suivre.
114:             *  Si ce paramètre est =0, seul les noeuds strictement superposés sont fusionnés.
115:             *  Si ce paramètre est <0 (défaut), aucune fusion n'est faite.
116:             */
117:            public double topologieSeuilFusionNoeuds2 = -1;
118:
119:            /** Les noeuds du réseau 1 contenus dans une même surface de la population en paramètre 
120:             *  seront fusionnés en un seul noeud pour l'appariement.
121:             *  Ce paramètre peut être null (défaut), auquel il est sans influence.
122:             *  Exemple typique: on fusionne toutes les extrémités de lignes ferrés arrivant dans une même aire de triage,
123:             *  si les aires de triage sont définies par des surfaces dans les données. 
124:             */
125:            public Population topologieSurfacesFusionNoeuds1 = null;
126:
127:            /** Les noeuds du réseau 2 contenus dans une même surface de la population en paramètre 
128:             *  seront fusionnés en un seul noeud pour l'appariement.
129:             *  Ce paramètre peut être null (défaut), auquel il est sans influence.
130:             *  Exemple typique: on fusionne toutes les extrémités de lignes ferrés arrivant dans une même aire de triage,
131:             *  si les aires de triage sont définies par des surfaces dans les données. 
132:             */
133:            public Population topologieSurfacesFusionNoeuds2 = null;
134:
135:            /** Doit-on eliminer pour l'appariement les noeuds du réseau 1 qui n'ont que 2 arcs incidents 
136:             *  et fusionner ces arcs ?
137:             */
138:            public boolean topologieElimineNoeudsAvecDeuxArcs1 = false;
139:
140:            /** Doit-on eliminer pour l'appariement les noeuds du réseau 2 qui n'ont que 2 arcs incidents 
141:             *  et fusionner ces arcs ?
142:             */
143:            public boolean topologieElimineNoeudsAvecDeuxArcs2 = false;
144:
145:            /** Doit-on rendre le réseau 1 planaire (créer des noeuds aux intersections d'arcs)?   
146:             */
147:            public boolean topologieGraphePlanaire1 = false;
148:
149:            /** Doit-on rendre le réseau 2 planaire (créer des noeuds aux intersections d'arcs)?   
150:             */
151:            public boolean topologieGraphePlanaire2 = false;
152:
153:            /** Fusion des arcs doubles.
154:             * Si true: si le réseau 1 contient des arcs en double (même géométrie exactement),
155:             * alors on les fusionne en un seul arc pour l'appariement.  
156:             * Si false: rien n'est fait.  
157:             */
158:            public boolean topologieFusionArcsDoubles1 = false;
159:
160:            /** Fusion des arcs doubles.
161:             * Si true: si le réseau 2 contient des arcs en double (même géométrie exactement),
162:             * alors on les fusionne en un seul arc pour l'appariement.  
163:             * Si false: rien n'est fait.  
164:             */
165:            public boolean topologieFusionArcsDoubles2 = false;
166:
167:            /////////////////////////////////////////////////////////////////////////////////
168:            //////////   TRAITEMENTS DE SURDECOUPAGE DES RESEAUX A L'IMPORT       ///////////
169:            /////////////////////////////////////////////////////////////////////////////////
170:
171:            /** Doit on projeter les noeuds du réseau 1 sur le réseau 2 pour découper ce dernier ?
172:             * Ce traitement réalise un surdécoupage du réseau 2 qui facilite l'appariement dans certains cas
173:             * (par exemple si les réseaux ont des niveaux de détail proches), mais qui va aussi un peu 
174:             * à l'encontre de la philosophie générale du processus d'appariement. 
175:             * A utiliser avec modération donc.  
176:             */
177:            public boolean projeteNoeuds1SurReseau2 = false;
178:
179:            /** Distance max de la projection des noeuds 2 sur le réseau 1.
180:             *  Utile uniquement si projeteNoeuds1SurReseau2 = true.
181:             */
182:            public double projeteNoeuds1SurReseau2_DistanceNoeudArc = 0;
183:
184:            /** Distance min entre la projection d'un noeud sur un arc et les extrémités de cet arc 
185:             * pour créer un nouveau noeud sur le réseau 2. 
186:             *  Utile uniquement si projeteNoeuds1SurReseau2 = true.
187:             */
188:            public double projeteNoeuds1SurReseau2_DistanceProjectionNoeud = 0;
189:
190:            /** Si true: on ne projete que les impasses du réseau 1 sur le réseau 2 
191:             *  Si false: on projete tous les noeuds du réseau 1 sur le réseau 2.
192:             *  Utile uniquement si projeteNoeuds1SurReseau2 = true.
193:             */
194:            public boolean projeteNoeuds1SurReseau2_ImpassesSeulement = false;
195:
196:            /** Doit on projeter les noeuds du réseau 2 sur le réseau 1 pour découper ce dernier ?
197:             * Ce traitement réalise un surdécoupage du réseau 1 qui facilite l'appariement dans certains cas
198:             * (par exemple si les réseaux ont des niveaux de détail proches), mais qui va aussi un peu 
199:             * à l'encontre de la philosophie générale du processus d'appariement. 
200:             * A utiliser avec modération donc.  
201:             */
202:            public boolean projeteNoeud2surReseau1 = false;
203:
204:            /** Distance max de la projection des noeuds 1 sur le réseau 2.
205:             *  Utile uniquement si projeteNoeuds2SurReseau1 = true.
206:             */
207:            public double projeteNoeud2surReseau1_DistanceNoeudArc = 0;
208:
209:            /** Distance min entre la projection d'un noeud sur un arc et les extrémités de cet arc 
210:             * pour créer un nouveau noeud sur le réseau 1. 
211:             *  Utile uniquement si projeteNoeuds2SurReseau1 = true.
212:             */
213:            public double projeteNoeud2surReseau1_DistanceProjectionNoeud = 0;
214:
215:            /** Si true: on ne projete que les impasses du réseau 2 sur le réseau 1 
216:             *  Si false: on projete tous les noeuds du réseau 2 sur le réseau 1.
217:             *  Utile uniquement si projeteNoeuds1SurReseau2 = true.
218:             */
219:            public boolean projeteNoeud2surReseau1_ImpassesSeulement = false;
220:
221:            /////////////////////////////////////////////////////////////////////////////////
222:            /////////////            VARIANTES DU PROCESSUS GENERAL    //////////////////////
223:            /////////////////////////////////////////////////////////////////////////////////
224:
225:            /** Niveau de complexité: recherche ou non de liens 1-n aux noeuds. 
226:             *  Si true: un noeud du réseau 1 est toujours apparié avec au plus un noeud du réseau 2 (1-1). 
227:             *  Si false (défaut): on recherche liens 1-n aux noeuds .
228:             *  
229:             *  NB: dans le cas simple, le processus est énormément simplifié !!!!!!!!
230:             *  Ceci peut être pertinent si les données ont le même niveau de détail par exemple. 
231:             */
232:            public boolean varianteForceAppariementSimple = false;
233:
234:            /** Appariement en deux passes qui tente un surdécoupage du réseau pour les arcs non appariés en première passe. 
235:             * Si true: les arcs du réseau 1 non appariés dans une première passe sont redécoupés de manière 
236:             *          à introduire un noeud dans le reséau 1 aux endroits où il s'éloigne trop du réseau 2.
237:             * Si false (défaut): processus en une seule passe.
238:             * 
239:             * NB: pour l'instant, après ce re-découpage l'appariement est entièrement refait, ce qui est long
240:             * et très loin d'être optimisé: code à revoir !!!  
241:             */
242:            public boolean varianteRedecoupageArcsNonApparies = false;
243:
244:            /** Appariement en deux passes qui tente un surdécoupage du réseau pour les noeuds non appariés en première passe. 
245:             * Si true: les noeuds du réseau 1 non appariés dans une première passe sont projetés au plus proche 
246:             * 			sur le réseau 2 pour le découper
247:             * Si false (défaut): processus en une seule passe.
248:             * 
249:             * Il s'agit en fait de la même opération que celle qui est faite quand 'projeteNoeuds1SurReseau2'='true',
250:             * mais uniquement pour les noeuds non appariés en première passe, et avec des seuils éventuellement 
251:             * différents et définis par les paramètres suivants : 
252:             * - redecoupageNoeudsNonAppariesDistanceNoeudArc.
253:             * - redecoupageNoeudsNonAppariesDistanceProjectionNoeud
254:             * 
255:             * NB: pour l'instant, après ce re-découpage l'appariement est entièrement refait, ce qui est long
256:             * et très loin d'être optimal: à revoir à l'occasion,  
257:             */
258:            public boolean varianteRedecoupageNoeudsNonApparies = false;
259:
260:            /** Distance max de la projection des noeuds du réseau 1 sur le réseau 2. 
261:             *  Utilisé uniquement si varianteRedecoupageNoeudsNonApparies = true. 
262:             */
263:            public double varianteRedecoupageNoeudsNonApparies_DistanceNoeudArc = 100;
264:
265:            /** Distance min entre la projection d'un noeud sur un arc et les extrémités de cet arc 
266:             *  pour créer un nouveau noeud sur le réseau 2 ? 
267:             *  Utilisé uniquement si varianteRedecoupageNoeudsNonApparies = true. 
268:             */
269:            public double varianteRedecoupageNoeudsNonApparies_DistanceProjectionNoeud = 50;
270:
271:            /** Quand un arc est apparié à un ensemble d'arcs, élimine de cet ensemble 
272:             *  les petites impasses qui créent des aller-retour parasites (de longueur inférieure à distanceNoeuds).
273:             *  NB: paramètre spécifique aux réseaux simples, qui permet d'améliorer le recalage. 
274:             */
275:            public boolean varianteFiltrageImpassesParasites = false;
276:
277:            /** Recherche des ronds-points (faces circulaires) dans le réseau 2, pour éviter 
278:             *  d'apparier un noeud du réseau 1 à une partie seulement d'un rond-point
279:             * (si une partie seulement est appariée, tout le rond point devient apparié).
280:             *  NB: Paramètre utile uniquement pour les réseaux routiers a priori. 
281:             */
282:            public boolean varianteChercheRondsPoints = false;
283:
284:            /////////////////////////////////////////////////////////////////////////////////
285:            /////////////        OPTIONS D'EXPORT                                ////////////
286:            /////////////////////////////////////////////////////////////////////////////////
287:            /** Si true, la géométrie des liens est calculée des objets2 vers les objets 2
288:             * si false, c'est l'inverse
289:             */
290:            public boolean exportGeometrieLiens2vers1 = true;
291:
292:            /////////////////////////////////////////////////////////////////////////////////
293:            /////////////        OPTIONS DE DEBUG                                ////////////
294:            /////////////////////////////////////////////////////////////////////////////////
295:            /** Paramètre pour gérer l'affichage des commentaires dans la fenêtre de contrôle
296:             * Si c'est égal à 0 : aucun commentaire n'est affiché
297:             * Si c'est égal à 1 : le début des grandes étapes et les principaux résultats sont signalés
298:             * Si c'est égal à 2 (debug) : tous les messages sont affichés
299:             */
300:            public int debugAffichageCommentaires = 1;
301:
302:            /** Pour debug uniquement. Sur quels objets fait-on le bilan?
303:             *  Si true (normal) : On fait le bilan au niveau des objets géographiques initiaux, 
304:             *  		  et on exporte des liens de la classe appariement.Lien entre objets géographiques initiaux; 
305:             *  Si false (pour étude/débug): On fait le bilan au niveau des arcs des cartes topo ayant servi au calcul
306:             *            et on exporte des liens de la classe appariementReseaux.LienReseaux entre objets des cartes topo.
307:             */
308:            public boolean debugBilanSurObjetsGeo = true;
309:
310:            /** Pour la représentation graphique des liens d'appariement entre cartes topos.
311:             *  Si true : On représente les liens entre arcs par des tirets réguliers,
312:             *  Si false : On représente les liens entre arcs par un trait reliant les milieux.
313:             */
314:            public boolean debugTirets = true;
315:
316:            /** Pour la représentation graphique des liens d'appariement entre cartes topos.
317:             * Si on représente les liens entre arcs par des tirets réguliers, pas entre les tirets.
318:             */
319:            public double debugPasTirets = 50;
320:
321:            /** Pour la représentation graphique des liens d'appariement entre cartes topos.
322:             *  Si true : On représente les liens entre des objets et un noeud, avec un buffer autour de ces objets
323:             *  Si false : On représente les liens entre objets 2 à 2 par des trait reliant les milieux.
324:             */
325:            public boolean debugBuffer = false;
326:
327:            /** Pour la représentation graphique des liens d'appariement entre cartes topos.
328:             * pour la représetnation des liens d'appariement, taille du buffer autour des objets appariés à un noeud.
329:             */
330:            public double debugTailleBuffer = 10;
331:
332:        }
w___w___w.___jav___a__2___s.c__om___ | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.