এই ক্যোয়ারিতে কৌশলটি করা উচিত:
WITH line AS
(SELECT
your_polylinestring_id,
(ST_Dump(geom)).geom AS geom
FROM your_polylinestring_table),
linemeasure AS
(SELECT
ST_AddMeasure(line.geom, 0, ST_Length(line.geom)) AS linem,
generate_series(0, ST_Length(line.geom)::int, 10) AS i
FROM line),
geometries AS (
SELECT
i,
(ST_Dump(ST_GeometryN(ST_LocateAlong(linem, i), 1))).geom AS geom
FROM linemeasure)
SELECT
i,
ST_SetSRID(ST_MakePoint(ST_X(geom), ST_Y(geom)), 31468) AS geom
FROM geometries
প্রথমে আপনি আপনার পলিনয়স্ট্রিং কলাম থেকে স্বতন্ত্র লাইনস্ট্রিংগুলি নির্বাচন করুন ST_Dump
তারপরে আপনাকে ST_AddMeasure
0 (লাইনস্ট্রিংয়ের শুরু) এবং লাস্টারিংয়ের শেষ (লাস্ট্রিংয়ের দৈর্ঘ্যের সমান) দিয়ে শুরু করে পরিমাপের উপাদানগুলি সংজ্ঞায়িত করতে হবে । Generate_series
10 ধাপে এই পরিমাপের উপর একটি সিরিজ তৈরি করে এখানে আপনি সংজ্ঞা দিতে পারেন "n metres"
(এই উদাহরণে 10 মিটার)। i
মান যে linestring জন্য নতুনভাবে শুরু হয়।
সহ ST_LocateAlong
এবং ST_GeometryN
আপনি একটি বহুমাত্রিক বিন্দু জ্যামিতি তৈরি করুন।
অবশেষে আপনাকে এই জ্যামিতির X এবং Y মানগুলি বের করতে হবে এবং এটি থেকে একটি বিন্দু তৈরি করতে হবে।
ফলাফলটি এরকম দেখতে পারে:
সম্পাদনা
ন্যায়সঙ্গত হওয়ার জন্য, আমি এই তথ্যটি যুক্ত করতে চাই: এই উত্তরটিতে ধারণা এবং ক্যোয়ারী এমন একটি কোয়েরি থেকে উত্তোলন করা হয়েছে যা আমি পোস্টজিআইজে ডেমগুলি থেকে ড্রপ লাইন তৈরি করতে ব্যবহার করছি। ম্যাথিউ লেপ্লাত্রেয়ের এই নিবন্ধে এর দুর্দান্ত বাস্তবায়নটি ব্যাখ্যা করা হয়েছে ।