الاسم
<#> — تُعيد المسافة ثنائية الأبعاد بين المستطيلين المحيطين لـ A وB.
المختصر
double precision <#>( geometry A , geometry B );
الوصف
يُعيد العامل <#> المسافة بين مستطيلين محيطين بدقة الفاصلة العائمة، وربما يقرؤهما من فهرس مكاني (يتطلب PostgreSQL 9.1+). وهو مفيد لترتيب أقرب الجيران حسب المسافة التقريبية.
|
|
|
يستفيد هذا العامل من أي فهارس قد تكون متاحة على الأشكال الهندسية. ويختلف عن العوامل الأخرى التي تستخدم الفهارس المكانية في أن الفهرس المكاني لا يُستخدم إلا عندما يكون العامل في عبارة ORDER BY. |
|
|
|
لا يعمل الفهرس إلا إذا كان أحد الشكلين الهندسيين ثابتًا، مثلًا ORDER BY (ST_GeomFromText('POINT(1 2)') <#> geom) بدلًا من g1.geom <#>. |
متاحة منذ: 2.0.0 -- KNN متاح فقط في PostgreSQL 9.1+
أمثلة
SELECT *
FROM (
SELECT b.tlid, b.mtfcc,
b.geom <#
> ST_GeomFromText('LINESTRING(746149 2948672,745954 2948576,
745787 2948499,745740 2948468,745712 2948438,
745690 2948384,745677 2948319)',2249) As b_dist,
ST_Distance(b.geom, ST_GeomFromText('LINESTRING(746149 2948672,745954 2948576,
745787 2948499,745740 2948468,745712 2948438,
745690 2948384,745677 2948319)',2249)) As act_dist
FROM bos_roads As b
ORDER BY b_dist, b.tlid
LIMIT 100) As foo
ORDER BY act_dist, tlid LIMIT 10;
tlid | mtfcc | b_dist | act_dist
-----------+-------+------------------+------------------
85732027 | S1400 | 0 | 0
85732029 | S1400 | 0 | 0
85732031 | S1400 | 0 | 0
85734335 | S1400 | 0 | 0
85736037 | S1400 | 0 | 0
624683742 | S1400 | 0 | 128.528874268666
85719343 | S1400 | 260.839270432962 | 260.839270432962
85741826 | S1400 | 164.759294123275 | 260.839270432962
85732032 | S1400 | 277.75 | 311.830282365264
85735592 | S1400 | 222.25 | 311.830282365264
(10 rows)