GEOG 490/590: GIS Programming
CRN: 44479/44486
Course Webpage: http://web.pdx.edu/~jduh/courses/geog490w11/index.htm
(Or go to http://web.pdx.edu/~jduh/
and select "Courses-> GEOG 4/590(W11)")
Instructor:
Geoffrey Duh (Email: jduh@pdx.edu), Lesley Bross (Email: lbross@pdx.edu)
Duh
Office: CH 424J Phone: 503-725-3159
Office hours: Mon 1-3
Bross
Office hours: by appointment; Available on gmail chat by appointment
Lectures/Lab: Tuesday, Thursday 10:00-11:50 in CH
469.
Course emailing list: gisprogramming@lists.pdx.edu
Pre-course survey: Go to the website below and follow the
instructions to complete the questions by Jan 6, 5 pm. http://survey.oit.pdx.edu/ss/wsb.dll/jduh/gisprogramming.htm
Course Objectives
This course teaches students to develop custom-made
applications in ArcGIS using the Visual Basic .NET (VB .NET) programming
language and ArcObjects. Topics include ArcGIS software environment, VB .NET
programming syntax and styles, ArcMap interface customization, ArcObjects
routines and functions, and basic computing algorithms. Prerequisite: GEOG
488/588. After completing the course, students will be able to design
and develop VB .NET add-in applications in ArcGIS.
Text and Readings
There is no required textbook
used in class. The ESRI ArcObjects technology we will be learning is so new
that no textbook has been published yet! Instead, students will read online
ArcGIS and VB .NET documents or other digital documents provided by the
instructor. 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.
ArcObjects References
VB .NET References
The following books have been
reviewed by your instructors and are good reference books for VB .NET
programming. We recommend that you choose at least one to add to your library.
None is perfect but we?ll try to have a copy of each in class so students can
review and pick their favorite(s).
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 |
10% |
Lab Assignments |
50% |
Midterm |
15% |
Term Project |
25% |
Class
Participation (10%)
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.
Lab
Assignments (50%):
During the lab sessions (i.e., the second part of the
class) you will develop VB .NET programs on the computers. If you do not finish
the labs during the assigned time periods the lab (CH 469) has open hours. Labs
in CH 475, Broadway Housing Building, Millar Library First Floor, and NH96 all
have ArcGIS and Visual Basic 2008 Express on the computers. Students
should submit their lab work digitally, with the source code, test data, and
write-up documents zipped in one file. The title of the zipped file
should include your last name and the lab number. For example: Bross_Lab1.zip.
Submit the zipped file as an e-mail attachment to Lesley Bross: lbross@pdx.edu. 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 Lesley Bross. The lab assignments will
be evaluated based on several common software evaluation criteria. Click the
link here
to see an example of the assessment form.
Labs are due at the beginning
of class on the due date. Labs will be accepted late for only one week after
the deadline with a 10% point deduction. One week past the deadline, no lab(s)
will be accepted unless arrangements have been made in advance.
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%): (Student
Projects)
Individual students will work on a GIS
application they identify and develop VB .NET ArcGIS add-in to implement the
application. Each student must submit a one-page description of the VB .NET
ArcGIS add-in on the 5th week and present and demonstrate the add-in during the
scheduled final exam time. Students' term
project will be evaluated using a rubric
developed by the instructors. Please review the rubric before the presentation
to know project assessment criteria.
VB .NET Add-In Project Description
Guideline
It's a good idea to browse
online sources to see what VB .NET functions and subroutines are already
available. This will give you a sense of the scope and complexity of the
development environment. Each student is required to submit a typed project
description to instructor Duh's mailbox in 424 CH or by email (jduh@pdx.edu) on February 3 before class.
Your final VB .NET application will be implemented following the description.
The description should include the following information.
- ArcGIS add-in Title: A sentence highlighting the
main function of your add-in.
- Major function: A brief description of the
functions of the add-in.
- Background: A short paragraph describing why the
add-in is needed, the major problem it resolves, and the expected users and
benefits.
- Prototype user interface: Use Powerpoint or any
graphic design program you are familiar with to create a prototype of the
user interface (buttons, fields, etc).
- GIS data will be used: Describe your study area,
the GIS data layers, and the topological characteristics of these data
layers.
- Particular algorithm: Describe any particular
algorithms that will be implemented (e.g., sorting, random number
generator, etc).
Add-In
Demonstration:
You must develop a Powerpoint presentation that includes
the essential information described in the ArcGIS add-in description and a
reflection of the main challenges and major breakthrough in the project.
Accompanying the presentation is a live demonstration of your add-in.
You must acknowledge the source of any code that you incorporate
in your add-in. You will fail this class if you commit plagiarism.
Click here
for the information on the requests for academic accommodation and the policy
on academic honesty.
VB.NET Course Schedule &
Readings
Exercises are for classroom practice only.
Labs need to be turned in to the instructor.
Week
|
Tuesday
|
Thursday
|
1
Jan 4, 6
|
- Course Overview
- Programming Environment
- Intro to Programming (Slides)
|
- Before you start:
- Intro to VB 2008 programming environment (ESRI templates,
references, project structure)
- XML syntax
- ArcGIS 10 Add-ins and VB .NET IDE Intro (Slides)
|
- Exercise 1: verify odin
account, finish pre-course survey, access course readings, and
install your first add-in(link)
|
- Lab 1: ArcGIS Add-ins
"Hello World" (excerpts from ESRI tutorial) (link)
|
2
Jan 11, 13
|
- VB .NET GUI controls/objects
- ArcGIS Add-in GUI controls/objects (Slides)
- ArcGIS Add-in Components (link)
|
- VB .NET Syntax I
- Elements of code
- Declaration and statements
- Scope of data
- Naming conventions
- Enumerations and structures (user-defined type) (Slides)
|
|
- Lab 1 Due
- Exercise 2: VB .NET
syntax (link)
|
3
Jan 18, 20
|
- VB .NET Syntax II
- Commenting code
- Operators, conditional and looping statements
- Exception handling
- Resolving compile, runtime, and logic errors
- VB .NET IDE - Debugging (Slides)
|
- VB .NET Syntax III
- VB Built-in functions (String and Math classes)
- Collections: Array and List (Of T) (Slides)
|
- Exercise 3: VB .NET
debugging (link)
- Begin Lab 2: Numerical
Approximation to estimate PI (design GUI including window and
button) (link)
|
- Continue Lab 2: Numerical Approximation to estimate PI
(computation part)
|
4
Jan 25, 27
|
- VB .NET File I/O and XML
- Network shortest path algorithm (Slides)
|
- VB Data Structures
- ArrayList
- Queue, stack, and hashtable (Slides)
|
Lab 2 Due
Begin Lab 3:
Dijkstra shortest path (GUI & File IO)
|
- Lab 2 Due
- Begin Lab 3: Dijkstra
shortest path (GUI & File IO) (link)
|
5
Feb 1, 3
|
|
- ArcObjects classes and interfaces
- Using ArcObjects: Color, Style Gallery, and Layer Symbology (slides)
- Project Description
Due
|
- Continue Lab 3: Dijkstra shortest path
|
- Continue Lab 3: Dijkstra shortest path
- Exercise 4: Layer
symbology (link)
|
6
Feb 8, 10
|
|
- ArcObjects: Table and Attribute Data (slides)
|
- Lab 3 Due
- Lab 4: ArcMap Layers & Attribute
Manipulation (link)
|
- Continue Lab 4: ArcMap Layers & Attribute
Manipulation
|
7
Feb 15, 17
|
- ArcObjects: Introduction to Geoprocessing (slides)
|
- ArcObjects: Interacting with the map (slides)
- Buttons and Tools
- Using existing ArcGIS commands
- Defining an area on a map (IEnvelope)
- Working with graphic map elements
|
- Exercise 5:
Introduction to Geoprocessing (link)
|
- Lab 4 Due
- Exercise 6: Buttons and
Tools (link)
|
8
Feb 22, 24
|
- ArcObjects: Vector Data analysis I (slides)
- Vector geometry
- Spatial query and selection set
|
- ArcObjects: Vector Data analysis II (slides)
- Spatial Join
- Vector Buffering
- Vector Overlay
|
- Lab 5: ArcMap UITool, Commands, and
Vector Features Operations (link)
|
- Exercise 7: vector
analysis (link)
- Continue work on Lab 5: ArcMap UITool, Commands, and Vector
Features Operations
|
9
Mar 1, 3
|
- ArcObjects: Raster Data and Analysis (slides)
- Con Operation - Con
- Math Operation - SquareRoot
- Local Operation - Combine
- Neighborhood Operation - FocalStatistics
|
- ArcObjects beyond the desktop including ArcGIS server and ESRI
web mapping clients (slides)
|
- Exercise 8: raster
analysis (link)
|
|
10
Mar 8, 10
|
- Project assistance/debugging
|
|
Mar 15
(Tue)
|
- Final presentation (10 am -
noon)
|
|
Readings
(The reading list might be modified during the
term. Please visit the course webpage often to get the most up-to-date
information.)
Date
|
Topic & Reading
Instructions
|
Jan 6
|
- VB .NET IDE (MSDN: "Introduction
to the Visual Basic Express IDE" Read all entries in the
section)
- ESRI Templates, references, and project
structure (ArcObjects: "Using
project templates to extend ArcObjects", "ArcGIS
Project Wizard", "Add
ArcGIS Reference dialog box", "ArcGIS
Visual Studio IDE Integration Framework for add-ins")
- Introduction to ArcObjects add-ins (ArcObjects:
"Desktop.Addins")
- XML syntax (http://www.learn-xml-tutorial.com/)
|
Jan 11
|
- VB .NET GUI controls/objects (MSDN: "Creating
the Visual Look of Your Program: Introduction to Windows Forms"
Read "Communicating with Your Program's User: The User Interface",
"Interacting with the User: Using Buttons", "Displaying and
Receiving Text: Using Labels and Text Boxes", "Making Your Program
React to the User: Creating an Event Handler", "Getting User
Choices: Using Check Boxes and Radio Buttons", "Multiple-Item
Controls: Working with ListBox and ComboBox Controls" topics in
this section)
- ArcGIS Add-in GUI controls/objects (ArcObjects
API Reference:"ESRI.ArcGIS.Desktop.AddIns
Namespace" Review API to see what ESRI controls are
available)
|
Jan 13
|
- Elements of code (MSDN: "The
Basics: How Programming Works", "Words
and Text: Using String Variables to Organize Words", and "Closer
Look: Understanding Properties, Methods, and Events")
- Declaration and statements (MSDN: "Representing
Words, Numbers, and Values with Variables", "Variable
Declaration in Visual Basic", "Dim
Statement (Visual Basic)", and "Data
Type Summary")
- Scope of variables (MSDN: "Scope
in Visual Basic")
- Naming conventions (MSDN: "Naming
Guidelines " Read all entries in the section)
- Enumerations (MSDN: "When
to Use an Enumeration", "How
to: Declare Enumerations", "How
to: Refer to an Enumeration Member")
- Structures: User-Defined Data Type (MSDN: "Structure
Declaration" and "Structure
Variables")
|
Jan 18
|
- Commenting code (MSDN: "Making
Notes in Your Programs: Using Comments")
- Operators and conditional statements: (MSDN:
"Comparisons:
Using Expressions to Compare Values", "Logical
and Bitwise Operators in Visual Basic")
- Looping statements: (MSDN: "Making
a Program Repeat Actions: Looping with the For...Next Loop",
"Closer
Look: Using Do...While and Do...Until to Repeat Until a Condition
Is Met")
- Exception handling (ArcObjects: "Error
handling and debugging" read this page and "How
to implement error handling". Numbers people may want to read
section on ArcObjects error codes)
- Resolving compile, runtime, and logic errors
and debugging (MSDN: "What
Went Wrong? Finding and Fixing Errors Through Debugging" Read
all entries in this section)
|
Jan 20
|
- VB Built-in functions (String and Math classes) (MSDN: Browse "System
Namespace". Read "String
Class", "Math
Class")
- Collections: Array and List (Of T) (MSDN: "Arrays:
Variables That Represent More Than One Value", "Array
Class")
|
Jan 25
|
- VB .NET File I/O (MSDN: Browse "Basic
File I/O". Read "Common
I/O Tasks" and the code examples of the following subtopics:
Read Create a text file, Write to a text file, Read from a text
file, and Append text to a file.)
- Optional: VB .NET and XML (MSDN: "XmlSerializer
Class")
- Dijkstra network shortest path
algorithm http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
|
Jan 27
|
- ArrayList (MSDN: "An
Extensive Examination of Data Structures" Read Part 1: An
Introduction to Data Structures)
- Queue, Stack, and Hashtable (MSDN: "An
Extensive Examination of Data Structures" Read Part 2: The
Queue, Stack, and Hashtable)
|
Feb 1
|
- Review ListBox control ("Multiple-Item
Controls: Working with ListBox and ComboBox Controls")
- ArcObjects IGxDialog("IGxDialog
interface", "IGxObjectFilter
interface")
- Introduction to ArcObjects (ArcObjects: "Introduction
to .NET for ArcObjects developers", "Learning
ArcObjects")
- Dataset and layer management (ArcObjects: "Working
with map documents" (stop at end of MxDocument section), "How
to access maps and layers via the MxDocument", "Working
with the map", "ILayer
interface")
- Review code samples from instructor ("Using
the IGxDialog object")
- .NET garbage collection (MSDN: "Garbage
Collector Basics and Performance Hints"
|
Feb 3
|
- Reading ArcObjects object model diagrams (ArcObjects: "Reading
OMDs"
- ArcObjects classes and interfaces (ArcObjects: "Casting
between interfaces")
- Using ArcObjects: Color and Layer Symbology (ArcObjects: "Working
with layers and renderers" Read feature and raster renderers
sections, "How
to make different types of colors and color ramps")
- Style Gallery (http://webhelp.esri.com/arcgiSDEsktop/9.3/index.cfm?TopicName=The_style_manager)
- How to get a symbol from the style gallery (http://help.arcgis.com/EN/sdk/10.0/vba_desktop/conceptualhelp/index.html#//0001000000pp000000)
|
Feb 8
|
|
Feb 10
|
- Accessing GIS data with ArcObjects (ArcObjects: "Geodatabase"
Read Core Geodatabase, Workspace, Datasets, “Table, ObjectClass,
and FeatureClass objects “, and Raster sections)
- Accessing records in GIS dataset (ArcObjects: "Querying
geodatabase tables")
- ArcObjects: Table and Attribute Data (ArcObjects: "Creating
fields")
- Updating records in a table (ArcObjects: "Updating
attributes of existing features", "ICalculator
Interface")
- Get statistics from a field (ArcObjects: "IDataStatistics
Interface")
|
Feb 15
|
- Introduction to Geoprocessing (ArcObjects: "Interpreting
a tool reference page", "Executing
tools", "How
to run a geoprocessing tool" (Stop at "Using the geoprocessor
managed assembly"), "Working
with result objects", "Geoprocessing
messages", "Using
environment settings")
- Use
Geoprocessing Tools in ArcObjects Applications : an ArcUser
article
- "Geoanalyst"
(ArcObjects 10 SDK)
- Optional: "Running
a geoprocessing tool using background geoprocessing"
|
Feb 17
|
- ArcObjects: Review "Desktop.AddIns"
class diagram
- ArcObjects: Review list of built-in "ArcMap
commands"
- Interacting with the map display (ArcObjects:
"Interacting
with the map display" Read "How to draw an X on the screen" for
point, polyline, rectangle, and polygon)
- ArcObjects: "How
to redraw the display"
|
Feb 22
|
- Vector geometry (ArcObjects: “Geometry”
Read Introduction to geometry objects, Envelope, Point, Multipoint,
Polyline, Polygon, and BufferConstruction object.)
- Spatial query (ArcObjects: "ISpatialFilter
Interface")
|
Feb 24
|
- Access GIS data via IFeatureClassName in analysis (ArcObjects:
"Converting
simple data")
- Vector analysis overview (ArcObjects: "ArcMapUI
Library Contents" Browse the list. Visit and read the
hyperlinked pages for ISpatialJoin
Interface)
- ArcObjects: Vector Buffering and Overlay (ArcObjects: "IFeatureCursorBuffer2
Interface" and "IBasicGeoprocessor
Interface")
|
Mar 1
|
- Raster analysis overview (ArcObjects: "GeoAnalyst"
Browse all Geoanalyst objects)
- Raster analysis environment (ArcObjects: "Working
with the analysis environment")
- ArcObjects: Raster Local and Neighborhood Operations (ArcObjects:
"SpatialAnalyst"
Browse all spatial objects. Visit and read the hyperlinked pages of
RasterLocalOp and RasterNeighborhoodOp)
|
Mar 3
|
- ArcGIS Server (Server 10 Help: "What
is ArcGIS Server?", "Working
with ArcGIS Server", "Components
of an ArcGIS Server System", "What
types of services can you publish?")
- ESRI web mapping: (ArcGIS Server Blog "Which
ESRI web mapping API should I choose?")
- ArcGIS Web Mapping ("Overview".
Near the bottom are links to samples for the JavaScript, Flex, and
SilverLight API's.)
- ArcGIS Viewer for Flex ("Creating
a custom widget". Watch the video and notice how the concepts
are to VB .NET even if the syntax is different.)
|