GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.3. دوال إنشاء الأشكال الهندسية
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_HexagonGrid

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

الاسم

ST_HexagonGrid — تُعيد مجموعة من السداسيات وفهارس الخلايا التي تغطي حدود الشكل الهندسي المُدخل تغطية كاملة.

المختصر

setof record ST_HexagonGrid(float8 size, geometry bounds);

الوصف

تنطلق من مفهوم تبليط المستوى بالسداسيات. (ليس تبليطًا سداسيًا للكرة الأرضية، فهذا ليس مخطط التبليط H3.) لكل نظام مرجعي مكاني مستوٍ معيّن وطول حافة معيّن، وبدءًا من أصل النظام المرجعي، يوجد تبليط سداسي وحيد للمستوى، Tiling(SRS, Size). تجيب هذه الدالة عن السؤال: ما السداسيات في تبليط Tiling(SRS, Size) معيّن التي تتداخل مع حدود معيّنة.

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

تؤدي مضاعفة طول حافة السداسي أو زيادته ثلاثة أضعاف إلى توليد تبليط أب جديد يتوافق مع التبليط الأصلي. لكن للأسف لا يمكن توليد تبليطات سداسية أب تتسع لها البلاطات الأبناء تمامًا.

متاحة منذ: 3.1.0

مثال: عدّ النقاط داخل السداسيات

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

SELECT COUNT(*), hexes.geom
FROM
    ST_HexagonGrid(
        10000,
        ST_SetSRID(ST_EstimatedExtent('pointtable', 'geom'), 3857)
    ) AS hexes
    INNER JOIN
    pointtable AS pts
    ON ST_Intersects(pts.geom, hexes.geom)
GROUP BY hexes.geom;

مثال: توليد تغطية سداسية للمضلعات

إذا ولّدنا مجموعة من السداسيات لحدود كل مضلع واستبعدنا تلك التي لا تتقاطع مع سداسياتها، نحصل على تبليط لكل مضلع.

ينتج عن تبليط الولايات تغطية سداسية لكل ولاية، مع تداخل عدة سداسيات عند الحدود بين الولايات.

[ملاحظة]

الكلمة المفتاحية LATERAL ضمنية في الدوال التي تُعيد مجموعات عند الإشارة إلى جدول سابق في قائمة FROM. لذا فإن CROSS JOIN LATERAL وCROSS JOIN أو الفاصلة البسيطة , بُنى متكافئة في هذا المثال.

SELECT admin1.gid, hex.geom
FROM
    admin1
    CROSS JOIN
    ST_HexagonGrid(100000, admin1.geom) AS hex
WHERE
    adm0_a3 = 'USA'
    AND
    ST_Intersects(admin1.geom, hex.geom)