اجرای مفاصل فضایی (QGIS3)
Spatial Join یک مشکل کلاسیک GIS است – انتقال ویژگی ها از یک لایه به لایه دیگر بر اساس رابطه فضایی آنها. در QGIS، این قابلیت از طریق الگوریتم پردازش در دسترس است.Join attributes by location
نمای کلی کار
ما از ۲ لایه استفاده خواهیم کرد – یک شکل فایل از مرزهای شهر نیویورک و یک شکل فایل دیگر از رتبه بندی خیابان خیابان برای همه خیابان های شهر نیویورک. اولین کار، یافتن میانگین رتبه بندی خیابان ها در هر ناحیه با استفاده از یک پیوست فضایی با الگوریتم خلاصه خواهد بود. وظیفه دوم اضافه کردن نام بخش به ویژگی های خیابان از طریق یک اتصال فضایی یک به چند خواهد بود.
خواهید گرفت
- ایجاد فیلترهایی برای حذف موقت برخی از ویژگی ها از محاسبات.
دریافت داده ها
NYC Open Data Portal یک منبع عالی از داده های رایگان برای شهر نیویورک است.
فایل فشرده Borough Boundaries را با استفاده از گزینه Export در پورتال دانلود کنید .
فایل فشرده Street Pavement Rating را با استفاده از گزینه Export در پورتال دانلود کنید .
برای راحتی کار، میتوانید مستقیماً یک نسخه از مجموعه دادهها را از لینکهای زیر دانلود کنید:
منبع داده [CITYOFNY]
nybb_19a.zipفایل را در مرورگر QGIS بیابید و آن را گسترش دهید. لایه را انتخاب کنیدnybb_19a/nybb.shpو آن را روی بوم بکشید. این یک لایه چند ضلعی است که مرزهای محله را در شهر نیویورک نشان می دهد.
- بعد،
V_SSS_SEGMENTRATING_1.zipفایل را پیدا کنید و آن را گسترش دهید. لایه را انتخاب کردهdot_V_SSS_SEGMENTRATING_1_20190129.shpو به بوم اضافه کنید. این یک لایه خطی از تمام خیابان های شهر است.
- بیایید ویژگی های موجود برای هر ویژگی لایه را بررسی کنیم
dot_V_SSS_SEGMENTRATING_1_20190129. کلیک راست کرده و Open Attribute Table را انتخاب کنید .
- متوجه ویژگی نامیده شده خواهید شد
Rating_Bکه دارای مقادیری در محدوده ۰-۱۰ است که نشان دهنده رتبه بندی بخش خیابان است. ویژگیRatingWordدارای رتبه بندی توصیفی است. می توانیم ازRating_Bفیلد برای محاسبه میانگین امتیاز استفاده کنیم.
- ممکن است متوجه شوید که برخی از ویژگی ها دارای رتبه بندی هستند
NR. اینها بخش هایی هستند که رتبه بندی نشده اند. گنجاندن آنها در تحلیل ما صحیح نخواهد بود. قبل از اینکه اتصال فضایی را انجام دهیم، اجازه دهید یک فیلتر برای حذف این رکوردها تنظیم کنیم . روی لایه کلیک راست کردهdot_V_SSS_SEGMENTRATING_1_20190129و Filter را انتخاب کنید .
- در Query Builder عبارت زیر را تایپ کنید تا تمام رکوردهایی که رتبه بندی نشده اند را انتخاب کنید
NR. همچنین می توانید با کلیک بر روی Field ، Operator و انتخاب مقدار مناسب ، عبارت را به صورت تعاملی بسازید . روی OK کلیک کنید .
"RatingWord" != 'NR'
- متوجه خواهید شد
dot_V_SSS_SEGMENTRATING_1_20190129که اکنون لایه دارای نماد فیلتر است که نشان می دهد یک فیلتر فعال روی این لایه اعمال شده است. حالا می توانیم با استفاده از این لایه یک Join فضایی انجام دهیم. به بروید .
- جستجو و مکان یابی کنید . برای راه اندازی آن دوبار کلیک کنید.
- در گفتگوی Join ویژگی بر اساس مکان (خلاصه) ،
nybbبه عنوان لایه ورودی انتخاب کنید . لایه خیابان لایه Joindot_V_SSS_SEGMENTRATING_1_20190129خواهد بود . می توانید گزاره Geometry را به حالت پیش فرض رها کنید . برای خلاصه کردن روی دکمه … کنار فیلدها کلیک کنید .Intersects
توجه داشته باشید
نکته ای برای کمک به انتخاب لایه های ورودی و پیوستن صحیح: لایه ورودی لایه ای است که با ویژگی های جدید در پیوست فضایی اصلاح می شود. همانطور که می خواهیم فیلد رتبه بندی میانگین به لایه borough اضافه شود، لایه ورودی خواهد بود.
- را انتخاب کنید
Rating_Bو روی OK کلیک کنید .
- به همین ترتیب، برای محاسبه روی دکمه … در کنار خلاصه ها کلیک کنید .
meanبه عنوان عملگر خلاصه انتخاب کنید و روی OK کلیک کنید . اکنون آماده شروع پردازش هستیم. روی Run کلیک کنید .
- الگوریتم پردازش از طریق ویژگی ها کار می کند و اتصال فضایی را اعمال می کند. بررسی کنید که کار پردازش موفقیت آمیز بوده و روی Close کلیک کنید .
- در پنجره اصلی QGIS، یک لایه جدید به بوم اضافه شده است. ویژگی جدول را برای این لایه باز کنید. مشاهده خواهید کرد که یک ستون جدید با میانگین رتبه بندی تمام خیابان هایی که با آن ویژگی جالب هستند به لایه ورودی ورودی اضافه شده است.
Joined layerRating_B_mean
- اکنون می توانیم یک عملیات معکوس انجام دهیم. گاهی اوقات تجزیه و تحلیل شما مستلزم دریافت ویژگی ها از یک لایه دیگر بر اساس رابطه فضایی است اما هیچ خلاصه ای را محاسبه نمی کند. برای چنین تحلیلی می توانیم از الگوریتم استفاده کنیم . وظیفه اضافه کردن نام ناحیه به هر ویژگی در لایه خیابان ها بر اساس چند ضلعی محله است. قبل از اجرای این الگوریتم، اجازه دهید فیلتر را از لایه حذف کنیم. روی نماد فیلتر کلیک کنید و Clear را در Query Builder فشار دهید . روی OK کلیک کنید .
Join attribute by locationdot_V_SSS_SEGMENTRATING_1_20190129
- در پانل لایه ها را بچرخانید . algorithm را در Processing Toolbox پیدا کنید و برای اجرا روی آن دوبار کلیک کنید.
Joined layer
dot_V_SSS_SEGMENTRATING_1_20190129به عنوان لایه ورودی وnybbبه عنوان لایه Join انتخاب کنید . می توانید گزاره Geometry را به حالت پیش فرض رها کنیدIntersects. برای افزودن و انتخاب روی دکمه … کنار فیلدها کلیک کنید . روی OK کلیک کنید .BoroName
- پاره خط ممکن است از یک مرز منطقه عبور کند، بنابراین نوع Join را به عنوان انتخاب می کنیم . روی Run کلیک کنید .
Crate separate feature for each located feature (one-to-many)
- پس از پایان پردازش، جدول ویژگی های جدید اضافه شده را باز کنید . خواهید دید که یک ویژگی جدید به هر ویژگی خیابان اضافه شده است.
Joined layerBoroName




















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