Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1638 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Module covoiturage sur intranet : recherche informations

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Module covoiturage sur intranet : recherche informations

n°1913294
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 10:33:22  profilanswer
 

Bonjour à tous.
 
Alors voila, je suis développeur web (intranet applicatif) dans le public. Et on me demande (si possible) la mise en place d'un module de covoiturage uniquement à notre sphère (et donc "privé" ).
La partie de proposition de place pour le parcours de xxxx à xxxx tel jour à telle heure ne me pose pas vraisemblablement de soucis. J'ai deja une base de données des villes/villages avec codes postales pour mon départements, je peux facilement avoir cela pour ma région (département voisin).
MAIS, le soucis c'est la gestion des proximité, genre une personne habitant a XXX peux admettons prendre quelqu'un sur un rayon de 5 km, cette gestion de proximité est disponible sur différent site de covoiturage ici et là. J'aurais voulu savoir s'il y avait une base open source pour cela ?
Car je ne vois pas du tout comment faire sans cette informations
Au pire des cas je proposerais un choix issus du code postel genre XXXXX peut etre lié à plusieur communes avoisinante mais une gestion des proximités serait bien plus adéquate.
 
ATTENTION, je sais qu'il existe des outils sur différent site qui propose d'exporté leur module de covoiturage sur un site internet en developpement, cela dit cette solution ne m'interesse pas car nous sommes dans un module "privé" et surtout en intranet donc il ne faut aucune liaison avec un site extérieur (passerelle internationnal et authentification oblige)
 
Merci par avance pour vos lumières et votres aide qui me permettrais d'avancer dans mon projet et établir un cahier des charges à présenter à la direction.
 
cordialement

mood
Publicité
Posté le 10-08-2009 à 10:33:22  profilanswer
 

n°1913302
flo850
moi je
Posté le 10-08-2009 à 10:38:48  profilanswer
 

si tu bosses dans le public, tu peux te rapproche du conseil général de la saone et loire qui ont mis en place un outil équivalent


---------------

n°1913310
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 10:51:53  profilanswer
 

Le soucis c'est que ce conseil général a fait appel a un prestataire "ecolutis" tout comme mon département (seine maritime) avec roulezmalin.fr or la dans notre cas on ne veux pas rentrer en compétition avec le conseil général et leur outils de covoiturage pour le particulier, mais seulement proposer un service de covoiturage interne a notre organisme et donc on ne vas pas payé des milles et des cents pour une application de ce genre :( d'ailleur leur outils est directement lié à google map, donc un accès extérieur et donc une connection internet vers google est nécessaire. Malheureusement l'outils qui est demander va devoir etre purement interne :( sa me complique la tache car j'avais pour but d'afficher la carte du trajet mais sa ne va pas etre possible va tout falloir rentrer manuellement je pense. genre de XXXX à XXXX en passant par XXXX et XXXX qui sera completer dans le formulaire du déposant d'annonce de facon facultative.
 

n°1913335
pataluc
Posté le 10-08-2009 à 11:22:44  profilanswer
 

si j'ai bien compris ton problème, pour chaque ville/village de ta bdd il te faut connaitre la distance avec toutes les autres...

 

je pense que ca serait faisable facilement en utilisant l'api google maps: j'ai bien pigé que tu voulait du offline, mais ce que je veux dire c'est de l'utiliser une première fois pour générer une table de correspondance ville/ville avec les kilométrages...

 

imaginons que tu as une table 'commune' qui contient les communes 'paris', 'marseille', 'lyon', tu crée une table distance_commune qui contient les entrées suivantes:

 

de: paris à:lyon km:466
de: lyon à:paris km:466
de: paris à:marseille km:776
de: marseille à:paris km:776
de: marseille à:lyon km:315
de: lyon à:marseille km:315

 

et pour construire cette table tu t'appuie sur l'api google maps pour faire des calculs d'itinéraires: http://code.google.com/intl/fr/api [...] Directions

 

comme ca ton appli ne dépend plus d'une ressource externe après... et ce type d'infos, sauf construction de rocade important ou autre, ne vas pas changer toutes les 2mn.


Message édité par pataluc le 10-08-2009 à 11:23:45
n°1913345
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 11:32:04  profilanswer
 

Heuuuuu sauf qu'il va falloir le faire pour chaque ville / village ? ou c'est tout automatique une première fois ?
Ou alors tu me dit de faire un script qui fait une moulinette en prenant la premiere ville de ma BDD puis qui va interroger l'API sur toutes les autres villes suivante en rentrant les données en BDD dans la table distance et ainsi de suite jusqu'a à la fin ?

n°1913354
pataluc
Posté le 10-08-2009 à 11:46:05  profilanswer
 

nan tu l'automatise bien sur... je suis en train de regarder j'essaie de te mettre un bout de code ASAP

n°1913413
pataluc
Posté le 10-08-2009 à 12:47:49  profilanswer
 

essaie ce code:

 
Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml"  xmlns:v="urn:schemas-microsoft-com:vml">
  3.  <head>
  4.    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
  5.    <title></title>
  6.      type="text/javascript"></script>
  7.    
  8.    <script type="text/javascript">
  9.  
  10.  
  11.    function initialize() {
  12.      if (GBrowserIsCompatible()) {      
  13.        var map = new GMap2(document.getElementById("map_canvas" ));
  14.        
  15.        
  16.        var cities = new Array("paris", "marseille", "lyon", "nantes" );
  17.        //var cities = new Array("paris", "marseille" );
  18.        var dirs = new Array();
  19.        
  20.        for (var i = 0; i < cities.length; i++){
  21.          for (var j = 0; j < cities.length; j++){
  22.            if (j!=i) {
  23.              var dir = new GDirections(map, null);
  24.                          
  25.              dir.from=cities[i];
  26.              dir.to=cities[j];
  27.                  
  28.              dirs.push(dir);
  29.              
  30.              GEvent.addListener(dir, "load", function(dir) {
  31.                var r = document.getElementById('result').insertRow(-1);
  32.                r.insertCell(-1).innerHTML = dir.from;
  33.                r.insertCell(-1).innerHTML = dir.to;
  34.                r.insertCell(-1).innerHTML = dir.getDistance().meters;                
  35.              } );
  36.              
  37.              setDirections(dir);
  38.              
  39.              GEvent.addListener(dir, "error", handleErrors);
  40.            }
  41.          }
  42.        }
  43.  
  44.      }
  45.    }
  46.    function setDirections(dir) {
  47.      dir.load("from: " + dir.from + " to: " + dir.to,
  48.                { "locale": "fr_FR" });
  49.    }
  50.  
  51.      function onGDirectionsLoad(){
  52.      r = document.getElementById('result').insertRow();
  53.      r.insertCell().innerHTML(gdir.getDistance().meters);
  54.      }
  55.    
  56.  
  57.    function handleErrors(){
  58.      if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
  59.        alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);
  60.      else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
  61.        alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);
  62.      
  63.      else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
  64.        alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);
  65.      
  66.      //   else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS)  <--- Doc bug... this is either not defined, or Doc is wrong
  67.      //     alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.\n Error code: " + gdir.getStatus().code);
  68.      
  69.      else if (gdir.getStatus().code == G_GEO_BAD_KEY)
  70.        alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);
  71.      
  72.      else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
  73.        alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);
  74.      
  75.      else alert("An unknown error occurred." );
  76.       
  77.       }
  78.    </script>
  79.  
  80.  </head>
  81.  <body onload="initialize()" onunload="GUnload()">
  82.  <div id="map_canvas" style="width: 310px; height: 400px"></div>
  83.  <table id="result">  
  84.  </table>
  85.  </body>
  86. </html>
 

après tu n'as plus qu'a remplacer le tableau de ville statique par ta liste, d'une manière ou d'une autre...

 

puis tu exporte les résultat en bdd...


Message édité par pataluc le 10-08-2009 à 12:49:09
n°1913419
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 13:13:06  profilanswer
 

Super sa marche super bien :)
Par contre y a t'il moyen d'indiquer en plus de la ville le code postal afin d'éviter tout erreur.
Genre je vais raconter une connerie mais admettons que je tape "bourg-la-reine" et que cette commune existe 3 fois dans toute la france (mais code postal différent) sa posé probleme donc y a t'il moyen dans le tableau que l'on envoie a google d'indiqué en plus le code postal afin d'etre le plus précis possible ?
 
Par contre c'est du javascript vais devoir ajaxialisé cela récupérer les donnée de ma BDD (ville et CP) les envoyé a javascript et renvoyé en BDD les valeurs de google
Mais la c'est pas dramatique
 
Par contre j'ai environ 750 commune dans mon département ce qui fera rien que pour la seine maritime 562500 enregistrement dans la table distance, auquel je rajouterai le département voison (l'eure)
donc admettons au total des departement 1 000 000 de lignes
Sa risque pas de faire trop gros ?

n°1913435
pataluc
Posté le 10-08-2009 à 14:02:25  profilanswer
 

pour les codes postaux, je pense que si tu remplaces les chaines "ville" par "cp ville" ca doit encore bien marcher...

 

après, si tu es a l'aise en ajax, je pense que le mieux c'est de charger tes villes via ajax, et de remplir ta table avec tes résultats toujours via ajax... du coup a mon avis l'idéal, c'est de faire un genre de démon en ajax, qui charge des listes de couples de villes pour lesquels on a pas encore l'info, qui va chercher l'info et ainsi de suite, jusqu'a la fin...

 

sachant que pour le coté volumétrie, l'api n'est pas infaillible et que tu auras sans doute des cas manuel à gérer et que je ne suis pas sur que google maps te laisse effectuer 5625000 requetes à la suite... c'est l'inconvénient de ma méthode...


Message édité par pataluc le 10-08-2009 à 14:02:56
n°1913436
macgawel
Posté le 10-08-2009 à 14:06:53  profilanswer
 

hyptnos a écrit :

AIS, le soucis c'est la gestion des proximité, genre une personne habitant a XXX peux admettons prendre quelqu'un sur un rayon de 5 km, cette gestion de proximité est disponible sur différent site de covoiturage ici et là. J'aurais voulu savoir s'il y avait une base open source pour cela ?


 

hyptnos a écrit :

Par contre j'ai environ 750 commune dans mon département ce qui fera rien que pour la seine maritime 562500 enregistrement dans la table distance, auquel je rajouterai le département voison (l'eure)
donc admettons au total des departement 1 000 000 de lignes
Sa risque pas de faire trop gros ?

Si j'ai bien compris (survol du topic  :o ) :
1. Tu récupères les distances entre communes sur Google => 750 * 749 = 561 750 enregistrements.
2. Tu crées une table "Proximité" :
PROXIMITE (ID, ID_Ville1, ID_Ville2 [,distance optionnel])
   Ou tu peux essayer de gérer ça directement dans ta table des villes.
Ca devrait sacrément limiter le nombre d'enregistrements...
 
Voire, en partant du code de pataluc, tu peux peut-être filtrer directement...

mood
Publicité
Posté le 10-08-2009 à 14:06:53  profilanswer
 

n°1913447
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 14:31:30  profilanswer
 

heu j ene vois pas du tout comment gérer la distance dans la table commune :s sachant qu'une ville aura 749 indice de distance

n°1913553
hyptnos
GT : Gui iom
Posté le 10-08-2009 à 16:03:45  profilanswer
 

Bon allez j'ai la solution sans engendrer quoi que ce soit niveau BDD  
merci en tout cas pour le code source donnée je met cela de coté sa pourrait toujours me servir par la suite.
 
Avec la BDD INSEE ayant le nom de la commune et le CP j'ai également la longitude et lattitude des villes
Cela est suffisant pour calculer la distance entre deux communes (a vol d'oiseau) sachant que c'est pas pour calculer un itinéraire mais pour avoir les proximité genre (commune se trouvant dans un rayon de 5km de la commune de départ)
 
Donc pour ceux que cela interesse voici la formule (tester et approuver)
 

Citation :


Ville départ = A
Ville Arrivé = B
dist = distance entre A et B (orthodromie)
dist = 6371 x acos[cos(LatA) x cos(LatB) x cos(LongB-LongA)+sin(LatA) x sin(LatB)]
 
6371 qui correspond au rayon de la Terre en Km.

n°1913556
pataluc
Posté le 10-08-2009 à 16:05:35  profilanswer
 

'ffectivement, c'est plus simple... moins sexy, mais plus simple ^^  
 

n°1913823
hyptnos
GT : Gui iom
Posté le 11-08-2009 à 09:17:19  profilanswer
 

l'utilisateur ne va pas s'amuser a regarder le code source hein^^ lui tant qu'il à ce qu'il desire c'est le principal donc je cherche en effet la simplicite :p qui me retournera la distance entre 2 ville et basta

n°2156109
pierro78
Posté le 09-09-2012 à 14:35:37  profilanswer
 

Bonjour
 
On a monté un groupe de réflexion sur un meilleur systeme de covoiturage : https://www.facebook.com/groups/512177068796806/
 
Je me demandais si il y avait deja des endroits où on pouvait trouver des informations sur comment ameliorer le covoiturage et egalement pour en discuter ??
 
Merci !


Message édité par pierro78 le 09-09-2012 à 14:36:30
n°2156126
Terminapor
I'll see you rise.
Posté le 09-09-2012 à 21:02:12  profilanswer
 

Surement pas sur la cat prog dans un nécro-topic de 3 ans :o


---------------
Perhaps you don't deserve to breathe
n°2156478
pierro78
Posté le 12-09-2012 à 14:18:58  profilanswer
 

j esperais qu'il y avait des membres encore actifs qui auraient pu me repondre ...
 
je me reponds à moi-meme : je viens de trouver le groupe http://www.linkedin.com/groups?gid=2695799 qui propose des infos interessantes sur le covoiturage ...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Module covoiturage sur intranet : recherche informations

 

Sujets relatifs
Récuperer des informations xml contenu dans le même fichier phpComment faire une recherche en fulltext sur une view
Sous-requête et recherche booleanRechercher et lister des informations d'une bdd
[EXCEL] Liste clients -> recherche géographiquerecherche matrice php
Pattern Java | Probleme ecriture dans fichier texte.[résolu]recherche dans un fichier encodé en utf8
Recherche chaine de caractères[Excel] Formule de recherche multicritère
Plus de sujets relatifs à : Module covoiturage sur intranet : recherche informations


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR