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