در عملیات های نقشه برداری و ترسیم نقشه های قابل نمایش، یکی از مهم ترین و در عین حال حیاتی ترین بخش های عملیات، تبدیل انواع مختصات ها به یکدیگر است. بطور کلی داده های مکانی اساسا در دو قالب اصلی ذخیره و پردازش می شوند: مختصات جغرافیایی (طول و عرض جغرافیایی برحسب درجه) و مختصات کارتزین سه بعدی (X,Y,Z برحسب متر)
هریک از این انواع مختصات برای یک پروژه و نوع خاصی از ارائه مناسب است که درک تفاوت ها و موارد نیاز به این نوع از مختصات ها باعث خواهد شد تا راحت تر بتوان بر حسب تحلیل های مکانی، خروجی های مناسبی را تهیه و تولید کرد.اما هریک از این مختصات ها چه مفهومی دارند؟
سیستم مختصات جغرافیایی (Geodetic Coordinates)
مختصات محاسبه شده در این نوع از مختصات را معمولا با(Latitude, Longitude, Altitude) یا (φ, λ, h) نمایش می دهند که موقعیت یک نقطه را برحسب درجه و روی یک بیضوی مرجع نمایش می دهد. این بیضوی مرجع معمولا در محاسبات نقشه برداری همان WGS84 که استاندارد جهانی در سیستم GPS است درنظر گرفته می شود و ارتفاع نقاط را از سطح همان بیضوی محاسبه می کنند.
سیستم مختصات زمین مرکز کارتزین (ECEF - Earth-Centered, Earth-Fixed)
این نوع از سیستم مختصات، ک سیستم مختصات سه بعدی دکارتی با مبدأیی در مرکز جرم زمین است. در این سیستم، محور Z به سمت قطب شمال جغرافیایی بوده، محور X از تقاطع نصف النهار گرینویچ و استوا، و محور Y در صفحه استوا و عمود بر دو محور دیگر قرار دارد.
محاسبه و اندازه گیری این مختصات بر حسب متر است و برای محاسبات دقیق سه بعدی بسیار مناسب تر از مختصات جغرافیایی هستند.
چرا در نقشه برداری به تبدیل مختصات بین سیستم مختصات کارتزین و سیستم مختصات جغرافیایی احتیاج داریم؟
برای تبدیل مختصات بین سیستم های متفاوت در نقشه برداری دلایل متعددی وجد دارد اما در این بخش، به مهم ترین این عوامل اشاره می کنیم.
1. محاسبات فاصله، مساحت و زاویه
محاسبه فاصله دقیق بین دو نقطه با استفاده از مختصات جغرافیایی (عرض و طول) مسئله تقریبا پیچیده ای است و نیازمند فرمول های خاصی مانند روابط وینسِنتی (Vincenty's formulae) است که انحنای زمین در آنها در نظر گرفته می شود. اما در مختصات کارتزین، محاسبه فاصله اقلیدسی با استفاده از قضیه فیثاغورث به سادگی انجام می شود.
از طرفی محاسبه دقیق مساحت و زاویه در سیستم کارتزین بسیار ساده تر است. برای مثال، در سیستم های نرم افزاری که با داده های لرزه شناسی، موقعیت ایستگاه ها و رویدادها کار می کنند، ابتدا مختصات جغرافیایی به مختصات کارتزین زمین مرکزی تبدیل می شوند تا بتوان محاسبات ریاضی مانند فاصله زاویه ای، آزیموت، چرخش حول قطب ها و برخورد دایره های بزرگ را به راحتی و با دقت انجام داد.
2. ساخت و تحلیل مدل های سه بعدی
برای ساخت مدل های سه بعدی دقیق از زمین، پدیده های طبیعی، یا سازه های شهری، داده های مکانی باید در یک سیستم مختصات سه بعدی یکپارچه (کارتزین) پردازش شوند. این امر به ویژه در کاربردهایی مانند شبیه سازی های شهری، تحلیل فرونشست زمین، یا مدل سازی جریان هوا بسیار حیاتی است.
به عنوان مثال، یک گزارش فنی از آزمایشگاه ملی ساندیا (Sandia National Laboratories) نشان می دهد که برای تحلیل داده های لرزه شناسی و عملیات ریاضی بر روی آنها، ابتدا موقعیت های جغرافیایی به مختصات کارتزین زمین مرکزی تبدیل می شوند تا پردازش هایی مانند یافتن فاصله زاویه ای یا آزیموت بین نقاط به صورت کارآمد و دقیق انجام شود.
3. یکپارچه سازی داده های مکانی از منابع مختلف
داده های مکانی از منابع گوناگون (دستگاه های GPS، تصاویر ماهواره ای، نقشه های توپوگرافی، نقشه های کاداستر) معمولاً در سیستم های مختصات متفاوتی مانند WGS84، UTM و یا حتی در سیستم های محلی تعریف می شوند. برای ترکیب و تحلیل همزمان این داده ها، ناگزیر به تبدیل آنها به یک سیستم مختصات مشترک هستیم.
در بسیاری از پروژه های نقشه برداری، برای تبدیل شبکه های مختصاتی قدیمی به شبکه های جدید، نیاز به انجام تبدیل هلمرت (Helmert Transformation) با استفاده از مختصات نقاط مشترک است که این کار نیز با مختصات کارتزین انجام می شود.
4. توسعه و اجرای الگوریتم های موقعیت یاب
برای استفاده از الگوریتم های ناوبری و موقعیت یابی، با توجه به تأثیر ناچیز انحنای زمین در سناریوهای کوچک مقیاس، ابتدا مسئله پیچیده موقعیت یابی روی سطح بیضوی به یک مسئله ساده تر در یک صفحه با ارتفاع ثابت تبدیل می شود. سپس مختصات محاسبه شده دوباره به مختصات جغرافیایی (عرض، طول و ارتفاع) تبدیل می شوند تا خروجی نهایی قابل استفاده باشد.
5. کاربرد در سامانه های CAD و مدل سازی
برای استفاده از داده های موقعیتی GPS در نرم افزارهای نقشه برداری مانند ArcGIS، AutoCad و ... برای مدل سازی سه بعدی، داده های دریافتی باید به فرمت مختصات مناسب (مثلا مختصات کارتزین X، Y، Z) تبدیل شوند تا سیستم قادر به پردازش و نمایش آنها باشد .
حالا که متوجه ماهیت این سیستم ها و همچنین علت نیاز به تبدیل مختصات بین این دو نوع سیستم مختصات شدیم، می خواهیم نگاهی داشته باشیم به فرآیند تبدیل این دو نوع مختصات به یکدیگر:
روابط ریاضی و هندسی تبدیل سیستم مختصات جغرافیایی به کارتزین:
برای درک بهتر مفاهیمی که تا کنون توضیح دادیم، در این بخش فرمول های ریاضی اصلی برای تبدیل مختصات جغرافیایی به ECEF ارائه شده است.
تبدیل مختصات جغرافیایی به کارتزین (ECEF)
با داشتن (φ, λ, h):X=(N+h)cosϕcosλX=(N+h)cosϕcosλ
Y=(N+h)cosϕsinλY=(N+h)cosϕsinλ
Z=[N(1−e2)+h]sinϕZ=[N(1−e2)+h]sinϕ
که در آن N شعاع انحنای قائم اول بوده و به صورت زیر محاسبه می شود:
N = a / √(1 - e² sin²φ)
a نیم قطر بزرگ و e خروج از مرکزیت بیضوی است.
برای بیضوی WGS84، این مقادیر به صورت زیر هستند:
a=6378137.0
e2=0.08181919104282
تبدیل مختصات کارتزین به جغرافیایی (ECFE به جغرافیایی)
این تبدیل کمی پیچیده تر است و معمولاً با روش های تکرار (Iterative) حل می شود. طول جغرافیایی به سادگی به دست می آید:
λ=arctan(XY)
برای عرض جغرافیایی و ارتفاع، از یک فرآیند تکراری استفاده می شود که در آن ابتدا یک حدس اولیه برایϕ زده می شود و سپس با تکرار، به جواب نهایی نزدیک می شود .
در انتهای این مطلب، سعی کردیم تا این فرمول ها را برای ساخت یک پروژه کدنویسی در هر دو زبان پایتون و متلب، پیاده سازی کرده و در اختیار شما قرار دهیم. برای دسترسی به این کدها به بخش کتابخانه های برنامه نویسی مراجعه کنید.اما بیایید ابتدا نگاهی داشته باشیم به ابزارها و کتابخانه هایی که روند برنامه نویسی برای تبدیل مختصات بین این دو سیستم مختصاتی را راحت تر می کنند.
معرفی ابزار جهت تبدیل مختصات
در این مقاله، دو اسکریپت پایتون را معرفی می کنیم که این تبدیل را با دقت بالا انجام می دهد. این کدها، یک ابزار ضروری برای هر متخصص GIS، نقشه بردار و برنامه نویسی است که با داده های مکانی سروکار دارد.
کتابخانه PyMap3D پایتون
PyMap3D یک کتابخانه کتابخانه قدرتمند و خالص پایتون (بدون نیاز به کتابخانه های جانبی) برای تبدیل مختصات سه بعدی جغرافیایی است. این کتابخانه با الهام از توابع مشابه در متلب طراحی شده و برای سیستم های موازی و تعبیه شده بسیار مناسب است. توابع این کتابخانه از آرایه های با ابعاد دلخواه (اسکالر یا N-D array) پشتیبانی می کنند.
استفاده از کتابخانه PyMap3D برای تبدیل مختصات های نقشه برداری
مرحله 1: نصب کتابخانه
ابتدا با استفاده از قطعه کد زیر، کتابخانه را به برنامه خود اضافه کنید:
bash
python3 -m pip install pymap3d
مسئله 1: تبدیل مختصات جغرافیایی به کارتزین (Lat/Lon/Height → ECEF XYZ)
این تابع یک نقطه با مختصات جغرافیایی (عرض، طول، ارتفاع) را دریافت کرده و معادل آن را در سیستم ECEF (X, Y, Z) بر می گرداند.
مسئله 2: تبدیل مختصات کارتزین به جغرافیایی (ECEF XYZ → Lat/Lon/Height)
این تابع عملیات عکس را انجام می دهد و مختصات ECEF را به مختصات جغرافیایی تبدیل می کند.
کتابخانه PyGeodesy در پایتون
یکی دیگر از کتابخانه های قدرتمند و محبوب پایتون برای استفاده در روند این تبدیل، PyGeodesy است. این کتابخانه یک پیاده سازی خالص از ابزارهای ژئودزی پایتون است که روش های مختلفی را برای محاسبات روی بیضوی و کره زمین ارائه می دهد. PyGeodesy روش های دقیقی مانند فرمول های Vincenty و Karney را برای محاسبات ژئودزی پیاده سازی کرده است که بسیار دقیق تر از روش های ساده تر هستند . یکی از نقاط قوت این کتابخانه این است که شامل ماژول های مختلفی برای مدل های بیضوی (مانند ellipsoidalVincenty، ellipsoidalKarney و ellipsoidalNvector) است .
در ادامه، کد تبدیل مختصات با استفاده از PyGeodesy را مرحله به مرحله توضیح می دهیم.
مسئله 1: نصب کتابخانه
برای استفاده از این کتابخانه، ابتدا با استفاده از دستور زیر، این کتابخانه را به کد خود، اضافه کنید:
مسئله 2: تبدیل مختصات کارتزین به جغرافیایی (ECEF XYZ → Lat/Lon/Height)
این تابع عملیات عکس را انجام می دهد و مختصات ECEF را به مختصات جغرافیایی تبدیل می کند .
پیاده سازی در متلب
متلب نیز توابع قدرتمندی برای تبدیل مختصات در جعبه ابزار نقشه برداری (Mapping Toolbox) خود دارد. از نسخه R2012b به بعد، توابع geodetic2ecef و ecef2geodetic به این جعبه ابزار اضافه شده اند و از نسخه R2021a امکان تولید کد C/C++ با استفاده از MATLAB Coder نیز فراهم شده است، استفاده از این ابزارها به شرح زیر است:
مسئله 1: تبدیل مختصات جغرافیایی به کارتزین ECEF
مسئله 2: تبدیل ECEF به مختصات جغرافیایی
البته اگر تمایل دارید که کد مرحله به مرحله (با استفاده از روابط ریاضی و بصورت قدم به قدم ) در زبان برنامه نویسی متلب دسترسی داشته باشید، می توانید به بخش کتابخانه های برنامه نویسی مراجعه کنید. جهت دانلود مستقیم کد متلب تبدیل سیستم مختصات جغرافیایی به کارتزین و برعکس و همچنین دسترسی به Source های اصلی کتابخانه های پایتون معرفی شده در این مقاله، می توانید به بخش کتابخانه های برنامه نویسی مراجعه کنید.
هر دو کد ارائه شده را می توانید به راحتی در پروژه های خود برای کاربرد های متعددی مانند محاسبه فواصل دقیق، یکپارچه سازی داده های مکانی، توسعه برنامه های تعیین موقعیت، و تحلیل داده های سه بعدی استفاده کنید.
معمولا استفاده از کتابخانه ها به دلیل استفاده از روش های دقیق ژئودزی و تعداد تکرار های بیشتر، باعث کاهش خطاهای محاسباتی و بهینه سازی نتایج می شود به همین دلیل پیشنهاد می شود که حدالمقدور برای پروژه های خود از این روش ها استفاده نمایید.
همچنین توجه کنید که ارتفاع (Height) در تبدیل ها، ارتفاع از سطح بیضوی (Ellipsoidal Height) در نظر گرفته می شود که با ارتفاع از سطح دریا (MSL) متفاوت است و علت آن، وجود مدل های ژئوئید است.
جمع بندی
تبدیل مختصات جغرافیایی به کارتزین یکی از عملیات های اساسی و ضروری در مهندسی عمران، نقشه برداری و GIS است. در این مقاله، با استفاده از کتابخانه های متفاوت و تنها با چند خط کد، این تبدیل ها را پیاده سازی کردیم. این کدها را می توان به راحتی در پروژه های مختلف برای:
· محاسبه فواصل دقیق
· یکپارچه سازی داده های مکانی
· توسعه برنامه های مبتنی بر موقعیت
· ساخت مدل های سه بعدی
استفاده کرد. همچنین امکان تبدیل به سیستم های مختصات دیگری مانند UTM نیز وجود دارد که کاربردهای گسترده ای در نقشه برداری و مهندسی عمران دارد.
اگر تمایل دارید تا به کتابخانه ها و ابزارهای بیشتری برای استفاده در پروژه های خود دسترسی داشته باشید، فعالیت مورد نظر خود را از طریق شبکه های اجتماعی GeoMapZone به ما اطلاع دهید تا بهترین ابزارها را به شما معرفی کنیم.
منابع
1. Zhu, J. (1993) – "Conversion of Earth-centered, Earth-fixed coordinates to geodetic coordinates", NOAA Technical Report.
2. Olson, D. K. (1996) – "Converting Earth-Centered, Earth-Fixed Coordinates to Geodetic Coordinates", JPL Technical Report.
3. Wikipedia – Geographic coordinate conversion


