سؤال

أنا باستخدام mapserver لإنشاء الخريطة التي سيتم عرضها مع خريطة جوجل api.أنا واجهت العروض القضايا.

الخرائط كلها في الشكل الشكل.

تشغيل الاختبارات للحصول على الوقت لتقديم الخرائط.

عند تقديم الخريطة مع shp2img أداة باستخدام سطر الأوامر

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

أنا الحصول على المقاييس التالية من ملفات السجل:

[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

عند تقديم نفس الخريطة من خلال mapserver باستخدام

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

ملف السجل هو إعطاء هذا:

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

على نفس الخريطة ، shp2img أداة تقديم خريطة 10 مرات أسرع من mapserver.عند إضافة المزيد من الطبقات باستخدام بلاط وضع خريطة جوجل, يمكن أن تصل إلى 10 ثوان.

هل من أحد يعرف لماذا mapserver هو يرجع هذا البطء ؟ هل هناك حل?

هل كانت مفيدة؟

المحلول

وهناك بعض الاختلافات بين shp2img وطلب mapserv:

1) shp2img يخلق صورة واحدة، طلب mapserv الخاص يولد البلاط. وهذا يعني أنه قد تضطر الى تقديم 9 البلاط المربع المحيط السمن بدلا من 1. وهذا يولد في سماء المنطقة. محاولة جعل دون تعيين خيار البلاط وتشغيل الاختبار مرة أخرى.

2) أن يكون لديك فوق صغير لطلب المجموعة الاستشارية لاندونيسيا في mapserv 3) يدفع Mapserv الصورة عبر HTTP أثناء shp2img يكتب مباشرة إلى القرص. 4) أنت لم يحدد طبقة في طلب mapserv وهو ما يعني أن mapserv يذهب يبحث عن الطبقات.

نصائح أخرى

يمكنك قراءة هذا:http://mapserver.org/optimization/index.html

  • أحد أهم نقطة هو إزالة غير المستخدمة التوقعات في EPSG الملف.E. g.تحت ريدهات 6 /usr/share/proj/epsg لدي 3 التوقعات.
  • إزالة الخطوط غير المستخدمة
  • على mapfile محلل يقرأ الملف من أعلى إلى أسفل ، ومن ثم وضع الأكثر استخداما الطبقات في الجزء العلوي من ملف (EPSG محلل يعمل في نفس الطريقة)

على شكل ملفات "يجب أن يكون" نفس المتصل الإسقاط ، وإلا Mapserver أن reproject لهم على الطاير.

E. G.من الطبقات المفتوحة رمز (900913):

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

كل شكل ملفات 900913 الإسقاط على أساس.

لدي بعض الاقتراحات ولكن لا بجد إجابات لم mapserver التكوين ولكن لقد عملت مع الناس الذين لديهم.

  1. هناك الكثير من التحسينات يمكنك القيام به mapserver كنت التحقق من القائمة البريدية.
  2. جعل mapfile صغيرة قدر الإمكان ، كما فتح و تحليل mapfile يمكن أن يكون مضيعة للوقت بالنسبة mapserver.
  3. خلق كل البلاط قبل الموعد المحدد فقط استخدام mapserver الحصول على الملفات.تبليط على الطاير ليست سريعة جدا.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top