نگاه کلی به داده OSM
نگاه کلی به داده OSM
بیایید چگونگی عملکرد OpenStreetMap را در نظر بگیریم. در این محیط، هزاران کاربر در سراسر جهان پیوسته چیزهایی به نقشه میافزایند یا آن را ویرایش میکنند. اما در پشتصحنه چه میگذرد؟
هنگامی که شما یا هر کاربر دیگری با استفاده از نرمافزار ویرایش مانند JOSM یا iD در نقشه تغییراتی میدهید، این نرمافزار با سرور مرکزی OpenStreetMap ارتباط برقرار کرده و این تغییرات را به اطلاع آن میرساند. در آن سرور (Server) یک پایگاهداده عظیم وجود دارد که تمام اطلاعات مکانی و خصوصیات مربوط به هر عارضه جغرافیایی در OpenStreetMap در آن قرار دارد.
از آنجا که OSM رایگان و آزاد است، هر کسی میتواند تمام داده این پایگاهداده را دانلود کند. با این حال، به دلیل حجم بسیار زیاد آن(حجم داده حتی زمانی که فشرده شود، بیش از ۳۰ گیگابایت است) کارکردن با تمامی داده بهطور یکجا تقریباً غیرممکن است.
به دلیل این محدودیت، روشهای مختلفی برای برونبرد و استخراج دادهای که در این بخش پوشش داده میشود، وجود دارد. برونبرد (export) به معنی تبدیل داده OpenStreetMap از قالب (format) بومی آن به فرمتی مثل XML که قالبی مناسب برای شما میباشد. این مورد اندکی با استخراج (extract) داده تفاوت دارد. استخراج به معنی گرفتن داده منطقه موردنظرتان است. این استخراج میتواند به این صورت هم باشد که عارضههای خاصی از یک منطقه را بیرون میکشید. بهعبارتی در استخراج فقط گزیدهای از داده را برمیدارید. از این اصطلاحات در این بخش بهوفور استفاده میکنیم، بنابراین مهم است که تفاوت آنها را بدانید. این اصطلاحات اغلب بهجای یکدیگر استفاده میشوند. در بخش داده OSM در این باره بیشتر خواهیم آموخت.
استفاده از داده مکانی (Geodata)
اگر شما کاربر باتجربه GIS نیستید، مهم است بدانید که نرمافزار ویرایش OSM مانند JOSM چه فرقی با نرمافزار GIS مانند Quantum GIS و ArcGIS دارد.
ویرایشگرهایی مانند iD یا JOSM یک قابلیت اصلی دارند که آن را بسیار خوب انجام میدهند و آنهم ساده سازی فرایند ویرایش OpenStreetMap برای کاربران میباشد. اما این رابط کاربرها، نرمافزاری نیستند که برای تجزیهوتحلیل یا پرسوجوی داده به کار بروند و بهتر است این عملکردها به برنامههای دیگر واگذار شود. نرمافزار GIS، مانند نرمافزار آزاد و رایگان Quantum GIS (QGIS) به کاربران اجازه میدهد نقشههایی زیبا طراحی کنند، پرسوجوی داده و تجزیهوتحلیل داده و کارهای زیاد دیگری از این قبیل انجام دهند. با نرمافزار GIS همچنین میتوان داده های مکانی را ویرایش کرد، اما ویرایش در محیط OpenStreetMap با ویرایشگرهای اختصاصی OSM بسیار آسانتر است.
در بخش بعدی آموزش، نگاه دقیقتری به قالبهای فایل وابسته به OpenStreetMap و بهطور کلی قالبهای مربوط به داده مکانی میاندازیم. سپس روشهای مختلفی را برای دسترسی به داده OSM و دستکاری و تبدیل آن به انواع فایل ها را بررسی میکنیم.
گرفتن داده
سوال این بخش این است که چگونه میتوان داده موردنظرتان را در این محیط بگیرد؟ در این بخش، مروری میکنیم بر روشهای مختلف برونبُرد داده های OSM . اما به خاطر داشته باشید که برای استفاده موثّر از داده، احتمالاً به نرم افزارهای تخصصی GIS، مانند نرمافزار آزاد و رایگان Quantum GIS نیاز خواهید داشت.
OSM API
چیزی که فرآیند ویرایش OSM را ممکن ساخته API نام دارد. API اجازه میدهد نرمافزار ویرایشگر با سرور مرکزی ارتباط برقرار کند. بهعنوان مثال، زمانی که از JOSM استفاده میکنید و منطقهای را که میخواهید نقشهاش را بکشید انتخاب مینمایید، یک تماس از این API به سرور فرستاده میشود و تمام اطلاعات موجود در منطقهای که انتخاب کردهاید درخواست میگردد.
هنگامی که داده را در JOSM دانلود میکنید، در واقع دارید داده یک منطقه خاص از دنیا را استخراج مینمایید. سپس این داده در قالب و فرمت OSM برای شما ارسال میشود که بعدا میتوانید آن را در JOSM ویرایش کنید. اگر داده را در محیط JOSM دانلود کنید و سپس آن را ذخیره کنید، میبینید که نوع فایل دریافتی با پسوند “ ” .osm““ است.
قالبهای فایل
همانند هرگونه دادهای، روشهای مختلفی برای ذخیرهسازی داده مکانی در یک کامپیوتر وجود دارد. میتوان آن را در پایگاهداده ذخیره کرد، که یک سیستم تخصصی برای ذخیره و بازیابی داده است. بهتر است بدانید سیستمهای پایگاهداده اختصاصی برای ذخیرهسازی داده مکانی طراحی شدهاست. همچنین میتوان آن را بهصورت فایلهای کامپیوتری سنتی ذخیره نمود، هرچند انواع مختلفی از قالبهای فایل برای داده مکانی وجود دارد.
در این بخش، چندین روش ذخیرهسازی داده های جغرافیایی را میآموزیم، توضیح میدهیم چگونه کار میکنند و معمولاً چگونه استفاده میشوند.
فایلهای .OSM
قالب فایل osm. مخصوص محیط OpenStreetMap است. هیچ جای دیگری به این قالب بر نخواهید خورد. اگر تا به حال با استفاده از JOSM داده دانلود کرده و آن را در یک فایل ذخیره کرده باشید، ممکن است متوجه شده باشید که فایل با پسوند ” .osm” ذخیره میشود. اگر کاربر GIS هستید، شاید متوجه شده باشید که بازکردن این فایلها با استفاده از نرمافزاری مانند QGIS بسادگی قابل انجام نیست.
سوال اینست که چرا دادهOSM در قالبی ذخیره میشود که هیچ کس دیگری نمیتواند از آن براحتی استفاده کند؟ پاسخ این است که بسیاری از قالبهای داده مکانی برای پیش از دوران مدرن اینترنت هستند و برای دسترسی سریع و پرسوجوگیری همانند پرسوجو از یک پایگاهداده طراحی شدهاند. از سوی دیگر، داده OSM، طوری طراحی شدهاست که ارسال و دریافت آن از طریق اینترنت بهراحتی و در قالبی استاندارد انجام شود. ازاینرو، فایلهای ” .osm” به زبان XML کدگذاری شدهاند. این فایلها داده های جغرافیایی را در قالبی ساختاریافته و مرتب در خود نگه میدارند. یک فایل ” .osm” ساده را اگر در ویرایشگر متن باز کنید اینگونه خواهد بود:
شکل 159- فایلهای ” .osm” به زبان XML
بهدستآوردن داده در قالب ” .osm” آسان است – هر بار که در JOSM داده دانلود میکنید، این کار را انجام میدهید. اما استفاده از این فایلها برای تجزیهوتحلیل و طراحی نقشه آسان نیست. ازاینرو بهتر است که داده را به قالب دیگری تبدیل کنید یا آن را از جایی بگیرید که داده را برایتان تبدیل میکند.
همانطور که گفته شد، داده های خام OSM معمولاً در فایلهای ” .osm” ذخیره میشود، اما ممکن است فایلهایی ببینید که پسوند .bz2 و .pbf دارند. اینها اساساً همان فایلهای ” .osm” هستند که برای صرفهجویی در فضای ذخیرهسازی، فشرده شدهاند، که البته هنگام کار با فایلهای داده بسیار حجیم، فوقالعاده کاربردی و مفید هستند.
فایلهای شیپ (Shapefiles)
shapefile قالبی است که بهطور گسترده برای ذخیرهسازی داده های جغرافیایی بُرداری به کار میرود. این قالب را شرکت ESRI ساخته است. ESRI همان شرکت سازندهArcGIS (مجموعهای از برنامههای محبوب GIS) است.
شیپفایل در واقع مجموعهای از چندین فایل مختلف است. بهعنوان مثال، شیپفایلی که حاوی داده ساختمان است ممکن است فایلهایی با پسوندهای زیر داشته باشد:
- buildings.shp
- buildings.shx
- buildings.dbf
شیپفایلها اغلب فایلهای اضافهتری نیز دارند که حاوی اطلاعات دیگر هستند.
هر شیپفایل باید فقط یک نوع عارضه (نقاط، خطوط یا پلیگونها) را نگه دارد، و خصوصیات توصیفی هر عارضه در یک جدول نگهداری میشود. بر خلاف سیستم OpenStreetMap که در آن هر شی میتواند تعداد نامحدودی برچسب داشته باشد، خصوصیات عارضهها در فایلهای شیپ باید مطابق ساختار جدولی تعریفشده برای شیپفایلها باشد.
داده OpenStreetMap را میتوان به شیپفایل تبدیل کرد. وبسایتهای مختلفی بصورت برخط فایلهای شیپ تبدیلشده از داده OSM را ارائه میکنند.
پایگاهدادهها
انواع گوناگونی از اطلاعات در سیستمهای پایگاهدادهای ذخیره میشوند که روشی منطقی برای سازماندهی و دسترسی به داده فراهم میکنند. داده مکانی نیز همانگونه است، گرچه پایگاهدادههای مخصوص داده مکانی بهطور تخصصی جهت فائقآمدن بر کارکردهای پیچیدهای که پرسوجوی داده مکانی مستلزم آنهاست، طراحی شدهاند.
داده OpenStreetMap اغلب در یک پایگاهداده PostgreSQL با PostGIS extensions ذخیره میشود. این نوع پایگاهداده دسترسی سریع به داده را فراهم میکند و میتوان بهآسانی با Mapnik (نرمافزاری که تایلهای نقشه را برای نقشههای وبی تولید میکند) از آن استفاده کرد. چندین ابزار برای درونبرد داده خام OSM به پایگاهداده PostgreSQL وجود دارد.
نوع دیگری از پایگاهداده SQLite است، که کارکردی مشابه با پایگاهداده PostgreSQL ارائه میدهد. اما در این محیط، همه داده در یک فایل ذخیره میشود و نیازی به اجرای نرمافزار پایگاهداده ندارد.
گرفتن دادهOSM
هنگامی که میخواهید جدیدترین و به روزترین دادهOpenStreetMap را دریافت کنید، سادهترین راه این است که گُزیدهای (extract) را از یک وبسایت دانلود کنید. سرویسهای تحت وب مختلفی وجود دارد که گزیدههای داده (data extracts) را برای منطقه انتخابی شما ارائه میکنند.
دانلود گزیدههای داده
GeoFabrik
GeoFabrik شرکتی است که تخصصش کار با OpenStreetMap است. این کمپانی گزیدههای رایگان متنوعی را در قالب شیپفایل و قالب داده های خام OSM در وبسایت دانلود خود ارائه میکنند. مزیت دانلود داده GeoFabrik این است که داده های سرور آنها، بصورت روزانه بروزرسانی میشود و دانلود آنها آسان و قابلاطمینان است. یکی از معایب آن این است که داده ها در سرور این کمپانی بر اساس مرز کشورها استخراج شده است و همه کشورها در دسترس نیستند.
BBBike
کمپانیBBBike شیپفایلها و قالب داده های خام OSM را برای شهرهای سراسر جهان فراهم میکند که هفتهای یک بار استخراج میشوند. در صورتی که دنبال گزیدههای داده برای محدوده یک شهر هستید این سایت برایتان مفید است.
به یاد داشته باشید که عارضهها در OpenStreetMap تعداد نامحدودی تگ «آزاد» دارند. اما شیپفایلها دارای صفاتی هستند که در تعداد محدودی ستون ذخیره شدهاند. این یعنی هنگامی که داده OSM به فرمت شیپفایل تبدیل میشود، فقط تگهای مشخصشده در جدول شیپفایل در فایل خروجی گنجانده میشود. وبسایتهایی که در بالا نام بردیم، شیپفایلها را با مجموعه پیشفرضی از تگهای رایج ارائه میدهند، اما اگر میخواهید تگهای خاصی را استخراج کنید باید یکی از خدمات تخصصیتری را که در بخش بعد توضیح داده شده، استفاده کنید یا اینکه خودتان یاد بگیرید چگونه داده موردنیازتان را برونبرد کنید.
گُزیدههای شخصیسازیشده
برونبردهای HOT
گروه بشردوستانه OpenStreetMap سرویسی ایجاد کرده است که به کاربران اجازه میدهد منطقه موردنظرشان را استخراج کنند و همچنین از پیشتنظیمهای JOSM استفاده کنند تا تگهای دلخواه را در فایل استخراجشده قرار دهند. این سرویس در همه کشورهایی که ابزار HOT در آنجا کار میکند از طریق سایت export.hot ” ” .osm””org در دسترس کاربران است.
BBBike
با استفاده از سرویس extract.bbbike.org میتوانید منطقه مورد نظر خود را از هر نقطه جهان انتخاب کنید. از معایب این سرویس این است که نمیتوانید تگهای سفارشی انتخاب کنید و روی حجم داده دانلودی نیز محدودیت وجود دارد.
Overpass
Overpass یک API (Application Programming Interface واسط برنامهسازی کاربردی) برای استخراج داده از یک کپی از داده ها به صورت فقط-خواندنی از پایگاهداده اصلی OpenStreetMap است که میتواند تقریباً هر مقدار دلخواهی از داده را به شما ارائه دهد. با استفاده از یک زبان پرسوجو میتوانید مشخص کنید که چه مجموعهدادهای را میخواهید به دست آورید. میتوانید بهطور مستقیم با تولید یک http-request یا از طریق واسط کاربری overpass turbo این کار را انجام دهید.
Overpass Turbo
Overpass Turbo یک محیط پرسوجوساز تعاملی است که ابتدا باید روی منطقه مورد نظر خود در نقشه زوم کنید. سپس پرسوجوی خود را در قسمت سمت چپ صفحه وارد کنید و با استفاده از دکمههای بالای واسط کاربری مابقی کارهای لازم را انجام دهید. اگر به این زبان پرسوجو آشنایی ندارید، استفاده از دستیار پرسوجو (query wizard) باید نقطه شروع شما باشد. برای راهنمایی بیشتر، در Wiki OSM شرح کاملی از نحو (syntax) این زبان پرسوجو و همچنین مجموعهای از مثالها ارائه شده است.
همه دادهای که توسط پرسوجوی شما انتخاب شدهاست، روی نقشه برجسته میشوند که میتوانید بعداً آنها را تغییر دهید. سپس گزینه Runرا بزنید تا داده های جستجو شده نمایش داده شود. هنگامی که از خروجی جستجو راضی بودید، گزینه Export را بزنید .
اگر قصد دارید پرسوجوی دلخواهتان را طوری طراحی کنید تا به زیرمجموعهای از داده یک منطقه بزرگ دسترسی داشته باشید، بهتر است این پرسوجو را در Overpass Turbo و روی یک منطقه کوچک آزمایش کنید و سپس آن را بهبود دهید. پس از کسب نتیجه دلخواه، میتوانید زوم را به تمام منطقه موردنظرتان گسترش دهید و آدرس اینترنتی پرسوجوی ایجادشده را مستقیماً در API به کار ببرید. بخش بعدی چگونگی انجام این کار را توضیح میدهد.
Overpass API
Overpass API سرویسی اختصاصی است که برای بهینه سازی فرایند پرسوجو (OpenStreetMap) توسعه داده شده است. با توجه به این بهینهسازی، این اپلیکیشن در مقایسه با API اصلی بسیار سریع عمل میکند و عملاً هیچ محدودیتی در میزان انتقال داده ندارد.
اگر URL یک پرسوجوی سالم برای ارسال درخواست HTTP به API Overpass دارید، با ابزاری مانند wget میتوانید داده خام OSM را مستقیماً از سرور دانلود و ذخیره کنید. این wget برای سیستمعاملهای مختلف موجود است. قطعهکد زیر اسکریپتی برای bash shell (رایج در سیستمهای Unix) است که تمام داده موجود در یک bounding box (کادر محصورکننده) مشخص را به دست میآورد:
echo lower left latituderead ll_latecho lower left longituderead ll_lonecho upper right latituderead ur_latecho upper_right longituderead ur_lonecho output fileread fileurl=”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 در QGIS
QGIS )که قبلاً Quantum GIS نام داشت) یک سیستم اطلاعات جغرافیاییِ همهکاره، متنباز و چندسکویی است. با QGIS هرزمان که بخواهید میتوانید به داده OSM دسترسی داشته باشید، تگهای موردنظرتان را انتخاب کنید و به راحتی از آنها در قالبهای آسانکاربرد پایگاهداده SQLite یا Shapefile خروجی بگیرید.
در این فصل گامهای لازم برای انجام این کار را طی میکنیم. فرض میکنیم که شما قبلاً QGIS 2.x را دانلود و نصب کردهاید. اگر اینطور نیست میتوانید آن را از http://www.qgis.org/en/site/forusers/download.html دانلود کنید.
برای داشتن لایههای بروز و سفارشی موردنظرمان در QGIS ابتدا آخرین داده OSM را به صورت خام و در قالب ” .osm” دریافت میکنیم. سپس، این داده را به فرمت قالب پایگاهداده SQLite تبدیل میکنیم که یک سیستم پایگاهداده سبک است و در یک فایل روی سیستم شما نگهداری میشود. در آخر، یک (یا چند) لایه ایجاد میکنیم که فقط شامل انواع ویژگیها و تگهایی است که میخواهیم به آن دسترسی داشته باشیم. این لایهها را میتوان در QGIS به همان صورت که هست استفاده کرد، یا به صورت قالب دیگری مانند shapefile ذخیره کرد.
دستیابی به داده OSM
اولین کاری که انجام میدهیم دریافت مقداری داده به روز از OSM است. میتوانیم این کار را به طرق مختلف انجام دهیم. البته، درخواست داده از سرور OSM، همانطور که در ویرایشگر JOSM انجام میشود، محدود است و نمیتوانیم حجم بسیار زیادی از داده خام را یکجا بیرون بکشیم. اما راههایی برای دسترسی به مجموعهدادههای بزرگ وجود دارد، همانگونه که در فصلهای پیش در بخش دریافت داده OSM و استفاده از Geofabrik و خروجی HOT توضیح داده شد.
در این راهنما از قابلیت درونی دانلود داده های OSM در QGIS استفاده میکنیم.
- QGIS را باز کنید و به مسیر Vector -> OpenStreetMap -> Download Data… بروید
- در اینجا میتوانید از بین چندین گزینه انتخاب کنید. اگر هماکنون پنجره شما منطقهای را که میخواهید نشان میدهد، مربع کنار “از روی بوم نقشه” (From map canvas) را تیک بزنید. اگر قبلاً لایهای با منطقه درست در QGIS بارگذاری کردهاید، گزینه “از لایه” (From layer) را انتخاب کنید و لایه دلخواهتان را انتخاب کنید. در اینجا گزینه “دستی” (Manual) را انتخاب میکنیم و طول و عرض جغرافیایی را وارد میکنیم که درنتیجه این عمل، یک کادر محصورکننده در اطراف منطقه موردنظر ما ایجاد میشود. میتوانید طول و عرضهایی را که میخواهید بنویسید اما به یاد داشته باشید که محدوده نمیتواند بیش از حد بزرگ باشد در غیر اینصورت نمیتوانید همه داده را دانلود کنید.
- نام و مسیر فایل خروجی و قالب ” .osm” را انتخاب کنید و روی OK کلیک کنید.
- هنگامی که دانلود کامل شود، پیغامی نشان داده میشود که روی «بستن» کلیک کنید تا از کادر محاورهای دانلود خارج شوید.
- داده OSM اکنون در مسیری که مشخص کردهاید ذخیره خواهد شد.
این روش دسترسی به داده OSM همانند زمانی است که در JOSM یا در openstreetmap.org دانلود میکنید. برای گزیدههای بزرگتر که حاوی داده های بروز باشد میتوانید از سایت HOT export site یا با استفاده از bbbike.org داده منطقه مورد نظر را دانلود کنید. به یاد داشته باشید که اگر یک فایل OSM فشرده را دانلود کنید، برای مراحل بعدی ابتدا باید آن را از حالت فشرده خارج کنید تا به قالب ” .osm” برسید.
واردکردن داده به SQLite
اکنون باید فایل خام ” .osm” خود را به پایگاهداده SQLite وارد کنیم.
- به مسیر Vector -> OpenStreetMap -> Import Topology from XML… بروید
- در خانه اول فایل ” .osm” خود را انتخاب کنید.
- اگر مایل باشید میتوانید نام فایل خروجی پایگاهداده را تغییر دهید.
- لازم است در این قسمت، تیک گزینه “ایجاد اتصال …” (…Create Connection) زده شده باشد.
- OK را بزنید.
- پس از اتمام Close را بزنید.
ایجاد لایهها
در مرحله آخر، لایههایی که در QGIS استفاده خواهد شد را تعریف و بر اساس نیازمان شخصیسازی میکنیم.
- به مسیر Vector -> OpenStreetMap -> Export Topology to SpatiaLite… بروید.
- در خانه اول، پایگاهدادهای که در مرحله قبلی ایجاد کردید را انتخاب کنید.
- در قسمت Export type، نوع ویژگیهایی را که میخواهید برایشان لایه ایجاد کنید، انتخاب کنید. در اینجا یک لایه از پلیگونها (polygons) ایجاد میکنیم.
در صورت تمایل میتوانید نام لایه را ویرایش کنید.
با استفاده از قابلیت “تگهای صادرشده” (Exported tags) میتوانیم برچسبهایی را که میخواهیم در لایه خروجی ما وجود داشته باشند، را انتخاب کنیم. این قابلیت این امکان را به ما میدهد که دقیقاً به همان دادهای که میخواهیم، دست یابیم.
- بر روی گزینه Load from DB کلیک کنید تا لیستی از تمام تگهای موجود در پایگاهداده را مشاهده کنید. در صورت نیاز، اندازه پنجره را با کشیدن گوشه آن گسترش دهید. میتوانید تمام برچسبهای موجود در این داده و همچنین تعداد ویژگیهای دارنده هر برچسب را مشاهده کنید.
- مربع کنار برچسبهایی که میخواهید را تیک بزنید. در اینجا چند تا از ویژگیهایی را انتخاب خواهیم کرد که برای پلیگونهایی که ساختمانها را نشان میدهند مفید خواهد بود.
وقتی که این کار تمام شد، روی OK کلیک کنید. کادر را ببندید نتیجتا ،لایه شما به صورت خودکار اضافه میشود.
بر روی لایه افزوده شد، کلیکراست و روی Open Table Attribute کلیک کنید.
میبینید که جدولی داریم که فقط شامل خصوصیاتی است که انتخاب کردیم.
توجه داشته باشید، ما یک لایه فقط از ساختمانها ایجاد نکردهایم. بلکه، لایهای از تمام پلیگونهای داده اصلی ساختهایم، اما فقط شامل برچسبهایی است که انتخاب کردیم. برای اینکه فقط ساختمانها نمایش یابند، باید این لایه را پالایش کنیم. برای این منظور باید پرسوجویی را اجرا کنیم که فقط پلیگونهای دارای building=yes را نگه دارد.
PostgreSQL و PostGIS
در این قسمت از آموزش لازم است، از قبلPostgreSQL را روی ویندوز راهاندازی کرده باشیم و چگونگی ایجاد یک پایگاهداده را که بتواند داده مکانی را ذخیره کند، را بدانیم. ما در این بخش از آموزش از نرمافزار منبعباز GIS، یعنی QGIS، استفاده خواهیم کرد. بنابراین اگر قبلاً با آن آشنایی دارید، بشما کمک خوبی میکند. در قسمت بعد خواهیم دید چگونه دادهOpenStreetMap را به پایگاهداده PostgreSQL درونبرد کنیم.
osm2pgsql
پس از اینکه Postgresql را همراه با PostGIS در ویندوز راهاندازی کردیم و توانستیم یک پایگاهداده را در آن محیط ایجاد کنیم ، میتوانیم ادامه مراحل را برای آوردن داده OpenStreetMap در یک پایگاهداده انجام دهیم. در این مرحله، میتوانید داده را در قالب شیپفایل دریافت کنید و از بارگذار شیپفایل استفاده کنید. اما این کار شاید موجب شود تمام داده موردنظرتان را به دست نیاورید. در این فصل خواهیم آموخت چگونه از osm2pgsql برای اینکار استفاده کنیم. osm2pgsql یک برنامه با خط فرمان برای بارکردن داده های خام OSM در پایگاهداده PostGIS است.
مراحل راهاندازی osm2pgsql را در ویندوز طی میکنیم، هرچند همین مراحل در سیستمعاملهای دیگر تقریباً مشابه است. پیشفرض ما این است که پایگاهداده(های) PostGIS خود را درست تنظیم کردهاید.
گرفتن osm2pgsql
برای دانلود نسخه ویندوز osm2pgsql، با مرورگر وب خود به مسیر زیر بروید
http://wiki.openstreetmap.org/wiki/Osm2pgsql#Windows
- فایل با نام osm2pgsql.zip را دانلود کنید.
- فایل زیپ را روی رایانه خود استخراج کنید. پوشه استخراجشده را به مسیری منتقل کنید که بعداً آن را جابهجا نکنید، زیرا میخواهیم مکان آن را به path سیستم اضافه کنیم.
- در پوشه osm2pgsql که از زیپ خارج کردید، فایلی به نام osm2pgsql.exe وجود دارد. این برنامهای است که برای درونبرد (Import) داده اجرایش میکنیم، اما برای اینکه ویندوز بتواند آن را پیدا کند، باید محل آن را به system path اضافه کنیم. برای اینکار، روی منوی شروع در ویندوزکلیک کنید و بنویسید system path
- در فضای باز شده، باید گزینهای با نام Edit the system environment variables ببینید. روی آن کلیک کنید.
- روی دکمه Environment Variables کلیک کنید.
- در پایین صفحه متغیری با نام Path را پیدا کنید و روی گزینه Edit… کلیک کنید.
- در این قسمت، باید پوشه حاوی osm2pgsql.exe را به متغیر Path اضافه کنید.
- یک semicolon نیز به انتهای پوشه قبلی اضافه کنید و سپس مسیر پوشه osm2pgsql.exe را تایپ کنید. برای مثال، اگر پوشه osm2pgsql را مستقیماً در دایرکتوری C:\ قرار دادهاید، مسیر آن به صورت زیر خواهد بود:
C:\osm2pgsql\Win32
- برای ذخیره تنظیمات جدید پیدرپی روی OK کلیک کنید.
- osm2pgsql حالا باید کار کند. بیایید امتحان کنیم.
- اعلان فرمان ویندوز (Windows Command Prompt) را باز کنید. این کار را با کلیک روی منوی شروع و تایپ cmd انجام دهید. برنامه Command Prompt نمایش داده میشود و میتوانید Enter را فشار دهید یا روی آن کلیک کنید.
- در خط فرمان CMD دستور زیر را، تایپ کنید:
osm2pgsql
- اگر همهچیز درست کار کند، باید پیامی شبیه به این دریافت کنید:
- اگر پیام هشداری مانند این نمیبینید و میگوید که نمیتواند برنامه osm2pgsql را پیدا کند، ممکن است متغیر Path را اشتباه وارد کرده باشید.
گرفتن داده خام OSM
قبل از اینکه بتوانیم osm2pgsql اجرا کنیم، نیاز به مقداری داده خام OSM برای درونبرد به یک پایگاهداده داریم. اگر از قبل یک فایل ” .osm” ندارید، میتوانید فایلی را از مسیر https://download.bbbike.org/osm/bbbike/ دانلود کنید. این سایت میزبان بسیاری از فایلهای استخراجشده OSM برای شهرهای مختلف است. یک شهر را پیدا کنید و فایل PBF آن را دانلود کنید. فایلهای PBF نسخه فشردهشده فایلهای معمولی ” .osm” هستند. اگر داده خام منطقه دیگری را بخواهید، میتوانید از هر سرویس استخراجگر دیگری که در قسمت آموزش گرفتن داده به آنها اشاره شده است، استفاده کنید.
گرفتن فایل (Style)
osm2pgsql نیاز به استفاده از یک فایل Style سفارشی دارد تا تعیین کند هنگام درونبرد در پایگاهداده کدام برچسبها شامل شوند.
درونبرد داده
رابط کاربری PgAdmin III را باز کنید و همانطور که از قبل میدانید، یک پایگاهداده جدید به نام osm بسازید. برای درونبرد داده به این پایگاه داده، برنامه osm2pgsql را از طریق خط فرمان در CMD اجرا میکنیم.
- روی منوی شروع کلیک کنید و بنویسید cmd و Enter را بزنید تا Command Prompt باز شود.
در اینجا برنامه osm2pgsql را با چندین گزینه اجرا خواهیم کرد. حداقل موارد زیر را باید به برنامه بدهیم:
- محل فایل داده OSM
- نام پایگاهداده و نام کاربری پایگاهداده
- فایل سبک (style) که تعیین میکند چه برچسبهایی از OSM به پایگاهداده درونبرد خواهد شد
فایل OSM خود را در دایرکتوری C:\ قرار دادهایم تا کار را آسانتر کنیم.
- دستور زیر را وارد کنید، فقط محل فایل OSM و فایل سبک را با مسیر فایلهای خود در کامپیوتر خود جایگزین کنید.
osm2pgsql -c -d osm -U postgres -H localhost -S C:\default.style C:\bangkok. ” ” .osm””pbf
- Enter را بزنید، اگر همهچیز خوب پیش برود، فرآیند باید شروع شود. ممکن است چند دقیقه طول بکشد تا تمام داده در پایگاهداده بار شود.
- اگر فایل خام OSMتان بزرگ است، شاید لازم باشد حافظه بیشتری به پردازنده osm2pgsql اختصاص دهید. برای این منظور، عبارت زیر را به فرمان اضافه کنید:
· –cache 600
آزمایشکردن
میتوانیم آزمایش کنیم که فرآیند درونبرد موفق بوده و داده پایگاهدادهمان را با استفاده از QGIS مشاهده کنیم.
- QGIS را باز کنید و روی دکمه Add PostGIS Layers کلیک کنید.
- در قسمت Connections در بالا، روی New کلیک کنید.
- به اتصال جدید یک نام بدهید. در قسمت database بنویسیدosm ( نام پایگاه دادهتان).
- نام کاربری postgres و گذرواژه خود را در زیر وارد کنید.
- روی OK کلیک کنید تا تنظیمات اتصال ذخیره شود. سپس برای اتصال به سرور PostgreSQL روی Connect کلیک کنید.
- در کنار public کلیک کنید تا همه لایههای (جداول) پایگاهداده خود را ببینید. توجه کنید که osm2pgsql برای انواع مختلف اشیا – نقطهها، خطها و پلیگونها – یک جدول جداگانه ایجاد میکند. یک جدول نیز برای جادهها ایجاد میکند که فقط شامل جادههای اصلی است.
- یک یا چند لایه را انتخاب کنید و روی Add (افزودن) کلیک کنید. در صورت درخواست، WGS84 را بهعنوان CRS انتخاب کنید.
- اگر همهچیز موفقیتآمیز باشد، خواهید دید که لایههایی که انتخاب کردهاید در QGIS نمایش داده میشوند.
کار با داده با استفاده از Osmosis
Osmosis یک ابزار خط فرمان قدرتمند برای دستکاری و پردازش داده های خام ” .osm” است. از این ابزار اغلب برای پردازش فایلهای بزرگ داده، تقسیم فایلهای OSM به قطعات کوچکتر و اضافهکردن یک بسته تغییر (changeset) برای بهروزرسانی فایل موجود استفاده میشود.
توابع بسیار زیادی در Osmosis وجود دارند و میتوانید جزئیات هر یک را در ویکی بخوانید. این بخش از آموزش به معرفی Osmosis، نصب آن روی ویندوز و استفاده از یک فرمان مقدماتی Osmosis میپردازد.
Osmosis را نصب کنید
مانند osm2pgsql در فصل قبل، باید osmosis را دانلود و راهاندازی کنیم تا بتوانیم آن را از خط فرمان cmd اجرا کنیم. فرآیند این کار بسیار شبیه osm2pgsql خواهد بود.
همچنین به مقداری داده خام OSM نیاز دارید تا با آن کار کنید. اگر میخواهید مثالهای این فصل را دنبال کنید، فایل نمونه را دانلود کنید. همچنین میتوانید از هر فایل خام داده به انتخاب خودتان استفاده کنید.
برای دانلود و آمادهسازی Osmosis مراحل زیر را دنبال کنید:
- ابتدا، Osmosis را از اینترنت دانلود کنید.
- پوشه را از حالت فشرده خارج کنید و آن را در جایی از سیستم که جابهجا نمیشود قرار دهید. باید مکان آن را به system path اضافه کنیم تا بتوانیم آن را از خط فرمان اجرا نماییم.
- روی منوی شروع کلیک کنید و بنویسید: system path
- باید گزینهای با نام Edit the system environment variables(ویرایش متغیرهای محیطی سیستم) ببینید. روی آن کلیک کنید.
- روی دکمهEnvironment Variables (متغیرهای محیطی) کلیک کنید.
- در پایین، متغیری با نام path را پیدا کنید و روی Edit… (ویرایش…) کلیک کنید.
- باید پوشهای که osmosis.bat در آن قرار دارد را به متغیر Path اضافه کنید.
- یک سمیکالن به انتهای پوشه قبلی اضافه کنید و سپس مسیر کامل پوشه Osmosis را تایپ کنید. برای مثال، اگر پوشه osmosis-latest را مستقیماً در پوشه C:\ گذاشتهاید، مسیر آن میشود:
C:\osmosis-latest\bin
- چند بار OK را بزنید تا تنظیمات جدید ذخیره شود.
- اکنون باید osmosis کار کند. بیایید آن را بررسی کنیم.
- Windows Command Prompt (اعلان فرمان ویندوز) را باز کنید. این کار را با کلیک روی منوی شروع و تایپکردن cmd انجام دهید. برنامه اعلان فرمان ظاهر میشود و میتوانید Enter را فشار دهید یا روی آن کلیک کنید.
- در خط فرمان عبارت زیر را تایپ کنید
osmosis
- اگر همهچیز درست کار کند، باید پیامی شبیه به این دریافت کنید:
- اگر چنین خروجیای ندیدید و سیستم پیغام میدهد که نمیتواند برنامهosmosis را پیدا کند، ممکن است متغیر Path را اشتباه وارد کرده باشید.