Geospatial programming can be very challenging, especially for a greenhorn in the GIS or programming world. However, building hand-on projects can make it fun, as it’ll help you to gain practical development skills, build your portfolio and resume for your next job and you’ll be putting your theoretical knowledge into developing great projects.
In this article, we present six projects with suggested tools, prerequisites and learning resources that would help you to improve your geospatial programming skills. We hope you find them interesting and helpful. There are six of them,we encourage you to take them one at a time and focus on understanding the underlying concepts. Sometimes, understanding the concept is more important than the code you write.
1) Vector/Raster Files Converter
- Web: HTML,CSS,JS,Leaflet,React,Turf JS,shapefileJs etc.
- Desktop: Python, shapely, fiona, geopandas, ogr2ogr, pyGUI etc
- API: Django/Geodjango, Node etc
Foundational knowledge of at least one of the programming languages listed above. You could learn your way up by embarking on the projects mentioned here.
A platform to convert between several vector and raster GIS data formats. E.g from Esri Shapefile to GeoJSON, GeoJSON to topoJSON, KML to GeoJSON, GeoTiff to ECW, Geotiff to COGs, PNG to GeoTIFF, GEOTIFFs to JPEG, CSV to Esri Shapefile etc.
Building a platform like this as a project would greatly improve your development skills because you’ll be doing a lot of research and you’ll combine several tools and libraries to get it in shape. Feel free to build it in your most comfortable language, you can have it on the web, desktop application or as an API, whatever way you choose, the fact remains that you’ll learn a lot from this exercise.
2) Build a QGIS Plugin
- Python, QGIS, QT Designer.
Experience working with QGIS and an understanding of Object Oriented Programming (OOP) paradigm in Python.
QGIS is a popular powerful open source geospatial software. Building a plugin can be considered as a way of contributing to Open Source as well as improving your python programming skills. Since QGIS is an open-source tool, you can see the code structure of any plugin and also be able to modify it based on your requirement.
There are already numerous plugins in the QGIS repository, find an existing problem that you feel a QGIS plugin could solve, then code it up!
3) Spatial Bookmarking Note
- Mapping libraries: Leaflet
- Backend: Django
- Database: PostGIS
Basic knowledge of Django.
The main motive of this project is to enhance your web-GIS skill. If you ever search about the web development project idea for beginners, you might get “Todo list” somewhere on the list. Generally, the todo list project contains the functionality to add, view, edit and delete the list of items. Similarly you can try to create the same create, read, update, delete (CRUD) functionalities for your spatial data.
One of the example projects would be a bookmark note app, where users can add the note on a map. The added note must contain the locational information in the form of latitude and longitude and it should be stored in a spatial database. The required note should be fetched from the database for visualization purposes. You can find a tutorial to create this functionality on the following tutorial link. On top of this feature, you can add the functionality to delete and edit the required note.
4) Build a Remote Sensing/Earth Observation App
- Python, R, Google Earth Engine, JS, HTML & CSS, Leaflet JS, Mapbox JS
Experience working with any or most of the following programming languages and/or platforms listed above.
Develop a platform that can generate a time-series map of an area using open satellite images like sentinel. A user should be able to draw a boundary or upload a boundary and generate the time series of indices of the location on earth.
This project would allow you to explore the world of earth observation, SpatioTemporal Asset Catalog (STAC) specification, Cloud Optimized Geotiff (COGS), Copernicus constellations, map tiling, and some python tools and technologies. Putting this on the web would make it easy for you to share with people or link in your portfolio.
5) Automate the boring stuff
- Python, PyQGIS, ArcPy, R
Experience working with QGIS and/or ArcMap/ArcGIS Pro and an understanding of Python programming language.
Some repetitive tasks such conversion between coordinate formats (e.g Decimal degree to Degree Minute Seconds, converting the file formats from one to another etc) and those we can’t cover can be automated. Look around you, what are the repetitive tasks you work on daily? Try to automate them with your favourite programming language.
6) Web-GIS Data Visualization Portal
Web-GIS became a cheap and easy way of disseminating geospatial data and processing tools. Many organizations are interested in distributing maps and processing tools without time and location restriction to users. Web-GIS allows visual interaction with the geospatial data. The mapping libraries like leafletjs, openlayers, mapbox etc make it easier to develop the map visualization interface within a few lines of code. But using the mapping libraries directly, it is very difficult to manage the large amount of data with various file formats. To solve this issue, we can use GeoServer.
GeoServer is an open source server for sharing geospatial data. It provides the Open Geospatial Consortium (OGC) standard protocols such as Web Feature Service (WFS), Web Map Service (WMS), and Web Coverage Service (WCS). Such services make it easy to publish and share the geospatial data very easily.
Tutorials and references
- Web GIS development 2021 course GitHub repo
- Series: WebGIS Using Open Source Tools
- Leaflet from basic to advance: youtube playlist
- GeoServer and Leaflet Web-GIS
- Podcast Episode on Web GIS
Bonus: Open Source Contribution
Contributing to open source projects would improve your development skills tremendously. Check here to see some open source geospatial projects you can contribute to.
Overall, we hope this article is helpful and has sparked your interest into working on projects and contributing to open source.
We would be more than happy to see your progress! Feel free to tag us in your posts or reach out to us if you have any questions!
Emmanuel Jolaiya, GIS Developer.
Tek Bahadur Kshetri, Research Associate, Geoinformatics Center (GIC), AIT, Thailand