GIS Programming - Syllabus



GEOG 490/590: GIS ProgrammingCRN: 44479/44486Course Webpage: (Or go to 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-3Bross Office hours: by appointment; Available on gmail chat by appointmentLectures/Lab: Tuesday, Thursday 10:00-11:50 in CH 469.Course emailing list: gisprogramming@lists.pdx.eduPre-course survey: Go to the website below and follow the instructions to complete the questions by Jan 6, 5 pm. ObjectivesThis 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 ReadingsThere 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 ReferencesArcObjects SDK 10 Microsoft .NET Framework Code snippets available from above url, then API Reference tab. IDE integration snippet code > ESRI.ArcGIS.Snippets > Snippets .NET Samples available from above url, then .NET Samples, ESRI.ArcGIS.SamplesDotNet ArcObjects developer forums ESRI discussion conferences (closed forums) ArcObjects .NET API Code Gallery ArcGIS 9.3 Desktop Help (VB samples) Programming ArcObjects with VBA: A Task-Oriented Approach (2nd Edition) by Kang-Tsung Chang. Note that the examples in this book are for VBA so the syntax is different than .NET but they may still be helpful VB .NET ReferencesThe 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).VB in a Nutshell: "pf_rd_p=486539851&pf_rd_s=lpo-top-stripe-1&pf_rd_t=201&pf_rd_i=0596003080&pf_rd_m=ATVPDKIKX0DER&pf_rd_r=10CM2CE36B8TECKCMF4C Programming Visual Basic 2005: Beginning Object-Oriented Programming with VB 2005: From Novice to Professional: Beginning Microsoft Visual Basic 2008: GradingThe 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 Participation10%Lab Assignments50%Midterm15%Term Project25%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 GuidelineIt'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. Course Schedule & ReadingsExercises are for classroom practice only.Labs need to be turned in to the instructor. WeekTuesdayThursday1Jan 4, 6Course OverviewProgramming EnvironmentIntro to Programming (Slides)Before you start:Intro to VB 2008 programming environment (ESRI templates, references, project structure)XML syntaxArcGIS 10 Add-ins and VB .NET IDE IntroExercise 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)2Jan 11, 13VB .NET GUI controls/objectsArcGIS Add-in GUI controls/objectsVB .NET Syntax IElements of codeDeclaration and statementsScope of dataNaming conventionsEnumerations and structures (user-defined type)Continue Lab 1Lab 1 DueExercise 2: VB .NET syntax (link)3Jan 18, 20VB .NET Syntax IICommenting codeOperators, conditional and looping statementsException handlingResolving compile, runtime, and logic errorsVB .NET IDE - DebuggingVB .NET Syntax IIIVB Built-in functions (String and Math classes) Collections: Array and List (Of T)Exercise 3: VB .NET debugging (link)Begin Lab 2: Numerical Approximation to estimate PI (design GUI including window and toolbar) (link)Continue Lab 2: Numerical Approximation to estimate PI (computation part)4Jan 25, 27VB .NET File I/O and XMLNetwork shortest path algorithmVB Data Structures ArrayListQueue, stack, and hashtableLab 2 DueBegin Lab 3: Dijkstra shortest path (GUI & File IO)Continue Lab 3: Dijkstra shortest path (Algorithm)5Feb 1, 3Intro to ArcObjectsArcGIS Dataset and Layer ManagementArcObjects classes and interfacesUsing ArcObjects: Color, Style Gallery, and Layer SymbologyProject Description DueContinue Lab 3: Dijkstra shortest pathLab 3 Due Exercise 4: Layer symbology (link)6Feb 8, 10Midterm examArcObjects: Table and Attribute DataLab 4: ArcMap Layers & Attribute ManipulationContinue Lab 4: ArcMap Layers & Attribute Manipulation7Feb 15, 17ArcObjects: Introduction to GeoprocessingArcObjects: Commands and ToolsExercise 5: Introduction to GeoprocessingLab 4 Due Exercise 6: basecommand and basetools (Use items from add-in walkthrough)8Feb 22, 24ArcObjects: Vector Data analysis IOverview and raster analysis environmentVector geometryJoining Data (by Location)ArcObjects: Vector Data analysis IIVector BufferingVector OverlayLab 5: ArcMap UITool, Commands, and Vector Features OperationsExercise 7: vector analysis (clipping)Continue work on Lab 5: ArcMap UITool, Commands, and Vector Features Operations9Mar 1, 3ArcObjects: Raster Data and AnalysisOverview and raster analysis environmentRaster Local OperationsRaster Neighborhood OperationsArcObjects beyond the desktop including ArcGIS server and ESRI web mapping clientsExercise 8: raster manipulation (clipping, convert raster to feature)Lab 5 Due10Mar 8, 10Project assistance/debuggingFinal PresentationsMar 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.)DateTopic & Reading InstructionsJan 6VB .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", " HYPERLINK "" \l "/ArcGIS_Project_Wizard/0001000003s1000000/" ArcGIS Project Wizard", "Add ArcGIS Reference dialog box", " HYPERLINK "" \l "//00010000017t000000" ArcGIS Visual Studio IDE Integration Framework for add-ins")Introduction to ArcObjects add-ins (ArcObjects: " HYPERLINK "" \l "/Overview/001v00000266000000/" Desktop.Addins")XML syntax ()Jan 11VB .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:" HYPERLINK "" \l "/ESRI_ArcGIS_Desktop_AddIns_Namespace/001v0000011z000000/" ESRI.ArcGIS.Desktop.AddIns Namespace" Review API to see what ESRI controls are available)Jan 13Elements 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 18Commenting 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 20VB 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 25VB .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.)VB .NET and XML (MSDN: " HYPERLINK "(VS.80).aspx" XmlSerializer Class")Dijkstra network shortest path algorithm Jan 27ArrayList (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 1Introduction to ArcObjects (ArcObjects: "Introduction to .NET for ArcObjects developers", "Learning ArcObjects")Dataset and layer management (ArcObjects: "Working with map documents", "Working with the map", "Working with the page layout")Feb 3ArcObjects 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 ()How to get a symbol from the style gallery ()Feb 8Midterm ExamFeb 10ArcObjects: Table and Attribute Data (ArcObjects: "Creating fields")Feb 15Introduction to Geoprocessing (ArcObjects: "How to run a geoprocessing tool" (Stop at "Using the geoprocessor managed assembly"), "Interpreting a tool reference page") (ArcGIS Desktop 9.3 Help: " HYPERLINK "" Slice"and "Slope" Look for VB examples at end of each section)(Optional: Review the Geoprocessor and Slice classes in the ArcObjects API. There are two different ways to configure and execute the slice tool from the Geoprocessor class)Feb 17Commands and tools (ArcObjects: "Building custom UI elements using add-ins" Start with 'Adding ZoomToLayer functionality to the custom button', End at 'Testing the custom button and tool'). Note that you will need the source files from the add-in you created in Lab 1 for today's exercise.Feb 22Vector analysis overview (ArcObjects: "ArcMapUI", "ArcMapUI Namespace Contents" Browse the list. Visit and read the hyperlinked pages for IJoinData and ISpatialJoin)Vector geometry (ArcObjects: "Geometry" Browse all Geometry objects)Feb 24ArcObjects: Vector Buffering and Overlay (ArcObjects: "Geoprocessor managed assembly", "ESRI.ArcGIS.AnalysisTools Namespace")Mar 1Raster analysis overview (ArcObjects: " HYPERLINK "" \l "//0024000000q1000000" GeoAnalyst" Browse all Geoanalyst objects)Raster analysis environment (ArcObjects: "Working with the analysis environment")ArcObjects: Raster Local and Neighborhood Operations (ArcObjects: " HYPERLINK "" \l "//004000000148000000" SpatialAnalyst" Browse all spatial objects. Visit and read the hyperlinked pages of RasterLocalOp and RasterNeighborhoodOp)Mar 3ArcGIS Server (ArcMap 10 Desktop Help: "What is ArcGIS Server?" (Both results), "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" check out the "sample gallery" too) ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download