تحلیل همپوشانی چند معیاره (QGIS3)
تجزیه و تحلیل همپوشانی وزنی چند معیاره فرآیند تخصیص مناطق بر اساس انواع ویژگی هایی است که مناطق انتخاب شده باید داشته باشند. اگرچه این یک عملیات GIS رایج است، اما بهتر است در فضای شطرنجی با استفاده از رویکرد مبتنی بر شبکه انجام شود.
توجه داشته باشید
وکتور در مقابل پوشش های شطرنجی
میتوانید با استفاده از ابزارهای پردازش جغرافیایی مانند بافر، حل کردن، اختلاف و تقاطع، آنالیز همپوشانی را بر روی لایههای برداری انجام دهید. اگر می خواهید یک پاسخ باینری مناسب/غیر مناسب پیدا کنید و با چند لایه کار می کنید، این روش ایده آل است. برای راهنمای گام به گام این رویکرد، میتوانید آموزش ویدیویی ما در مورد مکانیابی ایستگاه پارکینگ جدید دوچرخه با استفاده از تحلیل پوشش چند معیاره را مرور کنید.
کار در فضای شطرنجی به شما رتبهبندی مناسب را میدهد – نه فقط بهترین سایت مناسب. همچنین به شما این امکان را می دهد که به راحتی هر تعداد از لایه های ورودی را ترکیب کنید و وزن های مختلفی را به هر معیار اختصاص دهید. به طور کلی، این رویکرد ترجیحی برای مناسب بودن سایت است.
این آموزش از طریق گردش کار معمولی برای انجام تجزیه و تحلیل مناسب سایت – تبدیل داده های بردار منبع به رسترهای مناسب، طبقه بندی مجدد آنها و انجام عملیات ریاضی می پردازد.
نمای کلی کار
در این آموزش به شناسایی زمینه های مناسب برای توسعه می پردازیم
- نزدیک به جاده ها، و
- دور از آب، و
- نه در منطقه حفاظت شده
دریافت داده ها
ما از لایه های داده برداری از OpenStreetMap (OSM) استفاده خواهیم کرد . OSM یک پایگاه داده جهانی از داده های نقشه پایه آزادانه در دسترس است. Geofabrik شکل فایل های به روز شده روزانه مجموعه داده های OpenStreetMap را ارائه می دهد.
ما از لایه های داده OSM برای ایالت آسام در هند استفاده خواهیم کرد. شکلفایلهای Geofabrik India دانلود، به مرز ایالت بریده و در یک فایل GeoPackage بستهبندی شدند. می توانید یک نسخه از geopackage را از لینک زیر دانلود کنید:
منبع داده: [GEOFABRIK]
- فایل دانلود شده را
assam.gpkg
در مرورگر QGIS مرور کنید. آن را گسترش دهید و هر یک از ۵ لایه داده جداگانه را به بوم نقشه بکشید.boundary
,roads
,protected_regions
,water_polygons
وwater_polylines
لایه ها را در پانل لایه ها بارگذاری می کنید .
- اولین مرحله در تحلیل همپوشانی، تبدیل هر لایه داده به رستر است. یک نکته مهم این است که همه رسترها باید از یک اندازه باشند. ما از
boundary
لایه به عنوان وسعت برای همه رسترها استفاده خواهیم کرد . به بروید . الگوریتم را جستجو و مکان یابی کنید . برای راه اندازی آن دوبار کلیک کنید.
- در گفتگوی Rasterize (بردار به شطرنجی) ،
roads
به عنوان لایه ورودی انتخاب کنید . ما می خواهیم یک رستر خروجی ایجاد کنیم که در آن مقادیر پیکسل در جایی که جاده وجود دارد ۱ و در جایی که هیچ جاده ای وجود ندارد ۰ باشد.۱
به عنوان مقدار ثابت برای رایت وارد کنید . لایه های ورودی در یک CRS پیش بینی شده با مترها واحد هستند. به عنوان واحدهای اندازه شطرنجی خروجی انتخاب کنید . رزولوشن شطرنج خروجی را ۱۵ متر قرار می دهیم. هم به عنوان وضوح عرض/افقی و هم به عنوان وضوح ارتفاع/عمودی انتخاب کنید . در مرحله بعد، روی دکمه … کنار Output extension کلیک کنید و گزینه Use extension for را انتخاب کنید .Geoferenced units
15
boundary
- بیشتر به پایین اسکرول کنید و روی دکمه پیکان در قسمت Assign a specific nodata value to output bands کلیک کنید .
- اکنون باید آن فیلد روی . این مهم است زیرا وقتی ماشین حساب شطرنجی (که بعداً از آن استفاده خواهیم کرد) با پیکسلی با مقدار nodata در هر لایه مواجه می شود، خروجی را نیز روی nodata تنظیم می کند و در نتیجه خروجی اشتباه می شود.
Not set
- برای یافتن پارامترهای پیشرفته به پایین بروید و نمایه را برای اعمال فشرده سازی انتخاب کنید. پس از اجرای ابزار، فایل شطرنجی فشرده با اندازه کوچکتر تولید می شود. هنگام کار با داده های شطرنجی، استفاده از فشرده سازی بدون تلفات بسیار توصیه می شود.
High Compression
- شطرنجی خروجی Rasterized را به عنوان تنظیم کنید
raster_roads.tif
و روی Run کلیک کنید .
- هنگامی که پردازش به پایان رسید، یک لایه جدید raster_roads را در پانل لایه ها مشاهده خواهید کرد . استایل پیشفرض پیکسلها را با جادهها سفید و بقیه را سیاه نشان میدهد. ما می خواهیم ۴ لایه برداری دیگر را نیز به رستر تبدیل کنیم. به جای اجرای یک به یک الگوریتم شطرنجی، میتوانیم از عملکرد پردازش دستهای داخلی برای تبدیل همه آنها به یکباره استفاده کنیم. برای کسب اطلاعات بیشتر در مورد پردازش دسته ای به آموزش پردازش دسته ای با استفاده از چارچوب پردازش (QGIS3) مراجعه کنید . روی الگوریتم کلیک راست کرده و Execute as Batch Process را انتخاب کنید .
Rasterize (vector to raster)
- در گفتگوی Batch Processing ، روی دکمه … در ردیف اول ستون لایه ورودی کلیک کنید . لایه ها
boundary
،protected_regions
وwater_polygons
را انتخاب کنیدwater_polylines
و روی OK کلیک کنید .
توجه داشته باشید
این گزینه Advanced Parameters هنگام اجرای الگوریتم در حالت دسته ای در دسترس نیست. شما باید مراحل بالا را برای تمام لایه ها تکرار کنید و مراحل ۸ تا ۱۲ را برای اعمال فشرده سازی روی تمام خروجی های Rasterized نادیده بگیرید .
- پارامترها را با همان مقادیری که در لایه roads استفاده می کنیم پر کنید. پس از پر کردن ردیف اول پارامتر، از دکمه برای اضافه کردن مقدار یکسان برای همه لایهها استفاده کنید.
- در آخرین ستون Rasterized ، روی دکمه … در ردیف اول کلیک کنید. به عنوان حالت تکمیل خودکار و به عنوان پارامتر مورد استفاده انتخاب کنید . روی OK کلیک کنید .
Fill with parameter values
Input layer
- به دایرکتوری در رایانه خود بروید و لایه را به عنوان نامگذاری کنید
raster_
. رابط پردازش دسته ای نام را با نام لایه تکمیل می کند و تمام ردیف ها را پر می کند. مطمئن شوید که کادر Load layers on completion علامت زده شده است و روی OK کلیک کنید .
- پس از اتمام پردازش، ۴ لایه شطرنجی جدید در پانل لایه ها بارگذاری می شود . متوجه خواهید شد که ما ۲ لایه مرتبط با آب داریم – هر دو نشان دهنده آب. ما میتوانیم آنها را با هم ادغام کنیم تا یک لایه واحد داشته باشیم که نمایانگر مناطق آبی در منطقه است. الگوریتم ماشین حساب رستر را در جعبه ابزار پردازش جستجو و مکان یابی کنید . برای راه اندازی آن دوبار کلیک کنید.
- با استفاده از دکمه …
raster_water_polygons
به عنوان لایه های ورودی، لایه ها را انتخاب کنید . عبارت زیر را با استفاده از دکمه ε وارد کنید . همه گزینه های دیگر را به عنوان پیش فرض نگه دارید و لایه خروجی را با نام ذخیره کنید و روی Run کلیک کنید .raster_water_polylines
raster_water_merged.tif
"raster_water_polygons@1" + "raster_water_polylines@1"
- رستر ادغام شده به دست آمده دارای پیکسل هایی با مقدار ۱ برای همه مناطق دارای آب خواهد بود. اما متوجه خواهید شد که مناطقی وجود دارد که هم یک چند ضلعی آب و هم چند خط آب وجود دارد. آن مناطق دارای پیکسل هایی با مقدار ۲ خواهند بود – که صحیح نیست. ما می توانیم آن را با یک عبارت ساده حل کنیم. دوباره الگوریتم باز کنید .
raster_water_merged
لایه را با استفاده از دکمه … به عنوان لایه ورودی انتخاب کنید . عبارت زیر را با استفاده از دکمه ε وارد کنید . همه گزینه های دیگر را به عنوان پیش فرض نگه دارید و لایه خروجی را با نام ذخیره کنیدraster_water.tif
و روی Run کلیک کنید .
"raster_water_merged@1" > 0
- لایه به دست آمده
raster_water
اکنون دارای پیکسل هایی با مقادیر ۰ و ۱ است.
- اکنون که لایههایی داریم که پیکسلهای جاده و آب را نشان میدهند، میتوانیم رسترهای مجاورتی ایجاد کنیم. این فاصله ها به عنوان فاصله اقلیدسی نیز شناخته می شوند – جایی که هر پیکسل در شطرنجی خروجی نشان دهنده فاصله تا نزدیکترین پیکسل در شطرنجی ورودی است. سپس می توان از این شطرنجی به دست آمده برای تعیین مناطق مناسب که در فاصله معینی از ورودی هستند استفاده کرد. الگوریتم را جستجو و مکان یابی کنید . برای راه اندازی آن دوبار کلیک کنید.
- در گفتگوی Proximity (Raster Distance)
raster_roads
به عنوان لایه ورودی انتخاب کنید . به عنوان واحدهای فاصله انتخاب کنید . از آنجایی که لایه های ورودی در یک CRS پیش بینی شده با متر به عنوان واحد قرار دارند، (۵ کیلومتر) را به عنوان حداکثر فاصله تولید شده وارد کنید . مطمئن شوید که مقدار Nodata برای استفاده از مقدار شطرنجی نزدیکی مقصد است .Georeferenced coordinates
5000
Not set
- می توانید پارامترهای پیشرفته را گسترش دهید و نمایه را برای اعمال فشرده سازی انتخاب کنید. فایل خروجی را به عنوان نامگذاری کنید و روی Run کلیک کنید .
High Compression
roads_proximity.tif
توجه داشته باشید
ممکن است تا ۱۵ دقیقه طول بکشد تا این فرآیند اجرا شود. این یک الگوریتم فشرده محاسباتی است که نیاز به محاسبه فاصله برای هر پیکسل از شطرنجی ورودی دارد و ورودی ما شامل بیش از ۱ میلیارد پیکسل است.
- پس از اتمام پردازش، یک لایه جدید به پنل لایه ها
roads_proximity
اضافه می شود . برای تجسم بهتر آن، بیایید استایل پیش فرض را تغییر دهیم. روی دکمه Open the Layer Styling Panel در پنل Layers کلیک کنید . مقدار Max را به زیر گرادیان رنگ تغییر دهید .۵۰۰۰
- الگوریتم Proximity (Raster Distance) را برای
raster_water
لایه با همان پارامترها تکرار کنید و خروجی را نامگذاری کنیدwater_proximity.tif
.
- پس از پایان پردازش، می توانید یک ظاهر طراحی مشابه قبل را اعمال کنید تا نتایج را بهتر تجسم کنید. اگر دور شطرنجی به دست آمده کلیک کنید، می بینید که پیوسته ای از مقادیر از ۰ تا ۵۰۰۰ است. برای استفاده از این شطرنجی در تحلیل همپوشانی، ابتدا باید آن را دوباره طبقه بندی کنیم تا مقادیر گسسته ایجاد کنیم. دوباره الگوریتم باز کنید .
- ما می خواهیم به پیکسل هایی که نزدیک به جاده هستند امتیاز بیشتری بدهیم. پس بیایید از طرح زیر استفاده کنیم.
- ۰-۱۰۰۰ متر -> 100
- ۱۰۰۰-۵۰۰۰ متر -> 50
- > 5000 متر -> 10
roads_proximity
لایه را با استفاده از دکمه … به عنوان لایه ورودی انتخاب کنید . عبارت زیر را وارد کنید hat معیارهای بالا را در ورودی اعمال می کند. همه گزینه های دیگر را به عنوان پیش فرض نگه دارید و لایه خروجی را با نام ذخیره کنیدroads_reclass.tif
و روی Run کلیک کنید .۱۰۰*("roads_proximity@1"<=1000) + ۵۰*("roads_proximity@1">1000)*("roads_proximity@1"<=5000) + ۱۰*("roads_proximity@1">5000)
- پس از اتمام فرآیند طبقه بندی مجدد، یک لایه جدید به پنل لایه ها
roads_reclass
اضافه می شود . این لایه تنها دارای ۳ مقدار مختلف ۱۰، ۵۰ و ۱۰۰ است که نشان دهنده تناسب نسبی پیکسل ها با توجه به فاصله از جاده ها است. دوباره الگوریتم باز کنید .
- فرآیند طبقه بندی مجدد را برای
water_proximity
لایه تکرار کنید. در اینجا این طرح معکوس خواهد شد، جایی که پیکسل هایی که دورتر از آب هستند امتیاز بالاتری خواهند داشت.
- ۰-۱۰۰۰ متر -> 10
- ۱۰۰۰-۵۰۰۰ متر —> 50
- > 5000 متر -> 100
water_proximity
لایه را با استفاده از دکمه … به عنوان لایه ورودی انتخاب کنید . عبارت زیر را وارد کنید hat معیارهای بالا را در ورودی اعمال می کند. همه گزینه های دیگر را به عنوان پیش فرض نگه دارید و لایه خروجی را با نام ذخیره کنیدwater_reclass.tif
و روی Run کلیک کنید .۱۰۰*("water_proximity@1">5000) + 50*("water_proximity@1">1000)*("water_proximity@1"<=5000) + 10*("water_proximity@1"<1000)
- اکنون ما آماده هستیم تا تحلیل نهایی را انجام دهیم. به یاد بیاورید که معیارهای ما برای تعیین مناسب بودن به شرح زیر است – نزدیک به جاده ها، دور از آب و نه در منطقه حفاظت شده. باز کنید . با استفاده از دکمه … به عنوان لایه های ورودی، لایه ها را
roads_reclass
انتخابwater_reclass
کنید . از دکمه ε برای وارد کردن عبارت زیر استفاده کنید که این معیارها را اعمال می کند. توجه داشته باشید که نتیجه را در انتها ضرب می کنیم تا مقادیر پیکسل خارج از مرز حالت را کنار بگذاریم. سایر پارامترها را به عنوان پیش فرض نگه دارید. خروجی را نامگذاری کنید و روی Run کلیک کنید .raster_protected_regions
raster_boundary
raster_boundary@1
overlay.tif
("roads_reclass@1" + "water_reclass@1")*("raster_protected_regions@1" != 1 )*"raster_boundary@1"
توجه داشته باشید
در این مثال، ما به جاده و نزدیکی آب وزن یکسانی می دهیم . در سناریوی واقعی، ممکن است چندین معیار با اهمیت متفاوت داشته باشید. می توانید آن را با ضرب شطرنجی ها با وزن های مناسب در عبارت بالا شبیه سازی کنید. به عنوان مثال، اگر نزدیکی به جاده ها دو برابر مهمتر از نزدیکی به آب است، می توانید roads_reclass
شطرنجی را ۲
در عبارت بالا ضرب کنید.
- پس از اتمام پردازش، شطرنجی به دست آمده به پنل لایه ها
overlay
اضافه می شود . مقادیر پیکسل در این شطرنجی از ۰ تا ۲۰۰ متغیر است – جایی که ۰ کمترین مناسب ترین و ۲۰۰ مناسب ترین منطقه برای توسعه است. روی دکمه Open the Layer Styling Panel در پنل Layers کلیک کنید .
singleband_pseudocolor
رندر و رمپ رنگ را انتخاب کنیدSpectral
. روی Classify کلیک کنید تا سطح شیب دار رنگی روی شطرنجی اعمال شود.
- روی مقادیر برچسب پیش فرض در کنار هر رنگ کلیک کنید و برچسب های مناسب را وارد کنید. برچسب ها نیز به عنوان افسانه در زیر
overlay
لایه ظاهر می شوند.
- لایه های شطرنجی شبکه های مستطیلی هستند. ما می خواهیم پیکسل ها را خارج از مرز حالت مخفی کنیم. یک راه آسان برای رسیدن به این هدف، اعمال یک رندر در لایه مرزی برداری است. در پانل لایه ها به پایین اسکرول کنید و لایه را پیدا کنید. به عنوان رندر انتخاب کنید و سایر گزینه ها را به حالت پیش فرض رها کنید.
Inverted Polygons
boundary
Inverted Polygons
- برای اینکه اثر رندر نشان داده شود، باید در بالای فهرست مطالب باشد. روی لایه کلیک راست کرده
boundary
و Move to Top را انتخاب کنید .
- لایه را بررسی کنید و بوم نقشه به روز می شود تا
overlay
شطرنجی بریده شده رویboundary
لایه نشان داده شود. این خروجی نهایی است که مناطقی را در داخل ایالت نشان می دهد که برای توسعه مناسب هستند.
اگر می خواهید بازخورد بدهید یا تجربه خود را در مورد این آموزش به اشتراک بگذارید، لطفاً در زیر نظر دهید. (به حساب GitHub نیاز دارد)