تبدیل NMEA به Latitude و Longitude در GPS

مقدمه

در سیستم موقعیت یابی جهانی یا GPS استانداردهای متفاوتی وجود دارد. یکی از این پروتکلها NMEA نام دارد که موقعیت را بر حسب درجه و دقیقه نشان می‌دهد و درجه را به بخشی از دقیقه چسبانده (DDMM.MMMMM) و بصورت یک عدد اعشاری به خروجی ماژول ارسال می‌کند. اما در عمل برای نمایش موقعیت نیاز به طول (Longitude) و عرض (Latitude) جغرافیایی داریم که تنها برحسب درجه تعریف شده‌اند. در این مقاله قصد داریم نحوه تبدیل از NMEA به Latitude و Longitude را شرح دهیم.

 

کمی در مورد جغرافیا

مطابق تصویر زیر کره جغرافیایی به بخشهایی تقسیم بندی می‌شود. خطوط عمودی زیادی از بالا تا پایین کشیده شده‌اند که نام آن‌ها طول جغرافیایی (Longitude) است. یکی از آنها که از کشورهای بریتانیا، فرانسه، اسپانیا، الجزایر و… عبور می‌کند نصف‌النهار مبدأ (گرینویچ) نام دارد و زاویه آن صفر درجه درنظر گرفته می‌شود. سمت راست که به سمت ایران است نیم‌کره شرقی یا E به حساب می‌آید.

خطوط دیگری به شکل کمربند دور زمین کشیده شده‌اند که به آنها عرض جغرافیایی (Latitude) می‌گویند. بزرگترین آنها که در وسط قرار می‌گیرد به عنوان مبداء در نظر گرفته شده و زاویه آن صفر است. سمت بالای آن که به سمت ایران است N یا نیمکره شمالی نامیده می‌شود. پس تا اینجا متوجه شدیم که ما در نیمکره شمالی و نیم‌کره شرقی هستیم، پس NMEA برای ماژول GPSیی که در ایران روشن شود ارقام N و E را ارسال می‌کند.

طول و عرض جغرافیایی و تبدیل E و N به Longitude و Latitude در GPS NMEA
طول و عرض جغرافیایی و تبدیل E و N به Longitude و Latitude در GPS NMEA

 

کمی در مورد NMEA

کدهای NMEA به محض اتصال ماژول GPS به ترمینال ارسال می‌شوند و انواع مختلفی دارند یکی از این کدها مطابق خط زیر است:

GNRMC,051201.00,A,3617.86900,N,05001.03601,E,0.31,,031124,,,D*6F$

در این کد 051201 ساعت و دقیقه و ثانیه بر حسب UTC است، A یعنی سیگنال GPS دریافتی معتبر و فعال است (در غیر این صورت V نمایش داده می‌شود). 3715.86900 همان N است و 05001.03601 همان E هست (در جلوی هر عدد N و E مشخص شده). با بقیه موارد هم فعلا کاری نداریم. با توجه به اینکه ما در ایران هستیم برای پیدا کردن طول جغرافیایی (Longitude) باید عدد E را تبدیل کنیم و برای پیدا کردن عرض جغرافیایی (Latitude) باید عدد N را تبدیل نماییم.

 

کمی در مورد هندسه و انجام تبدیلات

در هندسه و دایره‌ها مقاهیمی به نام درجه داریم. مثلا یک دایره به 360 درجه تقسیم می‌شود. برای کارهای دقیقتر هر درجه به 60 دقیقه تقسیم می‌شود. در پروتکل NMEA اعداد با فرمت DDMM.MMMMM ارسال می‌شود. D یعنی درجه و M یعنی دقیقه. به طور مثال در عدد 3617.86900 عدد 36 همان درجه و عدد 17.869 همان دقیقه است. ما برای استفاده واقعی روی نقشه (البته در ایران) باید این عدد یعنی (N = آفست نیمکره شمالی) را به Latitude یا عرض جغرافیایی بر حسب درجه تبدیل کنیم. برای اینکار باید دقیقه را هم به درجه تبدیل کنیم و با درجه جمع کنیم. برای تبدیل دقیقه به درجه باید دقیقه را بر 60 تقسیم کنیم. در اینجا حاصل تقسیم 17.869  بر 60 عدد 0.2978166666666667 است که رند شده آن را 0.29781 در نظر میگیریم و با جمع با درجه یعنی 36 عدد 36.29781 به دست می آید که همان Latitude است.

برای تبدیل E یا آفست نیم کره شرقی به طول جغرافیایی (Longitude) عدد 05001.03601 را بررسی می‌کنیم. این عدد با 0 شروع شده یعنی بخش درجه آن 3 رقمی است (DDDMM.MMMMM). در محاسبات عرض جغرافیایی از 0 تا مثبت و منفی 90 درجه داریم پس 2 رقم کافیست اما در طول جغرافیایی از 0 تا مثبت و منفی 180 درجه داریم پس نیاز به سه رقم است. خوشبختانه در ایران کلا عدد منفی نداریم. ما برای استفاده واقعی روی نقشه (البته در ایران) باید این عدد یعنی (E = آفست نیمکره شرقی) را به Longitude یا طول جغرافیایی بر حسب درجه تبدیل کنیم. برای اینکار باید دقیقه را هم به درجه تبدیل کنیم و با درجه جمع کنیم. برای تبدیل دقیقه به درجه باید دقیقه را بر 60 تقسیم کنیم. در اینجا حاصل تقسیم 1.03601  بر 60 عدد 0.0172668333333333 است که رند شده آن را 0.01726 در نظر میگیریم و با جمع با درجه یعنی 50 عدد 50.01726 به دست می آید که همان Longitude است.

نکته مهم: بر اساس برگه اطلاعات NMEA سایز این اعداد همیشه ثابت است و حتی بعد از ممیز هم با صفر پر می‌شود تا محاسبات تبدیل راحت تر صورت پذیرد. بنابراین براحتی می‌توان با کمک دستورات جداسازی از چپ و راست رشته اعداد درجه و دقیقه را جدا و تبدیلات را انجام داد. 

نتیجه گیری

در این مقاله یادگرفتیم که چگونه خروجی پروتکل NMEA را در ماژول‌های GPS  به طول و عرض جغرافیایی تبدیل کنیم. بعنوان نکته پایانی در این مقاله اگر از ماژول UBlox NEO M8M استفاده میکنید کافیست سرعت ترمینال خود را روی 9600 قرار دهیم و همچنین برای انجام تبدیلات بین واحدها و نمایش طول و عرض بر روی نقشه می‌توانید از سایت زیر کمک بگیرید:

https://www.gps-coordinates.net

ضمنا در این لینک هم مطالب مفیدی در خصوص تفسیر NMEA ذکر شده است که می‌توانید مطالعه کنید.

از این اپلیکیشن هم می توانید برای تست GPS و نمایش N و E در اندروید استفاده کنید و با ماژول GPS مقایسه کنید: GPS Test Android  یا از کافه بازار دانلود کنید.

 

منابع:

منبع یک

منبع دو

بازدیدها: 23