خلاصه
پردازش یک چارچوب پایتون شی گرا برای سیستم اطلاعات جغرافیایی منبع باز محبوب QGIS است که یکپارچه سازی یکپارچه از ابزارهای پردازش جغرافیایی از انواع کتابخانه های نرم افزاری مختلف را فراهم می کند. در این مقاله، ما تاریخچه توسعه، معماری نرمافزار و ویژگیهای چارچوب پردازش را ارائه میکنیم که آن را به یک ابزار همه کاره برای توسعه الگوریتمهای پردازش جغرافیایی و گردش کار، و همچنین یک پلت فرم یکپارچهسازی کارآمد برای الگوریتمها از منابع مختلف تبدیل میکند. با استفاده از مثالهای کاربردی در دنیای واقعی، ما همچنین نحوه پردازش را نشان میدهیممعماری موارد استفاده معمولی از ژئوپردازش را در تحقیق و توسعه، مانند خودکارسازی و مستندسازی گردش کار، ترکیب الگوریتمها از کتابخانههای نرمافزاری مختلف، و همچنین توسعه و ادغام الگوریتمهای سفارشی، ممکن میسازد. در نهایت، ما در مورد اینکه چگونه پردازش میتواند تحقیقات تکرارپذیر را تسهیل کند و چشماندازی نسبت به اهداف توسعه آینده ارائه دهد، بحث میکنیم.
کلید واژه ها:
QGIS _ پایتون ؛ ژئوپردازش ; منبع باز ؛ معماری نرم افزار
1. معرفی
سیستمهای اطلاعات جغرافیایی (GIS ) به دلیل قابلیتهایشان برای یکپارچهسازی دادههای دیجیتال ناهمگن و ارائه تجزیه و تحلیل دادهها، و همچنین عملکرد تجسمیشان، پذیرش گستردهای در مدیریت دولتی، صنعت و بسیاری از رشتههای تحقیقاتی پیدا کردهاند . توسعه GIS از دو پارادایم توسعه اصلی پیروی می کند [ 3 ، 4 ]: مدل توسعه منبع باز یا منبع بسته (اغلب اختصاصی). در مدل منبع باز، کد منبع معمولاً تحت مجوز نرم افزار آزاد منتشر می شود که به کاربر چهار آزادی اساسی می دهد [ 5 ، 6]]: حقوق اجرای کد برای هر هدفی، مطالعه نحوه عملکرد کد و اصلاح آن، توزیع مجدد کپی ها و حتی توزیع مجدد کپی های اصلاح شده.
QGIS [ 7 ] (که قبلاً به عنوان Quantum GIS شناخته می شد) یکی از محبوب ترین GIS منبع باز با پایگاه کاربر رو به رشد و اهمیت فزاینده در بخش آموزش است (برای مثال به دوره های ارائه شده توسط [8، 9] مراجعه کنید ) . این یک GIS منبع باز چند منظوره است که می تواند برای ایجاد داده های مکانی، ویرایش، تجزیه و تحلیل و نقشه برداری استفاده شود. علاوه بر برنامه دسکتاپ GIS، پروژه QGIS همچنین سرور و برنامه های نقشه برداری وب مرتبط، و همچنین نسخه های سازگار با نیازهای دستگاه های تلفن همراه را ارائه می دهد.
پردازش یک چارچوب پایتون شی گرا برای QGIS است. اگرچه QGIS قبل از معرفی پردازش شامل ابزارهای geoprocessing بود ، اما فاقد یک چارچوب جامع برای تحلیل فضایی بود. هدف اصلی پردازش ، فراهم کردن بستری برای توسعه الگوریتمهای تحلیل است که پیادهسازی و استفاده از این الگوریتمها را آسان میکند.
ساختار باقی مانده این مقاله به شرح زیر است: بخش 2 اطلاعات پس زمینه ای در مورد تاریخچه توسعه چارچوب پردازش QGIS و فناوری موجود مشابه ارائه می دهد. بخش 3 معماری نرم افزار، ادغام الگوریتم برای کتابخانه های منبع مختلف و همچنین محدودیت های فعلی چارچوب را شرح می دهد. بخش 4 مروری بر برنامه های کاربردی انتخاب شده ارائه می دهد و بخش 5 نکات کلیدی را خلاصه می کند و فضایی را برای توسعه بیشتر مورد بحث قرار می دهد.
2. پس زمینه
QGIS یک پروژه GIS منبع باز است که در سال 2002 آغاز شد. هدف اولیه پروژه QGIS ایجاد یک نمایشگر داده های مکانی بود [ 7 ]. امروزه QGIS در تکامل خود به نقطهای رسیده است که توسط طیف گستردهای از کاربران برای مشاهده، ویرایش و تحلیل دادههای مکانی روزانه [ 10 ] و همچنین در آموزش استفاده میشود (به عنوان مثال، [ 8 ، 9]]). QGIS بر روی اکثر پلتفرمهای لینوکس و یونیکس، ویندوز و Mac OS X اجرا میشود و تحت مجوز عمومی عمومی GNU (مجموعهای از نرمافزار رایگان؛ مخفف GNU’s not Unix) منتشر شده است. هسته QGIS با استفاده از کیت ابزار Qt و ++C توسعه یافته است. علاوه بر این، QGIS یک رابط برنامه کاربردی پایتون (API) را فراهم می کند که برای گسترش عملکرد آن استفاده می شود. همانطور که [11 ] توجه داشته باشید، «یک رابط قدرتمند پایتون میتواند به بهرهبرداری مؤثر از قابلیتهای GIS کمک کند» و ابزارها و زبانهای برنامهنویسی مختلف را برای گسترش آن ادغام کند. این اثر، افزایش تعداد مشارکتها، از زمان معرفی QGIS Python API در QGIS 0.9 در سال 2007، زمانی که توسعهدهندگان جدید شروع به اضافه کردن عملکرد با استفاده از افزونههای Python کردند، بسیار قابل توجه بوده است.
2.1. پردازش اهداف و انگیزه
هدف اصلی پردازش ، ایجاد بستری برای توسعه الگوریتم های ژئوپردازش است که پیاده سازی و استفاده از این الگوریتم ها را آسان می کند. اگرچه QGIS قبل از توسعه پردازش شامل ابزارهای geoprocessing بود ، اما فاقد یک چارچوب geoprocessing جامع برای تجزیه و تحلیل فضایی بود.
قبلاً QGIS یکپارچگی با سیستم پشتیبانی تجزیه و تحلیل منابع جغرافیایی (GRASS GIS) [ 12 ] از طریق یک پلاگین اختصاصی GRASS [ 4 ] ارائه کرد. این افزونه قابلیتی را برای وارد کردن لایهها از QGIS به یک مجموعه نقشه GRASS، اعمال الگوریتمهای پردازش جغرافیایی GRASS برای لایههای وارد شده و تجسم محتوای نقشههای GRASS در QGIS فراهم میکند. در حالی که این ادغام راهی برای استفاده از الگوریتمهای GRASS از درون رابط کاربری گرافیکی QGIS (GUI) ارائه میکند، نیاز به ایجاد دستی مجموعههای نقشه GRASS، و همچنین واردات و صادرات مکرر هر زمان که کاربر بخواهد بین ابزارهای پردازش جغرافیایی GRASS GIS و QGIS جابجا شود، نیاز دارد. این منجر به جریان های کاری دست و پا گیر و مستعد خطا می شود.
علاوه بر پلاگین GRASS، انواع ابزارهای ژئوپردازش اضافی در برنامه هسته QGIS و همچنین پلاگین های دیگر وجود دارد. به طور خاص، مسائل زیر مربوط به این انبوه ابزارهای ژئوپردازش شناسایی شد:
-
ناهمگونی: اجرای ابزارهای موجود همگن نبود. هم در سبک پیادهسازی (مانند در دسترس بودن شاخصهای پیشرفت، بارگیری خودکار نتایج) و هم در رفتار رابط کاربری گرافیکی (مانند ترتیب ورودیها در انتخابگرهای لایه، بسته شدن مداوم دیالوگها پس از پایان فرآیندها، مکان دکمههای راهنما)، تجزیه و تحلیل ابزارها سازگار نبودند.
-
تکراری: کد در حال استفاده مجدد نبود. روال هایی مانند پیاده سازی انتخابگر لایه، چندین بار پیاده سازی شدند و بین ابزارها دوباره استفاده نشدند.
-
جداسازی: ابزارهای موجود را نمی توان در فرآیندها ترکیب کرد.
بخش 3 معماری چارچوب پردازش و نحوه حل این مسائل را به تفصیل شرح می دهد .
2.2. تاریخچه توسعه
پردازش یک بازنویسی کامل از پروژه قبلی Sistema Extremeño de Análisis Territorial (SEXTANTE) است که در سال 2004 راه اندازی شد. در اصل، SEXTANTE در جاوا نوشته شده بود و در بالای GIS دسکتاپ gvSIG اجرا می شد. در نهایت، SEXTANTE به یک کتابخانه مستقل با چارچوب تجزیه و تحلیل، مجموعه ای از الگوریتم های ساخته شده بر روی آن، ابزارهای گرافیکی برای استفاده از آن الگوریتم ها و گردش کار تجزیه و تحلیل دقیق تبدیل شد. مجموعه اصلی الگوریتمها در نسخه جاوا SEXTANTE از پروژه System for Automated Geoscientific Analyzes (SAGA)، یک GIS رومیزی با قابلیتهای تحلیل پیشرفته [ 13 ] اقتباس شده است. تصمیم برای تبدیل SEXTANTE به یک کتابخانه مستقل، ترکیب آن را در سایر GIS مبتنی بر جاوا، مانند OpenJUMP، uDig، Kosmo و OrbisGIS ممکن کرد [ 14] .].
یک پیشرفت مهم در طراحی چارچوب در هنگام مهاجرت به QGIS هنگامی که چارچوب SEXTANTE به عنوان یک افزونه پایتون بازنویسی شد، معرفی شد: به جای انتقال مجموعه کامل الگوریتم ها به پایتون، یک رویکرد جدید استفاده شد که به SEXTANTE اجازه می داد به برنامه های کاربردی خارجی متصل شود. بنابراین، باینری های اصلی SAGA می توانند برای ارائه قابلیت های تحلیلی مورد استفاده قرار گیرند. ما نحوه دستیابی به این یکپارچگی را به تفصیل در بخش 3.4 شرح می دهیم . راهحلهای یکپارچهسازی مشابه برای کاربردهای دیگر، مانند GRASS GIS (به بخش 3.4 )، R (به بخش 3.5 مراجعه کنید ) یا جعبه ابزار ORFEO (به بخش 3.6 مراجعه کنید ) پیادهسازی شدهاند.
در سال 2012، SEXTANTE به عنوان یک پلاگین اصلی QGIS گنجانده شد و به پردازش تغییر نام داد . امروزه، این چارچوب اصلی پردازش دادههای مکانی در GIS رومیزی QGIS است. به همین ترتیب، نسخه جاوا SEXTANTE در gvSIG ادغام شده است و توسعه اکنون به عنوان بخشی از gvSIG انجام می شود. بنابراین، چارچوب SEXTANTE دیگر به عنوان یک ابزار مستقل در دسترس نیست.
2.3. تکنولوژی مشابه موجود
محصولات مشابه برای سایر GIS دسکتاپ وجود دارد. جدای از پلتفرم SEXTANTE که قبلاً ذکر شد، که مقدم بر پردازش است و قابلیتهای مشابهی داشت، پردازش شباهتهای زیادی با عناصر موجود در پلتفرم ESRI ArcGIS، مانند ESRI ArcToolbox و ESRI Model Builder دارد. اگرچه از نظر طراحی مشابه هستند، اما تفاوت های اصلی زیر را می توان شناسایی کرد:
-
افزودن الگوریتمها به پردازش نیازی به ابزارهای توسعه خارجی ندارد، اما میتواند از درون خود QGIS انجام شود.
-
پردازش از سفارشیسازی رابطهای کاربری گرافیکی الگوریتم با فراهم کردن دسترسی به کتابخانههای رابط کاربری پشتیبانی میکند.
-
تمام بخش های پردازش متن باز هستند. مانند همه پلاگین های QGIS، کد منبع پردازش باید تحت مجوز GPL منتشر شود، زیرا خود QGIS تحت GPL منتشر می شود. بنابراین، امکان بررسی عملکرد داخلی هر جزء پردازش وجود دارد .
-
از سوی دیگر، ویژگیهای پیشرفته، مانند جریانها یا حلقههای شرطی، در حال حاضر در Processing Graphical Modeler امکانپذیر نیست.
3. معماری چارچوب
در این بخش شرح مفصلی از معماری چارچوب پردازش ارائه می شود . از آنجایی که این طراحی معماری مبتنی بر تجربه از چندین تکرار قبلی چارچوبهای ژئوپردازش است، مرجع ارزشمندی برای مهندسان نرمافزاری است که ممکن است با چالشهای مشابهی مواجه شوند. علاوه بر این، درک معماری چارچوب، محققان و توسعه دهندگان را قادر می سازد تا استراتژی یکپارچه سازی بهینه را برای ابزارهای خود انتخاب کنند.
پردازش در پایتون نوشته شده است و به API QGIS و همچنین برنامه های کاربردی خارجی مانند باینری های SAGA، GRASS GIS، R یا ORFEO Toolbox متصل می شود. این یک لایه یکپارچه بین آن برنامه های تحلیلی و QGIS فراهم می کند و استفاده از آنها را آسان تر و کارآمدتر می کند. برای این منظور، پردازش با در نظر گرفتن اهداف اصلی زیر توسعه داده شد:
-
کارایی: این امکان یکپارچهسازی کارآمد قابلیتهای تحلیلی را با اتصال به باینریهای اصلی نرمافزارهای دیگر، مانند SAGA، GRASS GIS، R یا ORFEO Toolbox، به جای تکرار تلاشهای توسعه، فراهم میکند.
-
ماژولاریت: برای سهولت اجرای الگوریتمها و ارائه رفتار ثابت در ابزارهای مختلف، این چارچوب کلاسهای اضافی را ارائه میکند که روالهای معمول مورد نیاز را برای یکپارچهسازی ماژولار پیادهسازی میکند.
-
انعطافپذیری: الگوریتمهای پیادهسازیشده را میتوان در هر یک از ابزارهای گرافیکی موجود در چارچوب، مانند مدلساز گرافیکی یا رابط پردازش دستهای، دوباره استفاده کرد. این نیازی به کار اضافی توسط توسعهدهنده الگوریتم ندارد، زیرا این انعطافپذیری یکی از ویژگیهای همه الگوریتمهای توسعهیافته با استفاده از کلاسهای پردازش پایه است .
-
تولید خودکار رابط کاربری گرافیکی: توسعه دهندگان می توانند به جای عناصر رابط کاربری گرافیکی، روی خود الگوریتم تمرکز کنند. پردازش از تولید رابط کاربری گرافیکی بر اساس توضیحات الگوریتم مراقبت می کند.
شکل 1 یک نمای کلی از بسته های تشکیل دهنده پردازش و تعامل آنها با کتابخانه های خارجی را ارائه می دهد. بخشهای زیر محتوای بسته پردازش و تعاملات کلاسهای موجود را به تفصیل شرح میدهند.

شکل 1. نمودار بسته با بسته های پردازش (با رنگ زرد برجسته شده) و بسته های مرتبط.
بسته اصلی شامل کلاس های مرکزی چارچوب پردازش است . شکل 2 مهمترین کلاس های این بسته را نشان می دهد (لطفاً توجه داشته باشید که به دلیل وضوح و همچنین برای حفظ محدودیت های قالب کاغذ، هر خطا، خروجی، پارامتر یا کلاس GUI را در نمودارهای کلاس زیر نشان نمی دهیم. ). هنگامی که افزونه بارگذاری می شود، نمونه ProcessingPlugin کلاس پردازش اصلی را مقداردهی اولیه می کند . این به نوبه خود ProcessingConfig و ProcessingLog را مقداردهی اولیه می کند و AlgorithmProvider پیکربندی شده را بارگذاری می کند . هر AlgorithmProvider حاوی لیستی ازGeoAlgorithm s، که حاوی منطق الگوریتم های تحلیل جغرافیایی، مانند پارامترهای مورد نیاز s و خروجی s است.
به طور خاص، پیادهسازی الگوریتمها در کلاس GeoAlgorithm شامل دو مرحله اصلی است: اول، ورودیهای مورد نیاز الگوریتم و خروجیهایی که الگوریتم تولید خواهد کرد، مشخص میشوند. اینها باید در متد defineCharacteristics () گنجانده شوند که آرایههای ورودی و خروجی را پر میکند و معنایی الگوریتم را تعریف میکند. پارامترهای اضافی که الگوریتم را توصیف می کنند، مانند نام گروه مرتبط، نیز در این روش تعریف می شوند. در برخی موارد، برای مثال، جایی که الگوریتمها از یک Backend استفاده میکنند، مانند GRASS یا SAGA، پارامترها به طور مستقیم در این روشها تعریف نمیشوند. در عوض، defineCharacteristics()توضیحات ورودی و خروجی را از یک فایل می خواند و از آن اطلاعات برای پر کردن آرایه های ورودی و خروجی استفاده می کند. این کار برای سادهسازی فرآیند افزودن مجموعههای بزرگی از الگوریتمها انجام میشود که این پشتیبانها با بهرهگیری از این واقعیت که اغلب آنها مکانیزمی برای توصیف الگوریتمهایشان ارائه میدهند، انجام میشود. این امر انطباق با نسخههای جدید نرمافزار پشتیبان را آسانتر میکند، جایی که ممکن است الگوریتمها تغییر کرده باشند، زیرا سازگاریهای لازم به تغییرات در فایلهای توضیحات محدود میشود و هیچ کد پردازشی نیازی به بازنویسی ندارد.

شکل 2. نمودار کلاس بسته هسته و اتصال آن به سایر بسته ها.
به عنوان مرحله دوم، کد الگوریتم که از ورودی های ارائه شده به الگوریتم ها استفاده می کند و خروجی ها را تولید می کند، در روش ()processAlgorithm پیاده سازی می شود . این روش باید مقادیر پارامترهای ورودی الگوریتم (که توسط کاربر از طریق هر یک از عناصر UI پردازش، مانند جعبه ابزار، رابط پردازش دسته ای و غیره تنظیم شده است ) را برای محاسبه خروجی ها بگیرد. خروجی ها در مکان های مشخص شده توسط پیکربندی خروجی تعریف شده توسط کاربر ذخیره می شوند (در حال حاضر فقط خروجی فایل پشتیبانی می شود). پس از پیاده سازی الگوریتم، به لیست الگوریتم های موجود اضافه می شود. در حال پردازشسپس می تواند الگوریتم را تنظیم کند، مجموعه داده های ورودی را آماده کند، الگوریتم را اجرا کند و بعداً خروجی های حاصل را پردازش کند. هنگامی که الگوریتم اجرا می شود، Processing متد processAlgorithm() را همراه با متدهای کمکی اجرا می کند که یکپارچگی پیکربندی ورودی و خروجی را بررسی می کند، نام خروجی را حل می کند (در مورد استفاده از خروجی های موقت، که در آن پردازش خود فایل خروجی را تنظیم می کند. مسیر)، در میان سایر وظایف مورد نیاز برای اطمینان از اجرای صحیح. پیاده سازی الگوریتم های خاص در زیر بسته های مختلف بسته algs در بخش های مربوطه مورد بحث قرار خواهد گرفت.
علاوه بر هسته ، بسته ابزار شامل توابع و کلاس های کاربردی ضروری است که توسط بسته های دیگر استفاده می شود. توابع ابزار شامل alglist() است که لیست کامل الگوریتم های موجود را برمی گرداند. به طور مشابه، alghelp() توضیحات متن و پارامترهای راهنمای الگوریتم را نمایش می دهد و runalg() الگوریتم را اجرا می کند. برای مثال های استفاده به فهرست 1 مراجعه کنید.
فهرست 1: نحو توابع ابزار مهم بسته ابزار (برای مثال های استفاده به https://docs.qgis.org/2.8/en/docs/user_manual/processing/console.html مراجعه کنید )
پردازش واردات processing.alglist() processing.alghelp(name_of_the_algorithm) processing.runalg(name_of_the_algorithm, param1, param2, ..., paramN, خروجی 1، خروجی 2، ...، خروجیN)
3.1. رابط کاربر گرافیکی
الگوریتم های پردازش را می توان توسط هر یک از عناصر رابط کاربری گرافیکی چارچوب استفاده کرد. عناصر رابط کاربری گرافیکی زیر در حال حاضر در بستههای رابط کاربری گرافیکی و مدلساز پیادهسازی میشوند که به ترتیب در شکل 3 و شکل 4 نشان داده شده است :
-
جعبه ابزار ( کلاس gui.ProcessingToolbox ؛ برای مثال، به شکل 5 مراجعه کنید ) همه الگوریتم های موجود در الگوریتم Tree خود را فهرست می کند و به فرد اجازه می دهد تا الگوریتم ها و مدل ها را با استفاده از AlgorithmDialog یا BatchAlgorithmDialog اجرا کند . در حالی که AlgorithmDialog برای اجرای یک الگوریتم یا مدل یک بار استفاده می شود، BatchAlgorithmDialog (به عنوان مثال، به شکل 6 مراجعه کنید) اجرای مکرر یک الگوریتم یا مدل را با تنظیمات پارامترهای مختلف امکان پذیر می کند. جعبه ابزار علاوه بر این مکانیزمی را پیاده سازی می کند که به اصطلاح Actions را ارائه می دهد. این مکانیسم ارائه دهندگان را قادر می سازد تا عملکرد جعبه ابزار را گسترش دهند و ابزارهای مورد نیاز ارائه دهنده را فراهم کنند. نمونه ای از این عمل ایجاد اسکریپت جدید است که توسط ارائه دهنده R اضافه شده است، که یک گفتگو برای ویرایش اسکریپت های R باز می کند.
-
Commander ( کلاس gui.CommanderWindow ؛ برای مثال، شکل 5 را ببینید ) دسترسی سریع به الگوریتم ها و مدل ها را از طریق یک رابط پرتاب سریع فراهم می کند. این به کاربر امکان میدهد تا با شروع به تایپ نام و انتخاب ابزار از نتایج جستجوی پیشنهادی، یک ابزار پردازش جغرافیایی را پیدا و راهاندازی کند.
-
مدلساز گرافیکی ( کلاس modeler.ModelerDialog ؛ برای مثال، به شکل 7 و شکل 8 مراجعه کنید ) اتوماسیون جریان کار را با زنجیر کردن ابزارهای فردی به مدلهای پردازش جغرافیایی امکانپذیر میسازد. نمایش بصری مدل در ModelerScene ترسیم شده است و از ModelerGraphicItem هایی تشکیل شده است که به عنوان جعبه هایی برای ورودی ModelParameter s، الگوریتم s و ModelerOutputs و همچنین ModelerArrowItem هایی که آنها را به هم متصل می کنند، نمایش داده می شود. گزینهها و الگوریتمهای ورودی موجود در ویجتهای درختی شبیه به ابزارک موجود در جعبه ابزار فهرست شدهاند.

شکل 3. نمودار کلاس بسته gui و اتصالات آن به سایر بسته ها.
سفارشی سازی رابط کاربری گرافیکی مرتبط با هر الگوریتم، هم برای اجرا از جعبه ابزار و هم برای استفاده از الگوریتم به عنوان بخشی از یک مدل امکان پذیر است. اگر رابط سفارشی ارائه نشده باشد، پردازش به طور خودکار رابط را ایجاد می کند. این مورد برای اکثر الگوریتم ها است. برای ایجاد رابط کاربری گرافیکی، پردازش از ورودی و خروجی الگوریتم، همانطور که در روش توصیف الگوریتم تعریف شده است، استفاده می کند. بسته به نوع داده ورودی یا خروجی، ویجت مربوطه انتخاب می شود و همه آنها با هم در یک AlgorithmDialog ساده مرتب می شوند .
شایان ذکر است که مدلها نمونههایی از کلاس ModelerAlgorithm هستند که از کلاس GeoAlgorithm هسته مشتق شدهاند . به این ترتیب، Processing می تواند با مدل ها مانند هر الگوریتم دیگری رفتار کند و می توان از الگوریتم ها و مدل های موجود برای ساخت مدل های جدید استفاده کرد.
بخشهای زیر نحوه ادغام الگوریتمهای پردازش از برنامههای تحلیلی مختلف، مانند QGIS ftools، MMQGIS، GDAL/OGR، SAGA، GRASS GIS، R و ORFEO را شرح میدهند. این برنامه ها توسط Processing out of the box پشتیبانی می شوند. برنامههای کاربردی دیگری که بهطور پیشفرض در Processing ادغام شدهاند ، اما بهدلیل دامنه محدود آنها تنها به طور خلاصه در بخش 3.7 مورد بحث قرار گرفتهاند، TauDEM و Lastools هستند. در نهایت، نشان میدهیم که چگونه الگوریتمهای سفارشی جدید میتوانند اضافه شوند و محدودیتهای فعلی چارچوب پردازش را مورد بحث قرار دهیم .

شکل 4. نمودار کلاس بسته مدل ساز و اتصالات آن به سایر بسته ها.

شکل 5. جعبه ابزار پردازش (پانل سمت راست) و فرمانده با تکمیل خودکار (مرکز بالا).

شکل 6. پردازش GUI پردازش دسته ای.

شکل 7. مدلی برای ایجاد نقشه های ریزپهنه بندی لرزه ای سطح 1 همانطور که برای [ 15 ] استفاده شده و در [ 16 ] شرح داده شده است.

شکل 8. مدل مقایسه دقت موقعیت. نسخه به روز شده مدل منتشر شده در [ 17 ].

شکل 9. نمودار کلاس بسته qgis و اتصالات آن به سایر بسته ها.
3.2. QGIS Ftools و MMQGIS ادغام
ftools و MMQGIS [ 18 ] دو مجموعه الگوریتم هستند که بر ابزارهای geoprocessing برداری تمرکز دارند که به عنوان افزونه های QGIS ارائه می شوند. الگوریتم های این مجموعه ها به صورت دستی به الگوریتم های پردازش تبدیل شدند و در بسته qgis سازماندهی شده اند ، همانطور که در شکل 9 نشان داده شده است . این با تطبیق کد ابزار با فرمت خاص کلاس GeoAlgorithm ، که پایه همه الگوریتمهای پردازش است، به دست آمد.
فهرست 2: پیاده سازی ابزار استخراج گره های ftools (کوتاه شده، برای اسکریپت کامل به https://github.com/qgis/QGIS/blob/master/python/plugins/processing/algs/qgis/ExtractNodes.py مراجعه کنید )
از qgis.core واردات QGis، QgsFeature، QgsGeometry از processing.core.GeoAlgorithm import GeoAlgorithm از processing.core.parameters import ParameterVector از processing.core.outputs واردات OutputVector از processing.tools وارد کردن دادهاشیاء، برداری کلاس ExtractNodes (GeoAlgorithm): INPUT = 'ورودی' OUTPUT = 'خروجی' def defineCharacteristics(self): self.name = 'استخراج گره ها' self.group = 'ابزارهای هندسه برداری' self.addParameter(ParameterVector(self.INPUT, self.tr ("لایه ورودی")، [ParameterVector.VECTOR_TYPE_POLYGON، ParameterVector.VECTOR_TYPE_LINE])) self.addOutput(OutputVector(self.OUTPUT, self.tr ("لایه خروجی"))) الگوریتم def process (خود، پیشرفت): لایه = dataobjects.getObjectFromUri( self.getParameterValue(self.INPUT)) writer = self.getOutputFromName(self.OUTPUT) .getVectorWriter( layer.pendingFields().toList(), QGis.WKBPoint، layer.crs()) outFeat = QgsFeature() outGeom = QgsGeometry() برای f در vector.features (لایه): points = vector.extractPoints(f.geometry()) outFeat.setAttributes(f.attributes()) برای من در امتیازات: outFeat.setGeometry(outGeom.fromPoint(i)) writer.addFeature(outFeat) دل نویسنده
این ابزارها به طور گسترده از QGIS Python API و الگوریتم های پردازش جغرافیایی پیاده سازی شده در برنامه اصلی QGIS استفاده می کنند. فهرست 2 یک نسخه کوتاه شده از اجرای پردازش ابزار ftools Extract nodes را نشان می دهد . این مثال نشان می دهد که چگونه الگوریتم جدید کلاس GeoAlgorithm را گسترش می دهد و دو روش defineCharacteristics() و processAlgorithm() را پیاده سازی می کند که به ترتیب الگوریتم را توصیف و اجرا می کنند.
3.3. ادغام GDAL/OGR
GDAL (کتابخانه انتزاعی دادههای مکانی) یک کتابخانه مترجم برای فرمتهای دادههای جغرافیایی شطرنجی و برداری است. به طور سنتی، GDAL روی قسمت شطرنجی کتابخانه و OGR قسمت برداری برای ویژگیهای ساده تمرکز میکرد. با شروع GDAL 2.0، هر دو بخش به شدت ادغام شده اند. چندین برنامه کاربردی مانند QGIS از این کتابخانه برای خواندن و نوشتن داده های مکانی استفاده می کنند. این یک مدل داده انتزاعی شطرنجی و مدل داده انتزاعی برداری را برای همه فرمت های پشتیبانی شده پیاده سازی می کند. علاوه بر این، GDAL با انواع ابزارهای خط فرمان برای ترجمه و پردازش داده ها ارائه می شود [ 19 ].
GdalOgrAlgorithmProvider الگوریتم های مبتنی بر GDAL را در چارچوب پردازش ادغام می کند ، همانطور که در شکل 10 نشان داده شده است . الگوریتمهای منفرد کلاس GdalAlgorithm یا OGRAlgorithm را گسترش میدهند و با استفاده از دو مکانیسم مختلف پیادهسازی شدهاند: فراخوانی پیوندهای پایتون GDAL/OGR یا استفاده از رابط خط فرمان GDAL.

شکل 10. نمودار کلاس بسته gdal و اتصالات آن به سایر بسته ها.
هنگامی که پیوندهای پایتون GDAL/OGR برای یک تابع وجود دارد، GdalAlgorithm یا OGRAlgorithm مربوطه GDAL/OGR را فراخوانی می کند، همانطور که در مثال در لیست 3 نشان داده شده است، که از GDAL برای استخراج اطلاعات طرح ریزی از یک فایل ورودی استفاده می کند.
فهرست 3: ادغام پیش بینی استخراج با استفاده از اتصالات پایتون GDAL (کوتاه شده، برای اسکریپت کامل به https://github.com/qgis/QGIS/blob/master/python/plugins/processing/algs/gdal/extractprojection.py مراجعه کنید )
از osgeo import gdal, osr از processing.algs.gdal.GdalAlgorithm واردات GdalAlgorithm ... کلاس ExtractProjection (الگوریتم Gdal): ... الگوریتم def process (خود، پیشرفت): rasterPath = self.getParameterValue(self.INPUT) createPrj = self.getParameterValue(self.PRJ_FILE) رستر = gdal.Open(unicode(rasterPath)) crs = raster.GetProjection()
فهرست 4: ادغام شطرنجی کلیپ بر اساس میزان با استفاده از رابط خط فرمان (کوتاه شده، برای اسکریپت کامل به https://github.com/qgis/QGIS/blob/master/python/plugins/processing/algs/gdal/ClipByExtent مراجعه کنید. پی )
از processing.algs.gdal.GdalAlgorithm واردات GdalAlgorithm از processing.algs.gdal.GdalUtils GdalUtils را وارد می کند ... کلاس ClipByExtent (الگوریتم Gdal): ... الگوریتم def process (خود، پیشرفت): out = self.getOutputValue(self.OUTPUT) noData = str(self.getParameterValue(self.NO_DATA)) projwin = str(self.getParameterValue(self.PROJWIN)) اضافی = str(self.getParameterValue(self.EXTRA)) آرگومان ها = [] arguments.append('-of') arguments.append(GdalUtils.getFormatShortNameFromFilename(out)) ... regionCoords = projwin.split(',') arguments.append('-projwin') arguments.append(regionCoords[0]) arguments.append(regionCoords[3]) arguments.append(regionCoords[1]) arguments.append(regionCoords[2]) ... GdalUtils.runGdal(['gdal_translate', GdalUtils.escapeAndJoin(Arguments)]، پیشرفت)
سایر الگوریتمها، مانند warp، translate، contour یا clipping (به فهرست 4 مراجعه کنید)، مستقیماً با استفاده از رابط خط فرمان فراخوانی میشوند. همه الگوریتمهای ارائهدهنده GDAL که ابزارهای GDAL را در خط فرمان فراخوانی میکنند، به متد ()GdalUtils.runGdal متکی هستند . این روش بر اساس مقادیر پارامترها و همچنین پلتفرم مورد استفاده، خط فرمان را آماده می کند. همچنین خروجی ایجاد شده توسط الگوریتم های GDAL را کنترل می کند و نشان دهنده پیشرفت و ثبت محتوای خروجی را ارائه می دهد.
3.4. ادغام SAGA و GRASS GIS
SAGA و GRASS به روشی مشابه در پردازش یکپارچه شده اند . بنابراین، ادغام آنها با هم در این بخش مشترک توضیح داده شده است.
System for Automated Geoscientific Analyzes (SAGA) یک GIS است که بر پردازش و تجزیه و تحلیل داده های مکانی تمرکز دارد [ 13 ]. توابع SAGA به عنوان ماژول ها در کتابخانه های ماژول مستقل از چارچوب سازماندهی می شوند و می توان از طریق رابط کاربری گرافیکی SAGA یا محیط های برنامه نویسی مختلف، مانند اسکریپت های پوسته، پایتون یا R [20] به آنها دسترسی داشت .
سیستم پشتیبانی تجزیه و تحلیل منابع جغرافیایی (GRASS GIS) یک GIS منبع باز چند منظوره است [ 21 ]. این دادههای شطرنجی و برداری دوبعدی و سه بعدی را پشتیبانی میکند و شامل توابع تحلیل شبکه برداری، الگوریتمهای مدلسازی فضایی، تجسم سهبعدی، و همچنین روالهای پردازش تصویر مربوط به LiDAR و تصاویر چند باندی است [4 ] .

شکل 11. نمودار کلاس بسته ساگا و اتصالات آن به سایر بسته ها.
هر دو SAGA و GRASS GIS تعداد زیادی الگوریتم را ارائه می دهند و فایل های اجرایی آنها در اکثر بسته های QGIS گنجانده شده است، بنابراین نیازی به نصب جداگانه آنها برای در دسترس بودن این قابلیت نیست. اگرچه هم SAGA و هم GRASS GIS را میتوان از پایتون با استفاده از APIهای پایتون مربوطه فراخوانی کرد، پردازش از رابطهای خط فرمان آنها استفاده میکند، زیرا ثابت شده است که این رابطها پایداری بیشتری (حداقل در زمان اجرای اولیه) ارائه میدهند و امکان اجرای سریعتر تعداد زیادی الگوریتم همانطور که در شکل 11 نشان داده شده است ، پردازش در حال حاضر از نسخه های SAGA 2.1.2، 2.1.3 و 2.1.4 از طریق SagaAlgorithm212 ، SagaAlgorithm213 و SagaAlgorithm214 پشتیبانی می کند.کلاس های پیاده سازی شده به ترتیب در بسته saga . به طور مشابه، GRASS 6 و 7 از طریق بسته های چمن و grass7 پشتیبانی می شوند ، همانطور که در شکل 12 نشان داده شده است .

شکل 12. نمودار کلاس بسته های چمن و چمن 7 و اتصال آنها به بسته های دیگر.
به طور خاص، ادغام SAGA و GRASS GIS با استفاده از چهار مرحله اصلی به دست میآید: توصیف ورودیها و خروجیهای الگوریتم، آمادهسازی دادههای ورودی، اجرای الگوریتم و مدیریت خروجی.
فهرست 5: شرح الگوریتم برای GRASS v.voronoi (همانطور که در https://github.com/qgis/QGIS/blob/master/python/plugins/processing/algs/grass/description/v.voronoi.txt آمده است )
v.voronoi v.voronoi - یک نمودار Voronoi از یک لایه برداری ورودی ایجاد می کند حاوی نقاط بردار (v.*) ParameterVector|ورودی|لایه نقاط ورودی|0|نادرست ParameterBoolean|-l|تصویر خروجی به صورت نمودار (خطوط)، نه ناحیه | نادرست ParameterBoolean|-t|جدول ویژگی ایجاد نکنید|نادرست خروجی بردار|خروجی|نمودار ورونوی
توضیحات ورودی ها و خروجی های الگوریتم برای ایجاد خودکار رابط کاربری گرافیکی، اجرای الگوریتم و همچنین دانستن اینکه کدام خروجی تولید می شود ضروری است. این اطلاعات در یک فایل جداگانه برای هر الگوریتم ذخیره می شود. به ترتیب با استفاده از SagaUtils.sagaDesriptionPath و GrassUtils.grassDescriptionPath () می توان به مکان این فایل های توضیحات دسترسی داشت . هر دو SAGA و GRASS روش هایی را برای توصیف الگوریتم های خود ارائه می دهند. این روشها ادغام را ساده میکنند، زیرا نیازی به ایجاد دستی فایلهای توضیحات الگوریتم نیست. فهرست 5 یک توضیح مثال برای الگوریتم GRASS GIS v.voronoi را نشان می دهد که دارای یک ورودی و یک خروجی و همچنین دو پارامتر پیکربندی است.
مرحله دوم یکپارچه سازی، آماده سازی مجموعه داده های ورودی است. این امر ضروری است زیرا SAGA و GRASS GIS از فرمتهای خاص خود برای دادههای برداری و شطرنجی استفاده میکنند و لایههایی در قالبهای محبوب که توسط QGIS پشتیبانی میشوند نمیتوانند مستقیماً توسط آنها استفاده شود. بنابراین، Processing قبل از فراخوانی الگوریتم، از تبدیل لایه ها به فرمت های مورد نیاز مراقبت می کند. این یک ادغام یکپارچه با QGIS را فراهم می کند و به کاربر اجازه می دهد از داده ها استفاده کند، حتی اگر در قالبی ذخیره شده باشد که به طور بومی توسط SAGA یا GRASS GIS پشتیبانی نمی شود. علاوه بر این، در مورد لایه های برداری، تبدیل داده ها همچنین می تواند SAGA و GRASS GIS را با تبدیل تنها ویژگی های انتخاب شده قبل از فراخوانی الگوریتم، از انتخاب ویژگی ها آگاه کند.
در مرحله سوم ادغام، الگوریتم با استفاده از لایه ورودی اصلی (اگر نوع داده به صورت بومی پشتیبانی می شود) یا لایه های تبدیل شده اجرا می شود.
مرحله نهایی و چهارم یکپارچه سازی، مدیریت خروجی ها است. پردازش خروجی تولید شده توسط SAGA/GRASS GIS را دریافت می کند و آن را به پروژه QGIS فعلی اضافه می کند. اگر فرمت خروجی مشخص شده توسط کاربر توسط SAGA/GRASS GIS پشتیبانی نشود، پردازش قبل از بارگذاری لایه، تبدیل خروجی را انجام می دهد. به عنوان مثال، SAGA از تبدیل فرمت شطرنجی بومی خود به فرمت TIFF پشتیبانی می کند، اما نمی تواند فایل TIFF را مستقیماً تولید کند. بنابراین، اگر کاربر یک خروجی TIFF را مشخص کند، لازم است ابتدا یک لایه رستر SAGA بومی ایجاد شود، که سپس با فراخوانی الگوریتم تبدیل SAGA، میتوان آن را به TIFF تبدیل کرد.
بسته به فرمت، تبدیل داده ها برای ورودی و خروجی با استفاده از توابع ارائه شده توسط QGIS یا برنامه خارجی انجام می شود. تبدیل با استفاده از SAGA/GRASS GIS نیازمند چندین تماس با برنامه است. بنابراین، تمام فراخوانیهای لازم برای تبدیل دادهها و اجرای الگوریتم به ترتیب با استفاده از SagaUtils.createSagaBatchJobFileFromSagaCommands و GrassUtils.createGrassBatchJobFileFromGrassCommands () به یک فایل اسکریپت نوشته میشوند ، که سپس در یک مرحله اجرا میشود.
3.5. R یکپارچه سازی
R یک سیستم برای محاسبات آماری و گرافیک است. این شامل یک زبان به اضافه یک محیط زمان اجرا برای اجرای برنامه های ذخیره شده در فایل های اسکریپت است [ 22 ]. پروژه R همچنین بستهها، توابع، کلاسها و روشهایی را برای مدیریت دادههای مکانی فراهم میکند [ 23 ].
پردازش R را در QGIS ادغام می کند و کاربران را قادر می سازد تا اسکریپت های R را از داخل QGIS اجرا کنند و از لایه های QGIS به عنوان ورودی استفاده کنند. شکل 13 کلاس های بسته r را نشان می دهد . مشابه ادغام SAGA/GRASS GIS، ادغام R شامل روال های تبدیل داده برای ورودی ها و خروجی ها است و R را در خط فرمان با استفاده از RUtils.executeRAlgorithm() اجرا می کند . تفاوت اصلی این است که RAlgorithmProvider هیچ الگوریتم از پیش تعریف شده ای را ارائه نمی دهد. در عوض، کاربران را قادر میسازد تا الگوریتمهای خود را ایجاد کنند که میتوانند با استفاده از یک ویرایشگر متن داخلی نوشته شوند و در جلسات بعدی ذخیره و استفاده شوند. با استفاده از RUtils.RScriptsFolder() می توان به مکان اسکریپت های R دسترسی پیدا کرد .
اسکریپت های R در پردازش از نحو استاندارد R گسترش یافته توسط عناصر هدر اضافی (که با خطوط کدی که با هش های دوگانه ## نشان داده می شوند) استفاده می کنند، که اطلاعات مورد نیاز پردازش برای درک زمینه و همچنین ورودی ها و خروجی های الگوریتم ها را فراهم می کند. مثالی با استفاده از R برای محاسبه و نمایش هیستوگرام در فهرست 6 آورده شده است.
3.6. ادغام جعبه ابزار ORFEO
جعبه ابزار ORFEO (OTB) کتابخانه ای از الگوریتم های پردازش تصویر است که بر اساس کتابخانه پردازش تصویر پزشکی Insight Segmentation and Registration Toolkit (ITK) است. این قابلیت برای پردازش تصویر سنجش از دور به طور کلی و برای تصاویر با وضوح فضایی بالا به طور خاص [ 24 ] فراهم می کند.

شکل 13. نمودار کلاس پکیج R و اتصالات آن به سایر بسته ها.
فهرست 6: پردازش اسکریپت R برای تابع هیستوگرام R (همانطور که در https://github.com/qgis/QGIS/blob/release-2_8/python/plugins/processing/algs/r/scripts/Histogram.rsx آمده است
##پردازش برداری=گروهی ##نمایش ##لایه=بردار ##Field=لایه فیلد hist(Layer[[Field]], main=paste("Histogram of",Field) xlab = چسباندن (فیلد))
شکل 14 کلاس های بسته otb را نشان می دهد . ادغام OTB در Processing مشابه SAGA و GRASS GIS است، زیرا ابزارهای خط فرمان مربوطه را که در OTBUtils.otbDescriptionPath () قرار دارند را فراخوانی می کند و سپس تصاویر خروجی تولید شده توسط آنها را بارگذاری می کند. برای سادهسازی اجرای الگوریتمهای خاصی که به پارامترهای مشابه نیاز دارند، برخی از آن پارامترها به تنظیمات پیکربندی OTBAlgorithmProvider اضافه شدهاند ، به طوری که میتوان آنها را یک بار پیکربندی کرد و هر زمان که الگوریتمی که به آنها نیاز داشت اجرا شود، بهطور خودکار استفاده شوند. به طور خاص، پارامتر پوشه کاشی های SRTM (Shuttle Radar Topography Mission) (که با استفاده از OTBUtils.otbSRTMPath( می توان به آن دسترسی داشت.) و پارامتر فایل geoid (که با استفاده از OTBUtils.otbGeoidPath() قابل دسترسی است ) به طور پیش فرض در گفتگوی پارامترهای یک الگوریتم OTB که از هر یک از آنها استفاده می کند استفاده می شود.

شکل 14. نمودار کلاس پکیج otb و اتصالات آن به سایر پکیج ها.
3.7. ادغام با سایر Backendها
ارائه دهندگان الگوریتمی که باطن های دیگر مانند LWGEOM را ادغام می کنند نیز در دسترس هستند. با این حال، این ارائه دهندگان بخشی از خود Processing نیستند و به عنوان افزونه های مستقلی وجود دارند که در بالای Processing کار می کنند و از معماری ماژولار و قابل اتصال آن بهره می برند.
ارائه دهنده TauDEM یک مورد خاص را نشان می دهد. TauDEM (تحلیل زمین با استفاده از مدلهای ارتفاعی دیجیتال) مجموعهای از ابزارهای مدل رقومی ارتفاع (DEM) برای استخراج و تجزیه و تحلیل اطلاعات هیدرولوژیکی از توپوگرافی است که توسط یک DEM نشان داده شده است [25 ] . ارائه دهنده TauDEM به دلایل تاریخی یک ارائه دهنده اصلی است. زمانی که خود چارچوب هنوز در حال توسعه بود، به پردازش اضافه شد و علیرغم اینکه بسیار خاص بود و نه عمومی، در آنجا نگهداری شد.
وضعیت مشابهی در مورد ارائهدهنده LiDAR دیده میشود که برای دو ابزار محبوب برای کار با دادههای LiDAR: LAStools و Fusion پیشنمایش میکند. اگرچه بخشی از توزیع اصلی پردازش است، اما این ارائه دهندگان به طور پیش فرض غیرفعال هستند، زیرا به پشتیبان هایی نیاز دارند که باید جداگانه نصب شوند و در رایج ترین توزیع های QGIS گنجانده نشده اند.
تعداد پلاگین های QGIS که پردازش را با ارائه دهندگان جدید گسترش می دهند در حال افزایش است و بیشتر آنها از تکنیک هایی مشابه آنچه در بخش های بالا توضیح داده شد استفاده می کنند. با این حال، این ارائه دهندگان در اینجا توضیح داده نشده اند. بخش زیر این پردازش در حال گسترش با ارائه دهندگان جدید و همچنین سایر گزینه های موجود را شرح می دهد.
3.8. توسعه الگوریتم های جدید
الگوریتمهای جدید را میتوان با استفاده از سه تکنیک مختلف با افزایش پیچیدگی در پردازش ادغام کرد : نوشتن یک اسکریپت پردازش پایتون، ایجاد یک پلاگین QGIS جدید، که یک ارائهدهنده پردازش را پیادهسازی میکند ، یا افزودن کلاسهای جدید به هسته پردازش .
ایجاد یک اسکریپت پایتون ساده ترین راه برای افزودن الگوریتم های جدید به پردازش است . این اسکریپت ها توسط بسته اسکریپت نشان داده شده در شکل 15 مدیریت می شوند . ایجاد اسکریپت ها ساده است، زیرا می توان آنها را مستقیماً در QGIS با استفاده از ویرایشگر داخلی نوشت. این روش برای اکثر موارد توصیه می شود. کاربران می توانند اسکریپت ها و اسناد مرتبط (در فایل های .help) را در یک مخزن اختصاصی Github [ 26 ] به اشتراک بگذارند، و سایر کاربران می توانند این ابزارها را با استفاده از عملکرد داخلی «دریافت اسکریپت ها/مدل ها از منبع آنلاین» دانلود کنند. با استفاده از ScriptUtils.scriptsFolder() می توان به مکان اسکریپت ها دسترسی داشت .

شکل 15. نمودار کلاس بسته اسکریپت و اتصالات آن به سایر بسته ها.
لیست 7 یک اسکریپت نمونه را نشان می دهد که مقدار فیلد ورودی داده شده لایه برداری ورودی را یک بار افزایش می دهد و نتیجه را به عنوان یک لایه برداری جدید خروجی می دهد. سه خط اول که با هش های دوگانه ## مشخص شده اند شامل پیکربندی ورودی و خروجی هستند. بقیه اسکریپت پردازش داده ها را انجام می دهد. این مثال همچنین نشان می دهد که چگونه Processing با ارائه توابع آسان برای استفاده، مانند processing.getObject() برای خواندن داده های ورودی و کلاس processing.core.VectorWriter برای ذخیره نتایج، از اجرای کارآمد پشتیبانی می کند.
گزینه دوم ایجاد یک افزونه QGIS جدید است که یک ارائه دهنده پردازش را پیاده سازی می کند . یک ارائهدهنده مجموعهای از الگوریتمها را میپیچد و میتوان آن را در چارچوب پردازش ثبت کرد و به پردازش میگوید که الگوریتمهای خود را به کاربر نمایش دهد. این به فرد امکان میدهد افزونههای مستقل جدیدی ایجاد کند که با Processing ادغام میشوند . الگوریتم های آنها را می توان با فعال یا غیرفعال کردن افزونه مربوطه با استفاده از مدیر پلاگین QGIS فعال یا غیرفعال کرد.
فهرست 7: نمونه پردازش اسکریپت که پیکربندی اسکریپت ورودی و خروجی اسکریپت را نشان می دهد
##ورودی=بردار ##field=ورودی فیلد ##نتایج=بردار خروجی از واردات qgis.core * از processing.core.VectorWriter واردات VectorWriter لایه = processing.getObject(ورودی) writer = VectorWriter(نتایج، هیچ، layer.pendingFields()، layer.dataProvider().geometryType(), layer.crs()) برای feat در layer.getFeatures(): feat.setAttribute(field, feat[field]+1) writer.addFeature(feat) دل نویسنده
پیشرفته ترین گزینه سوم اضافه کردن کلاس ها به هسته پردازش است . این به توسعه دهندگان اصلی محدود می شود و برای کاربران عادی توصیه نمی شود.
3.9. محدودیت ها
پردازش محدودیتهای خاصی دارد، بهویژه وقتی صحبت از یکپارچهسازی برنامههای خارجی میشود. این بیشتر به دلیل محدودیت در معنایی الگوریتم ها است که در برخی موارد ایجاد انواع خاصی از الگوریتم ها را دشوار یا غیرممکن می کند. محدودیت های زیر در چارچوب پردازش برای تعریف الگوریتم ها باید مورد توجه قرار گیرد:
-
ورودی ها و خروجی ها ثابت هستند و پارامترها یا خروجی های اختیاری پشتیبانی نمی شوند. این محدودیت عمداً به منظور اطمینان از عملکرد صحیح و اجرای کارآمد پشتیبانی از گردش کار الگوریتم با استفاده از مدلهای پردازش معرفی شد. شایان ذکر است که طراحی الگوریتم، که فهرستی از خروجیها و ورودیها را مدیریت میکند، میتواند به راحتی پارامترهای اختیاری را در خود جای دهد، اما پیچیدگی مدلهای پردازش را افزایش میدهد. بنابراین، زمانی که کلاس GeoAlgorithm طراحی شد ، محدودیت هایی اعمال شد . در حال حاضر هیچ برنامه کوتاه مدت یا میان مدتی برای افزودن پشتیبانی از پارامترها و خروجی های اختیاری وجود ندارد، زیرا ممکن است نیاز به بازنویسی Modeler داشته باشد.
-
الگوریتم ها نمی توانند هیچ نوع تعاملی داشته باشند و باید به صورت جعبه سیاه کار کنند و ورودی ها را دریافت کنند و فایل های خروجی را بدون مشارکت کاربر در فرآیند ارائه دهند. این محدودیت برای اطمینان از اینکه مدل های تولید شده از الگوریتم های پردازش می توانند به طور خودکار بدون نیاز به اقدامات کاربر اجرا شوند، معرفی شد .
-
زمانی که مجموعه داده ورودی باید تبدیل شود، عملکرد کاهش می یابد. این امر به ویژه با مجموعه داده های بزرگ قابل توجه است. در حال حاضر، پردازش از این واقعیت استفاده نمیکند که هنگام زنجیرهسازی چندین الگوریتم از یک ارائهدهنده، نیازی به تبدیل مجموعه دادهها نیست. مکانیزم بهینه سازی در حال حاضر در دست توسعه است.
در مورد خاص ادغام SAGA و GRASS GIS، این محدودیتها به صورت دستی مدیریت شدهاند و الگوریتمهایی را که نمیتوان مستقیماً در شکل فعلیشان ادغام کرد، تطبیق داد یا در برخی موارد حذف کرد. برخی از محدودیت های ادغام SAGA به شرح زیر است:
-
الگوریتمهای تعاملی SAGA، مانند کریجینگ با برازش واریوگرام تعاملی، به پردازش اضافه نشدهاند .
-
الگوریتمهای منفرد که چندین روش را با پارامترهای اختیاری پیادهسازی میکنند به الگوریتمهای پردازش چندگانه تقسیم شدند . این راه حل، به عنوان مثال، برای الگوریتم بافر SAGA، که به یک الگوریتم پردازش برای هر روش با پارامترهای مربوطه تقسیم شد، استفاده شد.
-
پشتیبانی SAGA برای داده های برداری، زمانی که در خط فرمان استفاده می شود، به فایل های شکل محدود می شود. این منجر به نتایج متناقض می شود، به خصوص زمانی که مجموعه داده اصلی حاوی نام فیلدهای بیش از 10 کاراکتر باشد، که توسط فرمت DBF (فایل پایگاه داده dBASE) که برای ذخیره داده های ویژگی در فایل های شیپ استفاده می شود، پشتیبانی نمی شوند.
4. از موارد و مثال های کاربردی استفاده کنید
این بخش موارد استفاده معمولی از ژئوپردازش در تحقیق و توسعه و نحوه پشتیبانی طراحی پردازش از آنها را مورد بحث قرار می دهد. موارد استفاده ارائه شده شامل خودکارسازی و مستندسازی گردشهای کاری ژئوپردازش متشکل از الگوریتمهایی از یک یا چند منبع با استفاده از مدلها و اسکریپتها، پیادهسازی الگوریتمهای جدید، و همچنین به اشتراکگذاری مدلها یا اسکریپتها برای تسهیل تحقیقات قابل تکرار است. مثالهای کاربردی در دنیای واقعی که برای نشان دادن این موارد استفاده استفاده میشوند، حوزههای اکولوژی، ارزیابی کیفیت دادهها، تحقیقات تحرک، ارزیابی ریسک و زمینشناسی را در بر میگیرند.
4.1. اتوماسیون و مستندسازی گردش کار
یک مورد اصلی استفاده از چارچوب پردازش ، اتوماسیون گردش کار است. با خودکارسازی گردش کار، کاربران می توانند با کاهش زمان صرف شده برای کارهای تکراری، کارایی خود را افزایش دهند. علاوه بر این، مدل ها و اسکریپت ها همچنین می توانند به عنوان ابزاری برای مستندسازی مراحل گردش کار عمل کنند. اتوماسیون را می توان با زنجیره ای کردن ابزارها در مدل های ژئوپردازش یا با فراخوانی الگوریتم ها در اسکریپت های پایتون به دست آورد.
اتوماسیون گردش کار با استفاده از مدلهای پردازش جغرافیایی استفاده میشود، به عنوان مثال، توسط [ 27 ]، که از مدلی ترکیبی از الگوریتمهای SAGA و GDAL برای ایجاد یک شبکه هیدرولوژیکی برای ارزیابی اثرات گواهینامه جنگل بر وضعیت اکولوژیکی جریانهای مدیترانه استفاده میکنند. در حالی که هر دو الگوریتم SAGA و GDAL می توانند از خط فرمان نیز دسترسی داشته باشند، امکان ادغام الگوریتم ها از هر دو منبع در یک مدل گرافیکی، محقق را قادر می سازد تا به جای پرداختن به ویژگی ها و نحو خط فرمان، به طور کامل بر تجزیه و تحلیل واقعی تمرکز کند. از ابزارهای درگیر
نمونههای بیشتری از کاربردهای مدل پردازش را میتوان در بخش مطالعه موردی QGIS یافت: [ 28 ] مدلی را برای نقشهبرداری مناطق کانونی برای تنوع زیستی و خدمات اکوسیستم ارائه میکند که ابزارهای GRASS GIS، SAGA و QGIS را ترکیب میکند. [ 29 ] مدلی برای محاسبه خطر آتش سوزی جنگل ارائه می دهد که ابزارهای GRASS GIS، SAGA و QGIS (به طور خاص، QGIS ftools و MMQGIS) را ترکیب می کند. اخیراً، [ 16 ] مدلی را برای خودکارسازی شناسایی مناطق لرزه ای ناپایدار با ترکیب الگوریتم های GRASS GIS، GDAL و QGIS ارائه کرده است، همانطور که در شکل 7 نشان داده شده است .
برای خودکارسازی بیشتر تحلیلهای فضایی، اسکریپتها و مدلهای پردازشی را میتوان از خط فرمان و درون اسکریپتهای پایتون فراخوانی کرد. به عنوان مثال، [ 30 ] یک اسکریپت پردازش ایجاد کرد که برآوردهای انرژی را برای وسایل نقلیه الکتریکی در یک مسیر مشخص محاسبه میکند. برای مقایسه تأثیر مجموعه دادههای ورودی مختلف و تنظیمات پارامتر، آنها از یک اسکریپت پایتون استفاده میکنند که فراخوانی اسکریپت پردازش را با ترکیبهای مختلفی از مجموعه دادههای ورودی و تنظیمات پارامتر انجام میدهد. فهرست 8 یک نسخه ساده شده از اسکریپت را نشان می دهد که نحوه تولید اسکریپت های پردازش توسط کاربر (مانند اسکریپت برآورد انرژی ) و سایر پردازش ها را نشان می دهد.ابزارها (مانند qgis:basicstatisticsfornumericfields ) را می توان با استفاده از processing.runalg() فراخوانی کرد و از نتایج آنها در این مثال برای محاسبه آمار توصیفی استفاده کرد.
فهرست 8: استفاده مثالی از Processing در خط فرمان (نسخه ساده شده اسکریپت مورد استفاده برای [ 30 ])
پردازش واردات out_path = "/home/user/output.shp" processing.runalg("script:estimateenergy", "input.shp"، "id"،"/home/user/input.tif، v، out_path) stats = processing.runalg("qgis:basicstatisticsfornumericfields", out_path"kWh"،هیچکدام) avg_kwh = آمار['MEAN']
4.2. ادغام الگوریتم های جدید
پردازش توسعه ابزارهای پردازش جغرافیایی و افزودن الگوریتمهای جدید به جعبه ابزار را تسهیل میکند و به محققان و توسعهدهندگان اجازه میدهد بر روی الگوریتمهای اصلی تمرکز کنند، در حالی که تولید خودکار رابط کاربری گرافیکی و توابع ابزار برای دسترسی و نوشتن دادهها، وظایف تکراری را انجام میدهند. ادغام الگوریتم جدید را می توان با نوشتن اسکریپت های پردازش سفارشی یا با توسعه ارائه دهندگان الگوریتم اضافی به دست آورد.
ادغام الگوریتمهای جدید با استفاده از اسکریپتها، برای مثال، توسط [ 17 ] استفاده میشود ، که مدلهای ژئوپردازش را برای ارزیابی کیفیت دادههای OpenStreetMap ارائه میکند که ابزارهای موجود از جعبه ابزار پردازش و اسکریپتهای سفارشی ایجاد شده بهویژه برای این کار را ترکیب میکند. اسکریپت های سفارشی شامل اجرای محاسبات فاصله Hausdorff ( https://github.com/anitagraser/QGIS-Processing-tools/blob/master/1.1/scripts/hausdorff_distance_pairwise.py ) است که برای تعیین شباهت شبکه خیابانی استفاده می شود. ویژگی ها در مجموعه داده های مختلف این اسکریپت از ابزارهای راحتی پردازش مانند VectorWriter بهره می بردکلاس، برای ساده کردن نوشتن خروجی الگوریتم. علاوه بر این، هنگامی که اسکریپت از طریق جعبه ابزار یا Modeler اجرا می شود، رابط کاربری به طور خودکار تولید می شود. فرآیند تولید خودکار رابط کاربری گرافیکی مراقب است، برای مثال، فقط لایههای برداری را به عنوان لایههای ورودی بالقوه فهرست کند و فیلدهای ورودی فهرست ویژگیهای لایه را با لایههای انتخابی همگامسازی کند.
نمونه های بیشتری از الگوریتم های جدید را می توان در مخزن اختصاصی Github یافت [ 26 ]. کاربران می توانند به اسناد ذخیره شده در فایل های .help از طریق رابط کاربری که به طور خودکار تولید می شود و همچنین از طریق عملکرد processing.alghelp (“algname”) دسترسی داشته باشند .
نمونهای از ارائهدهنده الگوریتم جدید در افزونه Concave Hull ( http://plugins.qgis.org/plugins/concavehull/ ) پیادهسازی شده است، که ابزارهایی را به نقاط خوشهای و محاسبه بدنههای مقعر در اطراف مجموعهای از نقاط اضافه میکند. علاوه بر این ادغام پردازش ، این افزونه همچنین یک گفتگوی معمولی رابط کاربری پلاگین را ارائه می دهد که از طریق منوی QGIS Vector قابل دسترسی است. این رویکرد توسعه دهندگان پلاگین را قادر می سازد تا هم از کاربرانی که گفتگوهای پلاگین کلاسیک را ترجیح می دهند و هم از کاربران پردازشی که ممکن است بخواهند این ابزارها را با ابزارهای دیگر در جعبه ابزار ترکیب کنند، پشتیبانی کنند.
4.3. به اشتراک گذاری و تحقیقات تکرارپذیر
به اشتراک گذاری ابزارهای ژئوپردازش (اسکریپت ها و همچنین مدل ها) گام مهمی به سوی تحقیقات تکرارپذیر است. ابزارهای مشترک، سایر محققان را قادر میسازد تا فرآیند تحلیل را مطالعه کنند و نتایج منتشر شده را به روشی بسیار سادهتر از تلاش برای بازتولید گامهای منفرد بر اساس یک توصیف متنی یا مجبور به پیادهسازی تحلیل از روی شبه کد، بازتولید کنند.
به عنوان مثال، [ 17 ] یک مدل پردازش را برای ارزیابی دقت موقعیتی شبکه خیابانی OpenStreetMap (OSM) با مقایسه آن با یک شبکه مرجع توصیف می کند. گردش کار بر اساس روشی است که در [ 31 ] شرح داده شده است، که در بسیاری از مطالعات دیگر در مورد کیفیت OSM استفاده شده است. تکثیر مراحل جداگانه با استفاده از عملکرد استاندارد GIS آسان است، که مطمئناً به محبوبیت این روش در بین بسیاری از محققان کمک کرد. مدلی که در شکل 8 نشان داده شده است ، این روش را با ترکیب چندین ابزار QGIS از پردازش پیاده سازی می کند.جعبه ابزار در یک گردش کار خودکار. بنابراین، این مدل می تواند در مناطق مختلف مورد علاقه اعمال شود و در عین حال اطمینان حاصل شود که فرآیند همیشه به همان روش انجام می شود. هم نمودار مدل و هم کد منبع مدل همراه با مقاله منتشر شده است ( https://github.com/anitagraser/QGIS-Processing-tools/tree/master/1.1/models ).
تاکنون کد اشتراک گذاری هنوز در بین محققان حوزه علوم اطلاعات جغرافیایی و رشته های مرتبط با استفاده از GIS استاندارد نشده است. در حالی که برخی از محققین حداقل نمودارهایی از مدلهای پردازشی که توسعه دادهاند منتشر میکنند، بسیاری از انتشارات حاوی اطلاعاتی در این سطح از جزئیات نیستند. با افزایش روند به سمت تحقیقات تکرارپذیر، انتظار داریم در آینده شاهد انتشار ابزارهای پردازش بیشتری باشیم.
5. نتیجه گیری و چشم انداز
در این مقاله، چارچوب پردازش را ارائه کردیم که یک ادغام یکپارچه کارآمد از ابزارهای پردازش جغرافیایی از منابع مختلف در سیستم اطلاعات جغرافیایی QGIS را فراهم میکند. این چارچوب جدید برای غلبه بر مشکلات مربوط به پیاده سازی های قبلی ابزارهای پردازش جغرافیایی در QGIS، مانند فقدان رابط کاربری و سازگاری رفتار، تکرار کدهای گسترده و فقدان قابلیت های اتوماسیون طراحی شده است. معماری پردازش با ادغام مستقیم چندین کتابخانه مانند QGIS، GDAL/OGR، SAGA، GRASS GIS، R و ORFEO Toolbox از نیاز به تکرار تلاش های توسعه جلوگیری می کند. علاوه بر این، پردازش با هدف تسهیل توسعه و همچنین استفاده از ابزارهای ژئوپردازش است.
برای کاربران، پردازش امکان خودکارسازی وظایف ژئوپردازش را بدون نیاز به دانش برنامه نویسی فراهم می کند. استفاده از الگوریتمهای پردازش جغرافیایی را با خودکار کردن تبدیل فرمت دادههای ورودی در صورت لزوم تسهیل میکند و بنابراین، منابع خطای احتمالی را با کاهش تعداد مراحل دستی کاربر کاهش میدهد.
برای توسعه دهندگان الگوریتم، پردازش توسعه الگوریتم های جدید را از طریق تولید خودکار رابط کاربری گرافیکی برای اسکریپت ها و مدل ها تسهیل می کند. علاوه بر این، مدلساز گرافیکی پردازش از توسعه مدولار گردشهای کاری ژئوپردازش پشتیبانی میکند و به هر ابزار اجازه میدهد تا بر روی یک عملکرد کاملاً تعریفشده تمرکز کند در حالی که میتوان گردشهای کاری پیچیده را با زنجیرهسازی ابزارهای تخصصی ساخت. توسعهدهندگان تشویق میشوند تا همه کدهای زیربنایی را بررسی کنند و همه الگوریتمها و روشها را ارزیابی، معیار، سفارشیسازی و بهبود ببخشند.
در محیطهای پژوهشی، پردازش میتواند تحقیقات تکرارپذیر را با امکان دادن به محققان برای انتشار ابزارها و مدلها با مقالات خود تسهیل کند، که میتواند مستقیماً توسط کاربران علاقهمند برای اعتبارسنجی نتایج یا استفاده از ابزارها در دادههای خود انتخاب شود. مجموعه ای از برنامه های کاربردی منتشر شده کاربرد گسترده چارچوب پردازش را نشان می دهد .
به منظور ارائه انعطافپذیری بیشتر برای اهداف مدلسازی پیشرفته، توسعه آینده باید پشتیبانی از ویژگیهای پیشرفته، مانند جریانهای شرطی یا حلقهها در مدلساز گرافیکی را اضافه کند. یکی دیگر از مسائل باز، اجرای جایگزینهایی برای ذخیرهسازی نتایج میانی یا فایلهای موقت در فایلهای شیپ به منظور جلوگیری از اشکالات این قالب، بهویژه کوتاه کردن نام ویژگیها است. طرحهای بهبود فعلی شامل پروژه تابستانی کد Google برای افزودن پشتیبانی چند رشتهای به پردازش [ 32 ]، و همچنین ادغام کتابخانه تجزیه و تحلیل فضایی PySAL [ 33 ]، همانطور که در [ 34 ] ذکر شد، میشود.
منابع
- Star, J. سیستم های اطلاعات جغرافیایی: مقدمه ; Prentice Hall: Englewood Cliffs, NJ, USA, 1990. [ Google Scholar ]
- Goodchild، MF; لانگلی، پی. مگوایر، دی جی; Rhind، DW سیستم های اطلاعات جغرافیایی و علوم ، ویرایش دوم. جان وایلی و پسران: چیچستر، بریتانیا، 2005. [ Google Scholar ]
- Sherman, G. Desktop GIS: نقشه برداری از سیاره با ابزارهای منبع باز . قفسه کتاب عملی: رالی، ایالات متحده، 2008. [ Google Scholar ]
- نتلر، ام. بومن، MH; لاندا، م. Metz, M. GRASS GIS: GIS منبع باز چند منظوره. محیط زیست مدل. نرم افزار 2012 ، 31 ، 124-130. [ Google Scholar ] [ CrossRef ]
- نرم افزار آزاد چیست؟ تعریف نرم افزار آزاد در دسترس به صورت آنلاین: https://www.gnu.org/philosophy/free-sw.html (در 17 اکتبر 2015 قابل دسترسی است).
- روچینی، دی. نتلر، ام. اجازه دهید پارادایم چهار آزادی در محیط زیست اعمال شود. Trends Ecol. تکامل. 2012 ، 27 ، 310-311. [ Google Scholar ] [ CrossRef ] [ PubMed ]
- تیم توسعه QGIS. سیستم اطلاعات جغرافیایی QGIS در دسترس آنلاین: http://qgis.osgeo.org (دسترسی در 17 اکتبر 2015).
- ون هوسن، جی. منکه، ک. اسمیت، آر. دیویس، پی. مقدمه ای بر فناوری زمین فضایی با استفاده از QGIS. موجود به صورت آنلاین: https://www.canvas.net/browse/delmarcollege/courses/introduction-to-geospatial-technology-1 (در 17 اکتبر 2015 قابل دسترسی است).
- Berman، ML GIS منبع باز با QGIS 2.0. در دسترس آنلاین: http://maps.cga.harvard.edu/qgis/ (دسترسی در 17 اکتبر 2015).
- Graser, A. Learning QGIS , 2nd ed.; Packt Publishing: بیرمنگام، بریتانیا، 2014. [ Google Scholar ]
- زامبلی، پ. گبرت، اس. Ciolli، M. Pygrass: یک رابط برنامه نویسی برنامه کاربردی Python شی گرا (API) برای سیستم پشتیبانی تجزیه و تحلیل منابع جغرافیایی (GRASS) سیستم اطلاعات جغرافیایی (GIS). ISPRS Int. J. Geo-Inf. 2013 ، 2 ، 201-219. [ Google Scholar ] [ CrossRef ]
- نتلر، ام. Mitasova، H. متن باز GIS: A GRASS GIS Approach , 3rd ed.; Springer: New York, NY, USA, 2008; جلد 773، ص. 406. [ Google Scholar ]
- تیم توسعه SAGA. سیستم برای تجزیه و تحلیل خودکار زمین علمی (SAGA). در دسترس آنلاین: http://saga-gis.org (در تاریخ 17 اکتبر 2015 قابل دسترسی است).
- Olaya، V. SEXTANTE، یک پلت فرم رایگان برای تجزیه و تحلیل جغرافیایی. OSGeo J. 2009 ، 6 ، 32-39. [ Google Scholar ]
- کوسنتینو، جی. کولتلا، م. کاوئوتو، جی. سیوتولی، جی. Cavinato، GP; سلام، GI; کاسترانی، ع. دی سانتو، آر. ترولی، آی. Caggiano، T. ویژگی های نقشه جدید در پروژه ریزپهنه بندی لرزه ای سطح اول 61 شهرداری در استان فوجیا (منطقه آپولیا، ایتالیا). در مجموعه مقالات هفتمین کنگره اروپا در مورد نقشه برداری و سیستم های اطلاعاتی علمی جغرافیایی منطقه ای، بولونیا، ایتالیا، 12 تا 15 ژوئن 2012.
- کوسنتینو، جی. پنیکا، F. مدل ژئوپردازش QGIS برای سادهسازی تحلیل ریزپهنهبندی لرزهای سطح اول – مطالعات موردی QGIS. در دسترس آنلاین: http://qgis.org/en/site/about/case_studies/italy_rome.html (دسترسی در 17 اکتبر 2015).
- گریزر، ا. استراوب، ام. Dragaschnig, M. Towards a Towards a Open Source Analysis Toolbox برای مقایسه شبکه خیابانی: شاخص ها، ابزارها و نتایج مقایسه OSM و نمودار مرجع رسمی اتریش. ترانس. GIS 2014 ، 18 ، 510-526. [ Google Scholar ] [ CrossRef ]
- Minn, M. MMQGIS—QGIS Python Plugins Repository. در دسترس آنلاین: http://plugins.qgis.org/plugins/mmqgis/ (دسترسی در 17 اکتبر 2015).
- تیم توسعه GDAL. GDAL—کتابخانه انتزاعی داده های جغرافیایی. در دسترس آنلاین: http://www.gdal.org (دسترسی در 17 اکتبر 2015).
- اولیا، V. مقدمه ای ملایم بر SAGA GIS. در دسترس آنلاین: http://prdownloads.sourceforge.net/saga-gis/SagaManual.pdf?download (در 17 اکتبر 2015 قابل دسترسی است).
- تیم توسعه GRASS. نرم افزار سیستم پشتیبانی تجزیه و تحلیل منابع جغرافیایی (GRASS GIS). در دسترس آنلاین: http://grass.osgeo.org (دسترسی در 17 اکتبر 2015).
- تیم اصلی R. R: زبان و محیطی برای محاسبات آماری. در دسترس آنلاین: http://www.R-project.org (در 17 اکتبر 2015 قابل دسترسی است).
- بیوند، RS; Pebesma، EJ; Gómez-Rubio، V. تحلیل داده های فضایی کاربردی با R. Springer: New York, NY, USA, 2008; پ. 405. [ Google Scholar ]
- تیم توسعه OTB. راهنمای نرم افزار جعبه ابزار ORFEO. در دسترس به صورت آنلاین: http://www.orfeo-toolbox.org (در 17 اکتبر 2015 قابل دسترسی است).
- تاربتون، DG تجزیه و تحلیل زمین با استفاده از مدل های ارتفاعی دیجیتال (TauDEM). در دسترس آنلاین: http://hydrology.usu.edu/taudem/taudem5/ (در 17 اکتبر 2015 قابل دسترسی است).
- Olaya، V. Github: qgis/QGIS-Processing. در دسترس آنلاین: https://github.com/qgis/QGIS-Processing (در 17 اکتبر 2015 قابل دسترسی است).
- دیاس، FS; Bugalho، MN; رودریگز-گونزالس، PM; آلبوکرک، آ. Cerdeira, JO اثرات گواهینامه جنگل بر وضعیت اکولوژیکی رودخانه های مدیترانه ای. J. Appl. Ecol. 2014 ، 52 ، 190-198. [ Google Scholar ] [ CrossRef ]
- Dias، F. استفاده از QGIS برای نقشهبرداری مناطق کانونی برای تنوع زیستی و خدمات اکوسیستم (HABEaS)—مطالعات موردی QGIS. در دسترس آنلاین: http://qgis.org/en/site/about/case_studies/portugal_lisbon.html (دسترسی در 17 اکتبر 2015).
- Venâncio، P. QGIS و نقشه برداری خطر آتش سوزی جنگل در پرتغال – مطالعات موردی QGIS. در دسترس آنلاین: http://qgis.org/en/site/about/case_studies/portugal_pinhel.html (دسترسی در 17 اکتبر 2015).
- گریزر، ا. آسامر، جی. Ponweiser, W. ضریب ارتفاع: کیفیت مدل ارتفاع دیجیتال و تأثیرات نمونه بر روی خطاهای تخمین انرژی خودروی الکتریکی. در مجموعه مقالات کنفرانس بین المللی IEEE در مورد مدل ها و فناوری ها برای سیستم های حمل و نقل هوشمند (MT-ITS)، بوداپست، مجارستان، 3 تا 5 ژوئن 2015.
- Goodchild، MF; Hunter، GJ یک اندازه گیری دقت موقعیتی ساده برای ویژگی های خطی. بین المللی جی. جئوگر. Inf. علمی 1997 ، 11 ، 299-306. [ Google Scholar ] [ CrossRef ]
- Google Summer of Code. QGIS — پشتیبانی چند رشته ای در جعبه ابزار پردازش QGIS. در دسترس آنلاین: http://www.google-melange.com/gsoc/project/details/google/gsoc2015/mvcs/5741031244955648 (در تاریخ 17 اکتبر 2015 قابل دسترسی است).
- Graser، A. Github: anitagraser/QGIS-Processing-Tools-PySAL Integration. در دسترس آنلاین: https://github.com/anitagraser/QGIS-Processing-tools/wiki/PySAL-Integration (دسترسی در 17 اکتبر 2015).
- ری، اس جی. آنسلین، ال. لی، ایکس. پهله، ر. لورا، جی. لی، دبلیو. Koschinsky، J. تجزیه و تحلیل جغرافیایی فضایی باز با PySAL. ISPRS Int. J. Geo-Inf. 2015 ، 4 ، 815-836. [ Google Scholar ] [ CrossRef ]
© 2015 توسط نویسندگان; دارنده مجوز MDPI، بازل، سوئیس. این مقاله یک مقاله با دسترسی آزاد است که تحت شرایط و ضوابط مجوز Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/) توزیع شده است.


بدون نظر