Presentation on theme: "Customisation The GUI in most GIS applications is sufficient for most needs. However, situations arise where you want either to: –Modify the interface,"— Presentation transcript:
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