الاسم
ST_DistanceSphere — تُعيد أقل مسافة بالمتر بين شكلين بإحداثيات خط الطول/خط العرض باستخدام نموذج كروي للأرض.
المختصر
float ST_DistanceSphere(geometry geomlonlatA, geometry geomlonlatB, float8 radius=6371008);
الوصف
تُعيد أقل مسافة بالمتر بين نقطتين بإحداثيات خط الطول/خط العرض. تستخدم أرضًا كروية بنصف قطر مشتق من الشكل الإهليلجي الذي يحدده SRID. وهي أسرع من ST_DistanceSpheroid لكنها أقل دقة. في إصدارات PostGIS السابقة لـ 1.5 كانت مطبّقة للنقاط فقط.
متاحة منذ: 1.5 - أُضيف دعم أنواع أشكال أخرى غير النقاط. وكانت الإصدارات السابقة تعمل مع النقاط فقط.
تغيّرت في: 2.2.0 في الإصدارات السابقة كانت تُسمّى ST_Distance_Sphere
أمثلة
SELECT round(CAST(ST_DistanceSphere(ST_Centroid(geom), ST_GeomFromText('POINT(-118 38)',4326)) As numeric),2) As dist_meters,
round(CAST(ST_Distance(ST_Transform(ST_Centroid(geom),32611),
ST_Transform(ST_GeomFromText('POINT(-118 38)', 4326),32611)) As numeric),2) As dist_utm11_meters,
round(CAST(ST_Distance(ST_Centroid(geom), ST_GeomFromText('POINT(-118 38)', 4326)) As numeric),5) As dist_degrees,
round(CAST(ST_Distance(ST_Transform(geom,32611),
ST_Transform(ST_GeomFromText('POINT(-118 38)', 4326),32611)) As numeric),2) As min_dist_line_point_meters
FROM
(SELECT ST_GeomFromText('LINESTRING(-118.584 38.374,-118.583 38.5)', 4326) As geom) as foo;
dist_meters | dist_utm11_meters | dist_degrees | min_dist_line_point_meters
-------------+-------------------+--------------+----------------------------
70424.47 | 70438.00 | 0.72900 | 65871.18