1 / 28

<Insert Picture Here>

<Insert Picture Here>. 10 Modélisation de Réseaux. Qu'est ce qu'un réseau?. Un réseau (graphe) représente les relations entre objets Les objets sont des noeuds Un lien connecte deux nœuds. L'ensemble ordonné des liens entre deux nœuds forme un parcours.

Download Presentation

<Insert Picture Here>

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. <Insert Picture Here> 10 Modélisation de Réseaux

  2. Qu'est ce qu'un réseau? • Un réseau (graphe) représente les relations entre objets • Les objets sont des noeuds • Un lien connecte deux nœuds. • L'ensemble ordonné des liens entre deux nœuds forme un parcours.

  3. Point le plus proche "spatialement" • Le point le plus proche de D est B • On l'obtient par une requête SDO_NN B C A D E F H I G

  4. Point le plus proche sur le réseau • Le point le plus proche de D est E B C A D E F H I G

  5. Réseau orienté • Les liens sont orientés (sens uniques) • Le point le plus proche de D est maintenant G B C A D E F H I G

  6. Oracle Spatial Network Data Model Contient les éléments suivants • Un modèle de représentation • Réseaux géométriques ou non • Orientés ou non • Avec ou sans coût • Une interface PL/SQL pour manipuler le réseau • Création des structures du réseau • Une interface Java pour les analysesdu réseau • Chemin le plus court, proches voisins, etc … • Problème du voyageur de commerce, …

  7. Caractéristiques du modèle réseau • Chaque nœud est identifié par un numéro unique • Possibilité d'associer un coût aux nœuds • Avec ou sans information géographique (point) • Chaque lien est défini par un nœud de départ et un nœud d'arrivée. • Coût associé à chaque lien (optionnel) • Avec ou sans information géométrique (ligne) • Structure précisée dans des méta-données • Noms des tables de nœud, lien • Noms des colonnes: coût, géométrie, …

  8. Un réseau non orienté, avec coûts L1 N2 L2 N3 N1 (1) (2) L3 (1) N4 L9 N5 L10 L7 (2) N6 (1) (1) (1.5) L8 L11 L4 (1) (1) (2) (1) L6 L5 N8 N9 N7

  9. Liens bi-directionnels représentés par un ou deux liens Un réseau orienté avec liens bi-directionnels L1 N2 L2 N3 N1 (1) (2) L3 (1) N4 L9 N5 L10 L7 (2) N6 (1) (1) (1.5) L8 L11 L4 (1) (1) L6 (3) L5 (1) -L6 N8 N9 N7 (2)

  10. Nodes Links (Paths) Metadata (Path Links) Modèle de représentation

  11. Champs Optionnels Les tables de nœuds et de liens peuvent contenir des colonnes optionnelles: • flag ACTIVE (Y/N) • Seuls les éléments avec ACTIVE=Y sont considérés par les recherches • NAME, TYPE, LEVEL • Contenu libre • Disponible par l'API Java • Colonnes de coût (noms libres) • Valeur numérique quelconque • Autres colonnes • Contenu libre

  12. Méta-données Précise la structure des composants d'un réseau • Nom des tables • Nom des colonnes optionnelles • Type de réseau (géométrique ou non) • Permet de définir un réseau sur des tables ou vues existantes … • Permet de définir plusieurs réseaux sur les mêmes structures • Coûts différents USER_SDO_NETWORK_METADATA

  13. Définition de réseau “méthode manuelle” • Création manuelle des tables • Possibilité d'utiliser des tables ou vues existantes • Remplissage des méta-données • Vérification de la cohérence des structures et des méta-données. SDO_NET.VALIDATE_NETWORK() create table net_nodes ( node_id number, node_geom sdo_geometry, constraint net_nodes_pk primary key (node_id) ); INSERT INTO user_sdo_network_metadata VALUES ( 'SPATIAL_NET', ... 'NET_NODES', ...);

  14. API Java ou PL/SQL : Classes principales • Network, Node, Link, Path • Conserve le réseau et ses éléments • NetworkFactory • Crée un réseau et ses éléments • NetworkManager • Effectue les analyses sur un réseau. • Charge le réseau depuis la base et le maintient à jour

  15. Network Mode de fonctionnement NetworkManager • Les analyses sont effectuées sur une copie en mémoire du réseau • La classe NetworkManager charge le réseau depuis la base et le met à jour avec les résultats des analyses. NetworkFactory

  16. Comment trouver le chemin optimal …(Java) //Load network UNET Network UNet = NetworkManager.readNetwork(dbConnection, "UNET"); // Get shortest path from node N4 to N3 Path path = NetworkManager.shortestPath (UNet, 4, 3); // Show path cost and number of links System.out.println ("Path cost: " + path.getCost() ); System.out.println ("Number of links: "+ path.getNoOfLinks() ); // Show the links traversed Link[] linkArray = path.getLinkArray(); for (int i = 0; i < linkArray.length; i++) System.out.println (" Link " + linkArray[i].getID() + " " + linkArray[i].getName() +" " + linkArray[i].getCost());

  17. Comment trouver le chemin optimal …(PL/SQL) BEGIN -- Load network UNET sdo_net_mem.network_manager.read_network ('UNET','true'); -- Get shortest path from node N4 to N3 path_id = sdo_net_mem.network_manager.shortest_path ('UNET', 4, 3); -- Get path cost and number of links path_cost := sdo_net_mem.path.get_cost ('UNET', path_id); path_num_links := sdo_net_mem.path path.get_no_of_links ('UNET', path_id); -- Get the links traversed link_array := sdo_net_mem.path.get_link_array ('UNET', path_id); for I in link_array.first..link_array.last loop link_id := sdo_net_mem.link.get_id ('UNET', link_array(i)); link_cost := sdo_net_mem.link.get_cost ('UNET', link_array(i)); end loop; END;

  18. Chemin le plus court L1 N2 L2 N3 N1 L3 N4 L9 N5 L10 L7 N6 L8 L11 L4 L6 L5 N8 N9 N7 Shortest path from node N4 to node N3 Path path = NetworkManager.shortestPath (testNet, startNodeId, endNodeId);

  19. Chemin le plus court (réseau orienté) L1 N2 L2 N3 N1 L3 N4 L9 N5 L10 L7 N6 L8 L11 L4 L6 L5 N8 N9 N7 Shortest path from node N4 to node N3 Path path = NetworkManager.shortestPath (testNet, startNodeId, endNodeId);

  20. Nœuds les plus proches (réseau orienté) L1 N2 L2 N3 N1 L3 N4 L9 N5 L10 L7 N6 L8 L11 L4 (1.5) (3.5) L6 L5 N8 N9 N7 2 nearest nodes from node N4 Path[] pathArray = NetworkManager.nearestNeighbors (testNet, startNodeId, numNeighbors);

  21. Nœuds à distance X (réseau orienté) L1 N2 L2 N3 N1 (1) L3 N4 L9 N5 L10 L7 N6 L8 L11 L4 (3) L6 L5 N8 N9 N7 Nodes less than 3 “cost units” from node N2 Path[] pathArray = NetworkManager.withinCost (testNet, startNodeId, maxCost);

  22. Problème du Voyageur de Commerce (réseau orienté) L1 N2 L2 N3 N1 L3 N4 L9 N5 L10 L7 N6 L8 L11 L4 L6 L5 N8 N9 N7 Optimal path from N7 via N2, N3 and N5 Path tspPath = NetworkManager.tspPath (testNet, nodeIds, isClosed, useExactCost, null);

  23. Arbre de parcours optimal L1 N2 L2 N3 N1 L3 N4 L9 N5 L10 N6 L8 L4 L5 N8 N9 N7 Network mcstNet = NetworkManager.mcst(uNet);

  24. Analyses d'accessibilité Node[] nodeArray = NetworkManager.findReachableNodes (testNet, nodeId); Node[] nodeArray = NetworkManager.findReachingNodes (testNet, nodeId); boolean reachable = NetworkManager.isReachable(testNet, startNodeId, endNodeId) Path[] pathArray = NetworkManager.allPaths(uNet, startNodeId, endNodeId, maxSolutions); • Ces méthodes peuvent retourner un grand nombre de résultats. • Des paramètres optionnels permettent de limiter les résultats: • Coût, profondeur, solutions … Path[] pathArray = NetworkManager.shortestPaths(uNet, startNodeId);

  25. Contraintes de Réseau • Les problèmes d'analyse réels nécessitent des modes de navigation plus sophistiqués. • Par exemple: • Restrictions de manœuvres selon l'horaire • Restrictions selon le type de véhicule • Utilisation de l'interface NeworkConstraint • Développez vos contraintes particulière dans une méthode isSatisfied() • Passez votre implémentation aux fonctions d'analyse • Appel automatique de la méthode isSatisfied() pour chaque lien possible lors d'une analyse • La méthode accepte ou rejette ce lien

  26. Éditeur de réseau et démonstrateur • Outil de manipulation de réseaux • Utilise l'API Java • Permet de tester toutes les fonctions d'analyse sur un réseau. • Lit et écrit les réseaux depuis la base de données, ou depuis des fichiers XML

More Related