পোস্টজিআইএস-এ লাইনগুলি থেকে বহুভুজ তৈরি করুন


13

আমি একটি রেখা থেকে বহুভুজগুলিতে বহুভুজকে ভাগ করার চেষ্টা করছি তবে আমি মনে করি যে আমি st_split ফাংশনটি ব্যবহার করতে পারি না। আমার যা দরকার তা হ'ল লাইনস্ট্রিং গ্রিড ব্যবহার করে একটি বৃহত্তর অভ্যন্তরে ছোট ছোট বহুভুজ তৈরি করা।

আমি কিছু উপায়ে চেষ্টা করেছি, তবে আমি ফলাফল পেতে পারি না। আমি যা চেষ্টা করেছি:

St_split () ব্যবহার করে একটি লাইনস্ট্রিং থেকে একটি বহুভুজ ভাগ করুন

একটি সীমানা বহুভুজ থেকে।

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

এবং লাইনস্ট্রিং টেবিল:

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

আমার নিম্নলিখিত বহুভুজগুলির প্রয়োজন:

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

সমস্যা : আমি বহু লাইন থেকে বহুভুজকে বিভক্ত করতে পারি না, বহুগুণ থেকে বহুভুজও পারি না।

আমি যে অন্য পদ্ধতিটির চেষ্টা করছি তা হ'ল st_polygonize () এর সাথে লাইনগুলি থেকে বহুভুজ তৈরি করা () আমি যে এসকিউএল চেষ্টা করছিলাম তা হ'ল:

SELECT 
   g.path[1] as gid, 
   g.geom::geometry(polygon, 22033) as geom 
FROM
   (SELECT 
     (ST_Dump(ST_Polygonize(geom))).* 
   FROM linestable
) as g;

থেকে নিষ্কাশিত পোস্টগ্রি এবং PostGIS ব্যবহার রেখাংশ থেকে বহুভুজ তৈরি করা হচ্ছে

সমস্যা : আমি কেবল একটি বহুভুজ (সীমানা) পেতে পারি।

কেউ কি আমাকে বলতে পারেন যে লাইনস্ট্রিং থেকে বহুভুজগুলি পাওয়ার সবচেয়ে ভাল উপায় বা আমি যদি কিছু মিস করছি?

দ্রষ্টব্য: টেবিলগুলি একই এসআরডিডে রয়েছে এবং জ্যামিতিগুলি গ্রিডে ছড়িয়ে পড়ে। কিউজিআইএসে আমি বহুভুক্ত প্রক্রিয়াটি লাইনগুলি থেকে বহুভুজনে পুরোপুরি চালাতে পারি।

জন এর চাহিদা হিসাবে, এখানে লাইনস্ট্রিং টেবিল। https://drive.google.com/file/d/0B603y_m735jfS014S0EyVnpMUEU/view?usp=sharing


1
আপনি কোথাও লাইনস্ট্রিং জ্যামিতি পোস্ট করতে পারেন? ST_Dump এর সাথে ST_Polygonize কাজ করা উচিত।
জন পাওয়েল

অবশ্যই। আমি টেবিলের লিঙ্কটি সহ পোস্টটি সম্পাদনা করেছি।
পাবলো পার্দো

@ জনপোয়েল্লাকা বারিয়া আপনি এটি দেখতে পারেন। এই প্রশ্ন দুর্দান্ত। তার নমুনা সেটে এসT_ পলিগোনাইজ একক বহুভুজ প্রদান করে। আমাদের মূলত তার খোলা লাইনরেংগগুলি সম্পর্কে বিশৃঙ্খলাগুলি পচন করা এবং আয়তক্ষেত্র তৈরি করতে পারে এমন সবগুলি খুঁজে বের করা উচিত?
ইভান ক্যারল

1
@EvanCarroll। অবশ্যই। আমি ক্রেজিলি এএম এটিএম, তাই সম্ভবত কিছু দিনের জন্য নয়।
জন পাওয়েল

1
@ppardoz। এসিপোর কি এসো তে আয়ুতে। আমি লক্ষ্য করেছি যে আপনার টেবিল ডিফগুলি সমস্ত স্প্যানিশ ভাষায় ছিল :-)
জন পাওয়েল

উত্তর:


4

আমি ব্যবহার করে এই কাজ করতে দেখে ST_Node প্রথম, সাথে ST_Collect , একটি মধ্যে noded linestrings বাইরের একটি সেটের দিকে লাইন রূপান্তর করতে MultiLinestring

যেমন এটি ST_ নোডের জন্য ডক্সে বলা হয়েছে :

সমস্ত ইনপুটগুলি সংরক্ষণের সময় ন্যূনতম সংখ্যাটি ব্যবহার করে লিনস্ট্রিংয়ের একটি সেট সম্পূর্ণ নোড করুন।

এর অর্থ কী, এটি হল যে সমস্ত লাইনস্ট্রিংগুলি সমস্ত সম্ভাব্য সংমিশ্রণে সংযুক্ত করা হয়, যাতে বহুভুজটির বহির্মুখী রিংয়ের সমতুল্য অংশটি তৈরি করা যায়। যদিও আপনি যদি লাইনস্ট্রিংসের একটি সেটকে এসপলিটোনাইজ করার চেষ্টা করেন তবে এর নিজস্ব কোনওটিই বহুভুজকে বর্ণনা করে না, আপনি কেবল লাইনস্ট্রিংস ফিরে পাবেন। সুতরাং, এটি কাজ করে:

WITH multi(geom) AS (
  SELECT ST_Node(ST_Collect(geom))
  FROM leyenda_digitalizar00
)
SELECT ST_AsText( (ST_Dump(ST_Polygonize(geom))).geom )
FROM multi;

আপনি যদি কেবলমাত্র এর প্রথম অংশটি চালায় তবে, সিটিই মাল্টি, আউটপুটটি এমন দেখাচ্ছে:

মাল্টলাইনেস্ট্রিং ((204.5 69.90000000004,204.5 69.9000000000004)), (204.5 68.9,205.4 68.9), (204.5 68.9,204.5 69,204.5 69.1,204.5 69.2,204.5 69.32020.5 69.4,204.5 69.5,20,4 69.520 204.5 69.90000000000044), (209.5 68.9,209.5 68.8,209.5 68.7,209.5 68.6,209.5 68.5,209.5 68.4,209.5 68.3,209.5 68.2,209.5 68.1,209.5 68,209.5 67.9,209.5 67.8,209.5 67.7,209.5 67.5 , 209.5 .......

এখন, আপনি যখন এখন এই মাল্টিলাইনস্ট্রিংকে এসT_ পলিগোনাইজে ফিড করেন এটি প্রত্যাশার মতো কাজ করে, যেমন,

পলিগন ((205.4 68.9,204.5 68.9,204.5 69,204.5 69.1,204.5 69.2,204.5 69.3,204.5 69.4,204.5 69.5,204.5 69.6,204.5 69.7,204.5 69.8,204.5 69.9,204.5 69.90000000004,205.4 69.92000)

পলইগন ((204.5 69.90000000004,204.5 70,204.5 70.1,204.5 70.2,204.5 70.3,204.5 70.4,206.8 70.4,209.5 70.4,209.5 70.3,209.5 70.2,209.5 70.1,209.5 70,209.5 69.9004))

পলিগন ((206.8 70.4,204.5 70.4,204.5 70.5,204.5 70.6,204.5 70.7,204.5 70.8,204.5 70.9,204.5 71,204.5 71.1,204.5 71.2,204.5 71.3,204.5 71.4,206.8 71.4,206.8 70.4))

স্পষ্টতই, ST_AsText কেবল চিত্রের জন্য, এবং আপনি যদি প্যাথ আইডিও চান তবে আপনাকে টুইট করতে হবে।

মূল গ্রহণযোগ্যতাটি হ'ল এসT_ পলিগোনাইজ লাইনস্ট্রিংগুলি প্রত্যাশা করে যা ইতিমধ্যে একটি বহুভুজের রূপরেখা বর্ণনা করে যা এসT_ নোড (এস 07 কলেক্ট (....) উপরেরটি করে।


এটি সত্যিই দুর্দান্ত, আমি নিশ্চিত করতে পারি যে এই সমাধানটি কাজ করে! উল্টানো দিকে, কেন আমি ভাবছি ST_Polygonize()বলেছেন লাইন স্ট্রিং লাগে, বা কি ব্যবহারের ক্ষেত্রে কলিং ছাড়া হয় ST_Node()প্রথম
ইভান ক্যারল

1
@EvanCarroll। আমি মনে করি যে উত্তরটি হ'ল এসT_ পলিগোনাইজ লিনেস্ট্রিংগুলি গ্রহণ করে যা ইতিমধ্যে একটি বহুভুজকে উপস্থাপন করে এমন একটি সেটে রয়েছে, যখন এই প্রশ্নের লাইনস্ট্রিংগুলি একাধিক সম্ভাব্য বহুভুজ তৈরি করে। আমার বোধগম্যতা এটি এস এস নোড যা করে। আমি আরও তদন্ত করে উত্তরটি আপডেট করার চেষ্টা করব।
জন পাওয়েল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.