برنامه نویسی در GIS :آیا برای حرفه ای شدن در GIS باید نحوه کدنویسی را بدانم؟
آیا برای حرفه ای شدن در GIS باید نحوه کدنویسی را بدانم؟جواب کوتاه، نه است. اما بیشتر از آنچه تصورش را بکنید به شما کمک خواهد کرد. دنیای GIS نیازی به کدنویسی همه افراد ندارد. اکثر نرمافزارهای GIS به اندازهای پیچیده هستند که میتوان به راحتی کل زندگی حرفهای خود را صرف کار با یک برنامه کرد و هرگز از همه آن استفاده نکرد، چه رسد به اینکه مجبور به بهبود آن باشیم. مطمئناً می توان در یک جنبه خاص از GIS یا نوع خاصی از تجزیه و تحلیل تخصص داشت و هرگز یاد گرفت که کد خود را بنویسد. اگر فکر برنامه نویسی باعث ایجاد لرزش در ستون فقرات شما می شود، نترسید. شما همیشه مورد نیاز خواهید بود.
از طرف دیگر، اگر شما از آن دسته افرادی هستید که دوست دارید زیر کاپوت خود را بچرخانید و به اطراف بچرخید تا ببینید اوضاع چگونه کار می کند. یا اگر از انجام مکرر همان کارهای پیش پا افتاده اذیت می شوید، مطمئناً باید به یادگیری کدنویسی فکر کنید. این کار ارزش شما را برای کارفرمایتان بسیار افزایش می دهد و شما را از سال ها ناامیدی نجات می دهد. بهترین از همه، سرگرم کننده است!!!! و همکارانتان وقتی به آنها بگویید “من می توانم آن را برای شما خودکار کنم!”
یک بسته GIS دسکتاپ مانند ArcGIS یا QGIS مجموعه ابزاری برای پاسخگویی به سوالات فضایی است. به همان اندازه که قدرتمند هستند، هیچ راهی وجود ندارد که توسعهدهندگان بتوانند هر سوالی را پیشبینی کنند و راهحلهای ساده و خارج از جعبه را ارائه دهند. اگر به خانه نیاز دارید، می توانید یک خانه پیش ساخته را به صورت کیت سفارش دهید و با کمی دردسر آن را کنار هم قرار دهید. اگر نیازهای شما را برآورده کند خوب است. اما اکثر سازندگان به سرعت با موقعیت هایی مواجه می شوند که در آن باید تنظیمات انجام شود. ممکن است به دلیل اندازه، شکل یا توپوگرافی زمین یا به نیاز مشتری باشد. شما می توانید در ساخت خانه های پیش ساخته و نادیده گرفتن مشتریانی که چیزی فراتر از آنچه شما می خواهید انجام دهید، شغلی ایجاد کنید. با این حال، کسی قرار است یاد بگیرد که چگونه این نیازها را برآورده کند،
چرا برنامه؟
دلایل یادگیری نوشتن کد خود به سه دسته کلی تقسیم می شود. مسلماً بین آنها همپوشانی وجود دارد.
- تحلیلی
- اتوماسیون
- رابط های کاربری
دلایل تحلیلی شامل استفاده از ابزارهای مکانی برای حل مسائلی است که یا جدید هستند یا به اندازه کافی پیچیده هستند که هیچ راه حلی وجود ندارد. اولین تلاش من در برنامه ریزی فضایی به عنوان یک دانشجوی کارشناسی در رشته زیست شناسی حیات وحش بود. من روی پروژه ای کار کردم که سعی داشت با استفاده از بررسی های ردیابی برف، جمعیت گوشتخواران جنگلی متوسط را در یلوستون NP نظارت کند. کار میدانی به اندازه کافی ساده بود، شما به اطراف اسکی می روید و تعداد مسیرهایی را که با آنها روبرو می شوید ثبت می کنید. چیزی که چندان آسان نبود، این بود که بفهمیم چقدر تغییر در تعداد مسیرها لازم است تا نشان دهد یک تغییر واقعی در جمعیت واقعی که باید نگران آن باشیم، یا حتی احتمال کشف حیوانات کمیاب، مانند گرگ و سیاه گوش چقدر است. با توجه به سطح تلاش ما.
تصمیم گرفتم چند شبیه سازی کامپیوتری برای پاسخ به این سوالات ایجاد کنم. این شامل ایجاد الگوهای تصادفی مسیر حیوانات و یک طرح نمونهبرداری و سپس محاسبه تعداد تقاطعها بود. من در آن زمان در وسط یک GIS کوچک بودم، اما یک کامپیوتر با قابلیت GIS در آن زمان بسیار گران بود و برای چنین سوالات بیهوده بدون بودجه کارشناسی در دسترس نبود، بنابراین ابتدا شبیه سازی ها را در PASCAL نوشتم. بعدها که ArcView 3.0 منتشر شد و قدرت زبان برنامه نویسی Avenue آن را دیدم، شبیه سازی هایم را در یک GIS واقعی دوباره نوشتم و توانستم از ابزارهای آن برای تحلیل و نمایش فضایی استفاده کنم. این پروژه من را تا حد زیادی ساده کرد، اما هنوز بدون کد انجام نمی شود. داشتن یک ابزار بزرگتر عالی بود، اما من هنوز مجبور بودم قطعات را خودم کنار هم بگذارم.
بعداً این خط پرسش به یک برنامه دکترا منتهی شد که بر روشهای آماری برای تجزیه و تحلیل الگوهای حرکت حیوانات بهعنوان یک مسیر خطی، به جای مجموعهای از نقاط غیرمرتبط تمرکز داشت. Esri به تازگی ArcGIS 8.0 را منتشر کرده بود و نیاز به یادگیری Visual Basic و ArcObjects داشت که مجموعهای از ابزارهای قدرتمندتر از Avenue بود. اما هنوز فقط ابزار بود. در آن زمان هیچ کس حتی این سؤال را نپرسیده بود، چه رسد به اینکه آن را حل کند. این پروژه عنصر زمان را به عنوان مختصات 3 برای هر راس معرفی کرد که با ذخیره زمان در مختصات z توانستم این کار را انجام دهم. البته، این همچنین مستلزم نوشتن تمام کدهای خودم بود که درک می کرد چگونه مختصات z را به عنوان زمان تفسیر کند تا تجزیه و تحلیل من را انجام دهم.
در طول این مدت، من با محققان دیگری کار کردم که بسیاری از آنها دانشمندان برجسته ای بودند که ایده های خوبی در مورد سؤالات تحقیقاتی در زمینه بوم شناسی منظر داشتند. با این حال، هیچ یک از آنها نمی دانستند که چگونه در یک محیط GIS برنامه ریزی کنند، بنابراین نمی توانستند بدون کمک آن ایده ها را پیاده سازی کنند. ناگفته نماند چند سالی سرم خیلی شلوغ بود.
اتوماسیون
هیچ کس کارهای روزمره و تکراری را دوست ندارد. انسان ها مغزشان را برای حل مشکلات جدید تکامل دادند و اکثر ما وقتی یک کار را بارها و بارها انجام می دهیم به سرعت خسته می شویم. تمرکز بر روی این وظایف دشوار است و ناتوانی در تمرکز به ناچار منجر به اشتباه می شود. کارفرمایان به من گفتهاند که استخدام فردی با حداقل دستمزد برای انجام کارهای تکراری خستهکنندهتر ارزانتر است، سپس باید به من پول بدهند تا فرآیندی را برای آنها خودکار کنم. بیشتر اوقات ریاضی آنها اشتباه بود. حتی زمانی که در ظاهر درست به نظر می رسید، آنها نتوانستند درک کنند
- چقدر مردم از انجام این کارها بدشان می آمد.
- چقدر سخت است که 8 ساعت در روز داده ها را در یک صفحه گسترده وارد کنید.
- زمانی که اشتباهات ناگزیر مرتکب می شوند چقدر می تواند پرهزینه باشد.
همه این مشکلات زمانی بزرگتر می شوند که شما تمایلی به پرداخت دستمزد معقول به کارکنان نداشته باشید. هزینه های استخدام و آموزش یک فرد جدید هر چند ماه یکبار که آن کارمندان به ناچار پیشنهادهای بهتری پیدا می کنند نیز می تواند قابل توجه باشد.
نکته اصلی این است که اگر خودکار کردن یک فرآیند نسبتاً ساده است، باید آن را خودکار کنید. کارکنان ماهر بسیار ارزشمندتر از آن هستند که یک مرخصی داشته باشند زیرا در کار خود حوصله سر رفته اند. یکی از اولین مشاغل من در صنعت مشاوره زیست محیطی شرکتی بود که در نزدیکی یک میدان گاز طبیعی بزرگ کار می کرد. هر چاه جدید نیاز به ارزیابی بیولوژیکی داشت که اساساً یک چک لیست بود. تا نزدیکترین جاده چقدر است؟ زمین شناسی زیربنایی چه بود؟ چند حلقه چاه موجود در شعاع 1 مایلی بود؟ آیا این پروژه در زیستگاه گونه های در حال انقراض بود؟ و غیره. هر کدام چند ساعت تحقیق با استفاده از داده های GIS ما طول کشید. من به رئیس جدیدم گفتم که میتوانم بیشتر آن را خودکار کنم و به سادگی گزارشی را ارائه کنم که تمام اطلاعاتی را که میتوان توسط GIS تعیین کرد فهرست کرد. این نیاز به بازدید میدانی را از بین نمی برد، اما مطمئناً بسیاری از کارهای روزمره اداری را از بین می برد. وقتی رئیسم به من گفت که این بدان معناست که ما نمیتوانیم ساعتهای زیادی را صورتحساب بدهیم و او پول کمتری به دست میآورد، شوکه شدم.
یک سال بعد یکی از سازمان های دولتی مقررات خود را برای دفع مایعات فراکینگ تغییر داد. آنها به مجموعه ای مشابه از اطلاعات نیاز داشتند و از حضور در چاه هایی که قبل از تغییر قانون مجاز بود، خودداری کردند. یکی از مشتریان ما 7000 چاه مجاز داشت که مشمول قانون جدید بودند و آنها از تاخیرهای احتمالی در بهره وری وحشت داشتند. رئیسم از من پرسید که آیا میتوانم کمکی کنم، بنابراین من با آژانس دولتی کار کردم تا زبان و دادههایی را که برای آنها قابل قبول باشد ارائه کنم و فرآیند را خودکار کردم تا صفحهگستردهای که فقط شامل نام چاه و مختصات طول و عرض جغرافیایی باشد را اجرا کنم. برای هر چاه 2 روز طول کشید تا کد را بنویسم و سپس 3 روز طول کشید تا آن را برای همه 7000 حلقه چاه اجرا کنم، اما تقریباً یک سال از عقب ماندگی شرکت را نجات داد. رئیس من شبیه یک قهرمان بود.
در کار دیگر، من با وضعیت مشابه و رئیسی مشابه روبرو شدم که فکر نمیکرد به یک «برنامهنویس» نیاز داشته باشد. فقط کسی که نقشه بسازد این پروژه همچنین شامل چاه های گاز طبیعی بود اما در زمین های عمومی نبود. با این حال، مخالفتهای محلی زیادی از سوی مالکان خصوصی وجود داشت و شرکت تمام تلاش خود را میکرد تا نشان دهد که آنها برای هر چاه بازبینی زیستمحیطی انجام میدهند و دستورالعملهای دولت را رعایت میکنند، حتی اگر از نظر قانونی، در بسیاری از موارد از آنها خواسته نشده بود. به رئیسم گفتم که میتوانم آن فرآیند را نیز خودکار کنم و پاسخ مشابهی دریافت کردم. تا زمانی که برخی از کارمندان حوزه ما شروع به اشتباهاتی کردند که باعث شد مشتری ما بد به نظر برسد و ما در خطر از دست دادن مشتری بودیم، رئیسم به من گفت که برای جلوگیری از خطاهای انسانی بیشتر، بخش بررسی GIS را خودکار کنم.
من در پروژه دیگری درگیر بودم که شامل یک معدن پیشنهادی بود. بخشی از این تلاش برای ارزیابی تغییرات زیستگاه ماهی ناشی از تغییرات رژیم جریان در رودخانه های مجاور به دلیل عملیات معدنکاری بود. شرکت دیگری در حال تعیین این بود که این تغییرات چه خواهد بود. هنگامی که ما در نهایت آن اعداد را دریافت کردیم و من روی ارزیابی تأثیرات تحت یک سناریو کار کردم، متوجه شدم که می توانم محاسبات را برای هر سناریویی با مجموعه ای از داده های جریان به طور خودکار انجام دهم. رئیسم به من گفت که مزاحم نباشم زیرا اینها “اعداد نهایی” هستند و تغییر نمی کنند. من او را نادیده گرفتم زیرا ترجیح میدهم کد بنویسم تا محاسبات صفحهگسترده عادی را انجام دهم و تجربه باعث شده است که نسبت به مفهوم اعداد “نهایی” تردید داشته باشم. دو هفته بعد، او به من گفت که اشتباهی در شمارههای جریان اصلی که دریافت کردهایم وجود داشته است و از من پرسید که چقدر طول میکشد تا آنالیز را دوباره انجام دهیم. در ابتدا 2 هفته طول کشید و به او گفتم 30 دقیقه دوباره این کار را انجام دهم. بعداً، اعداد مجدداً چندین بار تغییر کردند زیرا پروژه مراحل NEPA را طی کرد و رئیس من بسیار خوشحال بود که می توانم مجموعه جدیدی از اعداد را به سرعت اجرا کنم.
رابط های کاربری
اکثر مردم متخصص GIS نیستند، اما تقریباً همه می توانند نقشه را روی رایانه یا تلفن پیمایش کنند و می توانند داده ها را از طریق یک فرم رایانه وارد کنند. برنامه نویسی همچنین به شما این امکان را می دهد که رابط های سفارشی سازی شده برای داده های خود ایجاد کنید. دلایل مختلفی وجود دارد که ممکن است بخواهید این کار را انجام دهید.
- برای کارکنان داخلی که در GIS آگاهی ندارند اما باید بتوانند چیزهایی را روی نقشه پیدا کنند.
- برای اطمینان از اینکه داده ها قبل از ورود به دقت اعتبارسنجی می شوند تا اشتباهات به حداقل برسد و زمان ورود داده ها کاهش یابد.
- برای ارائه دسترسی ایمن به مشتریان خود به داده هایی که برای آنها جمع آوری می شود.
- برای اینکه کاربران دستگاه های تلفن همراه بتوانند داده های شما را مشاهده و ویرایش کنند
در بسیاری از برنامه های GIS، داده ها بر روی یک سرور مرکزی ذخیره می شوند و مشتریان مختلف می توانند به آن دسترسی داشته باشند. کلاینتها میتوانند یک نرمافزار GIS دسکتاپ کاملاً کاربردی مانند ArcMap یا QGIS باشند، همچنین میتوانند صفحات وب، برنامههای کاربردی تلفن همراه و/یا رابطهای سفارشی نوشته شده در پایتون، ویژوال بیسیک یا برخی از زبانهای برنامهنویسی دیگر باشند. یک رابط همچنین می تواند یک افزونه سفارشی برای یک برنامه دسکتاپ GIS موجود باشد.
یک رابط سفارشی برای کارکنان داخلی و/یا مشتریان میتواند دادههای شما را برای مشاهده و سایر وظایف خاص در دسترس کسانی قرار دهد که دانش ویژه GIS ندارند و بدون استفاده از مجوز گران قیمت رومیزی GIS. مدیران پروژه باید بتوانند دادهها را جستجو کنند، آنها را بر اساس ویژگیها فیلتر کنند و تجزیه و تحلیل ساده و دقیق انجام دهند. پرسنل میدانی نیز باید بتوانند دادهها را اضافه کنند و این دادهها باید کاملاً اعتبارسنجی شوند تا خطاها کاهش یابد و احتمالاً کلاسهای ویژگی دیگر را بهروزرسانی کنند یا وظایف دیگری را انجام دهند.
یکی از اصلی ترین محدودیت های زیست محیطی در یکی از پروژه های گاز طبیعی که در بالا مورد بحث قرار گرفت، لانه های شکارچی بود. هنگامی که پروژه جدیدی به ما داده شد، پرسنل میدانی ما منطقه را برای لانه های شکارچیان بررسی می کردند. این یک پروژه پویا بود و ما در طول فصل لانه سازی شکارچیان به صورت هفتگی بررسی می کردیم. من یک رابط برای افزودن لانه های شکارچی توسعه دادم که فقط به پرسنل میدان نیاز داشت که روی نقشه در محل لانه کلیک کنند و گونه ها و وضعیت لانه را از لیست های کشویی انتخاب کنند. سپس رابط یک لانه نقطه و همچنین دو بافر با اندازه های مختلف اضافه می کند. قطر یکی از بافرها به گونه بستگی داشت. این به طور خودکار شامل اطلاعات مربوط به کارمندی است که لانه را پیدا کرده است، تاریخ و غیره.
این یک پروژه بزرگ و پویا بود و اغلب لانهای که در حین بررسی یک پروژه پیدا میشود، روی پروژههای اطراف آن تأثیر میگذارد، بنابراین مدیر پروژه بهطور خودکار از طریق ایمیل هنگام پیدا شدن یک لانه جدید یا زمانی که وضعیت یک لانه موجود تغییر میکند، مطلع میشود. که آنها می توانند بلافاصله به مشتری اطلاع دهند و به آنها اطلاع دهند که کدام پروژه ها تحت تأثیر قرار گرفته اند.
کار اخیر دیگر شامل توسعه داده های تالاب برای یک منطقه بزرگ از تفسیر هوایی است. من منطقه را به بیش از 60000 بخش تقسیم کردم، که هر یک از این بخش ها، ناحیه ای از تصاویر قابل مشاهده در یک صفحه کامپیوتر را در مقیاس 1:6000 نشان می دهد. به منظور اطمینان از اینکه هر قسمت از منطقه مشاهده شده است، رابطی ایجاد کردم که پس از پایان یافتن جستجوی تالاب ها، به طور خودکار از یک بخش به بخش بعدی منتقل می شود. پس از علامتگذاری بهعنوان کامل، دادهها بهروزرسانی شدند تا دوباره مورد بازبینی قرار نگیرند. مترجمان همچنین گزینه ای داشتند که آن را به عنوان «نامشخص» علامت گذاری کنند و سؤالی را که در مورد تفسیر خود داشتند وارد کنند. سپس مدیران پروژه میتوانند تفاسیر مشکوک را بررسی کنند و ببینند مترجمان چه مسائلی دارند و در مورد نحوه رسیدگی به آنها تصمیم بگیرند. مدیران پروژه همچنین می توانستند بلافاصله ببینند چه مقدار از منطقه و توسط چه کسی تکمیل شده است. هر یک از این تالاب ها نیز طبقه بندی Cowardin را دریافت کردند. سیستم Cowardin یک سیستم کدگذاری سلسله مراتبی است که در آن کدهای موجود در هر سطح به آنچه در سطح قبلی کدگذاری شده است بستگی دارد. به عنوان مثال، رودخانه ها دارای مجموعه ای متفاوت از دریاچه ها هستند. به منظور کاهش خطاها، رابط کد را بر اساس مجموعه ای از منوهای کشویی ساخت و هر منو فقط شامل گزینه های معتبر بر اساس انتخاب های قبلی بود. این سیستم مقدار زیادی از خطاها و زمان را در فرآیند QA/QC حذف کرد. سیستم Cowardin یک سیستم کدگذاری سلسله مراتبی است که در آن کدهای موجود در هر سطح به آنچه در سطح قبلی کدگذاری شده است بستگی دارد. به عنوان مثال، رودخانه ها دارای مجموعه ای متفاوت از دریاچه ها هستند. به منظور کاهش خطاها، رابط کد را بر اساس مجموعه ای از منوهای کشویی ساخت و هر منو فقط شامل گزینه های معتبر بر اساس انتخاب های قبلی بود. این سیستم مقدار زیادی از خطاها و زمان را در فرآیند QA/QC حذف کرد. سیستم Cowardin یک سیستم کدگذاری سلسله مراتبی است که در آن کدهای موجود در هر سطح به آنچه در سطح قبلی کدگذاری شده است بستگی دارد. به عنوان مثال، رودخانه ها دارای مجموعه ای متفاوت از دریاچه ها هستند. به منظور کاهش خطاها، رابط کد را بر اساس مجموعه ای از منوهای کشویی ساخت و هر منو فقط شامل گزینه های معتبر بر اساس انتخاب های قبلی بود. این سیستم مقدار زیادی از خطاها و زمان را در فرآیند QA/QC حذف کرد.
چه زبانی را باید یاد بگیرید؟
اگر تصمیم گرفتهاید که کدنویسی برای شما مناسب است و میخواهید چگونه یاد بگیرید، گام بعدی این است که تصمیم بگیرید که کدام زبان را یاد بگیرید. اگر 5 سال پیش از من می پرسیدید، ویژوال بیسیک را توصیه می کردم تا بتوانید افزونه هایی را برای ArcGIS توسعه دهید. اگرچه ESRI برخی از API ها را از طریق پایتون در کتابخانه های داده و مکانی خود منتشر کرده بود، من آنها را محدود می دانستم. ArcGIS از ArcObjects ساخته شده است و رابطهای موجود برای ArcObjects از طریق Visual Basic اساساً به شما این امکان را میدهد که کل ArcGIS را بازسازی کنید و بنابراین شما تقریباً در کاری که میتوانید انجام دهید نامحدود بودید. به طور خاص، Visual Basic و ArcObjects به شما این امکان را میدهند که فرمهای ورود دادههای خود را ایجاد کنید، چیزی که در پایتون در دسترس نبود، به جز از طریق رابط ابزار geoprocessing تا حدودی بد.
پایتون
با این حال، از آن زمان چندین چیز تغییر کرده است. به نظر می رسید ESRI برای مدتی از ArcObjects دور شده و به سمت ArcPy Python API خود می رود، اما ArcGIS هنوز از ArcObjects ساخته شده بود. انتشار ArcGIS Pro این حرکت را یک قدم جلوتر برد. ArcGIS Pro فقط از Python پشتیبانی می کرد و به نظر می رسد ArcObjects را به طور کلی رها کرده است. علاوه بر این، در طول این مدت، مزایای بسیاری از QGIS را کشف کردم و شروع به استفاده از آن در بسیاری از پروژهها کردم. QGIS همچنین امکان اسکریپت و پلاگین های پایتون را بدون پشتیبانی از VisualBasic می دهد.
پایتون به یک زبان برنامه نویسی بالغ و منبع باز تبدیل شده است که می تواند برای اهداف زیادی مورد استفاده قرار گیرد. این شامل برنامه نویسی سمت سرور برای برنامه های اینترنتی از طریق چارچوب های جنگو و جئوجانگو می شود. همچنین تعداد زیادی کتابخانه شخص ثالث برای عملیات عددی، آماری و مکانی موجود است.
زبان های مبتنی بر وب
چیز دیگری که تغییر کرده است حرکت دنیای GIS به طور کلی به سمت رابط های مبتنی بر وب و موبایل به داده های GIS است. اگر نیاز به دسترسی چند کاربره به داده های خود از طریق اینترنت دارید، تقریباً مطمئناً آن داده ها را از طریق یک مرورگر وب مشاهده خواهید کرد. تقریباً مطمئناً باید بتوانید با استفاده از فناوری های استاندارد وب از جمله HTML، CSS و جاوا اسکریپت کد بنویسید. اگر می خواهید کاربران شما بتوانند داده های شما را از یک رابط وب ویرایش کنند، برای تعامل با پایگاه داده و زبان سمت سرور نیز باید مقداری SQL بدانید.
امروز، توصیه من این است که … بستگی دارد. من احتمالاً VisualBasic یا ArcObjects را دیگر به کسی توصیه نمی کنم. اگر در زمینه تحقیق کار می کنید و داده های مکانی خود را با اعداد پرقدرت انجام می دهید، من Python را توصیه می کنم. پایتون به شما این امکان را میدهد که از قابلیتهای 64 بیتی و چند رشتهای پردازندههای خود بهره کامل ببرید و حتی در صورت نیاز به قدرت محاسباتی عظیم، رایانهها را با هم خوشهبندی کنید. اگر اصول اولیه پایتون را بدانید، می توانید پلاگین هایی برای ArcGIS، ArcGIS Pro و QGIS بنویسید. شما همچنین می توانید برنامه های کاربردی وب را با استفاده از چارچوب جنگو بنویسید، اگرچه هنوز باید HTML، CSS و جاوا اسکریپت را برای قسمت جلویی بدانید.
اگر عمدتاً علاقه مند به ایجاد رابط برای داده های GIS خود برای کاربران راه دور از طریق اینترنت هستید، من بر جاوا اسکریپت تمرکز می کنم. چندین API نگاشت جاوا اسکریپت منبع باز عالی مانند Leaflet و OpenLayers موجود است. Google maps API منبع باز نیست اما چندین مزیت نیز دارد. اگر قرار است با اکوسیستم ESRI سروکار داشته باشید، JavaScript API آنها همچنین دسترسی به داده های ذخیره شده در فرمت های سازگار با ESRI را فراهم می کند. کتابخانه Turf.js و چندین کتابخانه دیگر به جاوا اسکریپت توانایی انجام تحلیل فضایی روی کلاینت را می دهند.
اگر به قابلیت ویرایش از راه دور نیاز دارید، به یک سرور پایگاه داده و یک زبان برنامه نویسی سمت سرور نیاز دارید. PHP محبوب ترین زبان سمت سرور است. این به طور گسترده در دسترس است و شما منابع زیادی برای یادگیری آن در دسترس خواهید یافت. شما توسط PHP محدود نخواهید شد، اگرچه زبان های دیگر ممکن است مزایایی داشته باشند. اگر می خواهید در دنیای مایکروسافت بمانید، می توانید از یکی از زبان های دات نت مایکروسافت روی سرور استفاده کنید. شما می توانید کدهای سمت سرور را با استفاده از پایتون از طریق فریمورک های جنگو بنویسید و بنابراین تمام قابلیت شکستن اعداد پایتون را در اختیار خواهید داشت. همچنین میتوانید کدهای سمت سرور را با استفاده از روبی یا جاوا یا حتی جاوا اسکریپت از طریق Node.js بنویسید.
PostGIS رایج ترین پایگاه داده ای است که از نظر فضایی فعال در دنیای منبع باز است. پسوند ArcSDE ESRI با چندین پایگاه داده تجاری رایج و منبع باز کار می کند. اکثر پایگاههای داده دارای سطحی از قابلیت فضایی هستند، اگرچه در سطح PostGIS یا ArcSDE نیستند. اگر نیازهای شما ساده است، حتی می توانید داده های مکانی را در یک فیلد متنی به عنوان GeoJSON ذخیره کنید. NoSQL یا پایگاه های داده اسنادی مانند MongoDB و CouchDB می توانند GeoJSON را به صورت بومی ذخیره کنند.
توصیه من
با این حال، برای 100٪ موارد پاسخ درستی وجود ندارد. من کدی را برای تجزیه و تحلیل در جاوا اسکریپت نوشته امزیرا میخواستم آن را از طریق وب برای بسیاری از مردم در دسترس قرار دهم، و تجزیه و تحلیل آن خیلی محاسباتی فشرده نبود. من هیچ رابط کاربری در پایتون ننوشته ام، اما می توانید از pyQt یا wxPython استفاده کنید. با این حال، اگر امروز از صفر شروع می کردم، با فناوری های مبتنی بر وب جاوا اسکریپت و PostGIS شروع می کردم. مگر اینکه واقعاً اعداد را فشرده انجام دهید، این پشته فناوری بیشترین سود را برای شما به ارمغان می آورد و بیشترین سود را برای کارفرمای شما فراهم می کند. اگر به توانایی بیشتری نسبت به آنچه که از طریق اینترنت ارائه می شود نیاز دارید، همچنین می توانید یک افزونه Python برای QGIS بنویسید که به همان داده ها دسترسی خواهد داشت. و از آنجایی که QGIS رایگان است، هرکسی میتواند نرمافزار را دانلود کند، افزونه شما را نصب کند و حتی در صورت لزوم به دادههای PostGIS شما متصل شود.
یک مزیت اضافی نوشتن پلاگین در QGIS این است که اگر افزونه هایی را برای محصولات ESRI بنویسید، تقریباً به ناچار متوجه خواهید شد که کد شما در نسخه های بعدی اجرا نخواهد شد. هنگامی که این اتفاق می افتد، شما باید نرم افزار خود را ارتقا دهید تا افزونه خود را ارتقا دهید و هنگامی که این کار را انجام دادید، فقط برای پشتیبانی از کلاینت هایی که هنوز ارتقاء نداده اند و ممکن است با آن مواجه شوید، به یک رایانه جداگانه با نسخه قدیمی تر ArcGIS نیاز دارید. محدودیتهای مجوز و غیره. و مشتریان به ندرت میخواهند برای ارتقای نرمافزاری که 3 سال پیش برایشان نوشتهاید، به شما پول پرداخت کنند. همانطور که هر کسی که افزونه های ESRI را نوشته است می تواند به شما بگوید این یک سردرد بزرگ می شود. اگر افزونههای QGIS بنویسید، همه این مشکلات به سادگی برطرف میشوند، زیرا پلاگینهای QGIS عموماً سازگار هستند.
چه طور باید شروع کرد
هر زبانی را که انتخاب کنید، اولین قدم یادگیری اصول اولیه زبان است. منابع بسیار زیادی برای یادگیری پایتون و جاوا اسکریپت وجود دارد. کتاب ها، فیلم ها، آموزش های آنلاین، کلاس های دانشگاهی و دوره های تجاری سنتی.
هنگامی که اصول اولیه را دارید، گام بعدی این است که تصمیم بگیرید به کدام کتابخانه های مکانی نیاز دارید و/یا استفاده می کنید. اگر مسیر پایتون را انتخاب کنید، به این معنی است که باید بین ArcPy، pyQGIS یا GeoDjango (اگر میخواهید از پایتون برای دسترسی به وب استفاده کنید) یکی را انتخاب کنید. اگر مسیر جاوا اسکریپت مبتنی بر وب را انتخاب کنید، باید انتخاب کنید که از کدام API نقشه برداری استفاده کنید (Leaflet، OpenLayers، Google Maps یا ESRI)، آیا باید از Turf.js برای تجزیه و تحلیل فضایی استفاده کنید، و اینکه آیا برنامه شما این کار را انجام خواهد داد. نیاز به سرور پایگاه داده اگر به سرور پایگاه داده نیاز دارید، باید انتخاب کنید که از کدام پایگاه داده و پسوند فضایی و همچنین زبان برنامه نویسی سمت سرور استفاده کنید. برای ساده نگه داشتن کارها، توصیه می کنم قبل از حرکت به سمت فناوری های دیگر، اصول اولیه را با PHP و PostGIS یاد بگیرید.
مصاحبه با دکتر سعید جوی زاده درباره برنامهنویسی در GIS: نقشه راه و روشهای یادگیری
مصاحبهکننده: سلام و وقت بخیر، دکتر جوی زاده. خوشحالیم که امروز با شما درباره موضوع جذاب برنامهنویسی در GIS صحبت میکنیم. میتوانید کمی درباره خودتان و تجربهتان در این زمینه بگویید؟
دکتر سعید جوی زاده: سلام، وقت شما هم بخیر. من سعید جوی زاده هستم، پژوهشگر و مدرس در حوزه سیستمهای اطلاعات جغرافیایی (GIS) و سنجش از دور. سالهاست که در موسسه علمی تحقیقاتی چشمانداز هزاره سوم ملل کار میکنم و تمرکزم روی کاربردهای فناوریهای مکانی در حل مسائل واقعی مثل مدیریت منابع طبیعی و تحلیلهای محیطی است. برنامهنویسی همیشه بخشی از کارم بوده، چون به ما اجازه میده ابزارهای GIS رو شخصیسازی کنیم و تحلیلهای پیچیدهتری انجام بدیم.
مصاحبهکننده: خیلی عالی. چرا به نظر شما برنامهنویسی در GIS اهمیت داره؟
دکتر سعید جوی زاده: برنامهنویسی در GIS مثل یه کلید طلاییه. نرمافزارهای آماده مثل ArcGIS یا QGIS امکانات زیادی دارن، اما همیشه نمیتونن نیازهای خاص هر پروژه رو برآورده کنن. با برنامهنویسی، میتونید ابزارهای اختصاصی بسازید، فرآیندهای تکراری رو خودکار کنید و دادههای بزرگ رو سریعتر تحلیل کنید. مثلاً برای مدلسازی هیدرولوژیکی یا پردازش تصاویر ماهوارهای، کدنویسی سرعت و دقت کار رو به شدت بالا میبره.
مصاحبهکننده: برای کسی که تازه میخواد برنامهنویسی در GIS رو شروع کنه، چه نقشه راهی پیشنهاد میکنید؟
دکتر سعید جوی زاده: یه نقشه راه ساده و عملی اینه:
-
- آشنایی با مفاهیم GIS: اول باید پایههای GIS رو خوب بشناسید؛ مثل مدلهای داده (رستری و برداری)، سیستم مختصات، و تحلیلهای فضایی.
-
- انتخاب زبان برنامهنویسی: من پیشنهاد میکنم با پایتون (Python) شروع کنید، چون هم سادهست، هم در GIS خیلی پرکاربرده. ArcGIS از Python پشتیبانی میکنه (ArcPy) و QGIS هم افزونههای پایتونی داره.
-
- یادگیری مفاهیم اولیه کدنویسی: ساختارهای پایه مثل حلقهها، شرطها و توابع رو یاد بگیرید.
-
- کار با کتابخانههای GIS: با کتابخانههایی مثل GDAL، GeoPandas و Rasterio آشنا بشید که برای پردازش دادههای مکانی عالی هستن.
-
- پروژه عملی: یه پروژه کوچک مثل خودکارسازی تبدیل مختصات یا تحلیل دادههای رستری رو امتحان کنید. تجربه عملی بهترین معلم شماست.
مصاحبهکننده: چه زبانهای دیگهای به جز پایتون برای GIS مناسبن؟
دکتر سعید جوی زاده: علاوه بر پایتون، زبان R برای تحلیلهای آماری وVisualization دادههای مکانی خیلی قویه. جاوااسکریپت هم برای توسعه وبGIS (مثل نقشههای تعاملی آنلاین با Leaflet یا OpenLayers) کاربرد داره. اگر بخوام یه زبان پیشرفتهتر بگم، C++ برای توسعه ابزارهای سنگین و بهینه مناسبه، ولی برای مبتدیها پایتون بهترین نقطه شروعه.
مصاحبهکننده: یادگیری برنامهنویسی گاهی سخت به نظر میاد. چه روشهایی برای یادگیری بهتر پیشنهاد میکنید؟
دکتر سعید جوی زاده: کاملاً درک میکنم. چند روش که خودم تجربه کردم و جواب داده:
-
- یادگیری پروژهمحور: به جای فقط خوندن تئوری، یه هدف مشخص انتخاب کنید، مثلاً ساخت یه نقشه حرارتی، و کدش رو بنویسید.
-
- منابع رایگان: از دورههای آنلاین مثل Coursera، Udemy یا حتی آموزشهای یوتیوب استفاده کنید. مستندات رسمی پایتون و ArcPy هم خیلی کمک میکنه.
-
- تمرین روزانه: هر روز یه کد کوچک بنویسید، حتی اگه ساده باشه. تکرار باعث تسلط میشه.
-
- جامعه کاربری: به گروههای GIS و برنامهنویسی تو فرومها یا شبکههای اجتماعی مثل Stack Overflow ملحق بشید و سوال بپرسید.
-
- صبر و خطا: اشتباه کردن بخشی از یادگیریه. کدتون کار نکرد؟ اشکالی نداره، دیباگ کنید و یاد بگیرید.
مصاحبهکننده: در پروژههای خودتون چطور از برنامهنویسی استفاده میکنید؟
دکتر سعید جوی زاده: من زیاد از پایتون استفاده میکنم. مثلاً برای تحلیل تغییرات پوشش زمین، اسکریپتهایی نوشتم که دادههای ماهوارهای رو پردازش میکنن و نقشههای تغییرات رو خودکار تولید میکنن. یا توی پروژههای هیدرولوژی، با ArcPy مدلهای پیچیده رو اجرا میکنم که بدون کدنویسی ساعتها طول میکشید. حتی برای آموزش، ابزارهای کوچکی ساختم که به دانشجوهام کمک کنه مفاهیم رو بهتر بفهمن.
مصاحبهکننده: آینده برنامهنویسی در GIS رو چطور میبینید؟
دکتر سعید جوی زاده: آینده فوقالعاده هیجانانگیزه. با رشد هوش مصنوعی و یادگیری ماشین، برنامهنویسی در GIS داره به سمت تحلیلهای هوشمندتر میره. مثلاً پیشبینی سیل یا شناسایی الگوهای تغییرات اقلیمی با مدلهای کدنویسیشده امکانپذیر شده. همچنین پلتفرمهای ابری مثل Google Earth Engine که با پایتون و جاوااسکریپت کار میکنن، دسترسی به دادهها و قدرت پردازش رو متحول کردن. فکر میکنم برنامهنویسی به زودی جزء جداییناپذیر هر متخصص GIS میشه.
مصاحبهکننده: حرف آخر برای کسانی که میخوان این مسیر رو شروع کنن؟
دکتر سعید جوی زاده: نترسید و شروع کنید! برنامهنویسی در GIS مثل یادگیری یه زبان جدیده؛ اول سخت به نظر میاد، ولی با تمرین تبدیل به یه مهارت قدرتمند میشه. از منابع در دسترس استفاده کنید، پروژههای واقعی رو امتحان کنید و لذت ببرید از اینکه میتونید دنیا رو از زاویه دادهها ببینید و تغییر بدید.
مصاحبهکننده: خیلی ممنون، دکتر جوی زاده، برای وقتی که گذاشتید و توضیحات ارزشمندتون.
دکتر سعید جوی زاده: خواهش میکنم، خوشحال شدم که این موضوع رو با شما و مخاطبانتون به اشتراک گذاشتم.
مصاحبه با دکتر سعید جویزاده: برنامهنویسی در GIS – نقشه راه و روشهای یادگیری
پرسشگر:
خوش آمدید، دکتر جویزاده. ممنون که زمانی برای این مصاحبه اختصاص دادید. ابتدا از شما خواهش میکنم توضیح دهید که برنامهنویسی در GIS دقیقاً به چه معناست و چرا اهمیت دارد؟
دکتر سعید جویزاده:
بله، سپاس از فرصتی که فراهم کردید. برنامهنویسی در GIS (سیستم اطلاعات جغرافیایی) به استفاده از زبانهای برنامهنویسی مثل Python، JavaScript، R و C++ برای توسعه ابزارها، اسکریپتها و نرمافزارهایی میپردازد که به کاربران اجازه میدهد تا اطلاعات مکانی را بهصورت مؤثرتر و انعطافپذیرتر مدیریت کنند.
اهمیت برنامهنویسی در GIS بسیار بالاست، زیرا فناوریهای جغرافیایی هر روز پیشرفتهتر میشوند و نیاز به سفارشیسازی ابزارها و حل مسائل پیچیده افزایش یافته است. بهعنوان مثال، برنامهنویسی در GIS میتواند به طراحی الگوریتمهای پیشرفته برای تحلیل دادههای مکانی، ایجاد نقشههای تعاملی و حتی توسعه نرمافزارهای هوشمند کمک کند.
پرسشگر:
آیا میتوانید به ما توضیح دهید که چه زبانهای برنامهنویسی عمدهای در حوزه GIS وجود دارند و کدامیک از آنها مناسبتر است؟
دکتر سعید جویزاده:
بله، در حوزه GIS، چندین زبان برنامهنویسی مورد استفاده قرار میگیرد، اما مهمترین آنها شامل:
- Python:
- Python به دلیل سادگی و قابلیت انتگرالشدن با نرمافزارهای GIS مانند ArcGIS و QGIS، امروزه بهعنوان اصلیترین زبان برنامهنویسی در این حوزه شناخته میشود.
- این زبان برای انجام وظایفی مانند تحلیل دادههای مکانی، اتوماسیون فرآیندها و توسعه اسکریپتهای سفارشی مناسب است.
- JavaScript:
- JavaScript بهویژه برای توسعه نقشههای تعاملی و وبسرویسهای مکانی مورد استفاده قرار میگیرد.
- کتابخانههایی مثل Leaflet و OpenLayers، که بر پایه JavaScript هستند، ابزارهای قدرتمندی برای ایجاد نقشههای آنلاین فراهم میکنند.
- R:
- R بهعنوان یک زبان تخصصی برای تحلیل دادهها، در GIS برای تحلیلهای پیشرفته و تولید نمودارهای مکانی مورد استفاده قرار میگیرد.
- C++ و Java:
- این زبانها برای توسعه نرمافزارهای GIS پیشرفته و کاربردی مناسب هستند، اما به دلیل پیچیدگی بالا، معمولاً توسط متخصصین با تجربه استفاده میشوند.
هر زبان برنامهنویسی دارای نقاط قوت و ضعف خاصی است، اما در کل، Python بهدلیل سادگی و قدرت بالا، برای شروع یادگیری برنامهنویسی در GIS مناسبترین گزینه است.
پرسشگر:
برنامهنویسی در GIS برای کسانی که تجربه قبلی برنامهنویسی ندارند، سخت به نظر میرسد. آیا میتوانید روشهایی برای شروع یادگیری این حوزه ارائه دهید؟
دکتر سعید جویزاده:
بله، برنامهنویسی در GIS برای کسانی که تجربه قبلی برنامهنویسی ندارند، ممکن است چالشبرانگیز به نظر برسد، اما با استراتژیهای مناسب، میتوان این چالشها را غلبه کرد. برخی از روشهای یادگیری عبارتند از:
- شروع با مفاهیم پایه برنامهنویسی:
- اگر تجربه قبلی برنامهنویسی ندارید، ابتدا با یادگیری مفاهیم پایهای مثل متغیرها، حلقهها، شرطیها و توابع شروع کنید. کتابها یا دورههای آموزشی برای یادگیری زبانهایی مثل Python مناسب هستند.
- استفاده از منابع آموزشی:
- منابع آموزشی گستردهای برای برنامهنویسی در GIS وجود دارد. وبسایتهایی مثل ESRI Training ، QGIS Tutorials و Geospatial Python Courses میتوانند به شما کمک کنند تا با اصول این حوزه آشنا شوید.
- عملکرد روی پروژههای کوچک:
- شروع با پروژههای کوچک و عملی، مانند تحلیل دادههای مکانی ساده یا ایجاد یک نقشه تعاملی، به یادگیری بهتر منجر میشود.
- مشارکت در جوامع علمی:
- مشارکت در جوامع علمی مرتبط با GIS، مانند GIS Stack Exchange یا GitHub Repositories ، میتواند به شما امکان دهد تا از تجربیات دیگران یاد بگیرید و با چالشهای واقعی آشنا شوید.
- دورههای آنلاین و کلاسهای تخصصی:
- استفاده از دورههای آنلاین و کلاسهای تخصصی در سایتهایی مانند Coursera ، Udemy یا EdX ، که به موضوع برنامهنویسی در GIS اختصاص دارند، میتواند راهحل مناسبی باشد.
پرسشگر:
نقشه راهی برای کسانی که میخواهند برنامهنویسی در GIS را یاد بگیرند، چگونه است؟
دکتر سعید جویزاده:
برای کسانی که میخواهند برنامهنویسی در GIS را یاد بگیرند، نقشه راهی منظم و ساختاریافته لازم است. این نقشه راه شامل مراحل زیر است:
- مرحله یک: آشنایی با GIS:
- قبل از شروع برنامهنویسی، باید با مفاهیم اساسی GIS آشنایی داشته باشید. استفاده از نرمافزارهای مانند ArcGIS یا QGIS برای یادگیری اصول GIS توصیه میشود.
- مرحله دو: یادگیری زبان برنامهنویسی:
- شروع با یادگیری زبانهایی مثل Python که بهطور گسترده در GIS استفاده میشوند، مناسب است. دورههای آموزشی و منابع آنلاین میتوانند به این فرآیند کمک کنند.
- مرحله سه: کار با کتابخانههای GIS:
- بعد از یادگیری زبان برنامهنویسی، باید با کتابخانههای مرتبط با GIS آشنا شوید. برای Python، کتابخانههایی مانند geopandas ، shapely و ** Fiona** بسیار کاربردی هستند.
- مرحله چهار: کار روی پروژههای واقعی:
- یادگیری بهترین وقتی است که بهصورت عملی انجام میشود. شروع با پروژههای کوچک مانند تحلیل دادههای مکانی یا ایجاد یک نقشه تعاملی، میتواند تجربههای ارزشمندی را برای شما فراهم کند.
- مرحله پنج: تحقیق و توسعه:
- بعد از یادگیری مهارتهای اولیه، میتوانید به تحقیقات پیشرفتهتر و توسعه نرمافزارهای GIS پرداخته و حتی در پروژههای تحقیقاتی شرکت کنید.
پرسشگر:
چه چالشهایی در یادگیری برنامهنویسی در GIS وجود دارد؟
دکتر سعید جویزاده:
یادگیری برنامهنویسی در GIS دارای چندین چالش است که باید با آنها سر و کار داشته باشید:
- پیچیدگی دادههای مکانی:
- دادههای مکانی معمولاً پیچیدهتر از دادههای معمولی هستند و نیاز به درک عمیقی از مفاهیم GIS دارند.
- عدم دسترسی به دادهها:
- یافتن دادههای مکانی کامل و قابل دسترس برای تمرین و یادگیری گاهی مشکل است.
- سرعت یادگیری:
- یادگیری برنامهنویسی در GIS نیازمند صبر و تمرین مداوم است، زیرا این حوزه ترکیبی از دو زمینه GIS و برنامهنویسی است.
- پیشرفت فناوری:
- فناوریهای GIS به سرعت در حال تغییر هستند، بنابراین باید بهروز ماند و با آخرین روندها آشنا شوید.
پرسشگر:
آیا میتوانید یک مثال عملی از کاربرد برنامهنویسی در GIS ارائه دهید؟
دکتر سعید جویزاده:
بله، یک مثال عملی از کاربرد برنامهنویسی در GIS، استفاده از Python برای تحلیل دادههای مکانی است. بهعنوان مثال، فرض کنید باید وضعیت آلودگی هوا در یک شهر را بررسی کنید:
- گام اول: دادههای آلودگی هوا از سنسورها یا وبسرویسهای مرتبط جمعآوری میشود.
- گام دوم: با استفاده از Python، دادهها پردازش میشوند و نقشههای آلودگی هوا بهصورت پویا تولید میشوند.
- گام سوم: نتایج بهصورت گرافیکی و تعاملی نمایش داده میشوند تا تصمیمگیریهای مدیریتی و سیاسی انجام شود.
این نوع پروژهها نشان میدهند که چگونه برنامهنویسی میتواند به حل مسائل واقعی کمک کند (Neteler & Mitasova, 2008) .
7 نظرات