أكثر

Geoserver SLD: تبديل ديناميكي متغير


أواجه مشكلة مع Geoserver وآلية التصميم الخاصة به والتي لست متأكدًا مما إذا كان من الممكن حلها أم لا. لكن أولاً ، سياق سريع ...

سياق الكلام

نريد استخدام Geoserver و OpenLayers لعرض خريطة في تطبيقنا. في هذا التطبيق ، سنكون قادرين على اختيار ولاية برازيلية من حقل محدد لرؤية كل مدينة من هذه الولاية. ضع في اعتبارك أيضًا أن كل مدينة سيتم ملؤها بلون معين.

سيتم إرسال الألوان من خلال طلب WMS بدلاً من حسابها أو تحديدها داخل SLD ، على سبيل المثال ، باستخدام البيانات من مجموعة بيانات الطبقة الخاصة بنا. هذه هي المشكلة ... هناك شيء آخر يجب مراعاته وهو أن بعض الولايات في البرازيل لديها أكثر من 400 مدينة.

حل مشكلة؟

الطريقة الأولى التي جربناها تتكون من إنشاء ملف قاعدة لكل مدينة. ومع ذلك ، فقد تبين أنه غير ممكن لأن لدينا أكثر من 300 مدينة يتم عرضها في بعض الولايات. تخيل حجم ملف SLD هذا!

كان الأسلوب الثاني الذي فكرنا فيه هو الحصول على كل لون ديناميكيًا من QueryString. على سبيل المثال ، عند عرض المدينة المسماة "Salvador" ، يجب البحث في QueryString عن المعلمة لون سلفادور. لكننا لا نعرف كيف نفعل ذلك. في الواقع ، يبدو أنه مستحيل. هل انا على حق؟

ألق نظرة على SLD أدناه.

 حكم المدينة مدينة    #  سلفادور 234545

ما نود فعله هو بدلاً من تعريف الحرفي سلفادور، داخل الحسد وظيفة ، نود استخدام خاصية مثل اسم المدينة التي تأتي من مجموعة بيانات الطبقات لدينا. شيء من هذا القبيل…

 حكم المدينة مدينة    #  اسم المدينة-اللون  234545

بدلا من

 اسم المدينة-اللون 

تحتاج إلى استخدام وظيفة Concatenate

 اسم المدينة -اللون


شاهد الفيديو: GeoServer. Styling. SLD CSS. (شهر اكتوبر 2021).