IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Schéma Discussion :

Conseils pour choix de modélisation d'une carte


Sujet :

Schéma

  1. #1
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    mai 2004
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 2 251
    Points : 6 486
    Points
    6 486
    Par défaut Conseils pour choix de modélisation d'une carte
    Bonjour,

    Dans le cadre d'un petit projet interne dans mon entreprise (concours de dev) nous allons essayer de créer une application de cartographie.
    Peu importe le dessin derrière, ce qui nous interresse, c'est de récupérer et de stocker le chemin parcourus par des personnes ayant un smartphone avec GPS.
    A chaque changement d'emplacement, leur smartphone sauvegarde puis nous envoie des données sur leur environnement technique et le statut de la connexion.

    L'idée n'est pas révolutionnaire, mais nous allons avoir une granularité de l'ordre du m², peut être de 4m².
    De ce points de vue là, une ville de 20km / 20km faisant 400 Millions de m², on aura déjà 400Millions de lignes dans notre BDD. (ou 100M dans le cas ddes 4m²)

    Notre objectif étant de rendre cette carte compatible avec des surfaces de la taille d'une ville dans un premier temps, mais à l'échelle d'un pays dans une seconde étape.

    Voici notre modèle de table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Carte : 
    id
    latitude_min
    latitude_max
    longitude_min
    longitude_max
    statut
    Comme optimisation, on envisageait de rassembler en rectangle les cases adjacentes ayant le même statut.

    Outre le fait que l'on a aucune idée d'un algorythme qui pourrait faire ca de manière efficace, on se demandait si cette solution était la bonne en théorie. On imagine que de nombreuses personnes ont pris le temps de réflechir au problème et qu'il existe peut être des techniques pour modéliser une carte de manière plus intelligente.

    Une idée que l'on avait par exemple était de sauvegarder le tout dans une image BMP de 3 ou 4 couleurs.
    Une ville serait donc stockée dans 50-100Mo de données. En appliquant un encodage, type PNG sans perte de précision, on pourrait imaginer d'optimiser notre place en bdd automatiquement.
    Est ce possible de le faire en BDD ?

    Merci,
    Pierre

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Bonjour,

    Malgré votre explication, j'ai du mal à comprendre ce que vous souhaitez faire.

    Stocker et restituer toutes les positions occupées par le GPS sous forme de grille (image) ?

    Désolé pour le besoin de reformulation .

  3. #3
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    mai 2004
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 2 251
    Points : 6 486
    Points
    6 486
    Par défaut
    Bonjour,

    Merci de cette réponse, je vais essayer de préciser un peu.

    ci joint je vous ai mis le type de carte que je veux être capable de stocker.

    Bien sur, il faut l'extrapoler dans des dimensions bien plus importantes.

    Je veux stocker toutes les valeurs jaunes, donc j'envisageais d'avoir une ligne dans la table par rectangle.
    Images attachées Images attachées  

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Ne stockez que les positions qui ont été occupées au lieu de stocker toutes les positions possibles avec un statut pour dire qu'elles ont été occupées.

    Ne générez votre "grille" complète qu'au moment de la restitution.

    Pour stocker l'occupation de positions, 2 possibilités :

    - vous stockez toutes les positions occupées avec les informations brutes du GPS, en gros 2 réels latitude/longitude
    - vous stockez le résultat de la transformation des coordonnées GPS dans votre grille, en gros 2 entiers qui indiquent la position dans la grille

    La première solution a l'avantage de ne pas figer la résolution de la grille, cette transformation coordonnées GPS -> coordonnées grille se fera lors de la restitution et sera paramétrable. L'inconvénient est qu'on ne fait pas l'économie des différentes positions qui se situeraient dans la même case de la grille, on enregistre tout ce qui passe. On peut tout de même définir une limitation temporelle ou de proximité pour échantillonner un peu et ne pas stocker aveuglément.

    La deuxième solution a les inconvénients des avatanges de la 1ère et réciproquement.

  5. #5
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    mai 2004
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 2 251
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait, pour faire simple, on veut stocker et ajouter des valeurs, mais jamais en supprimer(ou presque).

    Donc, au final, on va tendre vers une grille remplie au mximum, donc autant de lignes que ce que je donnais au début, sauf si on optimise.

    Ces informations doivent ensuite être mis sous forme de calque sur une carte(type open street map), on doit donc conserver des points de references pour aligner les 2 images l'une sur l'autre.

    Je donnais l'exemple d'une ville, mais c'est juste la première etape. Le but final est de modéliser un pays, ce qui revient à traiter environ 27 G lines of datas maximum.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Pour la partie données, stocker toutes les "cases" n'a pas d'intérêt. Vous voulez stocker les endroits occupées, contentez vous de ça. Pour le reste, il s'agit de traitement, de projection, d'affichage, ...

    Je reste sur mon conseil de stocker les coordonnées GPS brutes.

    Pour ce qui est de l'optimisation, en vrac :

    - prévoir d’échantillonner les données GPS (ne pas stocker 100 fois le même point où on est déjà passé à la résolution prêt)
    - utiliser les techniques des SGBD appropriées (données spatiales) qui vous proposeront des outils pour faciliter les traitements (transformations en tout genre) et optimiser les recherches (indexation spatiale)
    - prévoir une partie client intelligente. Avez-vous vraiment besoin de sortir la carte exhaustive de tous les lieux de passage de la France entière d'un coup ?
    - si les points relevés n'ont au final pour but que de dresser une surface visitée, vous pouvez regrouper les points dans des boundings polygones au fur et a mesure que vous récoltez les points. Ca évitera de stocker des points qui ne servent plus à rien au final.

    Pour les pistes de recherche, globalement ça relève des SIG et il existe beaucoup d'outils dans le domaine notamment pour votre problématique de heatmap (si c'est bien de ça qu'il s'agit au final), en vrac :

    - http://gis.stackexchange.com/questio...tive-heat-maps
    - http://gis.stackexchange.com/questio...-intensity-map
    - http://geochalkboard.wordpress.com/2...th-heatmapapi/


    Sinon votre volumétrie estimée pour la France me semble sous évaluée, j'arrive à 7*10^11 m² soit 30 fois plus que vos 2.7*10^10. Mais je le répète, stocker une version rasterisée des carrés de 1x1m de la France entière n'est certainement pas une bonne méthode pour arriver à votre fin, qui est une heatmap si j'ai bien compris. Surtout pour un petit projet concours.

  7. #7
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    mai 2004
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 2 251
    Points : 6 486
    Points
    6 486
    Par défaut
    Bonjour,

    Notre équipe est basée en Roumanie, d'ou la taille sous evaluée, amis la France serait aussi mise en place je pense... ca ne prends pas plus de temps.

    J'arrete de tourner autour du pot, voila l'idée :
    Nous voulons essayer de mettre en place un système qui depuis des smartphone volontaire, teste le type de réseau sur laquel le mobile est conecté (3G ou 2G par exemple) et qui envoie un rapport a un serveur central.

    Nous avons bien sur pensé a :
    - ne stocker que les données enregistrées, et non de crééer la carte des zone blanches
    - ne pas réécrire un point si il existe déjà.(on aura surement 2 tables, une sur laquelle les utilisateurs écrvent en direct, et une ou l'on ne met que la structure finale optimisée.)

    Outre la façon de stocker se pose la question du rassemblement des zones ensemble.peut très bien les remplacer par 1 rectangle plus grand. La question est la aussi de savoir si des algo existent pour faire cela.

    outre l'idée du concours, on essaye de se dervir du projet comme d'un moyen d'apprentissage assez important.

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : mars 2005
    Messages : 1 683
    Points : 2 575
    Points
    2 575
    Par défaut
    Notre équipe est basée en Roumanie, d'ou la taille sous evaluée, amis la France serait aussi mise en place je pense... ca ne prends pas plus de temps
    Nous n'avions pas le même référentiel géographique pour la superficie en effet . Mais peu importe la superficie réelle, ça donne quand même un ordre d'idée.

    J'arrete de tourner autour du pot, voila l'idée :
    Nous voulons essayer de mettre en place un système qui depuis des smartphone volontaire, teste le type de réseau sur laquel le mobile est conecté (3G ou 2G par exemple) et qui envoie un rapport a un serveur central.

    Nous avons bien sur pensé a :
    - ne stocker que les données enregistrées, et non de crééer la carte des zone blanches
    Oui là dessus on n'y revient pas, on ne stocke pas un bitmap des points possibles sur votre "carte".

    - ne pas réécrire un point si il existe déjà.(on aura surement 2 tables, une sur laquelle les utilisateurs écrvent en direct, et une ou l'on ne met que la structure finale optimisée.)
    Pourquoi une table intermédiaire ? Stockez les résultats qui vous intéressent. Votre dispositif mobile envoie sa localisation au serveur, le serveur fait le traitement nécessaire pour ajouter ou non le point. Ne vous encombrez pas de données inutiles.

    Outre la façon de stocker se pose la question du rassemblement des zones ensemble.peut très bien les remplacer par 1 rectangle plus grand. La question est la aussi de savoir si des algo existent pour faire cela.
    Oui bien sûr il existe des fonctionnalités dans les outils GIS (Geographic Information System) pour vous aider. Des types de données spécifiques pour gérer des points, des polygones, ... Des fonctions pour traiter l'intersection, la fusion, la proximité, ... des éléments géométriques.

    Je vous laisse découvrir la documentation du module spatial de PostgreSQL Postgis : http://postgis.refractions.net/docum...try_Processing

    Bref, de quoi traiter votre problème.

  9. #9
    Expert éminent
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    mai 2004
    Messages
    2 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2004
    Messages : 2 251
    Points : 6 486
    Points
    6 486
    Par défaut
    Je vais essayer de regarder avec ms collègues du coté de postgres GIS. ca semble répondre pas mal a notre besoin effectivement.

    merci pour toutes tes réponses.
    Pierre

Discussions similaires

  1. Aide/Conseil pour choix d'un stage!
    Par asnif dans le forum Stages
    Réponses: 2
    Dernier message: 20/01/2007, 00h51
  2. Réponses: 5
    Dernier message: 26/10/2006, 10h23
  3. Conseil pour choix d'un progiciel
    Par kashue dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 31/08/2006, 10h22
  4. Conseils pour choix d'une version SQL Server
    Par lp38 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/08/2006, 20h57
  5. [Debutant] Conseils pour l'architecture objet d'une appli
    Par etiennegaloup dans le forum Langage
    Réponses: 4
    Dernier message: 09/04/2006, 20h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo