Programming for GIS

class logoGeography 491/489 - Spring 2023

Tues & Thurs, 09h30 - 10h50; Weds 0900 - 10h50

218 Stone Hall (Tues, Thurs) & 106 Stone Hall (Weds)

Course Overview

Resource managers, environmental scientists, and policy experts regularly ask questions that require spatial data to answer. They are fortunate that there is today a wealth of spatially explicit data on human communities and natural resources; but, sometimes, these datasets are so voluminous they can be difficult or impossible to work with in a desktop GIS or spreadsheet program. The questions we ask may also implicate spatial relationships (e.g., distance, proximity, routing) that can’t be analyzed using built-in software routines. Moreover, when we conduct a spatially explicit study as a series of geoprocessing steps, how do we preserve and describe this recipe so that others can understand, verify, and repeat our analysis?

Learning Objectives:

  • Learn Python programming! Python is consistently ranked within the top 3 general programming languages (2018-present, TIOBE index), and for good reason! It is easy-to-learn, scales up quickly, and supported by a large user community that contributes packages for a wide variety of applications. You’ll also learn about R, which is a “meh” programming language but a powerful analysis and visualization tool.
  • Automate geospatial workflows. When humans try to complete repetitive tasks (e.g., converting latitude-longitude coordinates into UTM coordinates), they frequently make mistakes. Computers never make mistakes; they carry out our instructions in a predictable and deterministic way. If you have a lot of data to process, clicking here, then there, then there again, in a desktop GIS, over and over, simply won’t do!
  • Process large geospatial datasets. Multi-decadal field campaigns, social media analytics, and satellite remote-sensing are increasing the volume and the frequency of data we collect. Desktop GIS and spreadsheet programs have limits—they simply cannot work with gigabytes or terabytes of data. You will learn to process “Big Data” by breaking the problem down into either separate tasks or subdatasets that can be processed independently and concurrently.
  • Document, explain, and reproduce your geospatial workflows. You will learn to convert your GIS workflows into transferable and re-useable scripts. You’ll learn about literate programming, and how tools like Jupyter Notebooks and RMarkdown can help you combine code with narrative so that other people can understand, verify, and reproduce your work.