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