JOSM - ایجاد قالب آماده

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

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

مقدمه‌ای بر XML

به منظور ایجاد منوی قالب آماده، ما ابتدا باید به زبانی به نام 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 باگزاری کنید.
  • سپس یک لایه جدید و شی جدید ایجاد کنید.
  • به منوی قالب‌های آماده بروید. یک ردیف جدید به نام “Sample Building” دیده می‌شود. روی آن کلیک کنید.

sample building menu

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

sample presets form

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

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

sample presets file

فعلاْ از سه خط اول و خط آخر صرفنظر میکنیم و توجه خود را بیشتر به آنچه که مابین تگهای <آیتم> وجود دارد معطوف میکنیم.

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

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

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

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

  <label text="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="Residential, Commercial, Industrial"/>

یک کادر کشویی توسط <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 را دانلود کنید.

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

موفق باشید!

CC0
Official HOT OSM learning materials