Question

J'utilise mapserver pour créer une carte qui sera affichée avec l'API Google Map. Je rencontre des problèmes de performances.

Mes cartes sont toutes au format shapefile.

Je lance des tests pour avoir le temps de restituer des cartes.

Lors du rendu d'une carte avec l'outil shp2img, utilisez la ligne de commande

shp2img -i gif -m C:\myfolder\mymapfile.map -o C:\myfolder\test.gif -all_debug 5 -map_debug 5

Je récupère les métriques suivantes à partir des fichiers journaux:

[Thu Apr 30 13:50:19 2009].148000 msLoadMap(): 0.000s
[Thu Apr 30 13:50:19 2009].180000 msDrawMap(): Layer 0 (PWorld2), 0.032s
[Thu Apr 30 13:50:19 2009].180000 msDrawMap(): Drawing Label Cache, 0.000s
[Thu Apr 30 13:50:19 2009].180000 msDrawMap() total time: 0.032s
[Thu Apr 30 13:50:19 2009].195000 msSaveImage() total time: 0.015s
[Thu Apr 30 13:50:19 2009].195000 msFreeMap(): freeing map at 01595E18.
[Thu Apr 30 13:50:19 2009].195000 freeLayer(): freeing layer at 0159CD00.
[Thu Apr 30 13:50:19 2009].195000 shp2img total time: 0.047s

Lors du rendu de la même carte via mapserver, utilisez

http://localhost/cgi-bin/mapserv.exe?mymapfile.map&layers=&mode=tile&tilemode=gmap&tile=1+1+2

le fichier journal donne ceci:

[Thu Apr 30 13:51:50 2009].664000 CGI Request 1 on process 3520
[Thu Apr 30 13:51:50 2009].664000 msTileSetExtent (-10013744.792915, 8348.961808) (-5009.377085, 10010405.208192)
[Thu Apr 30 13:51:51 2009].23000 msDrawMap(): Layer 0 (PWorld2), 0.359s
[Thu Apr 30 13:51:51 2009].23000 msDrawMap(): Drawing Label Cache, 0.000s
[Thu Apr 30 13:51:51 2009].23000 msDrawMap() total time: 0.359s
[Thu Apr 30 13:51:51 2009].23000 msSaveImage() total time: 0.000s
[Thu Apr 30 13:51:51 2009].23000 mapserv request processing time (loadmap not incl.): 0.359s
[Thu Apr 30 13:51:51 2009].23000 msFreeMap(): freeing map at 01598690.

Pour la même carte, l’outil shp2img rend la carte 10 fois plus vite que mapserver. Lors de l'ajout de couches et de l'utilisation du mode mosaïque pour Google Map, cette durée peut atteindre 10 secondes.

Quelqu'un sait-il pourquoi mapserver ralentit ce processus? Y a-t-il une solution de contournement?

Était-ce utile?

La solution

Il existe quelques différences entre les requêtes shp2img et mapserv:

1) shp2img crée une seule image, votre requête mapserv génère des tuiles. Cela signifie qu'il faudra peut-être restituer 9 tuiles pour le cadre de sélection identique au lieu de 1. Cela génère une surcharge. Essayez de rendre le rendu sans l'option de mosaïques et relancez le test.

2) Vous avez une petite surcharge pour la demande cgi dans Mapserv. 3) Mapserv pousse l'image sur http alors que shp2img écrit directement sur le disque. 4) Vous n'avez pas spécifié la couche dans la demande de mapserv, ce qui signifie que mapserv recherche les couches.

Autres conseils

Vous pouvez lire ceci: http://mapserver.org/optimization/index.html

  • L'un des points les plus importants est de supprimer les projections non utilisées du fichier EPSG. Par exemple. sous RedHat 6 / usr / share / proj / epsg, j’ai 3 projections.
  • Supprimer les polices inutilisées
  • L’analyseur de mapfile lit le fichier de haut en bas, donc placez les calques les plus utilisés en haut du fichier (l’analyseur EPSG fonctionne de la même manière)

Les fichiers de formes " devraient avoir " même appelant, sinon Mapserver doit les reprojeter à la volée.

E.G. Depuis mon code OpenLayers (900913):

var options = {
    projection: new OpenLayers.Projection('EPSG:900913'), //aka  EPSG:3785
    displayProjection: new OpenLayers.Projection('EPSG:4326'), //geographic 

Tous mes fichiers de formes sont basés sur une projection 900913.

J'ai quelques suggestions mais pas de réponse difficile, je n'ai pas fait beaucoup de configuration de mapserver, mais j'ai travaillé avec des gens qui l'ont fait.

  1. Vous pouvez effectuer beaucoup d'optimisations sur mapserver. Je vérifie la liste de diffusion.
  2. Réduisez la taille du fichier mapfile autant que possible, car son ouverture et son analyse peuvent prendre beaucoup de temps pour mapserver.
  3. Créez toutes les tuiles à l'avance et utilisez simplement mapserver pour obtenir les fichiers. Le carrelage à la volée n’est pas très rapide.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top