معرفی
در سال 2022، مجله زیبایی و درمانی آذروت توانایی خودکفایی در خدمات جغرافیایی خود را کسب کرد. این انتقال، گامی حیاتی به سوی استفاده از نقشهای که داخلیسازی شده و ویژه بازاری است که مجله زیبایی و درمانی آذروت در آن فعالیت میکند، بود. اکنون که ما کنترل کامل بر لایه نقشه داریم، میتوانیم اطلاعات بیشتری به آن اضافه کنیم یا آن را براساس نیازهای سرویسهایی که بر روی آن اجرا میشوند، بهبود بخشیم. یکی از جنبههای کلیدی که این انتقال برای ما به تحقق رساندند، امکان ایجاد دادههای فوقمحلی در سطح نقشه بود.
به عنوان مثال، با تعیین کشوری که یک جاده در آن قرار دارد، میتوانیم به طور خودکار زبان رسمی آن کشور را استنتاج کرده و نام خیابان را به آن زبان نشان دهیم. در مثال دیگر، با دانستن کشوری که یک جاده در آن قرار دارد، میتوانیم به طور خودکار به سمت رانندگی (چپ یا راست) استنتاج ببریم که بهبود تجربه راهبری را به همراه دارد. علاوه بر این، این قابلیت به ما این امکان را میدهد که به طور کارآمدی با سناریوهای مختلف برخورد کنیم. به عنوان مثال، اگر بدانیم یک جاده قسمتی از یک همکلانی محافظتشده است، منطقهای که در آن رانندگان ما با محدودیت دسترسی مواجه میشوند، میتوانیم عبور از آن منطقه را ممنوع کنیم.
این تنها چند مثالی از امکاناتی است که از داشتن کنترل کامل بر لایه نقشه به دست میآید. با داشتن نقشه داخلی، ما میتوانیم نقشههایمان را با بازارهای خاصی هماهنگ کنیم و تجربه بهتری برای رانندگان همکار و مشتریانمان فراهم کنیم.
زمینه
برای این همه چیز قابلیت دارد، ابتدا باید جادهها را درون نقشه محلی کنیم. هدف ما این بود که دادههای فوقمحلی را در نقشه قرار دهیم، که به دادههایی اشاره دارد که ویژه یک منطقه خاص مانند یک کشور، شهر یا حتی یک بخش کوچکتر از شهر مانند یک همکلانی محافظتشده مربوط میشود. در عین حال، هدف ما این بود که نقشه را به فراوانی بروز کنیم، بنابراین باید راهی مناسب برای پردازش این مقدار بزرگ از دادهها را پیدا کنیم و در عین حال هزینهای مقرون به صرفه داشته باشیم.
روش
در قسمتهای زیر مقاله، ما از بخشی از نقشه آسیای جنوب شرقی برای ارائه تصاویری از مفاهیم مورد بحث استفاده خواهیم کرد.
در شکل 1، تصویر 1، نمایشی از شبکه جاده، جادههای متعلق به این منطقه، آورده شده است. خطوط رنگی در تصویر 2 مرزها را که کشورها را در همان منطقه شناسایی میکنند نشان میدهند. با ترکیب اطلاعات از تصویر 1 و تصویر 2، میتوانیم استنتاج کنیم که سطح کلی که درون یک مرز مشخص قرار گرفته است میتواند همان مجموعه ویژگیهای مشترک را که در تصویر 3 نشان داده شده است، داشته باشد. در تصویر 4، سپس با اضافه کردن جادههای فوقمحلی برای هر منطقه ادامه میدهیم.
برای این کار، باید راهی برای محلیسازی هر جاده و شناسایی کشور مرتبط با آن پیدا کنیم. پس از اتمام این عملیات محلیسازی، میتوانیم همه این اطلاعات ویژه مرز مورد نظر را بر روی هر جاده به طور جداگانه تکرار کنیم. این اطلاعات شامل جزئیاتی مانند نام کشور، سمت رانندگی و زبان رسمی است. ما میتوانیم حتی بیشتر اطلاعاتی را استنتاج ببریم و دادههای فوقمحلی را اضافه کنیم. به عنوان مثال، در ویتنام، میتوانیم به طور خودکار از ورود موتورسیکلت به محورهای جادهای جلوگیری کنیم.
تخصیص هر جاده در نقشه به یک منطقه خاص، مانند یک کشور، منطقه خدمات یا زیربخش، یک وظیفه پیچیده است. پس چگونه میتوانیم این کار را به طور کارآمد انجام دهیم؟
پیادهسازی
روشی سادهتر برای تست شامل شدن هر جاده در هر محدوده به حدود یافتن است. اما این کار آسانتر گفته شده از آن است. با نزدیک به 30 میلیون بخش جاده در نقشه آسیای جنوب شرقی و بیش از 10 هزار منطقه، هزینه محاسباتی تعیین شامل شدن یا تلاقی بین یک چندضلعی و یک چندضلعی گران است.
راهحل ما برای این چالش شامل جایگزین کردن عملیات گرانتر اما دقیق با یک تقریب مناسب است. ما یک انتیته پروکسی، یعنی geohash، معرفی میکنیم و از آن برای تقریب محدودهها و همچنین محلیسازی جادهها استفاده میکنیم.
ما جایگزینی دقیق با سری عملیات سادهتر و کمهزینه میکنیم. ابتدا، ما یک پیشمحاسبه ارزان قیمت انجام میدهیم که تمامی geohashهایی که قسمتی از یک منطقه خاص است یا در مرز تعیین شده واقع میشوند، را شناسایی میکند. سپس geohashهایی که جادهها متعلق به آنها هستند را شناسایی میکنیم. در نهایت، از این مقادیر پیشمحاسبهشده برای اختصاص جادهها به مناطق مربوطه استفاده میکنیم. این فرآیند همچنین در زمان پردازش کم هزینه است.
با توجه به مساحت بزرگی که ما پردازش میکنیم، از تکنیکهای داده بزرگ برای توزیع اجرا بر روی چندین گره و در نتیجه افزایش سرعت عمل استفاده میکنیم. ما میخواهیم نقشه را روزانه ارائه دهیم و این یکی از عملیاتهای بسیاری است که قسمتی از فرآیند ساخت نقشه است.
geohash چیست؟
برای درک بیشتر پیادهسازی ما، ابتدا مفهوم geohash را توضیح میدهیم. geohash شناسهای منحصربهفرد از یک منطقه خاص روی زمین است. ایده اصلی این است که زمین به ناحیههایی از اندازهبندی کاربر تقسیم میشود و به هر ناحیه شناسهای در نظر داده میشود که به آن geohash معروف است. برای یک موقعیت داده شده در روی زمین، الگوریتم geohash عرض و طول جغرافیایی آن را به یک رشته تبدیل میکند.
geohash از یک سیستم رمزگذاری با الفبای پایه ۳۲ استفاده میکند که شامل کاراکترهایی از ۰ تا ۹ و از A تا Z است، به جز A، I، L و O. تصور کنید جهان را به یک شبکه با ۳۲ خانه تقسیم کنیم. کاراکتر اول در geohash مکان اولیه یکی از این ۳۲ خانه را مشخص میکند. هر یک از این خانهها به طور متوالی به ۳۲ خانه کوچکتر تقسیم میشوند. این فرآیند تقسیم شکل را به مناطق مشخصی در جهان دقیق میکند. اضافه کردن کاراکترها به geohash باعث تقسیم بندی یک خانه میشود و تا محلی به دقیقترین منطقه ممکن میرود.
فاکتور دقت geohash اندازه خانه را تعیین میکند. به عنوان مثال، فاکتور دقت یک خانه به ارتفاع ۵۰۰۰ کیلومتر و عرض ۵۰۰۰ کیلومتر است. فاکتور دقت شش، خانهای به ارتفاع ۰.۶۱ کیلومتر و عرض ۱.۲۲ کیلومتر ایجاد میکند. علاوه بر این، فاکتور دقت نه، خانهای به ارتفاع ۴.۷۷ متر و عرض ۴.۷۷ متر ایجاد میکند. لازم به ذکر است که خانهها همیشه مربع نیستند و میتوانند ابعاد مختلفی داشته باشند.
در شکل 2، ما یک شبکه geohash ۶ و کد آن wsdt33 را نشان دادهایم.
استفاده از عملیاتهای کمهزینهتر
محاسبه شامل شدن جادهها در یک محدوده خاص، عملیاتی گران است. با این حال، تخمین هزینه دقیق آن چالشبرانگیز است زیرا به چندین عامل بستگی دارد. یک عامل، پیچیدگی خطوط مرزی است. مرزها معمولاً غیرمنظم و بسیار جزئی هستند، زیرا باید مرز واقعی را به درستی نشان دهند. پیچیدگی هندسه جاده یک عامل دیگر است که نقش مهمی در آن بازی میکند زیرا جادهها همیشه خطوط راست نیستند.
از آنجایی که این عملیات هم هزینه بالا در اصطلاحات ابرشاخته و هم زمان اجرای بالا نیاز دارد، باید راهی را برای ارزان و سریع کردن آن پیدا کنیم که نتایج مشابهی را تولید کند. با دانش اینکه پیچیدگی خطوط مرزی عامل مشکل است، ما از یک جایگزین دیگر استفاده کردیم، یک مستطیل. محاسبه شامل شدن یک چندضلعی درون یک مستطیل عملیاتی ارزان است.
پس ما این عملیات بزرگ، که هر بخش جاده را برای شامل شدن در بندری تست میکنیم، به یک سری عملیات کوچک بدل کردهایم که در آن مراحل زیر را انجام میدهیم:
- شناسایی تمام geohashهایی که قسمتی از یک منطقه خاص هستند یا به یک مرز مشخص متعلق هستند. در این فرآیند، مناطق اضافی را نیز در بر میگیریم تا اطمینان حاصل کنیم که سطح کلی درون مرز را پوشش دادهایم.برای هر بخش جاده، ما لیستی از geohashهایی را که به آن تعلق دارند، شناسایی میکنیم. یک جاده، بستگی به طول یا شکل آن، ممکن است به چندین geohash تعلق داشته باشد.
در شکل 5، ما شناسایی میکنیم که جاده به دو geohash تعلق دارد و که این دو geohash قسمتی از مرزی است که ما استفاده میکنیم.
حالا، همه ما باید کارتان را با هم جوین کنیم. این نوع عملیات، موردی خوب برای یک رویکرد داده بزرگ است زیرا به ما اجازه میدهد آن را به صورت موازی اجرا کرده و زمان پردازش را افزایش دهیم.
معامله میان دقت و قیمت
قبلاً ذکر کردیم که برای مبادله با یک تقریب مناسب، ما دقت را معامله کردهایم. حالا به بررسی معامله واقعی با این رویکرد میپردازیم.
اولین چیزی که با این رویکرد میتوان توجه کرد این است که ما دقت را به قیمت مبادله کردهایم. این رویکرد میتواند هزینه را کاهش دهد زیرا از منابع سختافزاری و زمان محاسبه کمتری استفاده میکند. با این حال، این کاهش دقت، به خصوص برای جادههایی که در نزدیکی مرزها قرار دارند، کاهش دقت را تحمل میکند زیرا ممکن است اشتباهاً طبقهبندی شوند.
بازگشت به مثال اولیه، بیایید به مورد جاده خارجی، در سمت چپ منطقه نگاه کنیم. همانطور که در شکل 6 میبینید، روشن است که جاده نیست