osm2pgsql

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

ما مراحل نصب osm2pgsql در ویندوز را اجرا خواهیم کرد، هرچند همین مراحل باید در یک سیستم عامل دیگر نیز تقریباْ مشابه است، با فرض اینکه پایگاه داده(های) PostGIS خود را درست تنظیم کرده باشید.

گرفتن osm2pgsql

برای دانلود نسخه ویندوز osm2pgsql، با مرورگر وب خود به http://wiki.openstreetmap.org/wiki/Osm2pgsql#Windows بروید.

windows binary

  • فایل با نام osm2pgsql.zip را دانلود کنید.
  • فایل را بر روی سیستم خود باز کنید. باید پوشه استخراج شده را به مسیری منتقل کنید که بعداْ آن را جابجا نکنید، زیرا باید مسیر آن را به مسیر سیستم اضافه کنیم.

unzip it

  • در دایرکتوری osm2pgsql که فایل فشرده باز شده است فایلی به نام osm2pgsql.exe وجود دارد. این برنامه‌ای است که برای وارد کردن داده‌ها آنرا اجرا میکنیم، اما برای اینکه ویندوز بتواند آن را پیدا کند، باید محل آن را به مسیر سیستم اضافه کنیم. روی منوی شروع کلیک کنید و مسیر “system path” را تایپ کنید.

system path

  • باید گزینه‌ای با نام “Edit the system environment variables” را ببینید. بر روی آن کلیک کنید.

edit variables

  • روی دکمه “Environment Variables” کلیک کنید.

env variables

  • در پایین صفحه متغیری با نام “Path” را پیدا کنید و روی “Edit…” کلیک کنید.

find path

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

edit path

  • یک نقطه‌ویرگول (semicolon) به انتهای دایرکتوری قبلی اضافه کنید و سپس مسیر دایرکتوری osm2pgsql.exe را تایپ کنید. برای مثال، اگر پوشه osm2pgsql را مستقیماْ در دایرکتوری \:C قرار داده‌اید، مسیر آن خواهد بود:

C:\osm2pgsql\Win32

  • برای ذخیره تنظیمات جدید Ok را چندین بار کلیک کنید.
  • حالا باید osm2pgsql کار کند. بیایید آن را بررسی کنیم.
  • اعلان فرمان ویندوز را باز کنید. این کار را با کلیک بر روی منوی شروع و تایپ کردن “cmd” انجام دهید. برنامه Command Prompt در ابتدای منو نمایش داده می‌شود و می‌توانید Enter را فشار دهید یا روی آن کلیک کنید.

cmd

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

osm2pgsql

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

osm2pgsql test

  • اگر یک پیام هشدار مانند این را نمی‌بینید و می‌گوید که نمی‌تواند برنامه osm2pgsql را پیدا کند، ممکن است متغیر مسیر را اشتباه وارد کرده باشید.

گرفتن اطلاعات خام OSM

قبل از اینکه بتوانیم osm2pgsql اجرا کنیم، باید مقداری داده خام OSM را برای وارد کردن به یک پایگاه داده داشته باشیم. اگر قبلاْ یک فایل osm. داشته باشید می‌توانید از آن استفاده کنید، سعی کنید فایلی را از </https://mapzen.com/data/metro-extracts> دانلود کنید. این سایت میزبان بسیاری از فایلهای استخراج شده OSM برای شهرهای مختلف است. یک شهر را پیدا کنید و فایل PBF آن را دانلود کنید. فایل‌های PBF نسخه‌های فشرده از فایل‌های معمول osm. هستند. اگر داده‌های خام یک منطقه دیگر را بخواهید، می‌توانید از هر سرویسی که فایلهای OSM را استخراج می‌کنند و در فصل گرفتن داده‌ها لیست شده‌اند، استفاده کنید.

گرفتن فایل طرح (Style)

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

وارد کردن داده ها

PgAdmin III را باز کنید و همانطور که فصل قبل انجام دادید، یک پایگاه داده جدید به نام osm ایجاد کنید. برای وارد کردن داده، برنامه osm2pgsql را از طریق خط فرمان اجرا می کنیم.

  • روی منوی شروع کلیک کنید و “cmd” را تایپ کنید و Enter را برای باز کردن فرمان Command Prompt بزنید.

command prompt

در اینجا ما برنامه osm2pgsql را با چندین گزینه اجرا خواهیم کرد. حداقل موارد زیر باید به برنامه داده شود:

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

ما فایل OSM را در دایرکتوری :\C قرار داده‌ایم تا کار را آسانتر کنیم.

  • دستور زیر را وارد کنید، فقط محل فایل OSM و فایل طرح را با فایلهای خودتان جایگزین کنید.

    osm2pgsql -c -d osm -U postgres -H localhost -S C:\default.style C:\bangkok.osm.pbf  
    
  • Enter را بزنید، اگر همه چیز خوب پیش برود، فرآیند باید شروع شود. ممکن است چند دقیقه طول بکشد تا تمام اطلاعات در پایگاه داده بارگیری شود.

osm2pgsql output

  • اگر فایل خام OSMتان بزرگ است، ممکن است نیاز به افزودن حافظه اضافی در فرآیند وارد کردن osm2pgsql باشد. برای انجام این کار، دستور زیر را اضافه کنید:

    --cache 600
    

آزمایش کردن

می‌توانیم آزمایش کنیم که فرآیند وارد کردن موفق بوده و داده‌های پایگاه داده را با استفاده از QGIS مشاهده کنیم.

  • QGIS را باز کنید و روی دکمه “Add PostGIS Layers” کلیک کنید. qgis add postgis button

  • در قسمت “Connections” در بالای صفحه، روی “New” کلیک کنید.
  • به اتصال جدید یک نام بدهید. زیر پایگاه داده، osm (نام پایگاه داده‌تان) را تایپ کنید.
  • نام کاربری postgres و رمز عبور خود را در زیر وارد کنید.

connection settings

  • روی OK کلیک کنید تا تنظیمات اتصال ذخیره شود. سپس برای اتصال به سرور PostgreSQL روی “Connect” کلیک کنید.
  • در کنار “public” کلیک کنید تا همه لایه‌ها (جداول) پایگاه داده را ببینید. توجه داشته باشید که osm2pgsql برای انواع مختلف اشیاء - نقاط، خطوط و چندضلعی‌ها، یک جدول جداگانه ایجاد می‌کند. یک جدول نیز برای جاده‌ها ایجاد می‌کند که تنها جاده‌های اصلی را شامل می‌شود.

postgis layers

  • یک یا چند لایه را انتخاب کنید و روی “افزودن” (Add) کلیک کنید. در صورت درخواست، WGS84 را به عنوان CRS انتخاب کنید.
  • اگر همه چیز موفق‌آمیز باشد، خواهید دید که لایه‌هایی که انتخاب کرده‌اید در QGIS نمایش داده می‌شوند.

osm in qgis

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

خلاصه

هنگامی که بخواهید داده‌های OpenStreetMap را به پایگاه داده خود وارد کنید، osm2pgsql یک ابزار عالی است. این امر زمانی که شما نیازمند به دست آوری به روزترین اطلاعات OSM و سفارشی‌سازی ویژگی‌های مورد نظر خود باشید و یا در هنگام کار بر روی پروژه‌های پیچیده، بسیار مفید خواهد بود.

یک ابزار دیگر وارد کردن داده به نام imposm اخیراْ ساخته شده است که نسبت به osm2pgsql دارای سرعت بیشت بوده و بهبودهای دیگری را ارائه می‌دهد، اگر چه در زمان نگارش این نوشتار نواقصی هملکردی کلیدی دیگری دارد که قول داده شده در iposom نسخه ۳ رفع شود.

برای اطلاعات بیشتر در مورد osm2pgsql، به ویکی OSM مراجعه کنید - http://wiki.openstreetmap.org/wiki/Osm2pgsql.

CC0
Official HOT OSM learning materials