Monday, March 30, 2009

Military Symbology Needs Upgrade

While the standard military symbol (MIL-STD-2525B and APP-6A) is well organized, fast to display, easy to learn, and is of course the standard, in my opinion it needs to be upgraded. Check out this poster from AGI. There’s a mix of 3D models for everything from jets to entire cities with materials, jet exhaust, shading, labeling, etc. but right in the middle of the graphic are the typical military symbols. They seem completely out of place in the modern digital military age. It seems to me that there isn’t much of a reason to continue to use these symbols when many of major cities of world are currently being modeled in 3D virtual globes and the ease at which something like a tank can be created. I think the military should invest in developing a new standard based on 3D models that are just as intuitive, easy to learn and perform just as fast as the current standard. While I realize this would be a huge effort and would take years before we see it come to fruition, it would probably be a good idea to start the new standard now because the technology and means to display this kind of symbology is really already here.

Which tank would you prefer?



Also, what about orientation of the symbol? In order to see the standard symbol at all angles you must turn on billboarding otherwise while in a perspective view you might not even see the symbol. Of course this isn’t a problem with fully realize 3D symbols. Another aspect of orientation is when animating the symbols. Because something like a jet has a front and a back it makes since to orient it correctly so you can intuitively determine its heading. It doesn’t make much sense to add a leader line to show the heading of something that naturally has a heading based on its orientation.

In the end it just makes sense to view 3D objects because that’s how we perceive them in the real world but I’m not holding my breath for any big changes to the military symbology.

Monday, March 23, 2009

IGlobeCamera::SetToZoomToExtents

Being able to zoom from one point to another using ArcGlobe is a nice feature. However, in order to zoom around in an animated fashion you need to turn on this feature in ArcGlobe. To do so, just click Tools > Options and then click on the General tab and then check "Animate viewer when using tools and commands." You can also set the speed. But, if you're a developer you might need to set this programmatically. For example, if you've built a Desktop tool you don't want your end user to have to set this in order for the tool to work. Or, if you've built an Engine tool the Desktop software may not even be installed on the client machine. But, how? Unfortunately there doesn't seem to be a way to this via ArcObjects but you can set this via the registry in the following location:

HKEY_CURRENT_USER\Software\ESRI\ArcGlobe\Settings\AnimateTools

Just change the value from 0 to 1. Now, if you need to build a custom tool that zooms to a point, some selected features, or around an entire layer via IGlobeCamera::SetToZoomToExtents, this tool will now zoom in and out in an animated manner.

Wednesday, March 18, 2009

On being a GIS Developer, Part 3

Here is the last entry on being a GIS Developer. See Part 1 and Part 2.

36. You should realize that you can't do everything. Ask for help.

37. Learn other tools that can help you do your work. Learn tools that help you code, design, debug, communicate (i.e. MS Office), and manage (i.e. MS Project), etc.

38. Always be cognizant of the cost of things. It may sometimes be cheaper to buy what you need as opposed to developing it.

39. Understand licensing issues. Sometimes a solution to a problem may not be feasible just because the way a company has structured their licensing.

40. Learn to evaluate alternatives. A little thinking ahead can save a lot of time. This not only applies to architecting a new GIS, but also in spatial analysis.

41. Always be weary of hype especially from vendors and even from yourself.

42. Remember, under sell and over deliver. Set expectations.

43. Sometimes the performance of your app will be less than desirable but realize that it may be the data or the network, not your code. Or it may be your code and don't be shocked if you have to re-write something.

44. Just because ESRI (or any other vendor) does it this way doesn't mean it's the best way in general or the best way for your organization or for your app, or for you.

45. Always do the best you can with what you have. You may not have the latest version of ArcGIS and have to make due and develop a custom tool that no one else will ever use.

46. Try to be cognizant of how much work you will create for others. Always try to make it easier.

47. Commit yourself to helping the GIS community as a whole. Be a part of GIS day, help other users via online forums, etc.

48. Keep notes of what you've learned and what you must do and share it.

49. Avoid bad mouthing a predecessor. You don’t need to validate yourself by tearing down those that came before you.

50. Sometimes you will be the GIS superstar because everything came together with the right app and right people and at other times you won’t be. Sometime things just won’t work out and there’s not much you can do about it. Sometimes fortune plays a huge role in your success and at other times misfortune is your worst enemy. Hopefully, however, your successes will be more than the failures.

51. Don’t milk a project. You should always get the project done as quickly and efficiently as possible.

52. Realize that the technologies you know now will be replaced in a few years. This not only includes the technology, but also the way in which you implement and develop software.

Monday, March 16, 2009

Continuous or Discrete Raster

Ever needed to know if the raster you're working with is continuous or discrete? If so, you only need to open ArcCatalog and bring up the properties and check out the Source Type. While this is usually something that's pretty obvious given the type of data, there are times when it's good to know programatically whether a raster is continuous or discrete. However, the only problem is trying to determe how to do this. Unfortunately, as of ArcGIS 9.3 Service Pack 1 you won't be able to find the answer because the property needed to do this is NOT documented and it took some effort to find it. The answers is to use IRasterBand::RepresentationType. With this property there is an enumeration called rstRepresentationType which returns DT_THEMATIC (discrete), DT_ATHEMATIC (continuous) or DT_EITHER (both). So, not only is this method not documented, the enumeration's values don't match the wording in ArcCatalog. Truly lame. Anyway, I hope this helps someone else.