12

I have basic programming skills (I program simple vba python and lisp scripts and had gone through a java course a long time ago), but it seems to me (judging by ESRI publications) that there is no escaping the need to learn .NET for future relevance in the GIS job market (even as an analyst).

I've gone through a basic c# course and can program (regrettably) quite poor programs, but I have no idea how to link the c# knowledge to actually programming for ArcGIS in order to progress.

  1. I know the differences aren't big, but does ArcGIS use .NET or C#?

  2. I know the best way to further my experience in .NET is to program more and more but are there any good .NET programming books or courses I can learn techniques from?

  3. In your opinion, what is the best way to learn to program in .NET for ArcGIS? Are there any useful books or websites?

I seek your comments regarding ArcGIS 10 (and will be saving them for later) but also for ArcGIS 9.3.1.

0

11 Answers 11

9

This question has been converted to Community Wiki and wiki locked because it is an example of a question that seeks a list of answers and appears to be popular enough to protect it from closure. It should be treated as a special case and should not be viewed as the type of question that is encouraged on this, or any Stack Exchange site, but if you wish to contribute more content to it then feel free to do so by editing this answer.


Esri have many videos, and I think these are the best resources to get started. I would recommend looking at the ESRI Developer Conference videos At time of writing, 2010 is the latest

Each of these videos conclude with where to go next (additional resources).


Here are few resources to get you started.

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Building_add_ins_for_ArcGIS_Desktop/0001000000w2000000/

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Walkthrough_Building_custom_UI_elements_using_add_ins/0001000001ms000000/

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Walkthrough_Building_editor_extensions_using_add_ins/000100000391000000/

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Visual_Studio_integration/000100000m7n000000/

4

If you want to write stuff that avoids the scorn and derision of programmers, stuff that you can feel proud of in a portfolio, you'll want to get a really firm grasp of object oriented design and development (if you don't already). Mastering specific languages and frameworks can come later.

By all means, use .NET and ArcObjects as the go-to language/API when working through programming exercises in some good software development books. Here are a few to start:

  • The Pragmatic Programmer: Best practices when writing code, and some good stuff on the software project life cycle.
  • Code Complete: Similar to the above, but with a great deal more detail and examples.
  • Test Driven Development: TDD forces you to conform to some of the practices the two above books recommend.
  • Head First Design Patterns: If you are having to deal with ArcObjects, you are going to want to know about design patterns. The API is sick with them.

Code Complete is pretty big, but the rest of them can be quick reads. I'd actually recommend the first two books for GIS people that will never write a line of code. There is some great stuff in there on source control, project management, communication, and good design principals.

1
  • I couldn't agree more. Take a grass roots approach and it will pay dividends.
    – Kelso
    Sep 22, 2010 at 1:19
4

Just wanted to add a bit from my personal experience. I learned mainly as a by-product of employer needs. First with ArcGIS Desktop scripts, then extensions, then ArcGIS Server (SOE, Web ADF, and web API) programming. The best resource, in my opinion, was really the API and help documentation. When first breaking into an unknown area, I would read a bit of the conceptual help, then dive into coding and reference the API doc as needed. Then, if I would get stuck, I would use the Esri forums. Existing code samples would occasionally be helpful, but I usually could not find much that was applicable to what I was working on - that may not so much be the case now. The Esri videos and this great site were also not yet available, so those are certainly additional resources.

I'll add that I studied geography, GIS, and some comp-sci at a university, and I think it's difficult to get a really good grasp on GIS dev from "classwork," or from approaching things in a very general way. If you are with an employer that works with GIS, I would suggest talking to the GIS folks there to identify a need that would make a good little dev testbed for you - even if you have to work on it on your own time. Barring that, I would try to come up with some specific piece of functionality that you would like to have or that you think would be interesting to put together, then work on discovering what you need to know to accomplish that.

1
  • I have a similar experience. It worked well for me! Oct 30, 2010 at 19:14
3

Existing code (in addition to the other answers...not in place of).

There's lots of it online in places like Google Projects, Codeplex, & Github.

It's interesting to learn from code for projects that are fairly active/in use and have a decent size user community. (Not that you can't learn anything from stale code repositories)

2

1) ArcGIS or ArcObjects is a COM model, with a .Net, Java and C++ wrapper on top. So any .Net language or Java or C++ can be used. See the ArcObjects Help .Net, Java, C++

2) I would suggest a refrence book wit a lot of content, like Begining C# or VB.Net from Wrox.

3) I would start by looking at thte samples in the dokumentations. Specially the add-in stuff.

2

I'd suggest not relying on the ESRI samples to learn programming skills in general or .NET in particular. That's not a slam on the samples or the people who prepared them; samples are meant to show how a particular thing could or should work. For brevity, a lot of things are left out of samples. Also, most ESRI samples I've seen are not object-oriented but spaghetti code.

It sounds silly, but the way I transitioned from Visual Basic 6 to VB.NET and C# was to study the certification books. At the time, there was a lot of emphasis on what was different between COM and .NET since it was new. A good grounding in your development language of choice will help you navigate through the minefield of software company samples and documentation.

Also get to know COM Interop; ESRI does have some good info on it, but it's ESRI-specific. In ArcGIS, COM Interop may not be your friend but you will suffer a lot of debugging without it.

1
  • I agree, programming in general is not something you benefit from learning in a more abstract environment than GIS applications; in addition most successful GIS programmers I know haven't come from a GIS- or Geography- specific background
    – WolfOdrade
    Sep 23, 2010 at 16:06
2

Looking at the online resources for Esri I couldn't help but notice how ArcObjects doesn't have its share of rich and up to date resources as other ArcGIS technologies.

That is the reason I started the IGeometry Youtube channel to discuss ArcObjects, the series, which I called .NET Programming with ArcObjects, has reached its 14th episode so far and a lot of GIS folks are really benefiting from it.

The series are based on a fictional project that I created called "Bestaurants", where you have to create an application on top of ArcMap to search, manage, add, delete restaurants. With each episode we introduce a new interface and learn about the fine grained objects in ArcObjects in a fun way!

I post videos weekly, whenever the chance permits, as this is something I do on my own time.

Feel free to check it out now, and share it with any GIS geek you may know. Suggestions are always welcomed to improve the series.

Who knows, maybe once we finish this, I might start another series.

Enjoy,

.NET Programming with ArcObjects (IGeometry) - 01 - Getting Started

.NET Programming with ArcObjects (IGeometry) - 02 - Working with Layers

.NET Programming with ArcObjects (IGeometry) - 03 - Filtering Layers

... ...

See the entire playlist, (14 episodes so far)

http://www.youtube.com/watch?v=XrZs1rwmOwg&index=1&list=PLQnljOFTspQXqYsWJG8o-eJpGlvzww9lE

1

Beginning ArcGIS for Desktop Development using .NET, a book by Pouria Amirian, helped me to get into ArcGIS/ArcMap application development. I think this is one of the best reference books for beginners to start with basic .NET concepts and tying them into ArcObjects. It comes up with sample C# codes and data sets.

2
  • does this book include ArcGIS and visual studio softwares with it?
    – Salman
    Dec 3, 2016 at 18:06
  • No, it doesn't provide any software.
    – EvilInside
    Dec 5, 2016 at 4:33
0

http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#/Sample_MapViewer_hosted_in_a_WPF/00010000014p000000/

This sample will allow you to get a map displayed inside of a Visual Studio environment. You can program in C# or VB.NET (both .NET langs).

0

Web ADF is ESRI's .NET SDK. It will be deprecated after its next release.

However, if you are using 9.3.1, Web ADF will be your toolset for .NET. There are plenty of resources online, ESRI and otherwise.

As for getting better at programming in general, never stop reading! Read programming blogs and website. Use Stack Overflow. Never be afraid to ask questions. Read Code Complete, and other highly regarded books on programming and software development. Read everything you can get your hands on! Good luck!

0
0

Migrating over from VBA to .NET is quite tricky. I know python is all the rage at v10, but hoping ESRI put something together for a pathway around moving to .NET with Add-Ins. Ideally an equivalent to the great book on 'Getting to Know Arcobjects" which is specifically around VBA.

Have a read through this (2008) pdf about migrating from VBA to NET I would also recommend reading this link in the v10 webhelp

Not the answer you're looking for? Browse other questions tagged or ask your own question.