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.
مثال
SELECT geohashEncode(-5.60302734375, 42.593994140625, 0) AS res;┌─res──────────┐
│ ezs42d000000 │
└──────────────┘geohashDecode
يفكّ ترميز أي سلسلة مُرمَّزة باستخدام geohash إلى إحداثيي خط الطول وخط العرض.
الصياغة
geohashDecode(hash_str)قيم الإدخال
hash_str— سلسلة مرمّزة بنظام Geohash.
القيم المُعادة
مثال
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).
[]- مصفوفة فارغة إذا لم تكن القيم الدنيا لخط العرض وخط الطول أقل من القيم القصوى المناظرة لها.
مثال
SELECT geohashesInBox(24.48, 40.56, 24.785, 40.81, 4) AS thasos;┌─thasos──────────────────────────────────────┐
│ ['sx1q','sx1r','sx32','sx1w','sx1x','sx38'] │
└─────────────────────────────────────────────┘