عرض جغرافیایی و طول جغرافیایی دو عددی هستند که هر نقطه روی زمین را تعریف میکنند. عرض جغرافیایی میگوید چقدر به شمال یا جنوب هستید. طول جغرافیایی میگوید چقدر به شرق یا غرب. این دو با هم یک جفت مختصات میسازند که هر نقشه، دستگاه GPS، geocoding API یا دستیار هوش مصنوعی میتواند با آن کار کند.
اکثر توسعهدهندگان تا وقتی باگی پیدا نشود، بدون فکر کردن از مختصات استفاده میکنند. این راهنما توضیح میدهد هر عدد واقعاً چه چیزی را اندازه میگیرد، قراردادهای فرمت که در محیط production با آنها روبرو میشوید، و جابهجایی که بیش از هر اشتباه دیگری باگ نقشه ایجاد میکند.
عرض جغرافیایی چه چیزی را اندازه میگیرد
عرض جغرافیایی زاویهای است، برحسب درجه، بین یک نقطه روی سطح زمین و صفحه استوا. خط استوا 0 درجه است. قطب شمال +90 درجه است. قطب جنوب -90 درجه است. خطوط عرض جغرافیایی (که parallels نام دارند) به صورت افقی دور کره میچرخند و در همه جا با هم فاصله یکسانی دارند.
یک درجه عرض جغرافیایی همیشه حدود ۱۱۱ کیلومتر روی زمین است، بدون توجه به اینکه کجا هستید. این ثبات است که عرض جغرافیایی را برای همه چیز از برنامهریزی پرواز تا علم اقلیمشناسی مفید میکند.
طول جغرافیایی چه چیزی را اندازه میگیرد
طول جغرافیایی زاویه بین یک نقطه و نصفالنهار اول است، یعنی خطی که از گرینویچ لندن با 0 درجه طول جغرافیایی میگذرد. طول جغرافیایی از -180 درجه (غرب) تا +180 درجه (شرق) است. دو مقدار در سمت مقابل کره زمین در خط تاریخ بینالمللی به هم میرسند.
برخلاف عرض جغرافیایی، فاصله زمینی یک درجه طول جغرافیایی بستگی به موقعیت شما دارد. در خط استوا، یک درجه طول جغرافیایی حدود ۱۱۱ کیلومتر است. در هلسینکی حدود ۵۶ کیلومتر است. در قطبها به صفر میرسد، چون همه خطوط طول جغرافیایی در آنجا به هم میرسند.
این همگرایی است که باعث میشود محاسبه فاصله روی نقشه مستوی برای مسیرهای طولانی یا نقاط نزدیک به قطبها خطا داشته باشد. توابع فاصله صحیح از فرمول haversine یا vincenty استفاده میکنند که انحنای زمین را در نظر میگیرند.
جابهجایی معروف (و چطور از آن جلوگیری کنیم)
رایجترین اشتباه در کد geospatial محیط production، جابهجا کردن عرض جغرافیایی و طول جغرافیایی است. دلیل آن این است که فرمتهای مختلف قراردادهای متفاوتی دارند:
- نمایش انسانخوان، آدرسها، برنامههای GPS: عرض جغرافیایی اول.
48.8584, 2.2945یعنی lat 48.8584، lng 2.2945. - GeoJSON، WKT، اکثر استانداردهای geospatial: طول جغرافیایی اول.
[2.2945, 48.8584]همان نقطه است. - MapAtlas Geocoding API و اکثر REST APIهای نسل اول: عرض جغرافیایی اول در کلیدهای JSON (
lat،lng)، اما قراردادها متفاوتاند پس مستندات endpoint را بررسی کنید.
اگر یک feature از GeoJSON بیرون میکشید و در یک کتابخانه نقشه که [lat, lng] انتظار دارد قرار میدهید، باید جابهجا کنید. اگر فراموش کنید، نقطه شما در نیمکره اشتباه میافتد و دو روز بعد هنوز تعجب میکنید چرا "پاریس" در جایی کنار ساحل آفریقا ظاهر میشود.
یک قانون دفاعی: در هر تابعی که مختصات میگیرد، پارامترها را صریح نامگذاری کنید. function distance(latA, lngA, latB, lngB) سختتر از function distance(a, b) که a و b آرایههای مبهم هستند اشتباه میشود.
Decimal Degrees در مقابل DMS
رایجترین فرمتی که در کد میبینید decimal degrees (DD) است: 48.8584, 2.2945. این چیزی است که هر API و کتابخانه مدرن انتظار دارد.
گاهی اوقات با degrees-minutes-seconds (DMS) هم روبرو میشوید: 48 deg 51' 30" N, 2 deg 17' 40" E. DMS از سنت دریانوردی و هوانوردی قدیمیتر میآید و هنوز در نقشههای رسمی کاغذی و برخی دستگاههای GPS سختافزاری استفاده میشود. تبدیل DMS به DD ساده است: DD = degrees + (minutes / 60) + (seconds / 3600)، با منفی کردن برای جنوب یا غرب.
برای ذخیرهسازی، decimal degrees با ۵ تا ۶ رقم اعشار تمام موارد واقعی را پوشش میدهد. بیش از ۶ رقم دقت نمایشی است، چون دستگاههای GPS واقعی بهندرت دقت بهتر از چند سانتیمتر دارند.
به چند رقم اعشار دقت نیاز دارید؟
هر رقم اعشار از عرض یا طول جغرافیایی موقعیت را حدوداً ۱۰ برابر دقیقتر میکند:
- 0 رقم اعشار (
48): حدود ۱۱۱ کیلومتر، سطح کشور - 1 رقم (
48.8): حدود ۱۱ کیلومتر، سطح شهر - 2 رقم (
48.86): حدود ۱.۱ کیلومتر، سطح محله - 3 رقم (
48.858): حدود ۱۱۰ متر، سطح خیابان - 4 رقم (
48.8584): حدود ۱۱ متر، سطح ساختمان - 5 رقم (
48.85844): حدود ۱ متر، سطح درگاه - 6 رقم (
48.858445): حدود ۱۱ سانتیمتر، حد GPS - 7+ رقم: دقت کاذب، از دقت واقعی GPS فراتر میرود
دقتی را انتخاب کنید که با کاری که انجام میدهید تناسب داشته باشد. ذخیره ۸ رقم اعشار برای یک مورد استفاده "تحویل به این محله" فضا هدر میدهد و دقت داده را گمراهکننده نشان میدهد.
مختصات و Projection های نقشه
خود اعداد اندازهگیریهای زاویهای روی سطح زمین هستند، اما یک صفحه مستوی است. هر projection نقشه یک تابع ریاضی است که عرض و طول جغرافیایی را به pixel x,y برای نمایش تبدیل میکند.
Web Mercator (EPSG:3857) همان projectionای است که Google Maps، OpenStreetMap و تقریباً هر نقشه تعاملی وب از آن استفاده میکنند. شکل و جهت را حفظ میکند اما مساحت را تحریف میکند: گرینلند به اندازه آفریقا به نظر میرسد، در حالی که در واقعیت آفریقا چهارده برابر بزرگتر است. برای نقشههای production، این تحریف تا زمانی که کاربران بتوانند مکانها را تشخیص دهند مهم نیست. برای نقشههای موضوعی که مساحتها را مقایسه میکنند (جمعیت، نتایج انتخابات، اقلیم)، به جای آن از projection equal-area استفاده کنید.
مقادیر مختصاتی که ذخیره میکنید همیشه در WGS84 عرض و طول جغرافیایی هستند. Projection در زمان رندر اعمال میشود. ترکیب مختصات فضای projection با مختصات WGS84 در پایگاه داده، منشأ کلاسیک دیگری از باگهاست.
ذخیره و ایندکس کردن مختصات
در اکثر پایگاههای داده، عرض و طول جغرافیایی را به صورت دو ستون عددی ذخیره کنید (یا geometry(point, 4326) اگر از PostGIS استفاده میکنید). برای جستجوی نقطه در یک bounding box، یک B-tree index روی هر ستون کافی است. برای کوئریهای "نزدیکترین همسایه"، به یک spatial index نیاز دارید: PostGIS GIST، MySQL SPATIAL، یا یک geohash bucket.
ذخیره به صورت رشته ("48.8584,2.2945") لحظهای که نیاز به فیلتر، مرتبسازی یا محاسبه فاصله داشته باشید مشکلساز میشود. این کار را نکنید.
چطور دستیارهای هوش مصنوعی از مختصات استفاده میکنند
دستیارهای هوش مصنوعی مدرن (ChatGPT، Perplexity، Gemini) از طریق مختصات درباره مکانها استدلال میکنند، دقیقاً مثل برنامههای انسانی. وقتی کاربری میپرسد "نزدیکترین کافه به من کجاست"، دستیار موقعیت کاربر را به یک مختصات تبدیل میکند، یک places API را کوئری میکند و نتایج را بر اساس فاصله haversine رتبهبندی میکند. مختصات بهدرستی تگشده در دادههای ساختاریافته شما (JSON-LD خاصیت geo، schema GeoCoordinates) به دستیارهای هوش مصنوعی کمک میکند لیست شما را نسبت به رقیبی با دادههای مکانی مبهمتر انتخاب کند.
برای لیستهایی که از مرزها عبور میکنند یا در چندین شهر رقابت میکنند، مختصات ابهام را برطرف میکند. "پاریس" مبهم است: یکی در فرانسه است و یکی در تگزاس. مختصات اینگونه نیست.
چرا MapAtlas
MapAtlas پلتفرم نقشه اروپایی است که برای عصر جستجوی هوش مصنوعی ساخته شده. هر geocode، reverse lookup، isochrone و routing call مختصات WGS84 تمیز با ترتیب سازگار، انطباق GDPR و میزبانی EU را برمیگرداند. ابزار Coordinates Lookup را امتحان کنید تا هر آدرسی را فوری به lat/lng تبدیل کنید، یا راهنمای What Is a Geocode را برای بررسی عمیقتر نحوه کارکرد geocoding APIها در محیط production بخوانید.
سوالات متداول
تفاوت طول جغرافیایی و عرض جغرافیایی چیست؟
عرض جغرافیایی موقعیت شمال-جنوب روی زمین را اندازه میگیرد (بین -90 در قطب جنوب و +90 در قطب شمال)، در حالی که طول جغرافیایی موقعیت شرق-غرب را نشان میدهد (بین -180 و +180، با 0 در نصفالنهار گرینویچ). خطوط عرض جغرافیایی به صورت افقی دور کره زمین میچرخند و همه موازی هم هستند. خطوط طول جغرافیایی عمودی هستند و در قطبها به هم میرسند. این دو عدد با هم یک جفت یکتا تشکیل میدهند که هر مکانی روی کره زمین را مشخص میکند.
کدام یک اول میآید، طول یا عرض جغرافیایی؟
بستگی به فرمت دارد. در فرمتهای انسانخوان (Google Maps، برنامههای GPS، آدرسها)، عرض جغرافیایی اول نوشته میشود: 48.8584, 2.2945 یعنی lat 48.8584، lng 2.2945. در فرمتهای ماشینخوان مثل GeoJSON و اکثر استانداردهای geo، طول جغرافیایی اول است: [2.2945, 48.8584]. این جابهجایی رایجترین منشأ باگهای نقشه در محیط production است. همیشه قرارداد فرمت مورد استفاده خود را بررسی کنید.
دقت مختصات GPS چقدر است؟
شش رقم اعشار (مثلاً 48.858444) دقتی حدود ۱۱ سانتیمتر در خط استوا دارد. پنج رقم اعشار (48.85844) تقریباً ۱ متر دقت دارد. چهار رقم (48.8584) حدود ۱۱ متر است که برای نقشهبرداری خیابانی کافی است. برای اکثر موارد عملی، ۶ رقم اعشار بیش از حد کافی است و ۵ رقم معمولاً کافی است. ذخیره رقمهای بیشتر فضا را هدر میدهد و دقت کاذب ایجاد میکند.
چرا خطوط طول جغرافیایی در قطبها به هم میرسند؟
خطوط عرض جغرافیایی موازی هستند چون همه از محور زمین به عنوان مرجع استفاده میکنند. خطوط طول جغرافیایی برخلاف آن، دوایر بزرگی هستند که از قطب شمال و جنوب میگذرند. وقتی به قطبها نزدیک میشوید، فاصله شرق-غرب بین دو مقدار طول جغرافیایی کم میشود: در خط استوا یک درجه طول جغرافیایی حدود ۱۱۱ کیلومتر است، اما در قطبها به صفر میرسد. به همین دلیل محاسبه فاصله با مختصات مستوی برای عرضهای جغرافیایی بالا خطا دارد و باید از فرمول haversine یا vincenty استفاده کرد.

