| java.lang.Object fr.ign.cogit.geoxygene.feature.DataSet fr.ign.cogit.geoxygene.contrib.cartetopo.CarteTopo
All known Subclasses: fr.ign.cogit.geoxygene.contrib.cartetopo.exemple.MaCarteTopo, fr.ign.cogit.geoxygene.contrib.appariement.reseaux.topologie.ReseauApp, fr.ign.cogit.geoxygene.contrib.delaunay.Triangulation,
CarteTopo | public class CarteTopo extends DataSet (Code) | | Classe racine de la carte topo.
Une carte topo est une composition d'arcs, de noeuds, de faces et de groupes.
Une carte topo est vue comme un DataSet particulier.
Elle a éventuellement une topologie (SPAGHETTI, NETWORK ou MAP).
English: a topological map is an oriented graph, with arcs sorted around the nodes;
author: Mustière/Bonin version: 1.0 |
Field Summary | |
final public static int | MAP | final public static int | NETWORK | final public static int | SPAGHETTI |
Constructor Summary | |
public | CarteTopo() | public | CarteTopo(String nomLogique) Constructeur d'une carte topo non persistante. |
Method Summary | |
public void | addArc(Arc arc) Ajoute un arc à la population des arcs de la carte topo. | public void | addFace(Face face) Ajoute une face à la population des faces de la carte topo. | public void | addGroupe(Groupe groupe) Ajoute un groupe à la population des groupes de la carte topo. | public void | addNoeud(Noeud noeud) Ajoute un noeud à la population des noeuds de la carte topo. | public void | ajouteArcsEtNoeudsAuxFaces(boolean filtrageNoeudsSimples) Ajoute des arcs et des noeuds à la carteTopo this qui ne contient que des faces.
Ces arcs sont les arcs entourant les faces.
Les relations topologiques arcs/noeuds/surfaces sont instanciées au passage.
Les trous sont gérés.
Les faces en entrée peuvent avoir une orientation quelconque (direct), cela est géré.
Par contre, on ne s'appuie que sur les points intermédiaires existants dans les polygones des faces :
les relations topologiques sont donc bien gérés uniquement si les polygones ont des géométrie "compatibles".
Parameters: filtrageNoeudsSimples - Si ce paramètre est égal à false, alors on crée un arc et deux noeuds pour chaque segment reliant des points intermédiares des surfaces. | public CarteTopo | copie(String nomLogique) Copie d'une carte topologique avec toutes les relations topologiques.
Les liens "correspondants" sont aussi dupliqués.
ATTENTION: ne fonctionne bien que pour une carteTopo non spécialisée
(i.e. | public void | creeNoeudsManquants(double tolerance) Crée un nouveau noeud à l'extrémité de chaque arc si il n'y en a pas. | public void | creeTopologieArcsNoeuds(double tolerance) Instancie la topologie de réseau d'une Carte Topo,
en se basant sur la géométrie 2D des arcs et des noeuds.
Autrement dit: crée les relation "noeud initial" et "noeud final" d'un arc.
ATTENTION: cette méthode ne rajoute pas de noeuds. | public void | creeTopologieFaces() Crée les faces à partir d'un graphe planaire et instancie la topologie face / arcs. | public void | enleveArcs(List arcsAEnlever) Enlève des arcs de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les faces et noeuds). | public void | enleveFaces(List facesAEnlever) Enlève des faces de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les arcs et par conséquent avec les noeuds). | public void | enleveNoeuds(List noeudsAEnlever) Enlève des noeuds de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les arcs et par conséquent avec les faces). | public void | filtreArcsDoublons() Filtre les arcs en double
(en double = même géométrie et même orientation). | public void | filtreDoublons(double tolerance) Filtrage des noeuds doublons (plusieurs noeuds localisés au même endroit).
NB: si cela n'avait pas été fait avant,
la population des noeuds est indexée dans cette méthode
(dallage, paramètre = 20).
Cette méthode gère les conséquences sur la topologie,
si celle-ci a été instanciée auparavant. | public void | filtreNoeudsIsoles() Filtrage des noeuds isolés (c'est-à-dire connectés à aucun arc). | public void | filtreNoeudsSimples() Filtrage des noeuds "simples", c'est-à-dire avec seulement deux arcs incidents,
si ils ont des orientations compatibles.
Ces noeuds sont enlevés et un seul arc est créé à la place des deux arcs incidents.
Cette méthode gère les conséquences sur la topologie arcs/noeuds/faces.
Cette méthode gère aussi les conséquences sur les correspondants.
(un nouvel arc a pour correspondants tous les correspondants des deux
arcs incidents). | public void | fusionNoeuds(double tolerance) Fusionne en un seul noeud, tous les noeuds proches de moins de "tolerance"
Les correspondants suivent, la topologie arcs/noeuds aussi. | public void | fusionNoeuds(Population popSurfaces) Fusionne en un seul noeud, tous les noeuds contenu dans une même
surface de la population de surfaces passée en paramètre. | public List | getListeArcs() Liste des arcs de la carte topo. | public List | getListeFaces() Liste des faces de la carte topo. | public List | getListeGroupes() Liste des groupes de la carte topo. | public List | getListeNoeuds() Liste des noeuds de la carte topo. | public Population | getPopArcs() Population des arcs de la carte topo. | public Population | getPopFaces() Population des faces de la carte topo. | public Population | getPopGroupes() Population des groupes de la carte topo. | public Population | getPopNoeuds() Population des noeuds de la carte topo. | public int | getType() | public void | importClasseGeo(String nomClasseGeo) Charge en mémoire les élements de la classe 'nomClasseGeo'
et remplit 'this' avec des correspondants de ces éléments. | public void | importClasseGeo(FT_FeatureCollection listeFeatures) Remplit 'this' avec des correspondants des éléments de 'listeFeature'. | public void | initialisePoids() | public void | projete(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud, boolean impassesSeulement) Découpe la carte topo this en fonction des noeuds d'une autre carte topo (ct).
En détail:
Pour chaque noeud N de la carte topo en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc). | public void | projete(List pts, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud) Découpe la carte topo this en fonction d'un ensemble de points (GM_Point).
En détail:
Pour chaque point en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc). | public void | projeteTousLesPoints(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud) Découpe la carte topo this en fonction de tous les points (noeuds et points intermediaires)
d'une autre carte topo (ct).
En détail:
Pour chaque point P de la carte topo en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc). | public void | rendPlanaire(double tolerance) Transforme la carte topo pour la rendre planaire :
les arcs sont découpés à chaque intersection d'arcs,
et un noeud est créé à chaque extrémité d'arc.
NB: la topologie arcs/noeuds de la carte en sortie est instanciée.
NB: les populations d'arcs et de noeuds sont indexées pendant la méthode,
si cela n'avait pas déjà été fait avant.
Les paramètres de ces index sont:
20x20 cases pour les noeuds, ~50 arcs par case pour les arcs.
Si cela ne convient pas: instancier les topologies avant. | public void | setType(int i) | public void | videTopologieFace(Face face) |
MAP | final public static int MAP(Code) | | Network = topologie arc / noeuds / faces
|
NETWORK | final public static int NETWORK(Code) | | Network = topologie arc / noeuds
|
SPAGHETTI | final public static int SPAGHETTI(Code) | | Spaghetti = pas de relation topologique entre arcs, noeuds et faces
|
CarteTopo | public CarteTopo()(Code) | | Constructeur par défaut;
ATTENTION, constructeur à éviter car aucune population n'est créée:
seule un objet carteTopo est créé
|
CarteTopo | public CarteTopo(String nomLogique)(Code) | | Constructeur d'une carte topo non persistante.
Le nom logique peut ête utilisé si la carte topo apparient à un DataSet,
il peut être une chaîne vide sinon.
Par ce constructeur, la carte topo contient des arcs/noeuds/faces/groupes
des classes CarteTopo.Arc, CarteTopo.Noeud, CarteTopo.Face, CarteTopo.Groupe.
|
addArc | public void addArc(Arc arc)(Code) | | Ajoute un arc à la population des arcs de la carte topo.
Attention : même si la carte topo est persistante, le noeud n'est pas rendu persistant dans cette méthode
|
addFace | public void addFace(Face face)(Code) | | Ajoute une face à la population des faces de la carte topo.
Attention : même si la carte topo est persistante, le noeud n'est pas rendu persistant dans cette méthode
|
addGroupe | public void addGroupe(Groupe groupe)(Code) | | Ajoute un groupe à la population des groupes de la carte topo.
Attention : même si la carte topo est persistante, le noeud n'est pas rendu persistant dans cette méthode
|
addNoeud | public void addNoeud(Noeud noeud)(Code) | | Ajoute un noeud à la population des noeuds de la carte topo.
Attention : même si la carte topo est persistante, le noeud n'est pas rendu persistant dans cette méthode
|
ajouteArcsEtNoeudsAuxFaces | public void ajouteArcsEtNoeudsAuxFaces(boolean filtrageNoeudsSimples)(Code) | | Ajoute des arcs et des noeuds à la carteTopo this qui ne contient que des faces.
Ces arcs sont les arcs entourant les faces.
Les relations topologiques arcs/noeuds/surfaces sont instanciées au passage.
Les trous sont gérés.
Les faces en entrée peuvent avoir une orientation quelconque (direct), cela est géré.
Par contre, on ne s'appuie que sur les points intermédiaires existants dans les polygones des faces :
les relations topologiques sont donc bien gérés uniquement si les polygones ont des géométrie "compatibles".
Parameters: filtrageNoeudsSimples - Si ce paramètre est égal à false, alors on crée un arc et deux noeuds pour chaque segment reliant des points intermédiares des surfaces. Si ce paramètre est égal à true, alors on fusionne les arcs et on ne retient que les noeuds qui ont 3 arcs incidents ou qui servent de point initial/final à une face. author: Mustière/Bonin |
copie | public CarteTopo copie(String nomLogique)(Code) | | Copie d'une carte topologique avec toutes les relations topologiques.
Les liens "correspondants" sont aussi dupliqués.
ATTENTION: ne fonctionne bien que pour une carteTopo non spécialisée
(i.e. avec carteTopo.Arc, carte.Noeud...).
En effet, les objets copiés appartiendront au package cartetopo.
|
creeNoeudsManquants | public void creeNoeudsManquants(double tolerance)(Code) | | Crée un nouveau noeud à l'extrémité de chaque arc si il n'y en a pas.
Les noeuds existants sont tous conservés.
NB: la topologie arcs/noeuds est instanciée au passage.
NB: si cela n'avait pas été fait avant,
la population des noeuds est indexée dans cette méthode.
Paramètres de l'index = le même que celui des arcs si il existe,
sinon Dallage avec à peu près 50 noeuds par dalle.
|
creeTopologieArcsNoeuds | public void creeTopologieArcsNoeuds(double tolerance)(Code) | | Instancie la topologie de réseau d'une Carte Topo,
en se basant sur la géométrie 2D des arcs et des noeuds.
Autrement dit: crée les relation "noeud initial" et "noeud final" d'un arc.
ATTENTION: cette méthode ne rajoute pas de noeuds. Si un arc n'a pas de noeud
localisé à son extrémité, il n'aura pas de noeud initial (ou final).
DE PLUS si plusieurs noeuds sont trop proches (cf. param tolérance),
alors un des noeuds est choisi au hasard pour la relation arc/noeud,
ce qui n'est pas correct.
IL EST DONC CONSEILLE DE FILTRER LES DOUBLONS AVANT SI NECESSAIRE.
NB: si cela n'avait pas été fait avant,
la population des noeuds est indexée dans cette méthode
(dallage, paramètre = 20).
Parameters: tolerance - Le paramètre "tolerance" spécifie la distance maximale acceptée entrela position d'un noeud et la position d'une extrémité de ligne, pour considérer ce noeud comme extrémité (la tolérance peut être nulle). |
creeTopologieFaces | public void creeTopologieFaces()(Code) | | Crée les faces à partir d'un graphe planaire et instancie la topologie face / arcs.
Une face est délimitée par un cycle minimal du graphe.
Le paramètre persistant spécifie si les faces créées, ainsi que la topologie, sont rendus persistants.
Si oui, il faut appeler cette méthode dans une transaction ouverte.
NB1 : la topologie de réseau arcs/noeuds doit avoir été instanciée.
NB2 : une face "extérieure" est créée (sa géométrie entoure le "trou" de l'extérieur qu'est le réseau.
Donc, dans le cas d'une topologie complete arcs/faces, tous les arcs ont une face gauche
et une face à droite.
NB3 : ATTENTION : en cas d'un réseau non connexe, une face extérieure différente est crée pour chaque
partie connexe !
NB4 : Les culs de sac ont la même face à gauche et à droite, et la face "longe le cul de sac";
i.e. la géométrie de la face fait un aller/retour sur le cul-de-sac.
NB5 : Méthode en théorie conçue pour les graphes planaires uniquement (testée dans ce cadre uniquement).
La méthode est en théorie valable pour les graphes non planaires, mais les faces créées
seront étranges (on ne recrée pas les intersections manquantes, on les ignore).
Si il existe des arcs sans noeud initial ou final (topologie de réseau pas complete),
alors ces arcs n'ont ni face à gauche, ni face à droite
|
enleveArcs | public void enleveArcs(List arcsAEnlever)(Code) | | Enlève des arcs de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les faces et noeuds).
|
enleveFaces | public void enleveFaces(List facesAEnlever)(Code) | | Enlève des faces de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les arcs et par conséquent avec les noeuds).
|
enleveNoeuds | public void enleveNoeuds(List noeudsAEnlever)(Code) | | Enlève des noeuds de la carteTopo, en enlevant aussi les relations topologiques
les concernant (avec les arcs et par conséquent avec les faces).
|
filtreArcsDoublons | public void filtreArcsDoublons()(Code) | | Filtre les arcs en double
(en double = même géométrie et même orientation).
Attention: les conséquences sur la topologie arcs/faces ne sont pas gérées.
|
filtreDoublons | public void filtreDoublons(double tolerance)(Code) | | Filtrage des noeuds doublons (plusieurs noeuds localisés au même endroit).
NB: si cela n'avait pas été fait avant,
la population des noeuds est indexée dans cette méthode
(dallage, paramètre = 20).
Cette méthode gère les conséquences sur la topologie,
si celle-ci a été instanciée auparavant.
Cette méthode gère aussi les conséquences sur les correspondants (un
noeud gardé a pour correspondants tous les correspondants des doublons).
Parameters: tolerance - Le paramètre tolérance spécifie la distance maximale pour considérer deuxnoeuds positionnés au même endroit. |
filtreNoeudsIsoles | public void filtreNoeudsIsoles()(Code) | | Filtrage des noeuds isolés (c'est-à-dire connectés à aucun arc).
Ceux-ci sont enlevés de la Carte Topo
IMPORTANT : La topologie de réseau doit avoir été instanciée,
sinon tous les noeuds sont enlevés.
|
filtreNoeudsSimples | public void filtreNoeudsSimples()(Code) | | Filtrage des noeuds "simples", c'est-à-dire avec seulement deux arcs incidents,
si ils ont des orientations compatibles.
Ces noeuds sont enlevés et un seul arc est créé à la place des deux arcs incidents.
Cette méthode gère les conséquences sur la topologie arcs/noeuds/faces.
Cette méthode gère aussi les conséquences sur les correspondants.
(un nouvel arc a pour correspondants tous les correspondants des deux
arcs incidents).
Cette méthode gère les conséquences sur l'orientation
IMPORTANT: la topologie arcs/noeuds doit avoir été instanciée avant
de lancer cette méthode
|
fusionNoeuds | public void fusionNoeuds(double tolerance)(Code) | | Fusionne en un seul noeud, tous les noeuds proches de moins de "tolerance"
Les correspondants suivent, la topologie arcs/noeuds aussi.
NB: les petits arcs qui n'ont plus de sens sont aussi éliminés.
Plus précisément ce sont ceux qui partent et arrivent sur un même
nouveau noeud créé, et restant à moins de "tolerance" de ce nouveau noeud
Un index spatial (dallage) est créé si cela n'avait pas été fait avant,
mais il est toujours conseillé de le faire en dehors de cette méthode,
pour controler la taille du dallage.
|
fusionNoeuds | public void fusionNoeuds(Population popSurfaces)(Code) | | Fusionne en un seul noeud, tous les noeuds contenu dans une même
surface de la population de surfaces passée en paramètre.
Les correspondants suivent, la topologie arcs/noeuds aussi.
NB: les petits arcs qui n'ont plus de sens sont aussi éliminés.
Plus précisément ce sont ceux qui partent et arrivent sur un même
nouveau noeud créé, et restant dans la surface de fusion.
Un index spatial (dallage) est créé si cela n'avait pas été fait avant,
mais il est toujours conseillé de le faire en dehors de cette méthode,
pour controler la taille du dallage.
|
getListeArcs | public List getListeArcs()(Code) | | Liste des arcs de la carte topo. Surcharge de getPopArcs().getElements().
|
getListeFaces | public List getListeFaces()(Code) | | Liste des faces de la carte topo. Surcharge de getPopFaces().getElements().
|
getListeGroupes | public List getListeGroupes()(Code) | | Liste des groupes de la carte topo. Surcharge de getPopGroupes().getElements().
|
getListeNoeuds | public List getListeNoeuds()(Code) | | Liste des noeuds de la carte topo. Surcharge de getPopNoeuds().getElements().
|
getPopArcs | public Population getPopArcs()(Code) | | Population des arcs de la carte topo.
|
getPopFaces | public Population getPopFaces()(Code) | | Population des faces de la carte topo.
|
getPopGroupes | public Population getPopGroupes()(Code) | | Population des groupes de la carte topo.
|
getPopNoeuds | public Population getPopNoeuds()(Code) | | Population des noeuds de la carte topo.
|
getType | public int getType()(Code) | | |
importClasseGeo | public void importClasseGeo(String nomClasseGeo)(Code) | | Charge en mémoire les élements de la classe 'nomClasseGeo'
et remplit 'this' avec des correspondants de ces éléments.
|
importClasseGeo | public void importClasseGeo(FT_FeatureCollection listeFeatures)(Code) | | Remplit 'this' avec des correspondants des éléments de 'listeFeature'.
|
initialisePoids | public void initialisePoids()(Code) | | Initialise le poids de chaque arc comme étant égal à sa longueur;
NB: utile uniquement aux plus courts chemins
|
projete | public void projete(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud, boolean impassesSeulement)(Code) | | Découpe la carte topo this en fonction des noeuds d'une autre carte topo (ct).
En détail:
Pour chaque noeud N de la carte topo en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc).
Si aucune des extrémités de cet arc est à moins de distanceMaxProjectionNoeud du noeud N,
alors on découpe l'arc en y projetant le noeud N.
Si impassesSeulement = true: seules les noeuds N extrémités d'impasse peuvent être projetées
La topologie arcs/noeuds, l'orientation et les correspondants suivent.
Les arcs de this sont indexés au passage si cela n'avait pas été fait avant.
|
projete | public void projete(List pts, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud)(Code) | | Découpe la carte topo this en fonction d'un ensemble de points (GM_Point).
En détail:
Pour chaque point en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc).
Si aucune des extrémités de cet arc est à moins de distanceMaxProjectionNoeud du noeud N,
alors on découpe l'arc en y projetant le noeud N.
La topologie arcs/noeuds, l'orientation et les correspondants suivent.
|
projeteTousLesPoints | public void projeteTousLesPoints(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud)(Code) | | Découpe la carte topo this en fonction de tous les points (noeuds et points intermediaires)
d'une autre carte topo (ct).
En détail:
Pour chaque point P de la carte topo en entrée,
on prend chaque arc de this qui en est proche (c'est-à-dire à moins de distanceMaxNoeudArc).
Si aucune des extrémités de cet arc est à moins de distanceMaxProjectionNoeud du noeud P,
alors on découpe l'arc en y projetant le noeud P.
La topologie arcs/noeuds, l'orientation et les correspondants suivent.
Les arcs de this sont indexés au passage si cela n'avait pas été fait avant.
|
rendPlanaire | public void rendPlanaire(double tolerance)(Code) | | Transforme la carte topo pour la rendre planaire :
les arcs sont découpés à chaque intersection d'arcs,
et un noeud est créé à chaque extrémité d'arc.
NB: la topologie arcs/noeuds de la carte en sortie est instanciée.
NB: les populations d'arcs et de noeuds sont indexées pendant la méthode,
si cela n'avait pas déjà été fait avant.
Les paramètres de ces index sont:
20x20 cases pour les noeuds, ~50 arcs par case pour les arcs.
Si cela ne convient pas: instancier les topologies avant.
NB: les "correspondants" des arcs et noeuds suivent le découpage,
de même que l'attribut orientation.
MAIS ATTENTION:
- les liens vers des groupes ne suivent pas.
- les attributs/liens particuliers (cas où les arcs proviennent
d'une carteTopo spécialisée) ne suivent pas non plus
- la topologie des faces est détruite aussi
Parameters: tolerance - Paramètre de tolérance sur la localisation des noeuds:deux extrémités d'arc à moins de cette distance sont considérées superposées(utilisé lors de la construction de la topologie arcs/noeuds).Ce paramètre peut être nul. |
setType | public void setType(int i)(Code) | | |
videTopologieFace | public void videTopologieFace(Face face)(Code) | | Détruit les relations topologique d'une face avec tous ses arcs entourants
|
|
|