Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

دوال للتعامل مع Geohash

Geohash

Geohash هو نظام ترميز جغرافي يقسّم سطح الأرض إلى خلايا شبكية ويشفّر كل خلية إلى سلسلة قصيرة من الأحرف والأرقام. وهو بنية بيانات هرمية، لذا كلما زاد طول سلسلة geohash، زادت دقة الموقع الجغرافي.

إذا كنت بحاجة إلى تحويل الإحداثيات الجغرافية يدويًا إلى سلاسل geohash، يمكنك استخدام geohash.org

geohashEncode

يُشفِّر خطَّي العرض والطول في سلسلة geohash.

الصياغة

geohashEncode(longitude, latitude, [precision])

قيم الإدخال

  • longitude — جزء خط الطول من الإحداثي الذي تريد ترميزه. قيمة فاصلة عائمة ضمن النطاق [-180°, 180°]. Float.
  • latitude — جزء خط العرض من الإحداثي الذي تريد ترميزه. قيمة فاصلة عائمة ضمن النطاق [-90°, 90°]. Float.
  • precision (اختياري) — طول السلسلة المُرمَّزة الناتجة. القيمة الافتراضية هي 12. عدد صحيح ضمن النطاق [1, 12]. Int8.

القيم المُعادة

  • سلسلة أبجدية رقمية تمثل الإحداثي المُرمَّز (تُستخدم نسخة معدّلة من أبجدية ترميز base32). String.

مثال

Querysql
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;
Responsetext
┌─res──────────┐
│ ezs42d000000 │
└──────────────┘

geohashDecode

يفكّ ترميز أي سلسلة مُرمَّزة باستخدام geohash إلى إحداثيي خط الطول وخط العرض.

الصياغة

geohashDecode(hash_str)

قيم الإدخال

  • hash_str — سلسلة مرمّزة بنظام Geohash.

القيم المُعادة

  • Tuple (longitude, latitude) من قيم Float64 تمثل خط الطول وخط العرض. Tuple(Float64)

مثال

SELECT geohashDecode('ezs42') AS res;
┌─res─────────────────────────────┐
│ (-5.60302734375,42.60498046875) │
└─────────────────────────────────┘

geohashesInBox

يعيد مصفوفة من السلاسل المُرمَّزة باستخدام geohash وبالدقة المحددة، تقع داخل حدود المربع المحدد وتتقاطع معها، وهي في الأساس شبكة ثنائية الأبعاد مُسطَّحة إلى مصفوفة.

الصياغة

geohashesInBox(longitude_min, latitude_min, longitude_max, latitude_max, precision)

الوسيطات

  • longitude_min — الحد الأدنى لخط الطول. النطاق: [-180°, 180°]. Float.
  • latitude_min — الحد الأدنى لخط العرض. النطاق: [-90°, 90°]. Float.
  • longitude_max — الحد الأقصى لخط الطول. النطاق: [-180°, 180°]. Float.
  • latitude_max — الحد الأقصى لخط العرض. النطاق: [-90°, 90°]. Float.
  • precision — دقة geohash. النطاق: [1, 12]. UInt8.

القيم المعادة

  • مصفوفة من سلاسل geohash بطول precision تغطي المنطقة المحددة، ولا ينبغي الاعتماد على ترتيب العناصر. Array(String).
  • [] - مصفوفة فارغة إذا لم تكن القيم الدنيا لخط العرض وخط الطول أقل من القيم القصوى المناظرة لها.

مثال

Querysql
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;
Responsetext
┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘
Navigation