الاسم
ST_ClusterDBSCAN — دالة نافذة تُعيد معرّف عنقود لكل شكل هندسي مُدخل باستخدام خوارزمية DBSCAN.
المختصر
integer ST_ClusterDBSCAN(geometry winset geom, float8 eps, integer minpoints);
الوصف
دالة نافذة تُعيد رقم عنقود لكل شكل هندسي مُدخل، باستخدام خوارزمية العنقدة المكانية القائمة على الكثافة للتطبيقات مع الضوضاء (DBSCAN) ثنائية الأبعاد. وعلى خلاف ST_ClusterKMeans، لا تتطلب تحديد عدد العناقيد، بل تستخدم معاملَي المسافة المطلوبة (eps) والكثافة (minpoints) لتحديد كل عنقود.
يُضاف الشكل الهندسي المُدخل إلى عنقود إذا كان إما:
لاحظ أن الأشكال الهندسية الحدّية قد تقع ضمن مسافة eps من أشكال هندسية جوهرية في أكثر من عنقود. وأي تعيين منها سيكون صحيحًا، لذا سيُعيَّن الشكل الهندسي الحدّي اعتباطيًا إلى أحد العناقيد المتاحة. وفي هذه الحالة يمكن أن يتولد عنقود صحيح بعدد أشكال هندسية أقل من minpoints. ولضمان تعيين حتمي للأشكال الهندسية الحدّية (بحيث تُنتج الاستدعاءات المتكررة لـ ST_ClusterDBSCAN نتائج متطابقة) استخدم عبارة ORDER BY في تعريف النافذة. وقد تختلف تعيينات العناقيد الملتبسة عن تطبيقات DBSCAN الأخرى.
|
|
|
الأشكال الهندسية التي لا تستوفي معايير الانضمام إلى أي عنقود يُعيَّن لها رقم عنقود NULL. |
متاحة منذ: 2.3.0
تدعم هذه الدالة الأقواس الدائرية (Circular Strings) والمنحنيات.
أمثلة
عنقدة المضلعات الواقعة ضمن 50 مترًا من بعضها، مع اشتراط مضلعين على الأقل في كل عنقود.
عناقيد ضمن 50 مترًا بعنصرين على الأقل في كل عنقود. العناصر المنفردة قيمة cid لها NULL
SELECT name, ST_ClusterDBSCAN(geom, eps =
> 50, minpoints =
> 2) over () AS cid
FROM boston_polys
WHERE name
> '' AND building
> ''
AND ST_DWithin(geom,
ST_Transform(
ST_GeomFromText('POINT(-71.04054 42.35141)', 4326), 26986),
500);
|
name | bucket
-------------------------------------+--------
Manulife Tower | 0
Park Lane Seaport I | 0
Park Lane Seaport II | 0
Renaissance Boston Waterfront Hotel | 0
Seaport Boston Hotel | 0
Seaport Hotel & World Trade Center | 0
Waterside Place | 0
World Trade Center East | 0
100 Northern Avenue | 1
100 Pier 4 | 1
The Institute of Contemporary Art | 1
101 Seaport | 2
District Hall | 2
One Marina Park Drive | 2
Twenty Two Liberty | 2
Vertex | 2
Vertex | 2
Watermark Seaport | 2
Blue Hills Bank Pavilion | NULL
World Trade Center West | NULL
(20 rows)
|
مثال يوضح دمج قطع الأراضي ذات رقم العنقود نفسه في مجموعات أشكال هندسية.
SELECT cid, ST_Collect(geom) AS cluster_geom, array_agg(parcel_id) AS ids_in_cluster FROM (
SELECT parcel_id, ST_ClusterDBSCAN(geom, eps => 0.5, minpoints => 5) over () AS cid, geom
FROM parcels) sq
GROUP BY cid;