GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.12. دوال القياس
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_FrechetDistance

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_FrechetDistance — تُعيد مسافة فريشيه (Fréchet) بين شكلين.

المختصر

float ST_FrechetDistance(geometry g1, geometry g2, float densifyFrac = -1);

الوصف

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

عند تحديد densifyFrac الاختياري، تُجري هذه الدالة تكثيفًا للمقاطع قبل حساب مسافة فريشيه المنفصلة. يحدد الوسيط densifyFrac النسبة التي يُكثَّف بها كل مقطع. إذ يُقسَم كل مقطع إلى عدد من المقاطع الفرعية المتساوية الطول، تكون نسبة طول كل منها إلى الطول الكلي أقرب ما يمكن إلى النسبة المعطاة.

الوحدات هي وحدات النظام المرجعي المكاني للشكلين.

[ملاحظة]

يدعم التطبيق الحالي الرؤوس فقط بوصفها المواقع المنفصلة. ويمكن توسيعه للسماح باستخدام كثافة عشوائية من النقاط.

[ملاحظة]

كلما صغّرنا قيمة densifyFrac، حصلنا على مسافة فريشيه أدق. لكن زمن الحساب واستهلاك الذاكرة يزدادان بمربع عدد المقاطع الفرعية.

تُنفَّذ بواسطة وحدة GEOS.

متاحة منذ: 2.4.0 - تتطلب GEOS >= 3.7.0

أمثلة

postgres=# SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry);
 st_frechetdistance
--------------------
   70.7106781186548
(1 row)
                        
SELECT st_frechetdistance('LINESTRING (0 0, 100 0)'::geometry, 'LINESTRING (0 0, 50 50, 100 0)'::geometry, 0.5);
 st_frechetdistance
--------------------
                 50
(1 row)
                        

انظر أيضًا

ST_HausdorffDistance