ایجاد نقشه های حرارتی (QGIS3)
نقشه های حرارتی یکی از بهترین ابزارهای تجسم برای داده های نقطه متراکم هستند. Heatmap یک تکنیک درون یابی است که در تعیین چگالی ویژگی های ورودی مفید است. نقشه های حرارتی بیشتر برای تجسم داده های جرم، حوادث ترافیکی، تراکم مسکن و غیره استفاده می شود. QGIS دارای یک نمایشگر Heatmap است که می تواند برای استایل دادن به لایه نقطه و یک الگوریتم پردازش Heatmap (تخمین تراکم هسته) که می تواند برای ایجاد یک رستر از یک لایه نقطه استفاده شود.
نمای کلی کار
ما با مجموعه دادهای از مکانهای جرم در ساری، انگلستان کار خواهیم کرد و یک نقشه حرارتی برای تجسم مناطق با تراکم جرم بالا ایجاد خواهیم کرد.
خواهید گرفت
- استفاده از فیلدهای مجازی و عبارات شرطی
دریافت داده ها
data.police.uk داده های جرم، نتیجه، و توقف و جستجو در سطح خیابان را در قالب CSV ساده ارائه می دهد. داده ها را برای پلیس Surrey دانلود کنید و بایگانی دانلود شده را از حالت فشرده خارج کنید تا فایل CSV استخراج شود.
برای راحتی کار، میتوانید یک نسخه از مجموعه داده را مستقیماً از لینک زیر دانلود کنید:
منبع داده [POLICEUK]
- ابتدا یک لایه بیس مپ از OpenStreetMap بارگذاری می کنیم و سپس داده های CSV را وارد می کنیم. در تب Browser ، به پایین بروید و قسمت XYZ Tiles را پیدا کنید .
- آن را گسترش دهید تا لایه کاشی OpenStreetMap را ببینید . آن را بکشید و روی بوم اصلی رها کنید. سپس فایل CSV را بارگذاری می کنیم. روی دکمه Open Data Source Manager کلیک کنید .
- به برگه متن جدا شده بروید . در اینجا ما داده های جرم را وارد می کنیم که در یک فایل متنی با فرمت CSV آمده است. روی دکمه … کنار File name کلیک کنید و
۲۰۱۹-۰۲-surrey-street.csv
فایل دانلود شده را مرور کنید. فیلد X و فیلد Y در قسمت هندسه تعریف به صورت خودکار با ستونهایLongitude
و پر میشوندLatitude
. Geometry CRS باید به تعریف پیشفرض سپرده شود . مطمئن شوید که دادهها در پانل دادههای نمونه درست به نظر میرسند و روی افزودن و سپس بستن کلیک کنید .EPSG:4326 - WGS ۸۴
OpenStreetMap
2 لایه – و۲۰۱۹-۰۲-surrey-street
بارگذاری شده در پنل لایه های QGIS را مشاهده خواهید کرد . روی لایه کلیک راست کرده۲۰۱۹-۰۲-surrey-street
و Zoom to Layer را انتخاب کنید .
- لایه نقاط حادثه جرم را روی نقشه پایه OpenStreetMap خواهید دید. برای کاوش داده ها، بزرگنمایی و حرکت دهید. داده ها بسیار متراکم هستند و به سختی می توان تصور کرد که در کجا غلظت بالایی از جرم وجود دارد. اینجاست که تجسم نقشه حرارتی مفید خواهد بود. لایه را انتخاب کنید
۲۰۱۹-۰۲-surrey-street
و روی دکمه Open the Layer Styling پانل کلیک کنید .
Heatmap
در منوی dropbox به عنوان رندر انتخاب کنید . پانل Layer Styling تعاملی است و شما می توانید بلافاصله تاثیر تغییرات خود را در بوم مشاهده کنید. اکنون لایه در حالت پیشفرض رمپ رنگ خاکستری نمایش داده میشود.
- نقشه حرارتی معمولاً با استفاده از یک رمپ رنگی زرد به قرمز یا سفید به قرمز رندر می شود که در آن غلظت بالاتر نقاط منجر به گرمای بیشتر می شود . روی منوی کشویی Color ramp کلیک کنید و
Reds
color-ramp را انتخاب کنید.
- بعد باید Radius را انتخاب کنید . این پارامتر همسایگی دایره ای اطراف هر نقطه را تعیین می کند که در آن نقطه تأثیر می گذارد. این مقدار تا حد زیادی به نوع داده های ورودی شما بستگی دارد. برای دادههای ما، فرض میکنیم که یک حادثه جنایی تا ۵ کیلومتری محل تأثیر میگذارد. توجه داشته باشید که پروژه فعلی CRS در گوشه سمت راست پایین تنظیم شده است. این CRS یک واحد متر دارد، بنابراین باید متر را به عنوان شعاع مشخص کنیم. پارامتر دیگری که از این منو پنهان است شکل کرنل است . این تابعی است که تعیین می کند چگونه تأثیر یک نقطه باید در شعاع داده شده پخش شود. رندر Heatmap از تابع برای این محاسبه استفاده می کند. انواع دیگری از هستهها مانند، وجود دارد که میتوان آنها را در هنگام استفاده از روش ایجاد Heatmap متفاوت که بعداً در این آموزش توضیح داده میشود، مشخص کرد . برای توضیح و راهنمایی خوب برای انتخاب شعاع و شکل هسته مناسب به این پست مراجعه کنید .
EPSG: ۳۸۵۷
۵۰۰۰
Quartic
Triangular
Uniform
Triweight
Epanechnikov
- تجسم نقشه حرارتی آماده است. میتوانیم Opacity Heatmap را در قسمت Layer Rendering در پایین تنظیم کنیم. Opacity را روی آن قرار دهید تا بتوانید نقشه پایه را به همراه نقشه حرارتی ببینید.
۶۰ %
- برای بسیاری از انواع تحلیل، تنها در نظر گرفتن تراکم نقاط به اندازه کافی خوب است. اما گاهی اوقات ممکن است بخواهید به هر نقطه اهمیت متفاوتی بدهید. یک جنایت خشن تر باید تأثیر بیشتری بر نقشه حرارتی خروجی داشته باشد تا یک سرقت. به همین ترتیب، گاهی اوقات یک نقطه ممکن است چندین مشاهدات را در یک مکان نشان دهد که باید در تجزیه و تحلیل لحاظ شود. برای انجام این کار، می توانید یک فیلد وزنی عددی اختیاری ارائه دهید که مقداری را برای هر نقطه مشخص می کند. بیایید یک میدان وزن اضافه کنیم و از آن برای بهبود نقشه حرارتی استفاده کنیم. روی لایه کلیک راست کرده
۲۰۱۹-۰۲-surrey-street
و Open Attribute Table را انتخاب کنید .
- یک فیلد متنی به نام در داده های ورودی خواهید دید که نوع جرم را توصیف می کند. میتوانیم از اینها برای دستهبندی انواع مختلف جرایم استفاده کنیم و وزن بیشتری را به جرایم خشنتر اختصاص دهیم.
Crime type
- روی ماشین حساب باز کردن فیلد کلیک کنید .
- اکنون فرمولی را وارد می کنیم که از و مقدار وزن را تعیین می کند. QGIS یک راه مفید برای اضافه کردن چنین فیلدهای محاسبه شده با استفاده از فیلدهای مجازی دارد . فیلد مجازی در پروژه QGIS ذخیره می شود و داده های منبع را تغییر نمی دهد. همچنین به صورت پویا محاسبه می شود و می تواند در هر نقطه از QGIS مانند هر مقدار ویژگی دیگر استفاده شود. نام فیلد خروجی را وارد کنید و نوع فیلد خروجی را روی . عبارت زیر را در ویرایشگر Expression وارد کنید . در اینجا ما از دستور CASE برای تخصیص مقادیر مختلف بر اساس شرایط مختلف استفاده می کنیم. روی OK کلیک کنید .
Crime type
weight
Whole number (integer)
CASE WHEN "Crime type" LIKE 'Violence%' THEN 10 WHEN "Crime type" LIKE 'Criminal%' THEN 5 ELSE 1 END
- یک ویژگی جدید با مقدار وزن مناسب به هر ویژگی اضافه می شود.
- در پانل Layer Styling ، روی منوی کشویی Weight points by کلیک کنید و فیلد جدید اضافه شده را انتخاب کنید
weight
.
- تغییر رندر نقشه حرارتی را برای محاسبه پارامتر وزن مشاهده خواهید کرد. پانل Layer Styling را ببندید .
- اگر نیاز دارید که تجسم نقشه حرارتی به عنوان یک لایه شطرنجی دائمی ذخیره شود یا می خواهید نقشه حرارتی را با گزینه های پیشرفته مانند هسته های مختلف یا شعاع پویا سفارشی کنید، می توانید از Heatmap (تخمین تراکم هسته) از جعبه ابزار پردازش استفاده کنید. اکنون از این الگوریتم استفاده خواهیم کرد. به بروید .
- قبل از اینکه بتوانیم نقشه حرارتی را ایجاد کنیم، باید داده های منبع را مجدداً به یک CRS پیش بینی شده بپردازیم. از آنجایی که فاصله نقش مهمی در محاسبه نقشه حرارتی دارد، استفاده از CRS جغرافیایی صحیح نیست. الگوریتم را جستجو و پیدا کنید .
- در گفتگوی لایه Reproject ، روی دکمه Select CRS برای Target CRS کلیک کنید . CRS را جستجو و انتخاب کنید . این CRS پیشبینیشده انتخاب خوبی برای دادهها در بریتانیا است. روی Run کلیک کنید .
EPSG:27700 OSGB ۱۹۳۶ / British National Grid
- یک لایه جدید با نام به پنل لایه ها
Reprojected
اضافه می شود . تیک کادر کنار لایه قدیمی را بردارید تا پنهان شود.۲۰۱۹-۰۲-surrey-street
- را جستجو و پیدا کنید .
- در گفتگوی Heatmap (تخمین چگالی هسته) ، از پارامترهای قبلی استفاده خواهیم کرد. Radius را به عنوان
۵۰۰۰
متر و Weight from field را به عنوان انتخاب کنیدweight
. اندازه پیکسل را تنظیم کنید۵۰
اجازه دهید شکل کرنل به مقدار پیش فرض باشدQuartic
. روی Run کلیک کنید .
توجه داشته باشید
پارامتر Radius from field به شما امکان می دهد شعاع جستجوی پویا را برای هر نقطه مشخص کنید. این را می توان همراه با وزن از مزرعه استفاده کرد تا کنترل دانه ریزتری در مورد نحوه پخش نفوذ هر نقطه داشته باشد.
- پس از پایان پردازش، یک لایه شطرنجی جدید به نام
OUTPUT
بارگذاری می شود. تجسم پیش فرض زشت است زیرا از رندر استفاده می کند. روی دکمه Open the Layer Styling پانل کلیک کنید .Singleband gray
- رندر را به رمپ رنگ تغییر دهید و انتخاب کنید . این لایه اکنون شبیه تجسم نقشه حرارتی است که قبلا ایجاد کرده بودیم.
Singleband Pseudocolor
Reds
توجه داشته باشید
توجه داشته باشید که OUTPUT
لایه در پانل لایه ها دارای یک افسانه است اما ۲۰۱۹-۰۲-surrey-street
لایه ندارد. یک مشکل رایج در استفاده از لایه هیت مپ ایجاد شده با رندر Heatmap، فقدان افسانه است. فرض کنید می خواهید از Heatmap در Print Layout استفاده کنید و یک افسانه اضافه کنید. یک نقشه حرارتی شطرنجی ایجاد شده با روش الگوریتم پردازش Heatmap این امکان را فراهم می کند.
اگر می خواهید بازخورد بدهید یا تجربه خود را در مورد این آموزش به اشتراک بگذارید، لطفاً در زیر نظر دهید. (به حساب GitHub نیاز دارد)