خلايا جيوهاش الفرعية
ينقسم الجيوهاش u4pruyd إلى 32 خلية فرعية، من u4pruyd0 إلى u4pruydz، كل منها أطول بحرف واحد، وتغطي معًا الخلية الأم كاملة. الصق جيوهاش لتحصل على كل الخلايا الفرعية بالترتيب الثابت نفسه، جاهزة للفهرسة أو الخرائط. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- جيوهاش
- u4pruyd
- الدقة
- 7
- دقة العنصر الفرعي
- 8
- الكمية
- 32
تأخذ أداة الخلايا الفرعية لجيوهاش رمز جيوهاش موجوداً وتقسم مساحته المستطيلة إلى اثنتين وثلاثين خلية في مستوى الدقة التالي. وتعيد كل خلية فرعية بإلحاق أحرف أبجدية base32 القياسية الخاصة بجيوهاش بترتيب ثابت، فيصبح الناتج جاهزاً للفهرسة ورسم الخرائط والاختبارات والاجتياز التكراري. تُوحّد المدخلات إلى أحرف صغيرة، بينما تؤدي الأحرف غير الصالحة والأطوال غير المدعومة إلى خطأ إدخال واضح. الحساب حتمي ولا يعتمد على الشبكة أو القيم العشوائية أو الوقت.
كيفية تقسيم خلية جيوهاش
يمثل جيوهاش خلية جغرافية مستطيلة بواسطة سلسلة متداخلة من بتات خط الطول وخط العرض. يضيف كل حرف خمس بتات، ولذلك فإن إلحاق حرف واحد يقسم الخلية الأصلية إلى 32 مستطيلاً أصغر. وهذه المستطيلات هي الخلايا الفرعية المباشرة تماماً؛ فلا حاجة إلى فك ترميز الإحداثيات أو التقريب أو إجراء بحث مكاني لتسميتها.
تلحق هذه الإمكانية كل حرف من أبجدية جيوهاش القياسية <code>0123456789bcdefghjkmnpqrstuvwxyz</code> بالرمز الأصلي بعد توحيده. إذا كان الأصل <code>u4pruyd</code>، تبدأ الخلايا بالرمز <code>u4pruyd0</code> ثم <code>u4pruyd1</code> وتستمر حتى الخلية الأخيرة <code>u4pruydz</code>. تحتفظ كل سلسلة ببادئة الأصل ويزيد طولها حرفاً واحداً بالضبط.
وتغطي النتائج وعددها 32 كامل الخلية الأصلية من دون فجوات أو تداخل عند تلك الدقة. ترتيبها ثابت حسب قيمة الحرف وليس ترتيباً جغرافياً على الخريطة. استخدموا هذه العملية عندما تحتاجون إلى المستوى التالي كاملاً من هرم جيوهاش، لا إلى الخلايا المجاورة للأصل عند مستوى الدقة نفسه.
التحقق من المدخلات وحقول الاستجابة
تُقبل التسميتان المختصرتان <code>hash</code> و<code>gh</code> للتوافق، لكن يُستحسن أن تستخدم عمليات الدمج الجديدة اسم الحقل القياسي. تُزال المسافات من الطرفين وتتحول الأحرف الكبيرة إلى صغيرة قبل التحقق. تتكون القيمة الصالحة من حرف واحد إلى اثني عشر حرفاً من أبجدية base32 الخاصة بجيوهاش.
كذلك تُرفض القيم المفقودة والأنواع غير النصية والسلاسل الفارغة بعد التنظيف والمدخلات التي تتجاوز الحد المنشور. لا تتضمن النتيجة حقولاً اختيارية فارغة.
استخدام الخلايا الفرعية في الأنظمة المكانية
يفيد توليد الخلايا الفرعية عندما يخزن التطبيق المكاني المواقع أو يستكشفها على هيئة شجرة بادئات. يمكن لخدمة خرائط أن تبدأ بخلية واسعة، وتطلب فروعها، ثم تواصل تقسيم الفروع التي تحتوي على بيانات كافية فقط. ويمكن لمهمة صيانة أن توسع حاوية عامة إلى مفاتيح أدق قبل إعادة توزيع السجلات.
كما تستطيع الاختبارات استخدام الناتج المرتب للتأكد من أن أداة الترميز أو فهرس البادئات أو الاجتياز التكراري يعالج كل لاحقة مسموحة ولا يقبل أحرف base32 المحظورة. تذكروا أن هذه العملية تسمي الخلايا فقط؛ فهي لا تحسب حدود خطوط العرض والطول، ولا تفحص أي الفروع يحتوي على بيانات، ولا تعيد الخلايا الثماني المجاورة. استخدموا أداة فك جيوهاش عند الحاجة إلى الإحداثيات أو المربعات المحيطة، وأداة الجيران للخلايا المتلاصقة عند الدقة نفسها.
وللتقسيم المتكرر، أعيدوا إرسال أي خلية فرعية حتى بلوغ الدقة المطلوبة مع مراعاة حد الإدخال في كل طلب. وبما أن كل مستوى يضاعف عدد الأوراق بمقدار 32، فتحكموا في التكرار داخل التطبيق وتجنبوا إنشاء أشجار ضخمة بلا حاجة.
حالات الاستخدام
بناء شجرة بادئات جيوهاش
وسعوا الحاويات المكانية المختارة مستوى بعد مستوى، مع إبقاء كل مفتاح مولد في ترتيب قياسي قابل لإعادة الإنتاج.
زيادة دقة خلايا تجميع الخرائط
استبدلوا المنطقة العامة بالمجموعة الكاملة من خلايا الدقة التالية قبل حساب إحصاءات أكثر تفصيلاً.
اختبار مكتبات جيوهاش
أنشئوا جميع اللواحق القانونية لاختبار اجتياز البادئات والتحقق من المدخلات وثبات عدد الخلايا الفرعية.
الأسئلة الشائعة
كم خلية فرعية يملك جيوهاش واحد؟
يملك 32 خلية فرعية مباشرة بالضبط، لأن حرف جيوهاش المضاف يقدم خمس بتات ويمثل 32 قيمة ممكنة.
هل تُعاد الخلايا بترتيب جغرافي؟
لا. تُعاد حسب ترتيب أحرف base32 القياسي والثابت، وليس بمسح من الشمال إلى الجنوب أو من الغرب إلى الشرق.
هل يغير التقسيم المساحة المغطاة؟
تغطي الخلايا وعددها 32 مجتمعة المساحة نفسها التي يغطيها الأصل، وتغطي كل خلية جزءاً واحداً عند الدقة التالية.
ما الأحرف الصالحة؟
الأحرف الصالحة هي 0–9 وbcdefghjkmnpqrstuvwxyz. ولا تدخل a وi وl وo في أبجدية جيوهاش.
كيف أنزل أكثر من مستوى واحد؟
أدخل أي خلية فرعية من جديد وقسّمها مرة أخرى، وكرر ذلك حتى تبلغ الدقة التي تحتاجها ضمن حد 12 حرفًا. وكل مستوى يضاعف عدد الخلايا 32 مرة، فلا توسّع إلا الفروع التي تحتاجها.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/geohash-children \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"geohash":"u4pruyd"}'const res = await fetch("https://api.kit.forhosting.com/geo/geohash-children", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"geohash": "u4pruyd"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/geohash-children",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"geohash": "u4pruyd"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/geohash-children", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"geohash":"u4pruyd"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"geohash":"u4pruyd"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/geohash-children", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"geohash": "u4pruyd"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.geohash_children",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_precision | 12 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
التحقق من المدخلات وحقول الاستجابة
أرسلوا كائن JSON يحتوي على السلسلة الإلزامية <code>geohash</code>. تستبعد هذه الأبجدية الأحرف a وi وl وo عمداً لتقليل الالتباس البصري، ولذلك ينتج عن أي منها رد <code>invalid_input</code>. تتضمن النتيجة الناجحة <code>geohash</code> للأصل الموحّد، و<code>precision</code> لطوله، و<code>child_precision</code> للطول الزائد واحداً، و<code>children</code> لمصفوفة الخلايا المرتبة وعددها 32، و<code>count</code> الذي يساوي دائماً 32. تبلغ تكلفة طلب API الناجح $0.002، بينما تنفذ أداة المتصفح الحساب النقي نفسه محلياً مجاناً.
أسئلة تقنية
ما تكلفة طلب API؟
يكلف كل طلب API ناجح $0.002. وينفذ إصدار المتصفح الحساب الحتمي نفسه محلياً مجاناً.