কোনও লাস্টারিং নিজেকে ছেদ করে কিনা তা নির্ধারণের জন্য কি কোনও পোস্টজিআইএস ফাংশন রয়েছে?


16

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

সুতরাং একটি লাস্টারিং স্বয়ং-ছেদ করা হয় কিনা তা যাচাই করার জন্য কি কোনও পোস্টজিআইএস ফাংশন রয়েছে? বহুভুজ জটিল যেটি আমি ধরে নিই তা জটিল কিনা তা সন্ধান করার মতোই হওয়া উচিত


এখানে একটি দ্বিতীয় উত্তর ছিল যা আমাকে পোস্টজিআইএস বুদ্ধিমান হিসাবে পুরোপুরি সহায়তা করে নি, তবে এতে সামগ্রিকভাবে সমস্যা সম্পর্কিত কিছু সহায়ক তথ্যের লিঙ্ক রয়েছে। মনে হচ্ছে এটি মুছে ফেলা হয়েছে। কারও কি সেই লিঙ্ক আছে?
জেফ

উত্তর:


14

আপনি এর সাথে স্ব-ছেদকারী লাইনস্ট্রিংয়ের জন্য পরীক্ষা করতে পারেন ST_IsSimple(geom):

SELECT ST_IsSimple('LINESTRING (50 50, 150 150, 50 150, 150 50)');
 st_issimple
-------------
 f
(1 row)

পয়েন্ট-এ স্ব-মোড় (100.0 100.0)

চিত্রের উপরে এবং নীচে ক্যাপশনগুলি জেটিএস টেস্টবিল্ডার থেকে এসেছে ("সরল?" ক্লিক করুন)

স্ব-ছেদ এ POINT ( 100.0 100.0 )

এটি ST_UnaryUnion(geom)(পোস্টজিআইএস ২.০ থেকে) সংশোধন করা যেতে পারে , যা একটি বৈধ / সাধারণ তিনটি টুকরা মাল্টিলিনেস্ট্রিং দেয়:

MULTILINESTRING((50 50, 100 100), 
  (100 100, 150 150, 50 150, 100 100), 
  (100 100, 150 50))

এটি নিখুঁত! আমি জানতাম উত্তরটি এত সহজ হতে হবে। আপনি বলেছেন যে আপনি ছবিটি তৈরি করতে জেটিএস টেস্টবিল্ডার ব্যবহার করেছেন। ছেদটির পয়েন্ট / পয়েন্ট পেতে কি কোনও উপায় আপনি পোস্টগিসে জানেন?
জেফ

এটি চ্যালেঞ্জিং বিশদ। জেটিএস টেস্টবিল্ডারের চেকনোডিং রয়েছে, তবে এটি কেবলমাত্র বহুসংখ্যকের চেয়ে কল প্রতি একটি নোড স্থানাঙ্ক খুঁজে পায়। পোস্টজিআইএস দিয়ে নোডিং পয়েন্ট (গুলি) কীভাবে পাবেন তা আমি নিশ্চিত নই।
মাইক টি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.