What's new for ArcGIS Engine developers at 10?


Architectural Modifications

ArcGIS 10 includes several significant product architecture modifications. One of the major advantages of the new architecture is autonomous ArcGIS Desktop and Engine Runtime. You can now install ArcGIS Desktop and ArcGIS Engine products in independent locations on your machine. Also, you can install service packs for each product independently, when needed.  
  • ArcGIS Install location: At the previous release, ArcGIS Desktop, ArcGIS Engine Runtime and ArcGIS Engine Developer Kit, ArcGIS Server products were installed at <Your specified Location>\ArcGIS folder on your machine. As mentioned above, at the current release all ArcGIS products can be installed independent of one another under different locations on your machine. The typical install locations are:
    • ArcGIS Desktop : <Your Specified Location>\ArcGIS\Desktop10.0
    • ArcObjects Software Development Kit (SDK) :<Your Specified location>\ArcGIS\DeveloperKit10.0
    • ArcGIS Engine Runtime :<Your Specified location>\ArcGIS\Engine10.0
    • ArcGIS Server :<Your Specified Location>\ArcGIS\Server10.0
  • ESRI Registry Keys: ArcGIS 10 introduces several new Registry Keys to interrogate the installation locations of ArcGIS products. 

New Features

The following list provides a brief overview of the new features in ArcGIS products at 10.
  • Engine Concurrent Licensing
    ArcGIS 10 offers concurrent use of Engine Licenses by accessing a License Server. The previous releases of the ArcGIS Engine product supported only a single-user, per machine license. The concurrent licensing model will allow Engine applications to withdraw licenses from a server that can host a fixed number of licenses. 
  • Background processing of geoprocessing tools
Since ArcGIS 9.2, developers have been able to run geoprocessing jobs (tools or models) using Geoprocessor.Execute method and the progress of the application will be stalled during the execution. However, at 10, the newly introduced Geoprocessor.ExecuteAsync method can be used to execute geoprocessing jobs in the background of an application—which means the application can progress and respond to user interaction, while a geoprocessing job is being executed. You can also run more than one background geoprocessing job in an application at 10. Please refer topic Running a geoprocessing tool using background geoprocessing for more information.
  • GraphicTracker for moving objects
    The new GraphicTracker APIs allow you to visualize dynamic tracking of around 100 moving objects on a 2D map (.mdx) or 3D globe (.3dd) without flickering. Each moving object can also be assigned a text label and optional text symbol. The new GraphicTracker implementation minimizes refresh of display and provides smooth transition when a new moving object is added or removed to the display. Additionally, the moving object symbols can be made transparent, highlighted, oriented to x-, y-, and z-axis, or floated above the display according to the z-value, and also scaled based on the symbol's size or automatically shrunk when the display becomes large scale (bill-boarded). Please refer to the topic Using a GraphicTracker for map display.
  • Basemap Layers for improved Map Navigation and Display
    A Basemap Layer is a special type of group layer for storing reference layers used for visualization or navigation purposes (eg. aerial imagery, streets, land parcels etc). The Basemap Layer is drawn using optimized display logic and provides a continuous display that makes it easy to navigate around a map. You can create a Basemap Layer programmatically using BasemapLayer class. A Basemap Layer can be added/ removed to a map (mxd document) like any other layer. Please refer topic Creating and working with basemap layers for more information.
  • Visualizing Spatial Datasets in ArcGIS
    ArcGIS 10 introduces query classes and query cursors that provide direct read-only access to datasets in spatial databases (for example, SQL Server 2008). Query classes implement the ITable interface and (in most cases) the IFeatureClass interface, and can be consumed by client applications much like a geodatabase dataset. Query classes with geometry fields can be added to any map document as a feature layer. A query layer behaves like any other layer and can be saved/shared as a layer file (.lyr) or can be served as an input to Geoprocessing models and tools for advanced analysis. For more information, please refer to the topic Query classes and cursors.
  • Visualizing Time in ArcGIS
    ArcGIS 10 supports Temporal Visualization.  Features Layers, Graphic Layers, and many more can now be configured to render based on time attributes.  Many of the layers can use existing time-related data that is properly formatted.  Multiple layers can participate in time view at once.  ArcGIS provides a time control UI element, but the map can also be controlled programmatically. Please refer topic, Displaying time-aware data.
  • Editing Snapping Enhancements
    ArcGIS 10 introduces a new snapping environment that can be used by both ArcMap and ArcGIS Engine developers. The new snapping environment allows you to enable snapping in all your custom tools and not just those for use within the editor. The snapping environment is accessed as an extension in ArcMap and ArcGIS Engine from the esriControls library. See the topic How to work with the snap environment for more information.
  • Display Expressions for Advanced MapTips
    A Display Field is used to identify a feature when using the Identify window or to provide text for maptips. At 10, you can customize the text string of maptips by creating a display expression using IDisplayExpressionProperties interface. Using Display Expressions, you can concatenate or modify the attribute values of one or more fields, or include additional text strings to create more advanced maptips. It can also contain Visual Basic script or JScript to add logic and text processing for advanced maptips.
  • Attribute Driven Symbology
    At ArcGIS 10, you can define the symbols for a feature layer based on its attribute value.
    • Rotating point features - The existing rotation renderer has been improved to  provide support for applying rotation to point features based on a rotation value specified in an attribute field or using an expression. Also, you can rotate points randomly within a 0 - 360 degree range. The new interface IRotationRenderer2 provides methods for rotating points in map as well in 3D views such as scene and globe. In scene and globe, rotation is supported about the X, Y and Z axes. However, in map the rotation is supported in the 2D plane only.
    • Size of point features - A new size renderer interface now allows you to size point features based on a size value specified in an attribute field or using an expression. Also, you can size points randomly within a range. A new interface ISizeRenderer provides methods for sizing points in map as well in 3D views such as scene and globe.
  • Improved Printing Support
    The 10 release offers a new and simpler way to print and export maps.  A new PrintandExport class is added to ESRI.ArcGIS.Carto library to simplify printing and exporting of maps.
  • PNG and alpha-blending bitmap support for icons
ArcGIS 10 supports new higher quality icons, which make use of alpha-blending bitmaps and PNG image formats. All these icons are also available to the developers when you install ArcObjects SDK. We encourage the developers to take advantage of these icons for developing commands and tools for Engine and Desktop applications.

New EngineCore library

The EngineCore library contains APIs that allow developers to build and manage collections of graphics in a map or globe using GraphicTrackers.

Key enhancements to existing libraries

A number of libraries have been updated with new interfaces and classes at 10. The following sections provide an overview of the key enhancements.

Controls Enhancements

  • A new command ControlsFindRouteCommandClass has been added to the controls Library. The new command will launch the Find Route Dialog which lets you find routes between points using a variety of methods. You can find an optimized route, which is the most efficient travel route between the points you select, or you can find a route from point to point based on an order you select. You can set the points, or stops, by clicking the map with your mouse, by adding them from a layer, or by geocoding them.
  • As a developer, you may already be aware that you require a ArcGIS Engine Developer Kit License to develop applications that embed ArcGIS Engine Controls such as SceneControl, GlobeControl, TOCControl and ToolbarControl. At ArcGIS 10, you require a ArcGIS Engine Developer Kit License to include MapControl and PageLayoutControl as well.

Display enhancements

  • Display—ServerStyleGalleryItem supports a new interface, IStyleGalleryItem2. IStyleGalleryItem2 provides access to members that define items in the style gallery. Symbols and map elements are stored in the style gallery. Symbol or map element tables within a style have a new field, Tags, that contains references to the graphic properties of each symbol. Tags can be read from the item within the style gallery using Tags property from IStyleGalleryItem2.

Geocoding enhancements

The following two new interfaces and co-class have been added to the geocoding assembly:
  • ISingleLineAddressInput—This interface will allow developers to determine if a locator supports single line geocoding. It will give developers the ability to get the SingleLineAddressField property, which specifies the field that the locator uses to geocode addresses in a single line format. It will also give developers the ability to get the DefaultInputFieldNames property to determine which field in an address table contains the full address for single line geocoding.
  • IGeocodingProperties2—This interface will allow developers to specify EndOffsetDistance as a double and specify EndOffsetDistanceUnits as esriUnits for locators that were built using ArcGIS 10 and above.
  • ESRIGen2AddressLocator—A locator (coclass) that uses the ESRI geocoding engine introduced in ArcGIS 10. This address locator supports single line input for geocoding.
  • IBatchGeocoding – This interface is implemented by every locator and will contain a subset of the methods that IAdvancedGeocoding contains.  IBatchGeocoding should be used instead of IAdvancedGeocoding when there is no need to access standardization methods or when a locator does not support standardization.  Developers will have access to RematchTable and MatchRecordSet

Geodatabase enhancements

  • The workspace editing event model has been extended to include a new interface, IWorkspaceEditEvents2. This exposes an event—OnBeginStopEditing—that is triggered when client code calls IWorkspaceEdit.StopEditing and allows custom behavior to occur before the edit session has been stopped. This is in contrast to IWorkspaceEditEvents.OnStopEditing, which is triggered after the edit session has already been stopped.
  • IQueryDef2 has been added to QueryDefs to allow for support of postfix clauses, such as ORDER BY and GROUP BY, through the PostfixClause property; prefix clauses, such as DISTINCT, through the PrefixClause property; and recycling cursors, through the Evaluate2 method. The new IQueryFilterDefinition2 interface has been added to query filters to support prefix clauses.
  • Several triangulated irregular network (TIN) related interfaces, such as ITinAdvanced3, ITinEdit2, ITinImporter, and ITinSurface3 for data management and analysis have been added. New terrain related interfaces, such as IDynamicSurface3, ITerrain2, ITerrainDataSource2, ITerrainEdit3, ITerrainEmbeddedDataSource2, and ITerrainFieldStatistics for data management and analysis have been added.

Geometry enhancements

  • Geometry library includes two new interfaces IConstructClothoid and IPolylineClothoid to support clothoid curves. A clothoid curve (or euler spiral) is often used in railway and highway engineering to allow gradual transition between tangents or circular curves. Also at ArcGIS 10, three-dimensional polylines can support vertical line segments. The topic, Working with vertical polyline segments provides more detailed information on Vertical line segments.
  • Also at ArcGIS 10, two new interfaces IPolycurveGeodetic and IConstructGeodetic have been added to support the construction of densified approximations of geodetic curves. These interface will allow you to construct circle and ellipses that are defined using geodesic distance. Also, at this version, you can compute distance between points on a geodesic, loxodrome, great elliptic or normal section curves.
  • The other new interface IGeometryServer2 provides access to more standard operations on arrays of geometric 'value' objects. Similar to IGeometryServer members, the input geometries will never be modified by the Geometry operations.

Network Analyst enhancements

  • Location-Allocation solver—A new NA Solver, NALocationAllocationSolver, has been added to the Network Analyst assembly. The Location-Allocation solver is often used to locate a set of warehouses to minimize transportation costs or to locate a set of locations, such as fire stations, to provide the best coverage in a specified travel time, or to locate retail outlets to best capture market shares in presence of competitor locations using a Huff model.
  • Polygon and polyline barriers—To provide support for polygon and polyline barriers, NALocationRangesObject, NALocationRangesFeature, and NALocationRanges track the lists of junctions and edge ranges, with the associated geometry, that make up barriers. The new INALocator3 and INALocatorAgent3 have been added to use shapes and rows from feature classes to generate the location ranges associated with polygon and polyline barriers. INAClassDefinition2 interface has been added to the NAClassDefinition coclass, to help the developer find the location range field in the barrier NAClasses.
  • NetworkForwardStar—The network forward star has added the INetworkForwardStarEx interface to support the new barrier types (polygon, polyline, and point barriers that do not block the whole edge). INetworkForwardStarEx also centralizes the setup and querying used for network traversal that was previously spread across the INetworkForwardStar and INetworkForwardStarSetup interfaces.
  • Network dataset—The DENetworkDataset coclass has a new IDENetworkDataset2 interface that allows you to specify new properties added to the network dataset at 10, such as the elevation connectivity model and traffic data. There is a new NetworkEdgeTrafficEvaluator coclass that allows a network attribute to return travel time values that vary based on the time of day. The NetworkAttribute object has a new property that indicates whether the attribute is time aware and the network elements have new properties that allow you to query attribute values for a specific time of day. This might also be of interest to developers also using NetworkForwardStar.
  • Locating—Sometimes, when locating analysis objects, it is important to exclude elements that are restricted due to network attributes or barriers. CacheRestrictedElements and ExcludeRestrictedElements have been added to INALocator3 to restrict the NALocator location queries from returning network locations that fall on restricted network elements.

Raster enhancements

ArcGIS 10 raster enhancement introduces classes to manage a large collection of images and provide dynamic image processing capabilities:
  • A FunctionRasterDataset class is a special type of raster dataset that encapsulates a RasterFunction (a class that describes raster operations) and a RasterFunctionArguments (a class that describes the required arguments for the operations) together. When it is accessed, the FunctionRasterDataset creates an output raster at run time by applying the raster function to the input data, which provides a mechanism for dynamic raster processing. A set of raster function classes  were added, including HillShadeFunction, ClipFunction, ConvolutionFunction, SlopeFunction, StretchFunction, ArithmeticFunction, PanSharpeningFunction, and so on.
  • MosaicDataset is a new raster data model at 10 that is used to manage a large collection of images with multiple formats and multiple sensors. It is supported in file geodatabases, personal geodatabases, and enterprise geodatabases. RasterType and a set of raster builder classes, such as LandsatBuilder, QuickBirdBuilder, IkonosBuilder, and so on have been developed to support various sensor types. A number of mosaic dataset operation parameter classes, such as  AddRastersParameters, BuildBoundaryParameters, and DefineOverviewParameters have been added to be used when authoring a mosaic dataset. A MosaicLayer class is added to the Carto assembly for displaying mosaic datasets.
  • Two new classes were added to support sensor camera models, LSRXform (local space rectangle transform) and FrameXform (standard frame camera transform).
  • Also, The following new interfaces have been added to the raster library:
    • IRasterColormap3—Used to read and write color map files (.clr).
    • IRawBlocks—Used to read and write pixel blocks based on storage blocks.

ArcWeb Removal Notice

The ArcWeb library contains objects used for accessing ArcWeb Services. However, ESRI no longer offers the ArcWeb Services product line and the ArcWeb library and all its classes, interfaces, and members have been removed. Any application that references ArcWeb Library cannot be migrated to 10, until and unless the references are removed. The recommended alternative for ArcWeb services is the ArcGIS Online Services.