پایتون و GIS : زبان برنامه نویسی جذاب ، محبوب و کاربردی:پایتون یک زبان محبوب برای برنامه نویسی جغرافیایی و توسعه برنامه است. این مدخل یک نمای کلی از حالت های مختلف توسعه که می تواند برای برنامه نویسی GIS با پایتون اتخاذ شود ارائه می دهد و تاریخچه پذیرش پایتون در جامعه GIS را مورد بحث قرار می دهد. لایههای مختلف پشته توسعه جغرافیایی در پایتون مورد بررسی قرار میگیرند و به خواننده درکی از وسعتی که پایتون به توسعهدهنده GIS ارائه میدهد، میدهد. پیشرفتهای آتی و مسائل گستردهتر مربوط به قابلیت همکاری و اکوسیستمهای برنامهنویسی شناسایی میشوند.
- تعاریف
- پایتون برای GIS
- حالت های توسعه جغرافیایی با پایتون
- پشته توسعه geospatial Python
- تحولات آینده
پشته توسعه : گروهی از برنامه های نرم افزاری که برای دستیابی به یک نتیجه خاص یا انجام یک کار تحلیلی خاص با هم کار می کنند.
زبان تفسیر شده : یک زبان برنامه نویسی که در آن دستورالعمل های آن مستقیماً بدون کامپایل قبلی در دستورالعمل های زبان ماشین اجرا می شود.
نرمافزار متنباز : کد نرمافزاری که بهطور رایگان در دسترس است و ممکن است تغییر و توزیع شود
پایتون یک زبان تفسیری منبع باز و شی گرا است که توسط Guido von Rossum در سال 1991 ایجاد شد. این محبوبیت از ویژگی های جذاب این زبان ناشی می شود. اول، پایتون به عنوان یک زبان چند پارادایم از برنامه نویسی ساخت یافته و شی گرایی پشتیبانی می کند. دوم، پایتون یک زبان تفسیر شده است که خود را به چرخه های نمونه سازی سریع و توسعه می دهد. Core Python خود به زبان C نوشته شده است و این امر اجرای پایتون را در بسیاری از پلتفرم ها و سیستم عامل ها فعال کرده است. کتابخانه استاندارد غنی و همه کاره، پایتون را برای بسیاری از پروژه ها مناسب می کند.
GIScience یکی از بسیاری از رشته های علمی است که پایتون در آن مخاطبان پذیرایی پیدا کرده است. از منظر علمی، تاکید بر خوانایی، پشتیبانی بین پلتفرمی و هزینه های کم راه اندازی، پایتون را به زبانی عالی برای همکاری بین دانشمندان GIS تبدیل کرده است. برخی از همین ویژگیها، پایتون را به عنوان یک زبان فوقالعاده برای آموزش مفاهیم GIScience قرار میدهند، در واقع پایتون به طور فزایندهای به عنوان زبان اول در برنامههای درسی علوم کامپیوتر استفاده میشود. پایتون یک زبان اول عالی است، با این حال، این نباید به این معنا باشد که دامنه آن محدود است، زیرا بسیاری از برنامههای کاربردی در مقیاس بزرگ و پرکاربرد در پایتون پیادهسازی شدهاند که نمونه بارز آن Dropbox است.
با توجه به محبوبیت روزافزون آن، این مدخل ابتدا یک نمای کلی از حالت های مختلف توسعه که می توانند برای برنامه نویسی GIS با پایتون اتخاذ شوند ارائه می دهد و تاریخچه پذیرش پایتون در جامعه GIS را مورد بحث قرار می دهد. این کار با بررسی پشته برنامه نویسی GIS دنبال می شود تا به خواننده درکی از وسعتی که پایتون به توسعه دهنده GIS ارائه می دهد، بدهد. این نتیجهگیری پیشرفتهای احتمالی آینده و موضوعات گستردهتر مربوط به قابلیت همکاری و اکوسیستمهای برنامهنویسی را مورد بحث قرار میدهد.
3. حالت های توسعه جغرافیایی با پایتون
Python به عنوان یک زبان برنامه نویسی انعطاف پذیری را در حالت های مختلف توسعه برای برنامه نویسی جغرافیایی ارائه می دهد. اینها می توانند به شکل استفاده از پایتون برای گسترش عملکرد یک GIS دسکتاپ، توسعه یک برنامه کاربردی دسکتاپ مستقل کامل برای تجزیه و تحلیل مکانی تخصصی، و استفاده از پایتون برای اسکریپت نویسی علمی و محاسبات تعاملی در یک محیط پوسته باشد.
3.1 برنامه های دسکتاپ
پایتون نقش اصلی را برای برنامه های دسکتاپ Geospatial ایفا می کند. از نسخه 9.0 ArcGIS، Esri پایتون را به عنوان یک زبان برنامه نویسی اصلی گنجانده است. بسته ArcPy آن یک رابط برای ابزارها، توابع، کلاسها و ماژولهای ژئوپردازش فراهم میکند. یک تابع arcpy یک بخش خاصی از عملکرد را تعریف می کند، به عنوان مثال، توابعی برای فهرست کردن مجموعه داده های خاص، دسترسی به ویژگی های یک مجموعه داده و به روز رسانی پایگاه های جغرافیایی وجود دارد. علاوه بر این، اسکریپتهای پایتون را میتوان در داخل ArcGIS یا خارج از ArcGIS استفاده کرد، و جعبههای ابزار Python اضافی را میتوان با استفاده از ماژول distutils پایتون توسعه و بین کاربران ArcGIS توزیع کرد.
بسته متن باز GIS QGIS از Python به عنوان یک زبان برنامه نویسی به روش های مختلف استفاده می کند. یک کنسول پایتون از طریق رابط کاربری گرافیکی QGIS (GUI) برای ارائه یک پوسته تعاملی که می تواند برای اسکریپت نویسی جلسه موجود استفاده شود، در دسترس است. این از آزمایش با QGIS API پشتیبانی می کند و به کاربر اجازه می دهد تا یک گردش کاری ایجاد کند که در نهایت می تواند به عنوان یک اسکریپت برای استفاده مجدد بعدی ذخیره شود.
پایتون همچنین برای توسعه چارچوب پردازش به عنوان بخشی از QGIS استفاده شده است. این یک محیط ژئوپردازش است که می تواند برای اجرای الگوریتم های بومی یا خارجی/شخص ثالث از داخل QGIS استفاده شود. شکل 1 نمونه ای از استفاده از ابزار PySAL را از داخل جعبه ابزار پردازش برای انجام تجزیه و تحلیل نقطه داغ متغیر محرومیت از منابع در سال 1990 برای شهرستان های جنوبی ایالات متحده نشان می دهد.
علاوه بر این دو بسته GIS دسکتاپ، پایتون برای توسعه سایر برنامههای کاربردی مستقل جغرافیایی استفاده شده است. نمونه های اصلی مربوط به پروژه PySAL هستند و عبارتند از: GeoDaSpace، بسته ای برای تحلیل رگرسیون فضایی. بازیگران: تجزیه و تحلیل جرم در فضا-زمان. و STARS (تحلیل فضا-زمان سیستم های منطقه ای). این بستهها با استفاده از پایتون توسعه یافتهاند و قابلیتهای جغرافیایی پیشرفته را در داخل یک رابط کاربری گرافیکی قرار میدهند. این برنامه ها به دلیل وجود کتابخانه های علمی متعدد در دسترس برای پایتون که در زیر خلاصه می شوند امکان پذیر است.
3.2 برنامه ریزی فضایی محاسباتی تعاملی
بسیاری از مواقع در محاسبات علمی، محققان برای بیان ایده های خود، نمونه اولیه یا برای کاوش داده ها کد می نویسند. این نوع برنامهنویسی فرصتطلبانه نیازمند یک محیط محاسباتی انعطافپذیر برای تسهیل اکتشاف باز است. اکوسیستم پایتون مجموعه ای غنی از ابزارها را برای این نوع محاسبات علمی تعاملی ارائه می دهد.
IPython مفسر تعاملی پایتون را گسترش می دهد تا یک محیط پوسته جامع برای محاسبات تعاملی و اکتشافی فراهم کند. IPython با ویژگی های غنی، تکمیل تب، درون نگری شی، تاریخچه فرمان و دسترسی به پوسته سیستم عامل را ارائه می دهد که منجر به یک مفسر برتر برای محاسبات علمی نسبت به مفسر داخلی پایتون می شود.
پروژه IPython تکامل یافته و Jupyter را به وجود آورده است. نوت بوک Jupyter رویکرد مبتنی بر کنسول را به محاسبات تعاملی با ارائه یک برنامه کاربردی مبتنی بر وب که می تواند کل فرآیند محاسبات علمی از توسعه کد، مستندسازی و اجرای تا ارائه و انتشار واقعی نتایج را در بر گیرد، گسترش می دهد. ژوپیتر از دو جزء تشکیل شده است. اولین ابزار یک ابزار مبتنی بر مرورگر است که متن، کد و رسانه های غنی را برای پشتیبانی از نگارش تعاملی اسناد علمی ترکیب می کند. مؤلفه دوم سند نوت بوک است که رمزگذاری واقعی تمام محتوایی است که در برنامه وب قابل مشاهده است. اسناد نوت بوک به عنوان نشانه گذاری شی جاوا اسکریپت (JSON) پیاده سازی می شوند که کنترل نسخه و اشتراک گذاری با همکاران را تسهیل می کند.
4. پشته توسعه جغرافیایی پایتون
توسعه جغرافیایی طیف گسترده ای از وظایف را پوشش می دهد. برای ارائه یک نمای کلی از پشته برنامه ریزی جغرافیایی در پایتون، جدول 1 بسته های انتخابی را از هر لایه در پشته خلاصه می کند. بستههای انتخابشده برای هر نوع عملکرد، محبوبتر هستند یا معمولاً با آنها مواجه میشوند، و باید در نظر داشت که فهرست از نظر پوشش کامل نیست، بلکه هدف آن ارائه یک اشارهگر اولیه برای توسعهدهندگان پایتون است که به دنبال انجام یک کار خاص هستند. .
لایه |
بسته |
شرح |
WWW |
اطلاعات مکانی IO | gdal | رابط به کتابخانه انتزاع داده های جغرافیایی | https://pypi.python.org/pypi/GDAL/ |
فیونا | لایه API به OGR (بردار) GDAL | http://toblerity.org/fiona/ | |
شطرنجی | خواندن و نوشتن داده های شطرنجی جغرافیایی | https://github.com/mapbox/rasterio | |
ژئوپردازش | خوش فرم | تحلیل فضایی قطعی | http://toblerity.org/shapely |
رستراستات | خلاصه کردن رسترها با استفاده از هندسه برداری | https://github.com/perrygeo/python-rasterstats | |
ژئوپاندها | عملیات فضایی پاندا مانند در انواع هندسی | http://geopandas.org | |
pyproj | رابط PROJ4 برای تحولات نقشه برداری | https://github.com/jswhit/pyproj | |
ژئو تجسم | نقشه اصلی | ترسیم داده های دو بعدی روی نقشه ها | https://github.com/matplotlib/basemap |
کارتوپی | ابزارهای نقشه کشی | http://scitools.org.uk/cartopy | |
فولیوم | تجسم از طریق نقشه های بروشور تعاملی | https://github.com/python-visualization/folium | |
بوکه | مرورگرهای کتابخانه تجسم تعاملی | https://github.com/bokeh | |
دیتاشادر | خط لوله گرافیکی تجسم داده های بزرگ | https://github.com/bokeh/datashader | |
تجزیه و تحلیل آماری فضایی | PySAL | تجزیه و تحلیل داده های مکانی | http://pysal.org |
pykriging | زمین آمار | http://pykriging.com/ | |
مدلسازی فضایی | مسا | مدل سازی مبتنی بر عامل | https://github.com/projectmesa |
چرخیدن | مدل سازی تعامل فضایی | https://github.com/pysal/pysal/tree/master/pysal/contrib/spint | |
خوشه ای | خوشه بندی محدود فضایی | http://www.rise-group.org/zonificando-la-ciudad-por-perfil-de-clientes-copy/ | |
وب و توزیع شده | OWSlib | رابط برنامه نویسی مشتری به سرویس وب OGC | https://geopython.github.io/OWSLib/ |
Stetl | جریان ETL برای داده های مکانی | http://www.stetl.org/en/latest/ |
جدول 1. پشته برنامه نویسی زمین فضایی پایتون
4.1 ورودی/خروجی داده های مکانی
تمام تحلیل های مکانی با خواندن داده های مکانی آغاز می شود. یکی از ویژگیهای متمایز کلیدی انجام تجزیه و تحلیل دادههای مکانی، تنوع غنی فرمتهای دادههای مکانی است. این یک چالش بزرگ برای توسعهدهنده فضای مکانی است، زیرا بستههای یکاندازه برای همه یافت نمیشوند.
همانطور که برای بسیاری از بستههای موجود در پشته جغرافیایی رایج است، رویکردی که برای پیادهسازی ورودی (و خروجی) فایل انجام میشود، بستهبندی کتابخانههای C موجود است که به طور گسترده برای هدف مورد استفاده استفاده میشوند. در این مورد، کتابخانه هدف، کتابخانه انتزاعی دادههای مکانی (GDAL) است که به مترجمان امکان خواندن و نوشتن دادههای فضایی شطرنجی و برداری را میدهد. در پشته پایتون، دو کتابخانه مختلف توسعه داده شده است که این مؤلفه ها را هدف قرار می دهند. فیونا بر روی عملکرد OGR (بردار) تمرکز می کند، در حالی که رستریو یک پوشش مشابه برای افشای عملکرد شطرنجی GDAL ارائه می دهد. این امکان خواندن و نوشتن فرمت هایی مانند GeoTIFF را از طریق یک API پایتون فراهم می کند که برای محاسبه کارآمد بر آرایه های ND numpy متکی است.
4.2 ژئوپردازش
هنگامی که داده های مکانی در حافظه خوانده می شوند، انواع عملیات هندسی و دستکاری ها برای پردازش بعدی در دسترس هستند. برای داده های برداری، اینها به شکل عملیات نظری مجموعه و دستکاری ویژگی های مسطح هستند. بسته Shapely کتابخانه geos را برای بافر، تقاطع، اتساع، تفکیک و مجموعه ای از انواع دیگر عملگرهای فضایی بر روی اشیاء برداری می پوشاند . قابلیت های کانونی، منطقه ای و خلاصه سازی رسترها توسط بسته rasterstats ارائه شده است. Rasterstatsهمچنین می تواند از پرس و جوی رسترها با استفاده از هندسه های برداری پشتیبانی کند. برای مثال، یک توسعهدهنده میتواند ارتفاع را از یک DEM ذخیره شده در یک فایل TIF بر اساس یک شی بردار نقطه پیدا کند، یا آمار خلاصهای برای ارتفاع در محدوده یک شی چند ضلعی (یعنی میانگین، حداکثر، std ارتفاع در یک منطقه) ایجاد کند. .
هر دو مجموعه از این عملیات فضایی معمولاً در مورد استفاده از استخراج متغیرهای فضایی جدید مواجه می شوند. سپس اینها در بالاترین سطح در پشته جغرافیایی برای تجزیه و تحلیل آماری مورد استفاده قرار می گیرند. بسته های موجود در پشته ژئوپردازش (یعنی فیونا و شکل) به تنهایی برای پوشش دادن تجزیه و تحلیل آماری بعدی اشیاء/لایه های مشتق شده در نظر گرفته نشده اند. در عوض، آنها به عنوان اجزای حیاتی یک خط لوله جغرافیایی در نظر گرفته می شوند که در آن بسته های مختلف برای اجرای یک گردش کاری خاص به هم زنجیر شده اند. ژئوپاندای بسته را می توان راهی برای تسهیل این نوع گردش کار و خط لوله در نظر گرفت. این متکی به قابلیت های فیونا و خوش فرم برای پردازش جغرافیایی است، اما از بسته دستکاری داده های عمومی محبوب الهام می گیرد.pandas که بهترین کتابخانه برای پردازش داده ها در پشته محاسباتی پایتون است.
برای اینکه داده ها از فرمت ها و منابع مختلف به درستی هماهنگ و یکپارچه شوند، قابلیت تبدیل بین سیستم های مرجع مختصات مختلف از طریق بسته pyproj ارائه می شود. pyproj یک بسته بندی Cython است که یک رابط Python به کتابخانه PROJ.4 برای تبدیل های نقشه برداری و محاسبات زمین شناختی ارائه می دهد.
4.3 تجسم و نقشه برداری
تجسم و نگاشت دادههای مکانی در پایتون منشأ خود را در نقشهبرداری در مقیاس جهانی پیادهسازی شده در نقشه پایه بسته داشت . Basemap به خودی خود رسم واقعی را پیاده سازی نمی کند، اما برای تبدیل مختصات به یک طرح ریزی نقشه خاص به Proj4.C متکی است و سپس از matplotlib ، کتابخانه تجسم اولیه در پایتون، برای انجام رسم واقعی خطوط، تصاویر یا اشیاء برداری در نقشه استفاده می کند. مختصات پیش بینی شده مبدأ Basemap در پشتیبانی از اقیانوسشناسی و هواشناسی بود و در طول زمان عملکرد آن برای پشتیبانی از سایر رشتهها از زیستشناسی گرفته تا زمینشناسی و ژئوفیزیک تکامل یافته است.
cartopy بسته ای است که هدف آن ترسیم آسان نقشه ها برای تجزیه و تحلیل و تجسم داده ها است. این یک رویکرد شی گرا برای تعریف پیش بینی های نقشه اتخاذ می کند و یک رابط ساده و بصری برای تجسم از طریق matplotlib ارائه می دهد. cartopy هم به PROJ.4 برای عملکرد طرح ریزی خود و هم به شکل شکل برای خواندن فایل های شکل متکی است. Cartopy همانند نقشه پایه ، ابتدا برای حمایت از تحقیقات هواشناسی ایجاد شد، اما برای پشتیبانی از نقشه برداری در طیف گسترده ای از حوزه های علمی گسترش یافته است.
در حالی که هم نقشه پایه و هم کارتوپی با matplotlib برای تجسم رابط کاربری دارند ، تعدادی از بسته های نقشه برداری پایتون، مرورگرهای وب را به عنوان پلتفرم برای تجسم هدف قرار می دهند. Folium یکی از اولین آنها است که یک رابط پایتون را برای کتابخانه جاوا اسکریپت بروشور برای نگاشت تعاملی مبتنی بر وب فراهم می کند. Folium همچنین شامل پیشرفت هایی از چارچوب Vincent/Vega برای آوردن نشانگرها و نمودارهای تقویت شده به تجسم مکانی است. اینترفیس فولیوم با تعدادی از سرویسهای مجموعه محبوب از جمله OpenStreetMap ، Mapbox ، و Stamen با پشتیبانی از GeoJSONو فرمت های داده های مکانی TopoJSON .
اگرچه آنها به طور خاص برای نقشه برداری و تصویرسازی جغرافیایی طراحی نشده اند، دو بسته تجسمی اخیر پایتون در اینجا گنجانده شده اند. بوکه شبیه فولیوم است که مرورگرهای وب مدرن را برای تجسم هدف قرار می دهد. این کار را از طریق سبک کتابخانه D3.js برای تجسم مبتنی بر داده، با تأکید بر تعامل با کارایی بالا برای مجموعه داده های بزرگ انجام می دهد. Datashader یکی از اجزای Bokeh است که یک خط لوله گرافیکی برای ارائه نمایش مجموعه داده های عظیم از طریق binning، تجمع و تبدیل پیاده سازی می کند. قابل توجه است که قابلیت های چشمگیر Datashader اغلب دارای کاربردهای مکانی است (https://github.com/bokeh/datashader ).
قبل از خروج از لایه تجسم پشته زمین فضایی پایتون، دو نکته اضافی باید ذکر شود. اول، تمرکز فعالی در جامعه علمی پایتون بر روی نقشه های رنگی موثر برای تجسم علمی وجود دارد. این کار با نقشهنگارانی که طرحهای رنگی را برای نقشهبرداری choropleth طراحی میکنند، تلاقی میکند. در دنیای پایتون، بستههای محبوب پالتپذیر و نقشه رنگی هستند . دوم، مؤلفه تجسم پشته علمی پایتون به سرعت در حال تکامل است، بنابراین خوانندگان تشویق می شوند از این بخش به عنوان نقطه ورودی استفاده کنند نه مقصد نهایی.
4.4 تجزیه و تحلیل آماری فضایی
PySAL کتابخانه ای از توابع تحلیل فضایی برای داده های مکانی است. این شامل ماژول هایی است که تجزیه و تحلیل داده های فضایی اکتشافی را پوشش می دهد که شامل معیارهای جهانی و محلی همبستگی خودکار فضایی – روش های محبوب برای تشخیص خوشه بندی فضایی و نقاط داغ است. PySAL همچنین عملکردی برای رگرسیون فضایی، تحلیل فضا-زمان، منطقهبندی، طبقهبندی نقشه و مجموعهای از ماژولهای ژئومحاسباتی را فراهم میکند. PySAL در زمانی شروع شد که تعداد بسیار کمی از پشته پایتون زمینفضایی وجود داشت و به این ترتیب، از روی ضرورت، قابلیتهایی را برای سطوح پایینتر پشته نیز دارد. با گذشت زمان، PySAL ماژول هایی را اضافه کرده است که با بسیاری از بسته های جدیدتر دیگر در پشته (شکل، ژئوپاندا، کارتوپی و غیره) ارتباط برقرار می کنند.
PySAL در درجه اول بر فرمت های فضایی برداری متمرکز است و تجزیه و تحلیل آماری برای ویژگی های مرتبط با چند ضلعی ها، نقاط و شبکه ها را پوشش می دهد. تجزیه و تحلیل داده های زمین آماری با تجزیه و تحلیل آماری زمینه هایی که معمولاً در علوم زمین با آن مواجه می شوند همراه است که در آن پدیده هایی مانند دما، بارش، کیفیت هوا به عنوان یک سطح با استفاده از روش هایی مانند کریجینگ و رویکردهای مختلف درون یابی فضایی مدل می شوند. هدف در بسیاری از این کار، تولید پیشبینیهایی برای زنجیرهای از مکانها بر اساس مجموعهای مجزا از مکانهای مشاهدهشده برای فرآیند در دست است. در پشته پایتون، زمین آمار منطقه ای است که تا به امروز توسعه نیافته است، زیرا چند پروژه شروع شده اما توسعه متناوب وجود داشته است – یکی از نمونه ها pykriging است.
4.5 مدلسازی فضایی
Mesa بسته ای است که عملکردی را برای توسعه و اعمال مدل های مبتنی بر عامل پیاده سازی می کند. این مدلها را میتوان برای شبیهسازی عوامل مستقل که با قوانین رفتاری در یک طرحبندی شبکهای تجسم یافتهاند، برای ارزیابی تأثیرات رفتارها و تعاملات آنها بر روی سیستم بهعنوان یک کل استفاده کرد. مثال کلاسیک ABM، مدل تفکیک شلینگ است که به عنوان نمایش کلیدی در بسته Mesa نشان داده شده است.
Clusterpy کتابخانه ای از الگوریتم های خوشه بندی محدود فضایی را فراهم می کند که می تواند برای گروه بندی مناطق یا نقاط جغرافیایی اولیه در تعداد کمتری از مناطق برای تجزیه و تحلیل بعدی استفاده شود. به عنوان مثال، در ژئودموگرافیک، مناطق سرشماری را می توان بر اساس شباهت اجتماعی-اقتصادی و همچنین مجاورت جغرافیایی تعریف کرد. گنجاندن محدودیت دوم، منطقهبندی را از خوشهبندی چند متغیره عمومیتر متمایز میکند.
4.6 وب و توزیع شده
به طور فزایندهای، گردشهای کاری علمی به سمت چارچوبهای مبتنی بر وب و توزیع شده در حال حرکت هستند و تحلیل فضایی نیز از این قاعده مستثنی نیست. در اینجا کتابخانههایی که میانافزاری را فراهم میکنند که عملکردهای تحلیلی و پردازشی مختلف را بهعنوان سرویسهای جداگانه به یکدیگر پیوند میدهند. در پشته زمین فضایی پایتون، تعداد فزایندهای از بستهها، مشخصات کنسرسیوم فضایی باز را برای تسهیل پردازش و تحلیل جغرافیایی مبتنی بر وب پیادهسازی میکنند. Stetl یک جعبه ابزار برای استخراج، تبدیل، و بارگذاری (ETL) داده های مکانی ارائه می دهد. OWSlib استانداردهای کلیدی OGC را از طریق یک رابط پایتونیک از جمله سرویس نقشهبرداری وب (WMS)، سرویس ویژگی وب (WFS)، زبان مدل حسگر (SensorML) و WaterML در میان 17 سرویس دیگر پیادهسازی میکند. هم Stetl و همOWSlib بخشی از سازمان GeoPython است که پروژه های جغرافیایی متعددی را توسعه می دهد.
4.7 ملاحظات بسته
بسته های فهرست شده در جدول 1 تنها کسری از آنچه را که در دسترس توسعه دهندگان زمین فضایی کار می کنند در پایتون نشان می دهد. همچنین باید در نظر داشت که قرار دادن یک بسته در یک لایه خاص تا حدودی سیال است زیرا یک بسته خاص ممکن است عملکردی را داشته باشد که چندین لایه پشته را در بر می گیرد. به عنوان مثال، از آنجایی که Geopandas دارای fiona و PySAL در بین وابستگیهای خود است، میتواند از طریق فضای نام خود دسترسی به عملکرد اصلی آن بستهها را فراهم کند. غنا و تنوع بسته های جغرافیایی گواهی بر نقاط قوت اصلی پشته محاسباتی علمی در پایتون است که در آن بسته هایی مانند numpy و scipyهمراه با توانایی های توسعه اکوسیستم پایتون خود یک الگوی توسعه عالی را فراهم می کند. همچنین، بستههایی در پشته علمی گستردهتر پایتون وجود دارد که میتوان از آنها برای پیادهسازی عملکرد جغرافیایی استفاده کرد. برای مثال، network-x روشهای زیادی را برای تجزیه و تحلیل شبکهها و نمودارها ارائه میکند، در حالی که scikit-image یک کتابخانه قدرتمند برای تجزیه و تحلیل تصویر است.
چند مسئله وجود دارد که توسعه دهندگان GIS باید در نظر داشته باشند، به ویژه هنگام توسعه برنامه های GIS با پایتون برای پلتفرم های مختلف. یک مسئله کلیدی مدیریت نصب پایتون در کنار بسته های شخص ثالث است. هر دو ArcGIS و QGIS مفسرهای پایتون خود را در دایرکتوری هایی که مخصوص آن برنامه ها هستند نصب می کنند. اگر توسعهدهنده نصبهای پایتون دیگری را روی همان دستگاه داشته باشد، بهویژه زمانی که نوبت به نصب بستههای اضافی میرسد، میتواند منبع سردرگمی باشد. پایتون چندین رویکرد برای مدیریت بسته ارائه می دهد ( پیپ اصلی ترین است) و توزیع های پایتون مانند Anaconda و Enthought نیز مدیران بسته خود را ارائه می دهند.
پایتون و اکوسیستم نرم افزار GIS مرتبط بسیار فعال هستند و در حال رشد مداوم هستند. برای افزایش مهارت، مهم است که با این پیشرفتها همراه باشید تا با بهرهگیری از پیشرفتهای خود زبان و بستههای موجود در اکوسیستم گستردهتر، جریانهای کاری همچنان جاری باشند. در حالی که پیشبینیها در مورد آینده همیشه چالش برانگیز هستند، بذرهای چند پیشرفت را میتوان در حال ظهور دید. اولین مورد تاکید روزافزون بر اهمیت قابلیت همکاری بین پایتون و زبان های دیگر است. بستههایی مانند RPy به رابطهای دوطرفه بین پایتون و R اجازه میدهند تا یک توسعهدهنده بتواند از نقاط قوت هر زبان در جریان کاری یکسان استفاده کند. این همچنین به گسترش دامنه برنامهنویسی GIScience کمک میکند.
حوزه مرتبطی که باید در جریان آن باشید مجموعه ابزارهایی است که با قرار دادن کتابخانه های خارجی نوشته شده به زبان های سطح پایین تر مانند C، C++ و Fortran، امکان گسترش پایتون را فراهم می کند. Cython ، numba و swig روش هایی را برای هدف قرار دادن تنگناها در پایگاه کد پایتون ارائه می کنند تا با کتابخانه های محاسباتی کارآمدتر جایگزین شوند. توسعه پذیری پایتون با استفاده از این ابزارها به این معنی است که نمونه سازی اولیه یک برنامه GIScience می تواند به پایتون خالص به شیوه ای کارآمد برای توسعه دهندگان تکیه کند. تنها پس از اجرای کامل عملکرد برنامه باید توجه به بهینه سازی ها معطوف شود و در بسیاری از موارد، این بخش کوچکی از پایه کد است. در این موارد، چارچوب های توسعه می توانند ارزشمند باشند.
دنیای محاسبات موازی و توزیع شده با کارایی بالا در دهه گذشته به طرز چشمگیری پیشرفت کرده است و اکوسیستم پایتون نمونه ای از این موضوع است. اگرچه پوشش جامع بستههای مرتبط فراتر از محدوده فعلی است (بستههایی برای محاسبات ابری، توزیعشده و با کارایی بالا در پایتون را میتوانید در https://wiki.python.org/moin/ParallelProcessing پیدا کنید )، یک بسته نمونه که باید به آن توجه کرد Dask است. . یک کتابخانه موازی انعطافپذیر برای محاسبات تحلیلی، Dask حول دو جزء ساخته شده است: زمانبندی کار پویا که بارهای کاری محاسباتی تعاملی را بهینه میکند، و مجموعههای کلان داده که پردازش خارج از حافظه یا توزیع شده آرایههای داده موازی و چارچوبهای داده را امکانپذیر میسازد.
چهارمین موضوع مهم، ظهور علم باز است. با تاکید بر نیاز به بهبود شفافیت، تکرارپذیری و تکرار، جنبش علوم باز منجر به انواع جدیدی از پارادایمهای توسعه مانند کانتینرهای Docker، محیطهای conda و نمایشگر نوتبوک میشود که امکان اشتراکگذاری قطعات کد و حتی گردشهای کاری کامل را فراهم میکند که تجزیه و تحلیل را بازتولید میکند. زیربنای یک مقاله علمی خاص آشنایی با این ابزارها برای توسعه Python GIS اهمیت فزاینده ای خواهد داشت.
علم باز همچنین مشابههایی در جنبشهای دولت باز و دادههای باز دارد که باعث شفافیت، اشتراکگذاری و استفاده مجدد از دادههای جمعآوریشده دولتی میشود. اینها پروژههای مشترکی را تقویت کردهاند که محققان دانشگاهی، دولت و صنعت را گرد هم میآورد تا راهحلهای محاسباتی مد با هدف قرار دادن مسائل اجتماعی و زیستمحیطی. با توجه به اینکه بسیاری از این پروژهها شامل دادههای مکانی و تجزیه و تحلیل هستند، دانشمندان GIS توانمند پایتون میتوانند نقش محوری در این تلاشها ایفا کنند.
جدول 1 را ببینید.
- نقش برنامه نویسی در علم GIS را توضیح دهید.
- حالت های مختلف توسعه Python GIS را توضیح دهید.
- آشنایی با پشته برنامه نویسی فعلی Python GIS را نشان دهید.
- دو مدل اصلی توسعه GIS با استفاده از پایتون چیست؟
- موارد استفاده برای برنامه نویسی پایتون در GIScience را شرح دهید.
- در مورد پوشش پردازش و تحلیل GIScience در اکوسیستم پایتون بحث کنید.
بهگت، ک. (2016). ملزومات توسعه جغرافیایی پایتون انتشارات PACKT.
وسترا، ای. (2016). توسعه زمین فضایی پایتون انتشارات PACKT. ویرایش سوم.
6 نظرات