Friday, January 16, 2009

The proof is in the pudding


Ever wonder where ESRI is focusing its attention? Its pretty obvious that Server is getting the focus. But, how much? Well, if you go to each resource center and do a search for "This interface is new at ArcGIS 9.3." you will come up with these results:

Server: 1,101 new interfaces
Desktop: 199 new interfaces
Engine: 190 new interfaces

Basically, your "contributions" to ESRI are going to Server at about 5.5 to 1 ratio based on this way of measuring. For those that are developing mostly for Sever this is good news and those that are primarily developing in Desktop or Engine are losing out on new developments. Of course Desktop is an older product and needs less attention but you can't say the same for Engine. Right? Is this the right amount of attention from your perspective?

Monday, January 12, 2009

Is ArcSDE going to be around in 5 years?

With the fact that the two major databases that ESRI users store their data have options to store spatial data in them natively and the fact that ArcGIS Image Server can store raster data, will ArcSDE be around in 5 years? GIS Managers and system architects really have multiple options and the only thing holding them back is that much of ESRI’s more sophisticated capabilities (versioning, network modeling , etc.) require the geodatabase. But, will this remain the case as the pressure to more open technologies becomes more the standard than the exception? Is there any reason why the major players (Microsoft, Oracle, ESRI, etc.) couldn't design a spatial database standard? Why not? A point, line or polygon are pretty much the same no matter how it's accessed. It seems to me that as LIBRARIAN and ArcStorm went by the way side ArcSDE is headed that way too.

What do you think?

Friday, January 9, 2009

Roundup for January 9th, 2009

Here's this week's roundup of what other bloggers are talking about and any other interesting tidbits:

A Farewell Chat with David Maguire, ESRI's Chief Scientist

PhD in GIS: Listeners Respond - interesting summary of how PhD's are viewed.

Bug: ArcIMS - ArcMap Server performs slower after installing 9.3 Service Pack 1 when the data used is stored in ArcSDE

ESRI Releases a white paper on Mutipatch Geoemtry - This should be a welcome guide to anyone interested in learning how to use multipatches.

A Maturity Model for Enterprise GIS - this is a few months old but it provides a good overview of what makes an Enterprise GIS.

Wednesday, January 7, 2009

Sizing your Geodatabase in a DBMS

One of the most unknown tools available for ESRI users is the System Design Strategies document published twice a year. (See link to the right.) This document is long and a little confusing to understand if you haven’t taken ESRI’s course on how to use this document. It’s a must read for any GIS System Architects out there but I’m always surprised at how many of the best GIS people I know don’t even know about this very useful document.

In this entry I’ll show how to size a Geodatabase. The first thing you need to know is ESRI technology, ArcGIS and ArcObjects, predominantly use integer based calculations (See page 9-6 of the PDF) . This is also the case with ArcSDE and the underlying DMBS like Oracle or SQL Server. The next thing you need to know is that the Standard Performance Evaluation Corporation tests a wide variety of hardware platforms for some 45 vendors based on integer calculations. ESRI has based its software off of this standard and the System Design Strategies document can be used to size your system for most of ESRI’s software.

The most important chapter is this document is chapter 9. It contains a series of graphs and detailed explanations for sizing your system. For example, if you wanted to handle little over 500 peak users that use the Geodatabase Direct Connect option then you would turn to page 9-17 or Figure 9-17 and you will see that a Xeon X5260 4 (2 chips) 3.33GHz configuration will support that many users. If you look on the left side of the graph you’ll see the SPECrate_int2006 for that particular CPU and then go to the SPEC site at this link and you’ll find that its base rate is 70.1. There are several computers that have that particular rate. Search on that page for 70.1 and you should find 4 computers that have 70.1 under the Base column: NovaScale T820, NovaScale T840, ProLiant Bl480C, ProLiant DL360 G5. Those are your purchase options.



Of course, it usually isn’t that simple. For most organizations you have a select list of vendors you can choose from. If that’s the case then you’ll have to make some compromise, have the machine configured differently, live with the limitation or oversize it. But, the good news is that most of the time you will find something that matches your requirements. Usually it’s harder to determine how many peak users you’ll be supporting.

One thing you should always do is make sure you’re handling the number of peak users out to some point in time. You don’t want to buy a new server and have it maxed out with the first 2 years. It’s always good to keep metrics about system usage and any good system administrator is doing just that.

One last thing to beware of…There is now a book that describes the very same process I just took you through and it comes with a spreadsheet that makes this process easier but you’ll have to pay ESRI some money. If you do a lot of system sizing and don’t like reading PDFs then this book may be the best option for you.

Happy system sizing.

Monday, January 5, 2009

Issues when working with ArcGIS Engine in .NET

1. First, be prepared for the lack of documentation or that on many occasions you’ll be looking for a .NET example and you’ll find a VBA example. Or, if for one reason or another JavaScript is disabled some links in the Help just won’t work.

2. T o get to anything related to the map, scene or globe you first access it via the control itself which will have some interface it supports. For example, to get access to many of the basic interfaces for the globe control you return the globe control’s object reference which is the IGlobeControl interface. From there you can get to other basic interfaces like IBasicMap.

3. All classes have the word Class on the end of them. For example, the point class isn’t just called Point, it’s called PointClass. Example: IPoint point = new PointClass();

4. The Engine runtime must be installed on all client machines in order to run your application or they must have ArcGIS Desktop.

5. Whenever you want to specify a missing argument in VB you could just supply Nothing but with .NET you must create an object of Type.Missing. This is accomplished by first creating the object like this: object missing = Type.Missing and then supplying “missing” as an argument.

6. Many properties and methods have their own .NET implementation. For example, to set the name of a field you use IFieldEdit::Name_2 as opposed to just Name. For some methods the methods is prefixed with “get_”. For example, a point collection’s point is used in this manner: IPointCollection.get_Point(i);

7. There isn’t an equivalent to using GxDialog because Engine doesn’t come with ArcCatalog libraries per se. You need to build your own dialogs for your application. However, when building a simple app there is an Add Data tool that you can use to quickly add data.

8. You can use an ArcGIS Desktop license to run an Engine application. See this article.


9. You can control how you interact with the license manager via the LicenseControl or AoInitializeClass.


10. COM types that are not OLE automation compliant require you to use different classes altogether. For example you can’t use the IEnvelope interface but you can use IEnvelopeGEN interface on the EnvelopClass.


11. Watch out for Singleton objects. If you try to instantiate them more than once you will get an error. See here for a list of all the singletons. Also, if you forget to kill them they will be pinned in memory.

12. To use OLE StdFont and StdPicture you must add Stdole.dll as a reference in your project.


13. When creating a new command or tool you can also get a reference to the basic interfaces via the HookHelper. This is very useful for creating commands and tools that work in Scene, Map and Globe.

14. Lastly, just be aware that although under the hood ArcObjects is basically the same there are some bugs unique to Engine that you will come across.