কিউজিআইএস জ্যামিতি জেনারেটরের প্রতীক স্তর ধরণের অভিব্যক্তিটিতে কিছু 'অস্থায়ী পরিবর্তনগুলি' ব্যবহার করছেন?


10

Geometry generatorপ্রতীক স্তর স্তরটি ব্যবহার করে , আমি আয়তনের আয়তক্ষেত্রগুলি @nv_bg_w(প্রস্থ) এবং @nv_bg_h(উচ্চতা) (প্রকল্পের ভেরিয়েবলগুলি) লাইন বৈশিষ্ট্যগুলিতে আঁকি , হয় স্থানাঙ্কে text_x, text_y(গুণাবলী, না থাকলে NULL) অথবা বিকল্পভাবে নিম্নোক্ত অভিব্যক্তি দ্বারা লাইনের কেন্দ্রে:

geom_from_wkt(
    'POLYGON((' ||
    COALESCE("text_x", x(point_on_surface($geometry))) ||' '||  COALESCE("text_y", y(point_on_surface($geometry))) || ','||
    (to_real(COALESCE("text_x", x(point_on_surface($geometry)))+ @nv_bg_w )) ||' '||  COALESCE("text_y", y(point_on_surface($geometry))) || ','||
    (to_real(COALESCE("text_x", x(point_on_surface($geometry)))+ @nv_bg_w  )) ||' '||  (to_real(COALESCE("text_y", y(point_on_surface($geometry))))- @nv_bg_h ) || ','||
    COALESCE("text_x", x(point_on_surface($geometry))) ||' '||  (to_real(COALESCE("text_y", y(point_on_surface($geometry))))- @nv_bg_h ) || ','||
    COALESCE("text_x", x(point_on_surface($geometry))) ||' '||  COALESCE("text_y", y(point_on_surface($geometry)))|| '))'
)

যেমন দেখা যায় x(point_on_surface($geometry))এবং y(point_on_surface($geometry))প্রায়শই ঘটে থাকে। কমপক্ষে এই সাধারণ উদাহরণে এটি কোডটি পড়ার চেয়ে পড়াকে আরও শক্ত করে তোলে।

সুতরাং আমার প্রশ্নটি হ'ল: কিছু অস্থায়ী ভেরিয়েবলের মধ্যে পরবর্তী প্রকাশগুলি সংরক্ষণ করার কোনও উপায় আছে (সিউডোকোড) এর মতো কিছু:

@mx=x(point_on_surface($geometry))
@my=y(point_on_surface($geometry))
geom_from_wkt(
'POLYGON((' ||
... #and so on

জোচেন, আপনার প্রশ্নের বর্ণিত সমস্যার কোনও সমাধান খুঁজে পেয়েছেন? আমি একইরকম প্রয়োজনের মুখোমুখি হয়েছি এবং একই জিনিসটি অনুসন্ধান করছি
iulian

উত্তর:


4

হ্যাঁ, কিউজিআইএস 3.x এ একটি উপায় রয়েছে। আপনি with_variable()একটি এক্সপ্রেশন মধ্যে ফাংশন মাধ্যমে একটি পরিবর্তনশীল সেট করতে পারেন । সুতরাং আমি আশা করি নীচের অভিব্যক্তিটি আপনার পক্ষে কাজ করবে।

with_variable( 'mx', x(point_on_surface($geometry)),
    with_variable( 'my', y(point_on_surface($geometry)),
        geom_from_wkt(
            'POLYGON((' ||
            COALESCE("text_x", @mx) ||' '||  COALESCE("text_y", @my) || ','||
            (to_real(COALESCE("text_x", @mx)+ @nv_bg_w )) ||' '||  COALESCE("text_y", @my) || ','||
            (to_real(COALESCE("text_x", @mx)+ @nv_bg_w  )) ||' '||  (to_real(COALESCE("text_y", @my))- @nv_bg_h ) || ','||
            COALESCE("text_x", @mx) ||' '||  (to_real(COALESCE("text_y", @my))- @nv_bg_h ) || ','||
            COALESCE("text_x", @mx) ||' '||  COALESCE("text_y", @my)|| '))'
        )
    )
)

এক্সপ্রেশন ডায়ালগ উইন্ডোতে ডকুমেন্টেশন:

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.