3.2. خدمة الخرائط على الويب Web Map Service (WMS)

يوفر معيارا WMS 1.1.1 و 1.3.0 المطبَّقان في QGIS Server واجهة HTTP لطلب صور الخرائط أو مفاتيح الخرائط المولَّدة من مشروع QGIS. يحدد طلب WMS النموذجي مشروع QGIS المراد استخدامه، والطبقات المراد عرضها، وصيغة الصورة المراد توليدها. كما يتوفر دعم أساسي لـ Styled Layer Descriptor (SLD).

المواصفات:

الطلبات القياسية التي يوفرها QGIS Server:

الطلب

وصف

GetCapabilities

يُرجع بيانات وصفية بصيغة XML تتضمن معلومات عن الخادم

GetMap

يُرجع خريطة

GetFeatureInfo

يسترجع البيانات (الشكل الهندسي والقيم) لموقع بكسل

GetLegendGraphic

يُرجع رموز مفتاح الخريطة

GetStyle(s)

يُرجع مستند XML يتضمن وصف النمط بلغة SLD

DescribeLayer

يُرجع معلومات عن توفر WFS و WCS للطبقات المتجهية والشبكية على التوالي

الطلبات الخاصة بالمورّد التي يوفرها QGIS Server:

الطلب

وصف

GetPrint

يُرجع تخطيطًا من QGIS

GetProjectSettings

يُرجع معلومات محددة عن QGIS Server

GetSchemaExtension

يعيد بيانات وصفية بصيغة XML حول القدرات الموسّعة الاختيارية

3.2.1. GetCapabilities

المعاملات القياسية لطلب GetCapabilities وفقًا لمواصفات OGC WMS 1.1.1 و 1.3.0:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetCapabilities )

VERSION

لا

إصدار الخدمة

يدعم طلب GetCapabilities أيضًا معاملات المورِّد (vendor parameters) التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetCapabilities

3.2.2. GetMap

المعاملات القياسية لطلب GetMap وفقًا لمواصفات OGC WMS 1.1.1 و 1.3.0:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetMap )

VERSION

نعم

إصدار الخدمة

LAYERS

لا

الطبقات المراد عرضها

STYLES

لا

نمط الطبقات

SRS / CRS

نعم

نظام الإحداثيات المرجعي

BBOX

نعم

امتداد الخريطة

WIDTH

نعم

عرض الصورة بالبكسل

HEIGHT

نعم

ارتفاع الصورة بالبكسل

FORMAT

لا

صيغة الصورة

TRANSPARENT

لا

خلفية شفافة

SLD

لا

عنوان URL لملف SLD يُستخدم في التنسيق

SLD_BODY

لا

SLD مضمَّن (XML) يُستخدم في التنسيق

إضافةً إلى المعاملات القياسية، يدعم QGIS Server الرسم التوضيحي (redlining) و طبقات WMS الخارجية إلى جانب المعاملات الإضافية التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

BGCOLOR

لا

تحديد لون الخلفية

DPI

لا

تحديد دقة المخرجات

IMAGE_QUALITY

لا

ضغط JPEG

OPACITIES

لا

العتامة للطبقة أو المجموعة

FILTER

لا

مجموعة جزئية من المعالم

SELECTION

لا

إبراز المعالم

FILE_NAME

لا

اسم الملف المُنزَّل

فقط مع FORMAT=application/dxf

FORMAT_OPTIONS

لا

خيارات صيغة الملف المحددة

فقط مع FORMAT=application/dxf

TILED

لا

العمل في وضع البلاطات

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&MAP=/home/qgis/projects/world.qgs
&LAYERS=mylayer1,mylayer2,mylayer3
&STYLES=style1,default,style3
&OPACITIES=125,200,125
&CRS=EPSG:4326
&WIDTH=400
&HEIGHT=400
&FORMAT=image/png
&TRANSPARENT=TRUE
&DPI=300
&TILED=TRUE

VERSION

يتيح هذا المعامل تحديد إصدار الخدمة المراد استخدامه. القيم المتاحة للمعامل VERSION هي:

  • 1.1.1

  • 1.3.0

بحسب رقم الإصدار، يُتوقع وجود اختلافات طفيفة كما سيُشرح لاحقًا في المعاملات التالية:

  • CRS / SRS

  • BBOX

LAYERS

يتيح هذا المعامل تحديد الطبقات المراد عرضها على الخريطة. يجب الفصل بين الأسماء بفاصلة.

بالإضافة إلى ذلك، قدّم QGIS Server بعض الخيارات لتحديد الطبقات عن طريق:

  • معرّف الطبقة: يوجد خيار المشروع الذي يسمح بتحديد الطبقات بمعرّفاتها في تبويب QGIS Server ► WMS ضمن نافذة الحوار Project ► Properties.... فعّل مربع الاختيار Use layer ids as names لتنشيط هذا الخيار.

  • اسم مختصر

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mylayerid1,mylayerid2
&...

STYLES

يمكن استخدام هذا المعامل لتحديد نمط طبقة في مرحلة الرسم. يجب الفصل بين الأنماط بفاصلة. اسم النمط الافتراضي هو default.

SRS / CRS

يتيح هذا المعامل تحديد النظام المرجعي المكاني لمخرجات الخريطة في WMS 1.1.1 ويجب أن يُكتب بالشكل EPSG:XXXX. لاحظ أن CRS مدعوم أيضًا إذا كان الإصدار الحالي 1.1.1.

في WMS 1.3.0 يُفضَّل استخدام المعامل CRS لكن SRS مدعوم أيضًا.

لاحظ أنه إذا حُدّد المعاملان CRS و SRS كلاهما في الطلب، فإن الإصدار الحالي المحدد في المعامل VERSION هو الحاسم.

في الحالة التالية، يُعتمد المعامل SRS أيًّا كانت قيمة المعامل VERSION لأن CRS غير محدد:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&SRS=EPSG:2854
&...

في الحالة التالية، يُعتمد المعامل SRS بدلًا من CRS بسبب المعامل VERSION:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.1.1
&CRS=EPSG:4326
&SRS=EPSG:2854
&...

في الحالة التالية، يُعتمد المعامل CRS بدلًا من SRS بسبب المعامل VERSION:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&CRS=EPSG:4326
&SRS=EPSG:2854
&...

BBOX

يتيح هذا المعامل تحديد امتداد الخريطة بوحدات نظام الإحداثيات المرجعي الحالي. يجب الفصل بين الإحداثيات بفاصلة.

يُكتب المعامل BBOX بالشكل min_a,min_b,max_a,max_b لكن تعريف المحورين a و b يختلف بحسب المعامل VERSION الحالي:

  • في WMS 1.1.1 يكون ترتيب المحاور دائمًا شرق/شمال

  • في WMS 1.3.0 يعتمد ترتيب المحاور على الجهة المرجعية لنظام الإحداثيات

على سبيل المثال، في حالة EPSG:4326 و WMS 1.1.1، يكون a هو خط الطول (شرق) و b هو دائرة العرض (شمال)، مما يؤدي إلى طلب مثل:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.1.1
&SRS=epsg:4326
&BBOX=-180,-90,180,90
&...

أما في حالة WMS 1.3.0، فإن ترتيب المحاور المعرّف في قاعدة بيانات EPSG هو شمال/شرق، لذا يكون a هو دائرة العرض و b هو خط الطول:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&CRS=epsg:4326
&BBOX=-90,-180,90,180
&...

WIDTH

يتيح هذا المعامل تحديد عرض صورة المخرجات بالبكسل.

HEIGHT

يتيح هذا المعامل تحديد ارتفاع صورة المخرجات بالبكسل.

FORMAT

يمكن استخدام هذا المعامل لتحديد صيغة صورة الخريطة. القيم المتاحة هي:

  • jpg

  • jpeg

  • image/jpeg

  • image/png

  • image/png; mode=1bit

  • image/png; mode=8bit

  • image/png; mode=16bit

  • image/webp

  • application/dxf: تُصدَّر بصيغة DXF فقط الطبقات التي تمتلك صلاحية القراءة في خدمة WFS

  • application/pdf

    مثال على عنوان URL:

    http://localhost/qgisserver?
    SERVICE=WMS&VERSION=1.3.0
    &REQUEST=GetMap
    &FORMAT=application/dxf
    &LAYERS=Haltungen,Normschacht,Spezialbauwerke
    &CRS=EPSG%3A21781
    &BBOX=696136.28844801,245797.12108743,696318.91114315,245939.25832905
    &WIDTH=1042
    &HEIGHT=811
    &FORMAT_OPTIONS=MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250
    &FILE_NAME=plan.dxf
    

TRANSPARENT

يمكن استخدام هذا المعامل المنطقي لتحديد شفافية الخلفية. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

مع ذلك، يُتجاهل هذا المعامل إذا كانت صيغة الصورة المحددة في FORMAT غير PNG.

BGCOLOR

يتيح هذا المعامل تحديد لون خلفية لصورة الخريطة. لكن لا يمكن دمجه مع المعامل TRANSPARENT في حالة صور PNG (إذ تكون الأولوية للشفافية). يمكن كتابة اللون حرفيًا أو بالترميز الست عشري.

مثال على عنوان URL بالترميز الحرفي:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&BGCOLOR=green
&...

مثال على عنوان URL بالترميز الست عشري:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&BGCOLOR=0x00FF00
&...

DPI

يمكن استخدام هذا المعامل لتحديد دقة المخرجات المطلوبة.

IMAGE_QUALITY

يُستخدم هذا المعامل لصور JPEG فقط. القيمة الافتراضية لضغط JPEG هي -1.

يمكنك تغيير القيمة الافتراضية لكل مشروع QGIS من قائمة OWS Server ► WMS capabilities في نافذة الحوار Project ► Properties.... وإذا أردت تجاوزها في طلب GetMap فيمكنك ذلك باستخدام المعامل IMAGE_QUALITY.

OPACITIES

قائمة قيم عتامة مفصولة بفواصل. يمكن ضبط العتامة على مستوى الطبقة أو المجموعة. تتراوح القيم المسموح بها من 0 (شفافة تمامًا) إلى 255 (معتمة تمامًا).

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&WIDTH=400
&HEIGHT=200
&CRS=EPSG:4326
&LAYERS=countries,places
&BBOX=42,-6,52,15
&OPACITIES=255,0
../../../_images/wms_getmap_opacities.png

شكل 3.3 إلى اليسار OPACITIES=255,0 وإلى اليمين OPACITIES=255,255

FILTER

يمكن تحديد مجموعة جزئية من الطبقات باستخدام المعامل FILTER. الصياغة هي في الأساس نفسها المستخدمة في سلسلة المجموعة الجزئية (subset string) في QGIS. لكن هناك بعض القيود لتجنّب حقن SQL في قواعد البيانات عبر QGIS Server. إذا عُثر على سلسلة خطرة في المعامل، فسيعيد QGIS Server الخطأ التالي:

<ServiceExceptionReport>
  <ServiceException code="Security">The filter string XXXXXXXXX has been rejected because of security reasons.
  Note: Text strings have to be enclosed in single or double quotes. A space between each word / special character is mandatory.
  Allowed Keywords and special characters are IS,NOT,NULL,AND,OR,IN,=,<,=<,>,>=,!=,',',(,),DMETAPHONE,SOUNDEX.
  Not allowed are semicolons in the filter expression.</ServiceException>
</ServiceExceptionReport>

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&VERSION=1.3.0
&WIDTH=400
&HEIGHT=300
&CRS=EPSG:4326
&BBOX=41,-6,52,10
&LAYERS=countries_shapeburst,countries,places
&FILTER=countries_shapeburst,countries:"name" = 'France';places: "name" = 'Paris'
../../../_images/wms_getmap_filter.png

شكل 3.4 استجابة الخادم لطلب GetMap مع المعامل FILTER

في هذا المثال، يُطبَّق المرشّح نفسه "name" = 'France' على الطبقتين countries و countries_shapeburst، بينما يُطبَّق المرشّح "name" = 'Paris' على places فقط.

ملاحظة

يمكن إجراء عمليات بحث في البيانات الوصفية عبر GetFeatureInfo مع حذف المعامل X/Y إذا وُجد FILTER. عندها يعيد QGIS Server معلومات عن المعالم المطابقة ويولّد مستطيلًا محيطًا مدمجًا في مخرجات XML.

SELECTION

يمكن للمعامل SELECTION إبراز معالم من طبقة أو أكثر. يمكن تحديد المعالم المتجهية بتمرير قوائم من معرّفات المعالم مفصولة بفواصل.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=mylayer1,mylayer2
&SELECTION=mylayer1:3,6,9;mylayer2:1,5,6
&...

تعرض الصورة التالية الاستجابة لطلب GetMap يستخدم الخيار SELECTION، مثل http://myserver.com/...&SELECTION=countries:171,65.

بما أن معرّفات هذه المعالم تقابل في مجموعة البيانات المصدر France و Romania، فإنها تظهر مُبرَزة باللون الأصفر.

../../../_images/server_selection_parameter.png

شكل 3.5 استجابة الخادم لطلب GetMap مع المعامل SELECTION

FORMAT_OPTIONS

يمكن استخدام هذا المعامل لتحديد خيارات للصيغة المحددة. يُستخدم فقط مع FORMAT=application/dxf في طلب GetMap. يأخذ قائمة من أزواج key:value مفصولة بفاصلة منقوطة:

  • SCALE: يُستخدم لقواعد الترميز والمرشحات والأنماط (وليس للتغيير الفعلي لمقياس البيانات، إذ تبقى البيانات بمقياسها الأصلي).

  • MODE: يقابل خيارات التصدير المتاحة في نافذة حوار تصدير DXF في QGIS Desktop. القيم الممكنة هي NOSYMBOLOGY و FEATURESYMBOLOGY و SYMBOLLAYERSYMBOLOGY.

  • LAYERATTRIBUTES: حدّد حقلًا، أو في حالة وجود طبقات عديدة قائمة حقول مفصولة بفواصل، تحتوي على القيم المستخدمة لأسماء طبقات DXF؛ وإذا لم يُحدَّد، تُستخدم أسماء طبقات QGIS الأصلية.

  • USE_TITLE_AS_LAYERNAME: إذا فُعّل، يُستخدم عنوان الطبقة اسمًا لها.

  • CODEC: حدّد ترميزًا (codec) يُستخدم في الترميز. القيمة الافتراضية هي ISO-8859-1؛ راجع نافذة حوار تصدير DXF في QGIS Desktop لمعرفة القيم الصالحة.

  • NO_MTEXT: استخدام TEXT بدلًا من MTEXT للتسميات.

  • FORCE_2D: فرض مخرجات ثنائية الأبعاد. هذا مطلوب لعرض الخطوط المتعددة.

TILED

لأسباب تتعلق بالأداء، يمكن استخدام QGIS Server في وضع البلاطات. في هذا الوضع، يطلب العميل عدة بلاطات صغيرة ثابتة الحجم ويجمعها لتكوين الخريطة كاملة. وعند القيام بذلك، قد تظهر الرموز الواقعة على الحد الفاصل بين بلاطتين أو بالقرب منه مقطوعةً، لأنها موجودة في إحدى البلاطتين فقط.

اضبط المعامل TILED على TRUE لتخبر QGIS Server بالعمل في وضع البلاطات، وبتطبيق Tile buffer (النطاق العازل للبلاطة) المضبوط في مشروع QGIS (انظر ضبط مشروعك).

عندما تكون قيمة TILED هي TRUE ويكون في مشروع QGIS نطاق عازل للبلاطة غير صفري، تُرسم المعالم الواقعة خارج امتداد البلاطة لتجنّب ظهور رموز مقطوعة عند حدود البلاطات.

القيمة الافتراضية لـ TILED هي FALSE.

3.2.3. GetFeatureInfo

المعاملات القياسية لطلب GetFeatureInfo وفقًا لمواصفات OGC WMS 1.1.1 و 1.3.0:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetFeatureInfo )

VERSION

لا

إصدار الخدمة

QUERY_LAYERS

نعم

الطبقات المراد الاستعلام عنها

LAYERS

نعم

الطبقات المراد عرضها (مطابقة لـ QUERY_LAYERS)

STYLES

لا

نمط الطبقات

SRS / CRS

نعم

نظام الإحداثيات المرجعي

BBOX

لا

امتداد الخريطة

WIDTH

نعم

عرض الصورة بالبكسل

HEIGHT

نعم

ارتفاع الصورة بالبكسل

TRANSPARENT

لا

خلفية شفافة

INFO_FORMAT

لا

صيغة المخرجات

FEATURE_COUNT

لا

الحد الأقصى لعدد المعالم المُعادة

I

لا

عمود البكسل للنقطة المراد الاستعلام عنها

X

لا

مثل المعامل I، لكن في WMS 1.1.1

J

لا

صف البكسل للنقطة المراد الاستعلام عنها

Y

لا

مثل المعامل J، لكن في WMS 1.1.1

WMS_PRECISION

لا

الدقة (عدد الأرقام) المستخدمة عند إعادة الشكل الهندسي (انظر كيفية إضافة الشكل الهندسي إلى استجابة المعالم). القيمة الافتراضية هي -1 وتعني استخدام الدقة المعرّفة في المشروع.

إضافةً إلى المعاملات القياسية، يدعم QGIS Server المعاملات الإضافية التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

FILTER

لا

مجموعة جزئية من المعالم

FI_POINT_TOLERANCE

لا

التفاوت بالبكسل للطبقات النقطية

FI_LINE_TOLERANCE

لا

التفاوت بالبكسل للطبقات الخطية

FI_POLYGON_TOLERANCE

لا

التفاوت بالبكسل للطبقات المضلعية

FILTER_GEOM

لا

التصفية بالشكل الهندسي

WITH_DISPLAY_NAME

لا

إضافة اسم العرض للمعلم إلى المخرجات

WITH_MAPTIP

لا

إضافة تلميحات الخريطة (map tips) إلى المخرجات

WITH_GEOMETRY

لا

إضافة الشكل الهندسي إلى المخرجات

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&MAP=/home/qgis/projects/world.qgs
&LAYERS=mylayer1,mylayer2,mylayer3
&CRS=EPSG:4326
&WIDTH=400
&HEIGHT=400
&INFO_FORMAT=text/xml
&TRANSPARENT=TRUE
&QUERY_LAYERS=mylayer1
&FEATURE_COUNT=3
&I=250
&J=250

INFO_FORMAT

يمكن استخدام هذا المعامل لتحديد صيغة النتيجة. القيم المتاحة هي:

  • text/xml

  • text/html

  • text/plain

  • application/vnd.ogc.gml

  • application/json

QUERY_LAYERS

يحدد هذا المعامل الطبقات المراد عرضها على الخريطة. يُفصل بين الأسماء بفاصلة.

بالإضافة إلى ذلك، يقدّم QGIS Server خيارات لتحديد الطبقات عن طريق:

  • الاسم المختصر

  • معرّف الطبقة

راجع المعامل LAYERS المعرّف في GetMap لمزيد من المعلومات.

FEATURE_COUNT

يحدد هذا المعامل الحد الأقصى لعدد المعالم المُعادة لكل طبقة. فمثلًا إذا ضُبط QUERY_LAYERS على layer1,layer2 وضُبط FEATURE_COUNT على 3، فسيُعاد 3 معالم كحد أقصى من layer1، وبالمثل سيُعاد 3 معالم كحد أقصى من layer2.

افتراضيًا، يُعاد معلم واحد فقط لكل طبقة.

I

يتيح لك هذا المعامل، المعرّف في WMS 1.3.0، تحديد عمود البكسل لنقطة الاستعلام.

X

المعامل نفسه I، لكنه معرّف في WMS 1.1.1.

J

يتيح لك هذا المعامل، المعرّف في WMS 1.3.0، تحديد صف البكسل لنقطة الاستعلام.

Y

المعامل نفسه J، لكنه معرّف في WMS 1.1.1.

FI_POINT_TOLERANCE

يحدد هذا المعامل التفاوت بالبكسل للطبقات النقطية.

FI_LINE_TOLERANCE

يحدد هذا المعامل التفاوت بالبكسل للطبقات الخطية.

FI_POLYGON_TOLERANCE

يحدد هذا المعامل التفاوت بالبكسل للطبقات المضلعية.

FILTER_GEOM

يحدد هذا المعامل شكلًا هندسيًا بصيغة WKT يجب أن تتقاطع معه المعالم.

المعامل WITH_DISPLAY_NAME

يحدد هذا المعامل ما إذا كان سيُضاف اسم العرض للمعلم إلى المخرجات.

القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

WITH_MAPTIP

يحدد هذا المعامل ما إذا كانت ستُضاف تلميحات الخريطة (map tips) إلى المخرجات.

القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

  • HTML_FI_ONLY_MAPTIP: مثل TRUE، مع فارق أن استجابة HTML لطلب معلومات المعلم تحتوي على تلميح الخريطة فقط. يمنحك هذا تحكمًا كاملًا في استجابة HTML باستخدام محرر تلميحات الخريطة المدمج في الطبقة مثلًا.

WITH_GEOMETRY

يحدد هذا المعامل ما إذا كانت ستُضاف الأشكال الهندسية إلى المخرجات. لاستخدام هذه الميزة يجب أولًا تفعيل الخيار Add geometry to feature response في مشروع QGIS. انظر تهيئة مشروعك.

القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

3.2.4. GetLegendGraphic

المعاملات القياسية لطلب GetLegendGraphic وفقًا لمواصفات OGC WMS 1.1.1 و 1.3.0:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetLegendGraphic )

VERSION

لا

إصدار الخدمة

LAYERS

نعم

الطبقات المراد عرضها

STYLES

لا

نمط الطبقات

SRS / CRS

لا

نظام الإحداثيات المرجعي

BBOX

لا

امتداد الخريطة

WIDTH

لا

عرض الصورة بالبكسل

HEIGHT

لا

ارتفاع الصورة بالبكسل

FORMAT

لا

صيغة مفتاح الخريطة

TRANSPARENT

لا

خلفية شفافة

إضافةً إلى المعاملات القياسية، يدعم QGIS Server معاملات إضافية لتغيير حجم عناصر مفتاح الخريطة أو خصائص الخط لعناوين الطبقات وتسميات العناصر:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

SRCWIDTH

لا

عرض الخريطة

SRCHEIGHT

لا

ارتفاع الخريطة

SHOWFEATURECOUNT

لا

إضافة عدد المعالم

RULE

لا

رمز القاعدة المراد رسمه

RULELABEL

لا

رسم تسميات العناصر

BOXSPACE

لا

المسافة بين إطار مفتاح الخريطة ومحتواه (mm)

LAYERSPACE

لا

المسافة الرأسية بين الطبقات (mm)

LAYERTITLESPACE

لا

المسافة الرأسية بين عنوان الطبقة والعناصر (mm)

SYMBOLSPACE

لا

المسافة الرأسية بين الرمز والعناصر (mm)

ICONLABELSPACE

لا

المسافة الأفقية بين الرمز والتسمية (mm)

SYMBOLWIDTH

لا

عرض معاينة الرمز (mm)

SYMBOLHEIGHT

لا

ارتفاع معاينة الرمز (mm)

LAYERTITLE

لا

رسم عنوان الطبقة

LAYERFONTFAMILY

لا

عائلة خط الطبقة

LAYERFONTBOLD

لا

رسم عنوان الطبقة بخط عريض

LAYERFONTSIZE

لا

حجم خط عنوان الطبقة (pt)

LAYERFONTITALIC

لا

رسم عنوان الطبقة بخط مائل

LAYERFONTCOLOR

لا

لون عنوان الطبقة

ITEMFONTFAMILY

لا

عائلة خط العنصر

ITEMFONTBOLD

لا

رسم تسمية العنصر بخط عريض

ITEMFONTSIZE

لا

حجم خط تسمية العنصر (pt)

ITEMFONTITALIC

لا

رسم تسمية العنصر بخط مائل

ITEMFONTCOLOR

لا

لون تسمية العنصر

SHOWRULEDETAILS

لا

يضيف نص القاعدة إلى مخرجات JSON

ADDLAYERGROUPS

لا

يضيف مجموعات الطبقات إلى مخرجات JSON

BBOX

يمكن استخدام هذا المعامل لتحديد المنطقة الجغرافية التي يُبنى لها مفتاح الخريطة (صيغته موصوفة هنا) لكن لا يمكن دمجه مع المعامل RULE. يصبح المعامل SRS/CRS إلزاميًا عند استخدام المعامل BBOX.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries,airports
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326

ملاحظة

عند تعريف المعامل BBOX، يُشار إلى مفتاح الخريطة باسم مفتاح الخريطة المعتمد على المحتوى (content based legend).

WIDTH

لا يُستخدم هذا المعامل افتراضيًا، لكنه يصبح إلزاميًا عند ضبط المعامل RULE. وفي هذه الحالة يتيح تحديد عرض صورة المخرجات بالبكسل.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=getlegendgraphic
&LAYER=testlayer%20%C3%A8%C3%A9
&RULE=rule1
&WIDTH=30
&HEIGHT=30

HEIGHT

لا يُستخدم هذا المعامل افتراضيًا، لكنه يصبح إلزاميًا عند ضبط المعامل RULE. وفي هذه الحالة يتيح تحديد ارتفاع صورة المخرجات بالبكسل.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYER=testlayer%20%C3%A8%C3%A9
&RULE=rule1
&WIDTH=30
&HEIGHT=30

FORMAT

يمكن استخدام هذا المعامل لتحديد صيغة صورة مفتاح الخريطة. القيم المتاحة هي:

  • image/jpeg

  • image/png

  • application/json

في صيغة JSON تُرمَّز الرموز بترميز Base64، ولا تؤخذ في الحسبان معظم الخيارات الأخرى المتعلقة بالتخطيط أو الخطوط، لأن مفتاح الخريطة يجب أن يُبنى على جانب العميل. لا يمكن دمج المعامل RULE مع هذه الصيغة.

مثال على عنوان URL مع مخرجات JSON المقابلة:

http://localhost/qgisserver?
SERVICE=WMS&
REQUEST=GetLegendGraphic&
LAYERS=airports&
FORMAT=application/json

ومخرجات JSON المقابلة:

{
  "nodes":[
    {
      "icon":"<base64 icon>",
      "title":"airports",
      "type":"layer"
    }
  ],
  "title":""
}

SRCWIDTH

يمكن تعريف هذا المعامل عند ضبط المعامل RULE. وفي هذه الحالة تُمرَّر قيمة SRCWIDTH إلى طلب GetMap الأساسي بوصفها المعامل WIDTH، بينما يُستخدم المعامل WIDTH الخاص بـ GetLegendGraphic لحجم صورة مفتاح الخريطة.

SRCHEIGHT

يمكن تعريف هذا المعامل عند ضبط المعامل RULE. وفي هذه الحالة تُمرَّر قيمة SRCHEIGHT إلى طلب GetMap الأساسي بوصفها المعامل HEIGHT، بينما يُستخدم المعامل HEIGHT الخاص بـ GetLegendGraphic لحجم صورة مفتاح الخريطة.

SHOWFEATURECOUNT

يمكن استخدام هذا المعامل لتفعيل عدّ المعالم في مفتاح الخريطة. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

على سبيل المثال:

../../../_images/getfeaturecount_legend.png

RULE

يتوفر هذا المعامل للطبقات ذات الرسم Rule-based (المعتمد على القواعد)، ويتيح بناء مفتاح خريطة يتضمن رمز القاعدة المسمّاة فقط. لا يمكن دمجه مع المعامل BBOX. ويجب تحديد HEIGHT و WIDTH.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=mylayer,
&RULE=myrulename,
&WIDTH=20,
&HEIGHT=20

RULELABEL

يتيح هذا المعامل التحكم في رسم تسميات العناصر. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE: عرض تسمية العنصر

  • FALSE: إخفاء تسمية العنصر

  • AUTO: إخفاء تسمية العنصر للطبقات ذات الرسم Single symbol (الرمز المفرد)

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries,airports
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&RULELABEL=AUTO
../../../_images/wms_getlegendgraphic_rulelabel.png

شكل 3.6 رسم مفتاح الخريطة دون تسمية للطبقات ذات الرمز المفرد

BOXSPACE

يتيح هذا المعامل تحديد المسافة بين إطار مفتاح الخريطة ومحتواه بالمليمتر. القيمة الافتراضية للمسافة هي 2 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&BOXSPACE=0
../../../_images/wms_getlegendgraphic_boxspace.png

شكل 3.7 إلى اليسار BOXSPACE=0 وإلى اليمين BOXSPACE=15

LAYERSPACE

يتيح هذا المعامل تحديد المسافة الرأسية بين الطبقات بالمليمتر. القيمة الافتراضية للمسافة هي 3 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERSPACE=0
../../../_images/wms_getlegendgraphic_layerspace.png

شكل 3.8 إلى اليسار LAYERSPACE=0 وإلى اليمين LAYERSPACE=10

LAYERTITLESPACE

يتيح هذا المعامل تحديد المسافة الرأسية بين عنوان الطبقة والعناصر التي تليه بالمليمتر. القيمة الافتراضية للمسافة هي 3 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERTITLESPACE=0
../../../_images/wms_getlegendgraphic_layertitlespace.png

شكل 3.9 إلى اليسار LAYERTITLESPACE=0 وإلى اليمين LAYERTITLESPACE=10

SYMBOLSPACE

يتيح هذا المعامل تحديد المسافة الرأسية بين الرمز والعنصر الذي يليه بالمليمتر. القيمة الافتراضية للمسافة هي 2 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&SYMBOLSPACE=0
../../../_images/wms_getlegendgraphic_symbolspace.png

شكل 3.10 إلى اليسار SYMBOLSPACE=0 وإلى اليمين SYMBOLSPACE=5

ICONLABELSPACE

يتيح هذا المعامل تحديد المسافة الأفقية بين الرمز ونص التسمية بالمليمتر. القيمة الافتراضية للمسافة هي 2 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=getlegendgraphic
&LAYERS=countries,
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&ICONLABELSPACE=0
../../../_images/wms_getlegendgraphic_iconlabelspace.png

شكل 3.11 إلى اليسار ICONLABELSPACE=0 وإلى اليمين ICONLABELSPACE=10

SYMBOLWIDTH

يتيح هذا المعامل تحديد عرض معاينة الرمز بالمليمتر. القيمة الافتراضية للعرض هي 7 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries,
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&SYMBOLWIDTH=2
../../../_images/wms_getlegendgraphic_symbolwidth.png

شكل 3.12 إلى اليسار SYMBOLWIDTH=2 وإلى اليمين SYMBOLWIDTH=20

SYMBOLHEIGHT

يتيح هذا المعامل تحديد ارتفاع معاينة الرمز بالمليمتر. القيمة الافتراضية للارتفاع هي 4 mm.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries,
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&SYMBOLHEIGHT=2
../../../_images/wms_getlegendgraphic_symbolheight.png

شكل 3.13 إلى اليسار SYMBOLHEIGHT=2 وإلى اليمين SYMBOLHEIGHT=6

LAYERTITLE

يحدد هذا المعامل ما إذا كان سيُرسم عنوان الطبقة.

القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE (القيمة الافتراضية)

  • FALSE

LAYERFONTFAMILY

يحدد هذا المعامل عائلة الخط المستخدمة لرسم عنوان الطبقة.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries
&LAYERFONTFAMILY=monospace

LAYERFONTBOLD

يحدد هذا المعامل ما إذا كان عنوان الطبقة سيُرسم بخط عريض. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERFONTBOLD=TRUE
../../../_images/wms_getlegendgraphic_layerfontbold.png

شكل 3.14 مفتاح الخريطة مع LAYERFONTBOLD=TRUE

LAYERFONTSIZE

يحدد هذا المعامل حجم الخط لرسم عنوان الطبقة بالنقاط (pt).

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERFONTSIZE=20
../../../_images/wms_getlegendgraphic_layerfontsize.png

شكل 3.15 مفتاح الخريطة مع LAYERFONTSIZE=20

LAYERFONTITALIC

يحدد هذا المعامل ما إذا كان عنوان الطبقة سيُرسم بخط مائل. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERFONTITALIC=TRUE
../../../_images/wms_getlegendgraphic_layerfontitalic.png

شكل 3.16 مفتاح الخريطة مع LAYERFONTITALIC=TRUE

LAYERFONTCOLOR

يحدد هذا المعامل لون عنوان الطبقة. يمكن كتابة اللون حرفيًا (red، green، ..) أو بالترميز الست عشري (0xFF0000، 0x00FF00، ...).

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&LAYERFONTCOLOR=0x5f9930
../../../_images/wms_getlegendgraphic_layerfontcolor.png

شكل 3.17 مفتاح الخريطة مع LAYERFONTCOLOR=0x5f9930

ITEMFONTFAMILY

يحدد هذا المعامل عائلة الخط المستخدمة لرسم تسمية العنصر.

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=countries
&ITEMFONTFAMILY=monospace

ITEMFONTBOLD

يحدد هذا المعامل ما إذا كانت تسمية العنصر ستُرسم بخط عريض. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&ITEMFONTBOLD=TRUE
../../../_images/wms_getlegendgraphic_itemfontbold.png

شكل 3.18 مفتاح الخريطة مع ITEMFONTBOLD=TRUE

ITEMFONTSIZE

يحدد هذا المعامل حجم الخط لرسم عنوان الطبقة بالنقاط (pt).

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&ITEMFONTSIZE=20
../../../_images/wms_getlegendgraphic_itemfontsize.png

شكل 3.19 مفتاح الخريطة مع ITEMFONTSIZE=30

ITEMFONTITALIC

يحدد هذا المعامل ما إذا كانت تسمية العنصر ستُرسم بخط مائل. القيم المتاحة هي (دون تمييز بين الأحرف الكبيرة والصغيرة):

  • TRUE

  • FALSE

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&ITEMFONTITALIC=TRUE
../../../_images/wms_getlegendgraphic_itemfontitalic.png

شكل 3.20 مفتاح الخريطة مع ITEMFONTITALIC=TRUE

ITEMFONTCOLOR

يحدد هذا المعامل لون تسمية العنصر. يمكن كتابة اللون حرفيًا (red، green، ..) أو بالترميز الست عشري (0xFF0000، 0x00FF00، ...).

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetLegendGraphic
&LAYERS=airports,places
&BBOX=43.20,-2.93,49.35,8.32
&CRS=EPSG:4326
&TRANSPARENT=TRUE
&ITEMFONTCOLOR=0x5f9930
../../../_images/wms_getlegendgraphic_itemfontcolor.png

شكل 3.21 مفتاح الخريطة مع ITEMFONTCOLOR=0x5f9930

SHOWRULEDETAILS

يحدد هذا المعامل ما إذا كانت مخرجات JSON ستتضمن أيضًا تفاصيل القاعدة التي ولّدت عنصر مفتاح الخريطة. لا يكون لهذا المعامل أثر إلا عندما تكون أداة الرسم معتمدة على القواعد أو مصنّفة.

مثال على عنوان URL مع مخرجات JSON المقابلة:

http://localhost/qgisserver?
SERVICE=WMS&
REQUEST=GetLegendGraphic&
LAYERS=airports&
FORMAT=application/json&
SHOWRULEDETAILS=TRUE

ومخرجات JSON المقابلة:

{
  "nodes":[
    {
      "icon":"<base64 icon>",
      "title":"airports",
      "type":"layer",
      "rule": "type = 'airport'"
    }
  ],
  "title":""
}

ADDLAYERGROUPS

يحدد هذا المعامل ما إذا كانت مخرجات JSON ستعرض أيضًا أسماء مجموعات الطبقات (والمجموعات الفرعية) في عنصر مفتاح الخريطة. القيم الممكنة هي:

  • TRUE: عرض تسميات المجموعات

  • FALSE (افتراضي): إخفاء تسميات المجموعات

../../../_images/wms_getlegendgraphic_addlayergroups.png

شكل 3.22 مفتاح الخريطة بدون (يسارًا) ومع (يمينًا) عرض تسميات مجموعات الطبقات

ستبدو مخرجات JSON المقابلة التي تعرض أسماء المجموعات كما يلي:

{ "nodes":
  [{ "nodes":
     [{ "icon":"iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAUklEQVQ4jWNgGAXDHzASUqCsrPwfmX/37l28evBKKisr/0+a7IMiNi93C15DcUpgM4wYQ5nwuZAcMIQNvHv3LuO83C0kG0hysoFZRrJNo2AYAQC87BpkGQj1fwAAAABJRU5ErkJggg==",
        "title":"layer_a", "type":"layer"
     },
     { "nodes":
       [{ "icon":"iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAHUlEQVQ4jWNgGAWjYCQDxh887r8G2hGjYBQMGAAA1x0CR0FzIkYAAAAASUVORK5CYII=",
          "title":"layer_b", "type":"layer"
        },
        { "icon":"iVBORw0KGgoAAAANSUhEUgAAABMAAAAUCAYAAABvVQZ0AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAHUlEQVQ4jWNgGAWjYCQDxtmzZ/8aaEeMglEwYAAAaIoCzTtn5XoAAAAASUVORK5CYII=",
          "title":"layer_c", "type":"layer"
       }],
       "title":"lines", "type":"group"
     },
     { "icon":"iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAKklEQVQ4jWNUVlX/z0AlwMLAwMDAnXmQKoYxUcWUUcNGDRs1bNSwYWYYACXDAsvQaTuVAAAAAElFTkSuQmCC",
       "title":"layer_d", "type":"layer"
     }],
     "title":"top-level-group", "type":"group"
  }],
  "title":""
}

3.2.5. GetStyle(s)

المعاملات القياسية لطلب GetStyle (أو GetStyles) وفقًا لمواصفات OGC WMS 1.1.1:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetStyle أو GetStyles )

LAYERS

نعم

الطبقات المراد الاستعلام عنها

يدعم طلب GetStyle أيضًا معاملات المورِّد التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetStyles
&LAYERS=mylayer1,mylayer2

3.2.6. DescribeLayer

المعاملات القياسية لطلب DescribeLayer وفقًا لمواصفات OGC WMS 1.1.1 و 1.3.0:

المعامل

إلزامي

وصف

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( DescribeLayer )

LAYERS

نعم

الطبقات المراد وصفها

SLD_VERSION

نعم

إصدار SLD

يدعم طلب DescribeLayer أيضًا معاملات المورِّد التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=DescribeLayer
&SLD_VERSION=1.1.0
&LAYERS=mylayer1

يبدو مستند XML كما يلي:

<DescribeLayerResponse xmlns="http://www.opengis.net/sld" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://www.opengis.net/se" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/DescribeLayer.xsd">
    <Version>1.1.0</Version>
    <LayerDescription>
        <owsType>wfs</owsType>
        <se:OnlineResource xlink:href="http://localhost/qgisserver" xlink:type="simple"/>
        <TypeName>
            <se:FeatureTypeName>my_vector_layer</se:FeatureTypeName>
        </TypeName>
    </LayerDescription>
    <LayerDescription>
        <owsType>wcs</owsType>
        <se:OnlineResource xlink:href="http://localhost/qgisserver" xlink:type="simple"/>
        <TypeName>
            <se:FeatureTypeName>my_raster_layer</se:FeatureTypeName>
        </TypeName>
    </LayerDescription>
</DescribeLayerResponse>

SLD_VERSION

يتيح هذا المعامل تحديد إصدار SLD. القيمة الوحيدة المتاحة هي 1.1.0.

3.2.7. GetPrint

يمتلك QGIS Server القدرة على إنشاء مخرجات تخطيط الطباعة بصيغة PDF أو بصيغة بكسلية. تُستخدم نوافذ تخطيط الطباعة في المشروع المنشور قوالبَ. وفي طلب GetPrint يستطيع العميل تحديد معاملات الخرائط والتسميات الموجودة في التخطيط.

يدعم طلب GetPrint الرسم التوضيحي (redlining) و طبقات WMS الخارجية إلى جانب المعاملات التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetPrint )

VERSION

لا

إصدار الخدمة

LAYERS

لا

الطبقات المراد عرضها

TEMPLATE

نعم

قالب التخطيط المراد استخدامه

SRS / CRS

نعم

نظام الإحداثيات المرجعي

FORMAT

لا

صيغة المخرجات

FORMAT_OPTIONS

لا

خيارات صيغة الملف المحددة

فقط مع FORMAT=application/pdf

ATLAS_PK

لا

معالم الأطلس

STYLES

لا

نمط الطبقات

TRANSPARENT

لا

خلفية شفافة

OPACITIES

لا

العتامة للطبقة أو المجموعة

SELECTION

لا

إبراز المعالم

mapX:EXTENT

لا

امتداد الخريطة 'X'

mapX:LAYERS

لا

طبقات الخريطة 'X'

mapX:STYLES

لا

نمط طبقات الخريطة 'X'

mapX:SCALE

لا

مقياس رسم طبقات الخريطة 'X'

mapX:ROTATION

لا

دوران الخريطة 'X'

mapX:GRID_INTERVAL_X

لا

فاصل الشبكة على المحور x للخريطة 'X'

mapX:GRID_INTERVAL_Y

لا

فاصل الشبكة على المحور y للخريطة 'X'

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetPrint
&MAP=/home/qgis/projects/world.qgs
&CRS=EPSG:4326
&FORMAT=png
&TEMPLATE=Layout%201
&map0:EXTENT=-180,-90,180,90
&map0:LAYERS=mylayer1,mylayer2,mylayer3
&map0:OPACITIES=125,200,125
&map0:ROTATION=45

لاحظ أن قالب التخطيط قد يحتوي على أكثر من خريطة. لذا إذا أردت تهيئة خريطة معينة، فعليك استخدام معاملات mapX: حيث X عدد موجب يمكنك الحصول عليه بفضل طلب GetProjectSettings.

على سبيل المثال:

<WMS_Capabilities>
...
<ComposerTemplates xsi:type="wms:_ExtendedCapabilities">
<ComposerTemplate width="297" height="210" name="Druckzusammenstellung 1">
<ComposerMap width="171" height="133" name="map0"/>
<ComposerMap width="49" height="46" name="map1"/></ComposerTemplate>
</ComposerTemplates>
...
</WMS_Capabilities>

TEMPLATE

يمكن استخدام هذا المعامل لتحديد اسم قالب التخطيط المراد استخدامه في الطباعة.

FORMAT

يحدد هذا المعامل صيغة صورة الخريطة. القيم المتاحة هي:

  • png (القيمة الافتراضية)

  • image/png

  • jpg

  • jpeg

  • image/jpeg

  • svg

  • image/svg

  • image/svg+xml

  • pdf

  • application/pdf

إذا كانت قيمة المعامل FORMAT مختلفة عن هذه القيم، فسيُعاد استثناء (exception).

FORMAT_OPTIONS

يمكن استخدام هذا المعامل لتحديد خيارات للصيغة المحددة. يُستخدم فقط مع FORMAT=application/pdf في طلبات GetPrint. يأخذ قائمة من أزواج key:value مفصولة بفاصلة منقوطة:

  • RASTERIZE_WHOLE_IMAGE: ما إذا كان ملف PDF بأكمله سيُصدَّر صورةً. الافتراضي: false.

  • FORCE_VECTOR_OUTPUT: ما إذا كان ملف PDF سيُصدَّر بصيغة متجهية. الافتراضي: false.

  • APPEND_GEOREFERENCE: ما إذا كانت معلومات الإسناد الجغرافي ستُضاف إلى ملف PDF. الافتراضي: true.

  • EXPORT_METADATA: ما إذا كانت البيانات الوصفية (metadata) ستُضاف إلى ملف PDF. الافتراضي: true.

  • TEXT_RENDER_FORMAT: يضبط صيغة رسم النص عند التصدير إلى PDF. يمكن أن تكون AlwaysOutlines (افتراضي) أو AlwaysText.

  • SIMPLIFY_GEOMETRY: ما إذا كانت الأشكال الهندسية للمعالم ستُبسَّط. الافتراضي: true.

  • WRITE_GEO_PDF: ما إذا كان سيُصدَّر ملف PDF جغرافي مكاني (Geospatial PDF). الافتراضي: false.

  • USE_ISO_32000_EXTENSION_FORMAT_GEOREFERENCING: ما إذا كان سيُستخدم الإسناد الجغرافي وفق Iso32000. الافتراضي: false.

  • USE_OGC_BEST_PRACTICE_FORMAT_GEOREFERENCING: ما إذا كان سيُستخدم الإسناد الجغرافي وفق أفضل ممارسات OGC. الافتراضي: false.

  • EXPORT_THEMES: قائمة مفصولة بفواصل بسمات الخريطة (map themes) المستخدمة في تصدير Geospatial PDF

  • PREDEFINED_MAP_SCALES: قائمة مفصولة بفواصل بمقاييس الرسم المستخدمة لرسم الخريطة

  • LOSSLESS_IMAGE_COMPRESSION: ما إذا كان يجب ضغط الصور المضمّنة في ملف PDF باستخدام خوارزمية ضغط دون فقدان. الافتراضي: false.

  • DISABLE_TILED_RASTER_RENDERING: ما إذا كانت الطبقات الشبكية ستُرسم دون تقسيم إلى بلاطات في ملف PDF. الافتراضي: false.

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetPrint
&MAP=/home/qgis/projects/world.qgs
&CRS=EPSG:4326
&FORMAT=pdf
&TEMPLATE=Layout%201
&FORMAT_OPTIONS=FORCE_VECTOR_OUTPUT:TRUE;TEXT_RENDER_FORMAT:AlwaysOutlines;PREDEFINED_MAP_SCALES:250

ATLAS_PK

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

عندما تكون قيمة FORMAT هي pdf، يُعاد مستند PDF واحد يجمع صفحات المعالم. أما في جميع الصيغ الأخرى، فتُعاد صفحة واحدة.

mapX:EXTENT

يحدد هذا المعامل امتداد عنصر خريطة في التخطيط بالشكل xmin,ymin,xmax,ymax.

mapX:ROTATION

يحدد هذا المعامل دوران الخريطة بالدرجات.

المعامل mapX:GRID_INTERVAL_X

يحدد هذا المعامل كثافة خطوط الشبكة في الاتجاه X.

المعامل mapX:GRID_INTERVAL_Y

يحدد هذا المعامل كثافة خطوط الشبكة في الاتجاه Y.

mapX:SCALE

يحدد هذا المعامل مقياس الرسم لعنصر خريطة في التخطيط. وهذا مفيد لضمان ظهور الطبقات والتسميات وفق مقياس الرسم حتى لو كان العميل والخادم يستخدمان خوارزميات مختلفة لحساب مقام مقياس الرسم.

mapX:LAYERS

يحدد هذا المعامل الطبقات لعنصر خريطة في التخطيط. راجع طبقات GetMap لمزيد من المعلومات عن هذا المعامل.

mapX:STYLES

يحدد هذا المعامل أنماط الطبقات المعرّفة في عنصر خريطة معين في التخطيط. راجع أنماط GetMap لمزيد من المعلومات عن هذا المعامل.

3.2.8. GetProjectSettings

يعمل هذا النوع من الطلبات بطريقة مشابهة لـ GetCapabilities، لكنه أكثر خصوصية بـ QGIS Server ويتيح للعميل قراءة معلومات إضافية غير متاحة في مخرجات GetCapabilities:

  • حالة الظهور الأولية للطبقات

  • معلومات عن البيانات الوصفية للطبقات المتجهية وأنواع تحريرها

  • معلومات عن ترتيب الطبقات وترتيب الرسم

  • قائمة الطبقات المنشورة في WFS

  • بيان ما إذا كانت مجموعة في شجرة الطبقات متنافية (mutually exclusive)

يدعم طلب GetProjectSettings المعاملات التالية:

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetProjectSettings )

3.2.9. GetSchemaExtension

يتيح طلب GetSchemaExtension الحصول على القدرات والعمليات الموسّعة الاختيارية لخدمة WMS كما ينفّذها QGIS Server.

المعامل

إلزامي

وصف

MAP

نعم

ملف مشروع QGIS

SERVICE

نعم

اسم الخدمة ( WMS )

REQUEST

نعم

اسم الطلب ( GetSchemaExtension )

مثال على عنوان URL:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetSchemaExtension

يبدو مستند XML كما يلي:

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wms="http://www.opengis.net/wms" xmlns:qgs="http://www.qgis.org/wms" targetNamespace="http://www.qgis.org/wms" elementFormDefault="qualified" version="1.0.0">
    <import namespace="http://www.opengis.net/wms" schemaLocation="http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd"/>
    <element name="GetPrint" type="wms:OperationType" substitutionGroup="wms:_ExtendedOperation"/>
    <element name="GetStyles" type="wms:OperationType" substitutionGroup="wms:_ExtendedOperation"/>
</schema>

3.2.10. طبقات WMS الخارجية

يتيح QGIS Server تضمين طبقات من خوادم WMS خارجية في طلبات WMS GetMap و WMS GetPrint. وهذا مفيد خاصةً إذا كان عميل الويب يستخدم طبقة خلفية خارجية في خريطة الويب. ولأسباب تتعلق بالأداء، ينبغي أن يطلب عميل الويب هذه الطبقات مباشرةً (لا أن تمر تتابعيًا عبر QGIS Server). أما في الطباعة، فينبغي تمرير هذه الطبقات تتابعيًا عبر QGIS Server كي تظهر في الخريطة المطبوعة.

يمكن إضافة الطبقات الخارجية إلى المعامل LAYERS بالشكل EXTERNAL_WMS:<layername>. ويمكن بعد ذلك تمرير معاملات طبقات WMS الخارجية (مثل url و format و dpiMode و crs و layers و styles) بوصفها معاملات خدمة بالشكل <layername>:<parameter>. في طلب GetMap قد يبدو ذلك كما يلي:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetMap
&LAYERS=EXTERNAL_WMS:basemap,layer1,layer2
&OPACITIES=100,200,255
&STYLES=,,
&basemap:url=http://externalserver.com/wms.fcgi
&basemap:format=image/jpeg
&basemap:dpiMode=7
&basemap:crs=EPSG:2056
&basemap:layers=orthofoto
&basemap:styles=default

وبالمثل، يمكن استخدام الطبقات الخارجية في طلبات GetPrint:

http://localhost/qgisserver?
SERVICE=WMS
&REQUEST=GetPrint
&TEMPLATE=A4
&map0:layers=EXTERNAL_WMS:basemap,layer1,layer2
&map0:EXTENT=<minx,miny,maxx,maxy>
&OPACITIES=100,200,255
&basemap:url=http://externalserver.com/wms.fcgi
&basemap:format=image/jpeg
&basemap:dpiMode=7
&basemap:crs=EPSG:2056
&basemap:layers=orthofoto
&basemap:styles=default

3.2.11. الرسم التوضيحي (Redlining)

هذه الميزة متاحة ويمكن استخدامها مع طلبات GetMap و GetPrint.

يمكن استخدام ميزة الرسم التوضيحي (redlining) لتمرير أشكال هندسية وتسميات في الطلب، يرسمها الخادم فوق الصورة القياسية المُعادة (الخريطة). يتيح هذا للمستخدم إبراز بعض المناطق أو المواقع وغيرها، أو ربما إضافة بعض التعليقات (التسميات) إليها، مما لا يوجد في الخريطة القياسية.

يكون طلب GetMap بالصيغة التالية:

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetMap
&HIGHLIGHT_GEOM=POLYGON((590000 5647000, 590000 6110620, 2500000 6110620, 2500000 5647000, 590000 5647000))
&HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%23ea1173</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&HIGHLIGHT_LABELSTRING=Write label here
&HIGHLIGHT_LABELSIZE=16
&HIGHLIGHT_LABELCOLOR=%23000000
&HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&HIGHLIGHT_LABELBUFFERSIZE=1.5

ويكون المكافئ في GetPrint بالصيغة التالية (لاحظ إضافة المعامل mapX: لتحديد الخريطة التي تحتوي على الرسم التوضيحي):

http://localhost/qgisserver?
SERVICE=WMS
&VERSION=1.3.0
&REQUEST=GetPrint
&map0:HIGHLIGHT_GEOM=POLYGON((590000 5647000, 590000 6110620, 2500000 6110620, 2500000 5647000, 590000 5647000))
&map0:HIGHLIGHT_SYMBOL=<StyledLayerDescriptor><UserStyle><Name>Highlight</Name><FeatureTypeStyle><Rule><Name>Symbol</Name><LineSymbolizer><Stroke><SvgParameter name="stroke">%23ea1173</SvgParameter><SvgParameter name="stroke-opacity">1</SvgParameter><SvgParameter name="stroke-width">1.6</SvgParameter></Stroke></LineSymbolizer></Rule></FeatureTypeStyle></UserStyle></StyledLayerDescriptor>
&map0:HIGHLIGHT_LABELSTRING=Write label here
&map0:HIGHLIGHT_LABELSIZE=16
&map0:HIGHLIGHT_LABELCOLOR=%23000000
&map0:HIGHLIGHT_LABELBUFFERCOLOR=%23FFFFFF
&map0:HIGHLIGHT_LABELBUFFERSIZE=1.5

هذه هي الصورة الناتجة عن الطلب أعلاه، وفيها مضلع وتسمية مرسومان فوق الخريطة العادية:

../../../_images/server_redlining.png

شكل 3.23 استجابة الخادم لطلب GetMap مع معاملات الرسم التوضيحي

يمكنك ملاحظة وجود عدة معاملات في هذا الطلب للتحكم في ميزة الرسم التوضيحي. تتضمن القائمة الكاملة:

  • HIGHLIGHT_GEOM: يمكنك إضافة POINT و MULTILINESTRING و POLYGON وغيرها. وهو يدعم الأشكال الهندسية متعددة الأجزاء. إليك مثالًا: HIGHLIGHT_GEOM=MULTILINESTRING((0 0, 0 1, 1 1)). يجب أن تكون الإحداثيات بنظام الإحداثيات المرجعي لطلب GetMap/GetPrint.

  • HIGHLIGHT_LABELBUFFERCOLOR: يتحكم هذا المعامل في لون النطاق العازل للتسمية.

  • HIGHLIGHT_LABELBUFFERSIZE: يتحكم هذا المعامل في حجم النطاق العازل للتسمية.

  • HIGHLIGHT_LABELCOLOR: يتحكم هذا المعامل في لون التسمية.

  • HIGHLIGHT_LABEL_DISTANCE: يتحكم في المسافة بين المعلم (نقطة أو خط مثلًا) والتسمية بالمليمتر

  • HIGHLIGHT_LABELFONT: يتحكم هذا المعامل في خط التسمية (مثل Arial)

  • HIGHLIGHT_LABEL_HORIZONTAL_ALIGNMENT: يضع التسمية أفقيًا على نقطة باستخدام المحاذاة المحددة (مثل 'left' و 'center' و 'right')

  • HIGHLIGHT_LABEL_ROTATION: يتحكم في دوران التسمية بالدرجات

  • HIGHLIGHT_LABELSIZE: يتحكم هذا المعامل في حجم التسمية.

  • HIGHLIGHT_LABELSTRING: يمكنك تمرير نص التسمية إلى هذا المعامل.

  • HIGHLIGHT_LABEL_VERTICAL_ALIGNMENT: يضع التسمية رأسيًا على نقطة باستخدام المحاذاة المحددة (مثل 'top' و 'half' و 'bottom')

  • HIGHLIGHT_SYMBOL: يتحكم هذا المعامل في كيفية رسم حدود الشكل الهندسي، ويمكنك تغيير عرض الخط ولونه وعتامته.