কিউজিআইএস 2.18 এবং কিউজিআইএস 3.4 এ পরীক্ষিত
এর অনুমান করা একটি পলিলাইন স্তর নামক নেই যাক "lines"
।
আমি এর মাধ্যমে একটি "ভার্চুয়াল স্তর" ব্যবহার করার পরামর্শ দিতে পারি Layer > Add Layer > Add/Edit Virtual Layer...
সম্ভাব্য বেশ কয়েকটি মামলা রয়েছে:
কেস 1. লাইনটি সমান বিভাগে বিভক্ত করা, মূলত সমান দৈর্ঘ্য যা ব্যবহারকারী দ্বারা সংজ্ঞায়িত করা হয়।
নিম্নলিখিত প্রশ্নের সাথে, ফলাফল অর্জন করা সম্ভব। বৃদ্ধি / সেগমেন্ট দৈর্ঘ্য হ্রাস করতে, দয়া করে সমন্বয় 1000 AS step_length
মধ্যে -- configurations
।
-- generate series
WITH RECURSIVE generate_sections(id, sec) AS (
SELECT conf.start + 1, conf.start
FROM conf
UNION ALL
SELECT id + conf.step, sec + conf.step_length/conf.length_line
FROM generate_sections, conf
WHERE sec + conf.step_length/conf.length_line <= 1
),
-- configurations
conf AS (
SELECT
0.0 AS start,
1.0 AS step,
1000 AS step_length,
ST_Length(l.geometry) AS length_line
FROM lines AS l
)
-- query
SELECT gs.id AS id,
ROUND(ST_Length(ST_Line_Substring(l.geometry, start + sec, sec + conf.step_length/conf.length_line)),0) AS seg_length,
ST_Line_Substring(l.geometry, start + sec, sec + conf.step_length/conf.length_line) AS geom
FROM generate_sections AS gs, lines AS l, conf
GROUP BY gs.id
ভার্চুয়াল স্তরটি আউটপুট নীচের মত দেখাবে
নোট: যদি 'ব-দ্বীপ' (যেমন গত সবচেয়ে কম অংশ) অন্তর্ভুক্ত না করা উচিত, তারপর সন্নিবেশWHERE sec_length >= step_length
মধ্যে-- query
, নীচে দেখুন
-- query
SELECT gs.id AS id,
ROUND(ST_Length(ST_Line_Substring(l.geometry, start + sec, sec + conf.step_length/conf.length_line)),0) AS seg_length,
ST_Line_Substring(l.geometry, start + sec, sec + conf.step_length/conf.length_line) AS geom
FROM generate_sections AS gs, lines AS l, conf
WHERE seg_length >= step_length
GROUP BY gs.id
কেস ২. নির্দিষ্ট সংখ্যক খণ্ডে লাইনটি বিভক্ত করা
নিম্নলিখিত প্রশ্নের সাথে, ফলাফল অর্জন করা সম্ভব। বাড়াতে / অংশ সংখ্যা হ্রাস, দয়া করে সমন্বয় 8 AS sections
মধ্যে -- configurations
।
-- generate series
WITH RECURSIVE generate_sections(id, sec) AS (
SELECT conf.start + 1, conf.start
FROM conf
UNION ALL
SELECT id + conf.step, sec + conf.step
FROM generate_sections, conf
WHERE sec + conf.step < conf.sections
),
-- configurations
conf AS (
SELECT
8 AS sections,
0.0 AS start,
1.0 AS step
)
-- query
SELECT gs.id AS id,
ST_Line_Substring(l.geometry, conf.start + sec/conf.sections, sec/conf.sections + step/conf.sections) AS geom,
ROUND(ST_Length(ST_Line_Substring(l.geometry, conf.start + sec/conf.sections, sec/conf.sections + step/conf.sections)),2) AS seg_length
FROM generate_sections AS gs, lines AS l, conf
WHERE start + step < sections
GROUP BY gs.id
ভার্চুয়াল স্তরটি আউটপুট নীচের মত দেখাবে