أكثر

تعيين التسامح في Postgis


هل هناك على أي حال لضبط التسامح في Postgis ، في Arcgis ، يكون التفاوت هو الحد الأدنى للمسافة التي يمكن أن تفصل بين نقطتين ، إذا كانت المسافة بينهما أصغر من التفاوت ، لذلك تعتبر النقاط متداخلة. أحتاج إلى ضبط هذه المعلمة لأنني أحصل على بعض النتائج الغريبة باستخدام وظائف مثلST_Intersects ، ST_equals ، ST_difference. في هذه الظروف أتحقق من النقاط المتقاطعة بواسطةST_Distance (p1، p2) <التسامحلكني أرغب في الحصول على حل عام أكثر قوة.

في حالة الاستخدام الخاصة بي ، أحتاج فقط إلى دقة من 1 سم إلى 1 مم ، ولكن على سبيل المثال ، لا تعطي ST_Intersects النتائج المتوقعة بسبب بعض الميكرونات (0.000001).

حدد ST_Intersects ('POINT (0.00000000000000001 0)' :: الهندسة ، 'LINESTRING (0 0 ، 0 2)' :: علم الهندسة) ؛

الإستراتيجية الأكثر قوة لتحديد التقاطع الهندسي هي استخدام ST_DWithin (g1، g2، dist). ولكن إذا كنت تستخدم أدوات تراكب هندسي مثل ST_Difference أو ST_Intersection ، فيجب أن تكون العقد "محاطة" ببعضها البعض ، لذا جرب ST_Snap (إدخال هندسي ، مرجع هندسي ، تحمل تعويم). هنا مثال على عدة تقنيات.

حدد ST_Intersects (a، b) AS intersects_without_snap، ST_AsText (ST_Snap (a، b، tol)) AS a_snapped_on_b، ST_Intersects (ST_Snap (a، b، tol)، b) AS intersects_with_a_snapped_on_b ) AS b_snapped_on_a، ST_Intersects (ST_Snap (b، a، tol)، b) AS intersects_with_b_snapped_on_a، ST_D داخل (a، b، tol)، ST_Distance (a، b) : الهندسة AS a، 'LINESTRING (0 0، 0 2)' :: geometry AS b، 0.001 AS tol) f؛ - [RECORD 1] ------------------ + ------------------------- intersects_without_snap | و a_snapped_on_b | POINT (0 0) تتقاطع مع_ a_snapped_on_b | ر b_snapped_on_a | LINESTRING (1e-017 0،0 2) intersects_with_b_snapped_on_a | ر st_dwithin | ر مسافة | ر

مرة أخرى ، تبسيط السؤال هو ST_DWithin. (تقوم ST_Snap أحيانًا بأشياء غير متوقعة ، في تجربتي)


شاهد الفيديو: وداعن 2019 مقطع جميل تسامح (شهر اكتوبر 2021).