S2 هو نظام فهرسة جغرافي تُمثَّل فيه جميع البيانات الجغرافية على سطح كرة (على غرار الكرة الأرضية).
في مكتبة S2، تُمثَّل النقاط على أنها فهرس S2، وهو رقم معيّن يرمّز داخليًا إلى نقطة على سطح كرة الوحدة، بدلًا من أزواج (خط العرض، خط الطول) التقليدية. للحصول على فهرس نقطة S2 لنقطة معيّنة محددة بالتنسيق (خط العرض، خط الطول)، استخدم الدالة geoToS2. ويمكنك أيضًا استخدام الدالة s2ToGeo للحصول على الإحداثيات الجغرافية المقابلة لـ فهرس نقطة S2 المحدد.
يعيد فهرس S2 للنقطة المقابلة للإحداثيات المقدَّمة (longitude, latitude).
البنية
الوسائط
القيم المُرجعة
مثال
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘
يعيد الإحداثيات الجغرافية (longitude, latitude) المطابقة لفهرس نقطة S2 المُعطى.
البنية
الوسائط
القيم المُعادة
مثال
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘
تعيد فهارس الجوار في S2 المقابلة إلى S2 المُعطى. كل خلية في نظام S2 هي شكل رباعي تحدّه أربعة خطوط جيوديسية، لذا لكل خلية 4 خلايا مجاورة.
الصيغة
الوسائط
القيمة المُعادة
- مصفوفة تتكوّن من 4 فهارس متجاورة:
array[s2index1, s2index3, s2index2, s2index4]. مصفوفة(UInt64).
مثال
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘
يحدِّد ما إذا كانت خليتا S2 المعطاتان تتقاطعان أم لا.
الصيغة
s2CellsIntersect(s2index1, s2index2)
المعاملات
siIndex1, s2index2 — فهرس S2. UInt64.
القيمة المعادة
1 — إذا كانت الخلايا تتقاطع. UInt8.
0 — إذا كانت الخلايا لا تتقاطع. UInt8.
مثال
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
┌─intersect─┐
│ 1 │
└───────────┘
يحدّد ما إذا كان الغطاء الكروي يحتوي على نقطة S2. يمثّل الغطاء الكروي جزءًا من الكرة يقطعه مستوى. وتُعرَّف بنقطة على الكرة ونصف قطر بالدرجات.
الصيغة
s2CapContains(center, degrees, point)
المعاملات
center — فهرس نقطة S2 الذي يمثّل الغطاء الكروي. UInt64.
degrees — نصف قطر الغطاء الكروي بالدرجات. Float64.
point — فهرس نقطة S2. UInt64.
القيمة المُعادة
1 — إذا كان الغطاء الكروي يحتوي على فهرس نقطة S2. UInt8.
0 — إذا كان الغطاء الكروي لا يحتوي على فهرس نقطة S2. UInt8.
مثال
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
┌─capContains─┐
│ 1 │
└─────────────┘
يحدّد أصغر غطاء كروي يحتوي على غطائي الإدخال المعطيين. يمثّل الغطاء الكروي جزءًا من الكرة اقتُطع بمستوى. ويُعرَّف بنقطة على الكرة ونصف قطر بالدرجات.
الصيغة
s2CapUnion(center1, radius1, center2, radius2)
المعاملات
center1, center2 — فهرسا نقطتَي S2 المقابلان للغطاءين الكرويين المُدخلين. UInt64.
radius1, radius2 — نصفا قطر الغطاءين الكرويين المُدخلين بالدرجات. Float64.
القيم المعادة
center — فهرس نقطة S2 المقابل لمركز أصغر غطاء كروي يحتوي على الغطاءين الكرويين المُدخلين. UInt64.
radius — نصف قطر أصغر غطاء كروي يحتوي على الغطاءين الكرويين المُدخلين. Float64.
مثال
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘
يزيد حجم المستطيل الحاوي ليشمل نقطة S2 المعطاة. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، وهو يمثّل مستطيلاً في فضاء خط العرض وخط الطول.
الصيغة
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
المعاملات
s2PointLow — فهرس نقطة S2 الأدنى المقابل للمستطيل. UInt64.
s2PointHigh — فهرس نقطة S2 الأعلى المقابل للمستطيل. UInt64.
s2Point — فهرس نقطة S2 المستهدف الذي يجب توسيع المستطيل الحدّي ليشمله. UInt64.
القيم المُعادة
s2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الموسَّع. UInt64.
s2PointHigh — معرّف خلية S2 الأعلى المقابل للمستطيل الموسَّع. UInt64.
مثال
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘
يحدّد ما إذا كان مستطيل معيّن يحتوي على نقطة S2. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمّى S2LatLngRect، ويمثّل مستطيلاً في فضاء خطوط الطول والعرض.
البنية
s2RectContains(s2PointLow, s2PointHi, s2Point)
الوسيطات
s2PointLow — فهرس نقطة S2 الأدنى المقابل للمستطيل. UInt64.
s2PointHigh — فهرس نقطة S2 الأعلى المقابل للمستطيل. UInt64.
s2Point — فهرس نقطة S2 المستهدف. UInt64.
القيمة المُعادة
1 — إذا كان المستطيل يحتوي على نقطة S2 المحددة.
0 — إذا كان المستطيل لا يحتوي على نقطة S2 المحددة.
مثال
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
┌─rectContains─┐
│ 0 │
└──────────────┘
يعيد أصغر مستطيل يضم اتحاد هذا المستطيل والمستطيل المُعطى. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، ويمثل مستطيلاً في فضاء خط العرض وخط الطول.
البنية
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
الوسائط
s2Rect1PointLow, s2Rect1PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الأول. UInt64.
s2Rect2PointLow, s2Rect2PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الثاني. UInt64.
القيم المُعادة
s2UnionRect2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الناتج عن الاتحاد. UInt64.
s2UnionRect2PointHi — معرّف خلية S2 الأعلى المقابل للمستطيل الناتج عن الاتحاد. UInt64.
مثال
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘
يُرجِع أصغر مستطيل يحيط بمنطقة التقاطع بين هذا المستطيل والمستطيل المعطى. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، ويمثل مستطيلاً في فضاء خطوط العرض والطول.
الصيغة
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
الوسائط
s2Rect1PointLow, s2Rect1PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الأول. UInt64.
s2Rect2PointLow, s2Rect2PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الثاني. UInt64.
القيم المُعادة
s2UnionRect2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الذي يحتوي على تقاطع المستطيلات المُعطاة. UInt64.
s2UnionRect2PointHi — معرّف خلية S2 الأعلى المقابل للمستطيل الذي يحتوي على تقاطع المستطيلات المُعطاة. UInt64.
مثال
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
آخر تعديل في ٢٩ يونيو ٢٠٢٦