Throughout my professional experience, I have had the opportunity to engage with numerous individuals who utilize Geographic Information Systems (GIS) at all levels. Many of these professionals have had an experience with GIS development, though at different levels. As a GIS developer, one is endowed with several benefits that facilitate the effective delivery of solutions in various workplaces. I have recently published a blog on the subject of whether one should acquire knowledge of GIS programming. It is worth noting that the reasons provided by most of the respondents were quite diverse
What is GIS development?
In a nutshell, to succeed as a GIS developer, you need to:
- Understand GIS, programming, and data analysis.
- Possess strong communication skills.
- Work closely with clients and stakeholders to develop customized solutions.
These are just but a few points that make up the advice for GIS developers.
In this blog, I share my personal story with self-paced learning for GIS development. From setting achievable goals to utilizing the right resources, I reveal the key ingredients to my success and provide practical tips for anyone looking to learn GIS development at their own pace.
Short Story In 2011, I stumbled upon GIS - not by choice, but by some stroke of fate. I had been admitted to study Geomatic Engineering and Geospatial Information Systems (GEGIS) at Dedan Kimathi University of Technology's school of engineering. To be honest, I had no idea what GEGIS was and found myself feeling quite confused. Coming from a Diploma in ICT, I even entertained the idea of switching to something more IT-related. As it turns out, I wasn't the only one in this predicament; most of my mates were in the same boat. One day, while engaging in a heated discussion with some folks from other engineering courses, the debate about which course was better came up. I was at a loss since I barely knew what I had enrolled to pursue, so I ended up leaving the discussion. It wasn't until a weekend when I was going through my ICT notes that I had the Aha! moment. I had already spent a year learning IT, and I now had five (5) years to pursue a degree in GEGIS. Why not combine the two courses and make something of it? So, I hopped on Google and searched for "IT and GIS". I mean, I basically coined the term "Geo-IT" (well, not really, but let's pretend). Luckily, I have a laptop. With an Internet connection, this was enough for research and as they say, the rest is history!
This is what I did to become a GIS developer.
Learning GIS basics
GIS was Greek to me by then. But I needed to understand the basics for me to make a good plan on what next. A lot of reading; notes were issued in large hard copy formats. It was tough reading through the notes. Combining information from the Internet and from books and handouts helped a lot.
For you to understand a concept or a tool, you have to learn the basics. The same way we read documentation today. GIS basics include;
- What is spatial data? which data formats exist? how do these formats differ from one another?
- Coordinate Reference Systems (CRS) and map projections
- what GIS software exists? and many more
I understood that this was information and skills I needed for my career. There was no choice than reading extensively. I had to attend GIS introduction classes, read blogs online and watch videos online to grasp all that was required. This can be done in a few days or weeks today with the availability of extensive classes online and tutorials on YouTube.
NOTE: This can take you a week or months based on commitment. The most important thing is to understand what to learn and where to find this information
Learning GIS software
After exploring the basics, to top it all, I needed to learn GIS software for spatial data visualization and data query. Oh my, imagine the joy of loading your first GIS layer in your GIS. One of the best moments I had. I was fascinated by how well the software was organized and its interactive nature. Zoom In, Zoom Out and Pan were amazing tools for a beginner.
By then, every site I encountered, and every lecturer I knew was talking of ArcMap. I was able to run ArcMap on my laptop after days of struggle. It became my favourite software which I could play with day and night. I understood the basics of the software. One day, I found out that the software could be extended to automate tasks. My IT skills kicked in. I had found a way to marry my IT skills and GIS.
A friend in my class, who had a similar IT background and was also looking for an IT + GIS opportunity, teamed up with me.
At that time, we didn’t know about any other GIS software except for ArcGIS. We learnt ArcGIS as much as possible before we discovered QGIS. Then we switched to QGIS. The reason for the switch was its free, open-source and cross-platform nature, giving us freedom of operating systems. QGIS became our favourite GIS software and we recruited many interested students/users to use it because it was easy to install. We began training members of these groups on the use of Python and QGIS. Our skills improved greatly.
In essence, GIS software formed the basis for fully understanding the GIS ecosystem. You can learn as much GIS software as you wish or consider important for your course or career.
NOTE: Regardless of the GIS software you settle on, remember the basic working principles remain the same.Only the software environment that changes.
Learning Spatial Analysis
Spatial analysis is an essential part of GIS development. This is a topic well-known to GIS users. The topic confuses many but it’s one of the most sorted out skills in any GIS work. Spatial analysis involves understanding patterns and relationships within geographic data. Spatial data can contain huge amounts of attribute information based on a theme. Analyzing and understanding this data can help bring out the true meaning of an area or outcome.
After learning GIS software basics, you can utilize its analytical power to generate outputs for decision-making or communication such as maps. Spatial analysis can include spatial regression, interpolation, point pattern analysis etc.
Understanding geoprocessing tools can go a long way in helping a GIS developer in solving complex analytical problems in their solutions. The GIS toolbox is just an awesome kit for all GIS users.
NOTE: Spatial analysis tools keep evolving and getting better. It's good to understand their basic working principles and changes that occur over time. Be on the lookout.
At this level, you have a good understanding of what GIS is, what spatial analysis is and the tools involved in various tasks. One can learn GIS programming for various reasons such as;
- To automate mundane tasks
- To enhance GIS outputs presentation
- To “shift gears” in a career
Depending on the need, GIS programming can help you work faster and smarter.
As I mentioned before, the first programming task that I did was to customize ArcMap. This involved writing custom scripts to perform mundane tasks such as buffering, clipping, area computation etc. I could bundle these tasks into buttons or dropdown selections. The capability to customize the UI on these GIS software was phenomenal. Just imagine having software that’s full of custom buttons to perform various tasks on click. Cool, right?
This is where I met Python. During my IT classes, I played around with HTML+CSS+JS and Visual Basic. I used these to build custom web apps and sites. But in this case, it was different. This was on the desktop. As you know of the various GIS ecosystems; desktop, web and mobile, the needs vary. I was able to learn ArcPy and later on PyQGIS.
Based on your needs, you can choose a language that will suit you in your career. For example, Python is widely used in the GIS realm. It can also be used for data science. We also have other languages such as R for data scientists. Learning a new language shouldn’t be a hustle; two weeks or a month is enough.
NOTE: Don't let paralysis of analysis derail you from learning a language. Choose the programming language you think will work for you and learn. There's no harm in learning many languages.
Learning Spatial Databases
When it comes to storing geospatial data during analysis or even for an application, you need to get a platform that will support your data formats. I chose PostgreSQL. I used to edit data layers hosted in PostGIS in the QGIS environment a lot. And with time, I got stuck in the PostgreSQL environment.
Within the Geospatial industry, PostgreSQL is popular. This means a bigger community around the platform. PostgreSQL’s native support for spatial data, rich set of geospatial functions and operators, integration with popular geospatial tools, and open-source and community-driven nature make it a popular choice for geospatial applications.
Other reasons you might opt for PostgreSQL include(reasons why PostgreSQL is popular for geospatial);
- Supports spatial data types
- Provides geospatial functions and operators
- Integrates with popular geospatial tools
- It is open-source and community-driven.
As indicated in the latest 2022 developer survey, PostgreSQL emerges as the most used database system.
NOTE: Spatial databases are many out there. You need time to fully understand a DBMS and its supported functions. The good thing is that, regardless of the programming language, you can always use the same database.
Learning Web Mapping
After learning a programming language and aspects of databases, I decided to explore the option of GIS on the web (Web Mapping). When working with desktop GIS, maps on the web were always fascinating, more so in output presentation. I needed to understand how the web works and how maps were rendered on the map. It was time for a new challenge. Web mapping is the process of using web technologies to create, publish, and share interactive maps online.
I wanted to learn something that would allow me to display maps fast. In this case, I worked on map user interfaces only (I didn’t know how backends were built). I started off with ExtJS + GeoExt + OpenLayers. Combining the three libraries was tough for a beginner but eventually (after 2 months of reading books and testing code), I managed to display and operate my web map. You can find the code on GitHub.
Over time I learnt Leaflet JS, a mapping library and replaced OpenLayers for a number of years. I have learnt many things in this space over time.
Today, Web mapping is more popular than ever before: With the proliferation of mobile devices and the growth of the Internet, web mapping has become an integral part of our daily lives.
There exist many web mapping libraries and platforms today. These include; Mapbox, ArcGIS Online, D3.js, Cesium JS, MangoMap etc. There are also plugins on various desktop GIS software such as QGIS2Web that help you make web maps fast and effectively.
NOTE: Today, there are many options when it comes to libraries, platforms etc. There is also great documentation online for these libraries to use. You don't have to start where I started, learn what will help you in your projects and learn.
Learning Web Map Servers
One thing every GIS developer will admit is that visualizing huge spatial data on a browser can be a nightmare. Imagine waiting for a minute or two for data to appear on a map. This is frustrating. I faced this problem for quite some time before learning about map servers.
What is a map server and why are they important?
A map server is typically responsible for processing geospatial data and generating map images based on that data. This is done using predefined map styles or templates. Some of the reasons why one can use a map server include;
- Scalability – Map servers can handle large volumes of geospatial data and user requests, allowing for scalable and high-performance web mapping applications.
- Customization – Map servers provide a high degree of flexibility and customization, allowing developers to create unique maps and visualizations tailored to specific needs.
- Interoperability – They support a wide range of data formats and standards, allowing for interoperability with other mapping tools and applications.
- Extensive geospatial functionality – Map servers often include a range of geospatial functions and operations, such as spatial queries and analysis, that enable advanced geospatial processing and analysis.
- Security – Map servers can provide secure access to geospatial data and maps, ensuring that sensitive data is protected and only accessible to authorized users.
Some of the common map servers in the market today include GeoServer, Map Server, GIS Server and ArcGIS Server.
I started working with GeoServer due to its open-source nature and the available documentation helped me onboard fast. I have used all the listed map servers above but I still utilize GeoServer for most of my projects today.
NOTE: Map Servers are helpful but not a must use. Depending on your project, you might require a map server or basically ignore them.
Learning a programming framework
After a number of years of building web maps, it was time to get into enterprise solutions. This meant I needed a full-stack approach to my projects. Also, over time, client requirements changed. They needed web maps where staff could update data over time, easily and fast. There was a need to incorporate backends in my solutions. To handle this, I decided to go for a framework.
Since I was already using Python, it was obvious I would go with a Python framework. In this case, I choose Django. Another reason I chose Django was due to its integration of the GeoDjango module and incorporation of Psycopg2. This is because connecting to PostGIS databases for my spatial data would be possible without much hustle.
It took me a weekend to learn the basics of Django and have a demo project up and running. It was a lot of fun. Frameworks help in productivity, consistency, and scalability with options to reuse components of a system reducing project development time significantly.
My Django experience and years of using GeoDjango led to the production of the Geodjango tutorial series. This was my way of helping other devs out there discover and use Geodjango. It took me a while before I could wire up everything but with the tutorial, you can literally do this in a day.
Over time, the need for microservices for various projects was inevitable. The separation of concerns in a microservices architecture led to the need for a front-end framework. These are some things that the industry demands and you have to adjust to remain relevant. This is what full-stack devs have to deal with; backends, APIs, front-end, deployment etc.
Over time I have learnt Vue JS and React JS. I’m constantly learning these two frameworks.
NOTE: Frameworks are to help in times of need, they aren't a replacement for the programming language. You can learn as many frameworks as you need.
Learning Geospatial Cloud Computing
One important trait for a skilled GIS developer is to be good with technology. Continuously staying up-to-date with the latest trends and advancements in the GIS industry enables a deeper comprehension of the direction the industry is moving towards. With the rapid developments in the tech industry, geospatial has received numerous developments such as the move towards cloud computing.
Cloud computing has become an increasingly important technology in recent years, and it has a wide range of applications in GIS development. Geospatial cloud computing basically refers to the use of cloud computing technologies to process, store, and analyze geospatial data.
Geospatial cloud computing is important for large and complex geospatial datasets that may be difficult to manage using traditional on-premises computing resources. With cloud computing, geospatial data can be stored in a distributed and scalable environment that can be easily accessed and analyzed from anywhere with an internet connection.
Today, you don’t need to own powerful computers to process big data or even large bandwidth to download large rasters and vectors. You can basically do this in a cloud instance. One advantage of using cloud computing platforms is the built-in support for machine learning, data analytics, and data visualization, which can be used to extract insights from geospatial data.
Whether you are using Mapbox, Carto, ArcGIS Online, Google Earth Engine or any other platform, you will be able to access a wide range of geospatial tools and services for your project.
NOTE: You need to be familiar with various tools and technologies used in geospatial cloud computing, such as cloud storage services, virtual machines, databases, and libraries for geospatial analysis.
In this GIS development journey, you’re always learning new technologies, platforms, tools etc. The good thing about it is that you don’t require to learn everything to be a good GIS developer. There are alternatives to tools, libraries and platforms. Based on your interests and career path, you need to choose what to learn over time. The following is a sample list of the tools, libraries and platforms I use for various processes within the GIS development work.
- Data preparation and editing – QGIS
- Back-end – Python (Django)
- Front-end – React JS/Vue JS
- Databases – PostgreSQL/PostGIS
- Map Server – GeoServer
- Mapping Library – Leaflet JS/OpenLayers
- Data processing and analysis (Cloud) – Google Earth Engine
- Code Editor – Visual Studio Code
- API Platform – Postman
Everyone has a different path towards achieving their goals in GIS development. Make sure you’re getting ahead with your plan.
Final Note: This post details the processes, tools and technologies I have used over time in my GIS development career. This process is just an example of many "how-to" processes out there. It does not guarantee success since there are many measures of success.Pick what is good and make your career better today. I hope this post inspires you and you be able to pass the light to other members, colleagues and students out there. Bye!