GEOG 490/590: GIS Programming

CRN: 14986/14987

Course Webpage: http://web.pdx.edu/~jduh/courses/geog490f07/index.htm

(Or go to http://web.pdx.edu/~jduh/ and select “Courses-> GEOG 4/590(F07)”)

 

Instructor: Geoffrey Duh  (Email: jduh@pdx.edu)

        Office: CH 424J      Phone: 503-725-3159    Office hours: Mon 1-3; Wed 1-2

Lectures/Lab: Tuesday and Thursday 12:00-13:50 in CH 418 (Tue) and CH469 (Thu).

        Thursdays are scheduled for labs. Lab attendance is mandatory.

Course emailing list: gisprogramming@lists.pdx.edu

 

Pre-course survey: Go to the website below and follow the instructions to complete the questions by September 27, 3pm. http://survey.oit.pdx.edu/ss/wsb.dll/jduh/gisprogramming.htm 

 

Course Objectives

Introduction to Visual Basic GIS programming languages for customizing applications and streamlining spatial analysis. Topics include GIS software environment, programming syntax and styles, interface customization, GIS routines and functions, and basic algorithms. Programming lab included. Prerequisite: GEOG 488/588. After completing the course, students will be able to design and develop VBA applications in ArcGIS.

 

Text and Readings

The text for this course is Getting to Know ArcObjects: Programming ArcGIS with VBA by Robert Burke, 2003 (ESRI Press. ISBN: 1-58948-018-x). The book is available at the Portland State Bookstore and from Amazon.com or ESRI.com. The optional book is Programming ArcObjects with VBA: A Task-Oriented Approach (2nd Edition) by Kang-Tsung Chang, 2007 (CRC Press. ISBN: 0-8493-9283-7).

The lecture component of this course consists of discussions of the readings and therefore you should have read the material before class. Students are expected to come to class ready to be active participants in the discussion.

 

Grading

The instructor will grade graduate and undergraduate students based on separate distribution curves. The components of a student’s grade are listed in the table below.

Class Participation

15%

Lab Assignments

45%

Midterm

15%

Term Project

25%

 

Class Participation (15%)

Attendance to this course is mandatory. If you miss more than two class periods then you will be penalized five percent of your final grade per absence. PLEASE DO NOT MISS CLASS. You are expected to take part in the discussions and if you are not in class then you cannot. If you are repeatedly late you will be given an absence.

All students are required to select a programming topic from a list provided by the instructor (see the last page of the syllabus) and give a 10 to 15 minutes discussion on a VBA script in class. You must find a bug-free VBA program and walk through the program in class. Students who are responsible for the week’s topics must email the program and its source to the course mailing list by 5pm the day before the class. The discussion should include an overview of the program, a quick demonstration, and a line-by-line walkthrough of the program. Sample programs can be found from the textbook CDs, ESRI ArcScripts, ESRI Developer Network (EDN), or other sources.

 

Lab Assignments (45%):

During the lab sessions on Thursdays in CH469 you will develop VBA programs on the computers. If you do not finish the labs during the assigned time periods the lab also has open hours. CH 475, CH 1, CH 324, and Broadway Computer Lab all have ArcGIS on the computers. Students should submit their lab work digitally, with the source code, test data, and write-up documents zipped in one file. If the file size is too big to send via email, please put the zipped file in a network space and send the link to the instructor.

 

Midterm Exam (15%):

            There will be one in-class, closed-book midterm exam and no final exam. Unscheduled in-class quizzes will be administered without notifications. Results of these quizzes will be counted toward class participation.

 

Term Project (25%):

Individual students will work on a GIS application they identify and develop VBA program to implement the application. Each student must submit a one-page description of the VBA application on the 4th week and present and demonstrate the VBA application during the scheduled final exam time.

 

VBA Application Description Guideline

It’s a good idea to browse online sources to see what VBA scripts have been developed. This will give you a sense of the scope and complexity of the program. Each student is required to submit a typed project description to my mailbox in 424 CH or my email address (jduh@pdx.edu) by noon on Oct 16 (Tuesday). Your final VBA application will be implemented following the description. The description should include the following information.

 

  1. VBA application Title: A sentence highlighting the main function of your AP.
  2. Major function: A brief description of the functions of the AP.
  3. Background: A short paragraph describing the why the AP is needed, the major problem it resolves, and the expected users and benefits.
  4. GIS data will be used: Describe your study area, the GIS data layers, and the topological characteristics of these data layers.
  5. Particular algorithm: Describe any particular algorithms that will be implemented (e.g., sorting, random number generator, etc).

 


 

AP Demonstration:

You must develop a Powerpoint presentation that includes the essential information described in the VBA AP description and a reflection of the main challenges and major breakthrough in the project. Accompanying the presentation is a live demonstration of your AP. You must acknowledge the sources of any codes that you borrow in your AP. You will fail this class if you commit plagiarism.

 

 

Program Discussion Schedule

 

Week

Tuesday Topics

Presenters

2

Oct 2

·  CASE and IF THEN Statements

·  FOR NEXT and DO WHILE Statements

 

3

Oct 9

·  Using Subroutines and Functions (Example)

·  Using the Debug Tools in VBA IDE (Slides, Example)

 

Craig Warden

4

Oct 16

·  Adding a Feature Class to ArcMap (Slides, Example)

·  Adding a Raster Data Set (Slides, Example)

Heath Brackett

Chris Long

5

Oct 23

·  Adding Fields in Attribute Tables (Slides, Example)

·  Getting and Setting Values

Chad Long

 

6

Oct 30

·  Setting Layer Color (Slides, Example)

·  Class Breaks Renderer (Slides, Example)

·  Selecting Features (Example)

Ron Mosgrove

Thomas Trotter

Luis Murillo

7

Nov 6

·  Making UITool (Slides, Example)

·  Drawing Graphic Elements (Slides, Example)

·  ArcGIS Toolbar Commands

Amarina Wuenschel

Jessica Leonard

 

8

Nov 13

·  Vector Buffering

·  Vector Overlay (Slides, Example)

·  Joining Data by Location

 

Tyler Vick

 

9

Nov 20

·  Raster Objects (Slides, Example)

·  Raster Local Operations (Slides, Example)

·  Raster Neighborhood Operations (Slides, Example)

Robert Chappell

Loren Meagher

Charles Cannon

 

 


 

Course Schedule & Readings

 

Week

Tuesday
Discussion Topic/ Readings

Thursday Lab

1

Sep 25/27

·  Course Overview (Slides)

·  VBA Programming Environment (Chang Ch1)

Lab 1: Hello World (Slides) Due Oct 9 by 12.

2

Oct 2/4

·  Object-Oriented Programming (Burke Ch 1, 4)

·  VB Syntax (Burke 5, 7) (Slides) (Examples)

Lab 2: VBA GUI Objects and Numerical Approximation (Burke Ch 2, 3) Due Oct 18 by noon.

3

Oct 9/11

·  Basic Programming Algorithms (Burke Ch 6, 8)

·  QuickSort (Wikipedia) (Slides)

Lab 2 contiuned.

4

Oct 16/19

·  Introduction to ArcObjects (Burke Ch 9, 10)

·  ArcGIS Dataset and Layer Management (Burke Ch 14) (Slides)

Project Description Due

Lab 3: File I/O and ArcMap GUI Customization

5

Oct 23/25

·  Using ArcObjects: Attribute Data (Burke Ch 20, Chang Ch 5) (Slides) (Examples)

Lab 3 continued.

6

Oct 30/ Nov 1

·  Using ArcObjects: Layer Symbology (Burke Ch 15, 16, 17) (Slides) (Examples)

Midterm exam

Lab 4: ArcMap Layers & Attribute Manipulation

7

Nov 6/8

·  Using ArcObjects: Command Tools (Burke 11, 12, 13) (Slides) (Examples)

Lab 4 Continued.

8

Nov 13/15

·  Using ArcObjects: Vector Data (Chang Ch 10)

Lab 5: ArcMap UITool, Commands, and Vector Features Operations

9

Nov 20/22

·  Using ArcObjects: Raster Data (Chang Ch 11) (Slides, Examples)

Thanksgiving – No class

10

Nov 27/29

·  Optimizing VB codes (AiVosto VBShop)

Students work on project

Dec 6 (Thu)

·  Final presentation (10:15-12:05 CH 418) Final Project Guideline