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

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

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

Osmosis را نصب کنید

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

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

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

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

unzip it

  • روی منوی شروع کلیک کنید و بنویسید: system path

system path

  • باید گزینه‌ای با نام Edit the system environment variables (ویرایش متغیرهای محیطی سیستم) ببینید. روی آن کلیک کنید.

edit variables

  • روی دکمهٔ Environment Variables (متغیرهای محیطی) کلیک کنید.

env variables

  • در پایین، متغیری با نام path را پیدا کنید و روی Edit…‎ (ویرایش…) کلیک کنید.

find path

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

edit path

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

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

cmd

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

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

osmosis test

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

پالایش داده

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

  • برای تغییر پوشهٔ کاری از طریق خط فرمان به پوشهٔ C:\، دستور زیر را تایپ کنید و 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

قسمت بعدی دستور را در کادر زیر می‌بینید. احتمالاً حدس زده‌اید که این دستور می‌گوید 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 پیدا کنید.