Operation 
Public
boundary():GM_Boundary

Details:
Sequential
Notes:

The operation "boundary" shall return a finite set of GM_Objects containing all of the points on the boundary of this GM_Object. The finite set of GM_Objects returned shall be in the same coordinate reference system as this GM_Object. If the GM_Object is in a GM_Complex, then the boundary GM_Objects returned will be in the same GM_Complex. If the GM_Object is not in any GM_Complex, then the boundary GM_Objects returned may have been constructed in response to the operation. <br/>GM_Object::boundary() : Set#lt;Reference#lt;GM_Object#gt;#gt;<br/>The organization of the set returned is dependent on the type of GM_Object. Each of the subclasses of GM_Object described below will specify more completely the organization of their boundary set. <br/>The elements of a boundary shall be smaller in dimension than the original element.<br/>


Public
buffer( radius: Distance,
Default: 

Kind: 
inout 
Stereotype: 



):GM_Object

Details:
Sequential
Notes:

The operation "buffer" shall return a GM_Object containing all points whose distance from this GM_Object is less than or equal to the "distance" passed as a parameter. The GM_Object returned is in the same reference system as this original GM_Object. The dimension of the returned GM_Object is normally the same as the coordinate dimension  a collection of GM_Surfaces in 2D space and a collection of GM_Solids in 3D space, but this may be application defined.<br/>GM_Object::buffer(radius : Distance) : GM_Object<br/>NOTE There are cases for which this GM_Object would be partially outside the domain of validity of the object's coordinate reference system. If this case should arise the implementation shall decide on appropriate action.<br/>


Public
centroid():DirectPosition

Details:
Sequential
Notes:

The operation "centroid" shall return the mathematical centroid for this GM_Object. The result is not guaranteed to be on the object. For heterogeneous collections of primitives, the centroid only takes into account those of the largest dimension. For example, when calculating the centroid of surfaces, an average is taken weighted by area. Since curves have no area they do not contribute to the average.<br/>GM_Object::centroid() : DirectPosition<br/>NOTE : There may be cases for which this position would be outside the domain of validity of the object's coordinate reference system, but this is unlikely, since the domain of validity of most coordinate reference systems is convex. If this unlikely case should arise the implementation shall decide on appropriate action.<br/>


Public
closure():GM_Complex

Details:

Public
convexHull():GM_Object

Details:
Sequential
Notes:

convex hull of a geometric object <br/>smallest convex set containing the original geometric <br/><br/>convex set <br/>geometric set in which any third point on the straightline segment joining any two points in the set is also contained in the set <br/>The operation "convexHull" shall return a GM_Object that represents the convex hull of this GM_Object.<br/>GM_Object::convexHull() : GM_Object<br/>NOTE There may be cases for which this GM_Object would be partially outside the domain of validity of the object's coordinate reference system, but this is unlikely, since the domain of validity of most coordinate reference systems is convex. If this unlikely case should arise the implementation shall decide on appropriate action.<br/>


Public
coordinateDimension():Integer

Details:
Sequential
Notes:

coordinate dimension<br/>number of measurements or ordinates needed to describe a position in a coordinate system<br/><br/>The operation "coordinateDimension" shall return the dimension of the coordinates that define this GM_Object, which must be the same as the coordinate dimension of the coordinate reference system for this GM_Object.<br/>GM_Object::coordinateDimension(): Integer<br/>


Public
dimension( point: DirectPosition,
Default: 
NULL 
Kind: 
inout 
Stereotype: 



):Integer

Details:
Sequential
Notes:

geometric dimension at a point<br/>largest number n such that this point in the geometric set has a subset with the point in its interior that is similar (isomorphic) to a small copy of Rn, Euclidean nspace. <br/><br/>The operation "dimension" shall return the inherent dimension of this GM_Object, which shall be less than or equal to the coordinate dimension. The dimension of a collection of geometric objects shall be the largest dimension of any of its pieces. Points are 0dimensional, curves are 1dimensional, surfaces are 2dimensional, and solids are 3dimensional. Locally, the dimension of a geometric object at a point is the dimension of a local neighborhood of the point 3/4 that is the dimension of the best local coordinate neighborhood of the point. Dimension is unambiguously defined only for DirectPositions interior to this GM_Object. If the passed DirectPosition is NULL, then the operation shall return the largest possible dimension for any DirectPosition in this GM_Object.<br/>GM_Object::dimension(point : DirectPosition = NULL) : Integer<br/>


Public
distance( geometry: GM_Object,
Default: 

Kind: 
inout 
Stereotype: 



):Distance

Details:
Sequential
Notes:

The operation "distance" shall return the distance between this GM_Object and another GM_Object. This distance is defined to be the greatest lower bound of the set of distances between all pairs of points that include one each from each of the two GM_Objects. A "distance" value shall be a positive number associated to distance units such as meters or standard foot. If necessary, the second geometric object shall be transformed into the same coordinate reference system as the first before the distance is calculated.<br/>GM_Object::distance(geometry : GM_Object) : Distance<br/>If the geometric objects overlap, or touch, then their distance apart shall be zero. Some current implementations use a "negative" distance for such cases, but the approach is neither consistent between implementations, nor theoretically viable.<br/>The type "Distance" is one of the units of measure types included in annexes to ISO 150463.<br/>NOTE The role of the reference system in distance calculations is important. Generally, there are at least three types of distances that may be defined between points (and therefore between geometric objects): map distance, geodetic distance, and terrain distance. <br/>Map distance is the distance between the points as defined by their positions in a coordinate projection (such as on a map when scale is taken into account). Map distance is usually accurate for small areas where scale functions have wellbehaved derivatives. <br/>Geodesic distance is the length of the shortest curve between those two points along the surface of the earth model being used by the coordinate reference system. Geodesic distance behaves well for wide areas of coverage, and takes the earth's curvature into account. It is especially handy for air and sea navigation, although care should be taken to distinguish between rhumb line (curves of constant bearing) and geodesic curve distance. <br/>Terrain distance will take into account the local vertical displacements (hypsography). Terrain distance can be based either on a geodesic distance or a map distance.<br/>


Public
envelope():GM_Envelope

Details:
Sequential
Notes:

The operation "envelope" shall return the minimum bounding box for this GM_Object. This shall be the coordinate region spanning the minimum and maximum value for each ordinate taken on by DirectPositions in this GM_Object. The simplest representation for an envelope consists of two DirectPositions, the first one containing all the minimums for each ordinate, and second one containing all the maximums. However, there are cases for which these two positions would be outside the domain of validity of the object's coordinate reference system. This operation is included here only as an interface, as applications may chose to implement in different manners.<br/>GM_Object::envelope() : GM_Envelope<br/>


Public
isCycle():Boolean

Details:
Sequential
Notes:

The operation "isCycle" shall return TRUE if this GM_Object has an empty boundary after topological simplification (removal of overlaps between components in nonstructured aggregates, such as subclasses of GM_Aggregate). This condition is alternatively referred to as being "closed." This creates some confusion since there are two distinct and incompatible definitions for the word "closed." The use of the word cycle is rarer (generally restricted to the field of algebraic topology), but leads to less confusion. Essentially, an object (which must be representable by a geometric complex, for reasons that will be explained later) is a cycle if it is isomorphic to a geometric object that is the boundary of a region in some Euclidean Space. Thus a curve is a cycle, if it is isomorphic to a circle (has the same start and end point). A surface is a cycle if it isomorphic to the surface of a sphere, or some torus. A solid, with finite size, in a space of dimension 3 or less is never a cycle. <br/>GM_Object::isCycle(): Boolean<br/>The following OCL takes boundary producing a GM_Object and then applies TransfiniteSet#lt;DirectPosition#gt;::isEmpty() to test for the empty set. <br/>GM_Object:<br/>isCycle() = boundary().isEmpty()<br/>


Public
isSimple():Boolean

Details:
Sequential
Notes:

The operation "isSimple" shall return TRUE if this GM_Object has no interior point of selfintersection or selftangency. In mathematical formalisms, this means that every point in the interior of the object must have a metric neighborhood whose intersection with the object is isomorphic to an nsphere, where n is the dimension of this GM_Object.<br/>GM_Object::isSimple() : Boolean<br/>Since most coordinate geometries are represented, either directly or indirectly by functions from regions in Euclidean space of their topological dimension, the easiest test for simplicity is requiring that a function exist that is onetoone and bicontinuous (continuous in both directions). Such a function is a topological isomorphism. This test does not work for "closed" objects (that is, objects for which the isCycle operation returns TRUE).<br/>While GM_Complexes shall contain only simple GM_Objects, nonsimple GM_Objects are often used in "spaghetti" data sets.<br/>


Public
maximalComplex():Set<GM_Complex>

Details:
Sequential
Notes:

As a set of primitives, a GM_Complex may be contained as a set in another larger GM_Complex, referred to as a "super complex" of the original. A GM_Complex is maximal if there is no such larger super complex. The operation "maximalComplex" shall return the set of maximal GM_Complexes within which this GM_Object is contained.<br/>GM_Object::maximalComplex() : Set#lt;Reference#lt;GM_Complex#gt;<br/>If the application schema used does not include GM_Complex, then this operation shall return a NULL value.<br/>


Public
mbRegion():GM_Object

Details:
Sequential
Notes:

The operation "mbRegion" is included here only as an interface, as different applications may choose to implement it in different manners. It shall return a region in the coordinate reference system that contains this GM_Object. The default shall be to return the same object as "GM_Object::envelope," from the operator "envelope." The most common use of mbRegion will be to support indexing methods that use extents other than minimum bounding rectangles (MBR or envelopes).<br/>GM_Object::mbRegion() : GM_Object<br/>This does not restrict the returned GM_Object from being a nonvector geometric representation, although those types are not defined within this part.<br/>


Public
representativePoint():DirectPosition

Details:
Sequential
Notes:

The operation "representativePoint" is included here only as an interface that may be implemented in different ways. It shall return a point value (DirectPosition) that is guaranteed to be on this GM_Object. The default logic may be to use the DirectPosition of the point returned by the operation "GM_Object::centroid" if that point is on the object. <br/>GM_Object::representativePoint() : DirectPosition<br/>Another use of representativePoint may be for the placement of labels in systems based on graphic presentation. Definitions for symbology and type placement are out of the scope of this part of ISO 15046.<br/>


Public
transform( newCRS: SC_CRS,
Default: 

Kind: 
inout 
Stereotype: 


The Spatial Reference System of the Output Spatial Object

):GM_Object

Details:
Sequential
Notes:

The operation "transform" shall return a new GM_Object that is the coordinate transformation of this GM_Object into the passed coordinate reference system within the accuracy of the transformation as defined in ISO 15046 Part 11.<br/>GM_Object::transform(newCRS : CRS) : GM_Object<br/>

