Frage

Ich bin mit mapserver, eine map zu erstellen, der angezeigt wird, mit der google map api.Ich bin der Begegnung Leistungen Fragen.

Meine Karten sind alle im shapefile-format.

Ich tests ausführen, um Zeit zum Rendern von Karten.

Beim Rendern einer Karte mit der shp2img-tool, mit dem Befehl Linie

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

Ich bekomme die folgenden Metriken aus log-Dateien:

[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

Beim Rendern der gleichen Karte durch mapserver, mit

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

log-Datei gibt diese:

[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.

Für die gleiche Karte, die shp2img-tool ist die rendering-Karte 10-mal schneller als mapserver.Wenn hinzufügen mehr Schichten und mit dem tiling-Modus für google-Karte, kann bis zu 10 Sekunden.

Jemand weiß, warum mapserver ist die Erbringung dieses langsam?Gibt es eine Problemumgehung?

War es hilfreich?

Lösung

Es gibt ein paar Unterschiede zwischen dem shp2img und der mapserv Anfrage:

1) shp2img erstellt ein einzelnes Bild, Ihre mapserv Anfrage erzeugt Fliesen. Dies bedeutet, dass es vielleicht 9 Fliesen für die Samen Begrenzungsbox machen anstelle von 1. Dieser Overhead erzeugt. Versuchen Rendering ohne die Fliesen Option gesetzt, und führen Sie den Test erneut.

2) Sie haben einen kleinen Overhead für die CGI-Anforderung in mapserv 3) mapserv treibt das Bild über http während shp2img direkt auf die Festplatte zu schreiben. 4) Sie hat nicht angegeben, die Lage in der mapserv Anforderung, die diese mapserv bedeutet geht suchen Schichten.

Andere Tipps

Sie können diese Zeilen lesen: http://mapserver.org/optimization/index.html

  • Eine der wichtigste Punkt ist, die nicht verwendeten Projektionen in der EPSG-Datei zu entfernen. Z.B. unter RedHat 6 / usr / share / proj / epsg Ich habe 3 Projektionen.
  • Entfernen Sie nicht verwendete Schriftarten
  • Die mapfile Parser liest die Datei von oben nach unten, stellen daher die am häufigsten verwendeten Schichten am Anfang der Datei (der EPSG-Parser in der gleichen Art und Weise funktioniert)

Die Shape-Dateien die gleiche Anrufer Projektion „sollten“, sonst Mapserver hat sie schnell zu projizieren.

z. Von meinem Openlayers-Code (900913):

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

Alle meine Form-Dateien 900913 Projektion basiert.

Ich habe ein paar Vorschläge, aber keine harten Antworten, ich habe nicht viel getan, mapserver-config, sondern ich habe mit Menschen gearbeitet haben.

  1. Es gibt eine Menge von Optimierungen, die Sie tun können, um mapserver, würde ich der mailing-Liste prüfen.
  2. Machen Sie das mapfile so klein wie möglich, so öffnen und analysieren die mapfile zeitaufwändig sein kann, für mapserver.
  3. Erstellen Sie alle Steine vor der Zeit und nur verwenden mapserver die Dateien Holen.Fliesen on-the-fly ist nicht sehr schnell.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top