Transcript Lecture 4

Customisation
• The GUI in most GIS applications is sufficient for most
needs. However, situations arise where you want either to:
– Modify the interface, or
– Add new functionality
• We will focus on ArcGIS, but similar principles apply to
other systems.
GUI Changes
• Modifying the interface can be achieved without any
programming.
• Basically involves adding, deleting or moving objects in
the GUI using drag and drop operations.
• The changes are initiated from the Tools | Customize
menu.
• We will look at examples in the practical class.
Programming Options
• ArcGIS is constructed from several hundred ArcObjects.
• These can be programmed to add functionality.
• You can either:
– Write your own code, or
– Download code via the Internet
• Two approaches:
– Internal – i.e. modify ArcGIS itself
– External – i.e. write a standalone program using
ArcObjects
Internal Changes
• ArcGIS can be modified in several ways:
– Visual Basic for Applications (VBA) macro. The
macro can either be run from the built-in Visual Basic
Editor (VBE) - which provides an Integrated
Development Environment (IDE), or attached to a
button on the desktop.
– Scripting languages such as VBScript, JScript or
Python can be used to create a geoprocessing script.
The script could either be a new tool or several tools
linked together to automate a workflow as a
geoprocessing model.
External Programs
• ArcObject functionality can also be incorporated into your
own programs in an external environment.
• Any COM-compliant or .NET-compliant high level
programming language, such as Visual Basic, Visual C++
or Python may be used.
• Programs require a licence.
Python
• Python is arguably the language of choice.
• It is an interpreted high-level language – simple to learn,
yet very versatile.
• It is object-orientated, yet lends itself to procedural
programming.
• In the ArcGIS context it can be used both for scripting and
writing standalone applications.
• It is open source and available for free from the Internet.
• ArcGIS 9.x comes with Python 2.5.1, but this is not
compatible with Python 3.x.
Visual Basic for Applications
• We will use some VBA macros in the practical class, so it
may be helpful to say something about VB.
• A block of code that can perform a specific task is referred
to as a procedure. A collection of procedures is known as
a module and a collection of modules is referred to as a
project.
• Procedures may be private or public. A private procedure
can only be called or used by another procedure in the
same module; public procedures are available to
procedures in other modules in the same project.
Procedures
• There are three types of procedure: events, subs and
functions.
• Event procedures are associated with controls such as
menus and buttons.
• Subs and functions are not associated with controls, but
are called by other procedures; the difference between
them is that functions return a value whereas a sub does
not.
Type Declarations
• Variable type must be declared before use using a Dim
statement, e.g.
Dim n As Integer
• Objects must be declared and then instantiated, e.g.
Dim pField As IFieldEdit
Set pField = New Field
The first line creates a variable to hold the object, the
second creates the object. All references to an object are
through an interface.
Dot Notation
• The properties of an object are indicated using an
object.property dot notation. For example:
pObjectnameName.PropertyName = value
• A method for an object is specified in a similar manner:
Set pObjectName.PropertyName = pObjectName.MethodName (params)
• Comments may be added using an inverted comma:
‘ Everything after the inverted comma is a comment
Structure
• VBA supports branches:
If ... Then ... Else ... End If
Select Case ...Case ...Case ... End Select
• And loops:
Do While ... Loop
Do Until ... Loop
For ... Next
The Visual Basic Editor (VBE)
• The VBE contains various windows:
– Code window
– Project window / explorer
– Properties window
– Immediate window
Error Handling
• There are three main types of error:
– Compile
– Run-time
– Logic
• Error trapping:
– Breakpoints / Debug.Print
– Step Into / Step Over / Step Out
– Run To Cursor
– The Err object