الانتقال إلى المحتوى الرئيسي

S2Index

S2 هو نظام فهرسة جغرافي تُمثَّل فيه جميع البيانات الجغرافية على سطح كرة (على غرار الكرة الأرضية). في مكتبة S2، تُمثَّل النقاط على أنها فهرس S2، وهو رقم معيّن يرمّز داخليًا إلى نقطة على سطح كرة الوحدة، بدلًا من أزواج (خط العرض، خط الطول) التقليدية. للحصول على فهرس نقطة S2 لنقطة معيّنة محددة بالتنسيق (خط العرض، خط الطول)، استخدم الدالة geoToS2. ويمكنك أيضًا استخدام الدالة s2ToGeo للحصول على الإحداثيات الجغرافية المقابلة لـ فهرس نقطة S2 المحدد.

geoToS2

يعيد فهرس S2 للنقطة المقابلة للإحداثيات المقدَّمة (longitude, latitude). البنية
geoToS2(lon, lat)
الوسائط القيم المُرجعة
  • فهرس نقطة S2. UInt64.
مثال
Query
SELECT geoToS2(37.79506683, 55.71290588) AS s2Index;
Response
┌─────────────s2Index─┐
│ 4704772434919038107 │
└─────────────────────┘

s2ToGeo

يعيد الإحداثيات الجغرافية (longitude, latitude) المطابقة لفهرس نقطة S2 المُعطى. البنية
s2ToGeo(s2index)
الوسائط
  • s2index — فهرس S2. UInt64.
القيم المُعادة مثال
Query
SELECT s2ToGeo(4704772434919038107) AS s2Coodrinates;
Response
┌─s2Coodrinates────────────────────────┐
│ (37.79506681471008,55.7129059052841) │
└──────────────────────────────────────┘

s2GetNeighbors

تعيد فهارس الجوار في S2 المقابلة إلى S2 المُعطى. كل خلية في نظام S2 هي شكل رباعي تحدّه أربعة خطوط جيوديسية، لذا لكل خلية 4 خلايا مجاورة. الصيغة
s2GetNeighbors(s2index)
الوسائط
  • s2index — فهرس S2. UInt64.
القيمة المُعادة
  • مصفوفة تتكوّن من 4 فهارس متجاورة: array[s2index1, s2index3, s2index2, s2index4]. مصفوفة(UInt64).
مثال
Query
SELECT s2GetNeighbors(5074766849661468672) AS s2Neighbors;
Response
┌─s2Neighbors───────────────────────────────────────────────────────────────────────┐
│ [5074766987100422144,5074766712222515200,5074767536856236032,5074767261978329088] │
└───────────────────────────────────────────────────────────────────────────────────┘

s2CellsIntersect

يحدِّد ما إذا كانت خليتا S2 المعطاتان تتقاطعان أم لا. الصيغة
s2CellsIntersect(s2index1, s2index2)
المعاملات
  • siIndex1, s2index2 — فهرس S2. UInt64.
القيمة المعادة
  • 1 — إذا كانت الخلايا تتقاطع. UInt8.
  • 0 — إذا كانت الخلايا لا تتقاطع. UInt8.
مثال
Query
SELECT s2CellsIntersect(9926595209846587392, 9926594385212866560) AS intersect;
Response
┌─intersect─┐
│         1 │
└───────────┘

s2CapContains

يحدّد ما إذا كان الغطاء الكروي يحتوي على نقطة S2. يمثّل الغطاء الكروي جزءًا من الكرة يقطعه مستوى. وتُعرَّف بنقطة على الكرة ونصف قطر بالدرجات. الصيغة
s2CapContains(center, degrees, point)
المعاملات
  • center — فهرس نقطة S2 الذي يمثّل الغطاء الكروي. UInt64.
  • degrees — نصف قطر الغطاء الكروي بالدرجات. Float64.
  • point — فهرس نقطة S2. UInt64.
القيمة المُعادة
  • 1 — إذا كان الغطاء الكروي يحتوي على فهرس نقطة S2. UInt8.
  • 0 — إذا كان الغطاء الكروي لا يحتوي على فهرس نقطة S2. UInt8.
مثال
Query
SELECT s2CapContains(1157339245694594829, 1.0, 1157347770437378819) AS capContains;
Response
┌─capContains─┐
│           1 │
└─────────────┘

s2CapUnion

يحدّد أصغر غطاء كروي يحتوي على غطائي الإدخال المعطيين. يمثّل الغطاء الكروي جزءًا من الكرة اقتُطع بمستوى. ويُعرَّف بنقطة على الكرة ونصف قطر بالدرجات. الصيغة
s2CapUnion(center1, radius1, center2, radius2)
المعاملات
  • center1, center2 — فهرسا نقطتَي S2 المقابلان للغطاءين الكرويين المُدخلين. UInt64.
  • radius1, radius2 — نصفا قطر الغطاءين الكرويين المُدخلين بالدرجات. Float64.
القيم المعادة
  • center — فهرس نقطة S2 المقابل لمركز أصغر غطاء كروي يحتوي على الغطاءين الكرويين المُدخلين. UInt64.
  • radius — نصف قطر أصغر غطاء كروي يحتوي على الغطاءين الكرويين المُدخلين. Float64.
مثال
Query
SELECT s2CapUnion(3814912406305146967, 1.0, 1157347770437378819, 1.0) AS capUnion;
Response
┌─capUnion───────────────────────────────┐
│ (4534655147792050737,60.2088283994957) │
└────────────────────────────────────────┘

s2RectAdd

يزيد حجم المستطيل الحاوي ليشمل نقطة S2 المعطاة. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، وهو يمثّل مستطيلاً في فضاء خط العرض وخط الطول. الصيغة
s2RectAdd(s2pointLow, s2pointHigh, s2Point)
المعاملات
  • s2PointLow — فهرس نقطة S2 الأدنى المقابل للمستطيل. UInt64.
  • s2PointHigh — فهرس نقطة S2 الأعلى المقابل للمستطيل. UInt64.
  • s2Point — فهرس نقطة S2 المستهدف الذي يجب توسيع المستطيل الحدّي ليشمله. UInt64.
القيم المُعادة
  • s2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الموسَّع. UInt64.
  • s2PointHigh — معرّف خلية S2 الأعلى المقابل للمستطيل الموسَّع. UInt64.
مثال
Query
SELECT s2RectAdd(5178914411069187297, 5177056748191934217, 5179056748191934217) AS rectAdd;
Response
┌─rectAdd───────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectContains

يحدّد ما إذا كان مستطيل معيّن يحتوي على نقطة S2. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمّى S2LatLngRect، ويمثّل مستطيلاً في فضاء خطوط الطول والعرض. البنية
s2RectContains(s2PointLow, s2PointHi, s2Point)
الوسيطات
  • s2PointLow — فهرس نقطة S2 الأدنى المقابل للمستطيل. UInt64.
  • s2PointHigh — فهرس نقطة S2 الأعلى المقابل للمستطيل. UInt64.
  • s2Point — فهرس نقطة S2 المستهدف. UInt64.
القيمة المُعادة
  • 1 — إذا كان المستطيل يحتوي على نقطة S2 المحددة.
  • 0 — إذا كان المستطيل لا يحتوي على نقطة S2 المحددة.
مثال
Query
SELECT s2RectContains(5179062030687166815, 5177056748191934217, 5177914411069187297) AS rectContains;
Response
┌─rectContains─┐
│            0 │
└──────────────┘

s2RectUnion

يعيد أصغر مستطيل يضم اتحاد هذا المستطيل والمستطيل المُعطى. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، ويمثل مستطيلاً في فضاء خط العرض وخط الطول. البنية
s2RectUnion(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
الوسائط
  • s2Rect1PointLow, s2Rect1PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الأول. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الثاني. UInt64.
القيم المُعادة
  • s2UnionRect2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الناتج عن الاتحاد. UInt64.
  • s2UnionRect2PointHi — معرّف خلية S2 الأعلى المقابل للمستطيل الناتج عن الاتحاد. UInt64.
مثال
Query
SELECT s2RectUnion(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectUnion;
Response
┌─rectUnion─────────────────────────────────┐
│ (5179062030687166815,5177056748191934217) │
└───────────────────────────────────────────┘

s2RectIntersection

يُرجِع أصغر مستطيل يحيط بمنطقة التقاطع بين هذا المستطيل والمستطيل المعطى. في نظام S2، يُمثَّل المستطيل بنوع من S2Region يُسمى S2LatLngRect، ويمثل مستطيلاً في فضاء خطوط العرض والطول. الصيغة
s2RectIntersection(s2Rect1PointLow, s2Rect1PointHi, s2Rect2PointLow, s2Rect2PointHi)
الوسائط
  • s2Rect1PointLow, s2Rect1PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الأول. UInt64.
  • s2Rect2PointLow, s2Rect2PointHi — فهرسا نقطة S2 الأدنى والأعلى المقابلان للمستطيل الثاني. UInt64.
القيم المُعادة
  • s2UnionRect2PointLow — معرّف خلية S2 الأدنى المقابل للمستطيل الذي يحتوي على تقاطع المستطيلات المُعطاة. UInt64.
  • s2UnionRect2PointHi — معرّف خلية S2 الأعلى المقابل للمستطيل الذي يحتوي على تقاطع المستطيلات المُعطاة. UInt64.
مثال
Query
SELECT s2RectIntersection(5178914411069187297, 5177056748191934217, 5179062030687166815, 5177056748191934217) AS rectIntersection;
Response
┌─rectIntersection──────────────────────────┐
│ (5178914411069187297,5177056748191934217) │
└───────────────────────────────────────────┘
آخر تعديل في ٢٩ يونيو ٢٠٢٦