programming arc gis
TRANSCRIPT
-
8/2/2019 Programming Arc Gis
1/22
How to .. Program ArcGIS using .net and C# Page 1 of 22
Program in ArcGIS using the .Net framework and C#
Preface
In the past, ArcGIS programming was largely written in VBA (Visual Basic for
Applications) Script. This language, while useful for writing macros for applications,
lacks the depth and breadth for large scale major initiatives which programming in the
.Net framework can provide. To this end, ESRI has made it possible to program in the
.Net Framework. This new ability is still in its infancy at this time and currently there are
few resources for ArcGIS users to explore programming in the .Net environment. Thisguide attempts to help users getting started with programming in .Net for ArcGIS bymaking a re-creation the often-used Hello World in programming using a simple
ArcGIS command.
-
8/2/2019 Programming Arc Gis
2/22
-
8/2/2019 Programming Arc Gis
3/22
How to .. Program ArcGIS using .net and C# Page 3 of 22
Assumed Skills
This guide assumes that the reader has a basic understanding of what ArcGIS and
the .Net framework is, as well as a rudimentary understanding of how object oriented
programming works. For more information about .Net and object oriented programming,follow the links in Appendix B.
Required Software
In order to program with ArcGIS there are two products that you will need to
have installed on your computer. First, you must have either ArcGIS Desktop, ArcGISArcInfo or else have the ArcGIS Engine installed. Once these one of theseare installed
you will be able to run the code you compile in the ArcGIS environment. The other
ArcGIS product you need is the Developer Tools for Microsoft.Net that provides access
to the .Net framework and the functions that ESRI has made for .Net as well as the
Developer tools that install an API for ArcObjects. It is also important to make sure thatyour software is up to date, which you can do by checking the ESRI website to see if
there are updates or service packs for your software (this tutorial was written usingArcGIS 9.2 Service Pack1).
The other major required software is a C#.Net compiler. I recommend usingMicrosoft Visual Studio, because ESRI has created various resources to make coding
faster and easier for that environment. If you are looking for a free compiler you can try
using the Microsoft Visual Studio C# Express edition, or the SharpDevelop program
which is an open-source initiative. Links to these programs are provided in Appendix B.
Hello ArcGIS!
The ESRI Developer Network provides three samples that introduce C#.Net
programming for ArcGIS. Unfortunately these were written specifically for MSVS
(Microsoft Visual Studio) 2003, and some of the steps intheir tutorialdo not translate toMSVS 2005. This guide has been written for MSVS 2005.
Getting used to the ArcGIS framework is a steep learning curve, and anunderstanding of how COM (Component Object Model) works can be quite helpful.
Understanding COM will be helpful when working with the ArcObjects model, but is not
necessary for this tutorial
After starting MSVS from either the start menu or your desktop, the opening
screen has several useful links including news articles, information of getting started and
lists your most recent projects
-
8/2/2019 Programming Arc Gis
4/22
How to .. Program ArcGIS using .net and C# Page 4 of 22
Step 1 Start a new Project
In MSVS when you create a Command for ArcGIS, you need to create it in a
Project. In order to begin programming in MSVS 2005 it is necessary to create a project.
Navigate to File > New > Project
This will call the New Project dialog, and if you have the .Net Developer toolsinstalled correctly on your machine there will be a few ESRI templates listed along with
whatever other packages you have installed, such as the Visual C# or Visual C++templates.
Step 1.2 Choose a Project Template
-
8/2/2019 Programming Arc Gis
5/22
How to .. Program ArcGIS using .net and C# Page 5 of 22
In the Project Types list, expand Visual C# > ArcGIS > Desktop folders. In the
Templates box, Select Class Library (ArcMap).
At the bottom of the New Project dialog, there is a textbox for entering in the Name
of your project, and the Location where the project will be saved. There is also a textboxfor the solution name and a check box for creating a new directory where the solution
will be saved. By default, the solution will be named the same name as the project name,and the checkbox will be checked. Leave these as their default values as it makes your
life easier this way. Before clicking OK to create the project, double check that you have
spelled the name of the project correctly, because once the project has been created it is
difficult to go back and fix a silly spelling mistake (in fact, almost all cases its easier justto start again and import your code than to try to change the project name).
Step 1.3
Click OK!
The next screen that will appear is the ArcGIS Project Wizard. This Wizard will
allow you to add any references to the ArcGIS framework that you may need. When youknow what you will be specifically programming for ArcGIS, you can select them here.
We dont need any of them for our guide now, so we wont add any.
-
8/2/2019 Programming Arc Gis
6/22
How to .. Program ArcGIS using .net and C# Page 6 of 22
Step 1.4
Click Finish
Once you click Finish, you will be faced with a near empty page. This page is a
default class that has 3 lines of code that specify some COM information.
-
8/2/2019 Programming Arc Gis
7/22
How to .. Program ArcGIS using .net and C# Page 7 of 22
We dont need this file however, because we are not creating a class. We could, at
this point add code to turn this class into a command, but it is far easier to use the ESRI
template for a button, that is already installed. What we will do next is delete this class
from our project, and add the ESRI tool template file. On the right hand side of theMSVS you will see that there is a Solution Explorer button that will show you all of the
files and references in the project. If this is not visible you can make it visible by clickingon View > Solution Explorer.
Step 2 Remove the Class Library
Step 2.1
Right click on Class1.cs in the Solution Explorer and select Delete.
-
8/2/2019 Programming Arc Gis
8/22
How to .. Program ArcGIS using .net and C# Page 8 of 22
This will take you back to the Start Page of MSVS, but dont worry, you are still inyour project, which you can confirm by checking the Solution Explorer.
Step 3 Add a Command
Step 3.1
In the Solution Explorer, right click on the HelloArcGIS that is in bold typeface.
Select Add > New Item.
-
8/2/2019 Programming Arc Gis
9/22
How to .. Program ArcGIS using .net and C# Page 9 of 22
Now you are faced with the New Item dialog. From here you can choose froma number of different templates; select make a new Base Command.
Step 3.2 Select a File template
At the Add New Item Dialog Select Base Command. Leave the Name textbox as
the default and click Add.
-
8/2/2019 Programming Arc Gis
10/22
How to .. Program ArcGIS using .net and C# Page 10 of
22
The next screen gives you an opportunity to make the command accessible from a
number of ArcGIS programs, we want to make this command for ArcMap.
Step 3.3
Select Desktop ArcMap Command, Click OK.
-
8/2/2019 Programming Arc Gis
11/22
How to .. Program ArcGIS using .net and C# Page 11 of
22
Whew! Now we finally have something that we can get coding in!
-
8/2/2019 Programming Arc Gis
12/22
How to .. Program ArcGIS using .net and C# Page 12 of
22
In this file there are three things to take note of, the COM registration code, the public
properties and the Overridden Class Methods.
The COM registration code is what allows ArcMap to use your command. When you
compile this project, your code turns into a DLL and gets registered with the computer
using what is called a GUID. The COM code here is what is responsible for creating thisGUID and registering the DLL.
The public properties look blank by default like this:
base.m_category = ""; //localizable textbase.m_caption = ""; //localizable textbase.m_message = ""; //localizable textbase.m_toolTip = ""; //localizable textbase.m_name = ""; //unique id, non-localizable (e.g."MyCategory_ArcMapCommand")
These tell ArcMap how to classify your command, and the various information
that will be available to users in ArcGIS about the command.
Step 4 Setting the Public Properties
Step 4.1
Edit each of the public properties of your command so that they relfect the
command you are creating.
base.m_category = "ArcGuides"; //localizable text
base.m_caption = "Hello World For ArcGIS"; //localizable textbase.m_message = "This tool welcomes new ArcGIS users to the ArcGISFramework!"; //localizable textbase.m_toolTip = "Hello World"; //localizable textbase.m_name = "HelloArcGIS"; //unique id, non-localizable (e.g."MyCategory_ArcMapCommand")
The Overridden Class Methods will appear in a MSVS code region,
, and contains the code blocks that we will be editing.
Step 5 Understanding Class Methods
Step 5.1
Expand the Overridden Class Methods code region
#region Overriden Class Methods
///
-
8/2/2019 Programming Arc Gis
13/22
How to .. Program ArcGIS using .net and C# Page 13 of
22
/// Occurs when this command is created//////Instance of the applicationpublicoverridevoid OnCreate(object hook){
if (hook == null)return;
m_application = hook asIApplication;
//Disable if it is not ArcMapif (hook isIMxApplication)
base.m_enabled = true;else
base.m_enabled = false;
// TODO: Add other initialization code}
///
/// Occurs when this command is clicked///publicoverridevoid OnClick(){
// TODO: Add Command1.OnClick implementation}
#endregion
The two methods that are here provide important functions for programming inArcGIS. The OnCreate method is useful because it is called and run first, before any
other code in the class and when you are programming with ArcObjects It may be useful
to create objects that are persistent throughout the code.The OnClick code is what we are most interested in. This is where you code in
what happens when a user clicks on your command. In the tradition of Hello World, we
are going to have a message box pop up and say Hello ArcGIS! In order to get access
to the MessageBox method that we will be calling, we need to add a reference to theSystem.Windows.Forms DLL and namespace.
Step 6 Adding References
Step 6.1
Click on Project > Add Reference
-
8/2/2019 Programming Arc Gis
14/22
How to .. Program ArcGIS using .net and C# Page 14 of
22
Here we see all of the various DLLs that MSVS has access to reference.
Step 6.2
Scroll down and select the System.Windows.Forms DLL. Click OK
The project now have access to use any of the namespaces in the
System.Windows.Forms DLL. Namespaces are essentially collections of classes in .Net,and in fact you are coding in your own namespace called HelloArcGIS, you can see this
by looking just below all of the using commands. Since we now have access to all of the
namespaces that are in the System.Windows.Forms DLL, we need to code in that we areusing the System.Windows.Forms namespace.
-
8/2/2019 Programming Arc Gis
15/22
How to .. Program ArcGIS using .net and C# Page 15 of
22
Step 6.3
Modify the using statements so that they now read:
using System;using System.Drawing;
using System.Runtime.InteropServices;using ESRI.ArcGIS.ADF.BaseClasses;using ESRI.ArcGIS.ADF.CATIDs;using ESRI.ArcGIS.Framework;using ESRI.ArcGIS.ArcMapUI;using System.Windows.Forms;
Now that we have access to the MessageBox class, we can simply modify the
OnCreate code so that it displays a message box that says Hello ArcGIS!
Step 7 Adding Code to he OnClick Method
Modify the OnClick method so that the code to display a message box is included
publicoverridevoid OnClick(){
MessageBox.Show("Hello ArcGIS!","Arc Guides");}
We are now finished coding our tool, quick eh? The last thing we need to do
before compiling our code is to create a snazzy looking icon for arc. MSVS creates a
default Command1.bmp which you can see in the Solution Explorer.
Step 8 Editing an Icon
Double click on Command1.bmp in the Solution Explorer to open up the bmpeditor in MSVS, edit the bmp in any way you would like using the tools included
in MSVS.
* N.B.* Start by making the entire image the color of the background, because this is the
transparent color.
-
8/2/2019 Programming Arc Gis
16/22
How to .. Program ArcGIS using .net and C# Page 16 of
22
Finally we are ready to compile our project.
Step 9 Building a Solution
Click on Build > Build Solution.
Hopefully there are no errors. If there are, they will be listed in the output window
at the bottom of MSVS, and you should be able to click on them to fix the error. As
an example I have written the line of code,
MessageBox.Show("Hello ArcGIS!","Arc Guides");
As,Message_Box.Show("Hello ArcGIS!","Arc Guides");
-
8/2/2019 Programming Arc Gis
17/22
How to .. Program ArcGIS using .net and C# Page 17 of
22
to illustrate a possible source for error. In the compiler output window, there is now
an error listed and the line of the offending line of code has been underlined to
highlight the source of the error
Now that we have compiled our project without build errors, we can try it out!
There are two ways to do this, we can open up ArcGIS and access the button, or we can
run our project through MSVS and then if there is a problem with the code, we can usedebugging tools such as catching exceptions and using breakpoints.
Step 10 - Debugging
Click on Debug > Start Debugging
-
8/2/2019 Programming Arc Gis
18/22
How to .. Program ArcGIS using .net and C# Page 18 of
22
Now your project should open up ArcGIS. As we are not working with any ArcGIS
data, start ArcMap with a new empty map. To access your tool, you will need to add it to
a toolbar.
Step 11 Adding our Command to ArcGIS
Step 11.1
Right click on a menu bar in ArcMap and select the Customize button.
-
8/2/2019 Programming Arc Gis
19/22
How to .. Program ArcGIS using .net and C# Page 19 of
22
Now we have the Customize dialog open. All of the commands that ArcGIS has
access to are listed here, by category and then by tool.
Step 11.2 Loading a Command
Select the Commands tab, and then locate ArcGuides in the Categories list.
Select Hello Word For ArcGIS and click and drag it onto an ArcMap toolbar.
-
8/2/2019 Programming Arc Gis
20/22
How to .. Program ArcGIS using .net and C# Page 20 of
22
Voli we are done, congratulations! Click on your new command, and enjoy!
-
8/2/2019 Programming Arc Gis
21/22
How to .. Program ArcGIS using .net and C# Page 21 of
22
Appendix A
Summary of Steps
1. Navigate to File > New > Project2. In the Project Types bar, expand the Visual C# (or the Visual Basic if you want to
use VB) and expand the ArcGIS subfolder. In this Subfolder will be the Desktop
folder (Or MapInfo, or Engine if you have that installed). Once this is selectedyou will see a number of options in the Templates box, Select Class Library
(ArcMap).
3. Click OK!4. Click Finish5. Right click on Class1.cs in the Solution Explorer and select Delete.6. In the Solution Explorer, right click on the HelloArcGIS that is in bold typeface.
Select Add > New Item.7. At the Add New Item Dialog Select Base Command. Leave the Name textbox as
the default and click Add.
8. Select Desktop ArcMap Command, Click OK.9. Edit each of the public properties of your command so that they relfect thecommand you are creating.10.Expand the Overridden Class Methods code region11.Click on Project > Add Reference12.Scroll down and select the System.Windows.Forms DLL. Click OK13.Modify the using statements (See text for more info, page 11)14.Modify the OnClick method so that the code to display a message box is included15.Double click on Command1.bmp in the Solution Explorer to open up the bmp
editor in MSVS, edit the bmp in any way you would like using the tools includedin MSVS
16.Click on Build > Build Solution17.Click on Debug > Start Debugging18.Right click on a menu bar in ArcMap and select the Customize button19.Select the Commands tab, and then locate ArcGuides in the Categories list. Select
Hello Word For ArcGIS and click and drag it onto an ArcMap toolbar
Appendix B
Useful Links:
www.campus.esri.com: The ESRI virtual campus is a great starting point for users that
are new to ArcGIS, and even for seasoned veterans of ArcGIS. The campus providesavenues to both online and in class courses in ArcGIS in many different streams. This
site, however, lacks sufficient information on programming using .Net with ArcGIS.
www.edn.esri.com: The ESRI Developer Network is community that was created to
provide programmers a place to search the ESRI API, look up code samples, find
-
8/2/2019 Programming Arc Gis
22/22
How to .. Program ArcGIS using .net and C# Page 22 of
22
community videos, and participate in online forums to ask programming questions andhelp others who need help.
http://msdn2.microsoft.com/en-us/vstudio/aa973782.aspx: The Microsoft Visual Studio
product page.
http://msdn2.microsoft.com: Microsoft Developer Network: the starting location for all
.Net enquiries and includes the .Net API.
http://sharpdevelop.net/OpenSource/SD/: SharpDevelop program page. SharpDevelop is
an open source IDE for C#.Net Programming.
http://www.codeproject.com: The Code Project, a site that houses thousands of articles
that explain how to use .Net in every language supported by .Net. Every article containssample code and explanations, with paragraph information to add context to the code
presented.