في JTS ، عندما أقوم بالهندسة.
سؤال
كنت أواجه مشاكل أثناء تقاطع اثنين من الأشكال الهندسية ، وربما الحصول على طوبولوجيا على الأرجح بسبب خطأ تقريب أثناء العملية ، ثم قرأت هذا الإصلاح وحاولت buffer(0)
على كل من هندسة الإدخال ، ولكن لا يزال بدون نجاح. ثم حاولت geo.buffer(1).buffer(-1)
وعملت.
هل ستكون هذه الأشكال الهندسية مكافئة للأصلية؟
المحلول
لا أعرف أي شيء عن JTS ، لكن لا يمكن أن يكون صحيحًا بشكل عام.
افترض أن لديك شكان:
XXX XXX X X XXX XXX XXX
من فهمي أ buffer(1)
على كلاهما سيؤدي إلى هذا:
XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX
حاليا buffer(-1)
لن تكون قادرة على إنتاج نتيجتين مختلفتين من هذين الشكلين.
بفعالية أ buffer()
العملية تفقد المعلومات ، لذلك لا يمكن التراجع عنها دون إعادة إضافة تلك المعلومات من مكان آخر.
نصائح أخرى
لا أعتقد أن هذه الأشكال الهندسية ستكون هي نفسها. بشكل افتراضي ، فإن السلوك المتخلف عن ميزة إضافة رؤوس إلى تكوينه الأصلي ، وليس هناك ما يضمن إزالة الرؤوس نفسها.
حاول القيام بمخزن مؤقت صغير جدًا ، A.Buffer (0.00001) ، على سبيل المثال (1/1000 مم ، إذا كانت إحداثيات في الأنظمة المترية).
في postgis يتم تصحيح بعض القضايا عن طريق القيام بذلك.