أكثر

مسافة نقطة PostGIS من المضلع ليست 0 عندما تكون على الحافة

مسافة نقطة PostGIS من المضلع ليست 0 عندما تكون على الحافة


لدي مشكلة بسيطة جدا:

حدد * من ST_Distance (ST_GeographyFromText ('POLYGON ((70 -40،70 -39،71 -39،71 -40،70 -40))') ، ST_GeographyFromText ('POINT (70.48 -39)') ، خطأ)

تُعيد 118.45656881 ألا يجب أن تكون 0؟ أليست النقطة على حافة المضلع؟ لماذا يفعل

حدد * من ST_Distance (ST_GeographyFromText ('POLYGON ((70 -40،70 -39،71 -39،71 -40،70 -40))') ، ST_GeographyFromText ('POINT (70.48 -40)') ، خطأ)

العودة 0؟

حدد * من ST_Distance (ST_GeographyFromText ('POINT (70 -39.5)') ، ST_GeographyFromText ('POINT (70 -39)')) ؛ حدد * من ST_Distance (ST_GeographyFromText ('POINT (70 -39.5)') ، ST_GeographyFromText ('POINT (70 -40)')) ؛

لماذا يُرجع هذا رقمين مختلفين (على الرغم من أنه قليلاً فقط)؟


يشرح الفيديو ذلك جيدًا. إذا كنت تأخذ الحافة المعنية وتقسيمها

حدد st_asewkt (st_segmentize (geog ، 10000)) من ST_GeographyFromText ('LINESTRING (70 -39،71 -39)') geog

سيكون لديك ما يلي:

النقطة هي النقطة التي تسأل عنها. يمثل الخط الحافة. الشمال صعود.

(يتم قياس المسافة يدويًا ، بدون التقاط)

أما بالنسبة للاستعلام الثاني الذي يُرجع 0؟ يحدث ذلك لأن نقطة hte هي في الواقع داخل المضلع الخاص بك.

ولكي نكون أكثر وضوحًا ، فإن التقاطع بين الشكلين فارغين لأنهما ببساطة لا يتداخلان.

حدد st_asewkt (st_intersection (ST_GeographyFromText ('POLYGON ((70 -40،70 -39،71 -39،71 -40،70 -40))') ، ST_GeographyFromText ('POINT (70.48 -39)')) st_asewkt - ------------- SRID = 4326 ؛ مجموعة هندسية فارغة

شاهد الفيديو: De blusrobot van Brandweer Haaglanden