এই নমুনা একটি লাস্টেরিংয়ের উভয় পাশে দুটি বহুভুজ তৈরি করে। এটি পোস্টজিআইএস 1.5 বা তার বেশি প্রয়োজন। আমি নিশ্চিত নই যে এটি যে লাইনগুলি তাদের অতিক্রম করে তাদের মোকাবেলা করতে কতটা ভাল।
SELECT ST_AsText(geom)
FROM ST_Dump ((
SELECT
ST_Polygonize(GEOMUNION(ST_Boundary(ST_Buffer(the_geom, 0.5, 'endcap=flat join=round')), the_geom)) AS buffer_sides
FROM
(SELECT ST_GeomFromText('LINESTRING(1 1, 1 5, 5 5)') AS the_geom) AS table1
));
এটি ফলাফল:
st_astext
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------
POLYGON((0.5 5,0.509607359798385 5.09754516100806,0.538060233744357 5.19134171618254,0.584265193848727 5.2777851165098,
0.646446609406726 5.35355339059327,0.722214883490199 5.41573480615127,0.808658283817455 5.46193976625564,0.9024548389919
36 5.49039264020162,1 5.5,5 5.5,5 5,1 5,1 1,0.5 1,0.5 5))
POLYGON((5 5,5 4.5,1.5 4.5,1.5 1,1 1,1 5,5 5))
(2 rows)
কোড নিম্নলিখিত পদ্ধতিতে কাজ করে:
- ST_Buffer ব্যবহার করে লাইনারেটিং বাফার করুন। আমরা কোনও শেষ ক্যাপ নির্দিষ্ট না করার জন্য PostGIS 1.5 বৈশিষ্ট্যটি কাস্টম এন্ডক্যাপগুলিতে সমর্থন করি। নীচে উদাহরণ দেখুন।
- উইকিতে নথিভুক্ত পদ্ধতিটি ব্যবহার করে মূল লাইনটি ব্যবহার করে, বাফার বহুভুজকে দুটি ভাগে বিভক্ত করুন ।
ভবিষ্যতে স্ব-ক্রসিং লাইনগুলি মোকাবেলায় এটি উন্নত হতে পারে।