تقریباً هر نقشه تعاملی که تا به حال استفاده کردهاید در Web Mercator کشیده شده. Google Maps، OpenStreetMap، Mapbox، MapLibre، Apple Maps، MapAtlas: همه از همان projection استفاده میکنند که در پایگاه داده EPSG با نام EPSG:3857 شناخته میشود. دلیل ساده است: این projectionای است که بهدرستی در یک شبکه tile مقیاسبندی میشود، اشکال را در هر zoom قابل تشخیص نگه میدارد و برای تقریباً هر مورد استفاده نقشه کسبوکاری پیشفرض مناسبی است.
این راهنما توضیح میدهد این projection واقعاً چیست، چرا به روشی که میبینیم مساحت را تحریف میکند و کِی باید از چیز دیگری استفاده کنید.
یک Projection در ۳۰ ثانیه
زمین تقریباً یک کره است. صفحه کامپیوتر مستوی است. یک map projection یک تابع ریاضی است که موقعیتهای روی کره (عرض، طول جغرافیایی) را به موقعیتهای روی سطح مستوی (x, y) تبدیل میکند. هر projection چیزی را trade off میکند: شکل، مساحت، فاصله یا جهت. هیچ projection کاملی برای همه موارد استفاده وجود ندارد، به همین دلیل نقشهنگاری به عنوان یک رشته وجود دارد.
Web Mercator شکل و جهت را حفظ میکند. مساحت را تحریف میکند. هر چه از خط استوا دورتر باشید، feature ها نسبت به اندازه واقعیشان روی زمین بزرگتر به نظر میرسند.
ریاضی، در یک پاراگراف
برای طول جغرافیایی lng و عرض جغرافیایی lat بر حسب رادیان:
x = R * lngy = R * ln(tan(pi/4 + lat/2))
که R شعاع کرهای زمین استفادهشده توسط projection است (۶۳۷۸۱۳۷ متر در EPSG:3857). شبکه tile این مقادیر x,y را به مختصات پیکسل صحیح در هر سطح zoom نگاشت میکند، با zoom 0 که جهان را در یک tile ۲۵۶×۲۵۶ پوشش میدهد و هر zoom بعدی رزولوشن را دو برابر میکند.
محدوده عرض جغرافیایی در حدود +/- ۸۵.۰۵۱۱ درجه تنظیم شده چون فرمول در قطبها به بینهایت میرسد. به همین دلیل است که مناطق قطبی روی هر نقشه جهانی Web Mercator که تا به حال دیدهاید بریده میشوند.
چرا مساحتها کشیده میشوند
دلیل بزرگتر شدن تحریف مساحت به سمت قطبها این است که محور y نسبت به عرض جغرافیایی خطی نیست. جمله ln(tan(...)) باعث میشود فاصله بین خطوط عرض جغرافیایی با حرکت به شمال یا جنوب افزایش یابد. در خط استوا، یک درجه عرض جغرافیایی همان فضای عمودی یک درجه طول جغرافیایی را میگیرد. در هلسینکی، یک درجه عرض جغرافیایی تقریباً دو برابر فضای عمودی بیشتری میگیرد.
دو اثر جانبی معروف:
- گرینلند و آفریقا. روی یک نقشه جهانی Web Mercator، گرینلند تقریباً به اندازه آفریقا به نظر میرسد. در واقعیت آفریقا حدود چهارده برابر بزرگتر است. همین توهم انتارکتیکا را مانند یک نوار پیوسته در انتهای جهان نشان میدهد.
- روسیه. روسیه بسیار بزرگ به نظر میرسد چون بیشتر آن در نوار عرض جغرافیایی بالا قرار دارد که تحریف عمودی مساحت ظاهری آن را ضرب میکند.
برای نقشههای سطح خیابانی، هیچ کدام از اینها مهم نیست. یک محله در برلین و یک محله در سیدنی هر دو تقریباً به شکل واقعی خود رندر میشوند. اما برای نقشههای موضوعی که مقادیر را در سراسر قارهها مقایسه میکنند، این تحریف یک مشکل واقعی است.
EPSG:3857 در مقابل EPSG:4326
هر دو EPSG code را در هر codebase geospatial میبینید.
- EPSG:4326 (WGS84 lat/lng): زاویهها. روشی که مختصات ذخیره میکنید. روشی که GPS آنها را گزارش میدهد. روشی که GeoJSON آنها را encode میکند. این سیستم مختصات جهانی است.
- EPSG:3857 (Web Mercator): یک projection. روشی که مختصات برای نمایش به پیکسل تبدیل میشوند.
در محیط production، همه جا در 4326 کار کنید جز در مرز رندر. ستونهای PostGIS: geometry(point, 4326). payload های JSON: [lng, lat] در WGS84. ورودی کتابخانه نقشه: مختصات 4326 که رندرر بهطور داخلی project میکند.
ذخیره داده در 3857 تقریباً همیشه اشتباه است. لحظهای که نیاز به محاسبه فاصله، کوئری با یک map provider متفاوت یا pipe کردن از طریق یک GIS tool داشته باشید، باید به 4326 برگردید و تبدیل دقت را هدر میدهد.
چرا Web Mercator وب را برد
وقتی Google در سال ۲۰۰۵ Maps را راهاندازی کرد، تیم Web Mercator را انتخاب کرد چون سادهترین projectionای بود که در هر سطح zoom tileهای مربعی تولید میکرد. Tileهای مربعی بهتمیزی در یک هرم توان دو جا میشوند: zoom 0 یک tile، zoom 1 چهار تا، zoom 2 شانزده تا. هر map provider اصلی دیگری از همان قرارداد پیروی کرد چون tileset ها باید قابل تعویض میبودند. بیست سال بعد، Web Mercator پیشفرض نانوشته است. تقریباً هر استایل نقشه، هر routing engine، هر overlay تحلیلی مگر اینکه خلافش گفته شود، 3857 را فرض میکند.
کِی باید از چیز دیگری استفاده کنید
برای تقریباً هر نقشه تعاملی شهری، منطقهای یا کشوری از Web Mercator استفاده کنید. در دو سناریو projection را عوض کنید:
- نقشههای موضوعی جهانی که مقادیر را در مناطق مقایسه میکنند. تراکم جمعیت، نتایج انتخابات، متغیرهای اقلیمی، هر چیزی که مساحت بصری معنا دارد. از Albers Equal Area برای آمریکای شمالی، Lambert Conformal برای اروپا، Mollweide یا Equal Earth برای کل کره زمین استفاده کنید.
- نقشههای قطبی. در نزدیکی قطبها Web Mercator از هم میپاشد. برای قطب شمال و جنوب از projection polar stereographic استفاده کنید.
برای تحلیل GIS داخلی (spatial joins، distance buffers، تحلیل overlay)، در WGS84 یا در یک سیستم projected محلی طراحیشده برای کشور مورد نظر (UTM zones، ETRS89 برای اروپا) کار کنید. فقط در زمان نمایش reproject کنید.
چطور MapAtlas با آن کنار میآید
MapAtlas برای محصول Dynamic Maps بهطور پیشفرض tile های Web Mercator serve میکند، با همان schema EPSG:3857 که هر کتابخانه نقشه وب مدرن انتظار دارد. مختصاتی که از Geocoding API و Search API برگردانده میشوند همیشه در WGS84 lat/lng (EPSG:4326) هستند، بنابراین مختصات source-of-truth را ذخیره میکنید و میگذارید رندرر projection را مدیریت کند. برای بررسی عمیقتر trade off های projection، راهنمای Map Projections را ببینید.
سوالات متداول
Web Mercator چیست؟
Web Mercator همان map projectionای است که Google Maps، Bing Maps، Apple Maps، OpenStreetMap، Mapbox، MapLibre و MapAtlas و تقریباً هر نقشه تعاملی وب از آن استفاده میکنند. این یک گونه از projection کلاسیک Mercator است که برای مدل tile وب تطبیق یافته. شناسه آن در پایگاه داده geodetic EPSG، EPSG:3857 است. این projection عرض و طول جغرافیایی (که زاویههایی روی یک کره هستند) را به مختصات x,y روی یک نقشه مستوی تبدیل میکند.
چرا Web Mercator مساحت را تحریف میکند؟
Web Mercator زاویهها و اشکال را به صورت محلی حفظ میکند اما feature هایی را که از خط استوا دورترند بزرگتر نشان میدهد. در استکهلم یا آنکوریج، مساحتها تقریباً دو برابر اندازه واقعیشان به نظر میرسند. به همین دلیل گرینلند روی نقشه Web Mercator به اندازه آفریقا به نظر میرسد، در حالی که در واقعیت آفریقا چهارده برابر بزرگتر است.
تفاوت EPSG:3857 و EPSG:4326 چیست؟
EPSG:4326 همان WGS84 عرض و طول جغرافیایی است، روش جهانی توصیف موقعیت روی زمین به صورت دو زاویه. EPSG:3857 همان Web Mercator است، یک projection مستوی x,y از آن زاویهها. مختصات را در 4326 ذخیره میکنید. آنها را در 3857 نمایش میدهید. کتابخانههای نقشه مدرن تبدیل را به صورت خودکار انجام میدهند، اما ترکیب دو سیستم مختصات در پایگاه داده یا کد یک منشأ کلاسیک باگ است.
کِی باید از projection دیگری استفاده کنم؟
برای هر نقشه تعاملی عمومی Web Mercator استفاده کنید: street view، ناوبری، locator فروشگاه، مسکن، ردیابی ناوگان. برای نقشههای موضوعی که مقادیر را در مناطق مقایسه میکنند به projection equal-area (Albers، Lambert، Mollweide) بروید. برای مناطق قطبی یا view گلوب، از projection azimuthal استفاده کنید. برای تحلیل GIS داخلی، در WGS84 lat/lng کار کنید و فقط در زمان نمایش project کنید.

