আমি পয়েন্ট দ্বারা লাইনস্ট্রিংস কাটানোর সেরা উপায়টি যাচাই করছিলাম।
দৃশ্যটি হ'ল: প্রচুর রাস্তা, ছেদ বিন্দু দ্বারা কাটা অংশগুলি প্রয়োজন, এ জাতীয়:
আমি পেয়েছি
লাইনস্ট্রিংস (পয়েন্ট অনুসারে সম্পূর্ণ নিযুক্ত) টেবিল
st_intersication পয়েন্ট টেবিল
ছেদ পয়েন্ট টেবিল দ্বারা কাটা স্বাধীন লাইনস্ট্রিং অংশগুলি আমার নেওয়া দরকার।
আমি পোস্টজিআইএস ফাংশনগুলি ব্যবহার করছি, এবং বেশ কয়েকটি পদ্ধতির সন্ধান পেয়েছি, তবে তাদের প্রত্যেকটিই আমাকে একধরণের সমস্যা দিচ্ছে।
আমি ইতিমধ্যে যা পরীক্ষা করেছি তা এখানে:
1
লাইন টেবিল: 1 সারি, 1200 লাইনের st_memunion পয়েন্ট টেবিল: 1700 সারি (পয়েন্ট)
খারাপ কি: সত্যিই সময় এবং মেমরি ফ্লাশ অনেক সময় লাগে। একসাথে একাধিক টেবিল তৈরি করতে পারে না কারণ মেমরি কেবল এটি পরিচালনা করতে পারে না। এবং ফলাফল নোংরা এবং অগোছালো। আমাকে সঠিক সারির নম্বর দেওয়ার পরিবর্তে এবং আমার এটি পরে পরিষ্কার করা দরকার (ভালভাবে এখানে ছেদ পয়েন্টগুলিতে বিভক্ত লাইনগুলি ব্যাখ্যা করা হয়েছে )
CREATE TABLE lines_with_messy_result AS (
SELECT
((ST_DUMP(ST_SPLIT(a.geom,b.ix))).geom) as geom
FROM st_union_lines a
INNER JOIN lots_of_points b
ON ST_INTERSECTS(a.geom, b.ix)
);
--then need to clean this up
create table lines_segments_cleaned as (
SELECT DISTINCT ON (ST_AsBinary(geom))
geom
FROM
lines_with_messy_result
);
এই উপায় / পদ্ধতির উত্স: /programming/25753348/how-do-i-divide-city-states-by-intersication- using- postgis
2
একই লাইন / পয়েন্ট টেবিল। এখনও অগোছালো ফলাফল এবং এটি পরিষ্কার করা দরকার। কোয়েরি শেষ করতে এখনও প্রচুর সময়।
--messy table
Create table messy_lines_segments as
Select
row_number() over() as id,
(st_dump(st_split(input.geom, blade.ix))).geom as geom
from st_union_lines input
inner join lots_of_points blade on st_intersects(input.geom, blade.ix);
--then cleaning the messy table
delete from messy_lines_segments a
where exists
(
select 1 from messy_lines_segments b where a.id != b.id and st_coveredby(b.geom,a.geom)
);
এই উপায় / পদ্ধতির উত্স: ছেদ পয়েন্টগুলিতে লাইনগুলি বিভক্ত করুন
3
আমি এই ফাংশনটিও পেয়েছি: https://github.com/Remi-C/PPPP_utilities/blob/master/postgis/rc_Split_Line_By_PPoint.sql
এতে ভাল জিনিস রয়েছে যে এটি কোনও অগোছালো ছাড়বে না যা এর পরে আমার এটি পরিষ্কার করা দরকার। তবে আপনার উভয় পক্ষের (লাইনের টেবিল এবং পয়েন্ট টেবিল) স্টেমেউনিয়ন প্রয়োজন
এটি এক ধরণের:
create table osm.calles_cortadas_03segmentos_sanluis as (
SELECT result.geom
FROM
osm.calles_cortadas_01uniones_sanluis AS line,
osm.calles_cortadas_00intersecciones_sanluis AS point,
rc_split_line_by_points(
input_line:=line.geom
,input_points:=point.ix
,tolerance:=4
) AS result
);
তবে ফলাফল পাওয়ার জন্য এটি অত্যন্ত দীর্ঘ সময় hours এবং আমি আরও দীর্ঘ সারণী (10 কে লাইন, 14 কে পয়েন্ট) দিয়ে চেষ্টা করেছি এবং আমি কেবল সমস্যাগুলি স্মরণ করি।
আমিও খারাপ ফলাফলের সাথে এসরির আর্কজিআইএস চেষ্টা করেছি ...
সুতরাং, পোস্টজিআইএস জিওম ফাংশনগুলি দিয়ে এটি করার সর্বোত্তম উপায় কী?
মানে টপোলজিতে পা রেখেই নয়।
বা আপনার সেরা সুপারিশ কি?