Learning GIS Programming

Caitlin Dempsey


Having some competence in programming has become a critical requirement for many geospatial positions.  The majority of GIS analyst level positions require some expertise in programming and application development.  So which languages should you learn for GIS programming?

Why Learn Programming for GIS?

  1. Automation: Programming allows you to automate repetitive GIS tasks such as data entry, updates, and complex calculations.
  2. Customization: With programming skills, you can customize GIS applications to better fit specific project needs or to streamline workflows.
  3. Enhanced Analysis: Programming enables more complex data analysis than is possible with standard GIS tools, including integrating algorithms that can predict trends and patterns.
  4. Career Advancement: Proficiency in programming can open up higher-level job opportunities in GIS fields, as it adds a highly valued skill to your portfolio.

What is the most common programming language to learn for GIS?

Python is a scripting language incorporated into many GIS software applications such as ArcGIS and QGIS and is used to automate geoprocessing tasks.  Python scripts are essentially a command-based script containing data types, statements, and functions that make up the geoprocessing instructions.  Python files are denoted with the .py file extension.

Python is widely regarded as the best starting point for GIS programming. Python is easy to learn for beginners and has extensive support in the GIS community.

Beginner’s Guide to Python
Free, online resource to learning Python.

Free weekly newsletter

Fill out your e-mail address to receive our newsletter!

Google’s Python Class
Free class from Google to learn Python.

Python for Software Design: How to Think Like a Computer Scientist
Book that provides a concise introduction to software design using Python.   This book is the updated version of How to Think Like a Computer Scientist: Learning with Python which can be downloaded for free under the GNU Free Documentation License.

Geoprocessing with Python using Open Source GIS
Structured  course outline by Chris Garrard of Utah State University with links to open source software, course slides, and data.

Python and ArcGIS

Learning Python is the way to go for scripting and creating tools inside of the ArcGIS framework with libraries like ArcPy for ArcGIS.  

Python can be run directly within ArcGIS by clicking on the Python button found on the standard toolbar. 

For further learning materials, Esri has compiled a Python for ArcGIS page which provides a variety of Esri-based and individually created resources for learning python including a beginner’s guide, tutorials, and sample scripts.

Python Scripting for ArcGIS
Learn about this book from Esri Press that teaches experienced users of ArcGIS how to develop their programming skills using Python without the need for prior programming experience.

A Guide to the Python Universe for ESRI Users (PDF File)
Overview and guide for GIS users to Python by Howard Butler from Iowa State University.

Using Python in QGIS

QGIS is an open source GIS which incorporated python as a scripting option starting with release 0.9.  The PyQGIS cookbook provides a good introductory text on how python is used with the QGIS environment.  The QGIS blog also has a list of QGIS tutorials in Python.

QGIS Python Programming CookBook
Learn how to use Python to create dynamic maps in QGIS with this free preview chapter of QGIS Python Programming CookBook.

Open Source GIS and Python

Geoprocessing with Python using Open Source GIS
Structured  course outline by Chris Garrard of Utah State University with links to open source software, course slides, and data.

Geocoding toolbox for Python.  Provides support for six geocoders: Google Maps, Yahoo! Maps, Windows Local Live (Virtual Earth), geocoder.us, GeoNames, MediaWiki pages (with the GIS extension), and Semantic MediaWiki pages.

Python Cartographic Library
The Python Cartography Library, or PCL, is a package of modules for rendering GIS data from a variety of backends into maps. Open source.

Unofficial Python GIS SIG
Discussion group for GIS developers using Python with a focus on exchanging ideas and peer support.

Web GIS programming

For developing web-based GIS applications, learn HTML, JavaScript, and CSS as a baseline.  Many web GIS applications require this language such as Google Maps, Leaflet, and ArcGIS. Java and PHP are additional programming languages for more advance web development.

Openlayers: Geospatial JavaScript Library
One of the most under-utilized programming languages in geospatial analysis and processing is JavaScript.

Start Web Development with GIS Map in JavaScript
This course on Udemy will introduce students to the ArcGIS JavaScript API.

Geography Realm is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to amazon.com. Amazon, the Amazon logo, AmazonSupply, and the AmazonSupply logo are trademarks of Amazon.com, Inc. or its affiliates.

The Basics of Programming

How to Design Programs: An Introduction to Programming and Computing
While dated, this is a must read for anyone how wants to learn how to program.  The September 2003 edition can be accessed free.

C++ in GIS

C++ is an essential programming language for developing customizations and plugins for such popular GIS programs as QGIS and ArcGIS.

Object-Oriented Programming with C++
Free online courseware (lectures and tutorials) from University of Southern Queensland’s OpenCourseWare (USQ OCW).

Legacy GIS programming languages

Getting to know ArcObjects: Programming ArcGIS with VBA
Book by Robert Burke that provides a basic overview of programming and programming ArcObjects within the Microsoft Visual Basic for Applications (VBA) development environment.

GIS Programming Makes You Lazy
Tutorial Site  that provides and overview of the concepts of Objects, Classes, and Interfaces, VBA, and ArcObjects.

Legacy GIS: Python for ArcView 3.x

Using Python with ArcView 3.x
Resources for using Python with ArcView 3.x software. Also contains links to Python examples and resources.

Python language support for ArcView 3.x software which allows you to embed Python within ArcView 3.x

This article was originally written on April 28, 2017, and has since been updated.

Photo of author
About the author
Caitlin Dempsey
Caitlin Dempsey is the editor of Geography Realm and holds a master's degree in Geography from UCLA as well as a Master of Library and Information Science (MLIS) from SJSU.