What's new for developers at 10?


Summary This topic provides an overview of the new features and enhancements at ArcGIS 10 for developers working with Java application programming interface (API) for ArcObjects.

In this topic

 

Integrated ArcObjects SDK

At ArcGIS 10, there is a single software development kit (SDK) for ArcObjects. It combines the content previously contained in the ArcGIS Engine Java SDK along with ArcObjects development specific to ArcGIS Server. The ArcObjects SDK for Java includes documentation, samples, developer  tools, and Eclipse plug-ins for ArcObjects development. It focuses on the following three major categories of ArcObjects applications:
  • Building extensions for ArcGIS Desktop
  • Building stand-alone applications 
  • Developing server object extensions with ArcGIS Server
The included documentation has been enhanced with a reorganized table of contents (TOC) that focuses on the tasks developers want to accomplish.

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 runtimes. You can now install ArcGIS Desktop and ArcGIS Engine products in independent locations on your machine. You can also install service packs for Engine and Desktop products independently. However, these architectural changes require you to explicitly bind your stand-alone (Engine) applications and custom components to a specific ArcGIS product on your machine.
A stand-alone application can be bound to a Desktop or Engine runtime. In Eclipse, when you create a new project and add the arcobjects.jar library to your classpath, Eclipse will ask you which runtime to bind to, if both products are installed. Outside of Eclipse, the binding is achieved by including the following code prior to using any ArcObjects.
For ArcGIS Engine, the following code can be used to bootstrap the arcobjects.jar library:
[Java]
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Main{

    public static void main(String[] args)throws Exception{
        bootstrapArcobjectsJar();
        ApplicationName.main(args); 
            //Replace ApplicationName with your application's main class
    }

    public static void bootstrapArcobjectsJar(){

        //Get the ArcGIS Engine runtime, if it is available
        String arcObjectsHome = System.getenv("AGSENGINEJAVA");

        //If no runtime is available, exit application gracefully
        if (arcObjectsHome == null){
            System.err.println(
                "You must have the ArcGIS Engine Runtime installed in order to execute this application.");
            System.err.println(
                "Install the product above, then re-run this application.");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }

        //Obtain the relative path to the arcobjects.jar file
        String jarPath = arcObjectsHome + "java" + File.separator + "lib" +
            File.separator + "arcobjects.jar";

        //Create a new file
        File jarFile = new File(jarPath);

        //Test for file existence
        if (!jarFile.exists()){
            System.err.println(
                "The arcobjects.jar was not found in the following location: " +
                jarFile.getParent());
            System.err.println(
                "Verify that arcobjects.jar can be located in the specified folder.")
                ;
            System.err.println(
                "If not present, try uninstalling your ArcGIS software and reinstalling it.");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }

        //Helps load classes and resources from a search path of URLs
        URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader()
            ;
        Class < URLClassLoader > sysclass = URLClassLoader.class;

        try{
            Method method = sysclass.getDeclaredMethod("addURL", new Class[]{
                URL.class
            }
            );
            method.setAccessible(true);
            method.invoke(sysloader, new Object[]{
                jarFile.toURI().toURL()
            }
            );
        }
        catch (Throwable throwable){
            throwable.printStackTrace();
            System.err.println("Could not add arcobjects.jar to system classloader");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }
    }
}
For ArcGIS Desktop (Windows machines only), use the following code:
[Java]
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class Main{

    public static void main(String[] args)throws Exception{
        bootstrapArcobjectsJar();
        ApplicationName.main(args); 
            //Replace ApplicationName with your application's main class
    }

    public static void bootstrapArcobjectsJar(){

        //Get the ArcGIS Desktop runtime, if it is available
        String arcObjectsHome = System.getenv("AGSDESKTOPJAVA");

        //If no runtime is available, exit application gracefully
        if (arcObjectsHome == null){
            System.err.println(
                "You must have ArcGIS Desktop installed in order to execute this application.");
            System.err.println(
                "Install the product above, then re-run this application.");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }

        //Obtain the relative path to the arcobjects.jar file
        String jarPath = arcObjectsHome + "java" + File.separator + "lib" +
            File.separator + "arcobjects.jar";

        //Create a new file
        File jarFile = new File(jarPath);

        //Test for file existence
        if (!jarFile.exists()){
            System.err.println(
                "The arcobjects.jar was not found in the following location: " +
                jarFile.getParent());
            System.err.println(
                "Verify that arcobjects.jar can be located in the specified folder.")
                ;
            System.err.println(
                "If not present, try uninstalling your ArcGIS software and reinstalling it.");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }

        //Helps load classes and resources from a search path of URLs
        URLClassLoader sysloader = (URLClassLoader)ClassLoader.getSystemClassLoader()
            ;
        Class < URLClassLoader > sysclass = URLClassLoader.class;

        try{
            Method method = sysclass.getDeclaredMethod("addURL", new Class[]{
                URL.class
            }
            );
            method.setAccessible(true);
            method.invoke(sysloader, new Object[]{
                jarFile.toURI().toURL()
            }
            );
        }
        catch (Throwable throwable){
            throwable.printStackTrace();
            System.err.println("Could not add arcobjects.jar to system classloader");
            System.err.println("Exiting execution of this application...");
            System.exit( - 1);
        }
    }
}

Supported platforms

For information on all Java supported platforms and hardware and software requirements for the current release, see System Requirements.

New features

The following subsections provide an overview of new features in ArcGIS 10.

ArcGIS Engine concurrent licensing

You can now obtain concurrent Engine licenses via a license server. Previous releases of ArcGIS Engine supported only a single-user, per machine license. The concurrent licensing model allows Engine applications to withdraw licenses from a server that can host a fixed number of licenses.

Customizing ArcGIS Desktop using add-ins

What is an add-in?  An add-in is a supplemental program that is simple to build, share and deploy within ArcGIS Desktop software (that is, ArcMap, ArcCatalog, ArcScene, and ArcGlobe). In addition, you can also develop add-ins to add custom functionality and special features to ArcGIS Desktop applications by accessing the underlying ArcObjects programmatically. After building an add-in, simply deploy them to a well-known folder location and the ArcGIS Desktop applications will discover and consume them at runtime.
At ArcGIS Desktop 10 you can create the following types of add-ins using Java:
  • Button - The simplest form of functionality that executes some business logic when the button is clicked.
  • Tool - A tool requires user interaction with the application's display first, then executes some business logic based on the action.
  • Combo box - Is used to provide a set of choices from which a selection can be made and acted upon. A combo box could also allow the user to enter a value that can be acted upon.
  • Toolbar - A container for buttons or tools, menus, combo box, and tool palettes. Toolbars can be floating or docked in the aforementioned desktop applications.
  • Menu - A container for buttons and additional menus.
  • Tool palette - A container for tools.
  • Dockable window - A window that can exist in a floating state or be attached to the main application window.
  • Application extension - Provide users with additional GIS functionality. Typically, functions that perform a specific task can be grouped into and made available through an extension.

New Eclipse plug-ins

To help expedite the development of the ArcGIS Desktop add-ins, several new Eclipse plug-in wizards have been created for you at the release of ArcGIS 10.  For the add-in work described above, this includes the follow 4 new project wizards:
  1. ArcCatalog add-in project
  2. ArcGlobe add-in project
  3. ArcMap add-in project
  4. ArcScene add-in project
Each wizard has been designed to guide you through all the required and optional components for extending any one of the ArcGIS Desktop applications.

ArcObjects code validator

Developers programming with ArcObjects need to be aware of a small number of classes and interfaces that are not amenable to Java style casting. In order to avoid ClassCastExceptions and subtle logical errors in your programs up until the release of ArcGIS 10, ESRI has published a list of such classes and interfaces. This list is tedious to consult for every ArcObject used in an application to remove such potential errors. To address this problem and simplify a developer's experience, a plug-in for Eclipse can be used to detect statements using unsafe casting and runtime type checks, and provide suggestions to rectify such potential problems. The ArcObjects code validator can be used with existing or new projects at 10.

Server object extensions

A Server Object Extension (SOE) is a custom component that can be developed in Java/.NET/C++ to extend the ArcGIS Map Server Object.  An SOE is created and initialized at the time the Server Object instance itself is created and is re-used at the request level, like the Server Object itself.  If the SOE is costly to initialize, that cost is paid only once when the Server Object instance is created.  Also, since an instance of an SOE remains alive as long as the Server Object instance, it’s able to cache information that can be re-used from request to request. 
SOEs are best suited for applications that make several fine-grained ArcObjects calls between client and server processes. Developers can move the most expensive code to the SOE, thus reducing the number of fine grained calls between the client and  server, and thereby increasing efficiency and responsiveness of client applications.
At ArcGIS 10:
  1. SOE’s can be exposed as a Web Service and consumed through SOAP protocol.
  2. Eclipse IDE based tools are provided to generate standard web service artifacts such as WSDL and client stubs.
  3. SOE's support use of Java and ArcObject types as parameter and return types in operations exposed by a SOE based web service.
  4. Developers can extend from a base class that handles processing of SOAP requests and response for them.
  5. Developers don't need to explicitly create instances of a SOE in a context. The SOE is created by the GIS server when the Server Object instance itself is created.
  6. If the functionality that is exposed by a SOE can benefit from some caching logic, it’s possible to implement such logic because the cache will remain for as long as the Server Object instance itself remains in the pool.
  7. SOE’s can utilize ArcGIS Server log files to provide status and troubleshooting content, like other ArcGIS Server components.
  8. The ArcGIS Server extensibility framework also allows developers to add custom behavior to their SOE at different points in its life cycle such that their SOE: 
    1. Can have custom behavior when a ServerContext is created and released.
    2. Can have properties which can be modified to change the SOE's runtime behavior.  These properties can be modified using ArcCatalog or ArcGIS Manager.  For example, the SOE can be configured to work with a different layer in the associated MapServer object.
    3. Can have functionality declared in custom interfaces creating new ArcObjects types to be implemented by SOE's.
    4. Can have 'operations' that can be configured for access based on security rules.

New environment variables

With the release of previous versions of ArcGIS, the ARCGISHOME environment variable was used to determine the location of the ArcGIS Engine runtime and SDK.  This environment variable operated under the assumption that all ArcGIS software was installed to one location on a given machine.  At the release of ArcGIS 10, the Java ArcObjects software development kit (SDK) will not be required to be installed in the same location as the ArcGIS Desktop or ArcGIS Engine runtimes.  Thus, the ARCGISHOME environment variable has been updated and changed into 3 new environment variables.
  1. AGSDEVKITJAVA - points to the location of the developer kit install location on disk.
  2. AGSDESKTOPJAVA -points to the location of the ArcGIS Desktop install location on disk.
  3. AGSENGINEJAVA - points to the location of the ArcGIS Engine runtime install location on disk.

Map automation using Python

A new Python mapping module provides commands to interact with map (.mxd) documents  and layer (.lyr) files. You can create Python scripts using these commands to open map documents and layers, query and alter contents, then print, export, or save the modified document. These commands are also useful for implementing multiple document workflows, such as updating and fixing data source locations, and for creating reports based on layers, data sources, or symbology. You can also combine several map documents to output a map book (similar to the functionality previously provided in the DSMapBook sample) or atlas to the printer or a .pdf file.

Background execution of geoprocessing tools

Since ArcGIS 9.2, developers have been able to run geoprocessing jobs (tools or models) using the IGeoprocessor2's execute() method, but the progress of the application was stalled during execution. At ArcGIS 10, the new IGeoprocessor2's 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. For more information, see How to run a geoprocessing tool in the background.

GraphicTracker for moving objects

The new GraphicTracker APIs allow you to visualize dynamic tracking of approximately 100 moving objects on a two-dimensional (2D) map (.mxd) or three-dimensional (3D) globe (.3dd) without flickering. Each moving object can also be assigned a text label and optional text symbol. The GraphicTracker implementation minimizes refresh of display and provides smooth transition when a moving object is added to or removed from 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. The object symbols can also be scaled based on the symbol's size or automatically shrunk when the display becomes large scale (bill-boarded).

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 (for example, aerial imagery, streets, and land parcels). 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 the BasemapLayer class. A basemap layer can be added to or removed from a map document (.mxd file) in the same way as any other layer.

Visualizing spatial datasets in ArcGIS

Temporal visualization is now supported in ArcGIS. Features layers, graphic layers, and other layers can 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 user interface (UI) element, but the map can also be controlled programmatically.

ArcMap editing enhancements

The following editing enhancements are available:
  • User interface - The editing environment in ArcGIS Desktop has been redesigned to provide a more simplified and streamlined workflow. The workflows for the edit task, edit target, and sketch tools have been supplemented by templates, edit tools, construction tools, and shape constructors. The majority of changes and additions to the editor assembly support these user experience changes.
  • Templates - Feature templates are a central concept in the editing environment in ArcGIS. Creating features using the editor relies on the use of feature templates. Feature templates provide an easy way to simplify and streamline the creation of features using the editor. Because a number of the properties required to set up the editing environment and attribute the feature are predefined, the user can easily select a template, and a number of steps are performed automatically, making the user's task easier. For more information, see Using feature templates.
  • Snapping - A new snapping environment that can be used by both ArcMap and ArcGIS Engine developers is available. This snapping environment allows you to enable snapping in all your custom tools, not just those used with the editor.
  • TOC customizations - The Table of Contents window and TOC views have been re-architected. Table of contents views such as display and source now appear as icons on the Table of Contents toolbar rather than as tabs, as in previous versions. The Table of Contents window is now also part of the dockable window framework allowing it to slide, pin, and dock with other windows in ArcGIS. Custom TOC views can be created by implementing the IContentsView3 interface, which exposes two additional methods including the getBitmap() method for the icon and a getToolTip() method, which returns a string.

    Existing custom views should only be migrated to the new TOC framework if they directly manipulate or are associated with the layers on the map. If you were previously using the TOC framework to host custom views for their docking capability, you should create a proper dockable window instead. To migrate existing custom views to the new framework, you need to implement the IContentsView3 interface in your class and update the bitmap and tool tip attributes using the methods previously mentioned.

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. You can now customize the text string of MapTips by creating a display expression using the 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. A display expression can also contain Visual Basic script or JavaScript to add logic and text processing for advanced MapTips.

Attribute-driven symbology

You can define the symbols for a feature layer based on its attribute value. See the following:
  • 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 by using an expression. You can rotate points randomly within a 0-360 degree range. The IRotationRenderer2 interface provides methods for rotating points in map as well in 3D views, such as scene and globe. In scene and globe, rotation is supported for the x, y, and z axes. However, in map, the rotation is supported in the 2D plane only.
  • Size of point features - A size renderer interface allows you to size point features based on a size value specified in an attribute field or by using an expression. You can also size points randomly within a range. The ISizeRenderer interface provides methods for sizing points in map as well as in 3D views, such as scene and globe.

PNG and alpha-blending bitmap support for icons

Higher quality icons are supported, which make use of alpha-blending bitmaps and Portable Network Graphics (PNG) image formats. These icons are available when you install the ArcObjects SDK and can be used for developing commands and tools in both Engine and Desktop applications.

Enhancements to the Java-COM interop

The following is an enhancement made to the VisualBean mode of stand-alone application:

New VisualBean mode architecture

In prior releases, the ArcGIS Java-COM interop relied upon COM marshalling to synchronize access to ArcObjects hosted in the ArcGIS  STA (single thread apartment) thread for Visual Beans applications. An explanation of the old architecture can be viewed at: Understanding Java-COM Interop. In particular, refer to the section titled:  Java Interop and VisualBeans application.

At the release of ArcGIS 10, the internal architecture has been revamped to ensure thread affinity and reentrancy requirements of ArcObjects in multi-threaded visual Java applications without relying upon the services of the COM runtime (in particular, COM marshalling).  In the new architecture, Java threads do not enter the process wide COM multi threaded apartment (MTA).  Instead, ArcObject creation and method invocation is intercepted in the Java tier and performed in a dedicated STA thread created by the Java interop to house ArcObjects.  The advantage of this new architecture is vastly improved performance for fine-grained methods calls on ArcObjects, and ability to create and use ArcObjects that did not have marshalling related infrastructure (i.e. proxy-stub DLLs for components that did not rely upon type library marshalling).

Performance improvements

At the release of ArcGIS 10, the performance of Java applications has been improved in two significant ways:
  1. The new VisualBeans mode architecture eliminates the need for COM marshalling and vastly improves performance for fine grained ArcObjects calls in visual Java applications. This performance optimization is applied by default for all Java applications that have been initialized in 'VisualBeans mode' (EngineIntializer.initializeVisualBeans();).
  2. An optimized mode of casting has been introduced. This optimized mode of casting uses metadata within arcobjects.jar to determine whether or not to attempt wrapping ArcObjects proxies into corresponding Java classes, thereby enabling normal Java casts and use of the instanceof operator to succeed. Earlier, the Java-COM interop always attempted to wrap proxies into corresponding classes, even though the wrapping/pre-casting would have failed anyway. Your Java code needs to opt-in to take advantage of this optimized casting feature. To get optimized casting, you need to set the runtime property prior to calling Engineinitializer with the following code:
[Java]
System.setProperty("ARCGIS_OPTIMIZED_CASTING", "");
EngineInitializer.initializeEngine();
You can also set this property using java -DARCGIS_OPTIMIZED_CASTING or by passing it in as a VM argument.  A side effect of this benefit is that developers must pay careful attention in their use of the instanceof and casting operators when programming with ArcObjects.  In particular, Java casts and instanceof operators will not work for ArcObjects that have a non-deprecated constructor (a constructor that takes an object as its only argument to convert that object to the type of that ArcObject).

To help quantify some of the performance improvements observed, the following graphs presented next show the performance improvements observed in representative applications:

New packages for arcobjects.jar

The following new packages have been added to the arcobjects.jar:
  • com.esri.arcgis.enginecore - The engine core package contains APIs that allow you to build and manage collections of graphics in a map or globe using class GraphicTracker.
  • com.esri.arcgis.schematiccontrols - The Schematic controls package contains the schematic control commands, which are a set of commands that works with the ArcGIS Engine controls and that enable you to build Schematic applications. All the schematic related commands in the com.esri.arcgis.controls package have been moved to Schematic control commands.

Enhancements to existing packages

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

arcmapui

The ITableWindow3 interface has been added to the com.esri.arcgis.arcmapui package. This interface has three methods, isOpen(), findOpenTableWindows(), and getActiveWindowTable() to interrogate active table windows in ArcMap.

carto

The MosaicLayer class for displaying mosaic datasets has been added to the com.esri.arcgis.Carto package.

controls

The following enhancements have been made to the com.esri.arcgis.controls package:
  • A new ControlsFindRouteCommand class has been added. This command opens the Find Route dialog box, 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. You can set the points, or stops, by clicking the map with your mouse, by adding them from a layer, or by geocoding them.
  • In previous releases, an ArcGIS Engine Developer Kit License is (and has been) required to develop applications that embed ArcGIS Engine Java VisualBeans, such as SceneBean, GlobeBean, TOCBean, and ToolbarBean only. At ArcGIS 10, an ArcGIS Engine Developer Kit License is also required to develop applications using MapBean and PageLayoutBean as well.

datasourcesraster

The following enhancements have been made to the DataSources packages:
  • The following classes that can manage a large collection of images and provide dynamic image processing capabilities are new at 10:
    • The FunctionRasterDataset class is a special type of raster dataset that encapsulates RasterFunction (a class that describes the required arguments for the operations) together. When it's 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 has been added that includes HillShadeFunction, ClipFunction, ConvolutionFunction, SlopeFunction, StretchFunction, ArithmeticFunction, and PanSharingFunction.
    • MosaicDataset is a new raster data model 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. The RasterType class and a set of raster builder classes, such as LandsatBuilder, QuickBirdBuilder, and IkonosBuilder, have been developed to support various sensor types. A number of mosaic dataset operation parameter classes, including AddRasterParameters, BuildBoundaryParameters, and DefineOverviewsParameters, have been added to be used when authoring a mosaic dataset. (The MosaicLayer class, for displaying mosaic datasets, has also been added to the com.esri.arcgis.carto package).
  • The following classes were added to support sensor camera models:
    • LSRXform (local space rectangle transform)
    • FrameXform (standard frame camera transform)
  • The following interfaces have also been added:
    • IRasterColormap3 - Used to read and write color map files (.clr).
    • IRawBlocks - Used to read and write pixel blocks based on storage blocks.

display

The following enhancement has been made to the com.esri.arcgis.display package:
  • ServerStyleGalleryItem supports the IStyleGalleryItem2 interface. IStyleGalleryItem2 provides access to methods 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 which the style gallery using the getTags() method from IStyleGalleryItem2.

framework

The following interfaces have been added to support dockable windows:
  • IDockableWindowInitialPlacement - Specifies where a dockview will appear the first time it's displayed.
  • IDockableWindowImageDef - Associates an icon with your dockview.

geodatabase

The following enhancements have been made to the com.esri.arcgis.geodatabase package:
  • The workspace editing event model has been extended to include the IWorkspaceEditEvents2 interface. This interface exposes an event method - onBeginStopEditing() - that is triggered when client code calls stopEditing() method on the IWorkspaceEdit interface and allows custom behavior to occur before the edit session has been stopped. This is in contrast to onStopEditing() method on the IWorkspaceEditEvents interface, which triggered after the edit session has already been stopped.
  • IQueryDef2 interface has been added to allow for support of postfix clauses, such as Order By and Group By, through the postfixClause attribute; prefix clauses, such as Distinct, through the prefixClause attribute; and recycling cursors, through the evaluate2() method. The IQueryFilterDefinition2 interface has also 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, ITerrainEmbeddedDataSource3, and ITerrainFieldStatistics, for data management and analysis have been added as well.
  • NetworkForwardStar - The INetworkForwardStarEx interface has been added 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 class has a new IDENetworkDataset2 interface that allows you to specify new properties added to the network dataset, such as the elevation connectivity model and traffic data. There is a new NetworkEdgeTrafficEvaluator class that allows a network attribute to return travel time values that vary based on the time of day. The NetworkAttribute class 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 be of interest to developers using NetworkForwardStar.

geometry

The following enhancements have been made to the Geometry library:
  • The IConstructClothoid interface has been added 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, 3D polylines can support vertical line segments.
  • The IPolycurveGeodetic and IConstructGeodetic interfaces have been added to support the construction of densified approximations of geodetic curves. These interfaces allow you to construct circles and ellipses that are defined using geodesic distance. Also, you can now compute distance between points on geodesic, loxodrome, great elliptic, or normal section curves.
  • The IGeometryServer2 interface provides access to more standard operations on arrays of geometric value objects. Similar to IGeometryServer methods, the input geometries are never modified by these operations.

location

The following interfaces and classes have been added to the com.esri.arcgis.location package:
  • ISingleLineAddressInput - Used to determine if a locator supports single line geocoding. It contains the singleLineAddressField attribute, which specifies the field that the locator uses to geocode addresses in a single line format. It also contains the defaultInputFieldNames attribute to determine which field in an address table contains the full address for single line geocoding.
  • IGeocodingProperties2 - Used to specify the end offset distance as a double and specify end offset distance units as esriUnits for locators that were built using ArcGIS 10 and above.
  • ESRIGen2AddressLocator - A locator (class) that uses the ESRI geocoding engine introduced in ArcGIS 10. This address locator supports single line input for geocoding.
  • IBatchGeocoding - Implemented by every locator and contains a subset of the methods that IAdvancedGeocoding contains. Use IBatchGeocoding instead of IAdvancedGeocoding when there is no need to access standardization methods or when a locator does not support standardization. IAdvancedGeocoding contains the rematchTable() method, while IAdvancedGeocoding2 contains the matchRecordSet() method.

networkanalyst

The following enhancements have been made to the com.esri.arcgis.networkanalyst package:
  • Location-Allocation solver - A new Network Analyst (NA) solver, NALocationAllocationSolver, has been added. 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 INALocator3 and INALocatorAgent3 interfaces have been added to use shapes and rows from feature classes to generate the location ranges associated with polygon and polyline barriers. The INAClassDefinition2 interface has been added to the NAClassDefinition class to help you find the location range field in the barrier NAClasses.
  • 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.

schematic

The schematic package adopts a new architecture to simplify development and to take advantage of standard ArcGIS features. In the new architecture, the NGO engine which handled the schematic graphical core and formed the foundation for the in-memory schematic objects has been removed. Some of the significant improvements in the new architecture are:
  • Database objects- All Schematic elements are now stored as point, polyline or polygon feature classes. You can take advantage of the standard ArcGIS Symbology and Labeling to represent the schematic elements in a schematic diagram (SchematicDiagram).
  • In-memory objects - Schematic diagram can now be edited. When a schematic diagram is edited, the diagram as well as its features are loaded as in-memory objects. When the edits are saved, the changes are automatically reported on the corresponding schematic objects in the schematic database.
  • Schematic events - Schematic events are now managed from the ISchematicDatasetEvents interface.
  • Schematic Controls - All the schematic related commands have been moved from Controls package to the new com.esri.arcgis.schematiccontrols package. Also, a set of new commands that manage schematic diagram editing and managing layer properties have been added. Some of them are,
    • ControlsSchematicImportLayerPropertiesCommand
    • ControlsSchematicPropagateLayerPropertiesCommand
    • ControlsSchematicRestoreDefaultLayerPropertiesCommand
    • ControlsSchematicSaveEditsCommand
    • ControlsSchematicStartEditCommand
    • ControlsSchematicStopEditCommand

systemUI

The IToolPalette interface has been added to the com.esri.arcgis.systemUI package to define the attributes of a custom tool palette.

Deprecated or removed

The following sections describe items that have been deprecated or removed.

Eclipse documentation plug-in

The Eclipse documentation plug-in, which was deprecated at 9.3.1, has been removed at this release. It is still possible to get the documentation within Eclipse through an alternative workflow, see How to install ArcGIS plug-ins.

arcgisant

Ant is a powerful build tool for Java projects. In previous releases of ArcGIS, we have supported the use of a custom tool called arcgistant when working with the Java SDK samples. At the release of ArcGIS 10 this approach has been deprecated. Beyond ArcGIS 10, ESRI will no longer ship the arcgisant product or the associated build files for samples. Samples will continue to be supported through the Eclipse integrated development environment (IDE) and executable jars.

RegTool

In the previous release, the RegTool was an alternative approach to Java extension registration that provided a Java API and command line tool that could be used to explicitly register and unregister Java extensions on a machine. This API and commend line tool have been removed from ArcGIS 10 and it is recommended that copying extension jars to the well know run time locations as the only workflow. For deploying extension jars for ArcGIS Desktop, use <AGSDESKTOPJAVA>/java/lib/ext as the well known location, for ArcGIS Engine runtime use <AGSENGINEJAVA>/java/lib/ext as the well known location, and for ArcGIS Server use <AGSSERVERJAVA>/java/lib/ext as the well known location (<AGSDESKTOPJAVA>, <AGSENGINEJAVA>, and <AGSSERVERJAVA> are new environment variables introduced at ArcGIS 10 to point to the install location of each run time, respectively).

arcweb package

ESRI no longer offers the ArcWeb Services product line, and the ArcWeb package and its classes, interfaces, and methods have been removed. Any application that references the ArcWeb package cannot be migrated to 10 until and unless the references are removed. The recommended alternative for ArcWeb services is ArcGIS Online Services.

Survey Analyst Extension

The survey analyst extension, which was deprecated at 9.3.1, has been removed at this release and the subsequent SurveyDataEx, SurveyExt and SurveyPkgs packages have all been removed. The functionality of Survey Analyst Extension is now available through the Parcel Editor and Parcel Fabric features.






Development licensing Deployment licensing
ArcView ArcView
ArcEditor ArcEditor
ArcInfo ArcInfo
Engine Developer Kit Engine Runtime