تجزیه و تحلیل زمان سفر با Uber Movement (QGIS3) 

هشدار

داده های حرکت Uber متوقف شده است [ مشاهده اطلاعیه ]. همچنان می توانید آموزش را با استفاده از داده های آرشیو ارائه شده در آموزش دنبال کنید و تکنیک تحلیل زمان سفر با استفاده از QGIS را یاد بگیرید.

Uber Movement داده‌های زمان سفر ناشناس و جمع‌آوری شده را برای بسیاری از شهرهای جهان به اشتراک می‌گذارد. محصول Travel Times Uber Movement یک مجموعه داده عمومی است که سفر منطقه به منطقه را در یک شهر اندازه گیری می کند. این زمان‌ها بر اساس سواری‌های واقعی Uber هستند و نشان‌دهنده دقیق ازدحام و الگوهای ترافیک در شهر هستند. این یک مجموعه داده بزرگ و قابل دسترسی است که از میلیون‌ها تاکسی واقعی جمع‌آوری شده است. این آموزش تکنیک هایی را برای کار با استفاده از چنین مجموعه داده های ترافیکی انبوه برای انجام تجزیه و تحلیل زمان سفر در QGIS نشان می دهد.

نمای کلی کار 

ما از یک مجموعه داده ترافیک جمع‌آوری شده برای شهر بنگلور، هند استفاده می‌کنیم تا زمان سفر به یک مکان انتخابی در شهر را پیدا کنیم. ما همچنین یک نقشه Isochrone برای آستانه سفر ۳۰ دقیقه ایجاد خواهیم کرد.

 خواهید گرفت

  • یک فایل GeoJSON را در QGIS بارگیری کنید

دریافت داده ها 

ما مجموعه داده Travel Times را برای شهر بنگلور هند دانلود خواهیم کرد.

  1. به وب سایت Uber Movement بروید و روی Cities کلیک کنید .
../../_images/data013.png
  1. جستجو برای Banglore.
../../_images/data023.png
  1. روی دانلود داده کلیک کنید .
../../_images/data032.png
  1. در پنجره بازشو، به GEO BOUNDARIES بروید . این شامل فایل GeoJSON بخش Banglore خواهد بود. اطلاعات مجوز را بپذیرید و برای دانلود کلیک کنید.Download dataBANGLORE_WARDS.JSON
../../_images/data042.png
  1. سپس به سوئیچ کنید . این داده ها از سال ۲۰۱۶ تا ۲۰۲۰ در دسترس است و هر سال به ۴ فصل تقسیم می شود. ما داده ها را برای دانلود می کنیم . آن را انتخاب کرده و روی آن کلیک کنید . این فایل حاوی تمام اطلاعات ناشناس درباره سفر هفتگی uber در بنگلور از ژوئیه تا سپتامبر ۲۰۱۹ است.ALL DATA2019 Quarter ۳Travel Times by Hour of Day (Weekdays Only)
../../_images/data051.png

برای راحتی شما می توانید داده ها را از لینک های زیر دانلود کنید.

bangalore_wards.json

bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate.csv

منبع داده: [UBER]

  1. bangalore_wards.jsonفایل را در پنل مرورگر پیدا کنید و آن را روی بوم بکشید. در مرحله بعد، یک لایه بیس مپ از OpenStreetMap بارگذاری می کنیم. ما از پلاگین QuickMapServices برای دسترسی به نقشه پایه استفاده خواهیم کرد. پس از نصب، به وب ‣ QuickMapServices ‣ OSM ‣ OSM Standard بروید . یک لایه کاشی بیس مپ از OpenStreetMap به پروژه اضافه خواهد شد. سپس روی دکمه Open Data Source Manager کلیک کنید .
../../_images/019.png
  1. به تب متن جدا شده بروید . فایل را مرور کنید bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate.csvو آن را انتخاب کنید. از آنجایی که این فایل CSV فقط داده های جدولی است، گزینه No geometry (Atribute only table) را انتخاب کرده و روی Add کلیک کنید .
../../_images/029.png
  1. لایه به پنل لایه هاbangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate اضافه می شود . این لایه حاوی داده های مکان سفر ناشناس و جمع آوری شده بین مناطق مختلف شهر است. هر ردیف از جدول شامل ستون‌هایی برای منطقه مبدا ( sourceid )، منطقه مقصد ( dstid )، ساعت روز ( hod ) و میانگین زمان سفر جمع‌آوری شده از تمام سفرهای بین این منطقه در آن ساعت ( mean_travel_time ) است. می‌توانید درباره این مجموعه داده در Movement: Travel Times Calculation Methodology (pdf) اطلاعات بیشتری کسب کنید . قبل از حرکت به جلو، بیایید بررسی کنیم که چه تعداد رکورد داده در لایه وجود دارد. روی لایه کلیک راست کرده و Show Feature Count را انتخاب کنید . کل ردیف های جدول در کنار آن نمایش داده می شود. این یک جدول نسبتا بزرگ است اما ما برای تجزیه و تحلیل خود به تمام ردیف های داده نیاز نداریم. اکنون مکان مورد نظر خود را شناسایی کرده و این جدول را به رکوردهای داده برای آن فیلتر می کنیم.bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate
../../_images/039.png
  1. ما می خواهیم تمام مناطقی را که در عرض ۳۰ دقیقه از یک مکان خاص قابل دسترسی هستند محاسبه کنیم. با استفاده از نقشه پایه استاندارد OSM ، می توانید مکان مورد نظر را پیدا کنید. سپس bangalore_wardsلایه را انتخاب کنید، از ابزار Identify استفاده کنید و روی آن کلیک کنید. نتایج ویژگی های منطقه حاوی مکان را نشان می دهد. برای هدف این آموزش، فرض کنید مکان هدف ما در منطقه JP Nagar با MOVEMENT_ID ۱۹۳ است .
../../_images/049.png
  1. ما می‌توانیم رکوردهای زمان سفر را فقط برای کسانی که این منطقه را مقصد دارند فیلتر کنیم. همچنین می‌توانیم تحلیل خود را به ساعت اوج رفت‌وآمد صبح از ۹ صبح تا ۱۰ صبح محدود کنیم. روی لایه کلیک راست کرده bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregateو Filter را انتخاب کنید .
../../_images/059.png
  1. عبارت فیلتر زیر را وارد کرده و روی OK کلیک کنید .
"dstid" = 193 AND "hod" = 9

../../_images/069.png

  1. در پنجره اصلی QGIS، خواهید دید که تعداد رکوردهای جدول فیلتر شده اکنون به ۱۹۷ کاهش یافته است . از آنجایی که در کل ۱۹۸ منطقه در شهر وجود دارد، ما رکورد زمان سفر بین ۱ بخش مقصد و ۱۹۷ منطقه مبدا را داریم. جدول ویژگی هر دو لایه را با استفاده از دکمه Open Attribute Table در نوار ابزار Attributes باز کنید .
../../_images/079.png
  1. اکنون اشکال بخش را در لایه bangalore_wardsو اطلاعات جدولی در لایه داریم bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregate. ما می توانیم اطلاعات ویژگی را با استفاده از یک ویژگی مشترک به اشکال بپیوندیم. در اینجا MOVEMENT_IDستون از bangalore_wardsلایه و sourceidستون از bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregateشناسه بخش منحصر به فرد هستند که می توانند به یکدیگر متصل شوند. این عملیات یک Table Join نامیده می شود .
../../_images/088.png
  1. قبل از اینکه بتوانیم این دو لایه را به هم بپیوندیم، باید اطمینان حاصل کنیم که مقادیر در هر دو ستون دقیقاً مطابقت دارند. تصور می شود که آنها یکسان به نظر می رسند، آنها انواع مختلفی دارند. از آنجایی که فرمت GeoJSON راهی برای تعیین انواع ویژگی ندارد، همه مقادیر از نوع String – یعنی Text فرض می‌شوند. اما وقتی یک CSV را به QGIS وارد می کنیم، به طور پیش فرض QGIS سعی می کند انواع ستون ها را بر اساس مقادیر تعیین کند و نوع فیلد مناسب را اختصاص دهد. برای فایل CSV، نوع داده برای ستون به عنوان عدد صحیحsourceid اختصاص داده شد . بنابراین باید ستون را از GeoJSON به نوع Integer نیز تبدیل کنیم. به پردازش ‣ جعبه ابزار ‣ جدول برداری ‣ الگوریتم ماشین حساب فیلد بروید . برای راه اندازی آن دوبار کلیک کنید.
../../_images/098.png
  1. bangalore_wardsبه عنوان لایه ورودی انتخاب کنید . نام فیلد را به عنوان نامگذاری کنید joinfieldو نوع فیلد نتیجه را به عنوان انتخاب کنید IntegerMOVEMENT_IDبه عنوان عبارت وارد کنید . روی دکمه  در کنار Calculated کلیک کنید و Save to File را انتخاب کنید… سپس نام فایل خروجی را به صورت وارد کنید bangalore_wards_fixed.gpkg. روی Run کلیک کنید . ماشین حساب فیلد را ببندید.
../../_images/1042.png
  1. یک لایه جدید به پنل لایه هاbangalore_wards_fixed اضافه می شود . اکنون ما آماده انجام اتصال هستیم. به Processing ‣ Toolbox ‣ Vector General ‣ Join ویژگی ها با مقدار فیلد بروید . برای راه اندازی آن دوبار کلیک کنید.
../../_images/1160.png
  1. bangalore_wards_fixedبه عنوان لایه ورودی و joinfieldبه عنوان فیلد Table انتخاب کنید . bangalore-wards-2019-3-OnlyWeekdays-HourlyAggregateبه عنوان لایه ورودی ۲ و sourceidفیلد Table 2 را انتخاب کنید . لایه Joined را به عنوان نامگذاری کنید uber_travel_times.gpkgو روی Run کلیک کنید .
../../_images/1245.png
  1. یک لایه جدید به پنل لایه هاuber_travel_times اضافه می شود . بیایید آن را برای تجسم نتیجه پیوستن استایل کنیم. روی Open the Layer Styling Panel کلیک کنید . رندر و به عنوان مقدار را انتخاب کنید . یک رمپ رنگی را انتخاب کنید و روی طبقه بندی کلیک کنید . نقشه را مشاهده خواهید کرد که افزایش زمان سفر را بیشتر از مقصد نشان می دهد.Graduatedmean_travel_time
../../_images/1343.png
  1. اما ما به دنبال تجزیه و تحلیل و استخراج مناطقی هستیم که در ۳۰ دقیقه از زمان سفر هستند، بنابراین باید کمی پردازش بیشتری انجام دهیم. استایل را به رندر Single symbol برگردانید . روی لایه کلیک راست کرده uber_travel_timesو Filter را انتخاب کنید .
../../_images/1439.png
  1. عبارت زیر را وارد کنید تا همه مناطق را در ۱۸۰۰ ثانیه (۳۰ دقیقه) از میانگین زمان سفر انتخاب کنید. ما همچنین باید منطقه مقصد خود را که ۰ زمان سفر خواهد داشت را نیز لحاظ کنیم.
"mean_travel_time" <= 1800 OR "MOVEMENT_ID" = 193

../../_images/1534.png

  1. این لایه اکنون خوشه چند ضلعی را نشان می دهد که ناحیه مورد نظر را تشکیل می دهد. اکنون همه آنها را در یک چند ضلعی ادغام می کنیم. به پردازش ‣ جعبه ابزار ‣ هندسه برداری ‣ انحلال بروید . برای راه اندازی آن دوبار کلیک کنید.
../../_images/1632.png
  1. uber_travel_timesبه عنوان لایه ورودی انتخاب کنید . لایه Dissolved را به صورت نامگذاری کنید ۳۰min_isochrone.gpkg. روی Run کلیک کنید .
../../_images/1733.png
  1. یک لایه جدید به پنل لایه ها۳۰min_isochrone اضافه می شود که نتیجه تجزیه و تحلیل ما را نشان می دهد.
../../_images/1828.png

اگر می خواهید بازخورد بدهید یا تجربه خود را در مورد این آموزش به اشتراک بگذارید، لطفاً در زیر نظر دهید. (به حساب GitHub نیاز دارد)


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

خانهدربارهتماسارتباط با ما