অবৈধ জ্যামিতি চিড়িয়াখানা


9

অনেক সময় এবং বেশিরভাগ সময় আমি অবৈধ জ্যামিতির ফলে উদ্ভট বাগগুলির সাথে লড়াই করে ঘন্টা ব্যয় করেছি । লক্ষণগুলি হ'ল:

  • ডাটাবেস মন্দা
  • ভুল \ নাল কোয়েরি ফলাফল
  • ত্রুটি এবং সতর্কতা দিয়ে ওভারলোড হওয়া ফাইলগুলি লগ করুন
  • জ্যামিতিক অপারেটরগুলির সাথে বেমানান ফলাফল (উদাহরণস্বরূপ ছেদ)

আমি এখানে প্রত্যেককে তাদের ডেটা স্যানিটাইজ করতে সহায়তা করার জন্য অবৈধ জ্যামিতির প্রকারগুলি শ্রেণীবদ্ধ করতে চাই।

দয়া করে আপনার প্রিয় ধরণের অবৈধ জ্যামিতির (উত্তর প্রতি এক প্রকার) দিয়ে উত্তর দিন। স্ক্রিনশট, বিবরণ এবং সমাধানগুলি স্বাগত - তবে আপনার উত্তরটি সংক্ষিপ্ত রাখার চেষ্টা করুন।

উত্তর:


6

অবৈধ জ্যামিতির একটি 8 বছরের পুরানো সোনার খনি পোস্টজিআইএস ইজডিয়েল রিগ্রাস পরীক্ষার দ্বারা সরবরাহ করা হয়েছে । এর মধ্যে অনেকগুলি রিগ্রেশন পরীক্ষাগুলি জিইওএস-এ স্থানান্তরিত হয়েছে , উদাহরণস্বরূপ এখানে এবং এখানে , পাশাপাশি পরীক্ষার গাছের অন্যান্য পকেট । (দুঃখিত, অনেকগুলি হাইলাইট করতে। কয়েক চয়ন করুন এবং JTS টেস্ট রচয়িতা মধ্যে উইকেটরক্ষক পেস্ট তাদের ঠাহর করা ।)


3

শূন্য দৈর্ঘ্যের বিভাগগুলি

উদাহরণ:

SELECT geomFromEWKT('LINESTRING(1 1, 1 1)');

                                    geomfromewkt                                    
------------------------------------------------------------------------------------
 0102000000020000000000000000000840000000000000104000000000000008400000000000001040

সমস্যাগুলি: দৈর্ঘ্য অনুপাত (শূন্য দ্বারা বিভাগ) গণনা করার সময় বা আজিমুথস এবং ট্রিগনোমেট্রিক ফাংশন গণনা করার সময় শূন্য দৈর্ঘ্যের বিভাগটি সংরক্ষণ করার ফলে বাগগুলি হতে পারে।

সনাক্তকরণ: পোস্টজিআইএস-এ শূন্য দৈর্ঘ্যের বিভাগগুলি ব্যবহার করে সনাক্ত করা যায় isValid()

সমাধান: শূন্য দৈর্ঘ্যের বিভাগগুলিকে পয়েন্ট হিসাবে রাখার চেষ্টা করুন।


3

স্ব-আন্তঃখণ্ডিত বহুভুজ

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

উদাহরণ:

SELECT isValid(geomFromEWKT('POLYGON((0 0, 1 1, 1 0, 0 1, 0 0))'));
NOTICE:  Self-intersection at or near point 0.5 0.5
 isvalid 
---------
 f
(1 row)

সমস্যা: ভুল গণনা, উদাহরণস্বরূপ area():

SELECT area(geomFromEWKT('POLYGON((0 0, 1 1, 1 0, 0 1, 0 0))'));
 area 
------
    0
(1 row)

এটি কলিং ফাংশন সহ শূন্য বিভাগের বাগগুলি সৃষ্টি করতে পারে।

সনাক্তকরণ: পোস্টজিআইএস-এ, স্ব ছেদ বিভাগগুলি ব্যবহার করে সনাক্ত করা যায় isValid()

সমাধান: রূপান্তর MULTIPOLYGON(মন্তব্য দেখুন)।


একই আকৃতি বৈধ সমতূল্য:MULTIPOLYGON(((0 0, 0 1, 0.5 0.5, 0 0)),((1 1, 1 0, 0.5 0.5, 1 1)))
মাইক টি

@ মাইক টিউজ: সঠিক, মাল্টিপলিজাগনে রূপান্তর করা ভাল সমাধান।
আদম মাতান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.