GIS Programming – Summer 2006 - G410/510 – 2 credits

taught by David Percy of the Geology Department

Format: One hour lecture followed by 1.5 hour lab

Mon - Thurs 1:00 to 3:30 pm

This course will focus on automating geoprocessing tasks in a GIS environment. The new scripting model in ArcMap 9 is COM compliant and therefore allows us to use any general purpose scripting language, the preferred option being Python.

Students will need either a background in GIS or a background in programming. For example: It is recommended that students have completed raster and vector based GIS coursework, or have equivalent work experience; alternatively, students could have a strong programming background either through coursework or work experience, but no GIS experience. Please note that HTML coding does not count as programming. Javascript development would, however.

We will cover the basics of programming, including variables, scope, and control structures. We will cover the details of common GIS raster and vector objects.

Exercises will be based on my own work, lending a "real world" feel to the class.

Tentative Syllabus:

Meeting

Topic

Lab Exercise

1

Intro to course; fundamentals of geoprocessing; fundamentals of Python; using variables; naming conventions and reserved words; testing and printing variable values; geospatial data types,

Hello World

2

Looping and control structures, Debugging, optional and required parameters

Looping statements

3

Objects, properties and methods; the OO paradigm; Object Model Diagrams

Getting and setting object parameters

4

The geoprocessor object, introduction

Exploring the geoprocessor object

5

Functions and parameters, passing and returning values

Glacier clipping exercise

6

Multiple inputs and complex parameter passing

same

7

Selections and sets, SQL basics

Glacier raster statistics exercise

8

Writing results to disk, various formats and switches

same

9

Advanced topics and further directions; Num.py for numerical modeling (instead of Matlab?); other useful modules…