public class CarteTopo extends DataSet
English: a topological map is an oriented graph, with arcs sorted around the nodes;
Modifier and Type | Field and Description |
---|---|
protected EventListenerList |
listenerList |
protected static Logger |
logger
Logger.
|
static int |
MAP
Network = topologie arc / noeuds / faces
|
static int |
NETWORK
Network = topologie arc / noeuds
|
static int |
SPAGHETTI
Spaghetti = pas de relation topologique entre arcs, noeuds et faces
|
commentaire, composants, contraintes, date, db, extractions, id, modele, nom, ojbConcreteClass, persistant, populations, produit, schemaConceptuel, STATICID, typeBD, zone
Constructor and Description |
---|
CarteTopo()
Constructeur par défaut ; ATTENTION, constructeur à éviter car aucune
population n'est créée: seule un objet carteTopo est créé.
|
CarteTopo(String nomLogique)
Constructeur d'une carte topo non persistante.
|
Modifier and Type | Method and Description |
---|---|
void |
addActionListener(ActionListener l)
Adds an
ActionListener to the carteTopo. |
void |
addArc(Arc arc)
Ajoute un arc à la population des arcs de la carte topo.
|
void |
addFace(Face face)
Ajoute une face à la population des faces de la carte topo.
|
void |
addGroupe(Groupe groupe)
Ajoute un groupe à la population des groupes de la carte topo.
|
void |
addMissingEdges(double threshold)
Add the missing edges from the graph.
|
void |
addNoeud(Noeud noeud)
Ajoute un noeud à la population des noeuds de la carte topo.
|
void |
ajouteArcsEtNoeudsAuxFaces(boolean filtrageNoeudsSimples)
Ajoute des arcs et des noeuds à la carteTopo this qui ne contient que des
faces.
|
void |
cleanEdges(double tolerance) |
static void |
cleanLineString(ILineString line,
double tolerance) |
static List<Cycle> |
construireGeometrieCycleExterieur(Arc arcInitial,
boolean aGauche)
Construire la liste des géométries corrigées d'un cycle.
|
CarteTopo |
copie(String nomLogique)
Copie d'une carte topologique avec toutes les relations topologiques.
|
void |
creeNoeudsManquants(double tolerance)
Crée un nouveau noeud à l'extrémité de chaque arc si il n'y en a pas.
|
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.
|
void |
creeTopologieFaces()
Crée les faces à partir d'un graphe planaire et instancie la topologie face
/ arcs.
|
void |
decoupeArcs(double distance)
Découpe les arcs en utilisant les noeuds plus proches des arcs que la
distance demandée.
|
void |
enleveArc(Arc arcAEnlever) |
void |
enleveArcs(Collection<Arc> arcsAEnlever)
enlève des arcs de la carteTopo, en enlevant aussi les relations
topologiques les concernant (avec les faces et noeuds).
|
void |
enleveArcsBoucles()
Enlève les arcs qui forment une boucle, i.e. dont le noeud ini est égal au
noeud fin.
|
void |
enleveFaces(Collection<Face> 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).
|
void |
enleveNoeud(Noeud n) |
void |
enleveNoeuds(Collection<Noeud> 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).
|
void |
filtreArcsDoublons()
Filtre les arcs en double (en double = même géométrie et même orientation).
|
void |
filtreArcsDoublons(double toleranceHaussdorf)
Filtre les arcs en double (en double = même géométrie et même orientation).
|
void |
filtreArcsNull(double tolerance) |
void |
filtreDoublons(double tolerance)
Filtrage des noeuds doublons (plusieurs noeuds localisés au même endroit).
|
void |
filtreNoeudsIsoles()
Filtrage des noeuds isolés (c'est-à-dire connectés à aucun arc).
|
void |
filtreNoeudsSimples()
Filtrage des noeuds "simples", c'est-à-dire avec seulement deux arcs
incidents, si ils ont des orientations compatibles.
|
void |
filtreNoeudsSimples(boolean useWeight,
IGeometry filteredArea) |
void |
filtreNoeudsSimples(boolean useWeight,
IGeometry filteredArea,
boolean checkEqualCorrespondants) |
protected void |
fireActionPerformed(ActionEvent event)
Notifies all listeners that have registered interest for notification on
this event type.
|
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.
|
void |
fusionNoeuds(IPopulation<? extends IFeature> 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.
|
List<Arc> |
getListeArcs()
Liste des arcs de la carte topo.
|
List<Face> |
getListeFaces()
Liste des faces de la carte topo.
|
List<Groupe> |
getListeGroupes()
Liste des groupes de la carte topo.
|
List<Noeud> |
getListeNoeuds()
Liste des noeuds de la carte topo.
|
IPopulation<Arc> |
getPopArcs()
Population des arcs de la carte topo.
|
IPopulation<Face> |
getPopFaces()
Population des faces de la carte topo.
|
IPopulation<Groupe> |
getPopGroupes()
Population des groupes de la carte topo.
|
IPopulation<Noeud> |
getPopNoeuds()
Population des noeuds de la carte topo.
|
int |
getType() |
void |
importAsNodes(Collection<? extends IFeature> listeFeatures)
Remplit 'this' avec des correspondants des éléments de 'listeFeature'.
|
void |
importAsNodes(IFeatureCollection<?> listeFeatures)
Remplit 'this' avec des correspondants des éléments de 'listeFeature'.
|
void |
importClasseGeo(IFeatureCollection<?> listeFeatures)
Remplit 'this' avec des correspondants des éléments de 'listeFeature'.
|
void |
importClasseGeo(IFeatureCollection<?> listeFeatures,
boolean is2d)
Remplit 'this' avec des correspondants des éléments de 'listeFeature'.
|
void |
importClasseGeo(String nomClasseGeo)
Charge en mémoire les éléments de la classe 'nomClasseGeo' et remplit
'this' avec des correspondants de ces éléments.
|
void |
initialisePoids()
Initialise le poids de chaque arc comme étant égal à sa longueur; NB: utile
uniquement aux plus courts chemins
|
boolean |
isBuildInfiniteFace() |
void |
marquerCycle(Cycle cycle,
Face face)
Affecter la face passée en paramètre aux arcs du cycle
|
void |
marquerCycle(List<Arc> arcs,
List<Boolean> orientations,
boolean aGauche,
Face face,
List<Arc> arcsDejaTraitesAGauche,
List<Arc> arcsDejaTraitesADroite)
Affecter la face passée en paramètre aux arcs parcourus
|
void |
nettoyer()
Nettoie les pointeurs de la carte topo pour assurer une bonne liberation de
la memoire A utiliser lorsque'on souhaite effacer une carte topo.
|
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).
|
void |
projete(List<IPoint> pts,
double distanceMaxNoeudArc,
double distanceMaxProjectionNoeud)
Découpe la carte topo this en fonction d'un ensemble de points (GM_Point).
|
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).
|
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.
|
void |
setActionListeners(EventListenerList listenerList)
Sets the list of action listeners.
|
void |
setBuildInfiniteFace(boolean buildInfiniteFace) |
void |
setType(int i) |
Groupe |
shortestPath(IDirectPosition x1,
IDirectPosition x2,
Arc a1,
Arc a2,
double max) |
Noeud |
splitEdge(Arc a,
IDirectPosition p) |
void |
splitEdgesWithPoints(double distance)
Découpe les arcs en utilisant les points plus proches des arcs que la
distance demandée.
|
void |
videTopologieFace(Face face)
détruit les relations topologique d'une face avec tous ses arcs entourants
|
addComposant, addExtraction, addPopulation, chargeElements, chargeElementsPartie, chargeElementsPartie, chargeExtractionThematiqueEtSpatiale, detruitJeu, emptyComposants, emptyPopulations, getAppartientA, getAppartientAID, getCommentaire, getComposant, getComposant, getComposants, getContraintes, getDate, getExtractions, getId, getInstance, getModele, getNom, getOjbConcreteClass, getPersistant, getPopulation, getPopulation, getPopulationByFeatureTypeName, getPopulations, getProduit, getSchemaConceptuel, getTypeBD, getZone, initPopulations, removeComposant, removePopulation, setAppartientA, setAppartientAID, setCommentaire, setComposants, setContraintes, setDate, setExtractions, setId, setModele, setNom, setOjbConcreteClass, setPersistant, setPopulations, setProduit, setSchemaConceptuel, setTypeBD, setZone, toString
protected static final Logger logger
protected EventListenerList listenerList
public static final int SPAGHETTI
public static final int NETWORK
public static final int MAP
public CarteTopo()
public CarteTopo(String nomLogique)
nomLogique
- nom de la carte topopublic void addActionListener(ActionListener l)
ActionListener
to the carteTopo.l
- the ActionListener
to be addedpublic void setActionListeners(EventListenerList listenerList)
listenerList
- list of action listenersprotected void fireActionPerformed(ActionEvent event)
EventListenerList
public IPopulation<Arc> getPopArcs()
public IPopulation<Noeud> getPopNoeuds()
public IPopulation<Face> getPopFaces()
public IPopulation<Groupe> getPopGroupes()
public List<Noeud> getListeNoeuds()
public List<Arc> getListeArcs()
public List<Face> getListeFaces()
public List<Groupe> getListeGroupes()
public void addNoeud(Noeud noeud)
public void addArc(Arc arc)
public void addFace(Face face)
public void addGroupe(Groupe groupe)
public boolean isBuildInfiniteFace()
public void setBuildInfiniteFace(boolean buildInfiniteFace)
public int getType()
public void setType(int i)
public CarteTopo copie(String nomLogique)
nomLogique
- nom de la carte topopublic void enleveArcs(Collection<Arc> arcsAEnlever)
arcsAEnlever
- liste des arcs à enlever de la carte topopublic void enleveArc(Arc arcAEnlever)
public void enleveArcsBoucles()
public void enleveNoeuds(Collection<Noeud> noeudsAEnlever)
noeudsAEnlever
- noeuds à enlever de la carte topopublic void enleveFaces(Collection<Face> facesAEnlever)
facesAEnlever
- liste des face à enlever de la carte topopublic void creeTopologieArcsNoeuds(double tolerance)
tolerance
- Le paramètre "tolerance" spécifie la distance maximale
acceptée entre la 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).public void creeNoeudsManquants(double tolerance)
tolerance
- tolérance utilisée pour chercher des noeuds existants
auxquels se raccrocher au lieu d'en créer de nouveaux.public void filtreNoeudsIsoles()
public void filtreArcsNull(double tolerance)
tolerance
- public void filtreDoublons(double tolerance)
tolerance
- Le paramètre tolérance spécifie la distance maximale pour
considérer deux noeuds positionnés au même endroit.public void filtreNoeudsSimples()
IMPORTANT: la topologie arcs/noeuds doit avoir été instanciée avant de lancer cette méthode
public void filtreNoeudsSimples(boolean useWeight, IGeometry filteredArea)
public void filtreNoeudsSimples(boolean useWeight, IGeometry filteredArea, boolean checkEqualCorrespondants)
public void filtreArcsDoublons()
Attention: les conséquences sur la topologie arcs/faces ne sont pas gérées.
TODO s'il existe des arcs en plus de 2 exemplaires, ils ne sont pas enlevés je crois
public void filtreArcsDoublons(double toleranceHaussdorf)
Attention: les conséquences sur la topologie arcs/faces ne sont pas gérées.
TODO s'il existe des arcs en plus de 2 exemplaires, ils ne sont pas enlevés je crois
public void cleanEdges(double tolerance)
public static void cleanLineString(ILineString line, double tolerance)
public void rendPlanaire(double tolerance)
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.public void fusionNoeuds(double tolerance)
tolerance
- tolérance en dessous de laquelle les noeuds sont fusionéspublic void fusionNoeuds(IPopulation<? extends IFeature> popSurfaces)
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.
popSurfaces
- population contenant les surface à fusionner en un seul
noeudpublic void projete(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud, boolean impassesSeulement)
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.
public void projeteTousLesPoints(CarteTopo ct, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud)
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.
public void projete(List<IPoint> pts, double distanceMaxNoeudArc, double distanceMaxProjectionNoeud)
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.
public void creeTopologieFaces()
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.
public static List<Cycle> construireGeometrieCycleExterieur(Arc arcInitial, boolean aGauche)
arcInitial
- premier arc du cycleaGauche
- vrai si ce cycle parcours son premier arc à gauche, faux
sinonpublic void videTopologieFace(Face face)
face
- face dont la topologie doit être vidéepublic void ajouteArcsEtNoeudsAuxFaces(boolean filtrageNoeudsSimples)
filtrageNoeudsSimples
- Si ce paramètre est égal à false, alors on
crée un arc et deux noeuds pour chaque segment reliant des points
intermédiaires 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.public void addMissingEdges(double threshold)
public void initialisePoids()
public void importClasseGeo(String nomClasseGeo)
nomClasseGeo
- nom de la classe des éléments à importerpublic void importClasseGeo(IFeatureCollection<?> listeFeatures)
listeFeatures
- liste des éléments à importerpublic void importClasseGeo(IFeatureCollection<?> listeFeatures, boolean is2d)
listeFeatures
- liste des éléments à importeris2d
- si vrai, alors convertir les géométries en 2dpublic void importAsNodes(Collection<? extends IFeature> listeFeatures)
listeFeatures
- liste des éléments à importerpublic void importAsNodes(IFeatureCollection<?> listeFeatures)
listeFeatures
- liste des éléments à importerpublic void marquerCycle(Cycle cycle, Face face)
cycle
- cycle à parcourir afin d'affecter une face à ses arcsface
- face à affecter aux arcspublic void marquerCycle(List<Arc> arcs, List<Boolean> orientations, boolean aGauche, Face face, List<Arc> arcsDejaTraitesAGauche, List<Arc> arcsDejaTraitesADroite)
arcs
- arcs à parcourirorientations
- orientations respectives des arcsaGauche
- vrai si le premier arc est parcourus par la gauche, faux
s'il est parcouru par la droiteface
- face à affecter aux arcs (du côté déterminé par l'orientation
et la valeur de aGauche)arcsDejaTraitesAGauche
- liste des arcs déjà traités à gauche à
maintenirarcsDejaTraitesADroite
- liste des arcs déjà traités à droite à
maintenirpublic void nettoyer()
public void enleveNoeud(Noeud n)
public void decoupeArcs(double distance)
distance
- distance utilisée pour sélectionner les noeuds avec
lesquels découpepublic void splitEdgesWithPoints(double distance)
distance
- distance utilisée pour sélectionner les points avec
lesquels découpepublic Noeud splitEdge(Arc a, IDirectPosition p)
public Groupe shortestPath(IDirectPosition x1, IDirectPosition x2, Arc a1, Arc a2, double max)
Copyright © 2016 Laboratoire COGIT, IGN. All rights reserved.