بلاطات Slippy لصندوق جغرافي
حوّلوا صندوقا محددا بخطي الطول والعرض إلى إحداثيات XYZ الدقيقة التي تستخدمها خرائط Slippy.
شغّل الأداة مجانًا
أدخلوا الغرب والجنوب والشرق والشمال ومستوى التكبير، فتعيد الحاسبة كل بلاطة متقاطعة بترتيب حتمي صفا بعد صف. وتعرض أيضا نطاقات مدمجة لـ x وy، وتبين ما إذا كان الصندوق يعبر خط التاريخ الدولي، وما إذا كانت دائرة العرض القطبية قد قيدت بحدود Web Mercator. يتيح ذلك تخطيط تقديرات الذاكرة المؤقتة وتنزيلات الخرائط دون اتصال وقوائم التصيير وفحوص التغطية بصورة قابلة للتكرار، من دون الاستعلام من مزود البلاطات.
حددوا المنطقة الجغرافية ومستوى التكبير
أدخلوا الصندوق بحدوده الغربية والجنوبية والشرقية والشمالية بالدرجات العشرية وفق WGS84، ثم اختاروا مستوى تكبير صحيحا من 0 إلى 22. يجب أن يكون الجنوب أدنى من الشمال، وأن يختلف الغرب عن الشرق. في معظم الصناديق تكون قيمة الغرب أصغر من الشرق. وإذا كانت أكبر، تفسر الحاسبة المنطقة عمدا على أنها عابرة لخط التاريخ الدولي، كي لا تتمدد منطقة حول فيجي أو مضيق بيرينغ خطأ عبر معظم الكوكب. لتغطية جميع خطوط الطول، استخدموا -180 للغرب و180 للشرق. يتبع الحساب اصطلاح XYZ الشائع في خرائط Slippy: تزداد x من الغرب إلى الشرق، وتزداد y من الشمال إلى الجنوب، وتمثل z مستوى التكبير المختار. تقبل دوائر العرض التي تتجاوز حد Web Mercator كمدخلات جغرافية، لكنها تسقط على أقرب حافة قابلة للتمثيل. وتشير النتيجة إلى هذا التقييد، مما يوضح سبب عدم إنشاء الحدود القطبية صفوفا إضافية خارج الحافتين العليا والسفلى للخريطة.
تعرفوا إلى بلاطات الحدود المشمولة
تحتوي القائمة المعادة على البلاطات التي تتداخل مع الصندوق بمساحة موجبة. ولا تضاف البلاطة التي تمس الحد الشرقي أو الجنوبي على خط فقط، مما يمنع الصندوق المحاذي تماما للشبكة من اكتساب عمود أو صف غير ضروري. أما الحافتان الغربية والشمالية فتختاران البلاطات الواقعة داخل المنطقة مباشرة. تفيد هذه المعالجة نصف المفتوحة خصوصا في تخطيط الذاكرة المؤقتة، إذ يمكن معالجة الصناديق المتجاورة من دون توسيع جانبي كل حد مشترك بصورة منهجية. كل بلاطة كائن يحوي x وy وz، وترتب البلاطات بحسب صف y من الشمال إلى الجنوب. وداخل الصف تتقدم x من الغرب إلى الشرق؛ أما الصندوق العابر لخط التاريخ فينهي أولا الجزء الغربي ذي قيم x الكبيرة، ثم يتابع من x صفر. تتضمن الاستجابة أيضا x_ranges وy_range لفحص التغطية المدمجة أو تخزينها من دون إعادة بنائها. يحسب العدد قبل تخصيص الذاكرة، وترفض الطلبات التي تتجاوز 100,000 إحداثي برسالة إدخال واضحة.
استخدموا الإحداثيات ضمن سير عمل للذاكرة المؤقتة
تعاملوا مع المخرجات بوصفها خطة حتمية، لا محتوى خرائط منزلا. لا تجري هذه الإمكانية أي طلب شبكي، ولا تعرف المزود أو النمط أو امتداد الملف أو رمز الوصول أو سياسة الاستخدام. يستطيع تطبيقكم ربط كل كائن XYZ بعنوان URL لدى المزود، أو بمجلد محلي مثل z/x/y، أو بمفتاح قاعدة بيانات، أو بمهمة تصيير. افحصوا tile_count قبل جدولة العمل لإظهار متطلبات التخزين وعرض النطاق وحصص المزود بوضوح. ولإنشاء حزم قابلة للتكرار دون اتصال، احفظوا حدود الإدخال ومستوى التكبير مع قائمة الإحداثيات؛ فالتشغيل اللاحق بالمدخلات نفسها ينتج القيم والترتيب نفسيهما. إذا احتاجت المنطقة إلى مستويات متعددة، فاستدعوا الإمكانية مرة لكل مستوى لأن لكل منها شبكته وعدد بلاطاته المتزايد بسرعة. قسموا المساحات الكبيرة عند التكبير العالي، أو خططوا لها أولا بمستوى أدنى. سعر API هو $0.002 لكل طلب، بينما تبقى رسوم استضافة البلاطات أو جلبها منفصلة وتابعة للمزود الذي تختارونه.
حالات الاستخدام
تقدير حزمة خرائط تعمل دون اتصال
احسبوا ملفات XYZ المطلوبة للمنطقة المختارة في تطبيق ميداني واسردوها قبل تنزيل أي صور.
تهيئة ذاكرة بلاطات إقليمية مسبقا
أنشئوا قائمة ثابتة من مفاتيح البلاطات لمنطقة خدمة معروفة، ومرروها إلى نظام تهيئة ذاكرة مصرح به.
تخطيط مهام التصيير
قسموا تصيير الصندوق إلى مهام بلاطات منفصلة ومرتبة بصورة قابلة للتكرار كي تعالجها وحدات مستقلة.
الأسئلة الشائعة
أي اصطلاح للبلاطات تستخدم هذه الأداة؟
تستخدم إحداثيات XYZ لخرائط Slippy: تزداد x شرقا، وتزداد y جنوبا، وتمثل z مستوى التكبير.
هل يمكن للصندوق عبور خط التاريخ الدولي؟
نعم. اجعلوا الغرب أكبر من الشرق؛ فتغطي النتيجة الجزء الغربي ذي x الكبيرة ثم الجزء الشرقي ذي x الصغيرة.
لماذا تقيد دوائر العرض القطبية؟
ينتهي Web Mercator القياسي عند نحو 85.0511 درجة شمالا وجنوبا. وتسند المدخلات الأبعد إلى أقرب صف بلاطات متاح.
هل تنزل الأداة بلاطات الخرائط أو تخزنها؟
لا. تعيد الإحداثيات فقط ولا تستخدم الشبكة. اختاروا مصدر البلاطات والتزموا بشروط مزوده.
ما تكلفة الطلب الواحد؟
سعر API هو $0.002 لكل طلب. وقد تضاف تكاليف مستقلة للمزود أو التخزين أو التصيير.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/tiles-in-bbox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"west":-74.02,"south":40.7,"east":-73.98,"north":40.73,"zoom":12}'const res = await fetch("https://api.kit.forhosting.com/geo/tiles-in-bbox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"west": -74.02,
"south": 40.7,
"east": -73.98,
"north": 40.73,
"zoom": 12
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/tiles-in-bbox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"west": -74.02,
"south": 40.7,
"east": -73.98,
"north": 40.73,
"zoom": 12
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/tiles-in-bbox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"west":-74.02,"south":40.7,"east":-73.98,"north":40.73,"zoom":12}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"west":-74.02,"south":40.7,"east":-73.98,"north":40.73,"zoom":12}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/tiles-in-bbox", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"west": -74.02,
"south": 40.7,
"east": -73.98,
"north": 40.73,
"zoom": 12
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.tiles_in_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
min_zoom | 0 |
max_zoom | 22 |
max_tiles | 100000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |