گرفتن دادهٔ OSM

تاریخ بازبینی ۱۳۹۶/۰۱/۱۶

هنگامی که می‌خواهید تازه‌ترین دادهٔ OpenStreetMap را دریافت کنید، ساده‌ترین راه این است که گُزیده‌ای (extract) را از یک وبسایت دانلود کنید. سرویس‌های وبی مختلفی وجود دارد که گزیده‌های داده (data extracts) را برای منطقهٔ انتخابی شما ارائه می‌کنند.

دانلود گزیده‌های داده

GeoFabrik

GeoFabrik شرکتی است که تخصصش کار با OpenStreetMap است. آن‌ها گزیده‌های رایگان متنوعی را در قالب شیپ‌فایل و قالب خام OSM در وبسایت دانلود خود ارائه می‌کنند. مزیت دانلود دادهٔ GeoFabrik این است که روزانه روزآمد می‌شود و آسان و قابل‌اطمینان است. یکی از معایب آن این است که داده بر اساس کشور استخراج شده است و همهٔ کشورها در دسترس نیستند.

BBBike

BBBike شیپ‌فایل‌ها و قالب خام OSM را برای شهرهای سراسر جهان فراهم می‌کند که هفته‌ای یک بار استخراج می‌شوند. در صورتی که دنبال گزیده‌های داده برای فقط یک شهر هستید این سایت مفید است.

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

گُزیده‌های شخصی‌سازی‌شده

برون‌بردهای HOT

گروه بشردوستانهٔ OpenStreetMap سرویسی ایجاد کرده است که به کاربران اجازه می‌دهد منطقهٔ موردنظرشان را استخراج کنند و همچنین از پیش‌تنظیم‌های JOSM استفاده کنند تا تگ‌های دلخواه را در فایل استخراج‌شده قرار دهند. این سرویس در همهٔ کشورهایی که HOT در آنجا کار می‌کند از طریق سایت export.hotosm.org در دسترس است.

hot exports

BBBike

با استفاده از سرویس extract.bbbike.org می‌توانید منطقهٔ خود را از هر نقطهٔ جهان انتخاب کنید. از معایب آن این است که نمی‌توانید تگ‌های سفارشی انتخاب کنید و روی حجم دادهٔ دانلودی محدودیت وجود دارد.

Overpass

Overpass یک API (Application Programming Interface = واسط برنامه‌سازی کاربردی) برای استخراج داده از یک کپی فقط-خواندنی از پایگاه‌دادهٔ اصلی OpenStreetMap است که می‌تواند تقریباً هر مقدار دلخواهی از داده را تحویل دهد. با استفاده از یک زبان پرس‌وجو می‌توانید مشخص کنید که چه مجموعه‌داده‌ای را می‌خواهید به دست آورید. می‌توانید به‌طور مستقیم با تولید یک http-request یا از طریق واسط کاربری overpass turbo این کار را بکنید.

Overpass Turbo

Overpass Turbo یک پرس‌و‌جوساز تعاملی است که ابتدا باید روی منطقهٔ مناسب در نقشه زوم کنید. پرس‌و‌جوی خود را در قسمت سمت چپ صفحه وارد کنید و با استفاده از دکمه‌های بالای واسط کاربری کارهای لازم را انجام دهید. اگر به این زبان پرس‌وجو آشنایی ندارید، استفاده از دستیار پرس‌وجو (query wizard) باید نقطهٔ شروع شما باشد. در ویکی OSM شرح کاملی از نحو (syntax) این زبان پرس‌وجو و همچنین مجموعه‌ای از مثال‌ها ارائه شده است.

همهٔ داده‌ای که توسط پرس‌وجوی شما انتخاب شده‌است، روی نقشه برجسته می‌شوند که می‌توانید بعداً آن‌ها را تغییر دهید. Run را بزنید تا نتیجهٔ نمایش‌یافته تازه شود. هنگامی که از نتیجه راضی بودید، گزینهٔ Export انتخاب‌های متعددی در اختیارتان می‌گذارد، از جمله دادهٔ خام OSM. اگر مقدار داده محدود است، همچنین می‌توانید با کلیک روی آخرین دکمه‌های سمت راست در بالا بین نمایش نقشه و نمایش داده جابه‌جا شوید. گزینهٔ Export ->‏ Query ->‏ compact OverpassQL لینکی تولید می‌کند که در Overpass API قابل‌استفاده است.

overpass turbo

اگر قصد دارید پرس‌وجوی دلخواهتان را طراحی کنید تا زیرمجموعه‌ای از دادهٔ یک منطقهٔ بزرگ را به دست آورید، بهتر است این پرس‌وجو را در Overpass Turbo و روی یک منطقهٔ کوچک آزمایش کنید و بهبود دهید. سپس می‌توانید زوم را به تمام منطقهٔ موردنظرتان گسترش دهید و آدرس اینترنتی پرس‌وجوی ایجادشده را مستقیماً در API به کار ببرید. بخش بعدی چگونگی انجام این کار را توضیح می‌دهد.

Overpass API

Overpass API سرویسی اختصاصی است که برای پرس‌وجو (و نه نوشتن دادهٔ OpenStreetMap) بهینه شده است. با توجه به این بهینه‌سازی، در مقایسه با API اصلی بسیار سریع عمل می‌کند و عملاً هیچ محدودیتی در میزان انتقال داده ندارد. چندین نمونه از این سرویس در اینترنت وجود دارد، یکی که در مثال زیر استفاده شده، اطلاعاتی نیز در صفحهٔ اصلی‌اش ارائه می‌کند.

اگر URL یک پرس‌وجوی سالم برای ارسال درخواست HTTP به API Overpass دارید، با ابزاری مانند wget می‌توانید دادهٔ خام OSM را مستقیماً از کارساز دانلود و ذخیره کنید. wget برای سیستم‌عامل‌های مختلف موجود است، اینجا را ببینید. قطعه‌کد زیر اسکریپتی برای bash shell (رایج در سیستم‌های Unix) است که تمام دادهٔ موجود در یک bounding box (کادر محصورکننده) مشخص را به دست می‌آورد:

echo lower left latitude
read ll_lat
echo lower left longitude
read ll_lon
echo upper right latitude
read ur_lat
echo upper_right longitude
read ur_lon
echo output file
read file
url="http://overpass-api.de/api/interpreter?data=(node($ll_lat,$ll_lon,$ur_lat,$ur_lon);<;rel(br););out meta;"
wget -O $file "$url"

اینجا چه اتفاقی می‌افتد؟ (برای کنجکاوانی که نمی‌خواهند مستندات کامل زبان پرس‌وجو را بخوانند)
node(…) همهٔ نقطه‌های درون کادر محصورکننده را انتخاب می‌کند؛
دستور < همهٔ عناصر پدر را برمی‌گرداند (full recurse up)، یعنی تمام راه‌های حاوی این گره‌ها و تمام رابطه‌های حاوی این گره‌ها و راه‌ها را انتخاب می‌کند؛
rel(br) همهٔ رابطه‌های پدر برای رابطه‌هایی که تاکنون به دست آمده را انتخاب می‌کند (درغیراین‌صورت رابطه‌های master به دست نمی‌آیند)

خلاصه

سرویس‌های ذکرشده در این فصل مواردی است که کاربران متوسط برای دریافت دادهٔ OSM موردنظرشان نیاز دارند تا بتوانند آن را در نرم‌افزار GIS به کار ببرند. با این حال، شاید خودتان بخواهید روش‌های قدرتمندتری را برای کار با داده فرا بگیرید. بخش‌های باقیمانده در این فصل کاملاً فنّی هستند اما روش‌های پیشرفته‌تری را برای دسترسی به و دستکاری دادهٔ OSM نشان می‌دهند.