آموزش برنامه نویسی GIS با پایتون (2)

معرفی پایتون در GIS :فصل 1

1.1معرفی

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

این کتاب یک نسخه کاملاً به روز شده و اصلاح شده از Python Scripting برای ArcGIS است که توسط Esri Press (ردلندز، کالیفرنیا) در سال 2013 منتشر شده است که برای ArcGIS Desktop 10.x نوشته شده است. کتاب حاضر برای ArcGIS Pro نوشته شده است. نه تنها تغییرات نرم افزار ArcGIS و زبان برنامه نویسی Python را در بر می گیرد، بلکه شامل عملکردهایی است که قبلاً در ArcGIS موجود نبوده است.

آموزش برنامه نویسی GIS با پایتون

1.2بررسی ویژگی های پایتون

پایتون دارای چندین ویژگی است که آن را به زبان برنامه نویسی منتخب برای کار با ArcGIS Pro تبدیل می کند. از جمله:

یادگیری آن ساده و آسان است: یادگیری پایتون در مقایسه با سایر زبان های برنامه نویسی بسیار ساختار یافته مانند C++ آسان است. نحو ساده است، که به شما زمان بیشتری برای تمرکز بر حل مشکلات به جای یادگیری خود زبان می دهد.

رایگان و متن باز است: پایتون یک نرم افزار رایگان و متن باز (FOSS) است. می‌توانید آزادانه نسخه‌هایی از نرم‌افزار را توزیع کنید، کد منبع را بخوانید، تغییراتی در آن ایجاد کنید و از قطعات آن در برنامه‌های رایگان جدید استفاده کنید. یکی از دلایلی که پایتون به خوبی کار می کند این است که توسط یک جامعه کاربر فعال و اختصاصی ایجاد شده و دائماً در حال بهبود است. ماهیت FOSS پایتون این امکان را برای Esri فراهم می کند®برای توزیع پایتون در نرم افزار ArcGIS Pro.

این کراس پلتفرم است: پایتون در پلتفرم های مختلف از جمله ویندوز، macOS و لینوکس پشتیبانی می شود. برنامه های پایتون می توانند روی هر یک از این پلتفرم ها با حداقل تغییر یا اغلب بدون تغییر کار کنند. از آنجایی که ArcGIS Pro فقط بر روی ویندوز اجرا می شود، ممکن است مزیت بزرگی به نظر نرسد، اما جامعه کاربران پایتون بزرگ است، تا حدی به دلیل ماهیت چند پلتفرمی آن.

برنامه نویسی پایتون در GIS

تفسیر می شود: بسیاری از زبان های برنامه نویسی نیاز دارند که یک برنامه از زبان مبدأ، مانند C++، به کد باینری تبدیل شود که کامپیوتر بتواند آن را بفهمد. این تبدیل به یک کامپایلر با گزینه های مختلف نیاز دارد. پایتون یک زبان تفسیری است، به این معنی که قبل از اجرای آن نیازی به کامپایل کردن در کد باینری ندارد. شما به سادگی برنامه را مستقیماً از کد منبع اجرا می کنید، که کار با پایتون را راحت تر و قابل حمل تر از برخی از زبان های برنامه نویسی دیگر می کند.

شی گرا است: پایتون یک زبان برنامه نویسی شی گرا (OOP) است. یک برنامه شی گرا شامل مجموعه ای از اشیاء در حال تعامل است، برخلاف لیست معمولی وظایف. بسیاری از زبان های برنامه نویسی مدرن از برنامه نویسی شی گرا پشتیبانی می کنند.

این ویژگی ها پایتون را به یکی از محبوب ترین زبان های برنامه نویسی در جهان تبدیل می کند و محبوبیت آن همچنان در حال افزایش است. این زبان به یک زبان پرکاربرد برای آموزش دوره های مقدماتی برنامه نویسی کامپیوتر در کالج ها و دانشگاه ها تبدیل شده است. محبوبیت پایتون همچنین به این معنی است که منابع متعددی برای یادگیری آن وجود دارد.

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

آموزش برنامه نویسی GIS با پایتون

مهم است که بدانیم پایتون برای کار به طور خاص با نرم افزار GIS یا مجموعه داده های جغرافیایی ایجاد نشده است. این یک زبان برنامه نویسی همه منظوره است که برای کارهای متعدد، از توسعه برنامه های وب تا ساخت بازی ها و از خودکارسازی رویه های سیستم عامل تا توسعه الگوریتم های یادگیری ماشین استفاده می شود. این تطبیق پذیری به این معنی است که مهارت های پایتونی که در این کتاب یاد می گیرید برای کارهای دیگری غیر از کارهای مربوط به GIS مفید خواهد بود. و شاید به دلیل ماهیت همه منظوره آن، پایتون به طور گسترده در جامعه جغرافیایی استفاده می شود. این سازگاری تا حدی به این دلیل است که یادگیری پایتون آسان است و می‌توان از آن برای بسیاری از وظایف مختلف استفاده کرد، اما همچنین به این دلیل است که پایتون دارای یک جامعه توسعه‌دهنده بزرگ و یک کتابخانه در حال رشد از بسته‌ها برای گسترش عملکرد خود، از جمله برای کارهای مکانی است. Esri به طور کامل پایتون را به عنوان یکی از زبان های برنامه نویسی کلیدی برای کار با ArcGIS Pro پذیرفته است. چندین نرم افزار GIS دیگر نیز از Python به عنوان یک زبان برنامه نویسی استفاده می کنند، بنابراین سرمایه گذاری شما در یادگیری Python فراتر از استفاده از آن در ArcGIS Pro خواهد بود.

1.3اسکریپت در مقابل برنامه نویسی

اگرچه پایتون یک زبان برنامه نویسی است، اما اغلب از آن به عنوان یک زبان برنامه نویسی یاد می شود. خوب فرقش چیست؟ به طور کلی، یک زبان برنامه نویسی به خودکارسازی عملکردهای خاص در یک برنامه دیگر اشاره دارد، در حالی که یک زبان برنامه نویسی شامل توسعه برنامه های کاربردی چند منظوره پیچیده تر است. اسکریپت یک کار برنامه نویسی است که به شما امکان می دهد اجزای مختلف موجود را برای انجام یک کار جدید و مرتبط به هم متصل کنید. اسکریپت “چسب” است که به شما امکان می دهد عناصر مختلف موجود را در کنار هم قرار دهید. از سوی دیگر، برنامه نویسی به شما اجازه می دهد تا اجزای سازنده را از ابتدا بسازید، همچنین برنامه هایی که این اجزا را در خود جای داده اند. زبان‌هایی که با این مقدمات سطح پایین‌تر و منابع خام رایانه کار می‌کنند، زبان‌های سیستم نامیده می‌شوند. نمونه هایی از زبان های سیستم عبارتند از C++ و . زبان های NET مانند سی شارپ. زبان های اسکریپت از توابع سطح بالاتر داخلی استفاده می کنند و برخی از جزئیاتی را که یک زبان سیستم مدیریت می کند پنهان می کنند. نمونه هایی از زبان های برنامه نویسی عبارتند از Python، Perl، PHP، R و Ruby.

آموزش برنامه نویسی GIS با پایتون

به عنوان مثال، Esri در درجه اول به C++ به عنوان زبان برنامه نویسی برای ایجاد نرم افزار ArcGIS Pro و تمام اجزا یا اشیاء مختلف که در نرم افزار پیدا می کنید متکی است. سپس می توانید از زبان های دات نت برای نوشتن نرم افزار خود استفاده کنید که از همین اشیاء استفاده می کند و همچنین اشیاء خود را ایجاد می کند. با این حال، شما همچنین می توانید از اسکریپت برای دسترسی به عملکرد موجود ArcGIS Pro استفاده کنید و آن توابع را به روش های جدیدی برای گسترش آن عملکرد متصل کنید.

یکی از نقاط قوت پایتون این است که هم یک زبان اسکریپت نویسی و هم یک زبان برنامه نویسی است، هرچند که عمق زبان سیستمی مانند C++ را ندارد. می توانید از آن برای اسکریپت های نسبتاً ساده و همچنین کارهای برنامه نویسی پیشرفته تر استفاده کنید. تمرکز این کتاب نوشتن اسکریپت های پایتون برای انجام وظایف در ArcGIS Pro است. پایتون همچنین می تواند برای توسعه برنامه استفاده شود، اما این جنبه های استفاده از پایتون در این کتاب مورد توجه قرار نگرفته است. پایتون در اینجا به عنوان یک زبان تفسیر شده برای کار مستقیم با قابلیت های موجود در ArcGIS Pro استفاده می شود.

آموزش arcgis

1.4استفاده از اسکریپت در ArcGIS Pro

ArcGIS Proپشتیبانی از استفاده از پایتون به عنوان یک زبان برنامه نویسی را فراهم می کند. پایتون می تواند به تمام ابزارهای موجود در ArcGIS Pro دسترسی داشته باشد، از جمله ابزارهایی که بخشی از یک افزونه هستند. این ویژگی اسکریپت نویسی پایتون را به روشی جذاب و کارآمد برای خودکارسازی وظایف تبدیل می کند. اگرچه همان اتوماسیون را می توان با استفاده از یک زبان سیستمی مانند C++ یا یک زبان دات نت انجام داد، اسکریپت نویسی اغلب به تلاش بسیار کمتری نیاز دارد.

اسکریپت نویسی پایتون به ابزاری اساسی برای متخصصان GIS برای گسترش عملکرد ArcGIS Pro و خودکارسازی گردش کار تبدیل شده است. در نسخه های قبلی ArcMap™نرم افزار، یک رویکرد معمولی استفاده از ابزارهای برنامه نویسی داخلی VBA (Visual Basic for Applications) بود. با ArcMap 10.x، VBA تا حد زیادی با Python جایگزین شد و استفاده از Python فقط با ArcGIS Pro تقویت شد. اگرچه توسعه برنامه‌ها به استفاده از زبان‌هایی مانند زبان‌هایی که توسط دات‌نت استفاده می‌شود ادامه خواهد یافت، پایتون دارای چندین مزیت است، به‌ویژه برای متخصصان GIS که برنامه‌نویس تمام وقت نیستند.

Python زبان برنامه نویسی انتخابی برای کار با ArcGIS Pro است و در هر نصب ArcGIS Pro گنجانده شده است. پایتون همچنین به طور مستقیم در بسیاری از ابزارها در ArcGIS Pro تعبیه شده است. به عنوان مثال، پایتون یکی از انواع عبارت استاندارد برای محاسبات فیلد است. به عنوان مثالی دیگر، چندین ابزار ژئوپردازش در ArcGIS Pro از اسکریپت‌های پایتون تشکیل شده‌اند، حتی اگر کاربر معمولی لزوماً متوجه این واقعیت (یا نیازی به آن) نشود. Esri رسما پایتون را به عنوان ابزار برنامه نویسی ترجیحی برای کار با ArcGIS دسکتاپ پذیرفته است و ArcGIS Pro شاهد ادغام بیشتر پایتون در رابط نرم افزار دسکتاپ بوده است.

آموزش برنامه نویسی GIS با پایتون

1.5تاریخچه و نسخه های پایتون

پایتون توسط Guido van Rossum در Centrum voor Wiskunde en Informatica (CWI) در هلند ایجاد شد و اولین بار در سال 1991 منتشر شد. Van Rossum در توسعه مداوم پایتون فعال باقی ماند اما مشارکت کنندگان متعددی به او پیوستند. نام پایتون از گروه کمدی بریتانیایی مونتی پایتون الهام گرفته شده است – این یک تصور غلط رایج است که این نام ارتباطی با گونه مارها دارد.

ویژگی‌های پایتون شامل انواع داده‌های پایه مانند رشته‌ها، اعداد، فهرست‌ها و دیکشنری‌ها و همچنین بسیاری از عناصر پیشرفته رایج در زبان‌های برنامه‌نویسی شی‌گرا است. استحکام Python نشان دهنده نیاز به گنجاندن ویژگی های اساسی است که همه برنامه نویسان به آن نیاز دارند، و همچنین قابلیت های پیشرفته تر که در سایر زبان های برنامه نویسی پیچیده تر رایج است.

در مقایسه با زبان‌های دیگر، پایتون نسخه‌های محدودی را پشت سر گذاشته است که منعکس‌کننده فلسفه تغییرات تدریجی و سازگاری به عقب است. پایتون 2 در سال 2000 معرفی شد و آخرین (و آخرین) نسخه 2.7 است. با هر نسخه، ویژگی‌های جدیدی اضافه می‌شد و به مرور زمان برخی ناهماهنگی‌ها و نقص‌های طراحی در کد ایجاد می‌شد. پایتون 3 در سال 2008 به عنوان یک تعمیر اساسی منتشر شد، با هدف اصلی پاکسازی پایه کد و حذف افزونگی. آخرین نسخه در زمان نگارش 3.8 است.

برخی از تغییرات ایجاد شده در پایتون 3 اساسی هستند که منجر به شکستن فلسفه سازگاری عقب مانده پایتون می شود. در نتیجه، همه کدهای نوشته شده در پایتون 3 در پایتون 2 کار نمی کنند. برخی از قابلیت های جدید اضافه شده در پایتون 3 به پایتون 2 اضافه شده است، فرآیندی که به عنوان backporting شناخته می شود. بنابراین، با توجه دقیق به جزئیات، می توان کدی را نوشت که در هر دو نسخه کار می کند.

هر دو نسخه پایتون در حال حاضر در حال استفاده هستند که ممکن است گیج کننده باشد. این دو نسخه برای مدتی به همزیستی ادامه خواهند داد، اما به طور رسمی پایتون 2.7 پس از 2020 حفظ نخواهد شد. هر کد موجود به کار خود ادامه خواهد داد، اما پس از این تاریخ، هیچ بهبود دیگری در نسخه 2.7 انجام نخواهد شد. فصل 4 اصول زبان پایتون را پوشش می دهد. در حال حاضر مهم این است که به نحوه ارتباط این دو نسخه با ArcGIS Pro پرداخته شود.

آموزش برنامه نویسی GIS با پایتون

توجه داشته باشید:اگر در یادگیری پایتون تازه کار هستید، باید روی یادگیری پایتون 3 که تمرکز این کتاب است، تمرکز کنید.

زمانی که پایتون برای اولین بار به عنوان زبان برنامه نویسی برای کار با ArcMap 9.0 انتخاب شد، نسخه انتخاب شده Python 2 بود. از آن زمان، هر نسخه جدید نرم افزار ArcGIS Desktop با نسخه فعلی Python 2 نصب شده است. به عنوان مثال، ArcGIS Desktop 10.7.1 از Python 2.7.16 استفاده می کند. زمانی که ArcGIS Pro توسعه یافت، از ابتدا برای استفاده از Python 3 طراحی شد. در زمان نگارش، آخرین نسخه ArcGIS Pro نسخه 2.5 است و این نسخه با Python 3.6.9 کار می کند. انتخاب پایتون 3 به دلیل بازنشستگی قریب‌الوقوع پایتون 2 منطقی بود، اما در دسترس بودن سایر بسته‌های پایتون در نسخه 3 که در زمان معرفی ArcGIS Desktop 10.0 در سال 2010 در دسترس نبودند، نیز تسهیل شد.

این واقعیت که ArcGIS Desktop 10.x از Python 2.7 استفاده می کند، در حالی که ArcGIS Pro از Python 3.6 استفاده می کند، پیامدهای زیادی دارد. اگر قصد دارید برای هر دو نسخه اسکریپت بنویسید، باید تفاوت های بین دو نسخه پایتون و همچنین عملکرد ArcGIS Desktop 10.x و ArcGIS Pro را یاد بگیرید. اگر قبلاً یک برنامه نویس باتجربه پایتون هستید و قصد دارید اسکریپت ها و ابزارها را از ArcGIS Desktop 10.x به ArcGIS Pro منتقل کنید، همین امر صدق می کند. بسیاری از منابع و ابزارهای کمکی برای کمک به این تبدیل وجود دارد.

هدف این کتاب تمرکز بر نوشتن اسکریپت برای ArcGIS Pro با استفاده از Python 3 است. برخی از مرتبط ترین تفاوت ها با ArcGIS Desktop 10.x و Python 2.7 در فصل های انتخاب شده ذکر شده است، اما تمام کدهای کتاب برای ArcGIS نوشته شده است. Pro و Python 3. اگرچه کد پایتون 100 درصد با نسخه های 3 و 2 سازگار نیست، اما در اصل می توان کد پایتون را نوشت که برای هر دو نسخه کار می کند. با این حال، به دلیل تفاوت های اساسی بین ArcGIS Desktop 10.x و ArcGIS Pro، بسیاری از اسکریپت های نوشته شده برای یک نسخه بعید است که در نسخه دیگر کار کنند. با این حال، گاهی اوقات تفاوت ها کوچک است.

آموزش arcgis

اگر در یادگیری ArcGIS نسبتاً تازه کار هستید، تنها نرم افزار دسکتاپ که ممکن است با آن آشنا باشید ArcGIS Pro است. انتظار می رود کاربران این کتاب آشنایی خوبی با ArcGIS Pro داشته باشند، اما هیچ تجربه ای با پایتون لازم نیست. شما اساساً می توانید یادداشت های گاه به گاه را که به ArcGIS Desktop 10.x یا Python 2 اشاره دارد نادیده بگیرید.

توجه داشته باشید:بسیاری از کاربران GIS تا مدتی دیگر از ArcGIS Desktop 10.x و ArcGIS Pro استفاده خواهند کرد. در زمان نگارش، جدیدترین نسخه ها ArcMap 10.7.1 و ArcGIS Pro 2.5 هستند. نصب ArcMap 10.7.1 شامل نصب Python 2.7.16 و نصب ArcGIS Pro 2.5 شامل نصب Python 3.6.9 است. این دو نسخه می توانند روی یک کامپیوتر اجرا شوند. هنگام کار با ArcGIS Pro 2.5، فقط باید از Python 3.6.9 استفاده کنید. فصل 2 نحوه اطمینان از استفاده از نسخه صحیح پایتون را پوشش می دهد.

آموزش برنامه نویسی GIS با پایتون

1.6ساختار این کتاب

اسکریپت نویسی پایتون برای ArcGIS Proشامل 11 فصل است که ساختار و نحو Python را توضیح می دهد و نحوه نوشتن اسکریپت برای ArcGIS Pro را نشان می دهد. کد نمونه در سراسر متن ارائه شده است.

فصل 1 پایتون را معرفی می‌کند، توضیح می‌دهد که چرا پایتون برای نوشتن اسکریپت‌ها برای ArcGIS Pro استفاده می‌شود، و چندین نمونه اسکریپت را نشان می‌دهد که با استفاده از پایتون توسعه یافته‌اند.

فصل 2 نحوه استفاده از ویرایشگرهای پایتون برای نوشتن و تست کد خود را توضیح می دهد. از چندین ویرایشگر مختلف از جمله IDLE، PyCharm و Spyder در این کتاب استفاده شده است. همچنین پنجره Python را در ArcGIS Pro توصیف می کند که به شما امکان می دهد یک یا چند خط کد پایتون را مستقیماً از داخل ArcGIS Pro اجرا کنید. کد نوشته شده در پنجره پایتون را می توان به عنوان یک اسکریپت ذخیره کرد و کدهای موجود از یک اسکریپت را می توان در پنجره پایتون بارگذاری کرد.

فصل 3 چارچوب geoprocessing ArcGIS، از جمله استفاده از ابزارها و برنامه ModelBuilder را معرفی می کند. کاربران باتجربه ArcGIS Pro با بیشتر مطالب آشنا هستند، اما بررسی خوب سودمند خواهد بود. دانستن آنچه که با مجموعه ابزارهای پردازش جغرافیایی موجود امکان پذیر است در نوشتن اسکریپت های موثر مفید خواهد بود. به طور مشابه، اسکریپت های پایتون و ModelBuilder اغلب به صورت ترکیبی مورد استفاده قرار می گیرند، بنابراین برای استفاده حداکثری از اسکریپت نویسی پایتون، دانش خوب ModelBuilder توصیه می شود.

فصل 4 اصول زبان پایتون، از جمله استفاده از انواع داده ها و ساختارهای داده، متغیرها، کلمات کلیدی، عبارات و عبارات، روش ها، توابع و ماژول ها را توضیح می دهد. کنترل گردش کار؛ و بهترین روش ها برای نوشتن اسکریپت. فصل 4 سینتکس پایه پایتون را برای کاربر مبتدی پایتون پوشش می دهد. کاربران باتجربه پایتون با این مطالب آشنا خواهند بود.

فصل 5 ArcPy را شرح می دهد، که انجام بسیاری از وظایفی که معمولاً در ArcGIS Pro با استفاده از Python انجام می شود را ممکن می سازد. ArcPy شامل ماژول‌ها، کلاس‌ها و توابع متعددی است که راه مؤثری برای ادغام ArcGIS Pro و Python ارائه می‌کند. فصل 5 همچنین شامل کار با مسیرهای داده، تنظیمات محیطی و مجوزها است.

فصل 6 شامل تکنیک‌هایی برای کاوش داده‌ها، از جمله توصیف داده‌ها، و همچنین کار با فهرست‌ها برای مشخص کردن داده‌ها قبل از استفاده از آن‌ها در عملیات‌های دیگر است.آموزش arcgis

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

فصل 8 نحوه دستکاری داده های مکانی و جدولی از جمله استفاده از مکان نما، جستجوی داده ها و کار با جداول و فیلدها را معرفی می کند. درس های این فصل استفاده از Python را برای اجرای پرس و جوهای SQL روی داده های مکانی و نوشتن عبارات برای محاسبات فیلد ممکن می سازد.

فصل 9 نحوه کار با ویژگی های هندسی اشیاء فضایی، از جمله نحوه استفاده از ویژگی های ویژگی های موجود و ایجاد ویژگی های جدید را شرح می دهد.

فصل 10 نحوه کار با رسترها در پایتون، از جمله ابزارهای پسوند Spatial Analyst را شرح می دهد. ماژول Spatial Analyst ArcPy شامل بسیاری از عملگرهای جبر نقشه تخصصی و کلاس‌های دیگر برای استفاده از رستر در تحلیل فضایی است.

فصل 11 ماژول نقشه برداری ArcPy را برای خودکارسازی وظایف نقشه برداری توضیح می دهد. این فصل شامل کار با پروژه ها، نقشه ها و لایه ها و همچنین صادرات و چاپ طرح بندی است.

اگر یک توسعه‌دهنده با تجربه هستید و قبلاً اسکریپت‌ها و ابزارهایی را در پایتون برای ArcGIS Desktop 10.x نوشته‌اید و به دنبال ارتقای مهارت‌های خود برای انتقال به ArcGIS Pro هستید، بسیاری از فصل‌های این کتاب مطالبی را پوشش می‌دهد که از قبل می‌دانید. . ممکن است بخواهید روی فصل‌هایی تمرکز کنید که مطالبی را پوشش می‌دهند که نسبت به کتاب Python Scripting برای ArcGIS که برای ArcGIS Desktop 10.x نوشته شده است، بیشترین تغییر را داشته‌اند. این فصل ها شامل فصل 2 در مورد کار با ویرایشگرهای پایتون و فصل 11 در مورد برنامه نویسی نقشه است.

چندین فصل نیز در مقایسه با کتاب قبلی بسط و بهبود یافته است. فصل 4 در مبانی پایتون برای به روز رسانی تمام نحو به پایتون 3 به طور کامل بازنگری شده است و بخش های جدیدی در مورد کار با تاپل ها، دیکشنری ها و مجموعه ها اضافه شده است. قالب بندی چاپ؛ منطق بولی؛ کار با خطوط طولانی کد؛ و مدیریت فایل فصل 8 یک بخش جدید در مورد عبارات پایتون برای محاسبات فیلد دارد. فصل 9 با مثال های بیشتری در مورد نحوه کار با اجسام هندسی به طور اساسی گسترش یافته است. فصل 10 در مورد شطرنجی دارای بخش های جدیدی در مورد عملکرد توسعه یافته پسوندهای Image Analyst و Spatial Analyst و همچنین کار با Raster Cell Iterator و استفاده از توابع شطرنجی است.

چندین موضوع مهم با توجه به اسکریپت نویسی پایتون برای ArcGIS Pro در این کتاب گنجانده نشده است تا یک طول قابل مدیریت حفظ شود. این موضوعات در کتاب Advanced Python Scripting برای ArcGIS Pro (Esri Press، 2020) پوشش داده شده است. موضوعات شامل ایجاد ابزارهای اسکریپت و جعبه ابزار پایتون است. به اشتراک گذاری ابزار با دیگران؛ مدیریت بسته ها با استفاده از conda. استفاده از بسته های شخص ثالث غیر از ArcPy؛ انتقال اسکریپت ها و ابزارها از ArcGIS Desktop 10.x به ArcGIS Pro. و با استفاده از ArcGIS API برای پایتون و نوت بوک Jupyter. این موضوعات به طور منطقی از موضوعاتی که در کتاب حاضر به آن پرداخته شده است، پیروی می کنند. بنابراین، اگر به تمام موضوعات در Python Scripting برای ArcGIS Pro تسلط دارید، گام منطقی بعدی این است که با Advanced Python Scripting برای ArcGIS Pro ادامه دهید.

1.7بررسی نحوه استفاده از پایتون

این بخش از چندین مثال برای نشان دادن نحوه استفاده از Python برای ایجاد اسکریپت برای استفاده با ArcGIS Pro استفاده می کند. این نمونه ها شبیه اسکریپت های استفاده شده در فصل های بعدی این کتاب است. یکی از دلایل ارائه این مثال ها آشنایی شما با مشاهده کدهای پایتون است. یکی از بهترین راه ها برای یادگیری نحوه نوشتن کد، کار با نمونه های موجود است. انتظار نمی رود در این مرحله کد را به طور کامل درک کنید، اما مثال ها طعمی از آنچه در آینده خواهد آمد را به شما می دهند.

مثال 1: کپی کردن فایل های شکل در یک پایگاه داده جغرافیایی

یک کار رایج در ArcGIS Pro کپی مجموعه داده ها از یک فرمت به فرمت دیگر است. به عنوان مثال، سناریویی را در نظر بگیرید که در آن چندین شکل فایل در یک پوشه دارید، و باید آن شکل فایل‌ها را در یک مجموعه داده ویژگی جدید در یک پایگاه داده جغرافیایی فایل کپی کنید. علاوه بر این، شما می خواهید فقط شکل فایل های چند ضلعی را کپی کنید. شکل یک پوشه معمولی با چندین شکل فایل را نشان می دهد.

انجام این کار در ArcGIS Pro نیازمند اجرای چندین ابزار مختلف است. برای ایجاد ساختار پایگاه داده مورد نظر، باید Create File Geodatabase و Create Feature Dataset را اجرا کنید. سپس چندین گزینه برای کپی کردن فایل های شکل دارید، از جمله کلاس ویژگی به کلاس ویژگی، کلاس ویژگی در پایگاه داده جغرافیایی، یا ویژگی های کپی. در ArcGIS Pro، معمولاً باید این ابزارها را برای هر شکل فایلی که می خواهید کپی کنید، اجرا کنید. ابزار Feature Class to Geodatabase به شما امکان می دهد از چندین شکل فایل به عنوان ویژگی های ورودی استفاده کنید، اما آنها باید به صورت دستی در کادر محاوره ای ابزار انتخاب شوند. اجرای این ابزارها برای تعداد انگشت شماری شکل فایل دشوار نیست، اما اگر 100 یا بیشتر شکل فایل برای کپی داشته باشید، چه؟ 100 بار اجرای ابزارها دست و پا گیر و مستعد خطا خواهد بود. اینجاست که یک اسکریپت پایتون مفید خواهد بود.

اسکریپت زیر کار را انجام می دهد. اسکریپت را بخوانید تا ببینید آیا می‌توانید منطق کلی اسکریپت را دنبال کنید.

import arcpy, os

ws = “C:/Data”

gdb = “Database.gdb”

prj = “myprojection.prj”

arcpy.env.workspace = ws

arcpy.CreateFileGDB_management(ws, gdb)

sr = arcpy.SpatialReference(os.path.join(ws, prj))

arcpy.CreateFeatureDataset_management(gdb, “Polygons”, sr)

fc_list = arcpy.ListFeatureClasses()

for fc in fc_list:

fc_desc = arcpy.Describe(fc)

if fc_desc.shapeType == “Polygon”:

newfc = os.path.join(gdb, “Polygons”, fc_desc.basename)

arcpy.CopyFeatures_management(fc, newfc)

 

همین کد نیز به عنوان یک اسکریپت تکمیل شده در ویرایشگر پایتون نشان داده می شود.

# Import modules and set workspace import arcpy, os home = "C:/Data" arcpy.env.workspace = home # Script parameters in_fc = "route.shp" out_fc = "points9.shp" interval = 500 use_percent = False end_points = True # Create output feature class desc = arcpy.Describe(in_fc) sr = desc.spatialReference arcpy.CreateFeatureclass_management(home, out_fc, "POINT", "", "", "", sr) # Add a field to transfer FID from input fid_name = "NEW_ID" arcpy.AddField_management(out_fc, fid_name, "LONG") # Create new points based on input lines with arcpy.da.SearchCursor(in_fc, ["SHAPE@", "OID@"]) as search_cur: with arcpy.da.InsertCursor(out_fc, ["SHAPE@", fid_name]) as insert_cur: for row in search_cur: line = row[0] if line: if end_points: insert_cur.insertRow([line.firstPoint, row[1]]) cur_length = interval max_position = 1 if not use_percent: max_position = line.length while cur_length < max_position: insert_cur.insertRow( [line.positionAlongLine(cur_length, use_percent), row[1]]) cur_length += interval if end_points: insert_cur.insertRow([line.lastPoint, row[1]])

هیچ انتظاری وجود ندارد که در این مرحله به طور کامل کد را درک کنید. فصل های بعدی نحوه نوشتن و اجرای این نوع اسکریپت را به شما آموزش می دهد. فصل 2 در مورد ویرایشگرهای پایتون توضیح می دهد که کجا این کد را بنویسیم. فصل 4 در مورد اصول پایتون، نحو مورد استفاده در اسکریپت پایتون را توضیح می دهد. فصل‌های 5 و 6 اصول ArcPy برای استفاده از ابزارهای پردازش جغرافیایی در اسکریپت پایتون را پوشش می‌دهند.

اسکریپت مثال می تواند بیش از آنچه ابزارهای پردازش جغرافیایی می توانند انجام دهند، مانند ایجاد لیستی از تمام فایل های شکل در یک پوشه و فیلتر کردن تنها آنهایی که از چند ضلعی تشکیل شده اند، انجام دهد. بدون اسکریپت، اینها کارهای دستی در ArcGIS Pro هستند.

نتیجه اجرای اسکریپت یک پایگاه داده جغرافیایی جدید با مجموعه داده ویژگی است که شامل کلاس های ویژگی چند ضلعی کپی شده است.

شرح

پوشه داده شامل یک پایگاه جغرافیایی فایل به نام Database.gdb، یک مجموعه داده ویژگی به نام Polygons و دو کلاس ویژگی چندضلعی است.

# Import modules and set workspace import arcpy, os home = "C:/Data" arcpy.env.workspace = home # Script parameters in_fc = "route.shp" out_fc = "points9.shp" interval = 500 use_percent = False end_points = True # Create output feature class desc = arcpy.Describe(in_fc) sr = desc.spatialReference arcpy.CreateFeatureclass_management(home, out_fc, "POINT", "", "", "", sr) # Add a field to transfer FID from input fid_name = "NEW_ID" arcpy.AddField_management(out_fc, fid_name, "LONG") # Create new points based on input lines with arcpy.da.SearchCursor(in_fc, ["SHAPE@", "OID@"]) as search_cur: with arcpy.da.InsertCursor(out_fc, ["SHAPE@", fid_name]) as insert_cur: for row in search_cur: line = row[0] if line: if end_points: insert_cur.insertRow([line.firstPoint, row[1]]) cur_length = interval max_position = 1 if not use_percent: max_position = line.length while cur_length < max_position: insert_cur.insertRow( [line.positionAlongLine(cur_length, use_percent), row[1]]) cur_length += interval if end_points: insert_cur.insertRow([line.lastPoint, row[1]])

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

نکته پایانی این است که زمان و تلاشی که برای نوشتن یک اسکریپت صرف می شود، معمولاً با صرفه جویی در زمان ناشی از استفاده از اسکریپت برای خودکارسازی کارهای تکراری جبران می شود.

مثال 2: ایجاد نقاط در امتداد یک خط

مثال بعدی از نظر کد پایتون کمی پیچیده تر است. مثال یک کلاس ویژگی حاوی یک یا چند خط را در نظر بگیرید. وظیفه این است که نقاط جدیدی را در امتداد هر چند خط در فواصل منظم ایجاد کنید. این نیاز به خواندن هندسه هر ویژگی و ایجاد نقاط جدید بر اساس ویژگی های هندسه نسبت به فاصله دارد. شکل نمونه ای از نقاط با فاصله منظم در امتداد یک چند خط را نشان می دهد تا نشان دهد که اسکریپت پایتون چه کاری انجام می دهد.

# Import modules and set workspace import arcpy, os home = "C:/Data" arcpy.env.workspace = home # Script parameters in_fc = "route.shp" out_fc = "points9.shp" interval = 500 use_percent = False end_points = True # Create output feature class desc = arcpy.Describe(in_fc) sr = desc.spatialReference arcpy.CreateFeatureclass_management(home, out_fc, "POINT", "", "", "", sr) # Add a field to transfer FID from input fid_name = "NEW_ID" arcpy.AddField_management(out_fc, fid_name, "LONG") # Create new points based on input lines with arcpy.da.SearchCursor(in_fc, ["SHAPE@", "OID@"]) as search_cur: with arcpy.da.InsertCursor(out_fc, ["SHAPE@", fid_name]) as insert_cur: for row in search_cur: line = row[0] if line: if end_points: insert_cur.insertRow([line.firstPoint, row[1]]) cur_length = interval max_position = 1 if not use_percent: max_position = line.length while cur_length < max_position: insert_cur.insertRow( [line.positionAlongLine(cur_length, use_percent), row[1]]) cur_length += interval if end_points: insert_cur.insertRow([line.lastPoint, row[1]])

توجه: یک ابزار موجود در ArcGIS Pro به نام Generate Points Along Lines وجود دارد که این کار را انجام می دهد. این ابزار geoprocessing یک ابزار اسکریپت است که در پایتون نوشته شده است. اسکریپت مورد استفاده در اینجا نسخه ساده شده این ابزار اسکریپت به منظور تصویرسازی است.

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

# Import modules and set workspace

import arcpy, os

home = “C:/Data”

arcpy.env.workspace = home

# Script parameters

in_fc = “route.shp”

out_fc = “points9.shp”

interval = 500

use_percent = False

end_points = True

# Create output feature class

desc = arcpy.Describe(in_fc)

sr = desc.spatialReference

arcpy.CreateFeatureclass_management(home, out_fc, “POINT”,

“”, “”, “”, sr)

# Add a field to transfer FID from input

fid_name = “NEW_ID”

arcpy.AddField_management(out_fc, fid_name, “LONG”)

# Create new points based on input lines

with arcpy.da.SearchCursor(in_fc, [“SHAPE@”, “OID@”]) as search_cur:

with arcpy.da.InsertCursor(out_fc, [“SHAPE@”,

fid_name]) as insert_cur:

for row in search_cur:

line = row[0]

if line:

if end_points:

insert_cur.insertRow([line.firstPoint, row[1]])

cur_length = interval

max_position = 1

if not use_percent:

max_position = line.length

while cur_length < max_position:

insert_cur.insertRow(

[line.positionAlongLine(cur_length,

use_percent), row[1]])

cur_length += interval

if end_points:

insert_cur.insertRow([line.lastPoint, row[1]])

همین کد نیز به عنوان یک اسکریپت تکمیل شده در ویرایشگر پایتون نشان داده می شود.

 

باز هم، هیچ انتظاری وجود ندارد که در این مرحله به طور کامل کد را درک کنید، اما احتمالاً می توانید عناصری را که آشنا به نظر می رسند، به ویژه با کمک نظرات شناسایی کنید.

این نمونه اسکریپت طولانی تر و پیچیده تر از نمونه اول است. اگر قبلا با پایتون یا سایر زبان های برنامه نویسی کار نکرده اید، این کد می تواند ترسناک به نظر برسد. با این حال، هدف این کتاب این است که شما را با سینتکس پایتون و منطق پشت آن برای انجام وظایف در ArcGIS Pro آشنا کند. مهارت های خاص لازم برای نوشتن این اسکریپت نمونه در فصل های 8 و 9 توضیح داده شده است. در پایان کتاب، شما می توانید نه تنها این اسکریپت را درک کنید، بلکه می توانید اسکریپت هایی با پیچیدگی مشابه بنویسید. با هر فصل، مهارت‌های شما به تدریج افزایش می‌یابد، از نوشتن اولین خط کد تا نوشتن اسکریپت‌های پیچیده که گردش‌های کاری را در ArcGIS Pro خودکار می‌کند.

حتی اگر تازه شروع به یادگیری نحوه نوشتن اسکریپت‌های پایتون کرده‌اید، می‌توانید از این مثال‌ها بهره‌مند شوید، زیرا این مثال‌ها بینشی را در مورد اینکه چرا در وهله اول باید چنین اسکریپت‌هایی را توسعه دهید، ارائه می‌دهند. شاید مدتی است که از ArcGIS Pro استفاده می‌کنید و به این فکر کرده‌اید که چرا ابزاری برای کار خاصی وجود ندارد. یا یک گردش کاری ایجاد کرده اید که به کارهای تکراری زیادی نیاز دارد و به دنبال راهی برای خودکارسازی مراحل هستید. داشتن انگیزه قوی برای توسعه یک فیلمنامه خاص، با شروع یادگیری اصول نوشتن فیلمنامه، کار را آسان تر می کند.

هنگامی که اصول استفاده از پایتون برای نوشتن اسکریپت ها را یاد گرفتید، متوجه خواهید شد که یکی از بهترین راه ها برای ادامه یادگیری اسکریپت نویسی پایتون، کار با کدهای موجود است. استفاده از کد مثال می تواند روند نوشتن اسکریپت های خود را نیز سرعت بخشد. به زودی در راه نوشتن اسکریپت هایی خواهید بود که گردش کار شما را خودکار می کند.

 

آموزش برنامه نویسی GIS با پایتون

نکاتی که باید به خاطر بسپارید

  • ArcGIS Pro از استفاده از اسکریپت برای خودکارسازی گردش کار پشتیبانی می کند. پایتون بهترین زبان برنامه نویسی برای کار با ArcGIS Pro است.
  • پایتون توسط Esri ساخته نشده است. این یک زبان برنامه نویسی منبع باز است و بنابراین می تواند به صورت رایگان توسط اشخاص ثالث از جمله Esri توزیع شود.
  • استفاده از پایتون آسان است. جامعه کاربری بزرگی وجود دارد و منابع زیادی برای یادگیری پایتون وجود دارد. همچنین مجموعه‌ای از بسته‌ها برای استفاده در پایتون وجود دارد که عملکردهای اضافی را ارائه می‌کنند.
  • ArcGIS Pro با Python 3 کار می کند، در حالی که ArcGIS Desktop 10.x با Python 2 کار می کند. این کتاب فقط استفاده از ArcGIS Pro و Python 3 را پوشش می دهد. عنوان Esri Press Python Scripting برای ArcGIS استفاده از Python 2 و ArcGIS Desktop 10 را پوشش می دهد. ایکس.
  • یکی از نقاط قوت پایتون این است که هم زبان برنامه نویسی است و هم زبان برنامه نویسی. می توانید از آن برای اسکریپت های نسبتاً ساده و همچنین برای کارهای برنامه نویسی پیشرفته تر استفاده کنید. استفاده از پایتون برای توسعه اسکریپت برای ArcGIS Pro تمرکز این کتاب است.
  • پایتون یک زبان تفسیری است، به این معنی که نیازی به کامپایل ندارد. اسکریپت‌های پایتون مستقیماً از کد منبع اجرا می‌شوند و کار با پایتون را آسان‌تر و قابل حمل‌تر از کد در زبان‌های کامپایل‌شده مانند سی شارپ می‌کنند.
  • یکی از بهترین راه ها برای ادامه یادگیری اسکریپت نویسی پایتون، بررسی آثار منتشر شده توسط دیگران است. نمونه‌های منتشر شده زیادی از اسکریپت‌های پایتون برای ArcGIS Pro وجود دارد.

شرایط کلیدی

• backporting
• backward compatibility
• cross-platform
• data type
• free and open-source software (FOSS)
• interpreted language
• object oriented
• object-oriented programming (OOP)
• programming language
• script
• scripting language
• system language
• syntax

سوالات را مرور کنید

  • برخی از ویژگی های کلیدی پایتون که آن را به عنوان یک زبان برنامه نویسی برای کار با ArcGIS Pro مناسب می کند چیست؟
  • این که پایتون یک زبان تفسیری است به چه معناست؟
  • برخی از تفاوت های برنامه نویسی و برنامه نویسی چیست؟
  • کدام نسخه از پایتون با ArcGIS Pro استفاده می شود؟
  • برخی از دلایل صرف زمان و تلاش برای یادگیری پایتون چیست؟
  • هدف اصلی از توسعه اسکریپت برای ArcGIS Pro با استفاده از پایتون چیست؟

آموزش برنامه نویسی GIS با پایتون

آموزش arcgis

بدون دیدگاه

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