رابطه‌ها

تاریخ بازبینی ۱۳۹۶/۰۳/۱۶

در راهنمای مبتدیان توضیح دادیم که در OpenStreetMap سه نوع شی را می‌توان ترسیم کرد: نقطه‌ها (گره‌ها)، خط‌ها (راه‌ها) و چندضلعی‌ها (راه‌های بسته). خط‌ها دارای نقاط متعددند و خود خط صفاتی دارد که آن را تعریف می‌کند. چندضلعی‌ها همان خط‌ها هستند، به جز اینکه آن خط باید در جایی که از آن شروع شده به پایان برسد تا یک شکل ایجاد کند.

اما در حقیقت، در OpenStreetMap یک نوع شیء دیگر نیز وجود دارد که رابطه (relation) نامیده می‌شود و برای سادگی بیشتر، آموزش آن را به تعویق انداختیم. بنابراین سه نوع شیء اصلی در OSM عبارت‌اند از: نقطه، خط و رابطه. همان‌طور که یک خط از نقاط دیگر تشکیل شده، رابطه نیز از گروهی از اشیای دیگر تشکیل شده است که می‌توانند چند نقطه، خط یا چندضلعی باشند. اگر به دنبال پیشرفت مهارت‌های ویرایشی خود هستید، درک و شناخت نحوهٔ درست ویرایش ریلیشن‌ها مهم است.

به عنوان مثال، تصور کنید می‌خواهید ساختمانی را رسم کنید که حیاط‌هایی در مرکزش دارد. شما نیاز دارید یک چندضلعی دور ساختمان بکشید و چندضلعی‌های دیگری دور حیاط‌ها بکشید که نشان دهد این قسمت‌ها جزو ساختمان نیست. این مثالی از رابطه است. این رابطه شامل چندین چندضلعی می‌شود. خصوصیت‌های ساختمان را به رابطه اضافه می‌کنیم و نه به چندضلعی‌ها.

An example of a multipolygon

رابطه‌ها برای نشان‌دادن هر چیزی که برای تعریف‌شدن نیاز به مجموعه‌ای از اشیا دارد به کار می‌روند. مثال‌های دیگر عبارت است از مسیرهای اتوبوس (مجموعه‌ای از خطوط)، اشیای طولانی و پیچیده (رودخانه‌ها یا جاده‌ها) یا تعدادی چندضلعی که همگی قسمتی از یک مکان هستند (مانند ساختمان‌های یک دانشگاه).

به‌طور عمده در OSM با چهار نوع رابطه مواجه می‌شوید: Multipolygon (به معنی چند-چندضلعی)، Route (مسیر)، Boundary (مرز) و Restriction (محدودیت. مانند گردش به چپ ممنوع). در این قسمت مولتی‌پلیگون و مسیرها را پوشش می‌دهیم.

ایجاد ریلیشن مولتی‌پلیگون

بیایید ببینیم چگونه یک رابطهٔ multipolygon مانند آنچه در بالا نشان داده شده، ایجاد کنیم.

  • ابتدا، شکل‌های خود را بکشید. در این مورد، ما سه چندضلعی، یک مستطیل بیرونی و دو مستطیل کوچک‌تر رسم خواهیم کرد.

Multipolygon ways

  • تمام چندضلعی‌ها را انتخاب کنید. به یاد داشته باشید می‌توانید اشیای مختلف را با نگه‌داشتن کلید SHIFT و کلیک روی هر یک انتخاب کنید.
  • از منو گزینهٔ Tools ->‏ Create multipolygon را انتخاب کنید.
  • پنجرک تگ‌ها اکنون این مولتی‌پلیگون جدید را نشان می‌دهد.

New mp object

  • روی دکمهٔ ویرایش کلیک کنید.

  • حالا باید پنجرهٔ ویرایشگر رابطه را ببینید. این قسمت کمی پیچیده است زیرا اکنون برچسب‌ها را به مجموعه‌ای از خط‌ها اضافه می‌کنید.

Building relation

  • دقت کنید که در قسمت بالای پنجره، تگ‌های رابطه قرار دارد. این تگ‌ها همان کارهایی را انجام می‌دهند که تگ‌ها همیشه انجام می‌دهند.
  • در پایین لیستی از اعضای رابطه وجود دارد. این رابطه سه عضو دارد؛ یعنی همین سه تا راه که بخشی از رابطهٔ ما هستند.
  • توجه داشته باشید که در حال حاضر یک تگ برای ما تعریف شده است: type=multipolygon. باید تگ دیگری اضافه کنیم تا مشخص کنیم این رابطه چه نوع شیئی را نشان می‌دهد. اینجا باید یک تگ building=yes اضافه کنیم.
  • در کادر تگ کلیک کنید و این تگ را اضافه نمایید.

Building yes

  • در حال حاضر نقشها به‌درستی به راه‌ها اختصاص داده شده است. هر عضو رابطه، یک نقش (role) دارد که نشان می‌دهد هدف آن عضو چیست. در این مورد، نقش چندضلعی بیرونی را باید outer تعریف کرد و نقش دو عدد چندضلعی داخلی باید inner تعریف شود. این‌ها نقش‌هایی است که برای عضوهای یک multipolygon امکان‌پذیر است.

  • اکنون با کلیک بر روی OK رابطهٔ مولتی‌پلیگون شما کامل است!

New multipolygon

هنگامی که یک multipolygon مانند این ایجاد می‌کنید، روی نقشه همانند شکل زیر رندر می‌شود:

Multipolygon in Mapnik

از مولتی‌پلیگون‌ها برای هر شیء پیچیده‌ای که نیاز به تعدادی چندضلعی درونی و بیرونی دارد، مانند یک ساختمان یا یک رودخانه با خشکی‌هایی در داخل آن، استفاده کرد. اطلاعات بیشتر دربارهٔ مولتی‌پلیگون‌ها را می‌توانید در ویکی OSM پیدا کنید.

رابطه‌های مسیر

رابطه‌ها برای نشان‌دادن مسیرهای طولانی نیز مفید هستند. به‌عنوان مثال، یک مسیر اتوبوس یا دوچرخه که از قطعه‌های مختلف جاده‌ای تشکیل شده‌است. برای تعریف چنین مسیری، می‌توانیم یک رابطه ایجاد کنیم که تمام قطعه‌های جاده‌ای که بخشی از مسیر هستند را شامل می‌شود. عارضه‌های بیشتر، مانند ایستگاه‌های اتوبوس نیز می‌توانند به‌عنوان عضوی از رابطهٔ مسیر باشند.

Route relation

بیایید ببینیم در JOSM چگونه برای مسیر اتوبوس رابطه ایجاد کنیم:

  • ابتدا همهٔ مسیرهایی که اتوبوس از آن‌ها می‌گذرد را انتخاب کنید. اگر فقط بخشی از یک خیابان متعلق به رابطه باشد، لازم است بعضی از خیابان‌ها را به قطعات مجزا تقسیم کنید. برای این کار می‌توانید از ابزار Split Way استفاده کنید.
  • هنگامی که تمام قطعات انتخاب شدند، به Presets ->‏ Transport ->‏ Public Transport ->‏ Public Transport Route (Bus) بروید.

Public transport preset

  • پنجره‌ای جدید ظاهر می‌شود که در آن می‌توانید اطلاعاتی را وارد کنید که به کل مسیر اعمال می‌شود.

New route relation

مهم است که نوع مسیر را از منوی اُفتان بالای صفحه مشخص کنید. برای مسیرهای اتوبوس دو گزینه در دسترس است، bus (اتوبوس) و trolleybus (اتوبوس برقی). همچنین به‌طور معمول بهتر است name (نام)، reference (شمارهٔ مرجع)، from (ایستگاه مبدأ) و to (ایستگاه مقصد) نیز وارد شود.

  • روی New Relation کلیک کنید. همانند زمانی که multipolygon ساختید، پنجرهٔ رابطه باز می‌شود.

Bus route relation

  • توجه داشته باشید که از پیش تگ‌هایی وجود دارد که رابطه را به‌عنوان یک مسیر تعریف می‌کنند. به‌جای type=multipolygon،‏ type=route را داریم. همچنین تگی داریم که در عوض انواع دیگر مسیر، آن را به‌عنوان یک مسیر اتوبوس تعریف می‌کند.
  • حالا شاید فکر کنید که نقش اعضا چه باید باشد؟ خب، در مورد route، نیازی به تعریف نقش اعضا نداریم. با خالی‌گذاشتن role، نرم‌افزار به‌سادگی متوجه می‌شود که آن‌ها بخشی از مسیر هستند. همچنین می‌توانیم نقش هر قطعه را route بنویسیم، اما لازم نیست.
  • روی OK کلیک کنید و رابطهٔ route شما کامل خواهد شد!

اگر لیستی از تمام رابطه‌های موجود در نقشه را می‌خواهید، می‌توانید با کلیک روی این دکمه در سمت چپ پنجرک رابطه‌ها را باز کنید: relation panel button این کار پنجرکی را باز می‌کند که در آن می‌توانید رابطه‌های جدیدی انتخاب، ویرایش و ایجاد کنید.

خلاصه

فهمیدن ریلیشن‌ها ممکن است دشوار باشد، از طرفی لازم نیست که همیشه از آن‌ها استفاده کرد. اما لازم است که دربارهٔ آن‌ها بدانیم. هرچندوقت‌یکبار ممکن است متوجه شوید که برای کشیدن صحیح چیزی، نیاز به یک رابطه دارید و آن هنگام می‌توانید از این دانش استفاده کنید. اطلاعات بیشتری نیز از ویکی OSM پیدا کنید تا به شما کمک کند نقشهٔ ریلیشن‌هایتان را به‌درستی بکشید.