إنشاء شبكة من مربع إحاطة
حوّلوا مربع إحاطة جغرافيًا إلى شبكة منتظمة كاملة من دون تثبيت برنامج GIS أو كتابة حلقات لمعالجة الإحداثيات.
شغّل الأداة مجانًا
أدخلوا الحدود الغربية والجنوبية والشرقية والشمالية بالدرجات العشرية، إلى جانب حجم الخلية المربعة. تعرض النتيجة أبعاد الشبكة وصف كل خلية وعمودها وحدودها الدقيقة. تبدأ الخلايا من الركن الجنوبي الغربي، وتتبع ترتيبًا ثابتًا، وتُقص عند الحافتين المقابلتين لكي تغطي المربع المطلوب بدقة حتى عندما لا يقبل عرضه أو ارتفاعه القسمة التامة على الحجم المختار.
حددوا مربع الإحاطة وحجم الخلية
ابدؤوا بمربع إحاطة تقليدي يعتمد خط الطول وخط العرض. يمثل الغرب والشرق خطي طول بين -180 و180، بينما يمثل الجنوب والشمال خطي عرض بين -90 و90. يجب أن يكون الشرق أكبر من الغرب، والشمال أكبر من الجنوب. لا تفسر هذه القدرة قيمة الغرب الأكبر من الشرق على أنها عبور لخط التاريخ الدولي، لأن الالتفاف سيجعل ترتيب الأعمدة وقص الحواف أقل وضوحًا. اضبطوا cell_size بالدرجات العشرية. تتحكم القيمة نفسها في العرض والارتفاع، ولذلك تنشأ مربعات زاوية لا مربعات متساوية في المساحة الفعلية. تقل المسافة الحقيقية التي تغطيها درجة واحدة من خط الطول كلما اقترب الموقع من القطبين. لذلك تلائم هذه الشبكة التقسيم الجغرافي الواضح والتبليط وأخذ العينات وإعداد العروض عندما تكون الحدود الزاوية مناسبة. إذا كانت المسافات أو المساحات المتساوية ضرورية، فحوّلوا النطاق أولًا إلى نظام إحداثيات مستوٍ ملائم. اختاروا حجمًا يوفر التفاصيل المطلوبة من دون إخراج زائد. يُرفض الطلب قبل تخصيص الذاكرة إذا كان سينتج أكثر من 10,000 خلية. يحافظ هذا الحد الصريح على قابلية توقع أداء المتصفح وواجهة API ومعالجة JSON اللاحقة.
افهموا التغطية والقص وترتيب الخلايا
تُثبّت الشبكة عند الركن الجنوبي الغربي الذي أدخلتموه بالضبط، ولا تُحاذى مع نقطة أصل عالمية مخفية. يبدأ الصف صفر عند الجنوب، ويبدأ العمود صفر عند الغرب. تمتد كل خلية عادية بمقدار cell_size نحو الشمال والشرق. عندما لا يكون عرض مربع الإحاطة أو ارتفاعه مضاعفًا صحيحًا لذلك الحجم، تُقص خلايا العمود أو الصف الأخير عند الشرق أو الشمال. لا تتجاوز أي خلية المربع المطلوب، ولا تبقى فجوة داخله. تتضمن الاستجابة الحقول rows وcolumns وcell_count لكي تتحققوا من حجم النتيجة المتوقع من دون إعادة عد عناصر مصفوفة cells. تُعاد الخلايا بترتيب الصفوف: تظهر أولًا كل أعمدة الصف الواقع في أقصى الجنوب، ثم تتوالى الصفوف باتجاه الشمال. يحتوي كل سجل على صف وعمود يبدأ ترقيمهما من الصفر، وعلى أربعة حدود رقمية باسم west وsouth وeast وnorth. تُضبط الإحداثيات إلى اثنتي عشرة منزلة عشرية لإزالة شوائب مثل 0.30000000000000004 التي قد تنتج عن الجمع المتكرر بالفاصلة العائمة. استخدموا الحدود المعادة مباشرة عند رسم المستطيلات أو إنشاء المضلعات أو تسمية البلاطات أو تقسيم مجموعة بيانات أخرى.
استخدموا شبكة حتمية في مسارات البيانات
تفيد الشبكة المولدة عندما يلزم تحويل منطقة دراسة متصلة إلى وحدات مستطيلة قابلة للتكرار. يستطيع تطبيق خرائط تحويل سجل حدود كل خلية إلى حلقة مضلع. ويمكن لمسار أخذ عينات إسناد مهمة إلى كل صف وعمود. كما تستطيع قناة تحليل اختبار النقاط مقابل الخلايا أو تجميع السجلات حسب البلاطة أو تقسيم استعلام كبير إلى طلبات جغرافية أصغر. لأن نقطة الأصل هي مربع الإحاطة المدخل، لا ينتج استدعاءان معرّفات خلايا متطابقة إلا إذا تطابقت west وsouth وeast وnorth وcell_size؛ احتفظوا بهذه المدخلات مع كل صف وعمود مخزن. العملية حتمية ولا تستخدم مزود خرائط أو شبكة أو بذرة عشوائية أو ساعة أو حالة مشتركة. لذلك ينتج عن إدخال JSON المتطابق الشكل والترتيب نفسيهما. تعيد هذه القدرة الحدود بدلًا من GeoJSON لكي تبقى الاستجابة موجزة ومحايدة بين تنسيقات GIS. لا تحسب المراكز الهندسية أو المساحات أو الجيران أو انتماء النقاط أو التقاطعات أو تحويلات الإحداثيات. يمكن تنفيذ هذه الخطوات لاحقًا انطلاقًا من الحدود الصريحة. التشغيل التفاعلي في المتصفح مجاني، بينما يطبق على كل طلب API ناجح السعر الأساسي المنشور وهو $0.002.
حالات الاستخدام
قسّموا نطاق خريطة
أنشئوا بلاطات ثابتة حسب الصف والعمود لتجميع الاستعلامات المكانية أو توزيع المعالجة الجغرافية.
جهّزوا وحدات أخذ العينات
ولّدوا وحدات مستطيلة كاملة فوق منطقة الدراسة قبل اختيار العينات الميدانية أو إسنادها.
ارسموا طبقة شبكة
حوّلوا سجل حدود كل خلية إلى مستطيل أو مضلع لاستخدامه في طبقة GIS أو خريطة ويب.
الأسئلة الشائعة
ما تكلفة طلب API؟
تبلغ تكلفة كل طلب API ناجح $0.002. ويمكنكم أيضًا تشغيل الحساب الحتمي نفسه مجانًا في المتصفح.
ما الوحدة التي يستخدمها cell_size؟
الدرجات العشرية. تتحكم القيمة في عرض خط الطول وارتفاع خط العرض، ولذلك تكون الخلايا مربعات زاوية لا مساحات أرضية متساوية.
ماذا يحدث إذا لم يقبل المربع القسمة على حجم الخلية؟
يُقص الصف والعمود الأخيران عند الحدين الشمالي والشرقي، فتكتمل التغطية من دون تجاوز المربع.
هل يمكن أن يعبر مربع الإحاطة خط التاريخ الدولي؟
لا. يجب أن يكون الشرق أكبر من الغرب. قسّموا النطاق العابر لخط التاريخ إلى مربعي إحاطة تقليديين.
بأي ترتيب تُعاد الخلايا؟
تُعاد حسب الصفوف، بدءًا من الخلية الجنوبية الغربية، ثم شرقًا عبر كل صف، وبعد ذلك شمالًا.
لماذا يوجد حد أقصى قدره 10,000 خلية؟
يحد ذلك من الحساب وحجم الاستجابة. زيدوا cell_size أو قسّموا مربع الإحاطة إذا تجاوز الطلب هذا الحد.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/grid-from-bbox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"west":-2,"south":50,"east":0.5,"north":52,"cell_size":1}'const res = await fetch("https://api.kit.forhosting.com/geo/grid-from-bbox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"west": -2,
"south": 50,
"east": 0.5,
"north": 52,
"cell_size": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/grid-from-bbox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"west": -2,
"south": 50,
"east": 0.5,
"north": 52,
"cell_size": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/grid-from-bbox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"west":-2,"south":50,"east":0.5,"north":52,"cell_size":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"west":-2,"south":50,"east":0.5,"north":52,"cell_size":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/grid-from-bbox", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"west": -2,
"south": 50,
"east": 0.5,
"north": 52,
"cell_size": 1
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.grid_from_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_cells | 10000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |