ایجاد ساختمان های ایزومتریک (QGIS3)
مشارکت کننده: استیون کیم
OpenStreetMap (OSM) یک مجموعه داده جهانی از جادهها، مرزها، ساختمانها و موارد دیگر است. این مجموعه رو به رشدی از ردپاهای ساختمانی در سراسر جهان دارد که بسیاری از آنها اطلاعات ارتفاعی نیز دارند. در حالی که صحت داده های ارتفاع ساختمان برای تجزیه و تحلیل بسیار دشوار است، ما می توانیم از عبارات QGIS برای ایجاد یک رندر ایزومتریک هنری سرگرم کننده از این داده ها استفاده کنیم.
نمای کلی کار
ما داده های ردپای ساختمان را از OSM برای مرکز شهر تورنتو دانلود می کنیم و یک نقشه ایزومتریک از ارتفاعات ساختمان ایجاد می کنیم.

دریافت داده ها
ما داده ها را از OpenStreetMap (OSM) با استفاده از افزونه QuickOSM دانلود خواهیم کرد . برای آشنایی با افزونه QuickOSM به جستجو و دانلود OpenStreetMap Data (QGIS3) مراجعه کنید . پس از نصب افزونه، می توانید دستورالعمل های زیر را برای به دست آوردن داده های منطقه خود ادامه دهید.
توجه داشته باشید
این آموزش به طور خاص برای کار با داده های OSM استخراج شده از پلاگین QuickOSM طراحی شده است. عبارت height با فایلهای OSM planet یا استخراج دادهها با other_tags کار نمیکند. در این موارد، ابتدا باید سطوح و ارتفاعات ساختمان را قبل از استفاده از آنها استخراج کنید.
- QGIS را باز کنید. ابتدا یک نقشه پایه را بارگذاری می کنیم. از پانل مرورگر ، به پایین بروید و لایه کاشی را پیدا کنید. آن را بکشید و روی بوم اصلی رها کنید. به منطقه مورد علاقه خود زوم کنید. مطمئن شوید که منطقه به طور کامل توسط وسعت نقشه پوشانده شده است.

- پلاگین QuickOSM را از راه اندازی کنید .

- در برگه پرس و جو سریع ،
buildingبه عنوان کلید وارد کنید . In را به Canvas Extent تغییر دهید . با این کار همه ساختمانها در محدوده بوم فعلی دانلود میشوند. بخش Advanced را باز کنید ، سپس روی Points ، Lines و Multilines کلیک کنید . با این کار باید گره ها ، راه ها ، روابط و چند ضلعی انتخاب شوند. Run query را انتخاب کنید . پس از بارگذاری نقشه، پنجره را ببندید.

- تمام ردپاهای ساختمان موجود در وسعت بوم در یک لایه جدید بارگذاری می شود
building. می توانید با داده ها ادامه دهید یا زیر مجموعه ای از ساختمان ها را انتخاب کنید. برای این آموزش، ما تمام ساختمان های منطقه مورد علاقه شما را انتخاب می کنیم. روی گزینه Select Features by Area یا دکمه Single Click در نوار ابزار Selection کلیک کنید . می توانید دکمه سمت چپ ماوس را نگه دارید و یک مستطیل بکشید تا ساختمان های مورد نیاز را انتخاب کنید. همچنین می توانید Shiftکلید را نگه داشته و روی چند ضلعی ها کلیک کنید تا آنها را انتخاب کنید.

- پس از انتخاب تمام ساختمانهای مورد نیاز، روی
buildingلایه کلیک راست کرده و انتخاب کنید .

- در گفتگوی Save Vector Layer As… ، روی دکمه … کنار File name کلیک کنید و به یک پوشه در رایانه خود بروید. نام فایل را به عنوان
osm_buildings.gpkgو نام لایه را به عنوان وارد کنیدbuildings. ساختمان های دانلود شده در CRS EPSG:4326 WGS84 هستند . این یک CRS جغرافیایی با واحدها بر حسب درجه است. ما می توانیم یک CRS پیش بینی شده را انتخاب کنیم که به ما امکان می دهد از واحدهای اندازه گیری خطی مانند متر استفاده کنیم. روی منوی کشویی انتخاب CRS کلیک کنید و را انتخاب کنید . روی OK کلیک کنید .Project CRS: EPSG:3857 - WGS84 / Pseudo-Mercator

- ساختمانهای انتخاب شده مجدداً طراحی شده و در یک فایل GeoPackage ذخیره میشوند.
برای راحتی، میتوانید مستقیماً یک کپی از ساختمانهای مرکز شهر تورنتو را از زیر دانلود کنید:
منبع داده [OPENSTREETMAP]
osm_buildings.gpkgفایل را در مرورگر QGIS بیابید و آن را گسترش دهید. لایه را انتخاب کنیدbuildingsو آن را روی بوم بکشید.

- بر روی Open Layer Styling Panel کلیک کنید و از Single Symbol به ۲٫۵ D تغییر دهید.

- روی دکمه ε در کنار Height کلیک کنید .

- در Expression Builder عبارت زیر را وارد کنید. این عبارت یک ضریب را برای اولین فیلد غیر تهی از
building:levelsو اعمال می کندheight. اگر هر دو صفر باشند، از ارتفاع پیش فرض ۲۰ متر استفاده می شود. به خاطر داشته باشید که این ارتفاعات اغراق آمیز برای تجسم در مقیاس های بزرگتر هستند.
coalesce("building:levels"*10, "height"*2, 20)
- زاویه را به درجه تغییر دهید
۱۳۵.

- تیک Shade walls بر اساس جنبه و Shadow را بردارید . ما از رنگ های خودمان استفاده خواهیم کرد. برای انتخاب رندر روی منوی کشویی کلیک کنید.

- از ۲٫۵ بعدی به Single Symbol برگردید .

- در پنجره Symbol ، توجه کنید که دو مولد هندسه وجود دارد که هر کدام دارای یک نوع لایه Simple Fill هستند. Simple Fill اول وجه بالایی هر بلوک است، در حالی که Simple Fill دوم وجه جانبی است. روی اولین Simple Fill کلیک کنید تا رنگ صفحه بالایی تغییر کند. برای رنگ Fill روی دکمه رد تعریف داده ها کلیک کنید و در منو Edit… را انتخاب کنید.

- این دیالوگ Expression Builder را برای رنگ Fill نمایش می دهد. عبارت زیر را وارد کنید. این عبارت بر اساس فاصله آن از مرکز نقشه، رمپ رنگ طیفی را به داده ها اعمال می کند.
ramp_color('Spectral', scale_linear( distance(@geometry,@map_extent_center), ۰,@map_extent_width/6, ۰,۱ ) )
- برای رنگ Fill بر روی دکمه بازنویسی Data define کلیک کنید و Copy… را در منو انتخاب کنید.

- برای استفاده از عبارت Stroke بر روی دکمه رد تعریف داده برای رنگ Stroke کلیک کنید و از منو Paste… را انتخاب کنید تا همان عبارت اعمال شود.

- حالا روی دومین Simple Fill کلیک کنید تا اضلاع تغییر کند. برای انجام این کار ممکن است مجبور شوید به پایین اسکرول کنید. روی منوی کشویی برای نوع لایه نماد کلیک کنید .

- نوع لایه نماد را از Simple Fill به Gradient Fill تغییر دهید . دو انتخابگر رنگ در کنار دو رنگ، رنگهای بالا و پایین شیب را نشان میدهند. برای رنگ بالا روی دکمه رد تعریف داده ها کلیک کنید.

- Edit را انتخاب کرده و عبارت زیر را وارد کنید. این همان عبارتی است که برای رنگ سقف استفاده کردیم اما شفافیت رنگ را با استفاده از
set_color_part()تابع تنظیم می کند.set_color_part( ramp_color('Spectral', scale_linear( distance(@geometry,@map_extent_center), ۰,@map_extent_width/6, ۰,۱ ) ), 'alpha',100)
- روی مثلث کوچک سیاه رنگ انتخابگر پایین کلیک کنید و کادر شفاف را علامت بزنید .

- قبل از خروج از پانل استایل لایه ، اجازه دهید لایه را تبدیل کنیم تا نمای ایزومتریک کامل شود. بخش Layer Rendering را باز کنید و Draw Effects را علامت بزنید . روی ستاره Customize Effects در سمت راست کلیک کنید.

- روی منوی کشویی کنار Effect Type کلیک کنید .

- نوع افکت را از Source به Transform تغییر دهید . برای Shear X,Y به ترتیب -۰٫۲ و -۰٫۲ را وارد کنید .

۴۵برای چرخش وارد کنید . از پنل Layer Styling خارج شده و ببندید .
- شما باید یک نمایش رنگارنگ از چند ضلعی های ساختمان را در نمای ایزومتریک ببینید. به راحتی با عبارات ارتفاع، زاویه، رنگ پر کردن و غیره آزمایش کنید.






















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