|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.esri.arcgis.geometry.GeometryServerImpl
public class GeometryServerImpl
Provides access to standard operations on geometric 'value' objects. The input geometries are never modified by these operations. Designed for use in building web services or other kinds of distributed applications.
ArcEngine clients of the GeometryServer should not cocreate an instance of GeometryServerImpl. Clients should cocreate the GeometryServer object defined in the geodatabase object library (esriGeodatabase).
Field Summary |
---|
Fields inherited from interface com.esri.arcgis.system.IRequestHandler |
---|
IID, IID46a0e2ea_3b64_4a46_bd78_88a1660f35bb, xxDummy |
Fields inherited from interface com.esri.arcgis.system.IObjectActivate |
---|
IID, IIDe3b78022_143e_4e61_9099_ed319ec061e7, xxDummy |
Constructor Summary | |
---|---|
GeometryServerImpl()
Constructs a GeometryServerImpl using ArcGIS Engine. |
|
GeometryServerImpl(Object obj)
Deprecated. As of ArcGIS 9.2, replaced by normal Java casts. GeometryServerImpl theGeometryServerImpl = (GeometryServerImpl) obj; |
Method Summary | |
---|---|
void |
activate()
Activates the object. |
IPolygonArray |
autoComplete(ISpatialReference pSR,
IPolygonArray pInPolygons,
IPolylineArray pCompletionLines)
Discovers polygons bounded by existing polygons and input linework. |
IGeometryArray |
buffer(ISpatialReference pInSR,
ISpatialReference pBufferSR,
ISpatialReference pOutSR,
IDoubleArray pDistances,
IUnit pUnit,
boolean bUnion,
IGeometryArray pInGeometries)
Buffers an array of geometries by each distance specified in an array of distances. |
IGeometryArray |
bufferGeodesic(ISpatialReference pInSR,
ISpatialReference pOutSR,
IDoubleArray pDistances,
double bufferDeviation,
ILinearUnit pLinearDistanceUnit,
boolean bUnion,
IGeometryArray pInGeometries)
Constructs true buffer regions around Points, lines and polygons using true geodesic distances and directions. |
void |
construct(IPropertySet props)
Two phase object construction. |
IGeometry |
convexHull(ISpatialReference pSR,
IGeometryArray pInGeometryArray)
Computes the convex hull of the input geometries |
IGeometryArray |
cut(ISpatialReference pSR,
IGeometryArray pTargets,
IPolyline pCutter,
ILongArray[] ppCutIndexes)
Cuts the target polyline or polygon Cutter. |
void |
deactivate()
Deactivates the object. |
IGeometryArray |
densify(ISpatialReference pSR,
IGeometryArray pInGeometries,
double maxSegmentLength,
boolean useDeviationDensification,
double densificationParameter)
Applies the ArcObjects 'Densify' operation to each element of the geometry array. |
IGeometryArray |
densifyGeodesic(ISpatialReference pSR,
IGeometryArray pInGeometries,
double maxSegmentLength,
ILinearUnit pLengthUnit)
Densifies geometries by plotting points along the geodesics between existing vertices (uses IPolycurve4::GeodesicDensify). |
IGeometryArray |
difference(ISpatialReference pSR,
IGeometryArray pInGA1,
IGeometry pInG2)
Returns an array of geometries where each result geometry R[i] is (array1[i] difference G2). |
boolean |
equals(Object o)
Compare this object with another |
ISpatialReference |
findSRByWKID(String authority,
int wKID,
int wKID_Z,
boolean bDefaultXYResolution,
boolean bDefaultXYTolerance)
Defines an SR based upon its well known identifier (WKID) and optionally a WKID for a vertical datum. |
ISpatialReference |
findSRByWKT(String wKT,
String wKT_Z,
boolean bDefaultXYResolution,
boolean bDefaultXYTolerance)
Defines a spatial reference object based upon its well known text string (WKT) and optionally a WKT for a vertical datum. |
IUnit |
findUnitsByWKID(String authority,
int wKID)
Defines a unit object based upon its well known identified (WKID). |
IUnit |
findUnitsByWKT(String wKT)
Defines a unit object based upon its well known text string. |
IGeometryArray |
generalize(ISpatialReference pSR,
IGeometryArray pInGA,
double maxDeviation,
ILinearUnit pDeviationUnit)
Returns generalized (Douglas-Poiker) versions of the input polylines and polygons (uses IPolycurve::Generalize). |
void |
getAreasAndLengths(ISpatialReference pSR,
IPolygonArray pInPolygons,
IDoubleArray[] ppAreas,
IDoubleArray[] ppLengths)
Calculates areas and perimeter lengths for each polygon in the specified array. |
void |
getAreasAndLengths2(ISpatialReference pSR,
IPolygonArray pInPolygons,
ILinearUnit pLengthUnit,
ILinearUnit pAreaUnit,
int areaUnitEnum,
IDoubleArray[] ppAreas,
IDoubleArray[] ppLengths)
Calculates areas and perimeter lengths for each polygon in the specified array. |
void |
getAreasAndLengthsGeodesic(ISpatialReference pSR,
IPolygonArray pPolygons,
ILinearUnit pLengthUnit,
ILinearUnit pAreaUnit,
int areaUnitEnum,
IDoubleArray[] ppAreas,
IDoubleArray[] ppLengths)
Returns true geodesic area and geodesic perimeter length for each input polygon. |
void |
getAreasAndLengthsPreserveShape(ISpatialReference pSR,
IPolygonArray pPolygons,
ILinearUnit pLengthUnit,
ILinearUnit pAreaUnit,
int areaUnitEnum,
IDoubleArray[] ppAreas,
IDoubleArray[] ppLengths)
Returns true area and perimeter length for each input polygon. |
static String |
getClsid()
getClsid. |
double |
getDistance(ISpatialReference pSR,
IGeometry pG1,
IGeometry pG2,
ILinearUnit pDistanceUnit)
Reports shortest distance between G1 and G2. |
double |
getDistanceGeodesic(ISpatialReference pSR,
IGeometry pG1,
IGeometry pG2,
ILinearUnit pDistanceUnit)
Reports the shortest geodesic distance between G1 and G2. |
IPointArray |
getLabelPoints(ISpatialReference pSR,
IPolygonArray pInPolygons)
Calculates an interior point for each polygon. |
IDoubleArray |
getLengths(ISpatialReference pSR,
IPolylineArray pInPolylines)
Calculates the length of eacch polyline in the specified array. |
IDoubleArray |
getLengths2(ISpatialReference pSR,
IPolylineArray pInPolylines,
ILinearUnit pLengthUnit)
Calculates the length of eacch polyline in the specified array. |
IDoubleArray |
getLengthsGeodesic(ISpatialReference pSR,
IPolylineArray polylines,
ILinearUnit pLengthUnit)
Returns geodesic length of each Polyline. |
IDoubleArray |
getLengthsPreserveShape(ISpatialReference pSR,
IPolylineArray polylines,
ILinearUnit pLengthUnit)
Returns true length of each polyline. |
byte[] |
handleBinaryRequest(byte[] request)
Handles a binary request. |
byte[] |
handleBinaryRequest2(String capabilities,
byte[] request)
Handles a binary request with explicit capabilities. |
String |
handleStringRequest(String capabilities,
String request)
Handles a SOAP string request. |
int |
hashCode()
the hashcode for this object |
void |
initLogging(ILog log)
Initializes an object with a log. |
void |
interfaceSupportsErrorInfo(GUID riid)
interfaceSupportsErrorInfo |
IGeometryArray |
intersect(ISpatialReference pSR,
IGeometryArray pInGA1,
IGeometry pInG2)
Returns an array of geometries where each result geometry R[i] is (array1[i] intersect G2. |
IGeometryArray |
offset(ISpatialReference pSR,
IGeometryArray pInGA,
double offsetDistance,
ILinearUnit pOffsetUnit,
int offsetHow,
double bevelRatio)
Returns an array of polylines and polygons that are offset versions of the input polylines and polygons (uses ITopologicalOperator::ConstructOffset). |
IGeometryArray |
project(ISpatialReference pInSR,
ISpatialReference pOutSR,
int xFormDir,
ITransformation pXForm,
IEnvelope pExtent,
IGeometryArray pInGeometries)
Projects an array of geometries from their current spatial reference (pInSR) to a destination spatial reference (pOutSR). |
IRelationResultArray |
relation(ISpatialReference pSR,
IGeometryArray pInGA1,
IGeometryArray pInGA2,
int r,
String param)
Determines the pairs of geometries from the input geometry arrays that participate in the specified spatial relation. |
IGeometry |
reshape(ISpatialReference pSR,
IGeometry pTarget,
IPolyline pReshaper)
Reshapes the target polyline or polygon. |
IGeometryArray |
simplify(ISpatialReference pSR,
IGeometryArray pInGeometries)
Applies the ArcObjects 'Simplify' operation to each element of the geometry array. |
IPolylineArray |
trimExtend(ISpatialReference pSR,
IPolylineArray pInPA,
IPolyline pTrimExtendTo,
int extendHow)
Trims or extends each polyline in the input array using TrimExtendTo (uses IConstructCurve::ConstructExtended for extension operation). |
IGeometry |
union(ISpatialReference pSR,
IGeometryArray pInGA)
Returns the topological union of the input geometries (uses ITopologicalOperator::ConstructUnion). |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface com.esri.arcgis.interop.RemoteObjRef |
---|
getJintegraDispatch, release |
Constructor Detail |
---|
public GeometryServerImpl() throws IOException, UnknownHostException
IOException
- if there are interop problems
UnknownHostException
- if there are interop problemspublic GeometryServerImpl(Object obj) throws IOException
GeometryServerImpl theGeometryServerImpl = (GeometryServerImpl) obj;
obj
to GeometryServerImpl
.
obj
- an object returned from ArcGIS Engine or Server
IOException
- if there are interop problemsMethod Detail |
---|
public static String getClsid()
public boolean equals(Object o)
equals
in class Object
public int hashCode()
hashCode
in class Object
public void construct(IPropertySet props) throws IOException, AutomationException
construct
in interface IObjectConstruct
props
- A reference to a com.esri.arcgis.system.IPropertySet (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public byte[] handleBinaryRequest(byte[] request) throws IOException, AutomationException
handleBinaryRequest
in interface IRequestHandler
request
- An unsigned byte (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public String handleStringRequest(String capabilities, String request) throws IOException, AutomationException
handleStringRequest
in interface IRequestHandler
capabilities
- The capabilities (in)request
- The request (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public byte[] handleBinaryRequest2(String capabilities, byte[] request) throws IOException, AutomationException
handleBinaryRequest2
in interface IRequestHandler2
capabilities
- The capabilities (in)request
- An unsigned byte (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void activate() throws IOException, AutomationException
activate
in interface IObjectActivate
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void deactivate() throws IOException, AutomationException
deactivate
in interface IObjectActivate
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void initLogging(ILog log) throws IOException, AutomationException
initLogging
in interface ILogSupport
log
- A reference to a com.esri.arcgis.system.ILog (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void interfaceSupportsErrorInfo(GUID riid) throws IOException, AutomationException
Indicates whether the interface supports IErrorInfo.
interfaceSupportsErrorInfo
in interface ISupportErrorInfo
riid
- A Structure: com.esri.arcgis.support.ms.stdole.GUID (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray project(ISpatialReference pInSR, ISpatialReference pOutSR, int xFormDir, ITransformation pXForm, IEnvelope pExtent, IGeometryArray pInGeometries) throws IOException, AutomationException
The Project method applies the projection pOutSR to a copy of each element of pInGeometries and places the results in ppProjectedGeometries. All input geometries are assumed to be in the spatial reference pInSR, which cannot be nil. The input geometries are not modified. The array can contain mixed top-level geometry types (specifically points, multipoints, polylines and polygons). The array can also contain envelopes. pXForm and pExtent are optional. If pXForm is specified, then it is an instance of a GeoTransformation subclass (see EDN for details on datum transformations), and xFormDir must also be specified (esriTransformForward
, esriTransformReverse
). If pExtent is specified, then all input geometries are then assumed to be contained in it, and an attempt will be made to optimize the projection operation by checking if that extent is completely contained in the projection's horizon.
The SpatialReference property for all returned geometries will be null. It is the consumers responsibility to assign the spatial reference to each geometry returned, if desired. In this case, the spatial reference is assumed to be the output spatial reference defined for the Project operation.
If pXForm is not specified and the datums of the specified spatial references are not the same, then a search is made through a set of default datum transformations (a.k.a geographic transformations) . Currently, the following transformations, identified by name and WKID, are in that set:
• esriSRGeoTransformation_NAD_1927_TO_NAD_1983_NADCON
, forward and reverse, WKID = 1241
• esriSRGeoTransformation_NAD1983_To_WGS1984_1
, forward and reverse, WKID = 1170
• esriSRGeoTransformation_NAD1927_To_WGS1984_4
, forward and reverse, WKID = 1173
Refer to FindSRByWKID for a discussion on how to create the different kinds of spatial reference systems that can be used with this method. In addition, Well Known Identifiers (WKIDs) for available geotransformations are listed in the following enumerations:
esriSRGeoTransformation2Type
esriSRGeoTransformation3Type
esriSRGeoTransformationType
Refer to GeometryServer for additional details on how the input spatial reference is interpreted.
project
in interface IGeometryServer
pInSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pOutSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)xFormDir
- A com.esri.arcgis.geometry.esriTransformDirection constant (in)pXForm
- A reference to a com.esri.arcgis.geometry.ITransformation (in)pExtent
- A reference to a com.esri.arcgis.geometry.IEnvelope (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray buffer(ISpatialReference pInSR, ISpatialReference pBufferSR, ISpatialReference pOutSR, IDoubleArray pDistances, IUnit pUnit, boolean bUnion, IGeometryArray pInGeometries) throws IOException, AutomationException
Applies the geometric buffer operation to each geometry in pInGeometries, using each distance in the array pDistances. All geometries are assumed to be in the coordinate system pInSR, which cannot be nil. pBufferSR is the spatial reference in which the geometries are buffered. pOutSR is the spatial reference in which the buffer polygons are returned. pInSR must be specified. Either or both of the other SRs can be null. If the output spatial reference is null, then the input spatial reference is used for output; if the buffering spatial reference is null, then the output spatial reference is used for buffering; if both output and buffer spatial references are null, then the input spatial reference is used.
The distances can be specified in a separate unit of measure. For example, the buffer distances could be specified in feet and the coordinates of the geometries could be specified in meters. If bUnion is false, each buffered polygon will be added to ppOutBuffers separately. If bUnion is true, then all geometries buffered at a given distance will be unioned into a single (possibly multipart) polygon and that unioned geometry will be placed in the output array.
The SpatialReference property for all returned geometry will be null. It is the consumers responsibility to assign the spatial reference to each geometry returned, if desired. In this case, the spatial reference is assumed to be the output spatial reference defined for the Buffer operation.
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
Buffering of geometries with latitude-longitude coordinates is only supported for points and multipoints. In order to meaningfully buffer polylines and polygons with such coordinates, you need to specify a planar (projected) coordinate system in which the buffering will happen. Use the BufferSpatialReference parameter to define this coordinate system. When the Buffer method is called, the input features will be projected into this coordinate system (BufferSpatialReference), buffered, and then either inverse projected into the original coordinate system (InSpatialReference) or projected into the output coordinate system (OutSpatialReference).
When buffering points or multipoints and the input spatial reference is a geographic coordinate system (WGS1984, for example), you have the option of generating true geodesic buffers. To obtain such buffers, specify a linear unit of distance for the pUnit parameter.
Here is an example showing how to create a buffer using the Geometry Server.
buffer
in interface IGeometryServer
pInSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pBufferSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pOutSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pDistances
- A reference to a com.esri.arcgis.system.IDoubleArray (in)pUnit
- A reference to a com.esri.arcgis.geometry.IUnit (in)bUnion
- The bUnion (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IRelationResultArray relation(ISpatialReference pSR, IGeometryArray pInGA1, IGeometryArray pInGA2, int r, String param) throws IOException, AutomationException
Computes the set of pairs of geometries from pInGA1 and pInGA2 that belong to the specified relation. Both arrays are assumed to be in the coordinate system pSR, which cannot be nil. The relations are evaluated in 2D. Z coordinates are not used. Geometry types cannot be mixed within an array. Further restrictions on the types of geometries in an array are listed in the following table. r is a member of esriSpatialRelationEnum and can be one of the following:
Name | Description |
---|---|
esriSpatialRelationDisjoint | Same as IRelationalOperator::Disjoint. The zero-based index of a geometry from pInGA1 and the zero-based index of a geometry from pInGA2 define an element of the output array of relation results if the geometries share no points in common. See IRelationalOperator_Disjoint for some examples of the disjoint relation. There are no additional restrictions on the types of geometries in the input arrays. |
esriSpatialRelationIntersection | The opposite of esriSpatialRelationDisjoint. An element of the output array will specify the indexes of geometries from the input arrays if they share at least one point in the xy plane. There are no additional restrictions on the types of geometries in the input arrays. |
esriSpatialRelationInteriorIntersection | Same as esriSpatialRelationIntersection, but excludes intersections that occur only at boundaries (two touching polygons for example). The interior of a point is considered to be the point itself and the interior of a polyline excludes the endpoints of all its parts. There are no additional restrictions on the types of geometries in the input arrays. |
esriSpatialRelationIn, esriSpatialRelationWithin | These relations are similar. esriSpatialRelationIn is the same as IRelationalOperator::Within. esriSpatialRelationWithin is the same but also allows polylines that are strictly on the boundaries of polygons to be considered “in” the polygon. This case is disallowed by the former relation (and disallowed by IRelationalOperator::Within). The dimension of all geometries in pInGA1 must be >= the dimension of geometries in pInGA2. |
esriSpatialRelationPointTouch, esriSpatialRelationLineTouch, esriSpatialRelationTouch |
esriSpatialRelationPointTouch and esriSpatialRelationLineTouch are boundary intersections classified by dimension of intersection. esriSpatialRelationTouch is the union of those two and is equivalent to the ArcObjects IRelationalOperator Touch method. These relations are defined for polylines and polygons. |
esriSpatialRelationLineCoincidence | The boundaries of the shapes must share a 1D intersection, but the relationship between the interiors of the shapes is not considered (they could overlap, one could be contained in the other, or their interiors could be disjoint). This relation applies to polylines and polygons. |
esriSpatialRelationCross | Same as the ArcObjects IRelationalOperator::Cross method. Lines can cross other lines at a point and lines can cross polygons. See IRelationalOperator_Crosses for examples. |
esriSpatialRelationRelation | 'param' defines the 'Shape Comparison Language' string to be evaluated. Strings such as "RELATE(G1, G2, ""FFFTTT***"")" are accepted, in addition to other kinds of strings. See the following EDN topic for more details on the Shape Comparison Language. http://edndoc.esri.com/arcobjects/9.2/NET/40de6491-9b2d-440d-848b-2609efcd46b1.htm |
The output array contains elements of type
struct esriRelationPair
{
// The index of the left element in the relation.
long m_leftIndex;
//The index of the right element in the relation.
long m_rightIndex;
} esriRelationPair;
m_leftIndex is a zero-based index into pInGA1 and
m_rightIndex is an index into pInGA2.
esriGeometryRelationEnum is a synonym for esriSpatialRelationEnum. The former is the type name exposed through the web service. The latter is exposed through the COM api.
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
relation
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA1
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)pInGA2
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)r
- A com.esri.arcgis.geometry.esriSpatialRelationEnum constant (in)param
- The param (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray simplify(ISpatialReference pSR, IGeometryArray pInGeometries) throws IOException, AutomationException
Applies the ArcObjects geometric simplification operation to a copy of each geometry in the input array, placing the result in ppSimplifiedGeometries. The input geometries are assumed to be specified in the input spatial reference pSR, which cannot be nil. The elements can be a mixture of points, multipoints, polylines or polygons. Elements that can’t be simplifed are replaced with empty geometries of the same type at the corresponding index entry in the output array.
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
This operation uses the coordinate grid and the xy and z cluster
tolerances of the spatial reference. For more information on these
properties and how they can affect your coordinates, please refer
to the ESRI whitepaper “Understanding Coordinate
Management in the Geodatabase”:
SimplifyNetwork
method. Coordinates
are snapped, zero-length segments and empty parts are removed.
Length is determined in 3D if the polyline has z coordinates,
otherwise it is determined in 2D.
simplify
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray densify(ISpatialReference pSR, IGeometryArray pInGeometries, double maxSegmentLength, boolean useDeviationDensification, double densificationParameter) throws IOException, AutomationException
Replaces each curve segment, and optionally each line segment, in a polyline or polygon with line segments. Other types of input geometries will be ignored. All geometries are assumed to be in the spatial reference pSR, which cannot be nil.
When maxSegmentLength is greater than zero, lines and curves greater than that length will be replaced with lines at most maxSegmentLength long, and curves shorter than that will be replaced with lines connecting their endpoints. If maxSegmentLength is 0, then only curve segments will be densified, as explained below.
In general, this method provides three ways to densify curves:
The following table explains how the input parameters work together.
When MaxSegmentLength is | and angleOrDeviation is | then |
---|---|---|
> 0 | 0 | All segments longer than maxSegmentLength are replaced with sequences of lines no longer than maxSegmentLength. Curves shorter than maxSegmentLength are replaced with lines connecting the curve endpoints. This is method 1, above, for densifying curves. |
0 | > 0 | Input lines are copied to the output geometries. Input curves are densified using either method 2 or method 3, based on the value of the useDeviationDensification parameter. |
> 0 | > 0 | Lines longer than maxSegmentLength units are replaced with sequences of lines no longer than maxSegmentLength; curves are replaced with sequences of lines using either method 2 or method 3, based on the value of the useDeviationDensification parameter. |
When UseDeviationDensification is false the DensificationParameter is interpreted as a central angle, instead of a deviation.
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
If the geometries are in a geographic coordinate system, then “linear” densification distances are in units of degrees (or some other gcs angular unit). This isn’t meaningful if you expect output segments to have a constant ground length, but it still accomplishes the purpose of densifying the geometries, which is useful if you subsequently want to project them more accurately.
densify
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)maxSegmentLength
- The maxSegmentLength (in)useDeviationDensification
- The useDeviationDensification (in)densificationParameter
- The densificationParameter (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public ISpatialReference findSRByWKID(String authority, int wKID, int wKID_Z, boolean bDefaultXYResolution, boolean bDefaultXYTolerance) throws IOException, AutomationException
Returns a predefined, high precision spatial reference based on its OGP/EPSG Well Known Identifier (WKID, aka “factory code”). Valid WKIDs are listed below. If WKID_Z > -1, then a vertical coordinate system will be created and associated with the horizontal coordinate system.
AuthorityName is usually "EPSG" or "ESRI", but can
also be an arbitrary string. It can also be the empty string if you
want the default authority name associated with the new spatial
reference. Clients can associate their own authority names with
factory codes that are currently associated with the EPSG or ESRI
authority names, because only the WKID is used to create the
spatial reference. Here are the current rules for mapping
WKID ranges to default authority names:
• A WKID in the EPSG code range (1000
– 32768) will result in an AUTHORITY name of
“EPSG”, and the version will be the current EPSG
version used (currently “6.12”).
• A WKID in the ESRI code range (33000 –
199999) will result in an AUTHORITY name of “ESRI”, and
the version will be the current PE library version (currently
“9.3”).
• A WKID in the user (objedit) range (200000
– 209199) will result in an AUTHORITY name of
“CUSTOM”, with no version associated with it.
This name is specified by the OGC.
For web service clients of the geometry server, the returned WKT (well known text) element of the spatial reference will have an “AUTHORITY’ tag in it, containing the default or the client-specified authority name and the specified WKID.
If bDefaultXYResolution is true, then the xy coordinate grid resolution will be set to its default value (see SetDefaultXYResolution for details). If it is false, the finest possible resolution that covers the horizon of the spatial reference will be used (see ConstructFromHorizon for details).
If bDefaultXYTolerance is true, then the default xy tolerance of 1mm will be used (see SetDefaultXYTolerance for details). If it is false, then the minimum xy tolerance will be used (2.0 * xy coordinate grid resolution).
Lists of the valid WKIDs for predefined Projected
Coordinate Systems can be found here:
esriSRProjCS2Type,
esriSRProjCS3Type,
esriSRProjCS4Type,
esriSRProjCSType
Lists of the valid WKIDs for predefined Geographic Coordinate Systems can be found here:
esriSRGeoCS2Type, esriSRGeoCS3Type, esriSRGeoCSType
Default XY Resolution values
SpatialReference type |
Precision |
Default value |
ProjectedCoordinateSystem |
high |
1/10 mm |
ProjectedCoordinateSystem |
low |
1 mm |
GeographicCoordinateSystem |
high |
1/10,000 arc-second |
GeographicCoordinateSystem |
low |
1/500 arc-second |
UnknownCoordinateSystem |
high |
1/10 mm |
UnknownCoordinateSystem |
low |
1 mm |
Defining an XY resolution
Defining an XY resolution for a spatial reference depends on the
type and precision of a coordinate system. For high precision
spatial references, the domain extent and resolution must be
sufficient to cover the horizon of a given coordinate system.
For low-precision spatial references the domain extent is
centered on the horizon center.
For a high precision ProjectedCoordinateSystem (PCS), the domain extent is a square completely covering, and slightly larger than, the horizon extent of the PCS (which is an arbitrary rectangle). The scale factor (1/precision) is chosen to fit this domain. For a low precision PCS, the center of the domain extent is aligned with the center of the horizon extent and expanded to achieve a target resolution of 1mm.
For a high precision GeographicCoordinateSystem (GCS), the square domain (-400, -400, 400, 400), expressed in the units of the spatial reference, is used. For a low precision GCS the upper right hand corner is adjusted to achieve a default resolution of 1/500 of an arc-second.
For an UnknownCoordinateSystem (UCS), the "horizon" is defined to be a square that produces a resolution of 1 millimeter for a low precision UCS or 1/10 mm for a high precision UCS.
Default XY Tolerance calculations
For a ProjectedCoordinateSystem or an UnknownCoordinateSystem, the
default tolerance is 1 mm (expressed in the units of the spatial
reference) or 2.0 * XYResolution, whichever is larger. For a
GeographicCoordinateSystem, it is the angle subtending 1 mm at the
equator, or 2.0 * XYResolution, whichever is larger.
The minimum allowable XYTolerance is 2.0 * XYResolution.
If the default XY tolerance is not greater than or
equal to 2.0 * XYResolution, the XYTolerance will be set at 2.0 *
XYResolution.
findSRByWKID
in interface IGeometryServer
authority
- The authority (in)wKID
- The wKID (in)wKID_Z
- The wKID_Z (in)bDefaultXYResolution
- The bDefaultXYResolution (in)bDefaultXYTolerance
- The bDefaultXYTolerance (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public ISpatialReference findSRByWKT(String wKT, String wKT_Z, boolean bDefaultXYResolution, boolean bDefaultXYTolerance) throws IOException, AutomationException
Finds a predefined spatial reference based on its OGC/EPSG
definition string, otherwise known as its well-known text string
(WKT). The text string contains individual parameters
of a spatial reference. A valid spatial reference for a
geographic coordinate system (GEOGCS) may appears as
follows:
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
Note the nested structure of parameters includes a datum, spheriod,
prime meridian, and angular unit.
A valid spatial reference for a projected coordinate system
(PROJCS) may appears as follows:
PROJCS["World_Mercator",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],
PROJECTION["Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]]
Note the nested structure of parameters includes a geographic
coordinate system (GEOGCS), a projection, and a set of projection
parameters such as false easting, false northing, and standard
parallel.
If
WKT_Z is specified and not empty, then a vertical
coordinate system will be created and associated with the
horizontal coordinate system. The definition string can be
generated from ArcObjects using the ExportToESRISpatialReference
method on a PCS or GCS. The boolean parameters are as described for
FindSRByWKID.
findSRByWKT
in interface IGeometryServer
wKT
- The wKT (in)wKT_Z
- The wKT_Z (in)bDefaultXYResolution
- The bDefaultXYResolution (in)bDefaultXYTolerance
- The bDefaultXYTolerance (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IUnit findUnitsByWKID(String authority, int wKID) throws IOException, AutomationException
Finds a predefined linear or angular unit of measure based on its OGP/EPSG well known identifier (WKID, also referred to as “factory code”). AuthorityName is optional. If specified, it is usually either "EPSG" or "ESRI", but can also be an arbitrary string. As with spatial references, only the WKID value is used to locate the predefined unit. The WKIDs for predefined linear and angular units are listed here: esriSRUnit2Type, esriSRUnitType.
The Unit returned is often used in other Geometry service methods such as Buffer.
findUnitsByWKID
in interface IGeometryServer
authority
- The authority (in)wKID
- The wKID (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IUnit findUnitsByWKT(String wKT) throws IOException, AutomationException
Finds a predefined linear or angular unit of measure based on its well known text string (WKT). The Unit returned is often used in other Geometry service methods such as Buffer.
Here are some examples of WKT strings for linear and angular
units.
U.S. Survey Foot:
UNIT["Foot_US",0.3048006096012192,AUTHORITY["EPSG",9003]]
Arc-minute:
UNIT["Minute",0.0002908882086657216,AUTHORITY["EPSG",9103]]
Creating custom
units
You can create a custom unit in ArcObjects by using the
ImportFromESRISpatialReference
method on an
existing linear or angular unit object. Web service clients
can do this by creating a LinearUnit or AngularUnit value first and
then assigning the WKT string to the WKT property of the value. The
example script in this topic illustrates the former approach and
the example provided in the IGeometryServer
topic illustrates the latter.
findUnitsByWKT
in interface IGeometryServer
wKT
- The wKT (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getAreasAndLengths(ISpatialReference pSR, IPolygonArray pInPolygons, IDoubleArray[] ppAreas, IDoubleArray[] ppLengths) throws IOException, AutomationException
All geometries are assumed to be defined in the spatial reference pSR, which cannot be nil. The area and length values are computed in that spatial reference. It is not recommended that this method be used on geometries associated with a geographic coordinate system, since the length would then be calculated in units of "degrees" and the area would be calculated in units of "square degrees".
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
getAreasAndLengths
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)ppAreas
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)ppLengths
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IDoubleArray getLengths(ISpatialReference pSR, IPolylineArray pInPolylines) throws IOException, AutomationException
All geometries are assumed to be
defined in the spatial reference pSR, which cannot be nil. The
length values are computed in that spatial reference. It is not
recommended that this method be used on geometries associated with
a geographic coordinate system, since the length would then be
calculated in units of "degrees".
You can use the GetLengthsGeodesic method to compute accurate
lengths for polylines with latitude-longitude
coordinates.
Refer to IGeometryServer for additional details on how the input spatial reference is interpreted.
getLengths
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolylines
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IPointArray getLabelPoints(ISpatialReference pSR, IPolygonArray pInPolygons) throws IOException, AutomationException
Generates one point geometry per input polygon. Each point is guaranteed to be inside its corresponding polygon. The ArcObjects IArea::LabelPoint property is used to generate the output points. All input geometries are assumed to be defined in the input spatial reference pSR. pSR cannot be nil.
getLabelPoints
in interface IGeometryServer
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getAreasAndLengths2(ISpatialReference pSR, IPolygonArray pInPolygons, ILinearUnit pLengthUnit, ILinearUnit pAreaUnit, int areaUnitEnum, IDoubleArray[] ppAreas, IDoubleArray[] ppLengths) throws IOException, AutomationException
The area and length values are computed in the units specified as input parameters, if they are present, otherwise they are computed in the units of the spatial reference. It is not recommended that this method be used on geometries having latitude-longitude coordinates. You can use the GetLengthsGeodesic method to compute accurate lengths for polylines with latitude-longitude coordinates.
getAreasAndLengths2
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)pAreaUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)areaUnitEnum
- A com.esri.arcgis.system.esriAreaUnits constant (in)ppAreas
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)ppLengths
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IDoubleArray getLengths2(ISpatialReference pSR, IPolylineArray pInPolylines, ILinearUnit pLengthUnit) throws IOException, AutomationException
The length values are computed in the specified linear units, if present, or in the units of the spatial reference. It is not recommended that this method be used on geometries having latitude-longitude coordinates, since the length would then be calculated in units of "degrees". You can use the GetLengthsGeodesic method to compute accurate lengths for polylines with latitude-longitude coordinates.
getLengths2
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolylines
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray densifyGeodesic(ISpatialReference pSR, IGeometryArray pInGeometries, double maxSegmentLength, ILinearUnit pLengthUnit) throws IOException, AutomationException
Densifies each polyline or polygon in the input array by plotting points along the geodesic paths between existing vertices. MaxSegmentLength is expressed in some linear unit of measure. If the LengthUnit parameter is specified, then MaxSegmentLength is expressed in those units. If the LengthUnit parameter is not specified, then MaxSegmentLength is expressed in the the linear units of the input spatial reference, if the spatial reference is a projected coordinate system. Otherwise, it is assumed to be expressed in meters.
If the spatial reference is a projected coordinate system, then the input geometries will be inversed projected, geodesic path points will be plotted, and the result will be forward projected into the same spatial reference.
The figure below illustrates the DensifyGeodesic operation applied to a polyline with 3 vertices, with a max output segment length of 10,000 meters.
densifyGeodesic
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)maxSegmentLength
- The maxSegmentLength (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IDoubleArray getLengthsGeodesic(ISpatialReference pSR, IPolylineArray polylines, ILinearUnit pLengthUnit) throws IOException, AutomationException
The returned lengths are expressed in the specified linear units, if present, or in the units of the spatial reference. If LengthUnit is not specified and the input spatial reference is a geographic coordinate system, then the lengths are expressed in meters. This method calculates the ellipsoidal shortest path distance between each pair of the vertices in the polylines.
The spatial reference can be a projected or a geographic coordinate system. If the former, then the geometries are first inverse projected into its associated geographic coordinate system and then the distance calculations are performed.
getLengthsGeodesic
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)polylines
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public double getDistance(ISpatialReference pSR, IGeometry pG1, IGeometry pG2, ILinearUnit pDistanceUnit) throws IOException, AutomationException
The distance value is computed in the specified linear units, if present, or in the units of the spatial reference. It is not recommended that this method be used on geometries with lat-long coordinates. Use GetDistanceGeodesic instead.
getDistance
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pG1
- A reference to a com.esri.arcgis.geometry.IGeometry (in)pG2
- A reference to a com.esri.arcgis.geometry.IGeometry (in)pDistanceUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometry union(ISpatialReference pSR, IGeometryArray pInGA) throws IOException, AutomationException
This operation constructs the set-theoretic union of the geometries in the input array. All inputs must be of the same type.
union
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray intersect(ISpatialReference pSR, IGeometryArray pInGA1, IGeometry pInG2) throws IOException, AutomationException
This operation constructs the set-theoretic intersection between each element of the input array and InGeometry2. Each result is placed at the corresponding index in the output array – that is, Result[i] = InGeometryArray1[i] Intersect InGeometry2. If inGeometryArray1[i] and InGeometry2 disjoint, the output is an empty geometry of the type with the minimum dimension between inGeometryArray1[i] and InGeometry2.
The figure below shows an example of the intersect operation. The input geometry array contains all geometries shown on the left of the figure with the exception of the central circular polygon. The output array contains the modified geometries shown in the right part of the figure. Note that two of the output points will be “empty” because their corresponding inputs are outside the circular polygon.
intersect
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA1
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)pInG2
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray difference(ISpatialReference pSR, IGeometryArray pInGA1, IGeometry pInG2) throws IOException, AutomationException
This operation constructs the set-theoretic difference between each element of the input array and InGeometry2. Each result is placed at the corresponding index in the output array – that is, Result[i] = InGeometryArray1[i] Difference InGeometry2. The only restriction on combinations of geometry types is that the dimension of InGeometry2 must be equal to or greater than the dimensions of the elements of InGeometryArray1. Any inputs that are completely within InGeometry2 are represented by empty geometries of the same type in the output array.
The figure below shows an example of the difference operation. The geometry array contains all geometries shown with the exception of the central circular polygon. The output array contains the modified geometries shown in the right part of the figure. Note that one of the output points will be “empty” because the corresponding input is inside the circular polygon.
difference
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA1
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)pInG2
- A reference to a com.esri.arcgis.geometry.IGeometry (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray cut(ISpatialReference pSR, IGeometryArray pTargets, IPolyline pCutter, ILongArray[] ppCutIndexes) throws IOException, AutomationException
The target of the cut operation may be either a polyline or a polygon.
When it is a polyline, it is split where it intersects the cutter polyline. Each piece is classified as ‘left of’ or ‘right of’ the cutter. This classification is based on the orientation of the cutter line. The left pieces are returned in the first element of the output array and the right pieces are returned in the second element. Parts of the target polyline that do not intersect the cutting polyline are discarded. Figure below shows an example. The orientation of the cutter line is indicated with a red arrowhead. Notice that a polyline part is also cut when the cutter line just touches it (as opposed to crossing it). The lower right input part was not included in the output because it did not intersect the cutting line. The cutting line can also have multiple parts. The left/right decision is made per part.
The next figure shows an example of a cutting operation with a multipart cutting polyline. The orientation of each cutting part is shown with a red arrowhead. The ‘left’ result has been requested and is shown in the right box of the figure.
When the target is a polygon, the left/right classification it not done. The polygon pieces are returned in order of ascending area. In the figure below, the first cut part returned is to the right of the oriented cutting line, but it has the smallest area. Input parts that do not intersect the cutting line are discarded. The cutting line can be multi-part. See figure below.
cut
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pTargets
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)pCutter
- A reference to a com.esri.arcgis.geometry.IPolyline (in)ppCutIndexes
- A reference to a com.esri.arcgis.system.ILongArray (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IPolylineArray trimExtend(ISpatialReference pSR, IPolylineArray pInPA, IPolyline pTrimExtendTo, int extendHow) throws IOException, AutomationException
Trims (cuts) polylines that intersect the trim-extend line, or extends polylines to it that don’t intersect it. See the figure below for some examples. The details of how polylines are extended can be controlled by adding together combinations of the values listed in the table below.
values to be used with the trim-extend operation
Value |
Description |
|
esriDefaultCurveExtension |
0 |
By default, extension considers both ends of paths. The old ends remain and new points are added at the extended ends. The new points have attributes that are extrapolated from adjacent existing segments. |
esriRelocateEnds |
1 |
If an extension is performed at an end, relocate the end point to the new position instead of leaving the old point and adding a new point at the new position. |
esriKeepEndAttributes |
2 |
If an extension is performed at an end, do not extrapolate the end-segment's attributes for the new point. Instead, make its attributes the same as the current end. Incompatible with esriNoAttributes. |
esriNoEndAttributes |
4 |
If an extension is performed at an end, do not extrapolate the end-segment's attributes for the new point. Instead, make its attributes be empty. Incompatible with esriKeepAttributes. |
esriNoExtendAtFrom |
8 |
Do not extend the 'from' end of any path. |
esriNoExtendAtTo |
16 |
Do not extend the 'to' end of any path. |
trimExtend
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPA
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)pTrimExtendTo
- A reference to a com.esri.arcgis.geometry.IPolyline (in)extendHow
- The extendHow (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray offset(ISpatialReference pSR, IGeometryArray pInGA, double offsetDistance, ILinearUnit pOffsetUnit, int offsetHow, double bevelRatio) throws IOException, AutomationException
The offset operation creates a geometry that is a constant distance from an input polyline or polygon. It is similar to buffering, but produces a one sided result. If offsetDistance > 0, then the offset geometry is constructed to the right of the oriented input geometry, otherwise it is constructed to the left. For a polygon, the orientation of outer rings is clockwise and for inner rings it is counter clockwise. So the “right side” of a polygon is always its inside.
bevelRatio is multiplied by the offset distance and the result determines how far a mitered offset intersection can be from the input curve before it is beveled or rounded. When esriGeometryOffsetMitered is specified, the input bevel ratio is ignored and 10 is used internally.When esriGeometryOffsetBevelled is specified, 1.1 will be used if bevelRatio is not specified.
The figures below show some examples of offsetting polylines. The red arrowhead shows the orientation of the input polyline.
offset
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)offsetDistance
- The offsetDistance (in)pOffsetUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)offsetHow
- The offsetHow (in)bevelRatio
- The bevelRatio (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray generalize(ISpatialReference pSR, IGeometryArray pInGA, double maxDeviation, ILinearUnit pDeviationUnit) throws IOException, AutomationException
The Generalize operation applies Douglas-poiker line generalization to each element of the input array. The results are placed in corresponding indexes of the output array. If DeviationUnit is specified, then MaxDeviation is expressed in those units, otherwise it is expressed in the units of the spatial reference.
generalize
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGA
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)maxDeviation
- The maxDeviation (in)pDeviationUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometry reshape(ISpatialReference pSR, IGeometry pTarget, IPolyline pReshaper) throws IOException, AutomationException
Reshapes the target polyline or polygon. The reshaping polyline can have only one part. If the reshaper does not intersect the target polyline, or does not define a closed loop for the target polygon, then an empty geometry of the same type as the target geometry is returned. The orientation of the reshaper is not considered. The following rules for polygon and polyline reshaping are used:
Polygons:. only one ring (part) is explicitly reshaped – the first one in index order that intersects the reshaping path. The longest portion of the original ring boundary is preserved. The reshaped polygon is re-simplified after the reshape operation has been applied, so the rules for simplification will determine what happens if multiple rings interact with the reshaping path. The graphics show how preserving the longest portion of the boundary can invert the ring in some cases. If more complicated reshaping behavior is desired, a combination of auto-complete, cutting and union can be used.
Polylines: multiple paths (parts) can be affected by the reshaping path. The following graphics show three cases. The polyline being reshaped has part sequence and part orientations shown in red in the upper left graphic. The reshape is shown on the left of each row. The result is shown on the right of each row.
reshape
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pTarget
- A reference to a com.esri.arcgis.geometry.IGeometry (in)pReshaper
- A reference to a com.esri.arcgis.geometry.IPolyline (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometry convexHull(ISpatialReference pSR, IGeometryArray pInGeometryArray) throws IOException, AutomationException
The convex hull of a set of points, polylines and polygons is shown below. If all the inputs are collinear, than a polyline will be returned instead of a polygon. If all inputs are located at a single point, then that point will be returned.
convexHull
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInGeometryArray
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IPolygonArray autoComplete(ISpatialReference pSR, IPolygonArray pInPolygons, IPolylineArray pCompletionLines) throws IOException, AutomationException
autoComplete
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pInPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)pCompletionLines
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public double getDistanceGeodesic(ISpatialReference pSR, IGeometry pG1, IGeometry pG2, ILinearUnit pDistanceUnit) throws IOException, AutomationException
The distance value is computed in the specified linear units, if present, or in the units of the spatial reference. If SpatialReference is a projected coordinate system, the input geometries will first be inverse projected and then shortest geodesic distance will be computed on the latitude-longitude coordinates.
getDistanceGeodesic
in interface IGeometryServer2
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pG1
- A reference to a com.esri.arcgis.geometry.IGeometry (in)pG2
- A reference to a com.esri.arcgis.geometry.IGeometry (in)pDistanceUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IGeometryArray bufferGeodesic(ISpatialReference pInSR, ISpatialReference pOutSR, IDoubleArray pDistances, double bufferDeviation, ILinearUnit pLinearDistanceUnit, boolean bUnion, IGeometryArray pInGeometries) throws IOException, AutomationException
If geometries
are in geographic coordinate system, then geodesic
needs to be set to true
in order to generate a buffer polygon using a geodesic distance. The bufferSR
input parameter will be ignored when geodesic
is set to true
.
bufferGeodesic
in interface IGeometryServer3
pInSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pOutSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pDistances
- A reference to a com.esri.arcgis.system.IDoubleArray (in)bufferDeviation
- The bufferDeviation (in)pLinearDistanceUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)bUnion
- The bUnion (in)pInGeometries
- A reference to a com.esri.arcgis.geometry.IGeometryArray (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getAreasAndLengthsGeodesic(ISpatialReference pSR, IPolygonArray pPolygons, ILinearUnit pLengthUnit, ILinearUnit pAreaUnit, int areaUnitEnum, IDoubleArray[] ppAreas, IDoubleArray[] ppLengths) throws IOException, AutomationException
Use this method if you want to calculate an area or length using only the vertices of the polygon and define the lines between the points as geodesic segments independent of the actual shape of the polygon. A geodesic segment is the shortest path between two points on an ellipsoid.
The returned areas and lengths are expressed in the specified area units and linear units, if present, or in the units of the spatial reference. If AreaUnit and LengthUnit are not specified and the input spatial reference is a geographic coordinate system, then the lengths and areas are expressed in meters. This method calculates the ellipsoidal shortest path distance between each pair of the vertices in the polylines.
The spatial reference can be a projected or a geographic coordinate system. If the former, then the geometries are first inverse projected into its associated geographic coordinate system and then the distance calculations are performed.
getAreasAndLengthsGeodesic
in interface IGeometryServer3
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)pAreaUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)areaUnitEnum
- A com.esri.arcgis.system.esriAreaUnits constant (in)ppAreas
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)ppLengths
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public void getAreasAndLengthsPreserveShape(ISpatialReference pSR, IPolygonArray pPolygons, ILinearUnit pLengthUnit, ILinearUnit pAreaUnit, int areaUnitEnum, IDoubleArray[] ppAreas, IDoubleArray[] ppLengths) throws IOException, AutomationException
The method calculates the area or length of the geometry on the surface of the Earth ellipsoid, for geometry defined in projected or geographic coordinate system. This method preserves the shape of the geometry in its coordinate system. This means the true area or length will be calculated for the geometry you see in the map. (What you see is what you get.)
The returned lengths and areas are expressed in the specified linear units and area units, if present, or in the units of the spatial reference. If AreaUnit and LengthUnit are not specified and the input spatial reference is a geographic coordinate system, then the lengths and areas are expressed in meters.
getAreasAndLengthsPreserveShape
in interface IGeometryServer3
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)pPolygons
- A reference to a com.esri.arcgis.geometry.IPolygonArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)pAreaUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)areaUnitEnum
- A com.esri.arcgis.system.esriAreaUnits constant (in)ppAreas
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)ppLengths
- A reference to a com.esri.arcgis.system.IDoubleArray (out: use single element array)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.public IDoubleArray getLengthsPreserveShape(ISpatialReference pSR, IPolylineArray polylines, ILinearUnit pLengthUnit) throws IOException, AutomationException
The method calculates the length of the geometry on the surface of the Earth ellipsoid, for geometry defined in projected or geographic coordinate system. This method preserves the shape of the geometry in its coordinate system. This means the true length will be calculated for the geometry you see in the map. (What you see is what you get.)
The returned lengths are expressed in the specified linear units, if present, or in the units of the spatial reference. If LengthUnit is not specified and the input spatial reference is a geographic coordinate system, then the lengths are expressed in meters.
getLengthsPreserveShape
in interface IGeometryServer3
pSR
- A reference to a com.esri.arcgis.geometry.ISpatialReference (in)polylines
- A reference to a com.esri.arcgis.geometry.IPolylineArray (in)pLengthUnit
- A reference to a com.esri.arcgis.geometry.ILinearUnit (in)
IOException
- If there are interop problems.
AutomationException
- If the ArcObject component throws an exception.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |