Learning GIS programming: An overview
The diversity of programming languages and tools being used in GIS (in general in the Geospatial industry) today is truly staggering. Depending on what the position requires, one would be expected to have expertise in SQL, python, C++, Java or JavaScript, Flex and PHP (just to name a few). Knowledge and competence in programming is a essential skill set and a critical requirement for most Geospatial job opportunities these days. A vast majority of job openings in the Geospatial industry require some expertise in programming, application development and software management.
As Geospatial professionals/graduates/students, some of us overlook the importance of programming in our careers. Some of us believe that our spatial skill sets are niche enough to compensate for the lack of our programming expertise. Well that might not be totally wrong. However, knowledge of programming is most certainly going to open up a whole new array of possibilities! It might be a good idea to have a look at recent job postings in the Geospatial industry to get an overview of the requirements 🙂
So which language(s) should you be learning to excel in the Geospatial industry? Here’s an overview of programming languages that are widely used in the Geospatial industry.
Overview of Programming languages for GIS
JavaScript: WebGIS is certainly the next big thing in GIS and right from big data to twitter visualizations, everything that involves Web User Interfaces is being written using JavaScript. Google Maps, OpenLayers and a whole lot of other applications run on JavaScript. Personally, it has been a great experience for me using JavaScript for WebGIS projects. It might have its own drawbacks, but its amazing to see what JavaScript can help you achieve. (JavaScript for Geospatial applications; An Overview).
Java: Java is one of the most commonly taught programming language in universities and many Geospatial solutions like GeoServer and GeoTools are written using Java and is certainly one of the most popular languages among Open Source GIS developers.
C++: A vast majority of the software we use is written using C++. Most companies still prefer to develop applications using C++ due to this very reason. In fact, GRASS GIS, QGIS and many other GIS software were written using C++ (and python). Most GPS receivers have their firmwares written in C++. If you are look at Geospatial industry as a whole, C++ is a certainly good language to know.
SQL: GIS is incomplete without a database and SQL is a arguably the most famous database access and management language. Most databases have their own additional SQL extensions but the syntax for common tasks is standard. It is definitely worth spending sometime to learn at least the basics of SQL.
Python: Very popular with Geospatial professionals working in the ESRI environment and is considered as the primary scripting language for ArcGIS. Python is a great “integrator” and is fairly easy to work with and is sometimes regarded as more of a scripting language but that debate is still raging.
There are a many more programming languages like C, C#, Visual Basic.NET, Flex, ActionScript, PHP, VBA for ArcObjects, etc that are being used in the Geospatial industry. If you want a complete overview of all the languages used in GIS programming, have a look at this link (Penn State – Geography Department).
There are many options and it is rather difficult to say which programming language is “the” one to learn. It might be a good idea to have a grasp of both Desktop and Web development languages, say Python and JavaScript for example. An even better idea would be to have a look at the company where you would like to apply for a job in the future and examine their programming language requirements. Here’s a list of tutorials/resources that might be handy.
Programming Tutorials/Resources
Python for ArcGIS: Really useful article on resources for learning to use python for ArcGIS.
JavaScript tutorial by Mozilla and OpenLayers: Might be the best way to kickstart your programming in JavaScript 1.01 course.
Geospatial for Java by GeoTools: A good platform to begin your Java adventures.
Learn C++: This is just one of the many tutorials out there for C++. It might be a good idea to start your journey side by side with some examples from GEOS. Here’s an OpencourseWare on C++ by University of Southern Queensland.
Coursera MOOC on Algorithms (starts September 5th, 2014). Fundamentals of algorithms will definitely come in handy.
SQL Tutorial and PostGIS documentation: Learn the basics of SQL and then dive into the world of spatial queries.
Of course, people have different opinions on what makes a good programmer and what is the best way to learn programming. In my experience, I always found it engaging to build something and learn the language on the way rather than just follow a tutorial to the T. Learning GIS Programming or programming for GIS is without any arguments, a great addition to your resume as a Geospatial professional.
Source articles: List of GIS Software and Overview of Programming Languages for GIS
Please leave a comment with links to your favorite tutorials/resources to learn a particular programming language. It would be awesome if you shared your experiences regarding programming in the Geospatial industry as well 🙂 Looking forward to all your comments/experiences!