বহুভুজের সীমানার পার্থক্যটির সীমানার মধ্যে প্রতিসারণের পার্থক্যের পার্থক্যটি মূল্যায়ন করে বা এটি প্রতীকীভাবে প্রকাশ করে আপনি এটি করতে পারেন:
Difference(a, SymDifference(a, b))
জ্যামিতিগুলি a এবং b নিন , পরবর্তী দুটি লাইন এবং চিত্রের উপর মাল্টিলাইনস্ট্রিংস হিসাবে প্রকাশ করুন:
MULTILINESTRING((0 300,50 300,50 250,0 250,0 300),(50 300,100 300,100 250,50 250,50 300),(0 250,50 250,50 200,0 200,0 250),(50 250,100 250,100 200,50 200,50 250),(100 300,200 300,200 200,100 200,100 300),(0 200,100 200,100 100,0 100,0 200),(100 200,150 200,150 150,100 150,100 200),(150 200,200 200,200 150,150 150,150 200),(100 150,150 150,150 100,100 100,100 150),(150 150,200 150,200 100,150 100,150 150))
MULTILINESTRING((0 300,100 300,100 200,0 200,0 300),(100 300,150 300,150 250,100 250,100 300),(150 300,200 300,200 250,150 250,150 300),(100 250,150 250,150 200,100 200,100 250),(150 250,200 250,200 200,150 200,150 250),(0 200,50 200,50 150,0 150,0 200),(50 200,100 200,100 150,50 150,50 200),(0 150,50 150,50 100,0 100,0 150),(50 150,100 150,100 100,50 100,50 150),(100 200,150 200,150 100,100 100,100 200),(150 200,200 200,200 100,150 100,150 200))
প্রতিসম পার্থক্য, যেখানে a এবং b এর অংশগুলি ছেদ করে না, তা হ'ল:
MULTILINESTRING((50 300,50 250),(50 250,0 250),(100 250,50 250),(50 250,50 200),(150 150,100 150),(200 150,150 150),(150 300,150 250),(150 250,100 250),(200 250,150 250),(150 250,150 200),(50 200,50 150),(50 150,0 150),(100 150,50 150),(50 150,50 100))
এবং অবশেষে, ক বা খ এবং প্রতিসম পার্থক্যের মধ্যে পার্থক্যটি মূল্যায়ন করুন :
MULTILINESTRING((0 300,50 300),(0 250,0 300),(50 300,100 300),(100 300,100 250),(50 200,0 200),(0 200,0 250),(100 250,100 200),(100 200,50 200),(100 300,150 300),(150 300,200 300,200 250),(200 250,200 200),(200 200,150 200),(150 200,100 200),(100 200,100 150),(100 150,100 100),(100 100,50 100),(50 100,0 100,0 150),(0 150,0 200),(150 200,150 150),(200 200,200 150),(150 150,150 100),(150 100,100 100),(200 150,200 100,150 100))
আপনি জিইওএস (শেপলি, পোস্টজিআইএস ইত্যাদি), জেটিএস এবং অন্যান্যগুলিতে এই যুক্তিটি প্রয়োগ করতে পারেন। নোট করুন যে যদি ইনপুট জ্যামিতিগুলি বহুভুজ হয় তবে তাদের সীমানা বের করা দরকার, এবং ফলাফলটি বহুভুজ হতে পারে। উদাহরণস্বরূপ, পোস্টজিআইএসের সাথে দেখানো হয়েছে, দুটি মাল্টিপলিগন নিন এবং একটি মাল্টিপলিগন ফলাফল পান:
SELECT
ST_AsText(ST_CollectionHomogenize(ST_Polygonize(
ST_Difference(ST_Boundary(A), ST_SymDifference(ST_Boundary(A), ST_Boundary(B)))
))) AS result
FROM (
SELECT 'MULTIPOLYGON(((0 300,50 300,50 250,0 250,0 300)),((50 300,100 300,100 250,50 250,50 300)),((0 250,50 250,50 200,0 200,0 250)),((50 250,100 250,100 200,50 200,50 250)),((100 300,200 300,200 200,100 200,100 300)),((0 200,100 200,100 100,0 100,0 200)),((100 200,150 200,150 150,100 150,100 200)),((150 200,200 200,200 150,150 150,150 200)),((100 150,150 150,150 100,100 100,100 150)),((150 150,200 150,200 100,150 100,150 150)))'::geometry AS a,
'MULTIPOLYGON(((0 300,100 300,100 200,0 200,0 300)),((100 300,150 300,150 250,100 250,100 300)),((150 300,200 300,200 250,150 250,150 300)),((100 250,150 250,150 200,100 200,100 250)),((150 250,200 250,200 200,150 200,150 250)),((0 200,50 200,50 150,0 150,0 200)),((50 200,100 200,100 150,50 150,50 200)),((0 150,50 150,50 100,0 100,0 150)),((50 150,100 150,100 100,50 100,50 150)),((100 200,150 200,150 100,100 100,100 200)),((150 200,200 200,200 100,150 100,150 200)))'::geometry AS b
) AS f;
result
--------------------------------------------------------------------------------
MULTIPOLYGON(((0 300,50 300,100 300,100 250,100 200,50 200,0 200,0 250,0 300)),((100 250,100 300,150 300,200 300,200 250,200 200,150 200,100 200,100 250)),((0 200,50 200,100 200,100 150,100 100,50 100,0 100,0 150,0 200)),((150 200,200 200,200 150,200 100,150 100,150 150,150 200)),((100 200,150 200,150 150,150 100,100 100,100 150,100 200)))
নোট যে আমি আছে না ব্যাপকভাবে এই পদ্ধতি পরীক্ষিত, তাই একটি আদ্যস্থল হিসাবে ধারনা এই নিতে।