دستکاری داده‌ها با Osmosis

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

توابع بسیار زیادی در Osmosis وجود دارند و شما می‌توانید در مورد جزئیات هر یک در ویکی بخوانید. با این حال بسیاری از توابع آن بسیار پیچیده و درک‌شان دشوار است، به ویژه اگر به تازگی شروع به برنامه‌های خط فرمان و OpenStreetMap کرده‌اید. این فصل به معرفی Osmosis، نصب آن بر روی ویندوز و شروع به استفاده از فرمان‌های اصلی Osmosis می‌پردازد.

Osmosis را نصب کنید

مانند osm2pgsql در فصل قبل ما باید osmosis را دانلود و راه‌اندازی کنیم تا بتوانیم آن را از خط فرمان اجرا کنیم. فرایند این کار بسیار شبیه osm2pgsql خواهد بود.

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

برای دانلود و آماده سازی Osmosis مراحل زیر را دنبال کنید:

  • ابتدا، Osmosis را از اینجا دانلود کنید.
  • پوشه را از حالت فشرده خارج کنید و آن را در جایی از سیستم که جابجا نمی‌شود قرار دهید. ما باید این مکان را به مسیر سیستم اضافه کنیم تا بتوان آنرا از خط فرمان اجرا کرد.

unzip it

  • روی منوی شروع کلیک کنید و “مسیر سیستم” را تایپ کنید.

system path

  • شما باید یک گزینه با نام “ویرایش متغیر محیط سیستم” را ببینید. روی آن کلیک کنید.

edit variables

  • روی دکمه “متغیرهای محیطی” کلیک کنید.

env variables

  • در پایین متغیر با نام “مسیر” را پیدا کنید و روی “ویرایش …” کلیک کنید.

find path

  • شما باید دایرکتوری که osmosis.bat در آن قرار دارد را به متغیر مسیر اضافه کنید.

edit path

  • یک نقطه ویرگول به انتهای دایرکتوری قبلی اضافه کنید و سپس مسیر دایرکتوری کامل Osmosis را تایپ کنید. برای مثال، اگر آنرا در پوشه osmosis-latest مستقیماْ در دایرکتوری \:C گذاشته‌اید، مسیر آن می‌شود:

    C:\osmosis-latest\bin
    
  • برای ذخیره تنظیمات جدید OK را چندین بار بزنید.
  • حالا osmosis باید کار کند. بیایید آن را بررسی کنیم.
  • اعلان فرمان ویندوز را باز کنید. این کار را با کلیک بر روی منوی شروع و تایپ کردن “cmd” انجام دهید. برنامه اعلان فرمان بالا می‌آید و می‌توانید Enter را فشار دهید یا روی آن کلیک کنید.

cmd

  • در پنجره سیاه فرمان که باز می شود، تایپ کنید:

    osmosis
    
  • اگر همه چیز درست کار کند، باید پیامی شبیه به این داشته باشید:

osmosis test

  • اگر چنین خروجی ندیدید و اعلان می‌کند که نمی‌تواند برنامه osmosis را پیدا کند، ممکن است متغیر مسیر را اشتباه وارد کرده باشید.

فیلترکردن دادهإها

Osmosis باید از خط فرمان به درستی کار کند. برای انجام اجرای عملیات در فایل داده، باید دایرکتوری کاری را به جاییکه فایل sample_osmosis.osm.pbf قرار داده‌ایم تغییر دهیم. برای راحتی، ما این فایل را در دایرکتوری :C قرار داده‌ایم.

  • برای تغییر دایرکتوری کاری در خط فرمان به C:\directory، دستور زیر را تایپ کرده و Enter را فشار دهید:

    \:cd C
    
  • اعلان باید تغییر کند و نشان دهد که شما در حال حاضر در دایرکتوری :C هستید.

cd command

حالا اولین دستور Osmosis را یاد بگیریم. ما فرمانی را اجرا خواهیم کرد که تمام مدارس را از فایل بزرگ ما فیلتر می‌کند.

برای انجام این کار، ما باید چند چیز را به Osmosis بدهیم. باید مشخص کنیم:

  • یک فایل ورودی (sample_osmosis.osm.pbf)
  • تعدادی قاعده که آنچه برای فیلتر کردن میخواهیم را تعریف میکنند
  • یک فایل خروجی (ما فایل غیرفشرده osm. برای خروجی می‌خواهیم تا بتوانیم آن را در JOSM باز کنیم)

فرمانی که اجرا می‌کنیم هست:

  osmosis --rbf sample_osmosis.osm.pbf --nkv keyValueList="amenity.school" --wx schools.osm

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

schools osm

بیایید به فرمانی که اجرا کردیم تکه به تکه نگاهی بیندازیم تا ببینیم چگونه کار می‌کند. اول، نام برنامه را فرا میخوانیم.

  osmosis

سپس، فایل ورودی را ارائه می‌دهیم. به خاطر داشته باشید که این فایل فشرده است. rbf– در حقیقت خلاصه شده read-pbf-fast– است. Osmosis متوجه می‌شود که فایلی که بعد از این پارامتر عرضه می‌کنیم، فایلی‌ست که می‌خواهیم از آن بخوانیم.

  rbf sample_osmosis.osm.pbf--

تکه بعدی دستور می‌گوید “nkv keyValueList= amenity.school–“. ممکن است حدس زده باشید که osmosis باید هر چیز که تگ amenity=school داشته باشد را فیلتر کند. nkv– خلاصه شده node-key-value– است. این دستور نشان می‌دهد که Osmosis باید فقط گره‌های دارای کلید و مقادیر ارائه شده در لیست زیر را فیلتر کند. مجموعه‌ای از key.valueهای بیشتر را می‌توان با قرار دادن ویرگول بین آنها اضافه نمود.

  "nkv keyValueList="amenity.school--

در نهایت، نام و فرمت فایل خروجی را ارائه می‌دهیم. ما از پارامتر wx– که خلاصه شده write-xml– است، استفاده می‌کنیم. توجه داشته باشید که اگر بخواهیم از داده‌ها دوباره در فرمت PBF خروجی بگیریم، می‌توانیم از wb– استفاده کنیم، که برابر با rbf– است.

  wx schools.osm--

حرکت به جلو

تعداد وظایف پردازشی که با Osmosis انجام می‌شود بسیار زیاد است و برای کسب اطلاعات بیشتر، بهتر است به صفحه Osmosis Detailed Usage در ویکی مراجعه کنید.

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

CC0
Official HOT OSM learning materials