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