JOSM - ساخت پیش‌تنظیم‌های سفارشی

در فصل قبل دیدیم که منوهای پیش‌تنظیم سفارشی را چگونه می‌توانیم به JOSM اضافه کنیم. در این فصل چگونگی ساخت فایل‌های پیش‌تنظیم شخصی را پوشش خواهیم داد.

هشدار! این موضوعی پیشرفته است… در جریان باشید!

مقدمه‌ای بر XML

به‌منظور ایجاد منوی Presets شخصی، ابتدا باید با زبانی به نام XML آشنایی داشته باشیم. اگر از قبل با XML آشنا هستید، به بخش بعدی بروید.

XML، مخفف Extensible Mark-up Language، یک زبان رایانه‌ای شبیه به HTML است. تفاوت کلیدی‌شان در این است که XML برای انتقال داده و نه نمایش آن طراحی شده است. بسیاری از برنامه‌های کاربردی در اینترنت از جمله OpenStreetMap برای داده‌رسانی از XML استفاده می‌کنند. XML از عناصر استفاده می‌کند و هر عنصر می‌تواند عناصر کودک دیگری را در خود داشته باشد. به‌عنوان مثال، بیایید تصور کنیم که می‌خواهیم یک فایل XML ایجاد کنیم که حاوی دادهٔ مربوط به منوی یک رستوران است. باید یک عنصر ریشه برای نگهداری تمام دادهٔ مربوط به منو ایجاد کنیم. عنصر ریشه یک برچسب باز و یک برچسب بسته خواهد داشت، مانند این:

  <menu>
  ... هر اطلاعاتی که می‌خواهیم در منوی خودمان داشته باشیم ...
  </menu>

اطلاعات در داخل عنصر قرار دارد و در هر عنصری، می‌توان عناصر بیشتری قرار داد.

  <menu>
    <item name=“Hamburger”>
      <cost>400</cost>
      <description>کتلت خوشمزهٔ گوشت گاو</description>
    </item>
      <item name=“Nasi Goreng”>
      <cost>200</cost>
      <description>پلو اندونزیایی</description>
    </item>
  </menu>

در این مثال دو عنصر <item> را درون عنصر <menu> قرار داده‌ایم تا دو آیتم مختلف موجود در منو را توصیف کنند. هر آیتم خود حاوی دو عنصر <cost> و <description> است. همچنین توجه کنید که چگونه name=”Hamburger” در داخل تگ <item> نوشته شده است. به این خصیصه (attribute) می‌گوییم و اطلاعاتی درمورد عنصر اضافه می‌کند.

لغت‌شناسی XML

  • عنصر ریشه: بیرونی‌ترین عنصر سند XML، که آنچه را در درون دارد توصیف می‌کند
  • عنصر: هر شیء XML، که با تگ باز و تگ بسته احاطه شده است، مانند <item> … داده … </item>
  • برچسب: چیزی که درون براکت‌ها قرار دارد، مانند <item>.‏ <item> برچسب بازکنندهٔ یک عنصر است و </item> برچسب بسته‌کننده است. این اصطلاح را با برچسب‌های OSM که معنای دیگری دارند، اشتباه نگیرید.
  • خصیصه: اطلاعاتی خُرد موجود در داخل یک برچسب، مانند name=“Hamburger”

استفاده از XML برای نگهداری و انتقال داده، عالی است، زیرا فهم آن برای کامپیوترها آسان است.

فایل‌های پیش‌تنظیم JOSM

بیایید یک فایل پیش‌تنظیم نمونه را به JOSM اضافه کنیم و آن را تجزیه‌وتحلیل کنیم که چگونه کار می‌کند.

  • فایل sample_presets.xml را دانلود کنید.
  • سپس آن را همان‌طور که در فصل قبل توضیح داده شد در JOSM بار کنید.
  • یک لایهٔ جدید و یک شیء جدید ایجاد کنید.
  • به منوی Presets بروید. یک آیتم جدید به نام Sample Building دیده می‌شود. روی آن کلیک کنید.

sample building menu

توجه داشته باشید که در فرمِ ظاهرشده سه خانه وجود دارد و هر خانه نوع ورودی متفاوتی می‌پذیرد. اولین خانه، نام ساختمان، یک رشتهٔ متنی را به‌عنوان ورودی می‌پذیرد. دومی، کاربرد ساختمان، یک منوی اُفتان دارد. آخرین خانه، یک چک‌باکس است، به این معنی که فقط می‌تواند یکی از دو مقدار روشن یا خاموش را داشته باشد.

sample presets form

حالا بیایید نگاهی بیندازیم به فایل XMLای که این فرم Preset را تعریف می‌کند.

  • فایل XML را در کامپیوتر خود پیدا کنید و آن را با یک برنامهٔ ویرایشگر متن باز کنید. اگر از ویندوز استفاده می‌کنید می‌توانید از Notepad استفاده کنید. اگر ویرایشگر راحت‌تری بخواهید، می‌توانید برنامهٔ رایگان و آزاد Notepad++‎ را دانلود کنید.
  • فایل sample_presets.xml چیزی شبیه به این به نظر می‌رسد:

sample presets file

فعلاً از شش خط اول و خط آخر صرف‌نظر و بر آنچه بین برچسب‌های <item> قرار دارد تمرکز می‌کنیم.

خط اول این‌گونه است:

  <item name="Sample Building" type="node,closedway">

این برچسب بازکنندهٔ یک آیتم است که به منو اضافه می‌شود. این برچسب دو خصیصه دارد: name و type.‏ name مشخص می‌کند که چگونه این مورد در منوی Presets نمایش داده شود. type این پیش‌تنظیم را محدود به نوع خاصی از اشیا می‌کند. در این مورد، این پیش‌تنظیم را تنها می‌توان برای نقاط و اشکال - به‌عبارت دیگر گره‌ها و راه‌های بسته - استفاده کرد. اگر سعی کنید این پیش‌تنظیم را بر یک خط به کار ببرید، کار نمی‌کند.

بیایید به خط بعدی نگاه کنیم:

  <label text="Building Form" />

وقتی روی منو کلیک می‌کنید و فرم نمونه را باز می‌کنید، در بالا عبارت Building Form را می‌بینید. این عبارت همین متنی است که در این خط تعریف شده. این یک عنصر <label> را تعریف می‌کند و کارش ساده است: متن را در فرم نمایش می‌دهد. خود متن با خصیصهٔ text=”some text” تعریف می‌شود.

چند خط پایین‌تر بروید و این را پیدا کنید:

  <key key="building" value="yes" />

این یکی از برچسب‌هایی است که به شیء موردنظر ما اعمال می‌شود. از آنجا که از عنصر <key> استفاده می‌کند، زمانی که این پیش‌تنظیم انتخاب شود تگ OSMای که در اینجا آورده شده، به‌طور خودکار به شی اعمال می‌شود. ازاین‌رو این شی به‌طور خودکار تگ building=yes خواهد گرفت.

خط بعدی کمی متفاوت است و از عنصر <text> استفاده می‌کند.

  <text key="name" text="Name of Building" default="" delete_if_empty="true" />

عنصر <text> یک خانهٔ خالی ایجاد می‌کند. هنگامی که فرم در JOSM ایجاد می‌شود، کاربر می‌تواند خانهٔ خالی را پر کند. از آنجا که خصیصهٔ delete_if_empty=”true” تنظیم شده است، اگر کاربر این خانه را خالی بگذارد، هیچ تگی اضافه نخواهد شد.

در خط بعد، منوی اُفتان فرم تعریف می‌شود:

  <combo key="building:use" text="Building Use" values="residential, commercial, industrial" />
  <display_values="مسکونی, تجاری, صنعتی"/>

یک کادر اُفتان به‌وسیلهٔ عنصر <combo> تعریف می‌شود. همانند عنصر <text>، خصیصهٔ key کلید تگ را تعریف می‌کند. مقدار آن سپس از یک لیست مقادیر ممکن انتخاب می‌شود. با استفاده از خصیصهٔ display_values می‌توانید نام‌های دیگری را برای نمایش در منوی اُفتان انتخاب کنید، که شاید فهم آن از مقادیر تگ OSM آسان‌تر باشد.

در نهایت، به خطی که چک‌باکس را تعریف می‌کند نگاهی بیندازیم.

  <check key="building:vacant" text="Is the building vacant?" default="off" /> 
  <delete_if_empty="true" />

کار عنصر <check> - همان‌طور که حدس زدید! - تعریف چک‌باکس است. خصیصهٔ default=”off” می‌گوید که به‌صورت پیش‌فرض بدون تیک باشد. خصیصه‌های دیگر را قبلاً دیده‌اید.

ساخت فایل پیش‌تنظیم خودتان

بهترین راه برای ساخت فایل پیش‌تنظیم‌های خودتان، این است که یکی از فایل‌های موجود را بردارید و آن را دستکاری کنید تا به اهداف خود برسید. این فایل نمونه را با خیال راحت ویرایش کنید و با آن آزمایش کنید تا اصول پایه را بیاموزید. فقط به یاد داشته باشید که هر بار که آن را ذخیره می‌کنید، باید JOSM را باز و بسته کنید تا تغییرات بار شود.

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

این فایل نمونه شامل اغلب عناصری است که در یک فایل پیش‌تنظیم JOSM پیدا می‌کنید (تعداد عناصر فرم خیلی زیاد نیست). اگر می‌خواهید با یک فایل پیش‌تنظیم بسیار پیچیده‌تر آزمایش کنید، فایل dhaka_presets.xml را از اینجا دانلود کنید.

به‌علاوه، توضیح مفصّلی از تمام عناصر ممکن را می‌توانید در اینجا پیدا کنید.

موفق باشید!