أكثر

خادم مخطط خطأ مكتبة الإسقاط

خادم مخطط خطأ مكتبة الإسقاط


لدي خادم خرائط مثبت (Ubuntu Linux 14.04 LTS) مع ملف world.map والذي يعطيني نتيجة مناسبة عندما أصل إليه على النحو التالي:

http: // localhost: 19090 / wms؟ map = world & layer = world & mode = map & FORMAT = image

ومع ذلك ، عند الوصول إليه باستخدام:

http: // localhost: 19090 / wms؟ map = world && SERVICE = WMS & VERSION = 1.3.0 & REQUEST = GetMap & BBOX = -90، -180،90،180 & CRS = epsg: 4326 & WIDTH = 834 & HEIGHT = 417 & LAYERS = world & STYLES = & FORMAT = image & png & amp ؛ 96 = نقطة في البوصة: 96 & شفاف = صحيح

ثم يظهر لي الخطأ التالي:

 msProcessProject (): خطأ في مكتبة الإسقاط. خطأ المشروع "المحور الرئيسي أو نصف القطر = 0 أو لم يتم توفيره" لـ "init = epsg: 4326: + epsgaxis = ne" 

إصدار Mapserver: 7.0.0

لقد جربت بالفعل الحلول التي يقدمها لي Google هذا الخطأ بشكل عام ، وهي:

  • تأكد من وجود ملف epsg في مجلد PROJ_LIB
  • تصدير مجلد PROJ_LIB باستخدام متغير البيئة
  • التحقق من أن تعريف epsg: 4326 موجود في ملف epsg

هنا لنا ناتج الجريgdalinfo world.tif:

برنامج التشغيل: ملفات GTiff / GeoTIFF: world.tif الحجم 1350 ، 675 نظام الإحداثيات هو: GEOGCS ["WGS 84"، DATUM ["WGS_1984"، SPHEROID ["WGS 84"، 6378137،298.257223563، AUTHORITY ["EPSG"، ") 7030 "]، AUTHORITY [" EPSG "،" 6326 "]]، PRIMEM [" Greenwich "، 0]، UNIT [" degree "، 0.0174532925199433]، AUTHORITY [" EPSG "،" 4326 "]] الأصل = (- 180.000000000000000،90.000000000000000) حجم البكسل = (0.266666666666667، -0.266666666666667) البيانات الوصفية: AREA_OR_POINT = البيانات الوصفية لهيكل صورة المنطقة: INTERLEAVE = إحداثيات ركن PIXEL: أعلى اليسار (-180.0000000 ، 90.0000000) (180d 0 '0.00 "W ) اليسار السفلي (-180.0000000 ، -90.0000000) (180d 0 '0.00 "W ، 90d 0' 0.00" S) أعلى اليمين (180.0000000 ، 90.0000000) (180d 0 '0.00 "E ، 90d 0' 0.00" N) أسفل اليمين ( 180.0000000، -90.0000000) (180d 0 '0.00 "E، 90d 0' 0.00" S) المركز (0.0000000، 0.0000000) (0d 0 '0.01 "E، 0d 0' 0.01" N) النطاق 1 Block = 512x512 النوع = بايت ، ColorInterp = كتلة النطاق الأحمر 2 = 512x512 النوع = بايت ، ColorInterp = كتلة النطاق الأخضر 3 = 512x512 النوع = بايت ، ColorInterp = أزرق

ملف الخريطة الكامل الذي أستخدمه هو كما يلي:

اسم الخريطة "world" CONFIG "MS_ERRORFILE" "/wmserver/data/logs/mapservice_errors.log" CONFIG "PROJ_LIB" "/wmserver/deps/proj.4-master/share/proj" CONFIG "ON_MISSING_DATA" "LOG" DEBUG 5 EXTENT -180.000 -90.000 180.000 90.000 SHAPEPATH "/ wmserver / data / service_data / data / wms" IMAGECOLOR 255255255 SIZE 1350675 WEB METADATA "wms_title" "Georbis WMS Server" "wms_author" "VizExperts" "wms_onlineres" / localhost: 19090 / wms؟ map = world & "" wms_enable_request "" * "" wms_srs "" EPSG: 4326 "" wms_feature_info_mime_type "" text / html "" wms_format "" image / jpg "END END PROJECTION" init = epsg: 4326 "" proj = latlong "" ellps = WGS84 "" datum = WGS84 "END LAYER NAME world TYPE RASTER DATA" world.tif "METADATA" wms_title "" BlueWorld Map "" wms_srs "" EPSG: 4326 "" wms_server_version "" 1.1. 1 "END PROJECTION" init = epsg: 4326 "" proj = latlong "" ellps = WGS84 "" datum = WGS84 "END END

سجل أخطاء Mapserver:

[الاثنين 14 سبتمبر 04:34:57 2015] .834042 msWMSLoadGetMapParams (): تمكين وحدات البكسل غير المربعة. [الاثنين 14 سبتمبر 04:34:57 2015] .834072 msProcessProject (): خطأ في مكتبة الإسقاط. خطأ المشروع "المحور الرئيسي أو نصف القطر = 0 أو غير معطى" لـ "init = epsg: 4326: + epsgaxis = ne" [الإثنين 14 سبتمبر 04:34:57 2015] .834103 وقت معالجة طلب mapserv (msLoadMap غير متضمن): 0.000s [الاثنين 14 سبتمبر 04:34:57 2015] .834118 msFreeMap (): تحرير الخريطة في 0x1fa2b60.

ما الخطأ الذي افعله؟


أنا لست خبيرًا في الأعمال الداخلية لـ MapServer ، ولكن بشكل أساسي كما أفهمه ، فأنت تستخدم ملف تكوين خريطة واحد كأساس لأنواع خدمات متعددة ؛ لذلك يمكنك نظريًا الحصول على مصدر بيانات إدخال واحد وملف خريطة واحد ومن هذا توفير WMS و WFS و SOS و WCS (في إصدارات مختلفة متعددة) وأيضًا استخدام متغيرات CGI لتوفير بعض المخرجات.

تبحث عروض المخرجات البديلة هذه الآن في أجزاء مختلفة من ملف الخريطة للعثور على المعلومات التي يحتاجونها لمتطلباتهم المحددة ، و / أو إلقاء نظرة على مواقع متعددة للعثور على المعلومات التي يحتاجونها ثم استخدام بعض قواعد الأسبقية لحل أي تعارضات. تم توثيق هذه الأسبقية جيدًا في وثائق MapServer (ولكن يمكن أن تكون مربكة) على سبيل المثال ، راجع قواعد معالجة SRS في MapServer WFS.

لذا ، لمحاولة معالجة الجزء الأول من سؤالك عن سبب عرض إخراج خريطة CGI ولكن WMS لا ، أفترض أن ذلك لأن الخدمة القائمة على CGI تنظر إلى موقع مختلف (أو لها قواعد أسبقية مختلفة) للعمل بشكل صحيح إسقاط من خدمة WMS.

هناك العديد من الأماكن في ملف .map يمكن الرجوع إلى معلومات الإسقاط ، وإحدى هذه الأماكن هي مجموعة PROJECTION ، والتي يمكن العثور عليها كجزء من معلومات MAP (حيث يجب استخدامها لتحديد الإسقاط الافتراضي لـ WMS) ، & / أو جزء من معلومات الطبقة (حيث يجب استخدامها لتحديد الإسقاط الذي تكون فيه البيانات أصلاً).

طريقة واحدة لتحديد الإسقاط هو استخدام فيه المعلمة (على النحو التالي) ، وهي استدعاء لملف proj4 يسمى (epsg) على الخادم الخاص بك ، وداخل هذا الملف إلى<4326>تعريف.

PROJECTION "init = epsg: 4326" END

يشير إلى السطر التالي في ملف epsg ملف:

<4326> +proj=longlat +datum=WGS84 +no_defs <>

بدلاً من ذلك ، يمكنك تحديد الإسقاط باستخدام معلمات proj4 ، لذلك إذا كنت ترغب في تحديد epsg: 4326 على النحو التالي:

PROJECTION "proj = longlat" "datum = WGS84" "no_defs" END

في ملف تكوين الخريطة. لديك بشكل فعال ، وقمت بإجراء مكالمة إلى ملف مع تعريف كامل للإسقاط ، ثم أضفت معلومات إضافية (ومتضاربة) لتحديد الإسقاط الخاص بك. يبدو أن MapServer حاول إضافة هذين التعريفين ، ثم فشل ، لأن بياناتك ليست في الإسقاط الذي حددته.


شاهد الفيديو: الحلقة 1008: طريقة إصلاح بطارية الحاسوب التي أصبحت تفرغ من الشحن بسرعة او لاتشحن