Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Fri 16 April 2010 16:36

P3T
Juste Inscrit !
Date d'inscription: 16 Apr 2010
Messages: 3

Conseils choix de développement

Bonjour à tous,

dans le cadre d'un projet, je dois réaliser un module capable de localiser des cellules (antennes) GSM (en France) sur une carte. j'ai déjà constitué une base de données PostGreSQL, associant à un cell_id (identifiant pour une cellule) une longitude et une latitude.

Je me suis alors tourné vers OpenLayers pour afficher le contenu de cette base sur une carte. Tout d'abord j'ai commencé par afficher une cellule donnée (avec un marqueur). Tout allait pour le mieux, cependant, comme j'aurais du m'en douter, au moment ou j'ai voulu afficher l'ensemble des données (17 000 cellules) sur la carte.... ça marchait encore mais les temps de réponses étaient très long. Je me suis mis alors mis a chercher un peu partout comment faire pour améliorer ces performances.

Mais j'aimerais avoir votre avis, avant de faire un choix que je pourrais regretter plus tard. Pour l'instant j'ai juste une couche de base googleMap (qui peut changer sans problèmes), avec au dessus une couche Layer.Vector qui permet de d'afficher ce que je veux.

A partir de là j'ai entendu parler de pas mal de choses, mais j'avoue que j'ai du mal a m'y retrouver. Ayant a afficher un très grand nombre de points sur une zone plutôt réduite,  les stratégies cluster et bbox (et meme fixed) me semblent très intéressantes. Cependant je ne suis pas sur que cela suffise, et de plus je n'ai pas réussi a l'appliquer a mon layer Vector.

J'ai ensuite entendu parler de MapServer, j'ai essayé de m'y mettre, mais c'est la que je me suis dis que je devrais plutôt demander conseils sur comment bien réaliser ce projet avant de lancer un peu n'importe ou...

Merci de votre réponse.

PS : j'anticipe un peu la prochaine phase de mon projet. Un membre de mon équipe a développer une application pour téléphone portable pour qu'il envoie toutes les 30 secondes sa position GPS (longitude et latitude) ainsi que la cell id auquel il est rattaché. Ainsi on peut faire grossir une autre base de données permettant de connaitre les portées des cellules. Je m'explique : Grâce a ma base, on connait la position des cellules. Cependant on ne connait la portée des cellules. en accumulant des points GPS, autour d'une cellule, je vais surement devoir tracer une zone qui délimite cette portée.

Je reste bien entendu à votre disposition pour des compléments d'informations,
Cordialement.

[Edit] modération : annotation 'à déplacer' supprimée

Dernière modification par P3T (Fri 16 April 2010 16:40)

Hors ligne

 

#2 Fri 16 April 2010 20:51

René-Luc D'Hont
Participant assidu
Date d'inscription: 7 Nov 2006
Messages: 328
Site web

Re: Conseils choix de développement

Bonjour,

Tout d'abord il est normal qu'avec 17000 points à afficher en mode vectoriel ton application Web ai quelques difficultés. Ces difficultés sont liées à 3 choses :
* plus il y a de points plus ton fichier de coordonnées est important
* plus le fichier est important plus le temps de traitement par le client de celui-ci est important
* plus il y a de points plus il y a d'objet à créer pour l'affichage

Donc pour accélérer l'affichage par le client la solution serait de faire en sorte que le serveur fournisse un contenu affichable directement par celui-ci, c'est à dire une image.
Dans ce cas de figure c'est le serveur qui calcule le rendu et le fourni au client sous forme d'une image.

Cette solution répond bien au problème de performance lorsque l'on a un gros volume de données à exploiter, par contre une image au contraire du mode vectoriel n'offre pas de capacité d'interaction directe avec l'utilisateur. Par exemple avec une image, il n'est pas possible d'avoir un effet (modification de l'affichage, apparition d'informations) au survole par le curseur d'un élément. Il est toujours possible sur un click de demander au serveur une information.

Techniquement ou en tout cas au vu des capacités des navigateurs, je te conseil d'utiliser un affichage de type image. Pour ce faire tu peux utiliser MapServer et afficher tes points grâce à la norme WMS (dans Openlayers tu as une classe OpenLayers.Layer.WMS). Tu peux aussi aller un peu plus loin en terme de performance. Si le nombre de points ainsi que leur position sont fixes, tu peux utiliser TileCache par exemple pour pré-générer les images qu'utiliseront ton client Web (dans OpenLayers tu as une classe TMS).

En espérant que cela t'aide.

PS: As-tu bien défini les fonctionnalités de ton application carto ? En fait à quoi doit servir ta carte ?

Hors ligne

 

#3 Fri 16 April 2010 21:31

P3T
Juste Inscrit !
Date d'inscription: 16 Apr 2010
Messages: 3

Re: Conseils choix de développement

Bonsoir,

Tout d'abord merci pour ta réponse.

Je vais commencer par répondre a ta question. Le module que je développe doit servir à localiser (via les antennes GSM) des dispositifs munis d'une carte SIM (téléphones, mais pas seulement je peux par exemple citer les placés sous surveillance électronique mobile). Il servira en fait de solution de secours en cas de perte du signal GPS par ce même dispositif. C'est une sorte de sécurité pour pouvoir être sur de toujours avoir une idée d'ou ce situe l'appareil (même si la localisation par antenne est moins précise puisqu'elle définit une zone et non pas un point. La précision atteint quand même 50 mètres en ville). La cartographie est donc une des partie de ce module (avec la réception des messages et leurs traitement). c'est un moyen simple de pouvoir localiser rapidement le dispositif en cas de problème.

L'affichage complet de toutes les cellules est nécessaire pour savoir la zone couverte de cette façon (il y a un autre enjeu, concernant un autre projet, mais apparemment j'ai pas le droit d'en savoir plus).
Je devrais peut être (j'anticipe les demandes) être capable de créer un genre de scénario pour afficher le parcours d'un dispositif sur la carte (affichage séquentielle les différentes localisations pouvant être stockées sur une BDD par exemple).

Concernant ta réponse maintenant. L'issue du du serveur de cartographie me semble être la meilleure idée aussi pour éviter au client tout ce travail. Pour ce qui est de TileCache, la position des antennes GSM ne changent pas en effet (et le nombre d'antennes presque jamais). Par contre comme j'ai essayé de l'expliquer, il y a sans cesse de nouvelles mesures qui arrivent (quand le portable est activé) pour compléter la portée des antennes (je sais pas si j'ai été clair dans mon premier post sur ce point). Actuellement il doit y avoir environ 500 000 mesures pour 17000 antennes. je vais donc surement (par anticipation aussi), une fois mon travail finit sur l'affichage de toutes les cellules, ajouter des informations sur cette carte pour la compléter avec des zones autour de ces cellules.

Est ce qu'il est possible de générer des zones autour d'une position grâce a des points points qui lui sont "rattachés" ? (côté serveur).

Est ce que la génération d'image côté serveur (sans parler de TileCache pour le moment) est compliquée ?

Merci d'avance,
Cordialement.

Hors ligne

 

#4 Mon 19 April 2010 19:25

Cédric Moullet
Participant occasionnel
Date d'inscription: 21 Feb 2009
Messages: 23

Re: Conseils choix de développement

Bonjour,
La mise en place d'un serveur cartographique est assez aisé:
- Dans le monde OpenSource, vous avez le choix essentiellement entre MapServer et GeoServer (Java) en tant que serveur cartographique.
- Ensuite, ce serveur cartographique se connecte à vos données. Il s'agirait dans votre cas d'utiliser PostGIS (l'extension spatial de Postgres) pour enregistrer la géométrie. Une fois la connexion établie, vous n'avez plus qu'à définir la symbologie (MapFile pour MapServer ou format SLD pour GeoServer).
- Votre client OpenLayers pourra afficher sans problème une couche WMS provenant de votre serveur cartographique
- Pour accéder aux attributs de vos objets, vous pouvez utiliser la fonction getFeatureInfo mise à disposition par votre serveur cartograhique ou créer, par exemple, un service REST se connectant directement à la base de données.

J'espère que cela répond à vos questions. Je vous conseillerai toutefois de faire appel à une entreprise spécialisé pour vous conseiller, notamment dans la phase d'architecturage.
Cédric Moullet

Hors ligne

 

#5 Tue 20 April 2010 09:10

P3T
Juste Inscrit !
Date d'inscription: 16 Apr 2010
Messages: 3

Re: Conseils choix de développement

Merci beaucoup pour tout ces renseignements.
je vais me tourner vers GeoServer alors.

Hors ligne

 

Pied de page des forums

Powered by FluxBB