This course will introduce students to Python programming and its applications to remote sensing and GIS. Through completing this course, students will be able to use Python to perform common GIS and remote sensing analysis tasks, automate workflows, and develop custom Python tools. Topics will include describing data, manipulating data, automating spatial analysis tasks, creating Python scripts and tools, and using Python for imagery analysis. We will also introduce students to WebGIS and how Python can be used to interface with data that is shared online.
- Students will learn Python and understand how to use it to solve problems in GIS and Remote Sensing and will demonstrate their knowledge by completing multiple homework assignments and projects.
- Students will be encouraged to use Python through relevant examples and assignments.
- Students will begin implementing it in their own research projects such as theses and capstones.
Course Materials will be shared using Blackboard. Slides, labs, and homework are in the folders that correspond to the specific units covered in class.
- (Primary Textbook) Paul A Zandenbergen. Python Scripting for ArcGIS Pro. ISBN: 9781589484993. $79.99
- Paul A Zandenbergen. Advanced Python Scripting for ArcGIS Pro. ISBN: 9781589486188. $79.99
- (Optional) Laura Tateosian. Python for ArcGIS. ISBN 978-3-319-18398-5. $99.00
- 15% - Lab Work & Programming Exercises
- 15% - Homework Assignments
- 20% - Project 1
- 20% - Project 2
- 30% - Final Project
In order to ensure that students are on track to achieve the course objectives, students will have weekly coding assignments. The coding assignments will be graded and returned before the next online lecture, where the solutions will be reviewed, and questions will be addressed. Feedback on respective assignments will also be given to each student through Blackboard. Weekly assignment will become the foundation for student projects which will serve as the benchmarks for whether students understand how to use programming to solve GIS and remote sensing problems. There will be 3 projects over the course of the semester. Two will be defined by the professor. The third and final project will be defined by the student in consultation with me. For the final project, the student will define the questions he or she wants to answer, find the data to answer it, code up a solution to the question(s), and put together a presentation on the project and solution that will be presented during our final class. For the final project, discussion with classmates and me is encouraged as each student will define his or her own project and goals. The instructor will make himself available for virtual office hours weekly on Mondays from 4 to 5 PM using Zoom. If you have questions or concerns, don’t hesitate to meet with me during office hours, send me an email, or schedule an ad-hoc meeting with me outside of our regular meetings or office hours. For week 1 of class, please post your name, discipline of study, and academic interests in the Introductions discussion channel in Blackboard. If you ever need to talk, do not hesitate to reach out to me.
Week | Topic |
---|---|
Week 1 | Intro to Python & Jupyter |
Week 2 | Intro to arcpy |
Week 3 | Exploring spatial data |
Week 4 | Working with feature data and cursors |
Week 5 | Working with features and geometries |
Week 6 | Rasters & imagery |
Week 7 | Creating Python script tools |
Week 8 | Functions, classes, and error handling |
Week 9 | Intro to Python for web GIS |
Week 10 | Interacting with AGOL using Python |
Week 11 | Publishing and consuming GIS services |
Week 12 | Plotting and data visualization |
Week 13 | Introduction to HTML and JavaScript |
Week 14 | Scientific data |
Week 15 | Final Project presentations |
The purpose of the homework is twofold: to keep you thinking about Python outside of the lab and to prepare you for the next class. I do not want to overwhelm you with homework. I do want to ensure that you are learning how to use Python to solve GIS and remote sensing problems. Please do not hesitate to ask me or your classmates questions on homework if you are encountering difficulties. Furthermore, I would like your feedback as to whether assignments get too difficult or too easy so that I can adjust the assignments and in-class materials accordingly. Homework is to be submitted via blackboard before class on the day that it is due.
The easiest way to learn to code is by writing code! Lectures are designed to be interactive. If I am typing code, you should be too! Lectures will be followed by in-class exercises that are designed to get you writing code on your own. The exercises that I have written as Python notebooks (.ipynb files) have questions throughout them. Please answer these questions and submit them via Blackboard before the beginning of the following week of class.
Project 1 will likely consist of working with tabular data (CSV or text file) or generating some report based on GIS data using Python. I will give the assignment by week 4. It is due before class on week 6.
Project 2 will likely consist of using Python to do some sort of spatial analysis or raster analysis. It will be assigned by week 9. It is due before class on week 11.
In my experience, all students and professionals need at least one demo or presentation that they can be prepared to give for a job interview, conference presentation, or other type of meeting. Through this class, I’d like each student to develop that demo or presentation, with the foundation of that presentation being some sort of spatial analysis, imagery analysis, or GIS analysis with Python. Each student will be responsible for a short 10 minute presentation to be given during either Week 14 or 15 of class on a project of their own choosing that will leverage Python. Before Spring Break (i.e. by Week 8), please submit to me a short write up (no more than 1 page) of what your project will be, what problem you will solve, how you will use Python to solve the problem. On week 14 or 15, please be prepared to give a 10 minute presentation explaining your problem, solution, how you got there, and hopefully some cool maps and results.