GIS 4653/5653:  Spatial Programming and GIS

Fall 2013

Valliappa Lakshmanan (

University of Oklahoma

Class Hours: N108 of Sarkeys Energy Center at 1pm on Fridays

Office Hours: NWC 4457 Thursday afternoons or by appointment


Course Objective:

The aim of the course is to introduce students to spatial programming as a way to automate common GIS tasks as a way to increase accuracy and reduce drudgery. Spatial programming skills are essential for going beyond canned GIS functions and are key to exploring areas such as automated spatial analysis, spatial data mining and application development.  This course strives to strike a balance between all-ESRI solutions and all-open-source solutions by presenting both the convenience of the ESRI approach and the flexibility of the open-source one.


Learning Objectives:

·         Recognize situations where spatial programming is needed

·         Carry out basic GIS tasks in Python

·         Create Python scripts that employ ArcGIS geoprocessing tools

·         Use open source Python modules for data manipulation and geoprocessing

·         Implement spatial analysis and data mining functions in Python

·         Work with both vector and raster data


Textbook: None



  Learning Python by Mark Lutz, O’Reilly Press

  Programming Python by Mark Lutz,  O’Reilly Press

  Python Geospatial Development by Erik Westra, Packt Publishing

  Python Scripting for ArcGIS by Paul Zandbergen, ESRI Press



Course outline (subject to modification):


0.       Software

a.       Why spatial programming?

b.      Logistics

c.       Programming Environment

d.      Homework

1.       Introduction to Python Programming

a.       Why Python?

b.      The Python interpreter and IDE

c.       Python Basic Syntax

d.      Python Modules

e.      Types

f.        Homework

2.       More Python

a.       Statements

b.      Types

c.       Functions

d.      Modules

e.      Classes

f.        Exceptions

g.       Homework

3.       Basic GIS using Open Source Python Modules

a.       Reading and writing shapefiles

b.      Displaying shapefiles

c.       Homework

d.      Raster data

e.      Projections

f.        Creating shapefiles from calculated data

g.       Geoprocessing

h.      Homework

4.       Scripting in ArcGIS

a.       ModelBuilder

b.      Reading and writing shapefiles

c.       Attribute tables

d.      Geometry

e.      Raster data

f.        Working with toolboxes

g.       Creating toolboxes

h.      Homework

5.       Processing and Dissemination

a.       Numeric processing

b.      Web applications

6.       Project

7.       Exam




  Undergraduate students: course grade will be based on homework (70% of grade) and an exam (30%).

  Graduate students: course grade will be based on homework (35%), a term project (35%) and an exam (30%).

  Letter grades are based on absolute points and will not be curved: A (>= 90%), B (>= 80%), C (>= 70%), D (>= 60%), F (< 60%).

  Each homework and term project is graded on a scale of 10 points. Late submissions are subject to a penalty of 2 points off per day. No credits will be given for assignments or projects that are late for more than 5 days, unless granted prior permissions.

  The exam will cover concepts covered in the class; the exact format of the exam (multiple-choice/short-answer/computer-project etc.) is subject to change.

  The topic of the term project (graduate students only) will be chosen by the student and approved by the instructor; the term project should be decided upon sometime after the mid-point of the semester.

  You will have to present your work as a 12-minute talk

  All work should be submitted digitally (

  Reports should be in PDF (Microsoft Word, Powerpoint, etc. are not acceptable)

  Always attach relevant code with comments

  Organize assignments so that you have intermediate outputs. You will not receive any credit for partial code, only for partial outputs.



  Each student in this course is expected to abide by Academic Integrity

  You are encouraged to study together and to discuss information and concepts covered in lecture and the sections with other students. You can give "consulting" help to or receive "consulting" help from such students on lab assignments or activities.

  However, this permissible cooperation should never involve one student having possession of a copy of all or part of work done by someone else.



  Any student in this course who has a disability that may prevent him or her from fully demonstrating his or her abilities should contact the instructor personally as soon as possible so accommodations can be made to ensure full participation and facilitate your educational opportunities.

  It is the policy of the University to excuse absences of students that result from religious observations and to provide without penalty for the rescheduling of examinations and additional required class work that may fall on religious holidays.