Saturday, January 31, 2009

Voxels and Tetrahedral Networks

One of the more interesting capabilities of 3D GIS is the ability to represent 3D objects to more closely match reality. Right now, however, you only have 2.5D surfaces with ESRI technology. There are TINs, raster surfaces and ESRI’s relatively new type of surface called a Terrain but none of these are 3D, meaning they can contain multiple Zs at the same X,Y. In a recent dialog I had with a leading ESRI developer, I found out that ESRI is still in a research stage when it comes to using Voxels and Tetrahedral Networks (TEN). This is pretty astounding considering that GRASS has supported Voxels for nearly 3 years now. What gives? Both of these data models are sorely needed in the earth sciences for a variety of applications but ESRI is saying that they are finding it difficult to find the users and requirements for them. But, all you have to do is a basic Google search and you will see that these models are already used especially with geology, archaeology, oceanography, soils, etc. Therefore, is this a problem of ESRI looking for people that want these kinds of models but users aren’t requesting them or is it that users are just going out and using other tools and not even asking ESRI? Also, which is the best approach for representing true 3D surfaces? It’s probably not one of them but both of them and it’s highly dependent of the data and the modeling that is required. Another important component of this is whether ESRI should proceed forward from the perspective of OpenGIS specifications for these data models or developer another proprietary format. I would hope the former. As a geographer, I’ve always found ESRI’s technology sufficient for most applications, but as GIS becomes more integrated into science these new data models are sorely needed. What’s your take on this? Is this something you need?

Friday, January 23, 2009

New 3D interfaces in 9.3

There are several new interfaces in ArcGIS 9.3 related to 3D GIS that are very handy and provide some really useful new functionality. Here's a summary of the the most important ones to learn as you update your application:

ICurve3D - has several methods for getting 3D length of a curve, 3D subcurves, etc.

IVolume - gets the volume of a multipatch.

IImport3DFile - useful for loading Sketchup v6 and Collada 1.4 files.

ISegmentZ2 - this interface adds the ability to densify a 3D segment.

IProximityOperator3D - this interface is just like IProximityOperator except that it allows you to compute the minimal 3D distance and returns the nearest 3D point.

IRelationalOperator3D - this interface has one method for determining if two geometries share no points in common.

The Roundup for January 23, 2009

Here's this week's roundup:

What's Coming in ArcGIS 9.3.1? Actually, there's a better summary here.

ArcSDE Raster vs. ArcGIS Imager Server

Error report registry settings

Debugging crashes using the ESRI Symbol Server

Thursday, January 22, 2009

Nimbus - an ESRI God

Recently I was having a problem in my code in 9.3 and thought I'd go to to the ESRI Support Center and see if this was a known issue or if anyone else had experienced the same problem. No results. So, I contacted Tech Support and then someone got back to me and told me this was a known bug and it was going to be fixed in the next Service Pack. They gave me the Nimbus number (NIM######), which is a number that ESRI uses to keep track of known issues and new user enhancements. I then searched again at the Support Center and couldn't find anything using the Nimbus number. What's going on? It was one thing when I did a free-form text search but now I had the Nimbus number. But, no, it wasn't to be found. I let ESRI know that if they had a list of known issues or if I could have searched for it in the first place, it would have saved me some time. Well, it appears they listened. According to the latest ArcUser:

"To keep users better informed of software issues, ESRI is now posting lists of bugs and fixes that have been targeted for inclusion in the next service packs prior to their release. Service Pack Announcements, posted on the ESRI Support site, will allow users to better prepare for future upgrades and provide feedback on which issues should be included in future service packs. It will also let users, particularly those with technical support incident numbers (Nimbus numbers), know if an issue they are interested in will be addressed in an upcoming service pack."

This is great! Thanks for listening ESRI. Good job!

Tuesday, January 20, 2009

Converting geometry from 2D to 3D

One of the common issues with arises as most GISs move from the 2D world to 3D is how to update their databases. While you can do this from ArcMap or ArcScene as shown in the help, sometimes you need a more fine tuned and automated way to accomplish this. In this entry I'll show you how to accomplish this using some ArcObjects code. The first thing you need to do is open a featureclass. This can be accomplished in many ways and it depends on whether you're doing it from Desktop, from some console app or any number of other ways. Therefore, I'll leave that part out. Once you have the featureclass and you've open an edit session, you can run the following code segment on a polyline or polygon because each of these kinds of geometries contains points (vertices):

IFeatureCursor someFeatureCursor = someFeatureclass.Search(null, false);

IFeature someFeature = null;

while ((someFeature = someFeatureCursor.NextFeature()) != null)


IPointCollection pointCollection = (IPointCollection)someFeature.Shape;

int i;

for (i = 0; i < pointCollection.PointCount; i++)


IPoint point = pointCollection.get_Point(i);

((IZAware)point).ZAware = true;

point.Z = 500;

pointCollection.UpdatePoint(i, point);

someFeature.Shape = (IGeometry)pointCollection;




In this example code segment notice that each feature is set to a constant but you can change this to a value above the surface by determining the surface elevation at that point’s location. Or, you could access an attribute that has values stored in meters and you need feet so you could convert them. There are any number of ways this level of control can help.

The key method used is UpdatePoint which updates the ith point using the newly altered 3D point. A couple of other notes: 1) Don’t forget to release the cursor using Marshall.FinalReleaseComObject and 2) Don’t forget to close the edit session and close the workspace. There are ample examples in the help to aid you in accomplishing this.

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.