آموزشArcGIS Pro: خودکار کردن پردازش ها با Model Builder و Python

آموزشArcGIS Pro: خودکار کردن پردازش ها با Model Builder و Python

خودکار کردن پردازش ها با Model Builder و Python عنوان پستی است که تیم تحقیقاتی دکتر سعید جوی زاده با شما به اشتراک می گذارد.امیدواریم که این مطالب بتواند شما را در یادگیری نرم افزار مربوطه کمک شایانی کند.

1) منظور از Model Builder چیست؟

– قابلیتی است در ArcGIS Pro که با استفاده از آن می ­توان چندین ابزار موجود در ArcToolbox (که در یک تحلیل به آن­ها نیاز است) را با هم ترکیب کرده و ابزاری جدید با تعدادی پارامتر محدود به ­دست آورد که با اجرای آن به راحتی می­توان تحلیل موردنظر را انجام داد.

– محیط Model Builder به­ صورت گرافیکی و آسان امکان ترکیب ابزارها را فراهم کرده و هیچ نیازی به برنامه ­نویسی در این محیط وجود ندارد.

2) مدل پردازش مکانی چیست؟

– خروجی Model Builder را اصطلاحا مدل پردازش مکانی گویند. این مدل را می­ توان به ­صورت یک ابزار به ArcToolbox اضافه کرده و مورد استفاده قرار داد.

– مدل پردازش مکانی، شامل ابزارهای پردازش مکانی، پارامترها (ورودی­ ها وخروجي ­ها)، تنظیمات و اتصالات می ­باشد. برای نمونه در شکل زیر، دو ابزار Buffer و Clip به یکدیگر متصل شده ­اند و یک مدل که حاصل ترکیب این دو ابزار است ایجاد شده است.

 

شکل (12-1): نمونه­ ای از یک مدل پردازش مکانی در محیط Model Builder

– ابزارهای پردازش مکانی (که در ArcToolbox در دسترس هستند)، مدل­ های پردازش مکانی که قبلا ساخته شده­اند، اسکریپت­ های Python و تکرار کننده ­ها را می ­توان در یک مدل پردازش مکانی مورد استفاده قرار داد.

– مدل­ های پردازش مکانی می ­توانند ساده و یا پیچیده باشند.

– مدل پردازش مکانی در پنجره Model Builder که رابط کاربری بسیار ساده ­ای دارد، تهیه و تنظیم می ­شود.

– مدل­ های پردازش مکانی را می ­توان با نرم ­افزار ArcGIS Desktop (ArcMap و ArcCatalog) و یا با ArcGIS Pro تهیه کرد. این مدل­ ها را نمی­ توان خارج از این نرم ­افزارها اجرا نمود.

3) اسکریپت پایتون چیست؟

– کدهای نوشته شده توسط زبان برنامه ­نویسی Python را گویند که برخلاف مدل­های پردازش مکانی می ­توان آن­ها را در نرم ­افزارهای دیگر و یا به ­طور مستقل از نرم ­افزارArcGIS Desktop یا ArcGIS Pro اجرا کرد. در شکل زیر، نمونه ­ای از یک اسکریپ پایتون آورده شده که برای ArcGIS نوشته شده است.

 

شکل (12-2): نمونه ­ای از یک اسکریپ پایتون که برای ArcGIS نوشته شده است

– اسکریپ بالا، ابتدا با چند خط توضیح شروع می­ شود که اسکریپ را معرفی می ­کند (توضیح کلی در مورد اسکریپت، هدف و تهیه کننده اسکریپت). خط بعد، دستور ورود (Iport) اسکریپت به نرم ­افزار ArcGIS Pro  را نشان می­ دهد. سپس چند خط توضیح و پس از آن متغیر Workspace معرفی می­ شود که مسیر فراخوانی داده ­ها و ذخیره نتایج را مشخص می­ کند. در آخر، ابزار Union در این اسکریپ اجرا می­شود.

4) مزایای اسکریپت پایتون در مقایسه با مدل پردازش مکانی چیست؟

– اسکریپت­ های پایتون به نرم ­افزار ArcGIS محدود نمی ­شوند و در بسیاری از نرم­ افزارها از قبیل Excel، SharePointr، AutoCad، Photoshop، SQL Server و … می ­توان از آن­ها استفاده کرد. این بدان معناست که اسکریپت ­های پایتون را می ­توان توسط نرم ­افزارهای مختلف اجرا کرد.

– برای اجرای اسکریپت ­های پایتون که در آن­ها از ابزارهای ArcGIS استفاده شده است، نیازی به باز کردن نرم ­افزار ArcGIS نیست و فقط کافی است نرم ­افزار ArcGIS بر روي رایانه کاربر نصب باشد. می ­توان یک جدول زمانی تهیه کرد و با به ره­گیری از جدول زمانبندی سیستم عامل، کاری کرد که اسکریپ موردنظر به­  طور خودکار در زمان­ های از قبل تعیین شده اجرا شود و نتایج را در مسیر موردنظر ذخیره کند.

– با استفاده از اسکریپ پایتون می­توان ابزارهای پردازش مکانی کاملا سفارشی ایجاد کرد و آن­را به محیط ArcToolbox اضافه نمود.

5) چه تفاوت­هایی بین مدل پردازش مکانی، اسکریپت پایتون و فرایندها وجود دارد؟     

هرچند که هر سه مورد برای استانداردسازی و خودکار کردن پردازش­ ها به ­کار می­روند، اما تفاوت ­هایی نیز بین آن­ها وجود دارد که در جدول (1-12) خلاصه شده است.

– همان­ گونه که در این جدول مشاهده می­ کنید، فرایندها نوعی گردش کار متشکل از گام ­های مختلف هستند و در آن­ها می­توان از مدل­های پردازش مکانی و اسکریپت ­های پایتون نیز استفاده کرد. اما نمی ­توان در مدل­ های پردازش مکانی و اسکریپت­ های پایتون از فرایندها استفاده نمود.

6) کاربردهای مدل ­های پردازش مکانی کدامند؟

الف) استفاده از مدل در عملیات­ های تکراری: برای نمونه اگر هر روز بالغ بر 50 لایه بُرداری مربوط به خیابان­های شهرهای مختلف را بر اساس محله­ های شهری برش می­ زنید و حریم این خیابان­ها را تهیه می­ کنید، می ­توان مدلی ساخت که ابزارهای Select By Location، Clip و Buffer را با هم تلفیق کرده و ابزار جدیدی تهیه کرد که سریع­ تر و راحت ­تر عملیات­ های تکراری را ممکن سازد.

ب) انجام عملیات بر اساس یک فلوچارت: در برخی موارد لازم است یک پردازش مکانی را بر اساس فلوچارت از قبل تعیین شده­ای انجام داد که توسط یک شرکت یا سازمان

جدول (12-1): تفاوت عملکرد فرایند، مدل پردازش مکانی و اسکریپ پایتون

اسکریپت پایتون مدل پردازش مکانی فرایند پارامترها
بله بله بله، در یک گام از فرایند می­توان  به ­طور خودکار یک ابزار پردازش مکانی  را اجرا کرد اجرای خودکار یک ابزار پردازش مکانی
بله بله بله اجازه به کاربر برای وارد کردن داده به ابزار قبل از اجرا
بله بله خیر اجرای خودکار  و متوالی چند ابزار پردازش مکانی
خیر بله بله فراهم کردن گردش کار مستند
بله خیر خیر اجرا در خارج از ArcGIS Pro
بله خیر خیر تلفیق با سایر نرم افزارها
بله خیر خیر اجرا بر اساس یک جدول زمانی از قبل تعیین شده
بله خیر خیر نیاز به دانش قبلی در رابطه با برنامه ­نویسی

 

تهیه شده و همه کارکنان ملزم به رعایت آن می­باشند. برای نمونه ابتدا از یک فایل اکسل، لایه نقطه­ای چاه­های یک منطقه به یک کلاس عارضه ژئودیتابیسی تبدیل می­ شود، سپس چاه ­هایی که عمق بیشتر از 90 متر دارند انتخاب شده و به کلاس عارضه جدیدی تبدیل می ­شوند؛ در مرحله بعد نام مالک این­ چاه­ها استخراج شده و نتیجه به­صورت یک فایل با فرمت html در محیط وب منتشر می ­شود. در یک مدل پردازش مکانی می ­توان ابزارهای لازم برای این کار را پشت سرهم قرار داد و ابزار جدیدی تهیه کرد که با ورود لایه چاه­های یک منطقه تمامی مراحل را پیش برده و نتیجه را در محیط وب منتشر کند. این ابزار را می­ توان به­  همراه یک دستورالعمل ساده در اختیار سایر کارکنان شرکت یا سازمان که کارکنان آن حتی دانش GIS چندان بالایی ندارند نیز قرار داد. این کار نوعی استانداردسازی در فعالیت­های GIS یک شرکت یا سازمان نیز محسوب می شود.

7) اجزای مدل پردازش مکانی کدامند؟

– هر مدل از چند پردازش (ابزار، مدل از قبل تهیه شده، اسکریپت پایتون) متوالی تشکیل شده که هر کدام شامل ابزارهای متصل به هم است. این ابزارها می  ­توانند ابزارهای پردازش مکانی (ابزارهای موجود در ArcToolbox)، مدل­های پردازش مکانی که از قبل ساخته شده ­اندو یا اسکریپت ­های پایتون باشند. هر کدام از این­ها دارای متغیرهایی هستند که به ­عنوان ورودی یا خروجی عمل می ­کنند. در شکل زیر، دو پردازش (Buffer و Union) متصل به هم نشان داده شده است.

شکل (12-3): پردازش ­های متوالی در یک مدل پردازش مکانی

 

– متغیرها با بیضی ­های آبی (ورودی) و سبز (خروجی) نشان داده می­ شوند. خروجی یک پردازش می­تواند ورودی پردازش دیگر باشد. در شکل بالا، خروجی پردازش Buffer، ورودی پردازش Union است.

– اتصال دهنده ­ها: اجزای مختلف مدل را به یکدیگر متصل می­ کنند و با پیکان­ های کوچک نشان داده می­ شوند.

8) انواع متغیر در مدل پردازش مکانی کدامند؟

الف) متغیرهای داده ­ای: شامل لایه ­های مختلف (برداری، رستری، TIN و..)، جداول

مستقل و فایل­ های متنی می­شود. این متغیرها به رنگ آبی تیره در یک مدل مشخص می­شوند.

ب) متغیر عددی: شامل اطلاعات اضافی است که یک پردازش (ابزار، مدل از قبل تهیه شده، و یا اسکریپ پایتون) برای اجرا به آن نیاز دارد. برای نمونه درمورد ابزار Buffer، مقدار فاصله حریم، یک متغیر عددی محسوب می­شود. این متغیرها در یک مدل به رنگ آبی روشن مشخص می­ شوند.

ج) متغیر مشتقی: این متغیرها درواقع خروجی هر پردازش محسوب می­ شوند و با توجه به نوع پردازش می­توانند یک لایه جدید، جدول، نمودار و… باشند. این متغیرها با رنگ سبز در یک مدل مشخص می­ شوند.

در شکل زیر، انواع متغیرهای موجود در مدل پردازش مکانی نشان داده شده است.

شکل (12-4): انواع متغیرها در یک مدل پردازش مکانی

 

9) برای ذخیره ­سازی یک مدل پردازش مکانی چه اقداماتی باید انجام داد؟

– اگر کاربر بخواهد در زمان­ های آتی از یک مدل استفاده کرده و یا آن­را در اختیار دیگران بگذارد بایستی آن­را در یک جعبه ابزار سفارشی ذخیره کند. مدل ­های پردازش مکانی را نمی ­توان در جعبه ­ابزارهای سیستمی (که همراه با نصب ArcGIS Pro نصب می­شوند) ذخیره کرد.

– به­ هنگام ساخت یک پروژه، ArcGIS Pro یک جعبه ابزار سفارشی (با فرمت .tbx) در محل ذخیره پروژه ایجاد می­ شود که محل مناسبی برای ذخیره مدل پردازش مکانی است. این جعبه ابزار به­ طور خودکار به پروژه مربوطه متصل است و در کادر Catalog می­توان به آن دسترسی داشت (شکل 12-5).

 

شکل (12-5): دسترسی به جعبه ابزار سفارشی و  مدل پردازش مکانی در کادر Catalog

– جعبه ابزار سفارشی را می­توان در یک ژئودیتابیس نیز ایجاد کرد و مدل پردازش مکانی، اسکریپت ­های پایتون، لایه­ هاي مختلف، جداول و… را با هم در دسترس قرار داد (شکل 12-6).

-جعبه ابزار سفارشی با فرمت .tbx و سپس مدل پردازش مکانی را می­توان در هر پوشه دلخواه ایجاد نمود. این جعبه ابزار را می­توان در پروژه­ هاي مختلف و یا حتی توسط کاربران مختلف مورد استفاده قرار داد (شکل 12-7). چنین جعبه ابزاری حجم کمتری در مقایسه با نوع ژئودیتابیسی دارد (چون در یک ژئودیتابیس معمولا علاوه بر جعبه ابزار سفارشی، انواع داده­ های دیگر نیز ذخیره شده است). جعبه ابزار .tbx را به راحتی می­توان ایمیل کرد، در پروتوکل­ های انتقال فایل (FTP) قرار داد و یا در اکانت ArcGIS Online گذاشت.

 

شکل (12-6): ایجاد جعبه ابزار سفارشی در یک ژئودیتابیس و ذخیره مدل ­هاي پردازش مکانی در آن

شکل (12-7): ایجاد جعبه ابزار سفارشی در یک پوشه

10) مدل پردازش مکانی را چگونه می ­توان اجرا کرد؟

به سه روش می­ توان مدل پردازش مکانی را اجرا کرد:

الف) پس از اینکه یک مدل آماده اجرا شد، براي اجرای تمامی پردازش ­های موجود در مدل (با مطمئن شدن از فعال بودن سربرگ Model Builder در بالای روبان)، در روبان کافی است در گروه Run، بر روي دکمه Run  کلیک کنید. در این حالت، تمامی پردازش ­هایی که آماده اجرا هستند، اجرا می­ شوند.

ب) برای اجرای هر پردازش به­ صورت مستقل از سایر پردازش ­ها، کافی است در مدل، بر روي پردازش موردنظر کلیک کنید تا فعال شود، سپس کلیک راست کرده و گزینه Run را انتخاب کنید. با استفاده از این روش می­ توان قبل از اجرای کامل مدل، هر پردازش را جداگانه امتحان کرد و ایرادات موجود در مدل سازی را متوجه شد.

ج) اجرای مدل به­ صورت یک ابزار با دوبار کلیک کردن بر روي آن در کادر Catalog: در این حالت تمامی پردازش ­ها با هم اجرا می­ شوند. البته در این حالت لازم است قبل از اجرا، پارامترهای مدل را تعریف کرد (در ادامه توضیح داده می­شود).

11) منظور از تعاملی ساختن مدل پردازش مکانی چیست؟

– مدلی که تا کنون در مورد آن توضیح داده شد، به­گونه­ای است که سایر کاربران قادر به استفاده از آن نیستند. بنابراین لازم است پارامترهای مدل (ورودی­ ها، خروجی­ ها و سایر تنظیمات لازم) تعریف شوند و مدل پردازش مکانی به­ صورت یک ابزار در اختیار سایر کاربران قرار گیرد.

– سایر کاربران کافی است مدل مذکور را همانند یک ابزار در محیط ArcToolbox باز کرده و با معرفی پارامترهای ورودی و خروجی و سایر تنظیمات، آن­را اجرا کنند. می­توان یک دستورالعمل کوتاه نیز برای مدل تهیه کرد و در اختیار کاربران قرار داد.

– برای اینکه پارامترهای یک مدل را تعریف کنید کافی است در پنجره Model Builder، بر روي هر کدام از متغیرهای ورودی یا خروجی کلیک راست کرده و گزینه Parameter را انتخاب کنید. با انجام این کار، حرف لاتین P در کنار متغیر موردنظر درج می­شود (شکل 12-8).

شکل (12-8): تعیین پارامترهای مدل

– وقتی پارامترهای مدل مشخص شدند، تمامی کاربران می­توانند ورودی­ ها وخروجی­ های دلخواه خود را تنظیم کنند و اجباری بر مثلا ذخیره نتایج در یک مسیر خاص وجود ندارد.

تمرين 17: اجرای یک مدل ساده

اهداف

در سال­ های اخیر، ورود فاضلاب­ های خانگی به برخی از چاه­ های تامین آب فضای سبز در شهر شیراز منجر به افت کیفیت آب این چاه ­ها و آلودگی آن­ها­ به باکتری ­هایی از قبیل کلی­فرم و اشرشیاکلی شده است. در این تمرین، با در اختیار داشتن موقعیت چاه ­های فضای سبز وکاربری­های مسکونی قسمتی از شهر شیراز، مدل پردازش مکانی را به ­گونه­ ای تهیه خواهید کرد که با دریافت لایه­  های اطلاعاتی لازم، حریم 500 متری چاه­ها را تهیه کرده و کاربری­ های مسکونی که داخل و خارج از این حریم واقع می ­شوند را مشخص کند.

مراحل حل تمرین

1) باز کردن فایل پروژه و پنجره Model Builder؛

2) اضافه کردن پردازش­ ها به مدل؛

3) اجرای پردازش ­های دلخواه در مدل؛

4) اجرای تمامی پردازش ­های مدل با ابزار Run:

5) اجرای تمامی مدل در کادر Catalog:

6) تعاملی ساختن مدل؛

7) اجرای مدل از طريق کادر Catalog.

حل تمرين

1- باز کردن فایل پروژه و پنجره Model Builder:

1) برنامه ArcGIS Pro را باز کرده و پروژه Ex17 را از مسیر زیر فراخوانی کنید:

C:\Exercises\Ex17\Data

2) این پروژه دارای یک نقشه با عنوان «مطالعات کیفیت آب»، متشکل از چهار لایه «چاه»، «محدوده_طرح»، «فضای_سبز» و «کاربری_مسکونی» می­ باشد. دو نقشه پایه با عناوین «World Topographic Map» و «World Hillshade» نیز در این پروژه گنجانده شده است.

 

3) پروژه را با عنوان Ex17-Result، در مسیر C:\Exercises\Ex17\Result ذخیره کنید.

4) در کادر Catalog، گروه Toolboxes را باز کرده و بر روي جعبه ابزار Ex17.tbx کلیک راست کنید. گزینه New و سپس Model را انتخاب کنید تا پنجره یک مدل جدید در جعبه ابزار Ex17.tbx باز شود. بلافاصله محیط Model Builder نیز باز می­ شود و سربرگ جدید Model Builder به بالای روبان اضافه می­ شود.

 

2- اضافه کردن پردازش ­ها به مدل:

1) با مطمئن شدن از فعال بودن سربرگ Model Builder، در روبان، در گروه Insert، بر روي دکمه Tools کلیک کنید تا کادر Geoprocessing در سمت راست پنجره Model Builder  باز شود.

2) در کادر Geoprocessing، بر روي سربرگ Toolboxes کلیک کنید. در مجموعه ابزارها، جعبه ابزار Analysis و سپس دسته ابزار Proximity را باز کنید. ابزار Buffer را بگیرید و به پنجره Model Builder بکشید.

3) بدین ترتیب یک پردازش (Buffer) در مدل ایجاد می­شود که فعلا فقط دارای یک خروجی است. پردازش ­ها در مدل پردازش مکانی به سه حالت دیده می­شوند: «غیرآماده برای اجرا»، «آماده اجرا» و «اجرا شده». پردازش­های غیرآماده با رنگ خاکستری نشان داده می­شوند و تا تمامی متغیرها و اتصالات به چنین پردازش     ­هایی مشخص نشود، آماده اجرا نمی­شود. در مورد پردازش Buffer، سه متغیر Input Feature Class، Buffer Distance و Output Feature Class را باید مشخص کرد تا آماده اجرا شود.

4) لایه «چاه» را از کادر Contents بگیرید و به پنجره مدل بکشید. بدین ترتیب متغیر ورودی Input Feature Class به پنجره مدل اضافه می­شود. نشانگر موس را بر روي متغیر «چاه» قرار دهید تا علامت  ظاهر شود. موس را فشرده نگه دارید و به سمت ابزار Buffer حرکت کنید و موس را رها کنید. در فهرست کوتاهی که باز می­شود، بر روي گزینه Input Feature کلیک کنید تا بدین ترتیب متغیر «چاه» به ­عنوان ورودی به ابزار Buffer معرفی می­شود.

 

 

5) در پنجره Model Builder، بر روي ابزار Buffer دوبار کلیک کنید تا پارامترهای آن نشان داده شود. در پنجره ابزار Buffer، در جعبه Outpu Feature Class مسیر ذخیره لایه خروجی نشان داده شده است که به ­طور پيش­فرض بر روی  C:\Exercises\Ex17\Data\Ex17.gdb تنظیم شده است.

6) در جعبه Distance، عدد 300 متر را تایپ کرده و در فهرست بازشونده Dissolve Type گزینه Dissolve all output features into a single feature را انتخاب کنید (با انتخاب این گزینه در لایه خروجی فقط یک عارضه ایجاد می­شود که حریم 300 متری چاه­های واقع در محدوده طرح را نشان می­ دهد. مسلما در جدول توصیفی این لایه فقط یک رکورد وجود خواهد داشت و در جاهایی که پلیگون­ های حریم با یکدیگر هم پوشانی دارند، ادغام صورت می­ گیرد).

7) بر روي دکمه Ok کلیک کنید. بدین ترتیب تمامی متغیرهای مدل، تعریف می­شوند و متغیر ورودی با آبی کم­رنگ، ابزار با رنگ نارنجی و متغیر خروجی با رنگ سبز مشخص می ­شوند.

8) در روبان، در گروه View، بر روي دکمه Auto Layout  کلیک کنید تا اجزای مدل در یک راستا قرار گرفته و مرتب شوند.

9) در روبان، در گروه Model، بر روی دکمه Propertiesکلیک کنید تا پنجره Tool Properties: Model باز شود. در این پنجره، در کادر Name، عبارت                                       «GreenSpacesProject» و در جعبه Label، عبارت «مدل آلودگی چاه­های فضای سبز» را تایپ کنید (نام مدل باید به لاتین باشد و بین کلمات فاصله نباشد).

10) بر روي دکمه Ok کلیک کنید تا پنجره Tool Properties: Model بسته شود.

 

11) در روبان، در گروه Model، بر روي دکمه Save کلیک کنید تا تغییرات ایجاد شده در مدل ذخیره شود.

12) در بالای پنجره Model Builder، به نام مدل دقت کنید که به «مدل آلودگی چاه ­های فضای سبز» تغییر یافته است.

13) در کادر Geoprocessing، جعبه ابزار Analysis Tools و سپس دسته ابزار Overlay را باز کنید.

14) ابزار Union را بگیرید و به پنجره مدل بکشید.

15) غلتک وسط موس را بچرخانید تا پنجره مدل بزرگ و کوچک شود.

16) خروجی ابزار Buffer را به ابزار Union متصل کنید.

 

17) در مدل، بر روی ابزار Union کلیک کنید تا در پنجره Union، پارامترهای این ابزار نشان داده شود. در فهرست ­های بازشونده Input Features، لایه «Buffer_چاه» به ­عنوان اولین ورودی تعریف شده است. لایه «کاربری_مسکونی» را نیر به­ عنوان دومین ورودی انتخاب کنید.

18) بر روی دکمه Ok کلیک کنید تا پنجره Union بسته شود.

19) در روبان، در گروه View، بر روي دکمه Auto Layout  کلیک کنید. هم­اکنون مدل آماده اجرا شده است.

20) بر روي علامت ضربدر در بالای پنجره Model Builder کلیک کنید تا این پنجره بسته شود.پروژه را ذخیره کنید.

 

3- اجرای پردازش­ های دلخواه در مدل:

1) در بالای روبان، بر روي سربرگ View و در روبان، بر روی دکمه Catalog Pane کلیک کنید تا کادر Catalog در سمت راست پنجره نمایش باز شود.

2) در کادر Catalog، گروه Toolboxes و جعبه­ ابزار Ex17.tbx را باز کنید. در این جعبه ابزار، بر روی مدل «مدل آلودگی چاه ­های فضای سبز» کلیک راست کرده و گزینه Edit را انتخاب کنید تا پنجره Model Builder دوباره باز شود.

3) در مدل، بر روي ابزار Buffer کلیک کنید تا انتخاب شود. کلیک راست کنید و گزینه Run را انتخاب کنید تا ابزار اجرا شود. بلافاصله رنگ ابزار Buffer از نارنجی به قرمز تغییر پیدا کرده و پنجره موقتی کوچکی باز می­شود که پیشرفت پردازش را نشان می­ دهد. پس از اتمام پردازش و مشاهده کلمه «Done» پنجره مذکور را ببندید.

4) در فضایی خالی از پنجره Model Builder کلیک کنید. در مدل به ابزار Buffer دقت کنید، یک سایه خاکستری رنگ در زیر آن ایجاد شده است. این بدان معنی است که پردازش موردنظر اجرا شده است.

5) به روش مشابه، در مدل بر روي ابزار Union کلیک راست کرده و گزينه Run را انتخاب کنید تا این ابزار اجرا شود. پس از اتمام پردازش، پنجره پیشرفت پردازش را ببندید. ملاحظه می­ کنید که ابزار Union نیز اجرا شده و در مدل، در زیر این ابزار، سایه­ های خاکستری ایجاد شده است.

 

4- اجرای تمامی پردازش ­های مدل با ابزار Run:

1) در روبان، در گروه Run، بر روي دکمه Validateکلیک کنید. با انجام این کار مدل دوباره آماده اجرا می ­شود. در مدل به ابزارهای Buffer و Union دقت کنیدکه سایه ­های زیر آن­ها ناپدید شده است.

2) در روبان، در گروه Run، بر روي دکمه Run کلیک کنید تا تمامی پردازش­ های موجود در مدل یکی پس از دیگری اجرا شود. ابزار هر پردازش در زمان اجرا قرمز رنگ می ­شود. پس از اجرای مدل، در زیر ابزارهایی که اجرا شده­اند سایه ­های خاکستری رنگ ایجاد می­ شود.

3) پنجره مربوط به پيشرفت پردازش ­ها را ببندید.

4) در کادر Catalog، گروه Folder و سپس Data و ژئودیتابیس Ex17.gdb را باز کنید. ملاحظه می­کنید که دو لایه با عناوین «Buffer_چاه» و «Union_Buffer_چاه» در این ژئودیتابیس ساخته شده است (در­صورتی­ که لایه­ های مذکور را ندیدید، بر روي ژئودیتابیس Ex17 کلیک راست کرده و گزینه Referesh را انتخاب کنید).

 

5- اجرای تمامی مدل در کادر Catalog:

1) در بالای پنجره Model Builder، بر روي علامت ضربدر کلیک کنید تا این پنجره بسته شود. در صورت باز شدن پیغام Model Builder، بر روي دکمه Yes کلیک کنید.

2) در کادر Catalog، گروه Toolboxes و سپس جعبه ابزار Ex17.tbx را باز کنید. بر روي مدل «مدل آلودگی چاه­های فضای سبز» دوبار کلیک کنید.

3) ملاحظه می­ کنید که در کادر Geoprocessing، در سمت راست پنجره نمایش، مدل مذکور به ­صورت یک ابزار فاقد پارامتر باز می­شود. در پایین کادر Geoprocessing، بر روی دکمه Run کلیک کنید تا مدل اجرا شود.

4) در بالای پنجره Geoprocessing، بر روي دکمه Close  کلیک کنید تا کادر Catalog باز شود.

5) در کادر Catalog، گروه Folder و سپس Data و ژئودیتابیس Ex17.gdb را باز کنید. ملاحظه می­کنید که فقط لایه «Union_Buffer_چاه» در این ژئودیتابیس ساخته شده است. بنابراین با اجرا کردن مدل از طریق کادر Geoprocessing، نتیجه نهایی مدل در مسیر ذخیره ساخته می ­شود. لایه «Buffer_چاه» به­ عنوان یک لایه حدواسط، در نظر گرفته شده و در مسیر خروجی دیده نمی­شود. با اجرای مدل از طریق کادر Catalog، اگر قبلا لایه یا لایه­ های حدواسطی ساخته شده باشد، به­ طور خودکار از مسیر خروجی حذف خواهد شد.

6) فایل پروژه را ذخیره کنید.

6- تعاملی ساختن مدل:

1) در کادر Catalog، گروه Toolboxes و سپس جعبه ابزار Ex17.tbx را باز کرده و بر روي «مدل آلودگی چاه ­های فضای سبز» کلیک راست کنید. گزینه Edit را انتخاب کنید تا پنجره Model Builder باز شود.

2) در پنجره Model Builder، بر روي خروجی ابزار Union کلیک راست کرده و گزینه Parameter را انتخاب کنید. ملاحظه می­ کنید که حرف لاتین P در کنار این متغیر نشان داده می­ شود.

3) متغیر «Union_Buffer_چاه»، خروجی ابزار Union، یک متغیر آشکاراست. متغیرهای دیگری نیز در مدل­ های پردازش مکانی وجود دارند که ممکن است در پنجره Model Builder دیده نشوند که آن­ها را متغیر پنهان گویند. برای نمونه در این تمرین، اندازه حریم چاه­ ها یک متغیر پنهان است که به ابزار Buffer ارتباط دارد.

در پنجره مدل، بر روي ابزار Buffer کلیک راست کرده و گزینه Create Variable و سپس گزینه­ های From Parameter و Distance را انتخاب کنید. با انجام این کار، متغیر Distance  از حالت پنهان خارج شده و در پنجره مدل نمایش داده می­ شود.

4) بر روي متغیر Distance کلیک راست کرده و گزینه Parameter را انتخاب کنید تا این متغیر نیز به ­عنوان پارامتر مدل تعریف شود.

5) در روبان، در گروه View، بر روي دکمه Auto Layout  کلیک کنید تا اجزای مدل مرتب شوند.

6) در روبان، در گروه Run بر روي دکمه Validate  کلیک کنید.

7) در روبان، در گروه Model بر روی دکمه Save کلیک کنید و پنجره مدل را ببندید.

7- اجرای مدل از طريق کادر Catalog:

1) در کادر Catalog، بر روی «مدل آلودگی چاه ­های فضای سبز» دوبار کلیک کنید تا در کادر Geoprocessing، پارامترهای این مدل نشان داده شود.

2) در کادر Distance، عدد 250 را تایپ کرده و بر روي دکمه Run کلیک کنید. بدین ترتیب مدل مذکور همانند یک ابزار عمل کرده و نتیجه حاصله با عنوان «Union_Buffer_چاه» به کادر Contents اضافه می­شود. پنجره مدل را ببندید (در صورت مشاهده پیغام Model Builder بر روی دکمه Save کلیک کنید) و در نقشه «مطالعات کیفیت آب» به عوارض لایه  «Union_Buffer_چاه» دقت کنید.

3) پروژه را ذخیره کرده و ArcGIS Pro را ببندید.

 

خودآزمایی

با توجه به نتیجه حاصل از تمرین قبل، دو لایه جدید ایجاد کنید که یکی کاربری ­های مسکونی موجود در حریم 250 متری چاه ­ها و دیگری کاربری ­های مسکونی خارج از این حریم را نشان دهد.

 

 

12) کلیاتی در مورد زبان برنامه­ نویسی پایتون:

– پایتون یکی از زبان ­های برنامه­ نویسی است که می­ تواند در ArcGIS مورد استفاده قرار گیرید و تقریبا جایگزین زبان برنامه ­نویسی ويژوال بیسیک (VB) شده است. از ArcGIS Pro2.5 به بعد، این برنامه با نسخه پایتون 3.6.9 سازگاری دارد. این نسخه از پایتون، همراه با نصب ArcGIS Pro به­ طور خودکار نصب می ­شود.

– برنامه پایتون از طریق ماژول ArcPy با برنامه رابط برنامه­ نویسی (API) ArcGIS Geoprocessing ارتباط برقرار می­کند. این بدان معناست که می­ توان از اسکریپت­ های پایتون در ایجاد و توسعه ابزارهای پردازش مکانی و یا خودکار کردن و جدول­ بندی آن­ها استفاده کرد.

– برخلاف Model Builder، اسکریپ­های پایتون به نرم­افزار ArcGIS محدود نمی ­شوند و می­توان آن­ها را در سایر نرم­ افزارها و حتی سیستم ­های عامل غیر از ویندوز نیز به­ کار برد.

– اسکریپت ­های پایتون را می­ توان در جعبه ­ابزارهای ArcGIS Pro و یا به ­صورت مستقل به­ صورت فایل­ هایی با فرمت .py ذخیره کرد. برخلاف زبان­ های برنامه­ نویسی از قبیل C++ یا ويژوال بیسیک، برای تهیه اسکریپت­ های پایتون به نرم ­افزار خاصی نیاز نیست و می­ توان آن­ها را در Notepad و یا Wordpad معمولی نیز نوشت. نرم­ افزارهای متعدد IDE (محیط توسعه یکپارچه) از قبیل PythonWin یا IDLE نیز وجود دارد که رایگان هستند و امکانات خوبی از قبیل کدها و کتابخانه ­ها آماده و ابزارهایی برای رفع خطاهای کدنویسی در آن­ها تعبیه شده است.

– پس از نصب ArcGIS Pro، برنامه­های Python و IDLE به­ طور خودکار بر روي رایانه نصب می­ شوند. علاوه بر اين­ها، برنامه ArcGIS Pro یک پنجره خاص برای نوشتن اسکریپت­ های پایتون، اجرای ابزارها با کدهای پایتون و بارگذاری و مشاهده فایل ­های پایتون نیز در اختیار کاربر قرار می­ دهد.

13) یادداشت گذاری در پایتون چگونه انجام می­ شود؟

– در زمان نوشتن اسکریپت در پایتون بهتر است توضیحاتی در مورد کدها نوشته شود تا سایر کاربران نیز بتوانند متوجه شوند که هر کد به ­چه منظور نوشته شده و قرار است چه عملیاتی انجام دهد.

– در زبان پایتون، برای ایجاد یادداشت در بین کدها از علامت # استفاده می­شود.

توضیحات کلی در مورد اسکریپت
یادداشت ­هایی در مورد

هر بخش از اسکریپت

شکل (12-8): یادداشت­گذاری در اسکریپت پایتون

– وقتی در حین اجرا، برنامه پایتون به خطی می­رسد که با# شروع می­شود، این خط نادیده گرفته شده و خط بعدی اجرا می ­شود.

– معمولا چند خط اول اسکریپت پایتون به توضیحاتی کلی در مورد آن اسکریپ اختصاص داده می­شود (از قبیل هدف، سازنده، زمان ساخت، نسخه ArcGIS Pro که قادر به اجرای اسکریپت موردنظر است و…).

– یادداشت­ گذاری در اسکریپت پایتون درواقع نوعی مستندسازی نیز محسوب می­ شود.

14) منظور از «متغیر» در اسکریپت پایتون چیست؟

– اسکریپت ­های پایتون نیز همانند مدل ­های پردازش مکانی دارای متغیر هستند.

– هر متغیر در اسکریپت پایتون دارای یک نام و یک مقدار است.

– مقادیر یک متغیر را می­توان در اسکریپت درج کرد (که اصطلاحا به آن کدگذاری سختمی­گویند) و یا از سایر پردازش ­ها اخذ نمود. این مقادیر می­ توانند تابعی از ArcPy و یا ساير ماژول­ ها نیز باشند.

– برای نمونه می­ توان متغیر ورودی ابزار Buffer را به­ صورت زیر تعریف کرد:

In_buf_fc = “streams”

سپس می ­توان با ابزار Buffer، به­صورت زیر از این متغیر در اسکریپت پایتون استفاده کرد:

Buffer_analysis (In_buf_fc, “C:\Exercises\DataBases\ شهر تریپول.gdb \\Streams”,”200 Meters”, “FULL”, “ROUND”)

– زبان برنامه ­نویسی پایتون به حروف بزرگ و کوچک حساس است. بنابراین متغیری که به­ صورت Mapsize نامگذاری شده متفاوت با متغیر mapsize است.

در نامگذاری متغیرهای پایتون لازم است قواعد زیر نیز رعایت شود:

الف) نام متغیرها بایستی با حرف لاتین شروع شود و نه با عدد و رقم؛

ب) بین کلمات نیاید از فاصله یا کاراکترهای خاص استفاده کرد. تنها کاراکتر مجاز آندرلاین (_) است.

ج) در نامگذاری متغیرها نباید از کلمات کلیدی از قبیل Class، If، For، While، Return استفاده کرد.

15) محل بارگذاری و ذخیره داده ­ها در پایتون چگونه مشخص می ­شود؟

– محل ذخیره داده ­های ورودی و یا محل ذخیره داده ­های خروجی در ویندوز با کاراکتر \ مشخص می­شود. برای نمونه:

C:\Exercises\DataBases

– در پایتون از کاراکتر \ برای نشان دادن ادامه یک خط دستور استفاده می­شود و بنابراین نمی­توان از آن برای مشخص کردن مسیر ذخیره داده­ها استفاده کرد.

– در پایتون برای مشخص کردن مسیر ذخیره از سه روش استفاده می­شود:

الف) دو کاراکتر \

C:\\Exercises\\DataBases

ب) یک کاراکتر /

C:/Exercises/DataBases

ج) استفاده از \ و حرف لاتین r در ابتدای آدرس:

r”C:\Exercises\DataBases”

هرچند که می­ توان در یک اسکریپت از هر سه روش بالا استفاده کرد، اما بهتر است فقط از یکی از این روش ­ها استفاده کرد تا درصورت بروز خطاهای احتمالی در کدنویسی بتوان این خطاها را سریع تر متوجه شد و آن­ها را برطرف نمود.

16) ماژول ArcPy چیست؟

– ماژول ArcPy یک بسته نرم ­افزاری پایتون است که با استفاده از آن می­توان از پایتون در قابلیت­ های نرم ­افزار ArcGIS Pro استفاده کرد. این قابلیت ­ها به مجوز نصب و دسترسی (لایسنس) ArcGIS Pro و افزونه ­های آن بستگی دارد.

– در ماژول ArcPy علاوه بر اجرای فرایندهای پردازش مکانی (Geoprocessing) در جعبه­ ابزارهای سیستمی و سفارشی ArcGIS Pro می­توان توابع دیگری از قبیل فهرست کردن مجموعه داده­ های موجود در مسیر ذخیره موردنظر نیز اجرا کرد.

– ماژول ArcPy دارای چندین زیرماژول می ­باشد. این زیرماژول­ها درواقع کتابخانه­ هایی با اهداف مشخص مشتمل بر توابع و کلاس ­ها هستند. مهمترین این زیرماژول­ ها عبارتند از: ماژول Data Access (arcpy.da)، ماژول Mapping (arcpy.mp)، ماژول Spatial Analyst (arcpy.sa)، ماژول Network Analyst (arcpy.na).

– برای اینکه پایتون به قابلیت ­های ArcGIS Pro دسترسی پیدا کند لازم است ماژول ArcPy در اسکریپت موردنظر بارگذاری شود. این موضوع در شروع یک اسکریپت با استفاده از ترکیب (Syntax) زیر مشخص می­شود:

import arcpy

خط بالا پایتون را به ابزارها و توابع ArcGIS Pro متصل می ­کند. ماژول­ های دیگر (مثلا ماژول Operating system (Os) یا ماژول سیستم (sys) را نیز می ­توان با ترکیب­ های مشابه به اسکریپت معرفی کرد.

17) ترکیب پایتون یک ابزار پردازش مکانی را چگونه می­ توان پیدا کرد؟

 – کد پایتون مورد نیاز برای اجرای یک ابزار پردازش مکانی را می­توان در راهنمای هر

شکل (12-9): روش دسترسی به کد پایتون ابزار پردازش مکانی

 

ابزار مشاهده کرد. در این راهنما سینتاکس لازم و توضیحات مربوط به هر کدام از متغیرها آورده شده است. در شکل زیر، روش دسترسی به راهنمای  ابزار نشان داده شده است.

– بهتر است در زمان باز کردن راهنمای ابزارها، از اتصال به اینترنت مطمئن شوید.

– از طریق آدرس زیر نیز می­توان به راهنمای ابزارهای پردازش مکانی دسترسی داشت:

http:/ / pro. arcgis. com/ en/ pro- app/ toolreference/

main/ arcgis- pro- tool- reference. htm.

– در انتهای هر راهنما، قسمتی با عنوان Parameter وجود دارد که با انتخاب سربرگ Python می­توان نام متغیرها، نوع متغیرها و توضیحات لازم را مشاهده کرد.

شکل (12-9): روش دسترسی به کد پایتون ابزار پردازش مکانی

 

 

تمرين 18: ایجاد و اجرای اسکریپت پایتون

اهداف:

در این تمرین با استفاده از یک اسکریپت پایتون، مساحت کاربری­ های زمین در شهر اهواز را برحسب هکتار محاسبه خواهید کرد.

 مراحل حل تمرین:

1) باز کردن برنامه IDLE؛

2) نوشتن اسکریپت؛

3) اجرای اسکریپت.

حل تمرین

1) باز کردن برنامه IDLE:

1) از دکمه Start ویندوز، مجموعه نرم­افزاری ArcGIS و سپس برنامه IDLE (Python GUI) را باز کنید. در محیط این برنامه به­  راحتی می ­توان کدهای پايتون را نوشته و سپس در محیط ArcGIS Pro فراخوانی نمود و اجرا کرد.

2) پنجره­ ای که باز می­شود را اصطلاحا پوسته (Shell) پایتون می­  گویند و نمی­توان در آن کدنویسی کرد. برای شروع کدنویسی از منوی File، زیرمنوی New File را انتخاب کنید تا پنجره جدیدی باز شود. در این پنجره، امکان نوشتن اسکریپت فراهم است.

 

3) از منوی Option، گزینه Configure IDLE را انتخاب کنید تا پنجره Option باز شود. در این پنجره، بر روي سربرگ General کلیک کنید و سپس در قسمت Default Source Encoding، مطمئن شوید گزینه UTF-8 فعال است (با انجام این کار امکان خوانش فونت­ های فارسی در اسکریپت فراهم می ­شود). بر روي دکمه Ok کلیک کنید تا پنجره Option بسته شود.

2) نوشتن اسکریپت:

1) از منوی File، گزینه Save As را انتخاب کنید تا پنجره Save As باز شود. در این پنجره مسیر  C:\Exercises\Ex18\Result را دنبال کرده و نام فایل خروجی را HectaresAreaCalc بگذارید. بر روي دکمه Save کلیک کنید.

2) در پوسته پایتون، عبارات زیر را تایپ کنید:

#*************************************************

#Script Title: HectaresAreaCalc.py

#Script Author: DorraNinejad, Javizadeh

#Script Created on: 12/16/2021

#Last Updated on: 12/16/2021

#Last Updated by: DorraniNejad, Javizadeh

#Purpose: This script calculates the landuse area in hectares

#Software: ArcGIS Pro 2.5 or later

#**************************************************

در کدهای بالا، علامت # به­ معنای یادداشت (توضیحات) است و خط دستوری که با # شروع می­شود اجرا نمی ­شود. خط ­های دستور به­ترتیب این موارد را نشان می­دهند:  1) ستاره ­هايي برای زیبایی اسکریپت، 2) عنوان اسکریپت (Script Title)، نویسنده اسکریپت (Script Author)، 3) تاریخ ساخت اسکریپت (Script Created on)، تاریخ­ به ­روزرسانی (Last Updated on)، 4) افرادی که آخرین به ­روزرسانی را انجام داده ­اند (Last Updated by)، 5) هدف اسکریپت (Purpose)، 6) نرم­ افزار اجرا کننده اسکریپت (Software)،  7) ستاره ­هايي برای زیبایی اسکریپت. وجود هیچ کدام از خط دستورهای فوق الزامی نیست. در عین حال می­ توانید هر کدام از آن­ها را به دلخواه تغییر دهید (برای نمونه به­ جای نویسندگان کتاب نام خود را بنویسید).

3) در مرحله بعد لازم است با یک کددستور ماژول ArcPy را فراخوانی کنید تا اسکریپت بتواند به ابزارهای ArcGIS Pro دسترسی داشته باشد. بدین منظور کددستور زیر را در پوسته پایتون تایپ کنید:

#Imports the ArcPy module for ArcGIS

import arcpy

4) از منوی File، زیرمنوی Save را انتخاب کنید تا تغییرات ذخیره شوند.

5) در این مرحله لازم است تا متغیر موردنظر (لایه کاربری_زمین) را به اسکریپت معرفی کنید. متغیری که نشان­دهنده این لایه است را با عنوان Landuse نام­گذاری خواهید کرد. کد دستور­های زیر را در پوسته پایتون تایپ کنید:

#Specifies the input variables for the script tools

#If the data is moved or in a different database then these paths will need to be updated

Landuse = C:\\Exercises\\Ex18\\Data\\Data.gdb\\”کاربری_زمین”

سه خط اول از نوع یادداشت هستند و خط چهارم ضمن معرفی متغیر، مسیر دسترسی به آن­را نیز نشان می­دهد (اگر پوشه Exercises که در لوح فشرده کتاب موجود است را در درایو C رایانه­تان ریخته باشید، اسکریپت بدون مشکل اجرا خواهد شد).

6) در ادامه بایستی کد مربوط به اجرای ابزار Calculate Field (که قرار است مقادیر موجود در فیلد Shape Area را بر عدد 10000 تقسیم کرده و در فیلد Area_Hec درج کند) را در اسکریپت بنویسید. این کد به­صورت زیر است:

#Calculates the area in hectares for each landuse and updates the Area_Hec field.

arcpy.CalculateField_management (Landuse, “Area_Hec”, “!Shape_Area! / 10000”)

7) از منوی File، زیرمنوی Save را انتخاب کنید تا تغییرات ذخیره شوند. برنامه IDLE را ببندید.

3) اجرای اسکریپت:

1) پروژه Ex18 که فایل آن در مسیر C:\ Exercises\Ex18\Data در دسترس است را در محیط ArcGIS Pro باز کنید. این پروژه از یک نقشه با عنوان «کاربری زمین در شهر اهواز» تشکیل شده که دارای یک لایه بُرداری با عنوان «کاربری_زمین» و دو نقشه پایه با عناوین World Topographic Map و World Hillshade می­باشد.

2) در کادر Catalog، گروه Toolboxes را باز کرده و بر روي جعبه ابزار Ex18.tbx کلیک راست کنید. گزینه New و Script را انتخاب کنید تا پنجره New Script باز شود.

3) در پنجره New Script، در جعبه Name، عبارت HectaresAreaCalc و در جعبه Lavel، عبارت «محاسبه گر مساحت کاربری زمین برحسب هکتار» را تایپ کنید.

4) در سمت راست جعبه Script File، بر روي دکمه Browse  کلیک کنید تا پنجره Select the script file باز شود. در این پنجره مسیر C:\Exercises\Ex18\Result را دنبال کرده و فایل اسکریپت HectaresAreaCalc را به نرم­ افزار معرفی کنید. بر روي دکمه Ok کلیک کنید تا پنجره Select the script file بسته شود.

5) در پنجره New Script بر روی Ok کلیک کنید تا این پنجره بسته شود.

6) در کادر Catalog، بر روي جعبه ابزار Ex18.tbx کلیک راست کرده و گزینه Referesh را انتخاب کنید. سپس جعبه ابزار مذکور را باز کرده و دوبار بر روی اسکریپت «محاسبه گر مساحت کاربری زمین برحسب هکتار» کلیک کنید تا کادر مربوط به این اسکریپت در زیرمجموعه کادر Geoprocessing در سمت راست پنجره نمایش باز شود.

7) چون برای اسکریپت مذکور هیچ پارامتری تعریف نشده است، بنابراین کادر مربوط به این اسکریپت فاقد پارامتر است. بر روي دکمه Run  کلیک کنید تا اسکریپت اجرا شده و پیغام سبز رنگ Complete در پایین دکمه Run ظاهر شود.

8) جدول لایه «کاربری_زمین» را باز کنید. ملاحظه می­کنید که مقادیر مساحت هر کاربری برحسب هکتار محاسبه شده و در فیلد Area_Hec درج شده است.

9) جدول لایه «کاربری_زمین» را ببندید و پروژه را با عنوان Ex18-Result در مسیر C:\Exercises\Ex18\Result ذخیره کنید.

10) برنامه ArcGIS Pro را ببندید.

20 نظرات

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