مکان یابی نزدیکترین تسهیلات با ماتریس مبدا-مقصد (QGIS3) 

در آموزش قبلی بصری سازی و مسیریابی شبکه پایه (QGIS3) یاد گرفتیم که چگونه یک شبکه بسازیم و کوتاه ترین مسیر را بین ۲ نقطه محاسبه کنیم. ما می‌توانیم آن تکنیک را برای انواع مختلفی از تحلیل‌های مبتنی بر شبکه اعمال کنیم. یکی از این کاربردها محاسبه ماتریس مبدا-مقصد یا ماتریس OD است . با توجه به مجموعه ای از نقاط مبدا و مجموعه ای دیگر از نقاط مقصد، می توانیم کوتاه ترین مسیر را بین هر جفت مبدا-مقصد محاسبه کنیم و فاصله/زمان سفر بین آنها را دریابیم. چنین تحلیلی برای یافتن نزدیکترین مرکز به هر نقطه ای مفید است. به عنوان مثال، یک شرکت لجستیک ممکن است از این تجزیه و تحلیل برای یافتن نزدیکترین انبار به مشتریان خود برای بهینه سازی مسیرهای تحویل استفاده کند. در اینجا ما از الگوریتم Distance Matrix از افزونه QGIS Network Analysis Toolbox (QNEAT3) برای یافتن نزدیکترین مرکز بهداشتی به هر آدرس در شهر استفاده می کنیم.

توجه داشته باشید

این آموزش نشان می دهد که چگونه از داده های شبکه خود برای محاسبه یک ماتریس مبدا-مقصد استفاده کنید. اگر داده های شبکه خود را ندارید، می توانید از پلاگین ORS Tools و الگوریتم ORS Tools ‣ Matrix ‣ Matrix from Layers برای انجام تحلیل مشابه با استفاده از داده های OpenStreetMap استفاده کنید. برای یادگیری نحوه استفاده از پلاگین ORS Tools به تجزیه و تحلیل منطقه خدمات با استفاده از Openrouteservice (QGIS3) مراجعه کنید .

نمای کلی کار 

ما ۲ لایه برای واشنگتن دی سی می گیریم – یکی با نقاط نشان دهنده آدرس و دیگری با نقاطی که نشان دهنده امکانات بهداشت روانی است – و امکاناتی را با کمترین فاصله سفر از هر آدرس پیدا می کنیم.

 خواهید گرفت

  • یک نمونه تصادفی از یک لایه نقطه استخراج کنید.
  • از لایه های مجازی برای اجرای پرس و جوی SQL در یک لایه QGIS استفاده کنید.

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

دولت ناحیه کلمبیا صدها مجموعه داده را آزادانه در کاتالوگ داده باز به اشتراک می گذارد .

لایه های داده زیر را به صورت فایل های شکل دانلود کنید.

برای راحتی کار، می‌توانید مستقیماً یک نسخه از مجموعه داده‌ها را از لینک‌های زیر دانلود کنید:

Roadway_Block-shp.zip

Address_Points.zip

ارائه دهنده خدمات مبتنی بر جامعه.zip

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

راه اندازی 

از پلاگین ها بازدید کنید ‣ مدیریت و نصب افزونه ها . :guilabel:`All` را انتخاب کنید افزونه QNEAT3 را جستجو کرده و نصب کنید. روی Close کلیک کنید .

../../_images/setup11.png

  1. فایل را پیدا کنید Community_Based_Service_Providers.zip، آن را گسترش دهید و Community_Based_Service_Providers.shpبه بوم اضافه کنید. ما فقط مراکزی را انتخاب خواهیم کرد که به بزرگسالان تسهیلات ارائه می دهند. روی لایه کلیک راست کرده Community_Based_Service_Providers.shpو Filter را انتخاب کنید .
../../_images/1133.png
  1. یک کادر محاوره ای Query Builder را باز می کند . عبارت زیر را در :guilabel:’Filter Expression’ وارد کنید روی Run کلیک کنید .
"PROVIDER_T"  IN ('Adult','Adult & Child')

../../_images/2106.png

  1. سپس، Roadway_Block.zipفایل را پیدا کنید، آن را گسترش دهید و آن را اضافه کنید Roadway_Block.shp. به همین ترتیب، فایل را پیدا کنید Address_Points.zip، آن را گسترش دهید و آن را اضافه کنید Address_Points.shp. نقاط زیادی را در اطراف شهر خواهید دید. هر نقطه نشان دهنده یک آدرس معتبر است. ما ۱۰۰۰ امتیاز را به صورت تصادفی انتخاب می کنیم. این تکنیک را نمونه گیری تصادفی می نامند. به پردازش ‣ جعبه ابزار بروید .
../../_images/349.png
  1. الگوریتم انتخاب برداری ‣ استخراج تصادفی را جستجو و مکان یابی کنید .
../../_images/349.png
  1. Address_Pointsبه عنوان لایه ورودی ، به عنوان روش انتخاب کنید و تعداد /درصد ویژگی ها را وارد کنید . در Extracted (تصادفی) گزینه را انتخاب کنید و روی Save to a file کلیک کنید . حالا دایرکتوری را انتخاب کنید و نام را به عنوان وارد کنید و روی Run کلیک کنید .Number of feature1000...address_point_subset.shp
../../_images/524.png

توجه داشته باشید

از آنجایی که الگوریتم ۱۰۰۰ نقطه تصادفی را از مجموعه داده‌های داده شده استخراج می‌کند، برای تکرار دقیق نقاط مورد استفاده در این تمرین، می‌توانید فایل زیر مجموعه‌ای را که در حین اجرای الگوریتم دریافت کرده‌ایم از اینجا address_point_subset.zip دانلود کنید . پس از دانلود address_point_subset.shpلایه بار در QGIS.

  1. یک لایه جدید به پنل لایه هاaddress_point_subset اضافه می شود ، می توانید نمایان بودن لایه نقاط آدرس را خاموش کنید. بیایید نام این لایه را به عنوان تغییر نام دهیم . روی لایه کلیک راست کرده و Rename layer را انتخاب کنید .Address_Pointsorigin_pointsaddress_point_subset
../../_images/624.png
  1. به همین ترتیب، نام Community_Based_Service_Providerلایه‌های نشان‌دهنده امکانات بهداشتی را به عنوان تغییر نام دهید destination_points. نامگذاری لایه ها به این ترتیب شناسایی آنها را در پردازش های بعدی آسان می کند. در ادامه جعبه ابزار پردازش را برای ایجاد ماتریس فاصله با استفاده از لایه های مبدا و مقصد باز می کنیم.
../../_images/723.png
  1. الگوریتم QNEAT3 ‣ ماتریس های فاصله ‣ ماتریس OD را از لایه ها به عنوان خط (m:n) تعیین کنید . اگر این الگوریتم را در جعبه ابزار نمی بینید، مطمئن شوید که افزونه QNEAT3 را نصب کرده اید .
../../_images/823.png
  1. این الگوریتم به یافتن فواصل همراه با شبکه بین لایه های انتخاب شده مبدا و مقصد کمک می کند. Roadway_Blockبه عنوان لایه شبکه انتخاب کنید . origin_pointsبه عنوان لایه From-Points و OBJECTIDبه عنوان قسمت Unique Point ID را انتخاب کنید . به همین ترتیب، destination_pointsبه عنوان لایه To-Points و OBJECTIDبه عنوان قسمت Unique Point ID تنظیم کنید . معیار بهینه سازی را به عنوان تنظیم کنید .Shortest Path (distance optimization)
../../_images/923.png
  1. از آنجایی که بسیاری از خیابان های شبکه یک طرفه هستند، باید پارامترهای پیشرفته را برای تعیین جهت تنظیم کنیم. برای جزئیات بیشتر در مورد نحوه ساختاردهی این ویژگی ها ، بصری سازی و مسیریابی شبکه اصلی (QGIS3) را ببینید . ما همچنین گزینه ای برای انتخاب سبک هندسی ماتریس تولید شده داریم. ما در حال داشتن یک شبکه جاده با اطلاعات جهت هستیم تا بتوانیم با فول کردن مسیر، ماتریس تولید کنیم. انتخاب کنید . به عنوان قسمت جهت انتخاب کنید . مقدار را برای جهت رو به جلو ، مقدار برای جهت عقب و به عنوان مقدار برای هر دو جهت وارد کنید . تحمل توپولوژی را به صورت . سایر گزینه ها را در مقادیر پیش فرض نگه دارید و روی Run کلیک کنید .Matrix geometry follows routesSUMMARYDIROBIBBD0.0000150
../../_images/1030.png
  1. یک لایه جدول جدید به نام به پنل لایه ها اضافه می شود . کلیک راست کرده و Open Attributes Table را انتخاب کنید . خواهید دید که جدول شامل ۶۷۰۰۰ ردیف است. ما ۶۷ نقطه مبدا و ۱۰۰۰ نقطه مقصد داشتیم – بنابراین خروجی شامل ۶۷ x 1000 = 67000 جفت مبدا و مقصد است. ستون شامل فاصله بر حسب متر بین هر نقطه مبدا تا هر نقطه مقصد است.Output OD Matrixtotal_cost
../../_images/1134.png
  1. برای این آموزش فقط به نقطه مقصد با کمترین مسافت علاقه داریم. ما می توانیم یک پرس و جوی SQL ایجاد کنیم تا مقصدی را که کمترین مقدار را total_costدر بین همه مقصدها دارد انتخاب کنیم. به پردازش ‣ جعبه ابزار بروید . وکتور کلی را جستجو و مکان یابی کنید ‣ SQL را اجرا کنید .
../../_images/1231.png
  1. در Additional input data sources، Output OD Matrix را انتخاب کرده ...و بررسی کنید و روی OK کلیک کنید . اکنون بر روی Summation تحت پرس و جوی SQL کلیک کنید . پرس و جوی زیر را در کادر محاوره ای SQL query وارد کنید . به عنوان فیلد Geometry وارد شده و نوع Geometry را انتخاب کنید . روی Run کلیک کنید .geometryLineString
select origin_id, destination_id, min(total_cost) as shortest_distance, geometry
from input1 group by origin_id

../../_images/1329.png

  1. یک لایه مجازی جدید به پنل لایه ها اضافه می شود . این لایه نتیجه تحلیل ما را دارد. نزدیکترین ارائه دهنده خدمات برای هر یک از ۱۰۰۰ نقطه مبدا.SQL Output
../../_images/1427.png

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


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

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

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