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 Wed 23 July 2008 18:29

fabrice.marteau
Participant occasionnel
Lieu: Marseille
Date d'inscription: 5 Jul 2007
Messages: 11

Afficher environ 1500 point sur une carte...

Bonjour,
Je fais un stage dans une université à Londres. Je dois améliorer l'affichage des cartes sur le site http://greenmap.london21.org/
Le but est de pouvoir afficher un grand nombre de marqueurs (1500 environ) sur la zone de Londres.

Pour l'instant, le site n'affiche qu'une poignée d'items tirés aléatoirement (15 pour Internet Explorer et 50 pour Firefox) pour ne pas faire saturer les navigateurs.

Le site utilise l'API Google Maps, les points sont stockés dans une base MySQL et streamés au format KML via le DOM.

J'ai déjà essayé d'afficher l'intégralité des points en même temps:

      * récupération des coordonnées dans le KML
      * création d'objets SVG ou VML (suivant le navigateur utilisé: FF ou IE)

Le résultat est très lent...la page met 30 secondes à charger et les déplacements/zoom sont une corvée...

Je viens de tenter d'utiliser Open Layers en chargeant le KML entier, c'est un peu mieux, mais toujours pas supportable!

J'ai pensé à remplacer la carte au zoom minimal par une image, mais si on pouvait garder une interactivité sur les points, ça serait vraiment mieux!

Si quelqu'un a déjà eu à faire à ce genre de problème ou connaît une méthode adaptée...je le remercie d'avance pour les conseils qu'il pourrait me donner!

@+

Hors ligne

 

#2 Wed 23 July 2008 21:38

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Afficher environ 1500 point sur une carte...

Bonjour,

Si tu veux afficher tout tes points, tu peux effectivement faire une image (couche WMS) et mettre en place un événement onClick pour récupérer les coordonnées du point et faire une requête sur ta page en AJAX et afficher les résultats dans un pop-up.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 24 July 2008 10:44

freesnowpetrel
Participant assidu
Lieu: Pretoria, Afrique du Sud
Date d'inscription: 1 Mar 2007
Messages: 222

Re: Afficher environ 1500 point sur une carte...

Hello Fabrice,

Serais-tu par hasard en stage au "DEPARTMENT OF CIVIL, ENVIRONMENTAL & GEOMATIC ENGINEERING" Imperial College London ? J'avais vu une offre d'emploi de leur part il y a quelques mois pour bosser sur le re-design de ce site.

Pour repondre a ta question, effectivement comme te le conseille Yves, le mieux serais que tu mettes en place un Web Map Service via un server WMS comme Maperver, Geoserver,... Pour simplifier, le principe est le suivant, le serveur lit les donnees et suite a une requete du navigateur client genere une image des donnees correspondant a l'emprise de l'affichage. Avec ce systeme tu peux esperer afficher tres rapidement de gros volume de donnees et ceci de maniere transparente pour l'utilisateur. Par contre je te l'accorde, c'est un peu plus complique a mettre en place qu'une simple creation de points a la volee via Google Map ou OpenLayers. Si tu as besoin de quelques pistes tu peux me contacter, mais si tu es bien la ou je pense tu dois avoir autour de toi quelques personnes ressources je suppose.

Rodolphe

Hors ligne

 

#4 Thu 24 July 2008 15:42

fabrice.marteau
Participant occasionnel
Lieu: Marseille
Date d'inscription: 5 Jul 2007
Messages: 11

Re: Afficher environ 1500 point sur une carte...

Bonjour et merci pour vos promptes réponses!

Effectivement, je suis au "DEPARTMENT OF CIVIL, ENVIRONMENTAL & GEOMATIC ENGINEERING", mais c'est à l'University College London.

Voila l'idée que j'ai suite à vos conseils:

   *création d'un WMS avec GeoServer à partir de la BD MySQL déjà en place
   *superposition du layer WMS avec les fonds Google Maps avec Openlayers

A votre avis, sera-t-il possible de conserver la structure de la base et d'afficher les pop-up d'information des points (il contiennent du HTML pour la mise en forme).

Je vais devoir utiliser la librairie "MySQL DataStore" pour me connecter, est-ce la seule possibilité?

Sachant que je n'ai jamais monté de serveur carto, cela vous semble faisable en 4 semaines?

Fabrice

Hors ligne

 

#5 Thu 24 July 2008 15:51

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Afficher environ 1500 point sur une carte...

Bonjour,

Cela dépend de tes compétences en informatique ;)casera un peu juste, mais tu devrais pouvoir proposer une preuve de la faisabilité de ta proposition.

Pour le code HTML je pense que cela sera possible, par contre il te faudra protéger le code HTML lors de l'appel AJAX, sinon ca va buguer smile

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#6 Thu 24 July 2008 16:08

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: Afficher environ 1500 point sur une carte...

envoyer 1500 points en vectoriel dans le client web ne semble pas très raisonnable, mais il y a des méthodes très intéressantes d'aggrégation des points en fonction de l'échelle qui permettent de contourner le problème. Voir par exemple la petite carte de http://nyc.everyblock.com/building-viol … e/473-493/

Guillaume

Hors ligne

 

#7 Thu 24 July 2008 16:13

Nicolas
Membre
Date d'inscription: 5 Sep 2005
Messages: 2869
Site web

Re: Afficher environ 1500 point sur une carte...

Guillaume Sueur a écrit:

envoyer 1500 points en vectoriel dans le client web ne semble pas très raisonnable, mais il y a des méthodes très intéressantes d'aggrégation des points en fonction de l'échelle qui permettent de contourner le problème. Voir par exemple la petite carte de http://nyc.everyblock.com/building-viol … e/473-493/

Guillaume


Bonjour,

c'est d'ailleurs mis en œuvre sur la carte des membres :
http://georezo.net/forum/map.php

A+

Nicolas

Hors ligne

 

#8 Thu 24 July 2008 16:15

freesnowpetrel
Participant assidu
Lieu: Pretoria, Afrique du Sud
Date d'inscription: 1 Mar 2007
Messages: 222

Re: Afficher environ 1500 point sur une carte...

Oui effectivement, 4 semaines ca parait juste pour bien finaliser le projet, mais comme Yves je pense que tu devrais deja avoir une bonne "maquette".
L'idee que tu proposes semble bien tenir la route car basee sur de bonnes briques. Toutefois dans une perspective d'ameliorer encore le systeme meme si tu n'auras probablement pas le temps, mais un stage c'est aussi fait pour faire des propositions de developpements futurs, l'utilisation d'une base PostgreSQL/PostGIS pourrait etre une alternative a MySQL notemment parcequ'elle propose des fonctions spatiales plus nombreuses/poussees.
Pour MySQL DataStore, je peux pas t'aider, je connais tres peu Geoserver et je l'ai jamais utilise avec MySQL.

Rodolphe

Hors ligne

 

#9 Thu 24 July 2008 16:57

Peio
Participant assidu
Lieu: Nantes
Date d'inscription: 23 Jul 2006
Messages: 428
Site web

Re: Afficher environ 1500 point sur une carte...

Bonjour Fabrice,

Utiliser des techniques de clustering de markers style :
http://www.acme.com/javascript/Clusterer2.js

Bien cordialement

--
Peio Elissalde
Magic Instinct Software

Hors ligne

 

#10 Thu 24 July 2008 17:49

fabrice.marteau
Participant occasionnel
Lieu: Marseille
Date d'inscription: 5 Jul 2007
Messages: 11

Re: Afficher environ 1500 point sur une carte...

Re
Désolé, j'avais oublié de préciser une chose...pas de clustering!
Le commanditaire veut montrer une carte aussi "busy" que possible (pour la com sur le succès du projet).

Effectivement, cartographiquement parlant, c'est bidon de se faire chevaucher des points et d'en afficher plus qu'il n'est possible d'en distinguer sur une zone...

Le clustering ne sera utilisé qu'en dernier recours, et donc en tant que stagiaire, j'ai pour mission d'essayer et de voir les possibilités.

Pour monter le GeoServer avec MySQL, je vais tâcher de me faire épauler!

En tout cas, merci, et si quelqu'un a une idée qui lui vient...qu'il n'hésite pas! Si je peux implémenter et tester, c'est toujours bon a prendre comme expérience.

@+
Fabrice

PS: savez-vous qui a fait la carte des membres et avec quelles techniques précisément? je n'ai pas trouvé en cherchant sur le forum et cela m'intéresserait beaucoup de savoir comment il l'a interfacé avec le forum!

Hors ligne

 

#11 Thu 24 July 2008 21:45

Ludovic G
Membre
Lieu: Annecy
Date d'inscription: 5 Sep 2005
Messages: 124

Re: Afficher environ 1500 point sur une carte...

Bonjour Fabrice,
Je réponds au PS (merci à Nicolas de m'avoir réveillé) : pour la carte des membres il s'agit d'un algo php écrit spécifiquement pour l'occasion. Ca commence à dater (2005) donc je ne me souviens plus très bien. Le principe c'est un simple calcul de distance en PHP . J'avais au feeling défini pour chaque seuil de zoom Google une distance d'agglomération des points. Le calcul se lance à chaque action de zoom et évalue pour chaque point sa distance par rapport aux agglomérations existantes. Si elle est < à la distance défini pour le seuil je le raccroche à l'agglo concernée.

Je suis étonné ça semble toujours tenir le choc (hein Fred !?smile. Pas de base géographique ni serveur cartographique. hébergement classique Php + Mysql. un champ latitude, un champ longitude. Gratté à droite à gauche pour gagner en perf : notamment utilisation du JSON pour envoyer les données si mes souvenirs sont bons. Je n'ai pas lu tous les messages mais si ton nombre de points n'évolue pas plus, c'est une alternative pour  t'éviter de sortir l'artillerie. Tu feras signe si jamais tu souhaites aller plus loin et qu'il te faut de l'aide.

Pour l'interface avec le forum je m'en souviens plus bcp non plus, on a juste essayé avec Fred d'avoir un minimum d'impacts sur le forum pour ne pas gêner son évolution.

Ludovic

Hors ligne

 

Pied de page des forums

Powered by FluxBB