com.esri.arcgis.geometry
Interface IBufferConstruction

All Superinterfaces:
Serializable
All Known Implementing Classes:
BufferConstruction

public interface IBufferConstruction
extends Serializable

Provides access to members that buffer sets of geometries.

Description

This interface is new at ArcGIS 9.3.

Remarks

The BufferConstruction object implements an updated, highly robust geometric buffering operation. It is designed to process a large number of inputs without requiring that all inputs and outputs exist in main memory at the same time. It provides additional buffering options that are not possible with the current ArcObjects Buffer method. For example, geodesic buffers can be generated around points. Finally, it provides a compatibility operation that lets clients of the existing Buffer operation use this object with a minimal impact on their existing code. In fact, the simplest way to use the buffer construction object is:


IBufferConstruction bc = new BufferConstruction()

Buffer = bc.Buffer(myInputGeometry, distance);

Overview of capabilities of the BufferConstruction object

The buffer construction object requires the use of temporary files. They will be placed in the directory identified by the pathname contained in the environment variable ARCTMPDIR. If the variable does not exist, then the system TEMP location will be used. Temporary files are removed at the end of a buffer operation.

Buffering large sets of geometries and buffering each input geometry with a different distance

You can buffer large collections of geometries, without staging either the inputs or the outputs in memory, by implementing the IGeometricBufferSourceSink interface and using the ConstructBuffersByDistances method, or by implementing the IEnumGeometry and IGeometryCollection interfaces and using the ConstructBuffers method. Alternatively, you can directly use geometry bags and double arrays with the ConstructBuffers method, but then inputs and outputs must be staged in memory.

If you wish to apply a different buffer distance to each input geometry, you can use the ConstructBuffersByDistances2 method, which requires that inputs and outputs be staged in memory first, or implement the IGeometricBufferSourceSink interface and use the IBufferConstruction::ConstructBuffersByDistances method.

If a client chooses to implement IEnumGeometry and IGeometryCollection in conjunction with the ConstructBuffers method, not all IEnumGeometry or IGeometryCollection methods need to be implemented. Only the Next method on IEnumGeometry, and the AddGeometry method on IGeometryCollection, are used by the BufferConstruction object.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.


Method Summary
 IGeometry buffer(IGeometry pInGeometry, double distance)
          Compatibility method for clients wishing to replace useages of ITopologicalOperator::Buffer.
 void constructBuffers(IEnumGeometry pInputGeometries, double distance, IGeometryCollection pOutputBuffers)
          Constructs buffer polygons at the specified distance for the set of input geometries.
 void constructBuffersByDistances(IGeometricBufferSourceSink pBufferInputOutput)
          Constructs buffer polygons for the set of input geometries and distances supplied from the specified source-sink interface.
 void constructBuffersByDistances2(IEnumGeometry pInputGeometries, IDoubleArray pDistances, IGeometryCollection pOutputBuffers)
          Constructs buffer polygons for the set of input geometries and distances supplied from arrays.
 ILongArray getEmptyBufferIDs()
          Returns an array of identifiers of input geometries that result in empty buffers - typically as a result of buffering polygons by negative distances.
 

Method Detail

constructBuffers

void constructBuffers(IEnumGeometry pInputGeometries,
                      double distance,
                      IGeometryCollection pOutputBuffers)
                      throws IOException,
                             AutomationException
Constructs buffer polygons at the specified distance for the set of input geometries. The input geometries can be a mix of polylines, polygons, points and multipoints.

Remarks

ConstructBuffers can be used with GeometryBag objects to buffer collections of geometries that are staged in memory. Alternatively, clients can provide implementations of IEnumGeometry and IGeometryCollection to avoid staging inputs and outputs in memory.

The behavior of this method is affected by the various properties exposed on the IBufferConstructionProperties interface. For example, you can define the DistanceOffsets property in order to have this method generate multiple buffers for each input geometry. You can control the quality of the curve approximations used during buffering using the DensifyDeviation property. You can specify that overlapping buffers will be unioned together before being returned using the UnionOverlappingBuffers property, etc.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
pInputGeometries - A reference to a com.esri.arcgis.geometry.IEnumGeometry (in)
distance - The distance (in)
pOutputBuffers - A reference to a com.esri.arcgis.geometry.IGeometryCollection (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructBuffersByDistances

void constructBuffersByDistances(IGeometricBufferSourceSink pBufferInputOutput)
                                 throws IOException,
                                        AutomationException
Constructs buffer polygons for the set of input geometries and distances supplied from the specified source-sink interface. The input geometries can be a mix of polylines, polygons, points and multipoints.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
pBufferInputOutput - A reference to a com.esri.arcgis.geometry.IGeometricBufferSourceSink (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

constructBuffersByDistances2

void constructBuffersByDistances2(IEnumGeometry pInputGeometries,
                                  IDoubleArray pDistances,
                                  IGeometryCollection pOutputBuffers)
                                  throws IOException,
                                         AutomationException
Constructs buffer polygons for the set of input geometries and distances supplied from arrays. The input geometries can be a mix of polylines, polygons, points and multipoints.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
pInputGeometries - A reference to a com.esri.arcgis.geometry.IEnumGeometry (in)
pDistances - A reference to a com.esri.arcgis.system.IDoubleArray (in)
pOutputBuffers - A reference to a com.esri.arcgis.geometry.IGeometryCollection (in)
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

buffer

IGeometry buffer(IGeometry pInGeometry,
                 double distance)
                 throws IOException,
                        AutomationException
Compatibility method for clients wishing to replace useages of ITopologicalOperator::Buffer. This method does not use the properties exposed in IBufferConstructionProperties.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
pInGeometry - A reference to a com.esri.arcgis.geometry.IGeometry (in)
distance - The distance (in)
Returns:
A reference to a com.esri.arcgis.geometry.IGeometry
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

getEmptyBufferIDs

ILongArray getEmptyBufferIDs()
                             throws IOException,
                                    AutomationException
Returns an array of identifiers of input geometries that result in empty buffers - typically as a result of buffering polygons by negative distances. The identifier is either a sequence number or a geomID.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Returns:
A reference to a com.esri.arcgis.system.ILongArray
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.