Welcome

Welcome to the ArcSDE Developer Help Guide. ArcSDE contains two main application programmer interfaces for developers to build applications that work with and query information contained in multi-user geodatabases:
    • ArcSDE Client API for C programmers.
    • ArcSDE Client API for Java programmers.
In addition, ArcGIS 8 customization is done via ArcObjects.

Help Topics in this Guide:
General Concepts Provides an overview of ArcSDE concepts. | Administrator command references ArcSDE administrator command references.
C API Concepts C API Function Reference Overview and functional references for the ArcSDE C API. | Java API Overview Java API Function Reference Overview and functional references for the ArcSDE Java API.
SQL API Functional references for the SQL API available with IBM DB2 and Informix. |

Online Resources:

ArcObjects - the Object Oriented interface to Geodatabases
Online help system providing the latest information about ArcObjects including sample code, technical documents, and object model diagrams.

ArcSDE Developer Connection
Provides web access to developer help, samples, discussion forums, downloads, frequently asked questions, and other useful developer support resources.

ArcOnline
The ArcInfo user's web site, where you'll find links to technical information that will enhance your experience with ArcInfo as well as ArcSDE. ArcSDE FAQ's, for example, are also available from this page.


What's ArcSDE?

Welcome to ArcSDE, the gateway to your GIS.

ArcSDE is the tool that allows you to store and manage spatial data in your chosen relational database management system (RDBMS). ArcSDE is open; it works with a variety of different databases-including Oracle®, Informix®, IBM® DB2®, and Microsoft® SQL Server™-that scale from work groups to large enterprise databases.

ArcSDE plays a fundamental role in a multiuser GIS. With ArcSDE, your ArcGIS software (ArcInfo™, ArcEditor™, ArcView® GIS, and ArcIMS™) can work directly with spatial data managed in your RDBMS. ArcSDE also works as an application server, delivering spatial data to many kinds of applications and serving spatial data across the Internet.

ArcSDE provides the gateway between the GIS and the RDBMS to share and manage your spatial data as tables. In a heterogeneous database environment, where a number of different departmental or personal database systems areused, ArcSDE provides a common model for geographic information. This allows you to take full advantage of the facilities your RDBMS has to offer for integrating your GIS information with the rest of your organization's data holdings.

Multiuser GIS requires a database and GIS tools to work with the spatial data. Many types and sizes of spatial databases can be built, but typically, as your organization evolves, your spatial database will grow in size and number of users. As your spatial database grows, you may find it valuable to share it more widely within your organization or outside of your organization on the World Wide Web.

In light of the trend toward large, widely shared spatial databases, ArcSDE provides a number of key benefits including the following:

Database connection configuration options

ArcSDE allows you to distribute the GIS application processing between the database server, the client, and the ArcSDE application server. You may also configure your system to use what are called "direct connections". The application can connect directly to the RDBMS without using the ArcSDE application server. Connecting to the ArcSDE application server provides performance advantages as well as providing a mechanism for supporting server side applications. Direct connections provide an easier way to achieve RDBMS connectivity with less administrtion. You can, for example, directly connect to an Oracle Spatial database without requing the ArcSDE application server. Direct connections are also an advantage in configurations requiring failover support. The connnection configuration options allow you to define the system that best supports your needs.

Spatial data representation

The spatial data representation is built upon standard data types in the RDBMS. In cases where the RDBMS has extended spatial data types, ArcSDE can access and use these types for managing feature geometry. When necessary, ArcSDE provides the mechanism for managing feature geometry. These storage methods provide a fast and compact representation for spatial data.

Database portability

With ArcSDE, you can move data from one RDBMS to another without loss of information through ArcSDE data export and import capabilities. This is especially important if your enterprise has a heterogeneous database environment, possibly including work group or personal database systems. This capability is available for even the most advanced geodatabase designs.

Application portability

ArcSDE defines a logical model for spatial data, implemented on top of a physical database representation. Applications developed with the ArcSDE API will run, with little or no change, on different physical schemas within an RDBMS. This lets the GIS database administrator choose the best database schema for each individual dataset to meet the requirements of an application. For example, one dataset can be maintained and edited using a binary schema (stored as LONG RAW in Oracle), while another dataset might be stored as Oracle Spatial geometry types. How the data is stored is transparent to the end user application.

Data integrity

ArcSDE manages the integrity of the point, line, and polygon information added to the database and won't allow ill-formed feature geometry to be inserted (for example, polygon boundaries must be closed). In addition, you can use the ArcSDE gateway with ArcInfo to implement additional integrity constraints on the data model that aren't practical to implement in the RDBMS itself. For example, you can add connectivity rules for utility networks.

Application programming interfaces

ArcSDE provides open, high-level C and Java APIs for querying and processing spatial information. These APIs provide GIS functions for advanced application development. When the host RDBMS provides extended spatial types (for example, Informix Spatial Data Blade, and IBM's DB2 Spatial Extender), an SQL API is also available for the DBMS to work with the geometry columns in the DBMS.

ArcGIS provides a Microsoft Component Object Model (COM) API called ArcObjects™, containing a Geodata Access subsystem, which is compliant with the Open GIS Consortium (OpenGIS) simple feature standard.

Database and application development costs

You can significantly reduce the cost of building and maintaining a spatial database by using ArcSDE with ArcGIS. ArGIS provides many tools and datasets to help you quickly implement your application. Other ESRI® software can use the ArcSDE gateway-so you can choose the most appropriate tools for your application.

Applications and development tools

ArcSDE is the standard interface that allows direct access to spatial databases from ESRI's GIS software-ArcInfo, ArcEditor, ArcView, and ArcIMS. These applications and their integrated developer tools provide a comprehensive framework for creating, managing, and using spatial information. ArcSDE also supports direct interfaces from AutoCAD® and MicroStation® to spatial databases. In addition, a significant third party developer community exists for ArcSDE. Visit the ESRI ArcSDE Web site at www.esri.com to learn more about partner applications.

Storing Geographic Data

Data Access

Standards


concepts_features

Geographic Features in a SQL Database

The International Standards Organization defines a feature as an "abstraction of a real world phenomena", and a feature attribute as a "characteristic of a feature". Thus, a geographic feature is a real world phenomena with a feature attribute that defines its dimension and location in space. In a SQL database, features are managed in tables, an instance of a feature corresponds to a row, and an attribute of a feature to a column.

The spatial attribute of a geographic feature is defined by its dimension and location, and is referred to as the feature's geometry. The dimension of a geometry describes its form in space. See the Geometry section for more information.

The location of a geometry in space is defined by its coordinate system. The coordinate system contains information about the number of ordinate values, the mathematical rules for projecting the geometry coordinates, and how the coordinate system is related to a datum on the earth's surface. See coordinate systems and projections for more information.

Data Access

Data access is built around the standard cursor model defined in the Structured Query Language (SQL). The data access model builds on the traditional model by supporting spatial and raster constraints in a query.

A database connection is a connection to a source of geographic data. It represents the ArcSDE server, which can respond to requests for geographic information.

A query defines a specific set of features that you wish to retrieve from the database connection. When you apply a query to a database connection, you define a collection of geographic features that meet the criteria defined by the query. Queries can be quite simple, involving only an attribute value comparison, or they can be complex, involving multiple tables connected by primary/foreign key relationships with both attribute and spatial components.

The result of a query is a cursor, which provides a mechanism for iterating over a collection of geographic features. The cursor has an associated state, which represents the current feature in the collection. Functions are provided on the cursor to step through each individual feature in the collection. The cursor object is also responsible for returning the values defined for the current feature.

The cursor returns values, which represent the state of an element in the result set. Result set elements can have values of several different kinds—simple types such as numbers and strings or complex types such as a geometric shape.

In the ArcSDE C and Java API, the query and resulting cursor are implemented as a stream. A stream is a container that associates the query with the cursor, and is referenced by a unique stream handle. The stream also contains the buffering and data transmission properties for transmitting the results of query between the server and the client application.

In the Spatial Type implementation, the connection, query, and resulting cursor are implemented by the DBMS SQL engine.

Standards for Spatial Data in a SQL database

ArcSDE is based on standards for managing spatial data in a SQL database that have been defined by both international standards bodies, and industry organizations:

OpenGIS Consortium - Simple Features Specification for SQL

ISO19125-1, Geographic Information - Simple feature access - Part 1: Common architecture

ISO19125-2, Geographic Information - Simple feature access - Part 2: SQL option

ISO 19107, Geographic information ; Spatial schema

ISO 13249-3, Information technology — Database languages — SQL Multimedia and Application Packages — Part 3: Spatial.


Introducing geometry

The Oxford American Dictionary defines the noun ‘geometry’ as “the branch of mathematics dealing with the properties of and relations of lines, angles, surfaces, and solids.” On August 11, 1997, the OGC, in its publication of OpenGIS Features for ODBC (SQL) Implementation Specification, coined another definition for the noun geometry. The word was selected to define the geometric features that, for the past millennium or more, cartographers have used to map the world. Typically, points represent an object at a single location, linestrings a linear characteristic, and polygons a spatial extent. A very abstract definition of the OpenGIS noun geometry might be “a point or aggregate of points symbolizing a feature on the ground.” This definition, however, fails to describe the rich set of properties and functionality associated with geometry.

To understand geometry in this context it is easier to describe it as it has been implemented as an Abstract Data Type (ADT), and like all ADTs in an object relational system, it has a unique set of properties and methods.

Geometry as a data type allows you to define columns that store spatial data. The geometry data type itself is an abstract noninstantiable superclass, the subclasses of which are instantiable. An instantiated data type is one that can be defined as a table column and have values of its type inserted into it. A column can be defined as type geometry but geometry values cannot be inserted into it since they cannot be instantiated. Only the subclass values can be inserted into this column because only they can be instantiated. Therefore, the geometry data type can accept and store any of its subclasses, while its subclass data types can only accept their own values.

Throughout the remainder of this document the term geometry or geometries collectively refers to the superclass geometry data type and all of its subclass data types. Whenever it is necessary to specify the geometry superclass directly, it will be referred to as the geometry superclass or the geometry data type.


Shape Validation

A shape is the memory structure ArcSDE allocates to hold geometry. The shape class serves as the base class ArcSDE allocates to work with point, line and polygon geometry types. A number of properties and methods are common to all shapes. Each shape reports its type, the spatial reference system it belongs to, and the minimum bounding box it occupies in coordinate space. In addition, shapes can be defined as nil, to hold a empty or NULL geometry. Shapes can have multiple parts to hold homogeneous geometry collections. For example, a shape may contain several unconnected lines which represent an intermittent stream.

A point is shape with a dimension of 0 and represents a single location in coordinate space. A point has an x ordinate value and a y ordinate value.

(a) A point shape. (b) A multipart point shape with two parts.

A line is shape that has a dimension of 1. A line is called a simple line or linestring if it does not intersect itself.

(a) A self-intersecting (complex) line. (b) A single-part simple line. (c) A multipart simple line.

An area, or polygon, is a shape with a dimension of 2 and represents a contiguous feature. An area cannot contain any degenerate components or 'dangles'.

(a) An area shape. (b) A multipart area shape. (c) An illegal area shape with a number of 'dangles'.

An area shape may have 'holes'.

(a) A valid single-part area shape with one hole. (b) A valid two-part area with two inversions. (c) Two invalid area shapes.

ArcSDE shape verification rules

The points of an area shape are stored counterclockwise although the ArcSDE software can return points in either direction. If you generate an area shape whose coordinates are clockwise, the ArcSDE software changes the rotation to ensure that the coordinate list follows a counterclockwise direction.

The starting point is 'a' and the correct coordinate description is a,b,c,d,a.

An area shape can have inversions, empty spaces inside the area shape that touch the outer boundary.

Inverted area shapes have an interior ring that touches the outer boundary. These are not considered donut polygons.

When an area shape has a donut hole, the outer boundary is listed first. The points of the holes are stored in opposite direction of the outer boundary.

In the figure below, the outer boundary is described as a,b,c,d,a, and the hole is described as e,f,g,h,e. In the coordinate list, the area shape is stored as a,b,c,d,a,e,f,g,h,e.

For area shapes with holes, the outer boundary is always listed first in the coordinate list, followed by any holes.

If two holes touch at one point, they are treated as one hole, not two.

The two inner areas are a single hole because they share a common point, g.

The combination of area shapes and area shapes with holes can become fairly complex as shown below. The outer boundary is a lake with an island. There is a small lake on the island.

One example of representing nested area shapes.

It's possible to represent these features as one, two, or three shapes. You could store each feature separately. The larger lake is a donut polygon. The boundary of the large lake is the outer boundary while the island is the boundary of the single donut hole. The island is also a donut polygon. The boundary of the island is the outer boundary while the small lake is the hole. The small lake is a single area shape.

If the lakes are the important features, one shape with a hole represents the big lake, while a second shape represents the small lake. You could also use a multipart area shape to represent the feature. The first shape part is the big lake with a donut hole representing the island. The second part is the small lake.

Nil shapes act as placeholders, a way to have an attribute row without a corresponding geometry. One example that would result in a nil shape is a request for the intersection of two nonintersecting areas.

Because A and B do not touch, the result of an intersection query produces a empty geometry.

Shapes have 'dimensions'. A shape with only x,y coordinates is considered two-dimensional. A shape that has z-coordinates or measures is three-dimensional. A shape can also have a nil measure.

ArcSDE maintains valid shapes internally by applying a set of rules to each shape type. All ArcSDE commands that create or update shapes use these rules.

Verification rules for point shapes are:

• The area and length of points are set to 0.0.

• A single point's envelope is equal to the point's x,y values.

• The envelope of a multipart point shape is set to the minimum bounding box.

Verification rules for simple lines, or linestring shapes, are:

• Sequential duplicate points are removed.

• Each part must have at least two distinct points.

• Each part may not intersect itself. The start and endpoints may be the same, but the resulting 'ring' is not treated as an area shape.

• Parts may touch each other at the endpoints.

• The length is the sum of all the parts.

Verification rules for lines, or spaghetti shapes, are:

• Lines can intersect themselves.

• Each part must have at least two distinct points.

• Sequential duplicate points are deleted.

• The length is the length of all of its parts added together.

Verification rules and operations on area shapes are:

• Delete duplicate sequential occurrences of a coordinate point.

• Verify that the line segments close (z coordinates at start and endpoints must also be the same) and don't cross.

• Correct rotation to counterclockwise (see the previous section for an explanation of how ArcSDE stores area shapes).

• For area shapes with holes, ensure that holes reside wholly inside the outer boundary. ArcSDE eliminates any holes that are outside the outer boundary.

• Convert a hole that touches an outer boundary at a single common point into an inversion of the area shape.

• Combine multiple holes that touch at common points into a single hole.

• Multipart area shapes may not overlap. However, two parts may touch at a point.

• If two rings have a common boundary, they are merged into one ring.

• Calculate the total geometry perimeter, including the boundaries of all holes in donut polygons, and store the perimeter as the length of the geometry.

• Calculate the area.

• Calculate the envelope.


Geometry properties

Each subclass inherits the properties of the geometry superclass but also has properties of its own. Functions that operate on the geometry data type will accept any of the subclass data types. However, some functions have been defined at the subclass level and will only accept certain subclasses’ data types.

Interior, boundary, exterior

All geometries occupy a position in space defined by its interior, boundary, and exterior. The exterior of a geometry is all space not occupied by the geometry. The boundary of a geometry serves as the interface between its interior and exterior. The interior is the space occupied by the geometry. The subclass inherits the interior and exterior properties directly; however, the boundary property differs for each.

The boundary function takes a geometry and returns a geometry that represents the source geometry’s boundary.

Simple or nonsimple

Some subclasses of geometry (linestrings, multipoints, and multilinestrings) are either simple or nonsimple. They are simple if they obey all topological rules imposed on the subclass and nonsimple if they ‘bend’ a few. A linestring is simple if it does not intersect its interior. A multipoint is simple if none of its elements occupy the same coordinate space. A multilinestring is simple if none of its element’s interiors are intersected by its own interior.

The issimple predicate function takes a geometry and returns t (TRUE) if the geometry is simple and f (FALSE), otherwise.

Empty or not empty

A geometry is empty if it does not have any points. An empty geometry has a NULL envelope, boundary, interior, and exterior. An empty geometry is always simple and can have Z coordinates or measures. Empty linestrings and multilinestrings have a 0 length. Empty polygons and multipolygons have a 0 area.

The isempty predicate function takes a geometry and returns t (TRUE) if the geometry is empty and f (FALSE), otherwise.

Number of points

A geometry can have zero or more points. A geometry is considered empty if it has zero points. The point subclass is the only geometry that is restricted to zero or one point; all other subclasses can have zero or more.

Envelope

The envelope of a geometry is the bounding geometry formed by the minimum and maximum (X,Y) coordinates. The envelopes of most geometries form a boundary rectangle; however, the envelope of a point is the point since its minimum and maximum coordinates are the same, and the envelope of a horizontal or vertical linestring is a linestring represented by the boundary (the endpoints) of the source linestring.

The envelope function takes a geometry and returns a geometry that represents the source geometry’s envelope.

Dimension

A geometry can have a dimension of 0, 1, or 2.

The dimensions are

0—has neither length or area

1—has a length

2—contains area

The point and multipoint subclasses have a dimension of 0. Points represent zero-dimensional features that can be modeled with a single coordinate, while multipoints represent data that must be modeled with a cluster of unconnected coordinates.

The subclasses linestring and multilinestring have a dimension of 1. They store road segments, branching river systems, and any other features that are linear in nature.

Polygon and multipolygon subclasses have a dimension of 2. Forest stands, parcels, water bodies, and other features whose perimeter encloses a definable area can be rendered by either the polygon or multipolygon data type.

Dimension is important not only as a property of the subclass but it also plays a part in determining the spatial relationship of two features. The dimension of the resulting feature or features determines whether or not the operation was successful. The dimension of the features is examined to determine how they should be compared.

The dimension function takes a geometry and returns its dimension as an integer.

Z coordinates

Some geometries have an associated altitude or depth. Each of the points that form the geometry of a feature can include an optional Z coordinate that represents an altitude or depth normal to the earth’s surface.

The is3d predicate function takes a geometry and returns t (TRUE) if the function has Z coordinates and f (FALSE), otherwise.

Measures

Measures are values assigned to each coordinate. The value represents anything that can be stored as a double-precision number.

The ismeasured predicate function takes a geometry and returns t (TRUE) if it contains measures and f (FALSE), otherwise.

Spatial reference system

The spatial reference system identifies the coordinate transformation matrix for each geometry. All spatial reference systems known to the database are stored in the spatial_references table. The srid function takes a geometry and returns its spatial reference identifier as an integer.


Instantiable subclasses

The geometry data type is not instantiable but instead must store its instantiable subclasses. The subclasses are divided into two categories: the base geometry subclasses and the homogeneous collection subclasses. The base geometries include point, linestrings, and polygons, while the homogeneous collections include multipoint, multilinestring, and multipolygon. As the names imply, the homogeneous collections are collections of base geometries. In addition to sharing base geometry properties, homogeneous collections have some of their own properties, as well.

The geometrytype function takes a geometry and returns the instantiable subclass in the form of a character string. The numgeometries function takes a homogeneous collection and returns the number of base geometry elements it contains. The geometryn function takes a homogeneous collection and an index and returns the nth base geometry.

Point

A point is a zero-dimensional geometry that occupies a single location in coordinate space. A point has a single X,Y coordinate value. A point is always simple. Points have a NULL boundary. Points are often used to define features such as oil wells, landmarks, and elevations.

Functions that operate solely on the point data type include x, y, z, and m.

The x function returns a point data type’s X coordinate value as a double-precision number.

The y function returns a point data type’s Y coordinate value as a double-precision number.

The z function returns a point data type’s Z coordinate value as a double-precision number.

The m function returns a point data type’s M coordinate value as a double-precision number.

Linestring

A linestring is a one-dimensional object stored as a sequence of points defining a linear interpolated path. The linestring is simple if it does not intersect its interior. The endpoints (the boundary) of a closed linestring occupy the same point in space. A linestring is a ring if it is both closed and simple. As well as the other properties inherited from the superclass geometry, linestrings have length. Linestrings are often used to define linear features such as roads, rivers, and power lines.

The endpoints normally form the boundary of a linestring unless the linestring is closed, in which case the boundary is NULL. The interior of a linestring is the connected path that lies between the endpoints, unless it is closed, in which case the interior is continuous.

Functions that operate on linestrings include startpoint, endpoint, pointn, length, numpoints, isring, and isclosed.

The startpoint function takes a linestring and returns its first point.

The endpoint function takes a linestring and returns its last point.

The pointn function takes a linestring and an index to nth point and returns that point.

The length function takes a linestring and returns its length as a double-precision number.

The numpoints function takes a linestring and returns the number of points in its sequence as an integer.

The isring predicate function takes a linestring and returns t (TRUE) if the linestring is a ring and f (FALSE), otherwise.

The isclosed predicate function takes a linestring and returns t (TRUE) if the linestring is closed and f (FALSE), otherwise.

Examples of linestring objects: (1) is a simple nonclosed linestring; (2) is a nonsimple nonclosed linestring; (3) is a closed simple linestring and therefore is a ring; (4) is a closed nonsimple linestring—it is not a ring.

Polygon

A polygon is a two-dimensional surface stored as a sequence of points defining its exterior bounding ring and 0 or more interior rings. Polygons by definition are always simple. Most often they define parcels of land, water bodies, and other features that have a spatial extent.

Examples of polygon objects: (1) is a polygon whose boundary is defined by an exterior ring; (2) is a polygon whose boundary is defined by an exterior ring and two interior rings. The area inside the interior rings is part of the polygon’s exterior; (3) is a legal polygon because the rings intersect at a single tangent point.

The exterior and any interior rings define the boundary of a polygon, and the space enclosed between the rings defines the polygon’s interior. The rings of a polygon can intersect at a tangent point but never cross. In addition to the other properties inherited from the superclass geometry, polygons have area.

Functions that operate on polygons include area, exteriorring, numinteriorrings, interiorringn, centroid, and pointonsurface.

The area function takes a polygon and returns its area as a double-precision number.

The exteriorring function takes a polygon and returns its exterior ring as a linestring.

The numinteriorrings takes a polygon and returns the number of interior rings that it contains.

The interiorringn function takes a polygon and an index and returns the nth interior ring as a linestring.

The centroid function takes a polygon and returns a point that is the center of the polygon’s envelope.

The pointonsurface function takes a polygon and returns a point that is guaranteed to be on the surface of the polygon.

Multipoint

A multipoint is a collection of points, and just like its elements it has a dimension of 0. A multipoint is simple if none of its elements occupy the same coordinate space. The boundary of a multipoint is NULL. Multipoints define aerial broadcast patterns and incidents of a disease outbreak.

Multilinestring

A multilinestring is a collection of linestrings. Multilinestrings are simple if they only intersect at the endpoints of the linestring elements. Multilinestrings are nonsimple if the interiors of the linestring elements intersect.

The boundary of a multilinestring is the nonintersected endpoints of the linestring elements. The multilinestring is closed if all its linestring elements are closed. The boundary of a multilinestring is NULL if all the endpoints of all the elements are intersected. In addition to the other properties inherited from the superclass geometry, multilinestrings have length. Multilinestrings are used to define streams or road networks.

Examples of multilinestrings: (1) is a simple multilinestring whose boundary is the four endpoints of its two linestring elements; (2) is a simple multilinestring because only the endpoints of the linestring elements intersect. The boundary is two nonintersected endpoints. (3) is a nonsimple linestring because the interior of one of its linestring elements is intersected. The boundary of this multilinestring is the three nonintersected endpoints. (4) is a simple nonclosed multilinestring. It is not closed because its element linestrings are not closed. It is simple because none of the interiors of any of the element linestrings are intersected. (5) is a simple closed multilinestring. It is closed because all its elements are closed. It is simple because none of its elements are intersected at the interiors.

Functions that operate on multilinestrings include length and isclosed.

The length function takes a multilinestring and returns the cumulative length of all its linestring elements as a double-precision number.

The isclosed predicate function takes a multilinestring and returns t (TRUE) if the multilinestring is closed and f (FALSE), otherwise.

Multipolygon

The boundary of a multipolygon is the cumulative length of its elements’ exterior and interior rings. The interior of a multipolygon is defined as the cumulative interiors of its element polygons. The boundary of a multipolygon’s elements can only intersect at a tangent point. In addition to the other properties inherited from the superclass geometry, multipolygons have area. Multipolygons define features such as a forest stratum or a noncontiguous parcel of land such as a Pacific island chain.

Examples of multipolygon: (1) is multipolygon with two polygon elements. The boundary is defined by the two exterior rings and the three interior rings; (2) is a multipolygon with two polygon elements. The boundary is defined by the two exterior rings and the two interior rings. The two polygon elements intersect at a tangent point.

Functions that operate on multipolygons include area, centroid, and pointonsurface.

The area function takes a multipolygon and returns the cumulative area of its polygon elements as a double-precision number.

The centroid function takes a multipolygon and returns a point that is the center of a multipolygon’s envelope.

The pointonsurface function takes a multipolygon and returns a point that is guaranteed to be normal to the surface of one of its polygons.


Understanding spatial relations

A primary function of a geographic information system is determining the spatial relationships between features. The distance separating a hazardous waste disposal site and hospital, school, or housing development is an example of a spatial relationship.

Predicates are Boolean functions that return TRUE if a test passes and FALSE, otherwise, to determine if a specific relationship exists between a pair of geometries. Other functions return a value as a result of a spatial relationship. The result returned by the distance function, the space separating two geometries, is a double precision number. Alternatively, functions like intersection return a geometry as the result of combining two geometries.

Predicates

Predicates return t (TRUE) if a comparison meets the function’s criteria; otherwise, they return f (FALSE). Predicates that test for a spatial relationship compare pairs of geometry that can be a different type or dimension.

Predicates compare the X and Y coordinates of the submitted geometries. The Z coordinates and measure values, if they exist, are ignored. Geometries that have Z coordinates or measures can be compared with those that don’t.

The Dimensionally Extended 9 Intersection Model (DE-9IM) developed by Clementini, et al., dimensionally extends the 9 Intersection Model of Egenhofer and Herring. DE-9IM is a mathematical approach that defines the pair-wise spatial relationship between geometries of different types and dimensions. This model expresses spatial relationships among all types of geometry as pair-wise intersections of their interior, boundary, and exterior with consideration for the dimension of the resulting intersections.

Given geometries a and b, I(a), B(a), and E(a) represent the interior, boundary, and exterior of a, and I(b), B(b), and E(b) represent the interior, boundary, and exterior of b. The intersections of I(a), B(a), and E(a) with I(b), B(b), and E(b) produces a 3-by-3 matrix. Each intersection can result in geometries of different dimensions. For example, the intersection of the boundaries of two polygons could consist of a point and a linestring, in which case the dim function would return the maximum dimension of 1.

The dim function returns a value of -1, 0, 1, or 2. The -1 corresponds to the null set that is returned when no intersection was found or dim(Æ).

Interior Boundary Exterior

Interior dim(I(a)ÇI(b)) dim(I(a)ÇB(b)) dim(I(a)ÇE(b))

Boundary dim(B(a)ÇI(b)) dim(B(a)ÇB(b)) dim(B(a)ÇE(b))

Exterior dim(E(a)ÇI(b)) dim(E(a)ÇB(b)) dim(E(a)ÇE(b))

The results of the spatial relationship predicates can be understood or verified by comparing the results of the predicate with a pattern matrix that represents the acceptable values for the DE-9IM.

The pattern matrix contains the acceptable values for each of the intersection matrix cells. The possible pattern values are

T—An intersection must exist; dim = 0, 1, or 2.
F—An intersection must not exist; dim = -1.
*—It does not matter if an intersection exists or not; dim = -1, 0, 1, or 2.
0—An intersection must exist and its maximum dimension must be 0; dim = 0.
1—An intersection must exist and its maximum dimension must be 1; dim = 1.
2—An intersection must exist and its maximum dimension must be 2; dim = 2.

Each predicate has at least one pattern matrix, but some require more than one to describe the relationships of various geometry type combinations.

The pattern matrix of the within predicate for geometry combinations has the following form:

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | F
a | Boundary | * | * | F
 | Exterior | * | * | *

Simply put, the within predicate returns true when the interiors of both geometries intersect, and the interior and boundary of ‘a’ does not intersect the exterior of ‘b’. All other conditions do not matter.

Equal

Equal returns t (TRUE) if two geometries of the same type have identical X,Y coordinate values.

Geometries are equal if they have matching X,Y coordinates.

The DE-9IM pattern matrix for equality ensures that the interiors intersect and that no part
interior or boundary of either geometry intersects the exterior of the other.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | F
a | Boundary | * | * | F
 | Exterior | F | F | *

Disjoint

Disjoint returns t (TRUE) if the intersection of the two geometries is an empty set.

Geometries are disjoint if they do not intersect one another in any way.

The disjoint predicate’s pattern matrix simply states that neither the interiors nor the boundaries of either geometry intersect.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | F | F | *
a | Boundary | F | F | *
 | Exterior | * | * | *

Intersects

Intersects returns t (TRUE) if the intersection does not result in an empty set. Intersects returns the exact opposite result of disjoint.

The intersects predicate will return TRUE if the conditions of any of the following pattern matrices returns TRUE.

The intersects predicate returns TRUE if the interiors of both geometries intersect.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | *
a | Boundary | * | * | *
 | Exterior | * | * | *

The intersects predicate returns TRUE if the boundary of the first geometry intersects the boundary of the second geometry.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | * | T | *
a | Boundary | * | * | *
 | Exterior | * | * | *

The intersects predicate returns TRUE if the boundary of the first geometry intersects the
interior of the second.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | * | * | *
a | Boundary | T | * | *
 | Exterior | * | * | *

The intersects predicate returns TRUE if the boundaries of either geometry intersect.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | * | * | *
a | Boundary | * | T | *
 | Exterior | * | * | *

Touch

Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries. At least one geometry must be a linestring, polygon, multilinestring, or multipolygon.

Touch returns TRUE if either of the geometry’s boundaries intersect or if only one of the geometry’s
interiors intersects the other’s boundary.

The pattern matrices show us that the touch predicate returns TRUE when the interiors of the geometry don’t intersect and the boundary of either geometry intersects the other’s interior or boundary.

The touch predicate returns TRUE if the boundary of one geometry intersects the interior of the
other but the interiors do not intersect.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | F | T | *
a | Boundary | * | * | *
 | Exterior | * | * | *

The touch predicate returns TRUE if the boundary of one geometry intersects the interior of the
other but the interiors do not intersect.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | F | * | *
a | Boundary | T | * | *
 | Exterior | * | * | *

The touch predicate returns TRUE if the boundaries of both geometries intersect but the interiors do not.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | F | * | *
a | Boundary | * | T | *
 | Exterior | * | * | *

Overlap

Overlap compares two geometries of the same dimension and returns t (TRUE) if their intersection set results in a geometry different from both but of the same dimension.

Overlap returns t (TRUE) only for geometries of the same dimension and only when their intersection set results in a geometry of the same dimension. In other words, if the intersection of two polygons results in polygon, then overlap returns t (TRUE).

This pattern matrix applies to polygon/polygon, multipoint/multipoint and multipolygon/multipolygon overlays. For these combinations the overlap predicate returns TRUE if the interior of both geometries intersects the other’s interior and exterior.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | T
a | Boundary | * | * | *
 | Exterior | T | * | *

This pattern matrix applies to linestring/linestring and multilinestring/multilinestring overlaps. In this case the intersection of the geometries must result in a geometry that has a dimension of 1 (another linestring). If the dimension of the intersection of the interiors had resulted in 0 (a point) the overlap predicate would return FALSE; however, the cross predicate would have returned TRUE.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | 1 | * | T
a | Boundary | * | * | *
 | Exterior | T | * | *

Cross

Cross returns t (TRUE) if the intersection results in a geometry whose dimension is one less than the maximum dimension of the two source geometries and the intersection set is interior to both source geometries. Cross returns t (TRUE) for only multipoint/polygon, multipoint/linestring, linestring/linestring, linestring/polygon, and linestring/multipolygon comparisons.

Cross returns t (TRUE) if the dimension of the intersection is one less than the maximum dimension of the source geometries and the interiors of both geometries are intersected.

This cross predicate pattern matrix applies to multipoint/linestring, multipoint/multilinestring, multipoint/polygon, multipoint/multipolygon, linestring/polygon, and linestring/multipolygon. The
matrix states that the interiors must intersect and that at least the interior of the primary (geometry a)
must intersect the exterior of the secondary (geometry b).

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | T
a | Boundary | * | * | *
 | Exterior | * | * | *

This cross predicate matrix applies to linestring/linestring, linestring/multilinestring, and multilinestring/multilinestring. The matrix states that the dimension of the intersection of the interiors
must be 0 (intersect at a point). If the dimension of this intersection was 1 (intersect at a linestring) the
cross predicate would return FALSE but the overlap predicate would return TRUE.

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | 0 | * | *
a | Boundary | * | * | *
 | Exterior | * | * | *

Within

Within returns t (TRUE) if the first geometry is completely within the second geometry. Within tests for the exact opposite result of contains.

Within returns t (TRUE) if the first geometry is completely inside the second geometry. The boundary and interior of the first geometry are not allowed to intersect the exterior of the second geometry and the first geometry may not equal the second geometry.

The within predicate pattern matrix states that the interiors of both geometries must intersect and that the interior and boundary of the primary geometry (geometry a) must not intersect the exterior of the secondary (geometry b).

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | F
a | Boundary | * | * | F
 | Exterior | * | * | *

Contains

Contains returns t (TRUE) if the second geometry is completely contained by the first geometry. The contains predicate returns the exact opposite result of the within predicate.

Contains returns t (TRUE) if the second geometry is completely inside the first. The boundary and interior of the second geometry are not allowed to intersect the exterior of the first geometry and the geometries may not be equal.

The pattern matrix of the contains predicate states that the interiors of both geometries must intersect and that the interior and boundary of the secondary (geometry b) must not intersect the exterior of the primary (geometry a).

 |  |  | b |
 |  | Interior | Boundary | Exterior
 | Interior | T | * | *
a | Boundary | * | * | *
 | Exterior | F | F | *

Minimum distance

The minimum distance separating disjoint features could represent the shortest distance an aircraft must travel between two locations. The distance function reports the minimum distance separating two disjoint features. If the features aren’t disjoint the function will report a zero minimum distance.

Intersection of geometries

The intersection function returns the intersection set of two geometries. The intersection set is always returned as a collection that is the minimum dimension of the source geometries. For example, for a linestring that intersects a polygon, the intersection function returns that portion of the linestring common to the interior and boundary of the polygon as a multilinestring. The multilinestring contains more than one linestring if the source linestring intersected the polygon with two or more discontinuous segments. If the geometries do not intersect or if the intersection results in a dimension less than both source geometries, an empty geometry is returned. The following figure illustrates some examples of the intersection function.

The intersection function returns the intersection set as the geometry that is the minimum dimension of the source geometries.

Difference of geometries

The difference function returns the portion of the primary geometry that isn’t intersected by the secondary geometry—the logical AND NOT of space. The difference function only operates on geometries of like dimension and returns a collection that has the same dimension as the source geometries. In the event that the source geometries are equal, an empty geometry is returned.

Difference returns that portion of the first geometry that is not intersected by the second.

Union of geometries

The union function returns the union set of two geometries—the Boolean logical OR of space. The source geometries must have the same dimension. Union always returns the result as a collection.

Union returns the union set of two geometries.

Symmetric difference of geometries

The symmetricdiff function returns the symmetric difference of two geometries—the logical XOR of space. The source geometries must have the same dimension. If the geometries are equal, the symmetricdiff function returns an empty geometry; otherwise, the function returns the result as a collection.

Symmetricdiff returns the portions of the source geometries that are not part of the intersection set. The source geometries must be of the same dimension.


Tranforming geometries

Transforming geometries

Transformation functions generate new geometry using existing geometry and a formula. Note: function references are for the SQL API.

Buffering geometry

The ST_Buffer function generates a geometry by encircling a geometry at a specified distance. A single polygon results when a primary geometry is buffered or when the buffer polygons of a collection are close enough to overlap. When enough separation exists between the elements of a buffered collection, individual buffer polygons will result in a multipolygon.

The ST_Buffer function accepts both positive and negative distances, but only geometries with a dimension of 2 (polygons and multipolygons) can apply a negative buffer. The absolute value of the buffer distance is used when the dimension of the source geometry is less than 2 (all geometries that are neither polygon nor multipolygon). Generally speaking, positive buffer distances generate polygon rings away from the center of the source geometry, and for the exterior ring of a polygon or multipolygon, toward the center when the distance is negative. For interior rings of a polygon or multipolygon, the buffer ring is toward the center when the buffer distance is positive and away from the center when it is negative.

The buffering process merges polygons that overlap. Negative distances greater than one-half the maximum interior width of a polygon result in an empty geometry.

Buffer generates a polygon or a multipolygon surrounding a given geometry at a specified radius.

SE_LocateAlong

For geometries that have measures, the location of a particular measure can be found with the SE_LocateAlong function. SE_LocateAlong returns the location as a multipoint. If the source geometry’s dimension is 0 (i.e., point and multipoint), only points with a matching measure value are returned as a multipoint. However, for source geometries whose dimension is greater than 0, the location is interpolated. For example, if the requested measure value is 5.5 and a linestring’s vertices have measures of 3, 4, 5, 6, and 7, an interpolated point that falls exactly halfway between the vertices with measure values 5 and 6 is returned.

ST_LocateAlong locates a point on a linestring by interpolating the given measure value, if necessary. In this case a point with measure 5.5 is interpolated halfway between the vertices of the linestring with measures 5 and 6. For multipoints, an exact match is required. In the case of the above multipoint geometry, locatealong returns the point that has measure 5.5.

SE_Locatebetween

The SE_LocateBetween function returns the set of paths or locations that lie between two measure values from a source geometry that has measures. If the source geometry’s dimension is 0, SE_LocateBetween returns a multipoint consisting of all points whose measures lie between the two source measures. For source geometries whose dimension is greater than 0, SE_LocateBetween returns a multilinestring if a path can be interpolated; otherwise, SE_LocateBetween returns a multipoint containing the point locations. An empty point is returned whenever SE_LocateBetween cannot interpolate a path or find a location between the measures. SE_LocateBetween performs an inclusive search of the geometries; therefore, the geometries’ measures must be greater than or equal to the from measure and less than or equal to the to measure.

SE_LocateBetween returns a multilinestring that is between measures 4.3 and 6.9.

ST_ConvexHull

The ST_ConvexHull function returns the convex hull polygon of any geometry that has at least three vertices forming a convex. If vertices of the geometry do not form a convex, convexhull returns a null. Creating a convex hull is often the first step when tessellating a set of points to create a triangulated irregular network (TIN).

ST_ConvexHull generates a polygon from the convex hull of three of the geometries pictured above. ST_ConvexHull returns a null for the two-point linestring because it doesn’t form a convex hull.


geometry representation overview

Well-known representations of geometry

ArcSDE provides support for a number of documented geometry representations for data exchange. These representations are referred to as Well-Known representations because they are documented, and in most cases, widely available.

The following geometry representations are ISO and OGC standards:

  • Well-Known Text Representation of Geometry
  • Well-Known Binary Representation of Geometry

The ESRI Shape Representation of Geometry is used in shape files, and is a GIS industry standard.

The ArcSDE compressed binary representation is used by ArcSDE for binary geometry storage in an RDBMS.

Not all of these representations of geometry support the same geometric properties. The following table illustrates some of the differences:

Geometry Representation | Specification maintained by: | Encoding | Supports 2D | Supports Elevations | Supports Measures | Supports CAD
Well Known Text | ISO/OGC | ASCII | Yes | Yes* | Yes* | No
Well-Known Binary | ISO/OGC | Binary | Yes | No | No | No
Shape File | ESRI | Binary | Yes | Yes | Yes | Yes
ArcSDE Binary | ESRI | Binary | Yes | Yes | Yes | Yes

* Additional tags have been added by ESRI to support Elevations and Measures

Functions are provided in the ArcSDE C, JAVA, and SQL interfaces to import and export geometric objects in the Well-Known Text, Well-Known Binary, and shape representations. Functions are not provided to directly manipulate the ArcSDE compressed binary, but access can be gained through standard SQL queries.


The well-known text representation for geometry

Each geometry type has a well-known text representation from which new instances can be constructed or existing instances can be converted to textual form for alphanumeric display, or use in systems where binary representations of geometry are not supported.

The ISO/OGC specification of the well-known text representation for geometry is limited to 2D geometric objects. ESRI has extended this specification to support elevations and measures. If you are using this format to exchange data with other systems, they may not know how to interpret elevation and measure tags.

The text representation is an ASCII text-formatted string that allows geometry to be exchanged in ASCII text form.

The well-known text representation of geometry can be incorporated into a C program. The structure for such an implementation is defined below. The notation {}* denotes zero or more repetitions of the tokens within the braces. The braces do not appear in the output token list.

<Geometry Tagged Text> :=

| <Point Tagged Text>
| <LineString Tagged Text>
| <Polygon Tagged Text>
| <MultiPoint Tagged Text>
| <MultiLineString Tagged Text>
| <MultiPolygon Tagged Text>

<Point Tagged Text> :=
POINT <Point Text>

<LineString Tagged Text> :=
LINESTRING <LineString Text>

<Polygon Tagged Text> :=
POLYGON <Polygon Text>

<MultiPoint Tagged Text> :=
MULTIPOINT <Multipoint Text>

<MultiLineString Tagged Text> :=
MULTILINESTRING <MultiLineString Text>

<MultiPolygon Tagged Text> :=
MULTIPOLYGON <MultiPolygon Text>

<Point Text> := EMPTY
| <Point>
| Z <PointZ>
| M <PointM>
| ZM <PointZM>

<Point> := <x> <y>
<x> := double precision literal
<y> := double precision literal

<PointZ> := <x> <y> <z>
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal

<PointM> := <x> <y> <m>
<x> := double precision literal
<y> := double precision literal
<m> := double precision literal

<PointZM> := <x> <y> <z> <m>
<x> := double precision literal
<y> := double precision literal
<z> := double precision literal
<m> := double precision literal

<LineString Text> := EMPTY
| ( <Point Text > {, <Point Text> }* )
| Z ( <PointZ Text > {, <PointZ Text> }* )
| M ( <PointM Text > {, <PointM Text> }* )
| ZM ( <PointZM Text > {, <PointZM Text> }* )

<Polygon Text> := EMPTY
| ( <LineString Text > {,< LineString Text > }*)

<Multipoint Text> := EMPTY
| ( <Point Text > {, <Point Text > }* )

<MultiLineString Text> := EMPTY
| ( <LineString Text > {,< LineString Text>}* )

<MultiPolygon Text> := EMPTY
| ( < Polygon Text > {, < Polygon Text > }* )

The ‘<text description>’ is made up of three basic components enclosed in single quotes:

'<geometry type> [coordinate type] [coordinate list]'

The ‘geometrytype’ is defined as one of the following: point, linestring, polygon, multipoint, multilinestring, or multipolygon.

The ‘coordinate type’ specifies whether or not the geometry has Z coordinates and/or measures. Leave this argument blank if the geometry has neither; otherwise, set the coordinate type to Z for geometries containing Z coordinates, M for geometries with measures, and ZM for geometries that have both.

The ‘coordinate list’ defines the double-precision vertices of the geometry. Coordinate lists are comma-delimited and enclosed by parentheses. Geometries having multiple components require sets of parentheses to enclose each component part. If the geometry is empty, the EMPTY keyword replaces the coordinates.

The following examples provide a complete list of all possible permutations of the
text description portion of the text representation:

Geometry type | Text Description | Comment
point | ‘point empty’ | empty point
point | ‘point z empty’ | empty point with z coordinate
point | ‘point m empty’ | empty point with measure
point | ‘point zm empty’ | empty point with z coordinate and measure
point | ‘point ( 10.05 10.28 )’ | point
point | ‘point z ( 10.05 10.28 2.51 )’ | point with z coordinate
point | ‘point m ( 10.05 10.28 4.72 )’ | point with measure
point | ‘point zm ( 10.05 10.28 2.51 4.72 )’ | point with z coordinate and measure
linestring | ‘linestring empty’ | empty linestring
linestring | ‘linestring z empty’ | empty linestring with z coordinates
linestring | ‘linestring m empty’ | empty linestring with measures
linestring | ‘linestring zm empty’ | empty linestring with z coordinates and measures
linestring | ‘linestring ( 10.05 10.28 , 20.95 20.89 )’ | linestring
linestring | ‘linestring z ( 10.05 10.28 3.09, 20.95 31.98 4.72, 21.98 29.80 3.51 )’ | linestring with z coordinates
linestring | ‘linestring m ( 10.05 10.28 5.84, 20.95 31.98 9.01, 21.98 29.80 12.84 )’ | linestring with measures
linestring | ‘linestring zm (10.05 10.28 3.09 5.84, 20.95 31.98 4.72 9.01, 21.98 29.80 3.51 12.84)’ | linestring with z coordinates and measures
polygon | ‘polygon empty’ | empty polygon
polygon | ‘polygon z empty’ | empty polygon with z coordinates
polygon | ‘polygon m empty | empty polygon with measures
polygon | ‘polygon zm empty’ | empty polygon with z coordinates and measures
polygon | ‘polygon (( 10 10, 10 20, 20 20, 20 15, 10 10))’ | polygon
polygon | ‘polygon z ((10 10 3, 10 20 3, 20 20 3, 20 15 4, 10 10 3))’ | polygon with z coordinates
polygon | ‘polygon m (( 10 10 8, 10 20 9, 20 20 9, 20 15 9, 10 10 8 ))’ | polygon with measures
polygon | ‘polygon zm (( 10 10 3 8, 10 20 3 9, 20 20 3 9, 20 15 4 9, 10 10 3 8 ))’ | polygon with z coordinates and measures
multipoint | ‘multipoint empty’ | empty multipoint
multipoint | ‘multipoint z empty’ | empty multipoint with z coordinates
multipoint | ‘multipoint m empty’ | empty multipoint with measures
multipoint | ‘multipoint zm empty’ | empty multipoint with z coordinates and measures
multipoint | ‘multipoint (10 10, 20 20)’ | multipoint with two points
multipoint | ‘multipoint z (10 10 2, 20 20 3)’ | multipoint with z coordinates
multipoint | ‘multipoint m (10 10 4, 20 20 5)’ | multipoint with measures
multipoint | ‘multipoint zm (10 10 2 4, 20 20 3 5)’ | multipoint with z coordinates and measures
multilinestring | ‘multilinestring empty’ | empty multilinestring
multilinestring | ‘multilinestring z empty’ | empty multilinestring with z coordinates
multilinestring | ‘multilinestring m empty’ | empty multilinestring with measures
multilinestring | ‘multilinestring zm empty’ | empty multilinestring with z coordinates and measures
multilinestring | ‘multilinestring (( 10.05 10.28 , 20.95 20.89 ),( 20.95 20.89, 31.92 21.45))’ | multilinestring
multilinestring | ‘multilinestring z ((10.05 10.28 3.4, 20.95 20.89 4.5),( 20.95 20.89 4.5, 31.92 21.45 3.6))’ | multilinestring with z coordinates
multilinestring | ‘multilinestring m ((10.05 10.28 8.4, 20.95 20.89 9.5),( 20.95 20.89 9.5, 31.92 21.45 8.6))’ | multilinestring with measures
multilinestring | ‘multilinestring zm ((10.05 10.28 3.4 8.4, 20.95 20.89 4.5 9.5), ( 20.95 20.89 4.5 9.5, 31.92 21.45 3.6 8.6))’ | multilinestring with z coordinates and measures
multipolygon | ‘multipolygon empty’ | empty multipolygon
multipolygon | ‘multipolygon z empty’ | empty multipolygon with z coordinates
multipolygon | ‘multipolygon m empty’ | empty multipolygon with measures
multipolygon | ‘multipolygon zm empty’ | empty multipolygon with z coordinates and measures
multipolygon | ‘multipolygon (((10 10, 10 20, 20 20, 20 15 , 10 10), (50 40, 50 50, 60 50, 60 40, 50 40)))’ | multipolygon
multipolygon | ‘multipolygon z (((10 10 7, 10 20 8, 20 20 7, 20 15 5, 10 10 7), (50 40 6, 50 50 6, 60 50 5, 60 40 6, 50 40 7)))’ | multipolygon with z coordinates
multipolygon | ‘multipolygon m (((10 10 2, 10 20 3, 20 20 4, 20 15 5, 10 10 2), (50 40 7, 50 50 3, 60 50 4, 60 40 5, 50 40 7)))’ <E> | multipolygon with measures
multipolygon | ‘multipolygon zm (((10 10 7 2, 10 20 8 3, 20 20 7 4, 20 15 5 5, 10 10 7 2), (50 40 6 7, 50 50 6 3, 60 50 5 4, 60 40 6 5, 50 40 7 7)))’ | multipolygon with z coordinates and measures

Informix modified well-known text representation

The Informix software provides an additional modified well-known text representation for loading text strings directly into geometry columns without filtering the string through one of the Spatial DataBlade text functions. By placing the SRID in front of the text description the resulting text string can be inserted directly into a spatial column. The load statement reads text files generated with this format and inserts the modified well-known text representation into the geometry columns.

To create a modified well-known text representation, remove the quotes and precede the text description with the SRID separated by a space.

For example, the well-known text representation of a point in the pointfromtext function:

pointfromtext(‘point zm (10.98 29.91 10.2 9.1)’,1)

would convert to

1 point zm(10.98 29.91 10.2 9.1)

The modified text string could be written into a file separated from other column values by the standard delimiter. The file can be read by the Informix SQL load statement that inserts text-formatted values into a table.


The well-known binary representation

The well-known binary representation for OGC geometry (WKBGeometry), provides a portable representation of a geometry value as a contiguous stream of bytes. It permits geometry values to be exchanged between an ODBC client and an SQL database in binary form.

Functions are provided in the SQL, JAVA, and C-API to import and export the well-known binary representation of geometry.

The well-known binary representation of geometry defines an encoding for 2D simple feature geometry as defined by the OpenGIS Simple Features Specification for SQL, and ISO 19125. This encoding does not support elevations, measures, CAD, or annotation.

The well-known binary representation is a contiguous stream of bytes. It permits geometry to be exchanged between an ODBC client and an SQL database in binary form. Because these geometry functions require the definition of C structures to map the binary representation, they’re intended for use within a 3GL program and aren’t suited to a 4GL environment.

The well-known binary representation for geometry is obtained by serializing a geometry instance as a sequence of numeric types drawn from the set {Unsigned Integer, Double} and then serializing each numeric type as a sequence of bytes using one of two well-defined, standard binary representations for numeric types (NDR, XDR). The specific binary encoding used for a geometry byte stream is described by a one-byte tag that precedes the serialized bytes. The only difference between the two encodings of geometry is byte order. The XDR encoding is big-endian, while the NDR encoding is little-endian.

Numeric type definitions

An ‘unsigned integer’ is a 32-bit (4 byte) data type that encodes a nonnegative integer in the range [0, 4294967295].

A ‘double’ is a 64-bit (8 byte) double-precision data type that encodes a double-precision number using the IEEE 754 double-precision format.

The above definitions are common to both XDR and NDR.

XDR (big endian) encoding of numeric types

The XDR representation of an unsigned integer is big-endian (most significant byte first).

The XDR representation of a double is big-endian (sign bit is first byte).

NDR (little endian) encoding of numeric types

The NDR representation of an unsigned integer is little-endian (least significant byte first).

The NDR representation of a double is little-endian (sign bit is last byte).

Conversion between the NDR and XDR representations of WKB geometry

Conversion between the NDR and XDR data types for unsigned integers and doubles is a simple operation involving reversing the order of bytes within each unsigned integer or double in the byte stream.

Description of WKBGeometry byte streams

The well-known binary representation for geometry is described below. The basic building block is the byte stream for a point that consists of two doubles. The byte streams for other geometries are built using the byte streams for geometries that have already been defined.

// Basic Type definitions

// byte : 1 byte

// uint32 : 32 bit unsigned integer (4 bytes)

// double : double precision number (8 bytes)

// Building Blocks : Point, LinearRing

Point {
double x;
double y;
};

LinearRing {
uint32 numPoints;
Point points[numPoints];
}

enum wkbGeometryType {
wkbPoint = 1,
wkbLineString = 2,
wkbPolygon = 3,
wkbMultiPoint = 4,
wkbMultiLineString = 5,
wkbMultiPolygon = 6,
wkbGeometryCollection = 7
};

enum wkbByteOrder {

wkbXDR = 0, // Big Endian

wkbNDR = 1 // Little Endian

};

WKBPoint {
byte
 byteOrder;
uint32        wkbType;
 // 1
Point
 point;
}

WKBLineString {
byte
 byteOrder;
uint32        wkbType;
 // 2
uint32        numPoints;
Point
 points[numPoints];
}

WKBPolygon {
byte
 byteOrder;
uint32        wkbType;
 // 3
uint32        numRings;
LinearRing    rings[numRings];
}

WKBMultiPoint {
byte
 byteOrder;
uint32        wkbType;

 // 4
uint32        num_wkbPoints;
WKBPoint         WKBPoints[num_wkbPoints];
}

WKBMultiLineString   {
byte
 byteOrder;
uint32        wkbType;
 // 5
uint32        num_wkbLineStrings;
WKBLineString WKBLineStrings[num_wkbLineStrings];
}

wkbMultiPolygon {
byte
 byteOrder;
uint32        wkbType;
 // 6
uint32        num_wkbPolygons;
WKBPolygon    wkbPolygons[num_wkbPolygons];
}

WKBGeometry  {
union {
WKBPoint
 point;
WKBLineString
 linestring;
WKBPolygon
 polygon;
WKBGeometryCollection   collection;
WKBMultiPoint
 mpoint;
WKBMultiLineString      mlinestring;
WKBMultiPolygon         mpolygon;
}
};

WKBGeometryCollection {
byte
 byte_order;
uint32        wkbType;
 // 7
uint32        num_wkbGeometries;
WKBGeometry      wkbGeometries[num_wkbGeometries]
}

Well-known binary representation for a geometry object in NDR format (B=1) of type polygon (T=3) with two linears (NR = 2) and each ring having three points (NP = 3).

Assertions for well-known binary representation for geometry

The well-known binary representation for geometry is designed to represent instances of the geometry types described in the geometry object model and in the OpenGIS Abstract Specification.

These assertions imply the following for rings, polygons, and multipolygons:

  • Linear rings—Rings are simple and closed, which means that linear rings may not self intersect.
  • Polygons—No two linear rings in the boundary of a polygon may cross each other. The linear rings in the boundary of a polygon may intersect, at most, at a single point but only as a tangent.
  • Multipolygons—The interiors of two polygons that are elements of a multipolygon may not intersect. The boundaries of any two polygons that are elements of a multipolygon may touch at only a finite number of points.


Binary Geometry Format

ArcSDE compressed binary representation

The ArcSDE compressed binary representation of geometry is used to store binary geometry. This binary representation requires that an offset and scale be applied to the coordinates of a geometric object - the resulting integer coordinates are then encoded using the delta from the previous coordinate. Appended to the geometric object is an optional CAD and ANNO object.

Coordinate values

Internally, all ArcSDE coordinates are 32-bit positive integers between 0 and 2147483647. This format provides better data accuracy, data integrity, and processing speed than real numbers. Developers should be aware of the internal integer representation, because it is possible to attempt to store a number that is too large in a layer. In that case, the ArcSDE software returns the error SE_COORD_OUT_OF_BOUNDS. Developers never need to work directly with the integer values.

Because real-world coordinates are often neither positive nor integer, ArcSDE data requires an offset distance (a false origin) to ensure numbers are positive and a minimum resolution multiplier (called the scale) to convert real numbers to integers.

Logical representation of ArcSDE feature geometry

This section describes the logical view of how an ArcSDE feature’s geometry is represented in a binary stream. There are three issues to present: coordinate ordering, multipart delineation, and point compression.

Coordinate ordering

An ArcSDE feature’s geometry is represented by one or more coordinates. The coordinates consist of, at a minimum, an x,y pair. A feature might also have z (zed) or measure (m) values associated with each x,y pair. Each of these values, x, y, z, and m, is represented internally as 32-bit integers. The order in which these coordinates are stored in a binary stream is x/y, x/y, ..., x/y, z, z, ..., z, m, m, ..., m (again, with the z- and m-values being optional). A one-to-one correspondence exists between the z- or m-values and the x,y pairs. In other words, for each z-coordinate or measure value present in the feature geometry, an x,y pair exists.

Multipart delineation

An ArcSDE feature may have one or more geometric parts (a single-part or multipart feature). Each part is delineated by a separator coordinate within the binary stream which represents a feature’s geometry. The separator coordinate has a predefined value. Beginning with a feature’s second part, the separator is the first coordinate of the part’s ordered coordinate list. The coordinate list of a multipart feature is stored in a binary stream as x/y, x/y, ..., x/y, <separator>, x/y, x/y, ..., x/y, z, z, ..., z, <separator>, z, z, ..., z, m, m, ..., m, <separator>, m, m, ..., m (again, the z- and m-values are optional).

Point compression

Within the binary stream, each of the x/y, z, and measure values are compressed in a byte-order independent manner. The compression of feature coordinates is done in two steps. First, all values are converted to a relative-offset scheme, then each relative-offset value is packed into the minimum number of bytes required to represent the value.

Physical representation of ArcSDE feature geometry

This section describes the physical view of how an ArcSDE feature’s geometry is stored in a binary stream. There are three issues to present: separators, point compression, and the binary layout.

Part separators

The physical representation of the separators which delineate the parts of a feature is an x-value of negative one (-1), a y-value of zero (0), and the z- and m-values are undefined. Separators do not require any special logic when being compressed.

Point compression

The compression or decompression of the coordinates stored in the binary stream is a two step process: the conversion to/from the relative-offset scheme and the packing/unpacking of bytes. To compress coordinates, the values are converted to relative-offsets, then packed into a byte array. To decompress coordinates, the byte array is unpacked, then the values are converted to absolute values. Each step is described below.

Relative-offset value calculation

The goal of converting coordinate values to a relative offset scheme is to make the values as small as possible so that they require fewer bits to represent them. In an array of relative-offset values, the first value is an absolute value (stored as a 32-bit integer) while each subsequent value is the offset, or difference, from the previous absolute value. Therefore, given N absolute values, the relative-offset values are calculated by:

relative_value[0] = absolute_value[0]

relative_value[1] = absolute_value[1] - absolute_value[0]

[...]

relative_value[N-2] = absolute_value[N-2] - absolute_value[N-3]

relative_value[N-1] = absolute_value[N-1] - absolute_value[N-2]

Given N relative values, the absolute values are calculated by:

absolute_value[0] = relative_value[0]

absolute_value[1] = absolute_value[0] + relative_value[1]

[...]

absolute_value[N-2] = absolute_value[N-3] + relative_value[N-2]

absolute_value[N-1] = absolute_value[N-2] + relative_value[N-1]

This method is efficient because points within a feature are usually close to neighboring points.

Packing integer values

Relative-offset values are generally represented with fewer bytes than absolute values. The relative-offset values are packed into a series of bytes. The high-order bit of each packed byte acts as a control bit to indicate whether the (integer) value continues into the next byte. For example, if an integer value is packed into three bytes, the high-order bit of bytes one and two is set (indicating the integer value continues into the following byte) and the high-order bit of byte three is not set (indicating that it is the last byte of the integer value). The second bit of the first byte acts as a sign bit. So the first packed byte contains one control bit, one sign bit, and six data bits. All subsequent packed bytes contain one control bit and seven data bits. Because fewer bits are available to represent an integer, up to five packed bytes could be required to represent an integer value (this is a worst case scenario and would only occur when the integer value was greater than 134,217,727).

The record layout, by byte, for packed unsigned integers

Byte Number Bit(s) Value

0 0 Control bit (0 = last byte, 1 = integer value continues into the next byte)

0 1 Sign bit (0 = positive integer, 1 = negative integer)

0 2 – 7 Next low-order six bits of the integer

1 – 4 0 Control bit (0 = last byte, 1 = integer value continues into the next byte)

1 – 4 1 – 7 Next low-order seven bits of the integer

Integer values are packed by taking the low-order six or seven bits (by performing a binary OR operation between the value to be packed and the hexadecimal values 3F or 7F, respectively), depending on which packed byte the value is being stored in, and storing them in the packed byte. The original value is then shifted to the right (i.e., dividing the value) by six or seven bits. If the new, shifted value is nonzero, then the control bit in the packed byte is set, and the steps are repeated again. This process continues until the shifted value is zero. Unpacking is done in a similar manner, but in the reverse order.

Binary layout

In addition to the compressed coordinate values, additional information is stored within the byte stream to provide information about the stored coordinate values. The first eight bytes of the byte stream are reserved for the additional information. Currently, two pieces of additional information are stored within the byte stream: the size of the compressed point byte stream and the dimension of the stored coordinates. Both values are stored as packed integer values (as described previously). The length of the coordinate byte stream is defined as the total length minus the reserved eight bytes (i.e., the size of the compressed point byte stream) and is stored in the first five bytes.

The coordinate dimension indicates whether z- and m-values are present in the byte stream. The dimension is a one-byte bit vector and is stored in the sixth byte of the byte stream. The first low-order bit of the dimension vector indicates whether z-values are present, and the second low-order bit indicates whether measure values are present. If the bit value is turned off (zero), then the corresponding values are not present in the byte stream. If the bit value is turned on (one), then the corresponding values are present. For example, the dimension vector for two-dimensional coordinates has a hexadecimal value of zero (0), for three-dimensional coordinates a value of one (1), for measured two-dimensional coordinates a value of two (2), and for three-dimensional coordinates with measures a value of three (3). The next two bytes of the byte stream are not used currently, but are reserved for future use. The compressed coordinate values are stored in the byte stream following the reserved eight bytes.

The binary representation of a feature’s geometry in ArcSDE

Byte Number Use

0 – 4 Coordinate stream length, packed integer format (byte stream length minus 8 reserved bytes).

5 Coordinate dimension mask, packed integer format.

6 – 7 Reserved, but currently unused.

8+ Compressed coordinate values, packed relative-offset format.

Back


ESRI shape representation

The ESRI shape representation is the geometry representation used in shape files. Shape files can be used to interchange data with many GIS systems, and have become a defacto standard in the Industry.
This document defines the organization of the geometry object. Geometry objects can be 2D, 2D plus elevations, 2D plus measures, or 2D plus elevations and measures. The shape type is the first byte, and is defined as follows - all other geometric properties follow based on the shape type:

A shape type of 0 indicates a null shape with no geometric data for the shape.

Value Shape Type
0 Null Shape
1 Point

3 PolyLine

5 Polygon

8 MultiPoint

11 PointZ

13 PolyLineZ

15 PolygonZ

18 MultiPointZ

21 PointM

23 PolyLineM

25 PolygonM

28 MultiPointM

Note Shape types not specified above (2, 4, 6, etc.) are reserved for future use.

Shape types in XY space

Point

A point consists of a pair of double-precision coordinates in the order X, Y.
Point Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 1 | Integer | 1 | Little
Byte 4 | X | X | Double | 1 | Little
Byte 12 | Y | Y | Double | 1 | Little

MultiPoint

A MultiPoint consists of a collection of points. The bounding box is stored in the order Xmin, Ymin, Xmax, Ymax.
MultiPoint Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 8 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumPoints | NumPoints | Integer | 1 | Little
Byte 40 | Points | Points | Point | NumPoints | Little

PolyLine

A PolyLine is an ordered set of vertices that consists of one or more parts. A part is a connected sequence of two or more points. Parts may be connected to and may intersect one another.
Because this specification does not forbid consecutive points with identical coordinates, shapefile readers must handle such cases. On the other hand, the degenerate zero length parts that might result are not allowed.

The fields for a PolyLine are described in detail below:

Box: The bounding box for the PolyLine stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of parts in the PolyLine.

NumPoints: The total number of points for all parts.

Parts: An array of length NumParts. Stores, for each PolyLine, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each part in the PolyLine are stored end to end. The points for part 2 follow the points for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the points array between parts.

PolyLine Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 3 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little
Note X = 44 + 4 * NumParts

Polygon

A polygon consists of one or more rings. A ring is a connected sequence of four or more points that form a closed, non-self-intersecting loop. A polygon may contain multiple outer rings. The order of vertices or orientation for a ring indicates which side of the ring is the interior of the polygon. The neighborhood to the right of an observer walking along the ring in vertex order is the neighborhood inside the polygon. Vertices of rings defining holes in polygons are in a counterclockwise direction. Vertices for a single, ringed polygon are, therefore, always in clockwise order. The rings of a polygon are referred to as its parts.
Because this specification does not forbid consecutive points with identical coordinates, shapefile readers must handle such cases. On the other hand, the degenerate zero length or zero area parts that might result are not allowed.

The fields for a polygon are described in detail below:

Box: The bounding box for the polygon stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of rings in the polygon.

NumPoints: The total number of points for all rings.

Parts: An array of length NumParts. Stores, for each ring, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each ring in the polygon are stored end to end. The points for ring 2 follow the points for ring 1, and so on. The parts array holds the array index of the starting point for each ring. There is no delimiter in the points array between rings.

The following are important notes about polygon shapes.

· The rings are closed (the first and last vertex of a ring must be the same).

· The order of rings in the points array is not significant.

· Polygons stored in a shapefile must be clean.

· A clean polygon is one that has no self-intersections. This means that a segment belonging to one ring may not intersect a segment belonging to another ring. The rings of a polygon can touch each other at vertices but not along segments. Colinear segments are considered intersecting.

· A clean polygon is one that has the inside of the polygon on the ‘correct’ side of the line that defines it. The neighborhood to the right of an observer walking along the ring in vertex order is the inside of the polygon. Vertices for a single, ringed polygon are, therefore, always in clockwise order. Rings defining holes in these polygons have a counterclockwise orientation. ‘Dirty’ polygons occur when the rings that define holes in the polygon also go clockwise, which causes overlapping interiors.

A sample polygon instance

This figure shows a polygon with one hole and a total of eight vertices.

For this example, NumParts equals 2 and NumPoints equals 10. Note that the order of the points for the donut (hole) polygon is reversed below.

Polygon Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 5 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little

Note X = 44 + 4 * NumParts

Measured shape types in XY space

PointM

A PointM consists of a pair of double-precision coordinates in the order X, Y, plus a measure M.
PointM Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 21 | Integer | 1 | Little
Byte 4 | X | X | Double | 1 | Little
Byte 12 | Y | Y | Double | 1 | Little
Byte 20 | M | M | Double | 1 | Little

MultiPointM

The fields for a MultiPointM are
Box: The bounding box for the MultiPointM stored in the order Xmin, Ymin, Xmax, Ymax.

NumPoints: The number of Points.

Points: An array of Points of length NumPoints.

NumMs: The number of Measures that follow. NumMs can only have two values: zero if no Measures follow this field, or equal to NumPoints if Measures are present.

M Range: The minimum and maximum measures for the MultiPointM stored in the order Mmin, Mmax.

M Array: An array of Measures of length NumPoints.

MultiPointM Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 28 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumPoints | NumPoints | Integer | 1 | Little
Byte 40 | Points | Points | Point | NumPoints | Little
Byte X | NumMs | NumMs | Integer | 1 | Little
Byte X+4* | Mmin | Mmin | Double | 1 | Little
Byte X+12* | Mmax | Mmax | Double | 1 | Little
Byte X+20* | M Array | M Array | Double | NumPoints | Little

* optional

Note X = 40 + (16 * NumPoints).

PolyLineM

A shapefile PolyLineM consists of one or more parts. A part is a connected sequence of two or more points. Parts may or may not be connected to one another. Parts may or may not intersect one another.
The fields for a PolyLineM are

Box: The bounding box for the PolyLineM stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of parts in the PolyLineM.

NumPoints: The total number of points for all parts.

Parts: An array of length NumParts. Stores, for each part, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each part in the PolyLineM are stored end to end. The points for part 2 follow the points for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the points array between parts.

NumMs: The number of Measures that follow. NumMs can only have two values: zero if no Measures follow this field, or equal to NumPoints if Measures are present.

M Range: The minimum and maximum measures for the PolyLineM stored in the order Mmin, Mmax.

M Array: An array of length NumPoints. The measures for each part in the PolyLineM are stored end to end. The measures for part 2 follow the measures for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the measure array between parts.

PolyLineM Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 13 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little
Byte Y | NumMs | NumMs | Integer | 1 | Little
Byte Y+4* | Mmin | Mmin | Double | 1 | Little
Byte Y+12* | Mmax | Mmax | Double | 1 | Little
Byte Y+20* | M Array | M Array | Double | NumPoints | Little

*optional

Note X = 44 + (4 * NumParts), Y = X + (16 * NumPoints)

PolygonM

A PolygonM consists of a number of rings. A ring is a closed, non-self-intersecting loop. Note that intersections are calculated in XY space, not in XYM space. A PolygonM may contain multiple outer rings. The rings of a PolygonM are referred to as its parts.
The fields for a PolygonM are

Box: The bounding box for the PolygonM stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of rings in the PolygonM.

NumPoints: The total number of points for all rings.

Parts: An array of length NumParts. Stores, for each ring, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each ring in the PolygonM are stored end to end. The points for Ring 2 follow the points for Ring 1, and so on. The parts array holds the array index of the starting point for each ring. There is no delimiter in the points array between rings.

NumMs: The number of measures that follow. NumMs can only have two values: zero if no measures follow this field, or equal to NumPoints if measures are present.

M Range: The minimum and maximum measures for the PolygonM stored in the order Mmin, Mmax.

M Array: An array of length NumPoints. The measures for each ring in the PolygonM are stored end to end. The measures for Ring 2 follow the measures for Ring 1, and so on. The parts array holds the array index of the starting measure for each ring. There is no delimiter in the measure array between rings.

The following are important notes about PolygonM shapes.

· The rings are closed (the first and last vertex of a ring must be the same).

· The order of rings in the points array is not significant.

PolygonM Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 15 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little
Byte Y | NumMs | NumMs | Integer | 1 | Little
Byte Y+4* | Mmin | Mmin | Double | 1 | Little
Byte Y+12* | Mmax | Mmax | Double | 1 | Little
Byte Y+20* | M Array | M Array | Double | NumPoints | Little

*optional

Note X = 44 + (4 * NumParts), Y = X + (16 * NumPoints)

Shape types in XYZ space

PointZ

A PointZ consists of a triplet of double-precision coordinates in the order X, Y, Z plus a measure.
PointZ Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 11 | Integer | 1 | Little
Byte 4 | X | X | Double | 1 | Little
Byte 12 | Y | Y | Double | 1 | Little
Byte 20 | Z | Z | Double | 1 | Little
Byte 28 | Measure | M | Double | 1 | Little

MultiPointZ

A MultiPointZ represents a set of PointZs, as follows:
The bounding box is stored in the order Xmin, Ymin, Xmax, Ymax.

The bounding Z range is stored in the order Zmin, Zmax. Bounding M range is stored in the order Mmin, Mmax.

MultiPointZ Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 18 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumPoints | NumPoints | Integer | 1 | Little
Byte 40 | Points | Points | Point | NumPoints | Little
Byte X | Zmin | Zmin | Double | 1 | Little
Byte X+8 | Zmax | Zmax | Double | 1 | Little
Byte X+16 | Zarray | Zarray | Double | NumPoints | Little
Byte Y | NumMs | NumMs | Integer | 1 | Little
Byte Y+4* | Mmin | Mmin | Double | 1 | Little
Byte Y+12* | Mmax | Mmax | Double | 1 | Little
Byte Y+20* | M Array | M Array | Double | NumPoints | Little

* optional

Note X = 40 + (16 * NumPoints); Y = X + 16 + (8 * NumPoints)

PolyLineZ

A PolyLineZ consists of one or more parts. A part is a connected sequence of two or more points. Parts may or may not be connected to one another. Parts may or may not intersect one another.
The fields for a PolyLineZ are described in detail below:

Box: The bounding box for the PolyLineZ stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of parts in the PolyLineZ.

NumPoints: The total number of points for all parts.

Parts: An array of length NumParts. Stores, for each part, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each part in the PolyLineZ are stored end to end. The points for part 2 follow the points for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the points array between parts.

Z Range: The minimum and maximum Z values for the PolyLineZ stored in the order Zmin, Zmax.

Z Array: An array of length NumPoints. The Z values for each part in the PolyLineZ are stored end to end. The Z values for part 2 follow the Z values for part 1, and so on. The parts array holds the array index of the starting point for each part. There is no delimiter in the Z Array between parts.

NumMs: The number of measures that follow. NumMs can only have two values: zero if no Measures follow this field, or equal to NumPoints if measures are present.

M Range: The minimum and maximum measures for the PolyLineZ stored in the order Mmin, Mmax.

M Array: An array of length NumPoints. The measures for each part in the PolyLineZ are stored end to end. The measures for part 2 follow the measures for part 1, and so on. The parts array holds the array index of the starting measure for each part. There is no delimiter in the measure array between parts.

PolyLineZ Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 13 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little
Byte Y | Zmin | Zmin | Double | 1 | Little
Byte Y+8 | Zmax | Zmax | Double | 1 | Little
Byte Y+16 | Z Array | Z Array | Double | NumPoints | Little
Byte Z | NumMs | NumMs | Integer | 1 | Little
Byte Z+4* | Mmin | Mmin | Double | 1 | Little
Byte Z+12* | Mmax | Mmax | Double | 1 | Little
Byte Z+20* | M Array | M Array | Double | NumPoints | Little

* optional

Note X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 * NumPoints)

PolygonZ

A PolygonZ consists of a number of rings. A ring is a closed, non-self-intersecting loop. A PolygonZ may contain multiple outer rings. The rings of a PolygonZ are referred to as its parts.
The fields for a PolygonZ are

Box: The bounding box for the PolygonZ stored in the order Xmin, Ymin, Xmax, Ymax.

NumParts: The number of rings in the PolygonZ.

NumPoints: The total number of points for all rings.

Parts: An array of length NumParts. Stores, for each ring, the index of its first point in the points array. Array indexes are with respect to 0.

Points: An array of length NumPoints. The points for each ring in the PolygonZ are stored end to end. The points for ring 2 follow the points for ring 1, and so on. The parts array holds the array index of the starting point for each ring. There is no delimiter in the points array between rings.

Z Range: The minimum and maximum Z values for the arc stored in the order Zmin, Zmax.

Z Array: An array of length NumPoints. The Z values for each ring in the PolygonZ are stored end to end. The Z values for ring 2 follow the Z values for ring 1, and so on. The parts array holds the array index of the starting Z value for each ring. There is no delimiter in the Z value array between rings.

NumMs: The number of measures that follow. NumMs can only have two values: zero if no measures follow this field, or equal to NumPoints if measures are present.

M Range: The minimum and maximum measures for the PolygonZ stored in the order Mmin, Mmax.

M Array: An array of length NumPoints. The measures for each ring in the PolygonZ are stored end to end. The measures for ring 2 follow the measures for ring 1, and so on. The parts array holds the array index of the starting measure for each ring. There is no delimiter in the measure array between rings.

The following are important notes about PolygonZ shapes.

· The rings are closed (the first and last vertex of a ring must be the same).

· The order of rings in the points array is not significant.

PolygonZ Byte Stream Contents

Position | Field | Value | Type | Number | Order
Byte 0 | Shape Type | 15 | Integer | 1 | Little
Byte 4 | Box | Box | Double | 4 | Little
Byte 36 | NumParts | NumParts | Integer | 1 | Little
Byte 40 | NumPoints | NumPoints | Integer | 1 | Little
Byte 44 | Parts | Parts | Integer | NumParts | Little
Byte X | Points | Points | Point | NumPoints | Little
Byte Y | Zmin | Zmin | Double | 1 | Little
Byte Y+8 | Zmax | Zmax | Double | 1 | Little
Byte Y+16 | Z Array | Z Array | Double | NumPoints | Little
Byte Z | NumMs | NumMs | Integer | 1 | Little
Byte Z+4* | Mmin | Mmin | Double | 1 | Little
Byte Z+12* | Mmax | Mmax | Double | 1 | Little
Byte Z+20* | M Array | M Array | Double | NumPoints | Little

* optional

Note X = 44 + (4 * NumParts), Y = X + (16 * NumPoints), Z = Y + 16 + (8 * NumPoints)


Storing raster data

A raster is a rectangular array of equally spaced cells, which taken as a whole represent thematic, spectral or picture data. Raster data can represent everything from qualities of land surface such as elevation or vegetation, to satellite images, scanned maps, and photographs.
You are probably familiar with raster formats such as TIFF (Tagged Image File Format) , JPEG (Joint Photographic Experts Group) , and GIF (Graphics Interchange Format) that your internet browser renders. These rasters are composed one or more bands. Each band is segmented into a grid of square pixels. Each pixel is assigned a value that reflects the information it represents at a particular position.
For an expanded discussion of the type of raster data supported by ESRI products review chapter 9 'Cell-based modeling with rasters' in Modeling our world.
ArcSDE stores raster datasets similar to the way it stores a geometry object. A raster column is added to a business table and each value of the raster column contains a reference to a raster stored in a separate raster table. Therefore each row of a business table references an entire raster.
Applications build on the basic SDE Raster support to provide raster maps or catalogs of raster images.

Raster Maps

A Raster Map is a collection of individual rasters that have been rectified and merged into one very large, continuous raster. A Raster Map is typically geo-referenced, and appears to the application to be a single raster from which any desired rectangular portion can be extracted and displayed. USGS Digital OrthoQuads or DEMs merged into a single large continuous raster is an example of a Raster Map.
Raster Maps may be implemented as a business table with a single row; ArcInfo 8.1 supports these Raster Maps. Collections of Raster Maps in a single business table is a Raster Catalog, discussed below.

Raster Maps are collections of rasters that form a continuous mosaic, portions of which are accessed as needed.

Raster Catalogs

A Raster Catalog is a collection of rasters with thematic properties. The rasters may be geo-referenced, with associated footprint polygons that can be spatially searched. In a Raster Catalog, each raster is treated as value in the business table.

Raster Catalogs with collections of rasters in the same coordinate system that can be searched by their footprint.

Raster Catalogs may contain rasters that are not geo-referenced, such as house photos or pictures of people.

Raster Concepts

Raster Column

A property in a business table that contains raster values. Each raster column is listed in the RASTER_COLUMNS metadata table.

Raster Value

The value in a raster column is called a raster. A raster represents a collection of raster bands that are generally referenced together. An RGB image has three raster bands, one each for red, green, and blue, and will become a raster stack in SDE with three raster bands.

Raster Band

A single layer in a raster value that has a specified pixel depth. ArcSDE stores the raster bands in the raster bands table. ArcSDE joins the raster bands table to the raster table on the raster_id column. The raster bands table's raster_id column is a foreign key reference to the raster table's raster_id primary key.

Raster Cell

An individual cell in a raster band. The raster cell depth is the resolution of an individual cell value. Raster cell depth ranges from a single binary value to complex float values.

Raster Blocks

The raster blocks table stores the pixels of each raster band. ArcSDE tiles the pixels into blocks according to a user defined dimension. ArcSDE does not have a default dimension, however applications that store raster data in ArcSDE do. ArcToolbox and ArcCatalog for example use a default raster block dimensions of 128 by 128 pixels per block. The dimensions of the raster block along with the compression method, if one is specified, determine the storage size of each raster block. You should select raster block dimensions that combined with the compression method allows each row of the raster block table to fit within an Oracle data block. For Oracle databases storing raster data should be created with a 16 KB Oracle data block size. See Appendix A 'Estimating the size of your tables and indexes' for more information of estimating the size of your raster tables and indexes.
The raster blocks table contains the rasterband_id column which is a foreign key reference to the raster bands table's rasterband_id primary key. ArcSDE joins these tables together on the primary/foreign key reference when accessing the blocks of the raster bands.

Raster Pyramids

ArcSDE populates the raster blocks table according to a declining resolution pyramid. The height of the pyramid is determined by the number of levels specified by application. The application such as ArcToolbox or ArcCatalog may allow you to define the levels or it may request that ArcSDE calculate them, or it may offer both possible choices.
The pyramid begins at the base, or level 0 which contains the original pixels of the image. The pyramid proceeds toward the apex by coalescing four pixels from the previous level into a single pixel at the current level. This process continues until less than four pixels remain or until ArcSDE exhausts the defined number of levels.
The apex of the pyramid is reached when the uppermost level has less than four pixels. The additional levels of the pyramid increase the number of raster block table rows by one third. However, since it is possible for the user to specify the number of levels, the true apex of the pyramid may not be obtained, limiting the number of records added to the raster blocks table.

When you build a pyramid more rasters are created by progressively downsampling the previous level by a factor of two until the apex. As the application zooms out and the raster cells grow smaller than the resolution threshold, ArcSDE selects a higher level of the pyramid. The purpose of the pyramid is to optimize display performance.

The pyramid allows ArcSDE to provide the application with a constant resolution of pixel data regardless of the rendering window's scale. Data of a large raster transfers quicker to the client when a pyramid exists, since ArcSDE can transfer fewer cells of a reduced resolution.

Raster Band Statistics

ArcSDE automatically stores any existing image meta-data such as image statistics, colormap or bit-masks in the raster auxiliary table. The rasterband_id column of the raster auxiliary table is a foreign key reference to the primary key of the raster bands table. ArcSDE joins the two tables on this primary/foreign key reference when accessing a raster band's meta-data.

Raster schema

When you import a raster into an ArcSDE database, ArcSDE adds a raster column to the business table of your choice. You may name the raster column whatever you like, so long as it conforms to Oracle's column naming convention. ArcSDE restricts one raster column per business table.
The raster column is a foreign key reference to the raster_id column of the raster table created during the addition of the raster column. Also joined to the raster table's raster_id primary key, the raster bands table stores the bands of the image. The raster auxiliary table joined one-to-one to the raster bands table by rasterband_id, stores the meta-data of each raster band. The rasterbands_id also joins the raster band's table to the raster blocks table in a many-to-one relationship. The raster blocks table rows store blocks of pixels, determined by the dimensions of the block.

When ArcSDE adds a raster column to a table it records that column in the sde user's raster_columns table. The rastercolumn_id is used in the creation the table names of the raster, raster bands, raster auxiliary and raster blocks table.

The sections that follow describe the schema of the tables associated with the storage of raster data. refer to figure B.3 for an illustration of these tables and the manner in which they are associated with one another.

RASTER_COLUMNS table

When you add a raster column to a business table, ArcSDE adds a record to the RASTER_COLUMNS system table maintained in the sde user's schema. ArcSDE also creates four tables to store the raster images and meta-data associated with each one.

NAME                   DATA TYPE                 NULL?
rastercolumn_id        SE_INTEGER_TYPE           NOT NULL
description            SE_STRING_TYPE(65)        NULL
database_name          SE_STRING_TYPE(32)        NULL
owner                  SE_STRING_TYPE(32)        NOT NULL
table_name             SE_STRING_TYPE(160)       NOT NULL
raster_column          SE_STRING_TYPE(32)        NOT NULL
cdate                  SE_DATE_TYPE              NOT NULL
config_keyword         SE_STRING_TYPE(32)        NULL
minimum_id             SE_INTEGER_TYPE           NULL
base_rastercolumn_id   SE_INTEGER_TYPE           NOT NULL
rastercolumn_mask      SE_INTEGER_TYPE           NOT NULL
srid                   SE_INTEGER_TYPE           NULL

Raster columns table

  • rastercolumn_id - the table's primary key.
  • description - The description of the raster table.
  • database_name - Field is always NULL for Oracle.
  • owner - The owner of raster column's business table.
  • table_name - The business table name.
  • raster_column - The raster column name.
  • cdate - The date the raster column was added to the business table.
  • config_keyword - The DBTUNE configuration keyword whose storage parameters determine how the tables and indexes of the raster are stored in the Oracle database. For more information on DBTUNE configuration keywords and their storage parameters review 'Chapter 3 Configuring DBTUNE storage parameters.'
  • minimum_id - Defined during the creation of the raster, establishes value of the raster table's raster_id column.
  • base_rastercolumn_id - If a view of the business table is created that includes the raster column an entry is added to the RASTER_COLUMNS table. The raster column entry of the view will have its own rastercolumn_id. The base_rastercolumn_id will be the rastercolumn_id of the business table used to create the view. This base_rastercolumn_id maintains referential integrity to the business table. It ensures that actions performed on the business table raster column are reflected in the view. For example, if the business tables raster column is dropped it will also be dropped from the view (essentially removing the view's raster column entry from the RASTER_COLUMNS table).
  • rastercolumn_mask - currently not used, maintained for future use.
  • srid - The spatial reference ID (srid) is a foreign key reference to the SPATIAL_REFERENCES table. For images that can be geo-referenced, the srid establishes the X and Y offset translation factor and the scale factor for storage of the image coordinates into the 32-bit integer ArcSDE coordinate storage system. It also stores the coordinate reference system the image was created under.

Business table

In the example that follows, the fictitious BUILD_FOOTPRINTS business table contains the raster column house_image. This is a foreign key reference to the raster table created in the users schema. In this case the raster table contains a record for each raster of a house. It should be noted that images of houses cannot be geo-referenced. Therefore the SRID column of the RASTER_COLUMN record for this raster is NULL.

NAME                        DATA TYPE                 NULL?
building_id                 SE_INTEGER_TYPE           NOT NULL
building_footprint          SE_INTEGER_TYPE           NOT NULL
house_picture               SE_INTEGER_TYPE           NOT NULL

BUILDING_FOOTPRINTS business table with house image raster column

  • building_id - the table's primary key
  • building_footprints - a spatial column and foreign key reference to a feature table containing the building footprints.
  • house_image - a raster column and foreign key reference to a raster table containing the images of the houses located on each building footprint.

Raster table (SDE_RAS_<rastercolumn_id>)

The raster table, created as SDE_RAS_<raster_column_id> in the Oracle database, stores a record for each image stored in raster column. The raster_column_id is assigned by ArcSDE whenever a raster column is created in the database. A record for each raster column in the database is stored in the ArcSDE RASTER_COLUMNS system table maintained in the sde user's schema.

NAME              DATA TYPE             NULL?
raster_id         SE_INTEGER_TYPE       NOT NULL
raster_flags      SE_INTEGER_TYPE       NULL
description       SE_STRING_TYPE(65)    NULL

Raster description table schema (SDE_RAS_<raster_column_id>.

  • raster_id - The primary key of the raster table and unique sequential identifier of each image stored in the raster table.
  • raster_flags - A bit map set according to the characteristics of stored image.
  • description - A text description of the image (not implemented at ArcSDE 8.1)

Raster band table (SDE_BND_<rastercolumn_id>)

Each image referenced in a raster may be subdivided into one or more raster bands. The raster band table, created as SDE_BND_<rastercolumn_id>, stores the raster bands of each image stored in the raster table. The raster_id column of the raster band table is a foreign key reference to the raster table's raster_id primary key. The rasterband_id column is raster band table's primary key. Each raster band in the table is uniquely identified by the sequential rasterband_id.

NAME               DATA TYPE               NULL?
rasterband_id      SE_INTEGER_TYPE         NOT NULL
sequence_nbr       SE_INTEGER_TYPE         NOT NULL
raster_id          SE_INTEGER_TYPE         NOT NULL
name               SE_STRING_TYPE(65)      NULL
band_flags         SE_INTEGER_TYPE         NOT NULL
band_width         SE_INTEGER_TYPE         NOT NULL
band_height        SE_INTEGER_TYPE         NOT NULL
band_types         SE_INTEGER_TYPE         NOT NULL
block_width        SE_INTEGER_TYPE         NOT NULL
block_height       SE_INTEGER_TYPE         NOT NULL
block_origin_x     SE_FLOAT_TYPE           NOT NULL
block_origin_y     SE_FLOAT_TYPE           NOT NULL
eminx              SE_FLOAT_TYPE           NOT NULL
eminy              SE_FLOAT_TYPE           NOT NULL
emaxx              SE_FLOAT_TYPE           NOT NULL
emaxy              SE_FLOAT_TYPE           NOT NULL
cdate              SE_DATE_TYPE            NOT NULL
mdate              SE_DATE_TYPE            NOT NULL

Raster band table schema

  • rasterband_id - The primary key of the raster band table that uniquely identifies each raster band.
  • sequence_nbr - An optional sequential number that can be combined with the raster_id as a composite key as a second way to uniquely identify the raster band.
  • raster_id - The foreign key reference to the raster tables primary key. Uniquely identifies the raster band when combined with the sequence_nbr as a composite key.
  • name - The name of the raster band.
  • band_flags - A bit map set according to the characteristics of the raster band.
  • band_width - The pixel width of the band.
  • band_height - The pixel height of the band.
  • band_types - A bitmap band compression data.
  • block_width - The pixel width of the band's tiles.
  • block_height - The pixel height of the band's tiles.
  • block_origin_x - The left-most pixel.
  • block_origin_y - The bottom-most pixel.
If the image has a map extent the optional eminx, eminy, emaxx and emaxy will hold the coordinates of the extent.
  • eminx - The band's minimum X coordinate.
  • eminy - The band's minimum Y coordinate.
  • emaxx - The band's maximum X coordinate.
  • emaxy - The band's maximum Y coordinate.
  • cdate - The creation date.
  • mdate -The last modification date.

Raster blocks table (SDE_BLK_<rastercolumn_id>)

Created as SDE_BLK_<rastercolumn_id>, the raster blocks table stores the actual pixel data of the raster images. ArcSDE evenly tiles the bands into blocks of pixels. Tiling the raster band data enables efficient storage and retrieval of the raster data. The raster blocks can be configured so that the records of the raster block table fit with an Oracle data block avoiding the adverse effects of data block chaining.
The rasterband_id column of the raster block table is a foreign key reference to the raster band table's primary key. A composite unique key is formed by combining the rasterband_id, rrd_factor, row_nbr, and col_nbr columns.

NAME             DATA TYPE               NULL?
rasterband_id    SE_INTEGER_TYPE         NOT NULL
rrd_factor       SE_INTEGER_TYPE         NOT NULL
row_nbr          SE_INTEGER_TYPE         NOT NULL
col_nbr          SE_INTEGER_TYPE         NOT NULL
block_data       SE_BLOB_TYPE            NOT NULL

Raster block table schema.

  • rasterband_id - The foreign key reference to the raster band tables primary key.
  • rrd_factor - The reduced resolution dataset factor, determines the position of the raster band block within the resolution pyramid. The resolution pyramid begins at 0 for the highest resolution and increases until the raster's bands lowest resolution level has been reached.
  • row_nbr - The block's row number.
  • col_nbr - The block's column number.
  • block_data - The block's tile of pixel data.

Raster band auxiliary table (SDE_AUX_<rastercolumn_id>)

The raster band auxiliary table, created as SDE_AUX_<rastercolumn_id>, stores optional raster meta-data such as the image color map, image statistics, and a bit masks used for image overlay and mosaicking. The rasterband_id column is a foreign key reference to the primary key of the raster band table.

NAME                 DATA TYPE                    NULL?
rasterband_id        SE_INTEGER_TYPE              NOT NULL
type                 SE_INTEGER_TYPE              NOT NULL
object               SE_BLOB_TYPE                 NOT NULL

Raster auxiliary table schema

  • rasterband_id - The foreign key reference to the raster band tables primary key.
  • type - A bitmap set according to the characteristics of the data stored in the object column.
  • object - May contain the image color map, image statistics, etc…

Developer Interfaces for raster data

ArcSDE 8.1 provides a C-API for managing raster data in a relational database. See Raster_Data_Management.
The ArcSDE JAVA API will be extended to support raster data in an upcoming release. No direct SQL API for raster data access is provided.
ArcInfo 8.1 provides an interactive user interface for managing raster maps. The ArcObjects API provides developer access to this functionality.
The Erdas Imagine libraries support reading and writing raster data in ArcSDE 8.1.


Coordinate Reference and Projections

All spatial data has a coordinate system. A coordinate system locates the data in either two- or three-dimensional space. Knowing the data’s coordinate system is very important if you want to combine data from different sources. Most spatial data are in a geographic or projected (planar) coordinate system. The model for coordinate reference systems described here is based upon the OpenGIS specification and the POSC Epicentre Model V 2.1 which share a common set of basic principles. Please refer to these references for the full description of the concepts and definitions for components of a coordinate reference system.

Applications that use maps as analytical tools need the coordinate system and its properties for all spatial data. ArcSDE uses a projection management system to store projection and coordinate information in a format that is accessible to applications.

In addition to x,y planar coordinates, you can store z-coordinates or measures. The ArcSDE software assumes planar data when performing calculations. The ArcSDE software can store projected or geographic data but measurements and calculations on geographic coordinates may not be accurate.

The ArcSDE Projection Engine does the actual creation and maintenance of the coordinate system. The ArcSDE Projection Engine supports projected and geographic coordinate system with the PE_PROJCS and PE_GEOGCS structures. A PE_COORDSYS superclass also exists to manipulate active PE_PROJCS or PE_GEOGCS objects. A geographic coordinate system object contains the following information:

  • Name

  • Datum

  • Angular unit of measure

  • Prime meridian

A projected coordinate system contains the geographic coordinate system information and the following:

  • Linear unit of measure

  • Map projection

  • Projection parameters

The ArcSDE Projection Engine has many predefined coordinate systems listed in pedef.h that are accessible to the ArcSDE software by integer code. If you want to define a new coordinate system, you must use the ArcSDE Projection Engine to create it. See the ArcSDE Projection Engine section for more information. Layers actually store a text representation of the coordinate system.

Because ArcSDE data is stored internally as integers, some additional information is required to define and manipulate the data. The entire coordinate system information is stored as an opaque pointer to SE_COORDREF in the SE_SPATIALREF structure. The additional information converts between floating point world units and the integer system units.

Each spatial column (layer) has a spatial reference associated with it. Shapes inherit the spatial reference from their spatial column of origin. Shapes defined by an application have a coordinate reference object associated with them at the time they are created. A group of functions of the format SE_coordref_* work with the spatial reference system of a layer. You can retrieve or set the pieces of the SE_COORDREF structure.


What is a Coordinate System?

A coordinate system defines the location of a point on a planar or spherical surface. Without a concise definition of the coordinate system used to represent a point, it is difficult to change to a new coordinate system. Changing coordinate systems is required when integrating data from different sources into a common coordinate system.

A geographic coordinate system is a three–dimensional reference system that locates points on the Earth’s surface. The unit of measure is usually decimal degrees. A point has two coordinate values: latitude and longitude. Latitude and longitude measure angles.

Latitude is defined as the angle formed by the intersection of a line perpendicular to the Earth’s surface at a point and the plane of the Equator. Points north of the Equator have positive latitude values, while points south have negative values. Latitude values range from -90 to +90 degrees. Lines of latitude are also called parallels because a particular value of latitude forms a circle parallel to the Equator.

A meridian, or line of longitude, is formed by a plane that passes through the point and the North and South poles. The longitude value is defined by the angle between that plane and a reference plane. The reference plane is known as the prime meridian. The most common prime meridian passes through Greenwich, United Kingdom. Other examples of prime meridians in use pass through Paris and Bogotá. Longitude values range from -180 to +180 degrees.

The geographic coordinate system.

Even though geographic coordinates are angular units, ArcSDE stores and treats them as if they are planar. In this case, longitude values are considered the x-coordinate, while latitude values are the y-coordinate.

A geographic coordinate system has the following components:

• Angular units: The unit of measure on the spherical reference system.

• Spheroid: The reference spheroid for the coordinate transformation.

• Datum: Defines the relationship of the reference spheroid to the Earth’s surface.

• Prime meridian: The longitude origin of the spherical reference system.

A projected coordinate system is a two-dimensional planar surface. However, the Earth’s surface is three-dimensional. Transforming three-dimensional space onto a two-dimensional surface is called projection. Projection formulas are mathematical expressions that convert data from a geographical location (latitude and longitude) on a sphere or spheroid to a corresponding location (x and y) on a flat, two–dimensional surface.

The projected coordinate system uses two axes: the x-axis, representing east-west, and the y-axis, representing north-south. They intersect at the origin, (0,0). Locations are defined relative to the origin, using the notation (x,y), where x refers to the distance along the horizontal axis, and y refers to the distance along the vertical axis.

The projected or planar coordinate system locates points relative to the point of origin (0,0) and the x- and y-axes. Points below the x-axis or to the left of the y-axis have negative values.

A projected coordinate system inherits the components of a geographic coordinate system and also has

• Projection: The mathematical transformation used to convert from geographic coordinates to planar (projected) coordinates.

• Parameters: Parameters used in the transformation. These parameters are specific to the projection.

• Units: Linear measurement for coordinates on the plane.

The Projection Engine defines and transforms coordinate systems for the Spatial Database Engine. The Projection Engine supports predefined and application-defined coordinate systems. Predefined coordinate systems are accessed with integer codes and are listed in the pef.h file in the include directory under the ArcSDE home directory. You can create your own coordinate system by using the Projection Engine API.

The central object in the Projection Engine is the coordinate system (PE_COORDSYS). A PE_COORDSYS contains the pieces necessary to define the coordinate system.

A coordinate system is created by defining the components. Once defined, a handle is returned that can be used to reference the PE_COORDSYS object. You can create a persistent definition of a PE_COORDSYS object by storing a string definition of the object. The Projection Engine can take this string definition, and create a PE_COORDSYS from it. The following example is the string representation of the California State Plane Zone #1 which is a projected coordinate system.

PROJCS["NAD_1983_California_I",GEOGCS["GCS_North_American_1983", DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137,298.257222101]], PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]], PROJECTION["Lambert_Conformal_Conic"],PARAMETER["False_Easting",2000000], PARAMETER["False_Northing",500000],PARAMETER["Central_Meridian",122], PARAMETER["Standard_Parallel_1",40],PARAMETER["Standard_Parallel_2", 41.66666666666666],PARAMETER["Latitude_Of_Origin",39.33333333333334], UNIT["Meter",1]]

The following example is a string representing a geographic coordinate system based on the WGS 1984 datum.

GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137, 298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.0174532925199433]]

The coordinate system for a layer is stored in the LAYERS table as a text string that may be as long as 1024 characters.

Back


Defining a Coordinate System

ArcSDE adds some additional requirements for a coordinate transformation: conversion from floating point real–world units to positive integer system units for storage in the database. This conversion requires the following false origin and scale information:

  • falsex: A false origin for x-coordinate values.

  • falsey: A false origin for y-coordinate values.

  • falsez: A false origin for z-coordinate values.

  • falsem: A false origin for measure coordinate values.

  • xyunits: A scale factor to convert from world units to integer x,y-system units.

  • zunits: A scale factor to convert from elevation units to integer z system units.

  • munits: A scale factor to convert from measure units to integer m-system units.

All coordinates must be 32-bit positive integers between 0 and 2147483647 in ArcSDE. This format provides better data accuracy, data integrity, and processing speed than real numbers.

Because coordinates are often neither positive nor integer, ArcSDE requires an offset distance (a false origin) to ensure numbers are positive and a minimum resolution multiplier (called the scale factor) to convert real numbers to integers. The conversion algorithm is:

ArcSDE X = truncate ((( X coordinate - false X ) * xyunits
 ) + 0.5 )
ArcSDE Y = truncate ((( Y coordinate - false Y ) * xyunits ) + 0.5 )
ArcSDE Z = truncate ((( Z coordinate - false Z ) * zunits ) + 0.5 )
ArcSDE M = truncate ((( M coordinate - false M ) * munits ) + 0.5 )

0.5 is added to round off numbers. ArcSDE coordinates are converted back to plane coordinates with the following formula:

X coordinate = (( ArcSDE X / xyunits ) + false X)
Y coordinate = (( ArcSDE Y / xyunits ) + false Y)
Z coordinate = (( ArcSDE Z / zunits ) + false Z)
M coordinate = (( ArcSDE M / munits ) + false M)

False origin

The false origin (false x, false y, false z) translates the origin of the layer in either a positive or negative direction along any of the three axes. As a rule, the false origin of a layer should be set to its minimum x,y,z plane coordinate. The z-origin should be set to 0 for two-dimensional layers.

A false origin is mandatory for layers that have negative world coordinates. In the figure below, coordinates are in latitude–longitude decimal degrees.

All coordinates must be positive, so the false origin is set to at least the minimum x-value (125.652), but probably even further to move all features into positive space. You want to be sure you allow for more features to be added in all directions. If Hawaii and Alaska are added to the layer, you’ll need to shift the false origin to about -180,18.

The false origin is moved so that the minimumx-coordinate will be positive. The y-values are all positive, but you can extend the y false origin in case other data is added to the database.

A false origin can also improve coordinate precision, especially for maps that cover a very small area. For example, the extent of the lots layer shown below has more than 10 digits, so ArcSDE will not keep all of them. You can offset the origin in the positive direction because all coordinates are the same for the first two digits in the x-direction (2400000) and one digit in the y-direction. The false origin could be set to 2400000, 700000, 0. This preserves the precision of the numbers when they are converted to integers.

For this layer, all x- and y-values are greater than 2.4 million and 700000 meters, respectively.

Minimum resolution

The minimum resolution below which the precision of a plane coordinate is truncated is called the scale in ArcSDE. For instance, for a layer with units of measure in meters and a precision of no less than half a centimeter, the xyscale would be set to 200. Remember that digital data is only as accurate as its source. z-coordinates and measures also can have scales.

You can translate the precision of real numbers to the scale. In the example above, the coordinates are stored to three decimal places. A scale of 1000 will convert the numbers to integers and preserve the same resolution. Double–precision coordinates may have up to six decimal places. ArcSDE integers can have up to ten digits (about two billion), so you need to consider the number of digits to the left of the decimal place plus the number to the right in deciding the system unit.

A quick look at the coordinate values of your data will show you the number of decimal places you can use to determine the system unit.


Storing geometry in a relation database

Standards have been developed by industry, government bodies, and the ISO for managing geometric objects in a relational database. These standards include:

OpenGIS Consortium - Simple Features Specification for SQL
ISO19125-1, Geographic Information - Simple feature access - Part 1: Common architecture
ISO19125-2, Geographic Information - Simple feature access - Part 2: SQL option
ISO 19107, Geographic information - Spatial schema
ISO 13249-3, Information technology — Database languages — SQL Multimedia and Application Packages — Part 3: Spatial.

Taken together, these standards define the behavior of the geometric object, well-known exchange formats for the geoemtric object, and three different schemas for storing the geometric object as a value in a relational database. The different storage schemas are:
  • The Normalized geometry storage schema
  • The Binary geometry storage schema
  • The Geometry Type where the SQL type system is extended
These different storage schema are defined in abstract form by the standards organizations, and may take advantage of DBMS specific data types - for example, the Binary storage schema may be implemented using any DBMS supported binary data type, the specification defines the binary type in the abstract.
ArcSDE manages the physical storage of geometry for features using standard data types provided by the host DBMS. Some DBMSs have spatial data types, while others provide standard binary or binary large object (BLOB) storage types. ArcSDE geometry storage is dependent on the capabilities of your DBMS. No matter what geometry storage type you use, an ArcSDE client application does not need to know what the geometry storage type is. In the case of Oracle, you can use any combination of available storage methods. You may choose to store a point layer as Oracle Spatial geometry types and a polygon layer as binary. The decision on how to store your geometry will be based on the DBMS you use and other requirements specific to your implementation.
The Configuration and Tuning Guides for each DBMS describes how to define geometry storage types offered by the DBMS. The ESRI product documentation folder contains a pdf file config_tuning_guide_.pdf

This table summarizes the DBMS and geometry storage options available.

DBMS | GEOMETRY STORAGE | COLUMN TYPE
IBM DB2 | Spatial Extender - Geometry Type | ST_Geometry*
Informix | Spatial DataBlade - Geometry Type | ST_Geometry*
Microsoft SQL Server | Binary Schema | Image
Oracle | Binary Schema | Long Raw
 | Binary Schema | Blob
 | Oracle Spatial - Geometry Type | SDO_GEOMETRY
 | Oracle Spatial - Normalized Schema | number

*ST_GEOMETRY is a super class of several subclasses (e.g.: ST_polygon)

Geometry Metadata

The different geometry storage schemas have associated metadata for discovering the existence and properties of a geometry column. In the standardized specification, there is overlap between the different metadata schema, ArcSDE has implemented the metadata schema to allow any storage schema.

An ArcSDE geometry column is called a LAYER. Layers have a number of specialized properties that are maintained by ArcSDE. These properties include:

  • Layer owner, table, and column name
  • Coordinate reference
  • Geometry type
  • Indexing parameters
  • Table creation parameters
  • Layer description

This information is managed in three DBMS tables, called the LAYERS, SPATIAL_REF_SYS and GEOMETRY_COLUMNS tables. Three separate tables are used so that data can be normalized (in the case of spatial references) and for ease of integration with the OpenGIS Simple Features in SQL Specification.

The LAYERS table stores a row for each spatial column in the database. Applications use the layer properties to discover available spatial data sources. The layer properties are used by ArcSDE to constrain and validate the contents of the spatial column, to index geometry values, and to properly create and manage the associated DBMS tables.

The GEOMETRY_COLUMNS table stores a row for each column of type Geometry in the database that complies with the OpenGIS SQL specification. The ArcSDE application server treats this table as "write only" – the only time it is accessed by the ArcSDE server is when a layer is added or deleted that uses an OpeGIS SQL data format. This table is defined by the OpenGIS SQL specification, and may be updated by other applications, with non-ArcSDE managed geometry columns. When a new Geometry column is created in an OpenGIS compliant format, the fully qualified table, column name, and spatial reference ID (SRID) is added to the GEOMETRY_COLUMNS table.

Each Geometry column is associated with a Spatial Reference System. ArcSDE stores information on each Spatial Reference System in the SPATIAL_REF_SYS table. The columns of this table are those defined by the OpenGIS SQL Specification (SRID, SRTEXT, AUTH_NAME, and AUTH_SRID), and those required by ArcSDE for internal coordinate transformation. The Spatial Reference System identifies the coordinate system for a geometry, and gives meaning to the numeric coordinate values for the Geometry.

Layers Table Schema

The LAYERS table schema:

CREATE TABLE layers ( layer_id            INTEGER NOT NULL,
                      description         VARCHAR2(65) NULL,
                      table_name          VARCHAR2(160) NOT NULL,
                      owner               VARCHAR2(32) NOT NULL,
                      spatial_column      VARCHAR2(32) NOT NULL,
                      srid                INTEGER NOT NULL,
                      storage_type        INTEGER NOT NULL,
                      eflags              INTEGER NOT NULL,
                      gsize               FLOAT(64) NOT NULL,
                      gsize2              FLOAT(64) NOT NULL,
                      gsize3              FLOAT(64) NOT NULL,
                      minx                FLOAT(64) NOT NULL,
                      miny                FLOAT(64) NOT NULL,
                      maxx                FLOAT(64) NOT NULL,
                      maxy                FLOAT(64) NOT NULL,
                      cdate               INTEGER NOT NULL,
                      layer_config        VARCHAR2(32) NULL,
                      optimal_array_size  INTEGER NULL,
                      stats_date          INTEGER NULL,
                      minimum_id          INTEGER NULL,
                      CONSTRAINT layers_uk1 UNIQUE (layer_id),
                      CONSTRAINT layers_uk2 UNIQUE(table_name,owner));

  • LAYER_ID – the unique layer ID number assigned by ArcSDE.
  • DESCRIPTION – an optional layer description string.
  • TABLE_NAME - the name of the business table containing the geometry column.
  • OWNER – the name of the user that owns the business table.
  • SPATIAL_COLUMN – the name of the column in the feature table that is the geometry column
  • SRID- the ID of the spatial reference system used for the coordinate geometry in this table. It is a foreign key reference to the SPATIAL_REFERENCES table.
  • STORAGE_TYPE – the type of storage used for this geometry column.
                   -1 = SDE Compressed Binary implementation
                    0 = Normalized geometry OGIS SQL 92 implementation
                    1 = binary geometry OGIS SQL 92 implementation
                    2 = SQL Spatial Type Implementation
  • EFLAGS – the SDE column type mask defining legal entity types in the spatial column. This column is mirrored as GEOMETRY_TYPE with different values for OGIS views of the data.
  • GSIZE,GSIZ2, GSIZE3 – geometry grid index values
  • MINX, MINY, MAXX, MAXY – the extents of the spatial data.
  • CDATE – the date the layer was created or registered in ArcSDE.
  • OPTIMAL_ARRAY_SIZE – the buffer array size to use when transmitting data from this layer to the client application.
  • LAYER_CONFIG – table creation parameter keyword.
  • MINIMUM_ID – minimum feature ID for the layer.

SPATIAL_REF_SYS Table Schema

The SPATIAL_REF_SYS schema:

CREATE TABLE spatial_ref_sys ( srid               INTEGER NOT NULL,
                               description        VARCHAR(65),
                               auth_name          VARCHAR(1024),
                               auth_srid          INTEGER,
                               falsex             FLOAT NOT NULL,
                               falsey             FLOAT NOT NULL,
                               xyunits            FLOAT NOT NULL,
                               falsez             FLOAT NOT NULL,
                               zunits             FLOAT NOT NULL,
                               falsem             FLOAT NOT NULL,
                               munits             FLOAT NOT NULL,
                               srtext             VARCHAR(2048),
                               PRIMARY KEY (srid));
  • SRID – an integer value that uniquely identifies each Spatial Reference System within a database.
  • DESCRIPTION – short textual description of the Spatial Reference (e.g. UTM Zone 17).
  • AUTH_NAME – the name of the standard or standards body that is being cited for this reference system. POSC would be a valid AUTH_NAME
  • AUTH_SRID – the ID of the Spatial Reference System as defined by the Authority cited in AUTH_NAME.
  • FALSEX, FALSEY– the x and y offsets to use when transforming ground coordinates to internal system coordinates.
  • XYUNITS – the scale factor to apply when transforming ground coordinates to internal system coordinates.
  • FALSEZ - the z offset to use when transforming z values to internal system coordinates.
  • ZUNITS - the scale factor to use when transforming z values to internal system coordinates.
  • FALSEM - the measure offset to use when transforming measure values to internal system coordinates.
  • MUNITS - the scale factor to use when transforming measure values to internal system coordinates.
  • SRTEXT - The Well-Known Text representation of the Spatial Reference System.

Geometry_Columns Table Schema

The GEOMETRY_COLUMNS table schema:

CREATE TABLE geometry_columns ( f_table_catalog     VARCHAR(18),
                                f_table_schema      VARCHAR(18) NOT NULL,
                                f_table_name        VARCHAR(18) NOT NULL,
                                f_geometry_column   VARCHAR(18) NOT NULL,
                                srid                INTEGER NOT NULL,
                                storage_type        INTEGER NOT NULL,
                                geometry_type       INTEGER NOT NULL,
                                coord_dimension     INTEGER NOT NULL,
                                max_ppr             INTEGER NOT NULL,
                                primary key (f_table_catalog, f_table_schema,
                                             f_table_name, f_geometry_column) constraint geocol_pk,
                                foreign key (srid) references SPATIAL_REFERENCES
                                            (srid) constraint geocol_fk);

NOTE: The OpenGIS specification limits table and column names to 18 characters. SDE supports 32 characters or less (based on DBMS).

  • F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME - the fully qualified name of the feature table containing the geometry column.
  • F_GEOMETRY_COLUMN – the name of the column in the feature table that is the geometry column.
  • SRID – the ID of the spatial reference system used for the coordinate geometry in this table. It is a foreign key reference to the SPATIAL_REFERENCES table.
  • STORAGE_TYPE – the type of storage used for this geometry column.
       0 = Normalized geometry OGIS SQL 92 implementation
       1 = binary geometry OGIS SQL 92 implementation
       2 = OGIS SQL Spatial Type Implementation
  • GEOMETRY_TYPE – the type of geometry values stored in this column.
       0 = Geometry
       1 = point
       2 = curve
       3 = linestring
       4 = surface
       5 = polygon
       6 = collection
       7 = multipoint
       8 = multicurve
       9 = multilinestring
      10 = multisurface
      11 = multipolygon
  • COORD_DIMENSION – the number of ordinates used in the complex, usually corresponds to the number of dimensions in the geometry. Note: applicable to normalized geometry schema only.
  • MAX_PPR – Points per row, the number of points stored as ordinate columns in the geometry table. Note: applicable to normalized geometry schema only.

Geometry Storage

ArcSDE supports multiple mechanisms for geometry storage. The supported storage mechanisms are:

  • Binary geometry schema
  • Normalized Geometry schema
  • SQL Geometry Type

The geometry storage mechanism is identified when the layer is created. Not all storage mechanisms can be supported on all databases. The following table shows which storage schemas are available for each database:

 | Binary Geometry | Normalized Geometry | Geometry Type
IBM DB2 | YES | NO | YES
Informix | YES | NO | YES
MS SQL Server | YES | NO | NO
Oracle | YES | YES | YES

While the logical geometry model for all storage schemas is the same, not all SDE functionality is available in all formats. For example, the OpenGIS specification does not define elevations and measures on coordinates. The following chart shows the functionality available for each storage mechanism:

 | Binary Geometry | Normalized Geometry | Geometry Type*
2D geometry | YES | YES | YES
Elevations (Z) | YES | NO | YES
Measures (M) | YES | NO | YES
Annotation | YES | NO | YES
CAD | YES | NO | YES
SQL Functions | NO | NO | YES
AREA or LENGTH as a spatial search constraint | YES | NO | YES

*The specification for the SQL Spatial Type has been extended to support SDE functionality. This is possible because the actual geometry type structure is hidden behind the SQL function interfaces.

Binary Geometry Schema

The OpenGIS Specification for Simple Features in SQL defines a Binary geometry schema as one of three schemas for managing spatial data. In the Binary geometry schema, the coordinate values for the shape are stored in a binary object (called a BLOB). The BLOB is managed in a separate Geometry Table. Access to the geometry, from the Business Table is through a Foreign key – the Geometry ID, or GID.

The following tables illustrate the relationship between the Business Table and the Geometry Table in the Binary geometry schema:

Business Table
Feature-ID | Column 1 | Column 2 | Geometry ID
101 |  |  | 1
102 |  |  | 2
103 |  |  | 3
… |  |  | …
Geometry Table
Geometry ID | Binary Geometry
1 | (x,y,…,x,y)
2 | (x,y,…,x,y)
3 | (x,y,…,x,y)
… | …
Spatial Index Table
Geometry ID | Index Key
1 |
2 |
3 |
… | …

The ArcSDE binary schema is the same geometry storage schema used in earlier ArcSDE releases. This schema implements the OpenGIS Binary schema, with additional functionality, and a compressed binary representation in place of the OpenGIS Well-Known Binary Representation for Geometry. The compressed binary representation provides support for geometry properties not defined by the OpenGIS specification, including: Elevations, Measures, Annotation, and CAD data. Functions are available in the C, JAVA, and SQL type API to convert this compressed binary representation into OpenGIS Well-Known Binary and Well-Known Text representations of Geometry.

The internal format of the ArcSDE binary is defined in ArcSDE compressed binary representation

The schema for the ArcSDE binary schema geometry table is as follows:

CREATE TABLE F<layer#> ( fid            INTEGER NOT NULL,
                         numofpts       INTEGER NOT NULL,
                         entity         SMALLINT NOT NULL,
                         eminx          FLOAT(64) NOT NULL,
                         eminy          FLOAT(64) NOT NULL,
                         emaxx          FLOAT(64) NOT NULL,
                         emaxy          FLOAT(64) NOT NULL,
                         eminz          FLOAT(64) NOT NULL,
                         emaxz          FLOAT(64) NOT NULL,
                         min_measure    FLOAT(64) NOT NULL,
                         max_measure    FLOAT(64) NOT NULL,
                         area           FLOAT(64) NOT NULL,
                         len            FLOAT(64) NOT NULL,
                         points         <BLOB DATATYPE>
                         PRIMARY KEY (fid));
  • FID – the ID of the geometry.
  • NUMOFPTS – the number of coordinate values in the geometry.
  • ENTITY – an accumulated mask of geometry and coordinate type flags.
  • EMINX – Minimum X ordinate value.
  • EMINY – Minimum Y ordinate value.
  • EMAXX – Maximum X ordinate value.
  • EMAXY – Maximum Y ordinate value.
  • EMINZ – Minimum Z ordinate value (Initializes to NULL).
  • EMAXZ – Maximum Z ordinate value (Initializes to NULL).
  • MIN_MEASURE – Minimum M ordinate value (Initializes to NULL).
  • MAX_MEASURE – Maximum M ordinate value (Initializes to NULL).
  • AREA – Calculated area for the geometry.
  • LEN – Calculated length or perimeter for the geometry.
  • Points – Geometry coordinate values.

Normalized Geometry Schema

The OpenGIS Specification for Simple Features in SQL defines a normalized geometry schema as one of three schemas for managing spatial data. In the normalized geometry schema, the coordinate values for the shape are stored as individual ordinate values. The geometry’s ordinates are managed as DBMS numeric datatypes in a separate Geometry Table. Access to the geometry, from the Business Table is through a Foreign key – the Geometry ID, or GID.

In the normalized representation, not all of a geometric object's ordinate values can be stored on a single row in the geometry table. To accommodate geometric object with a large number of ordinate values, the geometry will be represented by multiple rows, with a sequence (SEQ) value so that rows are returned in the proper order. An additional value, ESEQ, is used to identify multiple parts within a geometric object. The type of the geometry (point, line, polygon) is stored as an ETYPE value. So, in a normalized representation of geometry, a single shape may be composed of multiple parts, each composed of multiple rows with a fixed number of ordinate values stored in each row.

The following tables illustrate the relationship between the Business Table and the Geometry Table in the Normalized Geometry Representation. In this example, only one ordinate pair is stored for each row in the geometry table; the OGIS specification allows any number of ordinate pairs to be defined for a given table.

Business Table
Feature-ID | Column 1 | Column 2 | Geometry ID
101 |  |  | 1
102 |  |  | 2
103 |  |  | 3
… |  |  | …

Geometry Table
Geometry ID | ETYPE | ESEQ | SEQ | X Coordinate | Y Coordinate
1 | 3 | 1 | 1 | 10.00 | 10.00
1 | 3 | 1 | 2 | 10.00 | 15.00
1 | 3 | 1 | 3 | 15.00 | 15.00
1 | 3 | 1 | 4 | 15.00 | 10.00
1 | 3 | 1 | 5 | 10.00 | 10.00
2 | 3 | 1 | 1 | 100.00 | 100.00
2 | 3 | 1 | 2 | 100.00 | 150.00
2 | 3 | 1 | 3 | 150.00 | 150.00
2 | 3 | 1 | 4 | 150.00 | 100.00
2 | 3 | 1 | 5 | 100.00 | 100.00
2 | 3 | 2 | 1 | 120.00 | 120.00
… | … | … | … | … | …
Spatial Index Table
Geometry ID | Index Key
1 |
2 |
3 |
… | …

The following rules are used when mapping geometric objects into the normalized representation:

  • Geometric objects may have multiple elements. The ESEQ value identifies the individual elements.
  • An element may be built up from multiple parts (rows). The rows and their proper sequence are identified by the Sequence value.
  • Multiple ordinate pairs may be stored on each row.
  • Polygons may contain holes, a hole is a new part in the geometry.
  • Polygon rings must close when assembled from an ordered list of parts. The Sequence value designates the part order.
  • Coordinate pairs that are not used must be set to Nil in complete sets (both X and Y). This is the only way to identify the end of list of coordinates.
  • For geometric objects that continue onto an additional row (as defined by a constant part number) the last point of one row is equal to the first point of the next.
  • There is no limit on the number of elements in the geometry, or the number of rows in an element.

GID | ETYPE | ESEQ | SEQ | X0 | Y0 | X1 | Y1 | X2 | Y2 | X3 | Y3 | X4 | Y4
1 | 3 | 1 | 1 | 0 | 0 | 0 | 30 | 30 | 30 | 30 | 0 | 0 | 0
1 | 3 | 2 | 1 | 10 | 10 | 10 | 20 | 20 | 20 | 20 | 10 | 10 | 10
2 | 3 | 1 | 1 | 30 | 0 | 30 | 30 | 60 | 30 | 60 | 0 | 30 | 0
2 | 3 | 2 | 1 | 40 | 5 | 40 | 20 | 45 | 20 | 45 | 15 | 50 | 15
2 | 3 | 2 | 2 | 50 | 15 | 50 | 5 | 40 | 5 | Nil | Nil | Nil | Nil
3 | 3 | 1 | 1 | 0 | 30 | 0 | 60 | 30 | 60 | 30 | 30 | 0 | 30
4 | 3 | 1 | 1 | 30 | 30 | 30 | 60 | 60 | 60 | 60 | 30 | 30 | 30

The schema for the Normalized Geometry table is:

CREATE TABLE F<layer#> ( gid           NUMBER NOT NULL,
                         eseq          NUMBER NOT NULL,
                         etype         NUMBER NOT NULL,
                         seq           NUMBER NOT NULL,
                         x1            NUMBER NOT NULL,
                         y1            NUMBER NOT NULL,
                         <..>          <..>
                         <..>          <..>
                         x<max_ppr>    NUMBER NOT NULL,
                         y<max_ppr>    NUMBER NOT NULL);
  • GID – the ID of the geometry.
  • ESEQ – identifies multiple components within a geometry.
  • ETYPE – element type of this primitive element for the geometry.
        1 = point element
        2 = Linear element
        3 = polygonal element
  • SEQ – identifies the sequence of rows to define a geometry component.
  • x1 – first ordinate of first point
  • y1 – second ordinate of first point.
  • <..> - (repeated for each ordinate for this point)
  • <..> - (repeated for each ordinate for this point)
  • X<MAX_PPR> - first ordinate for last point in the row.
  • Y<MAX_PPR> - second ordinate for last point in the row.

SQL Spatial Type

The OpenGIS Specification for Simple Features in SQL defines a SQL Spatial type with associated SQL functions as one of three schemas for managing spatial data. In the SQL Spatial Type implementation, the coordinate values for the shape are managed as an SQL object, accessible only through SQL function invocations.

The SQL Spatial Type is just another column in the DBMS table, with well defined properties and behavior. The actual representation of the geometry, and storage of the coordinate data is DBMS specific, and never exposed to the application. This hidden implementation allows us to extend the OpenGIS Specification for Simple Features in SQL with Annotation, CAD, elevations, and measures.

The following example illustrates how a geometry type looks in the table. The index is not shown, because it is now managed by the DBMS as an index on the column:

Business Table
Feature-ID | Column 1 | Column 2 | Column N | Geometry_Type
101 |  |  |  | (x,y,…,x,y)
102 |  |  |  | (x,y,…,x,y)
103 |  |  |  | (x,y,…,x,y)
… |  |  |  | (x,y,…,x,y)

Conformance to standards

The DB2 and Informix spatial type implementations are based on the OpenGIS and SQL/MM spatial type specifications. These implementations have been conformance tested by the OpenGIS - see www.opengis.org for further conformance information.

Consult Oracle documentation and www.opengis.org for Oracle Spatial conformance information.

SQL Geometry Subtypes

The OpenGIS specification for the SQL Type implementation defines the following subtype relationships for the geometry type:

Subtype relationships between Types

ST_Curve, ST_Surface, ST_MultiCurve and ST_MultiSurface are defined to be non-instantiable types. No constructors are defined for these types.

SQL Geometry Functions

Functions may be associated with abstract data types; for example, a geometry type could have functions to return the area or length. Functions that operate on the type are also possible; for example, functions that compute intersections or the union of two geometries, returning a new geometry as the result. For example, return all parcels that intersect a specified polygon (named MyPolygon):

SELECT Parcel.Name, Parcel.Id
FROM Parcels
WHERE Intersects(Parcels.Geometry, MyPolygon)

The spatial functions are fully integrated into the SQL language, allowing them to be used in SELECT statements (as above), and any other place a SQL expression would be used, such as the following INSERT statement:

INSERT INTO Countries (Name, Geometry)
VALUES ( ‘Kenya’, PolygonFromText(‘POLYGON ((x y, x y, x y, ..., x y))’, 14))

SQL Spatial Types and Functions are only available on extensible DBMS products. At this time, support is limited to Informix Dynamic Server, and DB2 Data Joiner. As other extensible DBMS products become available, they will be evaluated to determine if the necessary functionality exists to provide spatial type support.

The following functions are defined in the OpenGIS specification for SQL for spatial types. Functions are identified with an ST_ prefix for conformance with the SQL/MM specification, but the function signatures are the same in both specifications. Functions prefixed with SE_ are not part of the SQL/MM or OpenGIS specifications, but have been added to ArcSDE implementations on IBM DB2 and Informix to supported extended funcitonality.

SQL functions for constructing a ST_Geometry value given its Well-known Text representation
ST_WKTToSQL( geometryTaggedText lvarchar) : ST_Geometry | Construct a ST_Geometry value given its well-known textual representation. Note: no spatial reference – sets the SRID to 0.
ST_GeomFromText( geometryTaggedText lvarchar, SRID Integer) : ST_Geometry | Construct a ST_Geometry value given its well-known textual representation.
ST_PointFromText ( pointTaggedText lvarchar, SRID Integer): ST_Point | Construct a ST_Point
ST_LineFromText( lineStringTaggedText lvarchar, SRID Integer) : ST_LineString | Construct a ST_LineString
ST_PolyFromText( polygonTaggedText lvarchar, SRID Integer): ST_Polygon | Construct a ST_Polygon
ST_MPointFromText (multiPointTaggedText lvarchar, SRID Integer): ST_MultiPoint | Construct a ST_MultiPoint
ST_MLineFromText ( multiLineStringTaggedText lvarchar, SRID Integer): ST_MultiLineString | Construct a ST_MultiLineString
ST_MPolyFromText( multiPolygonTaggedText lvarchar, SRID Integer): ST_MultiPolygon | Construct a ST_MultiPolygon
SQL functions for constructing a ST_Geometry value given its Well-known Binary representation
ST_WKBToSQL (WKBGeometry lvarchar) : ST_Geometry | Construct a ST_Geometry value given its well-known binary representation. Note: no spatial reference – sets the SRID to 0.
ST_GeomFromWKB (WKBGeometry lvarchar, SRID Integer) : ST_Geometry | Construct a ST_Geometry value given its well-known binary representation.
ST_PointFromWKB (WKBPoint lvarchar, SRID Integer): ST_Point | Construct a ST_Point
ST_LineFromWKB(WKBLineString lvarchar, SRID Integer) : ST_LineString | Construct a ST_LineString
ST_PolyFromWKB(WKBPolygon lvarchar, SRID Integer): ST_Polygon | Construct a ST_Polygon
ST_MPointFromWKB (WKBMultiPoint lvarchar, SRID Integer): ST_MultiPoint | Construct a ST_MultiPoint
ST_MLineFromWKB (WKBMultiLineString lvarchar, SRID Integer): ST_MultiLineString | Construct a ST_MultiLineString
ST_MPolyFromWKB (WKBMultiPolygon lvarchar, SRID Integer): ST_MultiPolygon | Construct a ST_MultiPolygon
SQL functions for constructing a ST_Geometry value given an ESRI Shape representation
SE_ShapeToSQL( ShapeGeometry lvarchar) : ST_Geometry | Construct a ST_Geometry value given its well-known textual representation. Note: no spatial reference – sets the SRID to 0.
SE_GeomFromShape( ShapeGeometry lvarchar, SRID Integer) : ST_Geometry | Construct a ST_Geometry value given its well-known textual representation.
SE_PointFromShape ( ShapePoint lvarchar, srs SRID): ST_Point | Construct a ST_Point
SE_LineFromShape( ShapeLineString lvarchar, SRID Integer) : ST_LineString | Construct a ST_LineString
SE_PolyFromShape( ShapePolygon lvarchar, SRID Integer): ST_Polygon | Construct a ST_Polygon
SE_MPointFromShape (ShapemultiPoint lvarchar, SRID Integer): ST_MultiPoint | Construct a ST_MultiPoint
SE_MLineFromShape ( ShapemultiLineString lvarchar, SRID Integer): ST_MultiLineString | Construct a ST_MultiLineString
SE_MPolyFromShape( ShapemultiPolygon lvarchar, SRID Integer): ST_MultiPolygon | Construct a ST_MultiPolygon

SQL functions for obtaining the Well-known Text representation of a ST_Geometry

ST_AsText (g ST_Geometry) : lvarchar

Returns the well-known textual representation of a ST_Geometry.

SQL functions for obtaining the Well-known Binary representation of a ST_Geometry

ST_AsBinary (g ST_Geometry) : lvarchar

Returns the well-known binary representation of a ST_Geometry

SQL functions for obtaining the ESRI Shape representation of a ST_Geometry

SE_AsShape (g ST_Geometry) : lvarchar

Returns the ESRI shape representation of a ST_Geometry

SQL functions on type ST_Geometry
ST_Dimension(g ST_Geometry) : Integer | Returns the geometric dimension of the ST_Geometry, which is less than or equal to the dimension of the coordinate space.
ST_CoordDim(g ST_Geometry) : Integer | Returns the coordinate dimension of the ST_Geometry value.
ST_GeometryType(g ST_Geometry) : lvarchar | Returns the name of the instantiable subtype of ST_Geometry of which this instance is a member, as a String.
ST_AsText(g ST_Geometry) : lvarchar | Returns the well-known textual representation
ST_AsBinary(g ST_Geometry) : lvarchar | Returns the well-known binary representation
SE_AsShape(g ST_Geometry) : lvarchar | Returns the well-known ESRI shape representation
ST_SRID(g ST_Geometry) : Integer | Returns the Spatial Reference System ID for this ST_Geometry.
ST_IsEmpty(g ST_Geometry) : boolean | Informix: TRUE if this ST_Geometry corresponds to the empty set. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
ST_IsSimple(g ST_Geometry): boolean | Informix: TRUE if this Geometry is simple, as defined in the ST_Geometry Model. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
ST_IsValid(g ST_Geometry): boolean | Informix: TRUE if this ST_Geometry is valid, as defined in the ST_Geometry Model. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
ST_Boundary(g ST_Geometry) : ST_Geometry | Returns a ST_Geometry that is the combinatorial boundary of g as defined in the Geometry Model.
ST_Envelope(g ST_Geometry) : ST_Polygon | Returns the rectangle bounding g as a ST_Polygon. The polygon is defined by the corner points of the bounding box ((MINX, MINY),(MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)).
ST_Transform(g ST_Geometry, SRID Integer): ST_Geometry | Transforms the ST_Geometry into the Spatial Reference specified by the Spatial Reference System.
ST_OrderingEquals (g1 ST_Geometry, g2 ST_Geometry): boolean | Informix: TRUE if geometries g1 and g2 are equal and coordinates are the same order. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
SE_Is3d(g ST_Geometry) : boolean | Informix: TRUE if this ST_Geometry has Z ordinate values. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
SE_IsMeasured(g ST_Geometry) : boolean | Informix: TRUE if this ST_Geometry has M ordinate values. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
SQL functions on type ST_Point
ST_Point (X Double Precision, Y Double Precision, SRID) : ST_Point | Returns a ST_Point, given an x-coordinate, y-coordinate, and spatial reference.
ST_X(p ST_Point) : Double Precision | Return the x-coordinate of Point p as a Double Precision number
ST_Y(p ST_Point) : Double Precision | Return the y-coordinate of Point p as a Double Precision number
SE_M(p ST_Point) : Double Precision | Return the M-coordinate of Point p as a Double Precision number
SE_Z(p ST_Point) : Double Precision | Return the Z-coordinate of Point p as a Double Precision number

SQL functions on type ST_Curve

ST_StartPoint(c ST_Curve) : ST_Point

Return a ST_Point containing the first point of a ST_Curve.

ST_EndPoint(c ST_Curve) : ST_Point

Return a ST_Point containing the last point of a ST_Curve

ST_IsClosed(c ST_Curve) : boolean

Informix:

Return TRUE if c is closed, i.e., if
StartPoint(c) = EndPoint(c)

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_IsRing(c ST_Curve) : boolean

Informix:

Return TRUE if c is a Ring, i.e., if c is closed and simple. A simple curve does not pass through the same point more than once.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Length(c ST_Curve) : Double Precision

Return the length of an ST_Curve.

SQL functions on type ST_LineString
ST_NumPoints(l ST_LineString) : Integer | Return the number of points in the ST_LineString.
ST_PointN(l ST_LineString, n Integer) : ST_Point | Return a ST_Point containing point n of the ST_LineString.
SQL functions on type ST_Surface
ST_Centroid(s ST_Surface) : ST_Point | Return the centroid of an ST_Surface, which may lie outside of the ST_Surface.
ST_PointOnSurface(s ST_Surface) : ST_Point | Return a ST_Point guaranteed to lie on the ST_Surface
ST_Area(s ST_Surface) : Double Precision | Return the area of a ST_Surface.
ST_Perimeter (s ST_Surface) : Double Precision | Return the perimeter of a ST_Surface.
SQL functions on type ST_Polygon
ST_Polygon (l ST_linestring, srid Integer) : ST_polygon | Generates a ST_Polygon from a ST_LineString.
ST_ExteriorRing(ps ST_Polygon) : ST_LineString | Return the exterior ring of p.
ST_NumInteriorRing(p ST_Polygon) : Integer | Return the number of interior rings.
ST_InteriorRingN(p ST_Polygon, n Integer) : ST_LineString | Return the nth interior ring. The order of rings is not geometrically significant.
SQL functions on type ST_GeomCollection
ST_NumGeometries(g ST_GeomCollection) : Integer | Return the number of geometries in the collection.
ST_GeometryN(g ST_GeomCollection, n Integer) : ST_Geometry | Return the nth geometry in the collection. The order of the elements in the collection is not geometrically significant.
SQL functions on type ST_MultiCurve
ST_IsClosed(mc ST_MultiCurve) : boolean | Informix: Return TRUE if mc is closed. DB2: The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
ST_Length(mc ST_MultiCurve) : Double Precision | Return the length of mc.
SQL functions on type ST_MultiSurface
ST_Centroid(ms ST_MultiSurface) : Point | Return the centroid of ms, which may lie outside ms
ST_PointOnSurface(ms ST_MultiSurface) : Point | Return a Point guaranteed to lie on the multi surface
ST_Area(ms ST_MultiSurface) : Double Precision | Return the area of ms
ST_Perimeter (ms ST_MultiSurface) : Double Precision | Return the perimeter of the ms

SQL functions that test spatial relationships

ST_Equals(g1 ST_Geometry,g2 ST_Geometry) : boolean

Informix:

TRUE if g1 and g2 are equal.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Disjoint(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

TRUE if the intersection of g1 and g2 is the empty set.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Touches(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

TRUE if the only points in common between g1 and g2 lie in the union of the boundaries of g1 and g2.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Within(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

TRUE if g1 is completely contained in g2.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Overlaps(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

TRUE if the intersection of g1 and g2 results in a value of the same dimension as g1 and g2 that is different from both g1 and g2.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Crosses(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

TRUE if the intersection of g1 and g2 results in a value whose dimension is less than the maximum dimension of g1 and g2 and the intersection value includes points interior to both g1 and g2, and the intersection value is not equal to either g1 or g2.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Intersects(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

Convenience predicate: TRUE if the intersection of g1 and g2 is not empty.

Intersects(g1, g2 ) Û Not (Disjoint(g1, g2 ))

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Contains(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

Convenience predicate: TRUE if g2 is completely contained in g1.

Contains(g1, g2 ) Û Within(g2 , g1)

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

SE_EnvelopesIntersect(g1 ST_Geometry, g2 ST_Geometry) : boolean

Informix:

Convenience predicate: TRUE if the intersection of the envelopes of g1 and g2 is not empty.

Intersects(g1, g2 ) Û Not (Disjoint(g1, g2 ))

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.

ST_Relate(g1 ST_Geometry, g2 ST_Geometry,
patternMatrix String) : boolean

Informix:

Returns TRUE if the spatial relationship specified by the patternMatrix holds.

DB2:

The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN corresponding to a function invocation on NULL arguments..

SQL functions for distance relationships

ST_Distance(g1 ST_Geometry,
g2 ST_Geometry) : Double Precision

Return the distance between g1 and g2.

SQL functions that implement spatial operators
ST_Intersection (g1 ST_Geometry, g2 ST_Geometry) : ST_Geometry | Return a ST_Geometry that is the set intersection of geometries g1 and g2.
ST_Difference (g1 ST_Geometry, g2 ST_Geometry) : ST_Geometry | Return a ST_Geometry that is the closure of the set difference of g1 and g2.
ST_Union (g1 ST_Geometry, g2 ST_Geometry) : ST_Geometry | Return a ST_Geometry that is the set union of g1 and g2.
ST_SymDifference(g1 ST_Geometry, g2 ST_Geometry) : ST_Geometry | Return a ST_Geometry that is the closure of the set symmetric difference of g1 and g2 (logical XOR of space).
ST_Buffer (g ST_Geometry, adistance Double Precision) : ST_Geometry | Return as ST_Geometry defined by buffering a distance d around g, where d is in the distance units for the Spatial Reference of g.
ST_ConvexHull(g ST_Geometry) : ST_Geometry | Return a ST_Geometry that is the convex hull of g.
SE_LocateAlong (g ST_Geometry, adistance Double Precision) : ST_Geometry | Return a ST_Geometry that represents the geometry at the distance along the geometry.
SE_LocateBetween (g ST_Geometry, adistance Double Precision, anotherdistance Double Precision):ST_Geometry | Return a ST_Geometry that represents the geometry between the specified distances along the geometry.


Managing a Versioned Database

Overview

A key feature in any multiuser database is the ability to manage concurrent access to the data. Multiuser read and write access is crucial. A DBMS provides this functionality on tables. What the DBMS does not provide, however, is the concept of a long transaction for GIS editing or for “what if” scenarios. ArcSDE provides a way to support these with versioning.

The primary role of versioning is to simplify the editing experience. Many GIS edits require more than just a few minutes’ time to complete. Yet some editing tasks require hours, days, or even months to complete. Long transaction editing is supported by creating versions. Versioning lets users simultaneously create multiple, persistent representations of the database without making copies of the data. Multiple users can simultaneously edit the same features or rows without explicitly applying locks to prohibit other users from modifying the same data. When edit conflicts exist, a conflict resolution dialog box in ArcInfo 8 helps to resolve those conflicts.

All organizations that use ArcSDE and maintain their data with ArcMap will use versioning. The geodatabase and versioning provide organizations with advanced data storage techniques that help to organize work flow in organizations where spatial data is used. Engineers can generate design alternatives using the geodatabase. Spatial analysts can perform complex “what if” scenarios without affecting the default or “as built” representation in the database. And database administrators can create historical “snapshots” of the geodatabase for archival and database recovery.

What is a versioned database?
Versioning scenario
Versioned database schema
Native SQL access

Native SQL access Procedures


What is a Versioned Database?

What is a versioned database?

A Versioned Database is an ArcSDE service that has been configured to support multiple versioned views of the database. There is a single versioned database in an ArcSDE service.

The versioned database consists of a collection of tables that participate in the versioned database. Not all tables in an DBMS service need to be (or even should be) part of the versioned database.

The versioned database defines a single schema. If the schema of the database is changed, it is changed for all versions of that database.

What is a Database Version?

A version is a specific configuration of the versioned database that is not affected by changes in other versions of the database. A version is identified by a unique name (the version name) and is owned by the user who creates it. Creating a new version makes a "logical copy" of the database specific for the user that created it. There is no duplication of data.

A versioned database will contain a list of available versions. Users identify the desired version of the database by selecting a version from this list. When no version is specified, ArcSDE will look for a version named “Default”.

Over time, a version may represent different configurations of the versioned database. For example, a database may contain three versions – “WORKING” which represents the working state of the database, and two edit versions “EDIT1” and “EDIT2” which are derived from the “WORKING” version. When the EDIT1 version is saved back to “WORKING”, the “WORKING” version will represent a new configuration of the database. The configuration will change again when the EDIT2 version is save back to “WORKING”.

Only the owner of a version may remove it from the database. If a version is a parent to one or many dependant versions, then it may not be deleted.

Versions may be private or public. Private versions are only accessible by the version owner, limiting the owner as the only user who may create a child version. Public versions are accessible to any user, and allow the creation of child versions.

What is a Database State?

Versions exist on a network of database states. Each version of the database points to a specific state; multiple versions may point to the same state if desired. Over time, versions will move from one state to another.

States are containers for changes to the database. As changes are made to a version, the changes are tagged with the appropriate state. Database states are organized as a tree, where the parent/child relationship can be derived from the state lineage. The following example portrays a state tree with the components identified with their appropriate terminology.

State tree with state and version terminology.

A state has one owner, which is set to the user who creates the state. Only the owner of a state, or the SDE administrator, can modify the properties of a state or delete it.

A state may be OPEN or CLOSED. An open state allows the owner to add, delete or modify rows. You can not create new child states from an open state. Only the leaf nodes in the state tree can be open. Only the owner of a state, or the SDE administrator, can open or close a state.

Only child states, or leaf nodes, of a database can be deleted, and only the owner or the SDE administrator can perform the deletion.

Database states can be compared for row conflicts (deletions, additions, and modifications) between two states. A conflict is when the same row is different between the two states being compared or merged. States can be merged automatically where the changes in one state take priority when conflicts occur. Applications can manually resolve conflicts and allow changes to be selectively applied to the database.

You can trim the state tree, which collapses a linear branch of the tree. The child state will replace the parent state within the branch and discard all states which deviate from the direct path. Trimming database states reduces the depth of the state tree, shortening the lineage and improving query performance.

Trimming the state tree from state 7 to state 2, before and after.

You can also compress the state tree. Compressing the state tree removes each state that is not currently referenced by a version and not the parent of multiple child states. When executed by the SDE administrator, all states that meet the compress criterion are removed regardless of owner. All other users can compress only the states that they own. This operation reduces the depth of the state tree, shortening the lineage and improving query performance.

The following example illustrates compressing the state tree.

Compressing the state tree, removing all states not referenced by a version.

Please also refer to the ArcGIS book "Buildling a Geodatabase", chapter 10 on versioning in ArcGIS.

Back


Versioning Scenario

The following versioning scenario will illustrate how multiple versions of the database can exist simultaneously. In the following example, we’ll illustrate how two users create independent edit versions, reconciling the changes against a common database version. This example will show how the versions of the database map onto the underlying database states. The following changes will take place:

Let User1 and User2 be two different users.

Let WORKING be the name of a version of the database that User1 and User 2 will modify.

Let EDIT1 and EDIT2 be the name of two versions of the database that contain the modifications made by User1 and User2 respectively.

This is the sequence of database versions that the user sees:

  • Change 1:

    • User1 edits the WORKING version, creating a new version EDIT1, and adding objects 100 and 101. User1 finds no conflicts between the changes in EDIT1 and the WORKING version, so EDIT1 becomes the new WORKING version.

  • Change 2:

    • User2 edits the WORKING version, creating a new version EDIT2, adding object 103 and changing Object 101.

  • Change 3:

    • While User2 is editing the WORKING version in EDIT2, User 1 again edits the WORKING version creating a new EDIT1, adding Object 102, and changing Object 100. User1 finds no conflicts between the WORKING version and the EDIT1 version, so the User1 changes become the new WORKING version.

  • Change 4:

    • User 1 again edits the WORKING version creating a new EDIT1, changing object 101, and deleting object 100. User1 finds no conflicts between the WORKING version and the EDIT1 version, so the User1 changes become the new WORKING version.

  • Change 5:

    • User2 completes editing in EDIT2. When EDIT2 is reconciled against WORKING, User2 discovers that object 100 and object 101 have been changed in the WORKING version. User2 decides to accept object 101 from the WORKING version, and object 100 from the EDIT2 version. These reconciled changes now become the WORKING version.

This is the underlying database configuration from the state perspective:

  • State 0

    • The initial configuration of the database, the WORKING version

  • State 1

    • Created by User1, referenced by version Edit1. User1 adds objects 100 and 101, then reconciles against WORKING (state0). The WORKING version is changed to state 1.

  • State 2

    • Created by User2 from the WORKING version (state 1), referenced by version EDIT2. User2 adds object 103, change object 101.

  • State 3

    • Created by User1 from the WORKING version (state 1), referenced by version EDIT1. User1 adds object 102, changes object 100, then reconciles against WORKING (state1). The WORKING version is changed to state 3.

  • State 4

    • Created by User1 from the WORKING version (state 3), referenced by version EDIT1. User1 changes object 101, delete object 100, then reconciles against WORKING (state3). The WORKING version is changed to state 4.

  • State 5

    • Created by User2 from the WORKING version (state 4) while reconciling EDIT2 (state2) against WORKING (state4). User2 will accept object 101 from WORKING (state4), and will keep object 100 from EDIT2 (state2). The WORKING version is changed to state 5.

This sequence is represented in the diagram below. The state dependencies are shown on the left, while the associated tables are shown on the right.

Example using the simple version modeling schema

The different versions available in this database that correspond to states 1 through 5 are shown below. In the figures, the state column is shown for illustration purposes (it is not visible to the user)..

Change 1:

Version-State references after Change 1:

Version | State
WORKING | 1

WORKING Version after Change 1 (add objects 100 and 101):

OID | State | Data
100 | 1 | a
101 | 1 | b

Change 2:

Version-State references after Change 2:

Version | State
WORKING | 1
EDIT2 | 2

EDIT2 Version after Change 2 (add object 103; change object 101):

OID | State | Data
100 | 1 | A
101 | 2 | Bb
103 | 2 | d

WORKING Version after Change 2 (no change):

OID | State | Data
100 | 1 | a
101 | 1 | b

Change 3:

Version-State references after Change 3:

Version | State
WORKING | 3
EDIT2 | 2
EDIT1 | 3

EDIT2 Version after Change 3 (no change):

OID | State | Data
100 | 1 | a
101 | 2 | bb
103 | 2 | d

EDIT1 Version after Change 3 (add object 102; change object 100):

OID | State | Data
100 | 3 | aa
101 | 1 | b
102 | 3 | c

WORKING Version after Change 3 (add object 102; change object 100):

OID | State | Data
100 | 3 | aa
101 | 1 | b
102 | 3 | c

Change 4:

Version-State references after Change 4:

Version | State
WORKING | 4
EDIT2 | 2
EDIT1 | 4

EDIT2 Version after Change 4 (no change):

OID | State | Data
100 | 1 | a
101 | 2 | bb
103 | 2 | d

EDIT1 Version after Change 4 (change object 101; delete object 100):

OID | State | Data
100 | 4 | <delete>
101 | 4 | bbb
102 | 3 | c

WORKING Version after Change 4 (change object 101; delete object 100):

OID | State | Data
100 | 4 | <delete>
101 | 4 | bbb
102 | 3 | c

Change 5:

Version-State references after Change 5:

Version | State
WORKING | 5
EDIT2 | 5
EDIT1 | 4

EDIT2 Version after Change 5 (Merge WORKING and EDIT2, accept object 101 from WORKING and object 100 from EDIT2):

OID | State | Data
100 | 5 | a
101 | 4 | bbb
102 | 3 | c
103 | 2 | d

EDIT1 Version after Change 5 (no change):

OID | State | Data
100 | 4 | <delete>
101 | 4 | bbb
102 | 3 | c

WORKING Version after Change 5 (Merge WORKING and EDIT2, accept object 101 from WORKING and object 100 from EDIT2):

OID | State | Data
100 | 5 | a
101 | 4 | bbb
102 | 3 | c
103 | 2 | d

Back


Versioned Database Schema

The Versioned Database is implemented through a combination of system tables that maintain metadata for the entire instance, and tables that log changes on a per versioned DBMS table bases.

Shared Metadata Tables

At the database level, three tables maintain the shared system metadata. These tables store the list of versions, the state tree, and the list of tables modified in each state.

System Table: | Purpose:
VERSIONS | Each version is identified by name, with an owner, description and associated database state. This table provides the list of available versions to be presented to the user.
STATES | This table maintains the list of all database states. For each state, the complete lineage is maintained, as well as creation time, closing time, parent, and owner. Using the information in this table, the entire versioned database history can be reconstructed.
MVTABLES_MODIFIED | This table maintains the list of all tables that are modified in each state of the database. This information aids in quickly determining if conflicts exist between versions or states of the database.

The SDE_VERSIONS Table

The VERSIONS table defines the different versions that the database contains. These versions are used to access specific database states by the application. The version name and ID are unique.

When the VERSIONS table is first created by SDE, a default version will be inserted into the table. This default version will be named “DEFAULT”, and will be owned by the SDE administrator, and granted PUBLIC access. The initial state_id will be set to 0, and the description string will read “Instance Default Version”. Since the default version has been granted PUBLIC access, any user can change the state of the default.

The VERSIONS schema:

VERSIONS |
Column Name | Description
ID | The unique ID of the version
Name | The unique name of the version.
Owner | The version owner
State_ID | The ID of the database state that this version points at.
Status | Is the version available to the public? Or is it private to the Owner?
Description | An optional text description of the version.
Parent_Version_ID | The ID of Version which is the Parent of this version.
Parent_Name | The name of this versions Parent version
Parent_Owner | The name of the owner of the Parent Version
Creation_Time | The date/time that this version was created

The STATES Table

The STATES table accounts for all of the states that have been created over time. When a state is created, a state ID is assigned, and a record is added to this table. The STATES table maintains the following properties:

STATES |
Column Name | Description
State_ID | A unique, SDE-assigned integer ID for this state.
Owner | The user who created this state.
Create_Time | The date/time that this state was create.
Close_Time | The date/time that this state was closed.
Parent_State_ID | This state’s parent State_ID.
Lineage_Length | The length of the Lineage data for this state.
Lineage | An ordered list of State_IDs recording the chain of changes from the base state to this version.

If a state is currently OPEN, that is, the owner can make changes within the state, the CLOSE_TIME will be NULL. Once a state has been closed, the CLOSE_TIME value will be a legal (not NULL) date.

The Parent_State_ID column is a convenience for searching, and is redundant with the last value of the lineage list. Without the Parent_State_ID column, the lineage must be cracked for each state to determine its parent.

The MVTABLES_MODIFIED Table

The MVTABLES_MODIFIED table maintains a record of all tables modified by state. This information allows applications to determine which tables need to be checked for changes when reconciling potential conflicts between versions and states in the database.

The MVTABLES_MODIFIED table has the following schema:

MVTABLES_MODIFIED |
Column Name | Description
State_ID | The state in which this table was modified.
Registration_ID | The Registration ID of the table that was modified in the state.

Versioned Tables

When a DBMS table is made multi-versioned – that is, when versioning has been enabled on a table, three tables and a view are used to manage the versioned changes. These tables log all deleted rows and all added rows for each state of the database. The original table is replaced with a view that reconstructs the correct table contents for a specified version of the database.

Data Table: | Purpose:
<versioned view name> | A versioned view of the base, additions, and deletions table that reconstructs the contents of the table for the desired version of the database.
<versioned base table name> | The Base Table maintains state 0 of the data.
A<REGISTRATION_ID> | The Additions table stores all additions and modifications to the Base Table. This table has the same schema as the Base Table, with the addition of the SDE_state_ID column.
D<REGISTRATION_ID> | The Deletions table stores all deleted and modified row references.

The Version View

The versioned view is optional, and reconstructs the contents of the versioned table for a specified version of the database. This view is what non-SDE applications will see as the versioned table, and should have a descriptive name. This view is constructed from a set a queries and SQL packages that use the base, additions, and deletions table for data.

Applications access the versioned view by setting the desired version in the database using the supplied SQL Stored Procedure sde_version_util.set_current_version (‘version name’) function in the ArcSDE client library. Once set, all operations will be against the specified version of the database. If no version is set using this function, the “DEFAULT” version will be used.

The Base Table

The Base Table is the original DBMS table that will become a multi-versioned table. The Base table must have an ArcSDE maintained row-id column. If an ArcSDE maintained row-id column already exists in the table, no additional columns are added to the base table. If there is no ArcSDE maintained row-id column, this column must be created or an existing column must be registered as the row-id column. If the table contains an integer column, this column can be used as the row-id column as long as the values in this column are non-empty unique values. The table register command is used to create a new column or use an existing column as the ArcSDE maintained row-id column. A base table supports versions when it is registered as a multi-versioned table in the TABLE_REGISTRY, and the associated state additions, deletions, and multi-version view tables have been created.

<base table> |
Column Name | Description
<table columns> | Existing columns in the table.

The Additions Table

Each versioned table will have an associated addition table named [A<Registration_ID>]. This table maintains a copy of each row inserted into the table under a specific state. Each column in the base table is duplicated in the addition table. In addition, a SDE_state_ID column is added; the Row_ID column is already defined in the base table schema, and has been repeated here for emphasis. The Row_ID column is named as defined by the TABLE_REGISTRY entry for each versioned table.

A<registration_ID> |
Column Name | Description
SDE_state_ID | The state that the feature belongs to.
<row_ID> | The unique identifier for the row.
<other columns> | Existing columns in the table.

The Deletions Table

For each versioned table in the database, there is an associated deletion table. This table is named [D<Registration_ID>] and is created when versioning is enabled on the table. The deletion table maintains a list of all features that are deleted or modified in the versioned table; SDE_state_ID and SDE_Deletes_Row_ID form a unique key for the feature or row to be deleted. The Deleted_At indicates the state that is requesting the modification. The delete table has the following columns:

D<registration_ID> |
Column Name | Description
SDE_state_ID | The state that the row is being deleted from.
SDE_Deletes_Row_ID | The unique ID of the row being updated or deleted.
Deleted_At | The state that is making the modification.


Native SQL Access

SQL Access to Multi-Versioned Tables

SQL access to a versioned databases is provided with SDE. SQL access is implemented through database views, stored procedures and triggers on the underlying versioned table schema. The internal details for these views, stored procedures, and triggers vary across databases, but the same general access model is provided for application developers.
SQL access to tables in the versioned database uses an SQL construct called an INSTEADOF trigger. These triggers are not available on all RDBMS releases. At this release, SQL access to multi-versioned tables is supported on the SQL Server 2000 and Oracle databases. SQL access to multi-versioned tables is not supported on SQL Server 7, Informix, or DB2 - these database releases do not support INSTEADOF triggers at this time.
SQL access to tables in a versioned database is enabled on individual tables - you enable SQL access by creating a multi-versioned view on each table. When the view is created, additional triggers will also be enabled on the table to allow inserts, updates, and deletes. Your program works with the view just like it would work with any other table.

Creating a Multi-Versioned View

The multi-versioned views may be created in two ways. Using the SDETABLE administration command, or through the SDE C or JAVA API.
Using the SDETABLE administration utility, a multi version view named "countries" can be created on a table named "stcntry94" as follows:

sdetable -o create_mv_view -T countries -t stcntry94 -i sde81_ora816 -s clysdale -u world -p world
ArcSDE 8.1 Build 632 Sun Oct 8 22:41:49 PDT 2000 Attribute Administration Utility
--------------------------------------------------------------------------------------------
Successfully created MV view countries for table stcntry94.
Developers can use the C-API or JAVA API to create mutli-version views. The SDE C-API provides the following function calls to enable and check the status of multi-versioned views:

SE_table_create_mv_view | Creates a multi-versioned view on a versioned table.
SE_table_delete_mv_view | Deletes the multi-versioned view associated with a versioned table.
SE_reginfo_get_mv_view_name | Returns the name of the multi-versioned view associated with this table registration.

The corresponding JAVA API functions are:

SeTable.createMultiVersionView | Creates a multi-versioned view on a versioned table.
SeTable.deleteMultiVersionView | Deletes the multi-versioned view associated with a versioned table.
SeRegistration.getMvViewName | Returns the name of the multi-versioned view associated with this table registration.

Using Multi-Versioned Views

A multi-versioned view presents an application with the appropriate rows for a specified version of the database. The desired version is set by the application using the SQL Stored Procedure set_current_version (‘<desired version>’) . This packages validates the supplied version name, and sets the corresponding state internally; if no version is set, the “Default” version will be used. NOTE: The complete package name is database dependent - in these examples, only the function name set_current_version (‘<desired version>’)  is used; in actual practice, the SQL Server or Oracle specific package prefix will need to be included.
Triggers are placed on the version table view for insert, update, and delete operations. Applications wishing to insert, update, or delete rows in a versioned table set the desired version using the same SQL Stored Procedure set_current_version (‘desired version’). The trigger validates the user and version prior to performing inserts, updates or deletes.

The set_current_version (‘desired version’) only needs to be called once to initialize the version, or change to another version. If the desired version has not changed, you do not need to call the function again within the scope of the user’s DBMS connection.

Executing Queries

Using our earlier example, with versions WORKING, EDIT1 and EDIT2 - to select rows in the current WORKING version, the following SQL expression is executed:

For Oracle: EXECUTE sde.version_util.set_current_version ('WORKING');

For SQL Server 2000: EXECUTE sde.sde.set_current_version 'WORKING';

SELECT OID, DATA FROM ExampleTable;

At Time T=1, the results of this query will be:

OID | Data
100 | aa
101 | b

At Time T=4, the results of this query will be:

OID | Data
100 | <deleted>
101 | bbb
102 | c

At Time T=5, the results of this query will be:

OID | Data
100 | a
101 | bbb
102 | C
103 | d

If we want to restrict this query to only Data = b, the query looks like this:

For Oracle: EXECUTE sde.version_util.set_current_version ('WORKING');

For SQL Server 2000: EXECUTE sde.sde.set_current_version 'WORKING';

SELECT OID, Data FROM ExampleTable WHERE Data = ‘b’;

The results of this query will be:

OID | Data
101 | b

Executing Inserts

Inserting a row into Version EDIT2 with a Data value of ‘www’, the multi-version view automatically assigns the object ID. The following SQL code could be used:

For Oracle: EXECUTE sde.version_util.set_current_version ('EDIT2');

For SQL Server 2000: EXECUTE sde.sde.set_current_version 'EDIT2';

INSERT INTO ExampleTable (Data) VALUES ( ‘www’);

Executing Deletes

To delete a row into Version EDIT2 with an OID of 102, the following SQL code could be used:

For Oracle: EXECUTE sde.version_util.set_current_version ('EDIT2');

For SQL Server 2000: EXECUTE sde.sde.set_current_version 'EDIT2';

DELETE FROM ExampleTable WHERE OID = 102

Executing Updates

To update a row in Version EDIT2 with a OID of 102, changing Data value of ‘www’ to 'yyy'. The following SQL code could be used:

For Oracle: EXECUTE sde.version_util.set_current_version ('EDIT2');

For SQL Server 2000: EXECUTE sde.sde.set_current_version 'EDIT2';

UPDATE ExampleTable SET Data = 'yyy' WHERE OID = 102

Back


Native SQL Access Procedures

sde.version_user_ddl.create_version

sde.version_user_ddl.delete_version

sde.version_user_ddl.edit_version

sde.version_util.set_current_version

Back


Database Schema

The ArcSDE schema consists of system (metadata) tables, geodatabase system (metadata) tables, and user tables that are created by applications to manage features and their attributes.

ArcSDE system tables

Geodatabase system tables

User tables

Table diagrams

Binary Geometry Format


ArcSDE system tables

The system tables include tables that maintain information about the feature classes and feature datasets. The feature class and feature dataset spatial references, states, and versions are also maintained within the ArcSDE data dictionary. The ArcSDE data dictionary combines both the ArcSDE system tables, created by the giomgr process upon initial startup and the geodatabase system tables, created with the gdbs executable.

The tables and views are created and maintained by ArcSDE. They are not designed for use by external programs. Changing the data within the ArcSDE data dictionary either by an external program or manually is not supported.

The purpose of displaying them here is to provide an inventory of data objects that must be backed up for later restoration in the event system failure.

For each instance, the ArcSDE software creates several system tables within the sde user’s schema to manage spatial data

The ArcSDE for SQLSERVER product prefixes each of these tables with SDE_.

VERSION table

The VERSION table maintains information about the ArcSDE version with which the database expects to operate. The table contains the specific release identification for the most recent version of ArcSDE that executed a version update. The ArcSDE giomgr process checks this table to ensure proper version compatibility.

Update the VERSION table and other ArcSDE system tables with the sdeversion program after a new version of ArcSDE is installed.LAYERS table

The LAYERS table maintains data about each feature class in the database. The information helps to build and maintain spatial indexes, ensure proper shape types, and store the spatial reference for the coordinate data.

It includes the following information:

  • Owner, table, and column name for the shape column

  • Name of the table containing the actual shape data

  • Spatial index grid cell sizes

  • Envelope (minx, miny, maxx, maxy)

  • ArcSDE assigned layer ID for internal use

  • Feature class description

  • Statistical information on the shapes in the feature class for data transfer buffer configurations

GEOMETRY_COLUMNS table

The geometry_columns table contains the feature class names, it’s geometry’s storage type and coordinate dimension.

RASTER_COLUMNS table

The raster_columns table contains a list of raster columns stored in the database. The table and raster column names, the owner, creation date, and description, database name, configuration keyword, and minimum ID. The database name is required for some DBMS system.

SPATIAL_REFERENCES table

The spatial_references table contains the coordinate system and floating point to integer transformation values. Internal functions use the parameters of a spatial reference system to translate and scale each floating point coordinate of the geometry into 32-bit positive integers prior to storage. Upon retrieval, the coordinates are restored to their original external floating point format.

TABLE_REGISTRY table

The table_registry table manages all registered tables. The values include an ID, table name, owner, and description.

VERSIONS table

The versions table contains the version meta-data. The values include a name, owner, status (public or private), state ID, and description.

STATES table

The states table contains the state meta-data. The values include a state ID, owner, creation and closing time, state ID of the parent state and lineage information

MVTABLES_MODIFIED table

The mvtables_modified table contains the state and table Ids modified in a given state.

RECONCILED_STATES table

The reconciled_states table contains the ids for two reconciled states.

METADATA table

The metadata table contains ArcSDE meta-data. Used in conjunction with the LOCATORS table for geocoding.

LOCATORS table

The locators table stores information relating to locator objects.

Back


Geodatabase system tables

GDB_ANNOSYMBOLS table

The gdb_annosymbols table contains feature class annotation. The values include annosymbol ID, and the annotation string.

GDB_ATTRRULES table

The gdb_attrrules table contains the rules for each attribute domain.

GDB_CODEDDOMAINS table

The gdb_codeddomains table contains coded values for each domain.

GDB_DEFAULTVALUES table

The gdb_defaultvalues table contains the default values for the subtypes of each object class.

GDB_DOMAINS table

The gdb_domains table contains the attribute constraints associated with attribute rules of the gdb_attrrules table.

GDB_EDGECONRULES table

The gdb_edgeconnrules contains the edge connectivity rules. Edge connectivity rules together with junction rules function to define the geometric networks stored in the gdb_geonetwork table.

GDB_FEATURECLASSES table

The gdb_featureclasses table contains the feature classes.

GDB_FEATUREDATASET table

The gdb_featuredataset table contains the feature datasets. A feature dataset is a grouping of feature classes.

GDB_FIELDINFO table

The gdb_fieldinfo table contains the field name, default domain names values and default string and number values for each attribute field associated with a feature class.

GDB_GEOMNETWORKS table

The gdb_geomnetworks table contains the geometric networks of a feature dataset.

GDB_JNCONNRULES table

The gdb_jnconnrules contains the junction connectivity rules. Junction connectivity rules together with edges rules function to define the geometric networks stored in the gdb_geomnetwork table

GDB_NETCLASSES table

The gdb_netclasses table contains the networks classes of the geometric networks.

GDB_NETWEIGHTS table

The gdb_netweights table contains the network weights of the geometric networks.

GDB_NETWEIGHTASSOCS table

The gdb_netweightassocs table contains the association between the network classes and the network weights of the geometric networks.

GDB_NETCLASSES table

The gdb_netclasses table contains the network classes of the geometric networks.

GDB_NETWORKS table

The gdb_networks table contains the logical networks.

GDB_OBJECTCLASSES table

The gdb_objectclasses contains all of the object classes in the geodatabase, which includes the feature classes, relationship classes, business tables and columns.

GDB_RANGEDOMAINS table

The gdb_rangedomains table contains the range of possible values allowed for a domain.

GDB_RELCLASSES table

The gdb_relclasses table contains the table relationships required by the geodatabase.

GDB_RELEASE table

The gdb_release table stores geodatabase version release information as a single record.

GDB_RELRULES table

The gdb_relrules table contains the object class relationship rules.

GDB_SPATIALRULES table

The gdb_spatialrules table contains the spatial rules of the geodatabase. Such rules determine which spatial relationships are and are not permitted.

GDB_STRINGDOMAINS table

The gdb_stringdomains table stores a domain’s format string.

GDB_SUBTYPES table

The gdb_subtypes table contains the valid subtypes of the geodatabase object classes.

GDB_USERMETADATA table

The gdb_usermetadata table stores the users meta-data for all parts of the geodatabase including object classes, feature classes, feature datasets, logical networks, and relationship classes.

GDB_VALIDRULES table

The gdb_validrules table contains all the valid rules of the geodatabase, which includes the attribute rules, edge connectivity rules, junction connectivity rules, relationship rules and spatial rules.

Back


User Tables

With the exception of the business table these tables should be accessed through the application interface provide either by ArcInfo or an ArcSDE C API program. Direct access to the non-business tables via the SQL interface is not encouraged.

Business tables

The business table is an existing DBMS table that ArcSDE spatially enables by adding a shape column. A spatial column is also known as a layer. Information about each layer (or spatial column) is maintained in the LAYERS table.

The data type of the shape column varies depending on the implementation of SDE.

Binary schema implementation

Under this implementation the integer shape column contains feature identifiers that uniquely reference the shape data. The feature ID joins the business table with the associated ArcSDE-managed feature and spatial index tables.

A trigger is defined on the spatially enabled business table to maintain the relationship between records in the business table and the feature table. The trigger is

TRIGGER SPCOL_DEL_CASCADE_<layer>
AFTER DELETE OR UPDATE OF <SPATIAL_COL> ON business_table
IF DELETING THEN
DELETE FROM F<layer>
WHERE F<layer>.fid = old.<SPATIAL_COL>
DELETE FROM S<layer>
WHERE S<layer>.fid = old.<SPATIAL_COL>

IF UPDATING AND new.<SPATIAL_COL> IS NULL THEN
DELETE FROM F<layer>
WHERE F<layer>.fid = old.<SPATIAL_COL>
DELETE FROM S<layer>
WHERE S<layer>.fid = old.<SPATIAL_COL>

IF UPDATING AND new.<SPATIAL_COL> != old.<SPATIAL_COL> THEN
raise_application_error
(-20013,'Invalid update of SDE Spatial Column.')

Feature table

Under the binary schema implementation, the Feature table stores the geometric shapes for each feature. This table is identified by the spatial column layer number, using the name F<layer_id>.

The relationship between the business table and the feature table is managed through the FID. This key, which is maintained by ArcSDE, is unique for the spatial column.

NAME | DATA TYPE | NULL?
Fid | SE_INTEGER_TYPE | NOT NULL
numofpts | SE_INTEGER_TYPE | NOT NULL
entity | SE_SMALLINT_TYPE | NOT NULL
eminx | SE_FLOAT_TYPE(64) | NOT NULL
eminy | SE_FLOAT_TYPE(64) | NOT NULL
emaxx | SE_FLOAT_TYPE(64) | NOT NULL
emaxy | SE_FLOAT_TYPE(64) | NOT NULL
eminz | SE_FLOAT_TYPE(64) | NULL
emaxz | SE_FLOAT_TYPE(64) | NULL
min_measure | SE_FLOAT_TYPE(64) | NULL
max_measure | SE_FLOAT_TYPE(64) | NULL
area | SE_FLOAT_TYPE(64) | NOT NULL
len | SE_FLOAT_TYPE(64) | NOT NULL
points | SE_BLOB_TYPE | NULL

Feature table.

The feature table stores the shape geometry and has several additional columns to support ArcSDE query processing.

For storing the geometry:

• points (SE_BLOB)—contains the byte stream of point coordinates that define the shape’s geometry

For query processing:

• area (SE_FLOAT_TYPE)—the area of the shape

• len (SE_FLOAT_TYPE)—the length or perimeter of the shape

• eminx, eminy, emaxx, emaxy (SE_FLOAT_TYPE)—the envelope of the shape

• eminz (SE_FLOAT_TYPE)—the minimum Z value in the shape

• emaxz (SE_FLOAT_TYPE)—the maximum Z value in the shape

• min_measure (SE_FLOAT_TYPE)—the minimum measure value in the shape

• max_measure (SE_FLOAT_TYPE)—the maximum measure value in the shape

For internal ArcSDE use:

• fid (SE_INTEGER_TYPE)—contains the unique ID that joins the feature table to the business table

• entity (SE_INTEGER_TYPE)—the type of geometric feature stored in the shape column (e.g., point, linestring)

• numofpts (SE_INTEGER_TYPE)—the number of points defining the shape

As shapes are inserted or updated, the extents, numofpts, and so on, are recalculated automatically. The points column contains the coordinate array for the shape in a compressed integer format. The binary layout of this data is discussed in the ArcSDE C Developer’s Guide.

Spatial index table

NAME | DATA TYPE | NULL?
sp_fid | SE_INTEGER_TYPE | NOT NULL
gx | SE_INTEGER_TYPE | NOT NULL
gy | SE_INTEGER_TYPE | NOT NULL
eminx | SE_INTEGER_TYPE | NOT NULL
eminy | SE_INTEGER_TYPE | NOT NULL
emaxx | SE_INTEGER_TYPE | NOT NULL
emaxy | SE_INTEGER_TYPE | NOT NULL

The spatial index of the binary implementation is the spatial index table. It stores references to shapes based on a simple, regular grid. This table is identified by the spatial column layer number, using the name S<layer_id>.

The spatial index contains an entry for each shape and grid cell combination. A feature that crosses into three grid cells has three entries in the table. When a spatial query is performed, the grid cells within the search area are identified and used to return a list of candidate shapes.

• sp_fid (SE_INTEGER_TYPE)—contains the ID that joins the spatial index table to the feature table

• gx, gy (SE_INTEGER_TYPE)—the grid cell coordinate

• eminx, eminy, emaxx, emaxy (SE_INTEGER_TYPE)—the envelope of the shape

Normalized schema

In the normalized schema, the coordinate values for a shape are stored as individual numeric data types in a separate Geometry Table. Access from a business table to a shape is through a foreign key—the Geometry ID, or GID.

The Geometry Table has at least six columns: GID, ETYPE, ESEQ, SEQ, and two coordinate values. The shape type (point, line string, or polygon) is stored as an ETYPE value. The ETYPE is either 1 (point), 2 (line string), or 3 (polygon). A normalized representation might not store all of a shape’s coordinates in a single row in the geometry table. To accommodate shapes with a large number of values, the geometry is represented by multiple rows. The element sequence value, ESEQ, identifies multiple parts within a shape. Rows that represent a single part are listed by a sequence (SEQ) value so that rows are returned in the proper order.

The tables below illustrate the relationship between a business table and its Geometry Table in the normalized geometry representation. Any number of coordinate pairs are allowed for a given table. In this example, two coordinate pairs are stored for each row in the Geometry Table.

Feature-ID | Column 1 | Column 2 | Geometry ID
101 |  |  | 1
102 |  |  | 2
103 |  |  | 3
... |  |  | ...

A business table with GIDs.

GID | ETYPE | ESEQ | SEQ | X1 | Y1 | X2 | Y2
1 | 3 | 1 | 1 | 10.00 | 10.00 | 10.00 | 15.00
1 | 3 | 1 | 2 | 10.00 | 15.00 | 15.00 | 15.00
1 | 3 | 1 | 3 | 15.00 | 15.00 | 15.00 | 10.00
1 | 3 | 1 | 4 | 15.00 | 10.00 | 10.00 | 10.00
2 | 3 | 1 | 1 | 100.00 | 100.00 | 100.00 | 150.00
2 | 3 | 1 | 2 | 100.00 | 150.00 | 150.00 | 150.00
2 | 3 | 1 | 3 | 150.00 | 150.00 | 150.00 | 100.00
2 | 3 | 1 | 4 | 150.00 | 100.00 | 100.00 | 100.00
2 | 3 | 2 | 1 | 70.00 | 90.00 | 75.00 | 90.00
... | ... | ... | ... | ... | ... | ... | ...

A Geometry Table with two shapes. The second shape has more than one part.

Spatial types and functions schema

Some of the implementations of ArcSDE employ the latest object-relation technology. Instead of using a separate table to store the shapes, the spatial types and functions schema stores them directly in the shape column. Under this implementation the shape column is an abstract data type (ADT).

The ArcSDE spatial types and functions implementation includes seven of the ADTs defined by OpenGIS RFP-1. Those data types are point, linestring, polygon, multipoint, multilinestring, multipolygon and geometry.

The database administrator normally runs a program that adds these ADTs and a number of spatial functions to a database. After the ADTs and functions have been added, the database becomes “spatially enabled”. Users may now create tables that include columns whose types are of the seven spatial ADTs listed in above paragraph. As a bonus the spatial types and functions allow users to perform spatial queries using the SQL interface provided by the DBMS vendor.

Logical network tables

The n_*_edesc table contains description of the edges within a network.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_EDESC table format

The n_*_estatus table contains status of each element including its deleted state and disabled state.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_ESTATUS table format

The n_*_etopo table contains the edge topology.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_ETOPO table format

The n_*_flodir table contains the flow direction.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_FLODIR table format

The n_*_jdesc table contains description of the junctions of a network.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*JjDESC table format

The n_*_jstatus table contains status of each element including its deleted state and disabled state.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_JSTATUS table format

The n_*_jtopo table contains the junction topology.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_JTOPO table format

The n_*_jtopo2 table contains the overflow junction topology.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
pagenumber | SE_INTEGER_TYPE | NOT NULL
pageblob | SE_BLOB_TYPE | NULL

N_*_JTOPO2 table format

The n_*_props table contains the network properties including number of junctions, edges and turns.

NAME | DATA TYPE | NULL?
propertyid | SE_INTEGER_TYPE | NULL
propertyname | SE_STRING_TYPE(255) | NULL
propertyvalue | SE_INTEGER_TYPE | NULL

N_*_PROPS table format

The n_*_e* table contains all of the network edge weights.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
name | SE_STRING_TYPE | NULL
internalid | SE_INTEGER_TYPE | NULL
weighttype | SE_INTEGER_TYPE | NULL
maxvalue | SE_DOUBLE_TYPE(38,8) | NULL
minvalue | SE_DOUBLE_TYPE(38,8) | NULL

N_*_E* table format

The n_*_j* table contains all of the network junction weights.

NAME | DATA TYPE | NULL?
oid | SE_INTEGER_TYPE | NOT NULL
name | SE_STRING_TYPE | NULL
internalid | SE_INTEGER_TYPE | NULL
weighttype | SE_INTEGER_TYPE | NULL
maxvalue | SE_DOUBLE_TYPE(38,8) | NULL
minvalue | SE_DOUBLE_TYPE(38,8) | NULL

N_*_J* table format

Logfile tables

The sde_logfiles table contains the logfile meta-data. The values include a logfile name and ID, the registration ID, flags, and session information.

NAME | DATA TYPE | NULL?
logfile_name | SE_STRING_TYPE(256) | NOT NULL
logfile_id | SE_INTEGER_TYPE | NOT NULL
logfile_data_id | SE_INTEGER_TYPE | NOT NULL
registration_id | SE_INTEGER_TYPE | NOT NULL
flags | SE_INTEGER_TYPE | NOT NULL
session_tag | SE_INTEGER_TYPE | NOT NULL

SDE_LOGFILES table format

The sde_logfile_data table contains the list of business table records that are part each log.

NAME | DATA TYPE | NULL?
logfile_data_id | SE_INTEGER_TYPE | NOT NULL
sde_row_id | SE_INTEGER_TYPE | NOT NULL

SDE_LOGFILE_DATA table format

Version tables

The adds table stores the versioned business tables added records for each state.

NAME | DATA TYPE | NULL?
User defined column | User defined data |
names | types |
. | . |
. | . |
. | . |
sde_state_id | SE_INTEGER_TYPE | NOT NULL

A<registration_ID> table format

The stored the versioned business tables deleted records for each state.

NAME | DATA TYPE | NULL?
sde_state_id | SE_INTEGER_TYPE | NOT NULL
sde_row_id | SE_INTEGER_TYPE | NOT NULL
EQUIVALENCE_STATE_ID | SE_INTEGER_TYPE | NOT NULL

D<registration_ID> table format

Raster tables

ArcSDE stores images in three raster tables. The raster blocks table, SDE_BLK_<raster_ID>, stores the actual image data for each band of the image. The raster band table, SDE_BND_<raster_ID>, stores meta-data about the bands of the image. The raster description table, SDE_RAS_<raster_ID>, stores the description of the images within a raster column. The raster column that is added to the business table stores the raster ID, which joins the business table to the three raster tables.

The raster blocks table stores the image tiles.

NAME | DATA TYPE | NULL?
rasterband_id | SE_INTEGER_TYPE | NOT NULL
rrd_factor | SE_INTEGER_TYPE | NOT NULL
row_nbr | SE_INTEGER_TYPE | NOT NULL
col_nbr | SE_INTEGER_TYPE | NOT NULL
block_data | SE_BLOB_TYPE | NOT NULL

SDE_BLK_<raster_column_ID> table format

The raster description table stores the description of the images stored in a raster column.

NAME | DATA TYPE | NULL?
raster_id | SE_INTEGER_TYPE | NOT NULL
description | SE_STRING_TYPE(65) | NULL

SDE_RAS_<raster_column_ID> table format

The raster band table stores information about the bands of the images. Among other things this table stores the with and height of the band tiles, the pixel type, and pixel depth.

NAME | DATA TYPE | NULL?
rasterband_id | SE_INTEGER_TYPE | NOT NULL
sequence_nbr | SE_INTEGER_TYPE | NOT NULL
raster_id | SE_INTEGER_TYPE | NOT NULL
name | SE_STRING_TYPE(65) | NULL
band_flags | SE_INTEGER_TYPE | NOT NULL
band_width | SE_INTEGER_TYPE | NOT NULL
band_height | SE_INTEGER_TYPE | NOT NULL
band_types | SE_INTEGER_TYPE | NOT NULL
block_width | SE_INTEGER_TYPE | NOT NULL
block_height | SE_INTEGER_TYPE | NOT NULL
eminx | SE_FLOAT_TYPE(64) | NOT NULL
eminy | SE_FLOAT_TYPE(64) | NOT NULL
emaxx | SE_FLOAT_TYPE(64) | NOT NULL
emaxy | SE_FLOAT_TYPE(64) | NOT NULL
cdate | SE_FLOAT_TYPE(64) | NOT NULL
mdate | SE_FLOAT_TYPE(64) | NOT NULL
statistics | SE_BLOB_TYPE | NULL

SDE_BND_<raster_column_ID> table format

Back


Diagrams

The diagrams provided are only reference material for database administrators and applications developers. At no time should any of the data in the ArcSDE or geodatabase system tables be manipulated directly, for example, with SQL. ArcSDE and ArcInfo manage and populate these tables.

Similarly, the "f", "s", "a", and "d" tables of a featureclass (layer) and the log file tables should never be manipulated directly. ArcSDE manages these tables.

To properly print the diagrams, your printer must be PostScript enabled. If you experience problems such as dropped text or dropped diagram elements, your printer is probably not PostScript enabled or may not have enough memory.

Diagrams:

ArcSDE and Geodatabase System Table Map

ArcSDE Featureclass (layer) Example Schema

ArcSDE Raster Dataset Example Schema


Introduction to C API Concepts

The C Programmer's Interface

The information provided here is generally applicable to both C and Java development. Function tables in the different concept topics list functions and their description. Be sure to check function table lists in the concepts for equivalent Java functionality.

Data access model
Database Ccnnections
Managing Tables
Metadata
Working with Geometry
Locking objects in the database
Managing a versioned database
Coordinate reference and projections
Raster data management

To help you be successful with your ArcSDE development effort, there are two books that you should read:

   Understanding ArcSDE

   Managing ArcSDE Services

Both books are part of your ArcSDE package. Many concepts are covered in these books that are not covered in this online developer help. To get the best start with ArcSDE, please read these books.

Additional recommended reading includes:

   Configuration and Tuning Guide for Oracle
    (pdf file in SDEHOME/documentation)

   Configuration and Tuning
    Guide for Microsoft SQL Server (pdf file in SDEHOME/documentation)

   Configuration and Tuning Guide for Informix (pdf
    file in SDEHOME/documentation)

   Configuration
    and Tuning Guide for IBM DB2 (pdf file in SDEHOME/documentation)

Only the Oracle install will have the Oracle guide, etc.


Data access model

ArcSDETM implements a simple model for data access. The model is built around the standard cursor model defined in the Structured Query Language (SQL). The data access model builds on the traditional model by supporting spatial constraints in a query.

A database connection is a connection to a source of geographic data. It represents the ArcSDE server, which can respond to requests for geographic information.

A query defines a specific set of features that you wish to retrieve from the database connection. When you apply a query to a database connection, you define a collection of geographic features that meet the criteria defined by the query. Queries can be quite simple, involving only an attribute value comparison, or they can be complex, involving multiple tables connected by primary/foreign key relationships with both attribute and spatial components.

The result of a query is a cursor, which provides a mechanism for iterating over a collection of geographic features. The cursor has an associated state, which represents the current feature in the collection. Functions are provided on the cursor to step through each individual feature in the collection. The cursor object is also responsible for returning the values defined for the current feature.

The cursor returns values, which represent the state of an element in the result set. Result set elements can have values of several different kinds—simple types such as numbers and strings or complex types such as a geometric shape.

In ArcSDE, the query and resulting cursor are implemented as a stream. A stream is a container that associates the query with the cursor, and is referenced by a unique stream handle. The stream also contains the buffering and data transmission properties for transmitting the results of query between the server and the client application.

Database connections

Any interaction with the Spatial Database Engine requires a connection between the ArcSDE server and a database. To establish a connection, the application provides the name of the host server for the ArcSDE instance, and a DBMS user name and password. All operations performed on the resulting connection are executed as the named DBMS user.

Connections are referenced by a handle, which is returned to the application upon successful execution of the SE_connection_create function. Applications can connect to multiple ArcSDE databases by executing SE_connection_create for each required connection; each successful connection request returns a unique connection handle.

SE_CONNECTIONConnection;
SE_ERRORConnect_error;
LONGrc;
CHAR*server, *instance, *database, *user, *passwd;

/* Connect to ArcSDE */
rc = SE_connection_create
(server, instance, database, user, passwd, &Connect_error,
&Connection);
/*See Error handling section for check_error function code. */
check_error (Connection, NULL, rc, "SE_connection_create");

/* Body of application */

/* Disconnect from ArcSDE */
SE_connection_free (Connection);

Connections provide the link between the application and the ArcSDE server. As a result, applications can use the connection to manage many server properties including the server process priority, buffering characteristics, and error handling.

ArcSDE streams

Streams transfer data between the ArcSDE client and server. Streams are similar to DBMS cursors for accessing a set of attributes and stepping through a selected set one row at a time. A typical operation sequence is:

  • Create a stream

  • Initiate a statement or query on the stream

  • Execute the stream

  • Fetch a single record from the stream

  • Retrieve column values and feature geometry from the fetched record

  • Close a stream at the end of a series of fetches

  • Free the stream when finished using it

In addition to providing a cursor interface to the application developer, a stream implements buffered communications between the ArcSDE client and server. Each stream is an independent object with its own statement or query, resulting set of features or rows, and current position in the set. A stream handle, which provides access to the stream, is returned to the application upon successful creation of a stream. Because each stream is independent, applications can create as many streams as necessary to accomplish the task; however, additional streams increase the amount of memory used on both the client and server.

SE_CONNECTIONConnection;
SE_STREAMStream;
SE_ERRORConnect_error;
LONGrc;
CHAR*server, *instance, *database, *user, *passwd;

/* Connect to ArcSDE */
rc = SE_connection_create
(server, instance, database, user, passwd, &Connect_error,
&Connection);
/*See Error handling section for check_error function code. */
check_error (Connection, NULL, rc, "SE_connection_create");

/* Create a stream for the query */
rc = SE_stream_create (Connection, &Stream);
/* See Error handling section for check_error function code. */
checke_error (Connection, NULL, rc, "SE_stream_create");

/* Body of application */

/* Release the stream when it is no longer needed */
rc = SE_stream_free (Stream);

/* Disconnect from ArcSDE */
SE_connection_free (Connection);

Functions that manage streams

Function Name | Function Description
SE_stream_close | Shuts down a stream without freeing resources.
SE_stream_create | Creates a stream handle for a given connection.
SE_stream_free | Shuts down a stream, freeing resources.
SE_stream_get_connection | Returns a stream’s connection handle.
SE_stream_in_progress | Returns the status of the specified stream.

Fetching data

Inserting data

Updating features

Deleting features

Common elements of stream functions

Database transactions

Logfiles

Error handling

Back to the concepts introduction


Database Connections

The first step in using ArcSDE is to connect with an ArcSDE server. To establish a connection, the application must provide the following information:

    The name of the host server for the ArcSDE service

  • The name of the service

  • The name of the database (not applicable for Oracle®)

  • The user name

  • The password for the DBMS

ArcSDE processes the connection request on the specified host and returns a connection handle to the application once a connection is established. All operations performed using this connection are executed as the named DBMS user.

You can use operating system environment variables to define the server, instance, database, user name, and password. While supported, using the password variable isn't recommended because it can compromise your security. Pass NULL for any argument for which the variable is set. The variables are

SDESERVER—the name of the ArcSDE server

SDEINSTANCE—the name of the ArcSDE instance

SDEDATABASE—the name of the ArcSDE database (if required by the underlying DBMS)

SDEUSER—the user name

SDEPASSWORD—the user's password

Associated with a connection are transactions, used to group operations so that an entire set of changes are either recorded or rejected. For example, if a set of parcels are being updated based on a specific change order, a transaction groups the changes so that all changes are posted together. If a set of changes cannot be successfully inserted, then the entire transaction is rejected. All transactions end when a user disconnects.

There are several levels of transactions at work within ArcSDE. At the lowest level, ArcSDE and DBMS are logging transactions for individual records. Above that, the application may choose to group operations with a transaction. ArcSDE provides API functions to start and commit transactions, and to roll back a transaction. Additional functions are available to perform intermediate commits, and to set an autocommit interval that forces intermediate commits after a specified number of features have been modified.

Connection functions

Function Name | Function Description
SE_connection_commit_transaction | Commits a user transaction.
SE_connection_create | Connects the application to the ArcSDE server.
SE_connection_free | Disconnects the application from the ArcSDE server.
SE_connection_free_all_locks | Releases all locks held by the specified connection.
SE_connection_free_keyword_info | Releases the DBMS keyword list.
SE_connection_get_dbms_info | Retrieves DBMS information.
SE_connection_get_ext_error | Retrieves extended error information.
SE_connection_get_error_string | Retrieves a localized string for an error code.
SE_connection_get_instance_name | Returns the name of the instance associated with this connection.
SE_connection_get_keyword_info | Retrieves a list of DBMS-specific keywords.
SE_connection_get_release | Returns the ArcSDE release version number for this connection.
SE_connection_get_server_name | Returns the name of the server associated with this connection.
SE_connection_get_server_time | Returns the clock time of the server associated with this connection.
SE_connection_get_sql_info | Retrieves the DBMS-specific function name.
SE_connection_get_stream_spec | Returns buffering properties for future streams.
SE_connection_get_user_name | Returns the name of the user associated with this connection.
SE_connection_get_version | Returns the ArcSDE release version number for this connection.
SE_connection_rollback_transaction | Rolls back a user transaction.
SE_connection_set_concurrency | Establishes concurrency control for threaded client applications.
SE_connection_set_stream_spec | Sets buffering properties for future streams.
SE_connection_set_transaction_autocommit | Sets the autocommit frequency.
SE_connection_start_transaction | Starts a user transaction.

ArcSDE services

Named databases

Back to the concepts introduction


SDE Services

ArcSDE Services

Please be sure to read the book "Managing ArcSDE Services" if you have not already done so. You should also read chapter 4 of "Understanding ArcSDE" to understand the configuration choices between using an ArcSDE server (application server) and using direct connections.

An ArcSDE service is a single iomgr (I/O manager) connected to a single DBMS database. It is possible to start multiple giomgrs and connect each of them to a separate database. For Oracle 8i and SQL Server, you may also start multiple giomgrs on the same database if needed. Each Oracle 806, Informix and DB2 instance exists within its own memory space and executable environment and connects to its own database. ArcSDE instances may share the same executable programs, but require their own home directories.

Starting an ArcSDE service spawns the giomgr background process which establishes a single connection to the DBMS database. The giomgr process always connects to the DBMS database through the ‘sde’ user. After the giomgr process establishes the connection, it attempts to lock the ‘sde’ user’s VERSION table. If the giomgr process is unable to lock the table, it disconnects and issues an error stating that another giomgr process has already connected to this database. Thus a one-to-one relationship between the ArcSDE instance and the DBMS database must exist. Instances have unique names and home directories.

Once giomgr starts, it listens on the port number assigned to the service for ArcSDE client connection requests. When a connection request is received, the giomgr verifies the user and password and spawns a gsrvr process and assigns it a new port number to communicate on.

The services.sde file

The services.sde file contains the unique instance name and the network port number and protocol on which the giomgr accepts connection requests to the instance. By default the services.sde file instance name is esri_sde with a 5151 port number using a TCP/IP protocol.

#

# ESRI SDE Remote Protocol

#

esri_sde 5151/tcp

The system services file must contain a service name that matches the instance name in the services.sde file in the etc subdirectory of the ArcSDE home directory. When the connection is started, the system services file is searched for a service name that matches the instance name in the services.sde file. If a match is not found, an error is returned.

Location of system services file

UNIX® (all platforms) /etc/services

Windows NT™ C:\winnt\system32\drivers\etc\services

The system services file contains many services names at least one of which must match your sde instance name. The service name must be entered into the services file on both the ArcSDE server and the client machines. You may use the NIS (Network Information Service) /etc/services file if you are running yellow pages, in which case you don’t have to redundantly update the client and server /etc/services files.

Here is an example from an UNIX /etc/services file that contains two ArcSDE instances:

esri_sde 5151/tcp sde # SDE default instance iomgr port.

esri_sde2 5153/tcp sde2 # SDE instance # 2 iomgr port.

This defines two instance names: esri_sde and esri_sde2.

Each instance has its own home directory with the instance name in the services.sde file.

Clients and services

The service argument of the SE_connection_create function accepts the instance directly unless it is NULL. In that case, it uses the instance defined in the SDEINSTANCE variable. If the SE_connection_create instance argument is NULL and SDEINSTANCE is undefined, the instance name defaults to ‘esri_sde’.

NOTE: The term "instance" and "service" are synonymous. The term instance is a legacy term from SDE 2. The term "service" is the more current name and is used in concepts discussions. However, many functions and ArcSDE administration commands still have references to "instance".

The example below creates a connection to the ‘sdedev’ instance.

CHAR server[30] = "elvis";

CHAR instance[30] = "sdedev";

CHAR username[30] = "businessmap";

CHAR password[30] = "mapserver";

SE_ERROR error;

SE_CONNECTION connect;

SE_connection_create(server, instance, NULL, username, password, error, connect);

or

setenv SDEINSTANCE sdedev

CHAR server[30] = "elvis";

CHAR username[30] = "businessmap";

CHAR password[30] = "mapserver";

SE_ERROR error;

SE_CONNECTION connect;

SE_connection_create(server, NULL, NULL, username, password, error, connect);

Instance functions

Function Name | Function Description
SE_instance_configuration | Returns an ArcSDE configuration.
SE_instance_control | Controls the state of the connected instance.
SE_instance_free_locks | Frees memory allocated for a list of instance locks.
SE_connection_free_state_locks | Frees memory allocated for a list of state locks held by the specified instance.
SE_instance_free_statistics | Frees memory allocated for a list of instance statistics.
SE_connection_free_table_locks | Frees memory allocated for a list of table locks held by the specified instance.
SE_instance_free_users | Frees memory allocated for a list of instance users.
SE_instance_free_variables | Frees memory allocated for a list of environment variables.
SE_connection_free_version_locks | Frees memory allocated for a list of version locks held by the specified instance.
SE_instance_get_locks | Returns a list of locks in use on a specified ArcSDE instance.
SE_instance_get_objectlocks | Returns a list of object locks in use on a specified instance.
SE_instance_get_statistics | Gets statistics on the specified ArcSDE instance.
SE_instance_get_state_locks | Returns a list of state locks in use on a specified instance.
SE_instance_get_table_locks | Returns a list of table locks in use on a specified instance.
SE_instance_get_users | Gets the users of the specified ArcSDE instance.
SE_instance_get_variables | Gets the environment variables of the specified ArcSDE instance.
SE_instance_get_version_locks | Returns a list of version locks in use on a specified instance.
SE_instance_start | Starts an ArcSDE instance on the current node.
SE_instance_status | Gets status information on an ArcSDE instance.

Back


Named Databases

Microsoft SQL Server, Informix and DB2 support named ‘databases’ or ‘data sources’ within an installation. If the DBMS does support databases, then the database or data source name can be required when issuing a connection request. For example, let’s say that you’re creating a connection with SE_connection_create.

The C syntax is

LONG SE_connection_create
(const CHAR *server,
const CHAR *instance,
const CHAR *database,
const CHAR *username,
const CHAR *password,
SE_ERROR *error,
SE_CONNECTION *connection);

and the server machine name is ‘abbey’, the service name is ‘esri_sde’, and the database name is ‘kentucky’.

SE_connection_create("abbey", "esri_sde", "kentucky", ...)

Three functions help you to use the database functionality if it is supported by your DBMS. If the DBMS does not support named databases or data sources, the warning SE_DBMS_DOES_NOT_SUPPORT is returned. SE_database_list returns a list of databases or data sources available in a particular instance. SE_database_use changes the database or data source in an active connection. SE_database_free_list frees a list of databases allocated by SE_database_list.

Database functions

Function Name | Function Description
SE_database_free_list | Frees a list of databases.
SE_database_list | Returns a list of databases or data sources for a DBMS instance.
SE_database_use | Changes the database or data source being used for a connection.

Back


Fetching data

The principal steps in getting data from the ArcSDE are:

  • Connect to a database

  • Define a query

  • Execute the query

  • Iteratively fetch the returned rows

  • For each row, get the selected column values

  • Close the query

  • Disconnect from the database

Defining an attribute query

A query identifies the subset of records in a database that satisfy specific criteria. For example, return all records that have a population value less than 10,000. SQL provides a language to define such queries. For the above example, assume a table of cities, with columns of city_name, area, and population. To obtain all cities with a population less than 10,000:

"select city_name, area, population from cities where population < 10000"

ArcSDE extends standard SQL queries by supporting spatial relationships and spatial searches. SQL does not have a standard spatial language extension, so ArcSDE provides a method to associate both an attribute-based SQL constraint and a geometric constraint on a query.

Attribute constraints are supplied to the API through an SE_SQL_CONSTRUCT structure. The SE_SQL_CONSTRUCT contains three pieces of information:

  • The number of tables in the query

  • The list of tables in the query

  • The ‘where’ portion of the query

Taking the city population example, the SE_SQL_CONSTRUCT for the query is defined as:

/* Allocate an SE_SQL_CONSTRUCT */

rc = SE_sql_construct_alloc (1, &sqlc);

/* See Error handling section for check_error function code. */

check_error(Connection,NULL,rc, "SE_sql_construct_alloc");

sqlc->where = malloc(20);

if (sqlc == NULL)

{

printf ("Failed to allocate sqlc\n");

exit(0);

}

/* Fill in the details of SQL query */

strcpy (sqlc->tables[0], "cities");

strcpy (sqlc->where, "population < 10000");

Once the SE_SQL_CONSTRUCT is defined, it can be used as the attribute constraint on a stream query. The SE_stream_query function defines which table columns to return and which attribute query constrains the record set:

/* Define the number and names of the table columns to be returned */

num_cols = 3;

attrs = (CHAR **) malloc (num_cols * sizeof(CHAR *));

attrs[0] = "city_name";

attrs[1] = "area";

attrs[2] = "population";

/* Define the stream query */

rc = SE_stream_query (Stream, num_cols, attrs, sqlc);

/* See Error handling section for check_error function code. */

check_error(NULL, Stream, rc, "SE_stream_query");

Functions to set up an attribute query

Function Name | Function Description
SE_stream_query | Initiates a query
SE_stream_query_from_file | Initiates a query on an external file.
SE_stream_query_logfile | Initiates a stream query statement using a logfile as the data source.
SE_stream_prepare_sql | Prepares an arbitrary SQL statement for a stream.

Executing the query

Once a query has been formulated and defined on a particular stream, it can be executed. Executing the query causes the database to evaluate the SQL statement and return a set of records satisfying the constraint. The SE_stream_execute function executes the SQL query on the stream:

/* Execute the SQL constraint on the stream */

rc = SE_stream_execute (Stream);

/* See Error handling section for check_error function code. */

check_error(NULL, Stream, rc, "SE_stream_execute");

Functions to Execute the Query

Function Name | Function Description
SE_stream_execute | Executes the given stream.

Getting the resulting records

When a query is executed, a collection of records is returned. The returned collection is referenced by the stream handle on which the query was executed. The stream maintains a state for the collection. The state indicates the current record being processed and the list of values being returned.

Applications iterate through the returned collection, processing each record individually. The SE_stream_fetch function accesses each record from the record set:

/* Iterate over the results */

while (rc == SE_SUCCESS)

{

rc = SE_stream_fetch (Stream);

if (rc == SE_SUCCESS)

{

/* For each record, decode the desired values, and do something */

}

}

The stream interface implements a ‘one-way’ cursor model. The record set is accessed in the sequence established by the server. It is not possible to access records that have been processed already because that requires executing the query again.

The values returned with each record are accessed through a set of functions that manage the different supported data types. Each of these functions takes a stream handle and column number as input and returns the appropriate data type as output. The following data types are supported:

Attribute Type | ArcSDE Type | ArcSDE Accessor Function | C Declaration
short integer | SE_SMALLINT_TYPE | SE_stream_get_smallint | SHORT
long integer | SE_INTEGER_TYPE | SE_stream_get_integer | LONG
single-precision real | SE_FLOAT_TYPE | SE_stream_get_float | FLOAT
double-precision real | SE_DOUBLE_TYPE | SE_stream_get_double | LFLOAT
character string | SE_STRING_TYPE | SE_stream_get_string | CHAR*
date | SE_DATE_TYPE | SE_stream_get_date | struct tm
binary large object | SE_BLOB_TYPE | SE_stream_get_blob | SE_BLOB_INFO
geometric shape | SE_SHAPE_TYPE | SE_stream_get_shape | SE_SHAPE

The previous example is expanded to illustrate how these functions access specific values from a record:

rc = SE_stream_execute (Stream);

/* Iterate over the results */

while (rc == SE_SUCCESS)

{

rc = SE_stream_fetch (Stream);

if (rc == SE_SUCCESS)

{

rc = SE_stream_get_string (Stream,1,name);

/* See Error handling section for check_error function code. */

check_error(NULL, Stream, rc, "SE_stream_get_string");

rc = SE_stream_get_double (Stream,2,&area);

check_error(NULL, Stream, rc, "SE_stream_get_double");

rc = SE_stream_get_integer (Stream,3,&population);

check_error(NULL, Stream, rc, "SE_stream_get_integer");

/* Now do something with the name, area and population */

}

}

Functions to fetch results

Function Name | Function Description
SE_stream_fetch | Fetches the next row from a stream
SE_stream_fetch_row | Retrieves a single feature based on the ID from the specified table.
SE_stream_get_blob | Gets a Binary Large Object column from the current row.
SE_stream_get_date | Gets a date column from the row.
SE_stream_get_double | Gets a double-precision column from the row.
SE_stream_get_ext_error | Returns the extended error information.
SE_stream_get_float | Gets a single-precision float column from the row.
SE_stream_get_integer | Gets an integer column from the row.
SE_stream_get_raster | Gets a raster column from the row.
SE_stream_get_raster_tile | Gets a raster tile from the row.
SE_stream_get_shape | Gets a shape column from the row.
SE_stream_get_smallint | Gets a small integer column from the row.
SE_stream_get_spatial_masks | Returns the spatial filter masks for the current row.
SE_stream_get_string | Gets a string column from the row.
SE_stream_bind_output_column | Binds a column to an output data location for fetches.

Pulling the completed example together:

SE_CONNECTION Connection;

SE_STREAM Stream;

SE_SQL_CONSTRUCT *sqlc

SE_ERROR Connect_error;

LONG rc, population;

SHORT num_cols;

LFLOAT area;

CHAR *server, *instance, *database, *user, *passwd;

CHAR **attrs, *name;

/* Connect to ArcSDE */

rc = SE_connection_create

(server, instance, database, user, passwd, &Connect_error,
&Connection);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_connection_create");

/* Create a stream for the query */

rc = SE_stream_create (Connection, &Stream);

check_error(Connection, NULL, rc, "SE_stream_create");

/* Allocate an SE_SQL_CONSTRUCT */

rc = SE_sql_construct_alloc (1, &sqlc);

check_error(Connection, NULL, rc, "SE_sql_construct_alloc");

/* Fill in the details of the SQL query */

sqlc->where = malloc(20);

sqlc->num_tables = 1;

strcpy (sqlc->tables[0], "cities");

strcpy (sqlc->where, "population < 10000");

/* Define the number and names of the table columns to be returned */

num_cols = 3;

attrs = (CHAR **) malloc (num_cols * sizeof(CHAR *));

attrs[0] = "city_name";

attrs[1] = "area";

attrs[2] = "population";

/* Define the stream query */

rc = SE_stream_query (Stream, num_cols, attrs, sqlc);

check_error(NULL, Stream, rc, "SE_stream_query");

rc = SE_stream_execute (Stream);

/* Iterate over the results */

while (rc == SE_SUCCESS)

{

rc = SE_stream_fetch (Stream);

if (rc == SE_SUCCESS)

{

rc = SE_stream_get_string (Stream,1,name);

check_error(NULL, Stream, rc, "SE_stream_get_string");

rc = SE_stream_get_double (Stream,2,&area);

check_error(NULL, Stream, rc, "SE_stream_get_double");

rc = SE_stream_get_integer (Stream,3,&population);

check_error(NULL, Stream, rc, "SE_stream_get_integer");

/* Now do something with the name, area and population */

}

}

/* Release the stream when it is no longer needed */

rc = SE_stream_free (Stream);

free (attrs);

free (sqlc->where);

SE_sql_construct_free (sqlc);

/* Disconnect from ArcSDE */

SE_connection_free (Connection);

Adding a spatial constraint

Adding a spatial constraint to a query is simply a matter of defining the nature of the spatial selection and associating the spatial constraint with the stream. When the queries on the stream are executed, both the spatial and attribute constraints are processed by the ArcSDE server, and the resulting record set is returned to the application.

Spatial constraints are implemented as a set of spatial filters. Each candidate shape must pass through the filters to be added to the result set. A filter has the following components:

• The name of the table containing the shape column to test

• The name of the shape column to test

• A geometric shape to use for the filter test (the search shape)

• The spatial relationship that the test must satisfy

• A Boolean value indicating whether the shape must, or must not, satisfy the geometric constraint

Suppose that you want to constrain the set of cities to those whose boundaries are within ten miles of a point. You can express this constraint as ‘find all cities whose boundary (defined as a shape in a column named boundary) intersects a circle defined by a point (x,y) and a radius (10 miles)’. The following code sample defines a spatial constraint for use with the previous examples.

SE_SHAPE Shape;

SE_POINT Point;

SE_FILTER Filter;

LFLOAT radius;

LONG max_points;

/* Create a circular shape at location x,y, with a radius of 10 miles */

/* Assume that the unit of storage in the database is feet */

Point.x = X;

Point.y = Y;

radius = 52800.0;

/* Assume SE_shape_create has already been called for Shape */

rc = SE_shape_generate_circle (Point, radius, max_points, Shape);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_shape_generate_circle");

/* Define the spatial filter */

strcpy (Filter.table, "cities");

strcpy (Filter.column, "boundary");

Filter.filter.shape = Shape;

Filter.method = SM_AI;

Filter.truth = TRUE;

Filter.filter_type = SE_SHAPE_FILTER;

/* Set the spatial constraint on the stream */

rc = SE_stream_set_spatial_constraints

(Stream, SE_SPATIAL_FIRST, FALSE, 1, &Filter);

check_error(NULL, Stream, rc, "SE_stream_set_spatial_constraints");

Functions to set the Spatial Constraint

Function Name | Function Description
SE_stream_set_spatial_constraints | Sets the spatial constraints for a stream

This code fragment is inserted with the definition of the SE_SQL_CONSTRUCT in the previous example. When the query is executed by SE_stream_execute, the result set contains all records corresponding to cities with a population less than 10000, and whose boundaries intersect a circle with a center at x,y and a radius of 10 miles.

The SE_FILTER structure is

typedef struct {
CHAR table[SE_QUALIFIED_TABLE_NAME];
CHAR column[SE_MAX_COLUMN_LEN];

LONG filter_type;

union {
SE_SHAPE shape;

struct {
LONG id;

CHAR table[SE_QUALIFIED_TABLE_NAME];

} id;

} filter;

LONG method;

CHAR *cbm_source;

UCHAR *cbm_object_code;

BOOL truth;

} SE_FILTER;

The table and column specify the location of the candidate shapes to be compared with the search shape. The filter type can be set to SE_SHAPE_FILTER or SE_ID_FILTER. If set to SE_SHAPE_FILTER, shape is populated with the search shape. If set to SE_ID_FILTER, the ID and table members contain the SE_ROW_ID and table name of the search shape. If truth is TRUE, only the records whose shapes fulfill the search method are returned. If truth is FALSE, only the records whose shapes don’t fulfill the search method are returned.

A spatial filter can use numerous types of search methods. The following chart describes the available search methods:

ArcSDE Search Method

Description

SM_ENVP

Shape envelope test
Requires the envelopes only of the search and candidate shape to overlap or touch. The envelope consists of the minimum and maximum values of a shape’s coordinates. This is the fastest search method because only an envelope test is performed. Typically used for screen displays and approximate searches.

SM_ENVP_BY_GRID

Shape envelope test in spatial index order
Same as SM_ENVP, but guarantees that shapes are returned in spatial index order.

SM_CP

Common point
Specifies that the search and candidate shapes share at least one point. Can find all parcels of land adjacent to a given parcel (assuming topological integrity between parcels).

SM_LCROSS

Line cross
The point of intersection cannot be a vertex in both shapes. Can find errors in topological integrity.

SM_COMMON

Common edge or line
The search and candidate shapes share at least one line with the same vertices.

SM_CP_OR_LCROSS

Common point or line cross

SM_LCROSS_OR_CP

The search and candidate shapes must intersect or share a common point or line (edge touch).

SM_II_OR_ET
SM_AI_OR_ET
SM_ET_OR_II
SM_ET_OR_AI

Area or interior intersection or edge touch.
Search and candidate shape boundaries must touch or cross, or one shape must be at least partially inside the other shape which must be an area  shape.

SM_AI
SM_II

Area or interior intersection
At least one of the shapes must be an area shape and the other shape must be at least partially inside it. Adjacency is not considered an area intersect.  Can determine the parcel’s zoning.

SM_AI_NO_ET

Area intersection without touching a shape boundary

SM_II_NO_ET

 One shape lies wholly inside the other (area) shape, and the boundaries of the two shapes do not touch in any way.

SM_PC

Search shape wholly contained in candidate shape
If the candidate shape is an area shape, the search shape must be wholly inside it, inclusive of the candidate shape’s boundary. If both shapes are linear shapes, the search shape’s path must be wholly included in the candidate shape’s path. If the search shape is a point shape, the search shape must be one of the candidate shape’s vertices.

SM_SC

Candidate shape wholly contained by search shape
The candidate shape is wholly contained by the search shape, inclusive of the search shape’s boundary. Opposite relationships apply as SM_PC.

SM_PC_NO_ET

Search shape wholly contained in candidate shape without edge touch
The candidate shape must be an area shape, the search shape must be wholly inside it, and their boundaries may not intersect or touch.

SM_SC_NO_ET

Candidate shape wholly contained in search shape without edge touch
The search shape must be an area shape, the candidate shape must be wholly inside it, and their boundaries may not intersect or touch.

SM_PIP

Point inside polygon
Regardless of the search shape type, this test performs a point-inside-polygon test using only the first point of the search shape. The candidate shape must be an area shape, and the point used for the test must be inside it. Identifies area shapes by pointing.

SM_IDENTICAL

Identical
Both shapes must be identical in terms of shape type and coordinate description. Typically used to find duplicate data.

Back


Inserting data

The principal steps in getting data into ArcSDE are:

  1. Connect to a database.

  2. Initiate the insert statement on the stream.

  3. For each row to be inserted
    {
    Set the data values.
    Insert row by executing statement.
    }

  4. Disconnect from the database.

The previous discussion dealt with establishing a connection to an ArcSDE database, and defining a stream for executing queries and retrieving features. These concepts are not repeated in this section.

Inserting new data into a table is the opposite of getting data from a table. Instead of executing the query, iterating over the record set, and extracting the values, you tell ArcSDE that you are inserting data, set the values, and execute the statement for each new record.

As in our previous examples, assume that you are adding new records to the cities table, and that you are adding data to the following columns: city_name, area, population, and boundary (a shape column). The following example performs this operation:

/* Define the columns to be filled in on insert */

num_cols = 4;

attrs = (CHAR **) malloc (num_cols * sizeof(CHAR *));

attrs[0] = "city_name";

attrs[1] = "area";

attrs[2] = "population";

attrs[3] = "boundary";

/* Tell the stream that you are inserting new records into the table */

rc = SE_stream_insert_table (Stream, "cities", num_cols, attrs);

/* See Error handling section for check_error function code. */

check_error(NULL, Stream, rc, "SE_stream_insert_table");

/* For each record to be inserted into the table */

while (more data exists for insert&ldots;)

{

rc = SE_stream_set_string (Stream, 1, city_name);

check_error(NULL, Stream, rc, "SE_stream_set_string");

rc = SE_stream_set_double (Stream, 2, area);

check_error(NULL, Stream, rc, "SE_stream_set_double");

rc = SE_stream_set_integer (Stream, 3, population);

check_error(NULL, Stream, rc, "SE_stream_set_integer");

rc = SE_stream_set_shape (Stream, 4, shape);

check_error(NULL, Stream, rc, "SE_stream_set_shape");

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

}

Functions to insert data

Function Name | Function Description
SE_stream_insert_into_file | Prepares to insert a row into an external file.
SE_stream_insert_table | Initiates a stream insert into a specified table.
SE_stream_set_blob | Sets the value for a blob column.
SE_stream_set_date | Sets the value for a date column.
SE_stream_set_double | Sets the value for a double-precision column.
SE_stream_set_float | Sets the value for a single-precision float column.
SE_stream_set_integer | Sets the value for an integer column.
SE_stream_set_raster_constraint | Sets the raster environment for a stream.
SE_stream_set_row | Updates a single feature based on the ID from the specified table.
SE_stream_set_shape | Sets the value for a shape column.
SE_stream_set_smallint | Sets the value for a small integer column.
SE_stream_set_state | Sets the state.
SE_stream_set_string | Sets the value for a string column.
SE_stream_set_write_mode | Sets the write mode between single-record and stream mode.
SE_stream_flush_buffered_writes | Forces any buffered writes to post on the server.
SE_stream_bind_input_column | Binds a column to an input data location for inserting a row.

Back


Updating features

Once features have been inserted into a database, you may need to update the data as values change. Updating a feature involves the following steps:

  1. Identify which features to update by formulating a query. The query can involve an attribute, a spatial constraint, or both. The SE_stream_update_table function is used to define the query.

  2. Set which values to update by setting or binding individual values. Values are set by datatype (SE_stream_set_string, SE_stream_set_integer, etc.), or bound to memory locations with SE_stream_bind_input_column.

  3. Execute the query with SE_stream_execute.

You can execute updates against a single feature or a collection of features. For example, individual parcels can be identified by using a unique identifier in the query:

strcpy (where, "Parcel_ID = 12345");

When executed, a single parcel with Parcel_ID = 12345 will have the specified columns updated. You can update groups of features by formulating a query that selects multiple features:

num_cols = 3;

attrs = malloc (num_cols * sizeof (CHAR *));

attrs[0] = "area";

attrs[1] = "population";

attrs[2] = "boundary";

/* Formulate the where clause to update the correct city */

strcpy (where, "city_name = 'Aylmer'");

/* Initialize the stream with the update operation */

rc = SE_stream_update_table (stream, "cities", num_cols, (const char **)attrs, where);

/* See Error handling section for check_error function code. */

check_error(NULL, Stream, rc, "SE_stream_update_table");

/* Bind the address of our input variables and indicators */

rc = SE_stream_bind_input_column (stream, 1, &area, &area_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_input_column");

rc = SE_stream_bind_input_column (stream, 2, &population, &pop_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_input_column");

rc = SE_stream_bind_input_column (stream, 3, shape, &shape_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_input_column");

/* Set the indicators for non NULL input data */

area_indicator = SE_IS_NOT_NULL_VALUE; pop_indicator = SE_IS_NOT_NULL_VALUE;

shape_indicator = SE_IS_NOT_NULL_VALUE;

/* Execute the update statement */

rc = SE_stream_execute (stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

free (attrs);

Functions to Update Rows

Function Name | Function Description
SE_stream_update_row | Initiates a stream update into a specified row.
SE_stream_update_table | Initiates a stream update into a specified table.
SE_stream_set_blob | Sets the value for a blob column.
SE_stream_set_date | Sets the value for a date column.
SE_stream_set_double | Sets the value for a double-precision column.
SE_stream_set_float | Sets the value for a single-precision float column.
SE_stream_set_integer | Sets the value for an integer column.
SE_stream_set_raster_constraint | Sets the raster environment for a stream.
SE_stream_set_row | Updates a single feature based on the ID from the specified table.
SE_stream_set_shape | Sets the value for a shape column.
SE_stream_set_smallint | Sets the value for a small integer column.
SE_stream_set_state | Sets the state.
SE_stream_set_string | Sets the value for a string column.
SE_stream_set_write_mode | Sets the write mode between single-record and stream mode.
SE_stream_flush_buffered_writes | Forces any buffered writes to post on the server.
SE_stream_bind_input_column | Binds a column to an input data location for inserting a row.

Back


Deleting features

As in data updates, deleting data through the ArcSDE API involves selecting which features to delete, then executing the statement to delete the rows from the table.

In this example, the city of Hull was incorporated into the city of Aylmer during Aylmer’s expansion. You need to delete the city of Hull. An SQL statement is used to delete the records from a table named ‘cities’ where “city_name = ‘Hull’”. The shape and spatial index records are deleted through triggers that ArcSDE maintains on the ‘cities’ table.

/* Formulate the SQL statement to delete Hull */

strcpy (sql_stmt, "delete from cities where city_name = 'Hull'");

/* Initialize the stream with a pass-through SQL operation */

rc = SE_stream_prepare_sql (stream, sql_stmt);

check_error(NULL, Stream, rc, "SE_stream_prepare_sql");

/* Execute the SQL statement */

rc = SE_stream_execute (stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

Functions to Delete Rows

Function Name | Function Description
SE_stream_delete_row | Deletes a specified row from a layer
SE_stream_delete_by_id_list | Deletes specified rows by IDs from a table.
SE_stream_delete_from_table | Deletes rows from a table using an SQL where clause.

Suppose you want to delete features based on a spatial query. To do this, you’ll need to execute a spatial query to identify the features to delete. Each of these features is deleted one at a time with the SE_stream_delete_row function.

In this example, the user has created a large city by merging several smaller cities. The user now has to delete the small cities. You can use the boundary of the large city, and select each city wholly contained by it. Then delete each city that you find, using the ArcSDE row identifier, SE_ROW_ID.

SE_STREAM fetch_stream, delete_stream;

LONG rc, sde_row_id;

CHAR **attrs;

SE_SQL_CONSTRUCT *sqlc;

SE_FILTER filter;

SHORT row_indicator;

rc = SE_stream_create (Connection, &delete_stream);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_stream_create");

rc = SE_stream_create (Connection, &fetch_stream);

check_error(Connection, NULL, rc, "SE_stream_create");

/* Prepare the column list and SQL construct. Just select the ArcSDE row id; it is

all you need to delete. */

attrs = (CHAR **)malloc (sizeof(CHAR *));

if (NULL == attrs) { printf ("failed to allocate column list\n");

 exit(0);

}

attrs[0] = "SE_ROW_ID";

rc = SE_sql_construct_alloc (1, &sqlc);

check_error(Connection, NULL, rc, "SE_sql_construct_alloc");

strcpy (sqlc->tables[0], "cities");

/* Initialize the retrieval stream with query */

rc = SE_stream_query (fetch_stream, 1, (const CHAR **)attrs, sqlc);

check_error(NULL, Stream, rc, "SE_stream_query");

free (attrs);

SE_sql_construct_free (sqlc);

/* Prepare a spatial filter, assuming the variable 'shape' already contains the search

area you need */

filter.filter_type = SE_SHAPE_FILTER;

filter.filter.shape = shape;

strcpy (filter.table, "cities");

strcpy (filter.column, "boundary");

filter.method = SM_SC;

filter.truth = TRUE;

/* Set the spatial constraint */

rc = SE_stream_set_spatial_constraints (fetch_stream, SE_SPATIAL_FIRST, FALSE, 1,

&filter);

check_error(NULL, Stream, rc, "SE_stream_set_spatial_constraints");

/* Execute the query */

rc = SE_stream_execute (fetch_stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

/* Bind the row id column */

rc = SE_stream_bind_output_column (fetch_stream, 1, &sde_row_id, &row_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

/* Loop through the fetched rows */

while (SE_SUCCESS == rc)

{

  rc = SE_stream_fetch (fetch_stream);

  check_error(NULL, Stream, rc, "SE_stream_fetch");

  {

    /* The fetch populated the sde_row_id variable. Now delete that row. */

    rc = SE_stream_delete_row (delete_stream, "cities", sde_row_id);

    check_error(NULL, Stream, rc, "SE_stream_delete_row");

    /* Close the delete stream to flush the delete */

    rc = SE_stream_close (delete_stream, TRUE);

    check_error(NULL, Stream, rc, "SE_stream_close");

  }

}

rc = SE_stream_free (fetch_stream);

check_error(NULL, Stream, rc, "SE_stream_free");

rc = SE_stream_free (delete_stream);

check_error(NULL, Stream, rc, "SE_stream_free");

Back


Common elements of stream functions

This section discusses a series of topics that are common to many of the stream functions.

SQL construct

An SQL construct is a C structure which helps to specify the ‘from’ and ‘where’ portions of an SQL query.

An SQL construct is used any time an application needs to specify tables or constraining where clauses in an ArcSDE application. An example is when initializing a query with SE_stream_query. The SE_SQL_CONSTRUCT structure defines the table joins and SQL where clause to execute.

typedef struct {

LONG num_tables; /* Number of tables */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

The ‘tables’ field is an array of pointers to table names. The ArcSDE software will construct the from clause with the same order of table names as the array. The table names may contain owners, using the owner.table notation.

The ‘where’ clause must use the SQL syntax supported by the underlying RDBMS; it is not interpreted by ArcSDE. The where clause may optionally include the where keyword. The ‘where’ clause can’t contain any ORDER BY or GROUP BY clauses.

SQL construct functions

Function Name | Function Description
SE_sql_construct_alloc | Allocates an SE_SQL_CONSTRUCT structure.
SE_sql_construct_free | Frees an SE_SQL_CONSTRUCT structure.

Column name specification

Many functions require the application to specify which columns to operate on. For example, SE_stream_query needs to know which columns to fetch, and SE_stream_insert_table needs to know which columns to insert into. All column names may be of the form <<owner.>table.>column. As with DBMS queries, you only need to specify the table name when the column name is ambiguous without it. For example, an application references two tables in an SE_SQL_CONSTRUCT tables list, and each table has a column called ‘parcel_id’. To retrieve a particular parcel_id column, the application needs to specify the table name in the column list. If a table is not in the DBMS user’s schema, then the table owner’s name needs to be prefixed to the table name.

The case sensitivity of table and column names depends on the underlying DBMS.

Column name arrays

In most functions, column names are specified by a ‘const CHAR **’ C data type. This represents an array of character string pointers. The ‘const’ specification implies that the contents of the strings won’t be modified. There are two common methods of constructing an array of string pointers.

Case 1: Assigning string pointers

In this example, the application is willing to hard-code the names of the columns directly in the code. Typically, this occurs in canned queries where the full schema are known at compile time, and won’t change. The following code sample would then suffice, assuming three columns named col1, col2, and col3.

static const CHAR *columns[] = { "col1","col2","col3" };

Case 2: Copying column names

In this case, the user makes a copy of the column names that are part of the given query. For this case, assume that there are three columns, in variables str1, str2, and str3.

CHAR **columns;

SHORT column_index;

columns = (CHAR **)malloc (3 * sizeof (CHAR *));

if (NULL == columns)

{

  printf ("Ran out of memory !\n");

  exit (0);

}

for (column_index = 0; column_index < 3; column_index++)

{

  /* Allocate for the maximum owner.table.column notation */

  columns[column_index] = malloc (SE_QUALIFIED_COLUMN_LEN);

  if (NULL == columns[column_index])

  {

    printf {"Ran out of memory !\n");

    exit (0);

  }

}

strcpy (columns[0], str1);

strcpy (columns[1], str2);

strcpy (columns[2], str3);

Column number references

Column numbers are required in functions that get, set, or describe a particular column. The column number refers to the position of the column in the column array of string pointers. All functions that require a column number expect column numbers to be one-based, not zero-based; that is, the first column in the list is column 1.

Binding vs. getting or setting

There are two ways to fetch data values from a result set during fetches, and two ways to set data values during inserts or updates. When fetching, an application may use the SE_stream_bind_output_column function to bind any column value, or use the individual data type specific SE_stream_get_* functions. When inserting or updating, the application may use SE_stream_bind_input_column, or the data type specific SE_stream_set_* family of functions.

The bind method provides better performance. Because you bind a particular column just once outside the fetch or insert loop, fewer function calls occur, which means less parameter checking. The get and set functions provide compile time type checking. This prevents you, for example, from binding the address of a SHORT when the column is a LONG. Because the bind functions operate on void pointers, no type checking can be done.

Common errors

As you begin to develop ArcSDE applications using streams, you are likely to run into some common programming errors. This section discusses how to avoid some of the pitfalls.

SE_INVALID_STREAM This error occurs when an application passes an invalid stream handle to a stream function. This occurs if an SE_STREAM variable is declared and used in a stream function before calling the SE_stream_create function. Also, this error occurs if an attempt is made to use a stream handle after having called SE_stream_free on it.

SE_INVALID_STREAM_TYPE This error occurs when an application attempts to use a stream function that is not supported for the kind of operation the stream was initialized to. For example, using SE_stream_set_integer on a stream initialized with SE_stream_query results in an SE_INVALID_STREAM_TYPE error. This is because SE_stream_set_integer is used to specify a data value when inserting or updating data; it has no meaning when fetching data.

SE_FUNCTION_SEQUENCE_ERROR This error occurs when a function is called while the stream is not in the correct state for that function. For example, this occurs if you call SE_stream_fetch before executing the stream with SE_stream_execute. Most functions return this error if the stream hasn’t been initialized with an operation, or if it is in a closed state.

SE_COLUMN_NOT_BOUND This error occurs when not all of the columns have been bound using the either of the bind or the set functions. For example, if you call SE_stream_insert_table with three column names, but you have only bound values to two of the columns, then SE_stream_execute returns an SE_COLUMN_NOT_BOUND error.

ArcSDE row ids

Each row in a spatially enabled or multiversion table has a unique identifier called SE_ROW_ID. You can use this integer pseudo-column as part of a select list in SE_stream_query or SE_stream_query_logfile. You can’t use SE_ROW_ID in a where clause. You can also pass the row ID as the identifier into the direct access functions, SE_stream_fetch_row, SE_stream_set_row, and SE_stream_delete_row. You can set the row ID column with SE_reginfo_set_rowid_column.

Back


Database transactions

Transactions are a property of an ArcSDE connection and bind operations so that an entire set of changes are either recorded or rejected. For example, if a set of parcels is being updated in a particular order, you can use a transaction to define the beginning and end of the changes so that all changes are posted together. If a set of changes can’t be successfully inserted, the entire transaction is rejected.

The ArcSDE software provides API functions to start, commit, and rollback transactions. Additional functions are available to set an autocommit interval that forces intermediate commits after a specified number of features have been modified.

Connection functions for Transactions

Function Name | Function Description
SE_connection_commit_transaction | Commits a user transaction
SE_connection_rollback_transaction | Rolls back a user transaction.
SE_connection_set_transaction_autocommit | Sets the autocommit frequency.
SE_connection_start_transaction | Starts a user transaction.

The following example demonstrates the use of transactions when loading data.

/* Set the autocommit interval for this connection to 500. If this */

/* function is not called, the AUTOCOMMIT parameter in the giomgr.defs */

/* file will be used. */

rc = SE_connection_set_transaction_autocommit (Connection, 500);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_connection_set_transaction_autocommit");

/* Define the columns to be filled in on insert */

num_cols = 4; attrs = (CHAR **) malloc (num_cols * sizeof(CHAR *));

attrs[0] = "city_name";

attrs[1] = "area";

attrs[2] = "population";

attrs[3] = "boundary";

/* Tell the stream that you are inserting new records into the table */

rc = SE_stream_insert_table (Stream, "cities", num_cols, attrs);

check_error(NULL, Stream, rc, "SE_stream_insert_table");

/* Start transaction */

rc = SE_connection_start_transaction (Connection);

check_error(Connection, NULL, rc, "SE_connection_start_transaction");

/* For each record to be inserted into the table */

while (more data exists for insert…)

{

  rc = SE_stream_set_string (Stream, 1, city_name);

  check_error(NULL, Stream, rc, "SE_stream_set_string");

  rc = SE_stream_set_double (Stream, 2, area);

  check_error(NULL, Stream, rc, "SE_stream_set_double");

  rc = SE_stream_set_integer (Stream, 3, population);

  check_error(NULL, Stream, rc, "SE_stream_set_integer");

  rc = SE_stream_set_shape (Stream, 4, shape);

  check_error(NULL, Stream, rc, "SE_stream_set_shape");

  rc = SE_stream_execute (Stream); check_error(NULL, Stream, rc, "SE_stream_execute");

}

/* Commit any remaining records */

rc = SE_connection_commit_transaction (Connection);

check_error(Connection, NULL, rc, "SE_connection_commit_transaction");

Back


Logfiles

Logfiles are important for applications that need to manage a persistent set of rows from a table or layer. For example, after identifying a set of features, the application can maintain a list of these specific features so that subsequent operations process only the identified features. Persistent row subsets are managed through logfiles.

Logfiles are stored as DBMS tables in a user's tablespace. Logfiles maintain a list of row identifiers, and can be used as a data source for many data retrieval and geoprocessing operations. A logfile is tied to a specific table or layer.

Logfile functions use two types of names. Some functions require a simple name that is the logfile name only. Functions that allow read/write access by the owner use simple logfile names. The second type of name combines a username and the logfile name; for example, username\filename. Legal delimiters between the username and file name are the , . \ ; characters. Username file names are primarily used for read-only logfiles where other users are allowed access to the logfile.

There are two types of logfiles: LAYER type and TABLE type. LAYER type logfiles record layer FID values; are usable only with layers; are created using the SE_LOG_FOR_LAYER flag of the SE_loginfo_set_target_object function; and have the limitation that only rows having a non-null feature can be recorded. TABLE type logfiles record SDE_ROW_ID values; are usable with any table, not just layers; and are created using the SE_LOG_FOR_TABLE flag of the SE_loginfo_set_target_object function .

Logfiles also have a persistence property: Temporary or Persistent. Temporary logfiles are automatically deleted when the connection is dropped, while persistent logfiles are not deleted.

Logfile properties are managed through the opaque SE_LOGINFO object. The following functions are provided to set and retrieve these properties:

Loginfo functions

Function Name | Function Description
SE_loginfo_create | Creates an SE_LOGINFO object
SE_loginfo_free | Frees an SE_LOGINFO object.
SE_loginfo_free_list | Frees a list of an SE_LOGINFO object.
SE_loginfo_get_id | Returns the ID of a logfile.
SE_loginfo_get_name | Returns the name of a logfile.
SE_loginfo_get_target_object | Returns the layer or table that a logfile is based on.
SE_loginfo_is_persistent | Returns TRUE if the logfile is persistent.
SE_loginfo_set_name | Sets the name of a logfile.
SE_loginfo_set_persistence | Sets the persistence of a logfile.
SE_loginfo_set_target_object | Sets the layer or table that a logfile is based on.

Logfile operations include:

  • Logfile management

  • Logfile I/O

  • Boolean operations between logfiles

  • Logfile sorting and counting

  • Geoprocessing by logfile

  • Shape extent by logfile

Logfile functions

Function Name | Function Description
SE_log_add_id | Adds a given row ID to a logfile.
SE_log_add_id_list | Adds a list of row IDs to a logfile.
SE_log_alter | Changes a logfile’s attributes.
SE_log_calculate_extent | Gets the extent of all features referenced in a logfile.
SE_log_close | Closes the specified logfile.
SE_log_combine | Combines two logfiles with a Boolean operation.
SE_log_copy | Copies one logfile to another.
SE_log_count | Counts the number of rows referenced in a logfile.
SE_log_count_ids | Counts the number of rows referenced in a logfile.
SE_log_create | Creates the specified logfile.
SE_log_delete | Deletes the specified logfile.
SE_log_delete_id_list | Deletes a list of row IDs to a logfile.
SE_log_get_by_name | Returns information about a logfile.
SE_log_get_by_owner | Returns a list of logfiles owned by a user.
SE_log_get_by_table | Returns a list of logfiles based on a table.
SE_log_get_id_list | Returns a list of row IDs to a logfile.
SE_log_get_open_log_info | Returns a loginfo structure for an open logfile.
SE_log_grant_access | Grants a user access to the owner's logfiles.
SE_log_make_name | Generates a unique logfile name.
SE_log_open | Obsolete. Opens a logfile for processing.
SE_log_open_log | Opens a logfile for processing.
SE_log_revoke_access | Removes a user’s access to the owner’s logfiles.
SE_log_set_type | Obsolete. Sets a logfile to persistent or temporary.
SE_log_sort | Sorts the specified logfile.

Stream Logfile functions

Function Name | Function Description
SE_stream_set_logfile | Enable autolog of IDs to logfile for a stream.
SE_stream_query_logfile | Initiate a query using a logfile as a constraint.

Obsolete Logfile Functions

Two functions in the logfile API are considered obsolete, but are still provided for backwards compatibility: SE_open_log and SE_log_set_type. These functions have been superceded with the functions SE_log_open_log and SE_loginfo_set_persistence, respectively. New logfile applications should avoid using the obsolete functions where possible.

Logfile Usage Notes

Logfiles are created using the functions SE_log_open_log, SE_log_create or SE_log_open. The functions SE_log_copy and SE_log_combine can also create a new logfile.

The SE_log_delete function is used to delete a logfile. Logfiles with Temporary persistence will also be deleted at the end of a user’s session.

The functions SE_log_add_id or SE_log_add_id_list can be used to add IDs to an open logfile.

The function SE_stream_set_logfile can be used to enable autolog of result row IDs to a logfile.

The function SE_stream_query_logfile initializes a stream query constrains the query result to only features or rows having IDs in the logfile.

Logfile Example Source Code

The following source code examples are provided:

1. Adding a list of SDE_ROW_ IDs to a logfile.

2. Setting a logfile on a stream to autolog the query result feature IDs.

3. Using a logfile in a stream query.

4. Get list of ids from logfile.

5. Combines these operations to pull everything together

Example 1: Adding a list of features to a logfile.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "sdetype.h"

#include "sdeerno.h"

:

:

SE_CONNECTION handle;

SE_LOG log;

SE_LOGINFO loginfo;

CHAR log_name[SE_MAX_TABLE_LEN];

LONG *add_list;

LONG rc, i, count;

/* Connect to database using SE_connection_create. */

:

:

/******************************/

/* Fill in logfile structure. */

/******************************/

rc = SE_log_make_name (handle, log_name); /* Generate unique logfile name. */

rc = SE_loginfo_create(&loginfo);

rc = SE_loginfo_set_name(loginfo,log_name);

rc = SE_loginfo_set_target_object(loginfo, SE_LOG_FOR_TABLE, "PARCELS", “”);

rc = SE_loginfo_set_persistence ( loginfo, FALSE); /* Temporary logfile. */

/****************************************/

/* Create and open log for write access */

/****************************************/

rc = SE_log_open_log( handle, loginfo, SE_OUTPUT_MODE, &log );

/******************************************/

/* Add 100 row ids to the logfile. */

/******************************************/

for( i=0; i< 100; i++ )

{

rc = SE_log_add_id( handle, log, (i+1) );

}

/******************************************/

/* Add a list of 1000 row ids to the logfile. */

/******************************************/

add_list = (LONG *)malloc (1000*sizeof(LONG));

for( i=0; i< 1000; i++ )

add_list[i] = i+100;

rc = SE_log_add_id_list( handle, log, 1000, add_list);

count = SE_log_count (handle, log);

/********/

/* Done */

/********/

rc = SE_log_close( handle, log );

Example 2: Setting a logfile on a stream to autolog the query result features.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "sdetype.h"

#include "sdeerno.h"

:

:

SE_CONNECTION handle;

SE_LOG log;

SE_LOGINFO loginfo;

SE_SQL_CONSTRUCT *construct;

CHAR log_name[SE_MAX_TABLE_LEN];

CHAR **attrs;

LONG rc, count;

/******************************/

/* Fill in logfile structure. */

/******************************/

rc = SE_log_make_name (handle, log_name); /* Generate unique logfile name. */

rc = SE_loginfo_create(&loginfo);

rc = SE_loginfo_set_name(loginfo,log_name);

rc = SE_loginfo_set_target_object(loginfo, SE_LOG_FOR_LAYER, "PARCELS", "FEATURE");

rc = SE_loginfo_set_persistence ( loginfo, TRUE); /* Persistent logfile. */

/****************************************/

/* Create and open log for write access */

/****************************************/

rc = SE_log_open_log( handle, loginfo, SE_OUTPUT_MODE, &log );

/**********************************/

/* Create stream and setup query. */

/**********************************/

rc = SE_stream_create (handle, &stream);

rc = SE_sql_construct_alloc (1, &construct);

strcpy (construct->tables[0], "PARCELS");

attrs = (CHAR **)malloc (2*sizeof(CHAR **));

attrs[0] = "PARCEL_ID";

attrs[1] = "ZONING";

rc = SE_stream_query (stream, 2, (const CHAR **)attrs, construct);

/*****************************************/

/* Set logfile for stream to autolog to. */

/*****************************************/

rc = SE_stream_set_logfile (stream, log, FALSE );

/*************************************/

/* Execute stream and fetch results. */

/*************************************/

rc = SE_stream_execute (stream);

while (SE_SUCCESS == rc)

{

rc = SE_stream_fetch (stream);

}

count = SE_log_count (handle, log);

/********/

/* Done */

/********/

rc = SE_log_close( handle, log );

rc = SE_stream_close (stream, TRUE);

SE_loginfo_free (loginfo);

SE_sql_construct_free (construct);

Example 3: Using a logfile in a stream query.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "sdetype.h"

#include "sdeerno.h"

:

:

SE_CONNECTION handle;

SE_SQL_CONSTRUCT *construct;

CHAR log_name[SE_MAX_TABLE_LEN];

CHAR **attrs;

LONG rc;

/**********************************/

/* Create stream and setup query. */

/**********************************/

rc = SE_stream_create (handle, &stream);

rc = SE_sql_construct_alloc (1, &construct);

strcpy (construct->tables[0], "PARCELS");

attrs = (CHAR **)malloc (2*sizeof(CHAR **));

attrs[0] = "PARCEL_ID";

attrs[1] = "ZONING";

/******************************************************************/

/* Setup stream query using logfile that was generated elsewhere. */

/******************************************************************/

strcpy (log_name,"PARCEL_LOGFILE");

rc = SE_stream_query_logfile (stream, log_name, 2, (const CHAR **)attrs, construct);

/*************************************/

/* Execute stream and fetch results. */

/*************************************/

rc = SE_stream_execute (stream);

while (SE_SUCCESS == rc)

{

rc = SE_stream_fetch (stream);

}

/********/

/* Done */

/********/

rc = SE_stream_close (stream, TRUE);

SE_sql_construct_free (construct);

Example 4: Get list of ids from logfile.

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include "sdetype.h"

#include "sdeerno.h"

:

:

SE_CONNECTION handle;

SE_LOG log;

SE_LOGINFO loginfo;

CHAR log_name[SE_MAX_TABLE_LEN];

LONG *id_list;

LONG rc, i, n_ids, total_ids;

/* Connect to database using SE_connection_create. */

:

:

/******************************/

/* Fill in logfile structure. */

/******************************/

strcpy (log_name, "PARCEL_LOGFILE"); /* Name of existing logfile. */

rc = SE_loginfo_create(&loginfo);

rc = SE_loginfo_set_name(loginfo,log_name);

/*************************************/

/* Open existing log for read access */

/*************************************/

rc = SE_log_open_log( handle, loginfo, SE_INPUT_MODE, &log );

/******************************************/

/* Add 100 ids to the logfile. */

/******************************************/

id_list = (LONG *)malloc(100*sizeof(LONG));

total_ids = 0;

while (SE_SUCCESS == rc)

{

rc = SE_log_get_id_list( handle, log, 100, &n_ids, id_list );

if (SE_FINISHED == rc) break;

total_ids += n_ids;

for (i=0;i<n_ids;i++)

printf ("ID: %d\n",id_list[i]);

}

/********/

/* Done */

/********/

rc = SE_log_close( handle, log );

Example 5: Pulling together

In this example, the user wants all streets in the cities of Aylmer and Gatineau. You will retrieve the features by executing two spatial queries, using each city’s boundary as a spatial constraint. The application wants to work with the combined results of the two queries, so you will save the results in a logfile. The application will then use the logfile as data source for subsequent processing.

SE_SHAPE aylmer_boundary, gatineau_boundary, street, water_main;

SE_STREAM Stream;

LONG rc;

CHAR logfile_name[80], name[21], **attrs;

SE_SQL_CONSTRUCT *sqlc;

SE_FILTER filter;

SHORT street_indicator, name_indicator;

SE_LOG log_handle;

.

.

.

rc = SE_stream_create (Connection, &Stream);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_stream_create");

/* STEP 1: GET THE AYLMER STREETS */

/* Prepare the column list and SQL construct. Then display the street

and its name. */

attrs = (CHAR **)malloc (2 * sizeof(CHAR *));

if (NULL == attrs)

{

printf ("Failed to allocate column list\n");

exit(0);

}

attrs[0] = "street";

attrs[1] = "name";

rc = SE_sql_construct_alloc (1, &sqlc);

check_error(Connection, NULL, rc, "SE_sql_construct_alloc");

strcpy (sqlc->tables[0], "streets");

/* Initialize the retrieval stream with query */

rc = SE_stream_query (Stream, 2, (const CHAR **)attrs, sqlc);

check_error(NULL, Stream, rc, "SE_stream_query");

/* Prepare a spatial filter, assuming the variable 'aylmer_boundary'

already contains the city of Aylmer's boundary */

filter.filter_type = SE_SHAPE_FILTER;

filter.filter.shape = aylmer_boundary;

strcpy (filter.table, "streets");

strcpy (filter.column, "street");

filter.method = SM_SC;

filter.truth = TRUE;

/* Set the spatial constraint */

rc = SE_stream_set_spatial_constraints (Stream, SE_SPATIAL_FIRST,

FALSE, 1, &filter);

check_error(NULL, Stream, rc, "SE_stream_set_spatial_constraints");

/* Make a temporary logfile, and automatically log the ArcSDE row ids

into it as you fetch the rows */

rc = SE_log_make_name (Connection, logfile_name);

check_error(Connection, NULL, rc, "SE_log_make_name");

rc = SE_log_open (Connection, logfile_name, "streets", SE_OUTPUT_MODE,

SE_LOG_TEMPORARY, &log_handle);

check_error(Connection, NULL, rc, "SE_log_open");

rc = SE_stream_set_logfile (Stream, log_handle, FALSE);

check_error(NULL, Stream, rc, "SE_stream_set_logfile");

/* Execute the query */

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

/* Bind the street and name columns */

rc = SE_stream_bind_output_column (Stream, 1, street, &street_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

rc = SE_stream_bind_output_column (Stream, 2, name, &name_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

/* Loop through the fetched rows */

while (SE_SUCCESS == rc)

{

rc = SE_stream_fetch (Stream);

if (SE_SUCCESS == rc)

{

/* Application specific function to draw the street */

user_app_draw_shape (street);

/* Print the street name if there is one */

if (SE_IS_NOT_NULL_VALUE == name_indicator)

printf ("street name: %s\n", name);

}

}

check_error(NULL, Stream, rc, "SE_stream_fetch");

/* Close the stream without resetting it, so that you keep the

logfile active */

rc = SE_stream_close (Stream, FALSE);

check_error(NULL, Stream, rc, "SE_stream_close");

/* STEP 2: GET THE GATINEAU STREETS */

/* Now re-execute the same query, but with the city of

Gatineau's boundary in the gatineau_boundary variable.

You can re-use the SQL construct and attrs column name array. */

filter.filter.shape = gatineau_boundary;

/* Initialize the retrieval stream with query */

rc = SE_stream_query (Stream, 2, (const CHAR **)attrs, sqlc);

check_error(NULL, Stream, rc, "SE_stream_query");

/* Set the spatial constraint */

rc = SE_stream_set_spatial_constraints (Stream, SE_SPATIAL_FIRST,

FALSE, 1, &filter);

check_error(NULL, Stream, rc, "SE_stream_set_spatial_constraints");

/* Execute the query */

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

/* Bind the street and name columns */

rc = SE_stream_bind_output_column (Stream, 1, street,

&street_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

rc = SE_stream_bind_output_column (Stream, 2, name, &name_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

/* Loop through the fetched rows */

while (SE_SUCCESS == rc)

{

rc = SE_stream_fetch (Stream);

if (SE_SUCCESS == rc)

{

/* Application specific function to draw the street */

user_app_draw_shape (street);

/* Print the street name if there is one */

if (SE_IS_NOT_NULL_VALUE == name_indicator)

printf ("street name: %s\n", name);

}

}

check_error(NULL, Stream, rc, "SE_stream_fetch");

/* Close the logfile */

rc = SE_log_close (Connection, log_handle);

check_error(Connetion, NULL, rc, "SE_log_close");

/* Close the stream, resetting its properties. This will

disable the automatic logging of row ids. */

rc = SE_stream_close (Stream, TRUE);

check_error(NULL, Stream, rc, "SE_stream_close");

/* STEP 3: QUERY THE RESULT SET */

/* You now have all of the Gatineau and Aylmer streets in a single

logfile. Now use this logfile to find all Aylmer and Gatineau

streets that cross a proposed water main. Assume the

variable 'water_main' contains the geometry for the

proposed water main. */

rc = SE_stream_query_logfile (Stream, logfile_name, 2,

(const CHAR **)attrs, sqlc);

check_error(NULL, Stream, rc, "SE_stream_query_logfile");

/* Change the spatial filter to use the water main shape,

and the search method to find crossing lines */

filter.filter.shape = water_main;

filter.method = SM_CP_OR_LCROSS;

/* Set the spatial constraint */

rc = SE_stream_set_spatial_constraints (Stream, SE_SPATIAL_FIRST,

FALSE, 1, &filter);

check_error(NULL, Stream, rc, "SE_stream_set_spatial_constraints");

/* Execute the query */

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

/* Bind the street and name columns */

rc = SE_stream_bind_output_column (Stream, 1, street, &street_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

rc = SE_stream_bind_output_column (Stream, 2, name, &name_indicator);

check_error(NULL, Stream, rc, "SE_stream_bind_output_column");

/* Loop through the fetched rows */

while (SE_SUCCESS == rc)

{

rc = SE_stream_fetch (Stream);

if (SE_SUCCESS == rc)

{

/* Application specific function to draw the street */

user_app_draw_shape (street);

/* Print the street name if there is one */

if (SE_IS_NOT_NULL_VALUE == name_indicator)

printf ("street name: %s\n", name);

}

}

if (rc != SE_FINISHED)

check_error(NULL, Stream, rc, "SE_stream_fetch");

rc = SE_stream_free (Stream);

check_error(NULL, Stream, rc, "SE_stream_free");

free (attrs);

SE_sql_construct_free (sqlc);

Back


Error handling

Most ArcSDE functions return a numeric error code. Passing the code to the SE_error_get_string function allows you to retrieve a text string message for a particular ArcSDE error or warning code. The SE_connection_get_ext_error and the SE_stream_get_ext_error functions can provide additional information when a database error (SE_DB_IO_ERROR) is returned. The SE_stream_get_ext_error function should be used for all stream functions except SE_stream_create. SE_connection_get_ext_error can be used for all other functions except SE_connection_create, which handles its own extended error codes.

The following function demonstrates the use of the ArcSDE software’s error handling routines. Pass a NULL for the connection and stream handles when handling stream errors. For all other error checking, pass the connection handle and a NULL to the stream handle.

/****************************************************************************

 check_error This function prints nonsuccessful error codes.

****************************************************************************/

static void check_error (SE_CONNECTION Connection, SE_STREAM Stream, LONG rc, CHAR *comment)

{

SE_ERROR error;

CHAR error_string[SE_MAX_MESSAGE_LENGTH];

LONG temp_rc;

if ( (rc != SE_SUCCESS) && (rc != SE_FINISHED) )

{

error_string[0] = '\0';

SE_error_get_string (rc, error_string);

printf ("%s encountered a %d error:\n%s\n", comment, rc, error_string);

/* Print extended error info, if any */

if ( (SE_DB_IO_ERROR == rc) | (SE_INVALID_WHERE == rc) )

{

if (NULL == Connection)

{

/* Assume this is a stream error */

temp_rc = SE_stream_get_ext_error (Stream, &error);

}

else

{

/* Assume this is a connection error */

temp_rc = SE_connection_get_ext_error (Connection, &error);

}

if (SE_SUCCESS == temp_rc)

printf ("Extended error code: %d, extended error string:\n%s\n", error.ext_error, error.err_msg1);

}

exit (0);

}

}

Back


Tables, layers, and the ArcSDE registry

Managing Tables

The ArcSDE software provides the user with methods to retrieve, store, and update data in DBMS tables. The ArcSDE software also provides the user with several functions to inspect the definition of DBMS tables, to manage the creation and deletion of DBMS tables, and to manage the creation and deletion of indices on DBMS tables.

Layers are an organizational concept for managing spatial data. The lowest level of spatial information is the location and shape of features that are stored in spatial tables. Geographic features that are thematically similar and geographically continuous constitute a layer in ArcSDE. When you add a spatial column to a table, you are creating a layer and specifying what types of features are allowed in the layer. The purpose of layers is to manage the spatial tables and their associated meta-data.

The ArcSDE Table Registry provides a centralized repository for information about all tables created or managed by the ArcSDE software. The registry provides fast access to table properties such as the owner, whether or not the table is versioned, has a spatial column, a row_id, etc.


Managing DBMS tables

Creating DBMS tables

ArcSDE provides a DBMS independent mechanism for creating tables. The SE_table_create function takes a table name and a list of column types as input. The column types are defined independently of DBMS, using the following ArcSDE data types:

SE_SMALLINT_TYPE
SE_INTEGER_TYPE
SE_FLOAT_TYPE
SE_DOUBLE_TYPE
SE_STRING_TYPE
SE_DATE_TYPE
SE_BLOB_TYPE

The ArcSDE data types are mapped to DBMS types differently for each DBMS. See the ArcSDE Configuration and Tuning Guide for your DBMS for the exact values. When you’re defining a column, you need to define the size and, optionally, number of decimal digits. For integer, date, and small integer columns, the size and decimal digits are zero. For float and double columns, the size and decimal digits represent the column definition. For string (character) and blob columns, the size represents the column definition and the decimal digits is zero. You need to remember to add 1 to the size for the null terminator for string type columns.

You can define DBMS-specific column types using SQL expressions executed through SE_stream_prepare_sql. There are no assurances that tables created with SE_stream_prepare_sql are transportable between different database management systems.

In this example, you create a three column table named ‘cities’. The table contains the following columns:

  • ‘city_name’, 20 characters long, NULL values are not permitted.

  • ‘area’, double precision, with a precision of 12 and scale of 4.

  • ‘population’, integer, NULL values are not permitted.

num_cols = 3;

column_defs = (SE_COLUMN_DEF *) calloc (num_cols, sizeof(SE_COLUMN_DEF));

if (NULL == column_defs)

{

printf ("Failed to allocate column list\n");

exit(0);

}

/* city_name is a 20-character, NOT NULL column */

strcpy (column_defs[0].column_name, "city_name");

column_defs[0].sde_type = SE_STRING_TYPE;

column_defs[0].size = 20;

column_defs[0].nulls_allowed = FALSE;

/* area is a double-precision column, with precision 12 and scale 4 */

strcpy (column_defs[1].column_name, "area");

column_defs[1].sde_type = SE_DOUBLE_TYPE;

column_defs[1].size = 12;

column_defs[1].decimal_digits = 4;

column_defs[1].nulls_allowed = TRUE;

/* population is an integer, NOT NULL column */

strcpy (column_defs[2].column_name, "population");

column_defs[2].sde_type = SE_INTEGER_TYPE;

column_defs[2].nulls_allowed = FALSE;

/* Create the table with the CITIES dbtune.sde configuration keyword */

rc = SE_table_create (Connection, "cities", num_cols, column_defs, "CITIES");

check_error(Connection, NULL, rc, "SE_table_create");

This next example creates the same table using an SQL statement and the SE_stream_prepare_sql function. Keep in mind that this approach may not be transportable across multiple DBMS platforms.

sprintf (sql_stmt, "create table cities (%s, %s, %s)",

"city_name varchar2(20) not null",

"area number(12,4)",

"population integer not null");

rc = SE_stream_prepare_sql (Stream, sql_stmt);

check_error(Connection, NULL, rc, "SE_stream_prepare_sql");

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

Deleting DBMS tables

DBMS tables can be deleted in a DBMS-independent fashion through the SE_table_delete function. When a table is spatially enabled, SE_table_delete deletes the business table, the feature table, the spatial index tables, and entries in the LAYERS table.

rc = SE_table_delete (Connection, "Cities");

check_error(Connection, NULL, rc, "SE_table_delete");

You can also delete tables with an SQL expression, using SE_stream_prepare_sql. Do not use this approach to delete spatially enabled tables because the support tables (feature, index) and LAYERS entry are left behind. This example deletes a nonspatial table called ‘taxes’.

rc = SE_stream_prepare_sql (Stream, "drop table taxes");

check_error(NULL, steam, rc, "SE_stream_prepare_sql");

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

You can remove the data but retain the table definition with the SE_table_truncate function.

/* Truncate the table */

rc = SE_table_truncate(Connection, "Cities");

check_error(Connection, NULL, rc, "SE_table_truncate");

Indexing a column

You can add and drop an index on a column with SE_table_create_index and SE_table_delete_index. Indexes can be ascending, descending, or unique. The following example adds an index to the ‘cities’ table created earlier. The table has three columns: city_name, area, and population. This example creates an ascending index on the city_name column.

/* Create an ascending index called name_index on the city_name column */

rc = SE_table_create_index

(Connection, "cities", "city_name", FALSE, TRUE, name_index, "CITIES");

check_error(Connection, NULL, rc, "SE_table_create_index");

This next example creates the same column index using an SQL statement and the SE_stream_prepare_sql function. Keep in mind that this approach may not be transportable across multiple DBMS platforms.

sprintf (sql_stmt, "create index name_index on cities (city_name ASC)");

rc = SE_stream_prepare_sql (Stream, sql_stmt);

check_error(NULL, Stream, rc, "SE_stream_prepare_sql");

rc = SE_stream_execute (Stream);

check_error(NULL, Stream, rc, "SE_stream_execute");

Table functions

Function Name | Function Description
SE_table_add_column | Adds a new column to a table.
SE_table_add_locator | Adds a locator to a table.
SE_table_add_rowlocks | Adds row locks to a table.
SE_table_calculate_stats | Generates statistics for a table.
SE_table_create | Creates a DBMS table.
SE_table_create_index | Creates a DBMS index.
SE_table_create_indexes | Creates DBMS indexes.
SE_table_create_mw_view | Creates a multiversion table view.
SE_table_create_view | Creates a table view.
SE_table_delete | Drops a DBMS table.
SE_table_delete_index | Drops a DBMS index.
SE_table_delete_mv_view | Deletes a multiversion table view.
SE_table_delete_locator | Deletes a locator from a table.
SE_table_describe | Returns the column definitions of a DBMS table.
SE_table_describe_indexes | Returns the index definitions of a DBMS table.
SE_table_drop_column | Deletes a column from a table.
SE_table_free_descriptions | Frees column description resources allocated by SE_table_describe.
SE_table_free_index_descriptions | Frees index descriptions allocated by SE_table_describe_indexes.
SE_table_free_list | Frees an array of table names allocated from SE_table_list.
SE_table_free_lock | Frees the locks on a table.
SE_table_free_locks | Frees an array of locks.
SE_table_free_rowlocks_list | Frees an array of rowlock IDs.
SE_table_free_stats | Releases the memory used by an SE_STATS structure.
SE_table_get_locator | Returns the locator IDs for a table.
SE_table_get_locks | Returns a list of locks on a table.
SE_table_get_permissions | Returns the permissions for a given table.
SE_table_get_rowlocks | Returns the row locks on a table.
SE_table_get_rowlocks_by_user | Returns the row locks on a table set by a user.
SE_table_grant_access | Grants a user access to a given table.
SE_table_list | Generates a list of tables with the given permissions.
SE_table_lock | Locks a table.
SE_table_make_qualified_name | Constructs a qualified name for a specific RDBMS.
SE_table_metadata_add | Adds meta-data to a table.
SE_table_metadata_alter | Changes the meta-data associated with a table.
SE_table_metadata_delete | Removes meta-data from a table.
SE_table_metadata_delete_where | Removes meta-data from a table using a where clause.
SE_table_metadata_free_info_list | Frees a list of meta-data.
SE_table_metadata_get_info_list | Returns a list of meta-data from a table.
SE_table_parse_qualified_name | Parses a qualified name for a DBMS.
SE_table_remove_rowlocks | Removes row locks from a table.
SE_table_rename | Changes the name of a table.
SE_table_revoke_access | Removes a user's access to a given table.
SE_table_truncate | Deletes the data from a table but keeps the table definition.
SE_table_update_dbms_stats | Updates the DBMS statistics for a given table.

Back


Managing spatial columns

Spatial columns are added to tables to store geometric values for a feature. The spatial column has associated metadata maintained in the LAYERS table. This information defines the type of geometric shapes that may be stored in a spatial column, the coordinate reference system, spatial index values, update privileges, and so on.

You access and update layer meta-data through an opaque pointer to an SE_LAYERINFO object. Most characteristics are user-defined, but a few, such as the layer ID and creation date, are set by the ArcSDE software. Before working with a spatial column (or layer), you must initialize an SE_LAYERINFO object with SE_layerinfo_create.

Adding a new spatial column

Spatial columns are created by the SE_layer_create function. This function adds the new spatial column to the business table, adds a record to the LAYERS table, creates the background tables that store the shape data, and sets up the required database triggers. To add a spatial column to a table, you must be the table’s owner.

If an existing column is to be redefined as a spatial column, it must have the following characteristics:

  • It must be an integer column.

  • It cannot be defined as NOT NULL.

  • It must not currently contain any non-NULL values.

The information required for layer creation is supplied through an SE_LAYERINFO opaque pointer. Before you call SE_layer_create, you must use SE_layerinfo_create to initialize the SE_LAYERINFO structure. Some of the layer information must be provided by the application, and some values are supplied by ArcSDE when the layer is created. The application can set the layer parameters with various SE_layerinfo_set_* functions. The following table defines which values must be set by the application, and which are supplied by ArcSDE.

SE_LAYERINFO Parameters

Property Name | Property Description
layer id | map layer number
layer description | Map layer description
spatial index grid sizes | Grid index size
shape types | Entity type mask
minimum ID | Minimum fid value
bounds | User-supplied layer extents
table name | Business table name
spatial column | Spatial column name
owner | Layer/Business table creator
creation date | Creation date and time
privileges | User’s access bitmap
layer configuration keyword | Layer configuration keyword
optimal array size | Optimal number of bytes/shape
stats date | Last time avgpoints & pts_stddev updated
spatial reference | Pointer to spatial reference system
storage type | The layer’s storage type
load-only mode | Whether the layer is in load-only or normal I/O mode
annotation | Whether the layer allows annotations
cad | Whether the layer allows CAD entities

The SE_layerinfo_set_* functions do not actually modify a layer in a database. Once the SE_LAYERINFO pointer is modified, you must pass it to SE_layer_create or SE_layer_alter to affect a database layer.

Layerinfo functions

Function Name | Function Description
SE_layerinfo_create | Creates an SE_LAYERINFO structure.
SE_layerinfo_duplicate | Copies an SE_LAYERINFO structure.
SE_layerinfo_free | Releases memory allocated for an SE_LAYERINFO structure.
SE_layerinfo_get_access | Retrieves the privileges for the specified layer.
SE_layerinfo_get_array_size | Retrieves the optimal array size for the specified layer.
SE_layerinfo_get_coordref | Retrieves the coordinate reference for the specified layer.
SE_layerinfo_get_creation_date | Retrieves the layer creation date.
SE_layerinfo_get_creation_keyword | Retrieves the configuration keyword.
SE_layerinfo_get_description | Retrieves the layer’s description.
SE_layerinfo_get_envelope | Retrieves the layer’s envelope.
SE_layerinfo_get_grid_sizes | Retrieves the spatial index grid sizes of the layer.
SE_layerinfo_get_id | Retrieves the layer ID.
SE_layerinfo_get_minimum_id | Retrieves the minimum FID value.
SE_layerinfo_get_shape_types | Retrieves the allowed shape types.
SE_layerinfo_get_spatial_column | Retrieves the table and column name of the layer.
SE_layerinfo_get_storage_type | Returns the layer's storage type.
SE_layerinfo_has_anno | Returns TRUE if the layer allows annotations.
SE_layerinfo_has_cad | Returns TRUE if the layer allows CAD entities.
SE_layerinfo_is_in_load_mode | Returns TRUE if the layer is in load-only mode.
SE_layerinfo_is_measured | Returns TRUE if the layer allows measures.
SE_layerinfo_is_storage_normalized | Returns TRUE if the layer's storage type is normalized.
SE_layerinfo_is_storage_sdebinary | Returns TRUE if the layer's storage type is the ArcSDE binary format.
SE_layerinfo_is_storage_sql | Returns TRUE if the layer's storage type is SQL or well-known text.
SE_layerinfo_is_storage_wkb | Returns TRUE if the layer's storage type is well-known binary.
SE_layerinfo_is_3D | Returns TRUE if the layer allows z-coordinates.
SE_layerinfo_set_anno | Sets whether the layer allows annotations.
SE_layerinfo_set_array_size | Sets the optimal array size for the specified layer.
SE_layerinfo_set_cad | Sets whether the layer allows CAD entities.
SE_layerinfo_set_coordref | Sets the coordinate reference for the specified layer.
SE_layerinfo_set_creation_keyword | Sets the configuration keyword.
SE_layerinfo_set_description | Sets the layer’s description.
SE_layerinfo_set_envelope | Sets the layer’s envelope.
SE_layerinfo_set_grid_sizes | Sets the spatial index grid sizes of the layer.
SE_layerinfo_set_load_mode | Sets the layer to either load-only or normal I/O mode.
SE_layerinfo_set_measured | Updates whether the layer allows measures.
SE_layerinfo_set_minimum_id | Sets the minimum FID value.
SE_layerinfo_set_shape_types | Sets the allowed shape types.
SE_layerinfo_set_spatial_column | Sets the spatial column name of the layer.
SE_layerinfo_set_storage_type | Sets the layer's storage type.
SE_layerinfo_set_3D | Updates whether the layer allows z-coordinates.

Layer operations

Applications must be able to interact with the layer object. Possible operations include creating an ArcSDE layer by spatially enabling a table, deleting an ArcSDE layer by removing spatial data from a table, retrieving information about the layer including the types of features, and accessing layers by table name or number. In addition to layer administration functions, there are layer utility functions, such as a layer envelope calculation function.

Layer functions

Function Name | Function Description
SE_layer_alter | Changes a layer's characteristics.
SE_layer_calculate_extent | Returns the extent of the features in the layer.
SE_layer_create | Spatially enables an existing table.
SE_layer_delete | Deletes a layer.
SE_layer_free_info_list | Releases memory allocated for a list of layer structures.
SE_layer_free_lock | Releases the locks placed on a layer.
SE_layer_free_locks | Releases memory allocated for the list of locks returned by SE_layer_get_locks.
SE_layer_get_info | Retrieves information about the specified table and column.
SE_layer_get_info_by_id | Retrieves information about the specified layer by ID.
SE_layer_get_info_list | Returns an array of SE_LAYERINFO pointers for all layers.
SE_layer_get_locks | Retrieves information on the locks set on a layer.
SE_layer_get_si_statistics | Retrieves information on the spatial index grids.
SE_layer_get_statistics | Retrieves statistical information on a layer.
SE_layer_grant_access | Allows layer owner to grant privileges to other users.
SE_layer_lock | Locks an entire layer.
SE_layer_lock_area | Locks the specified area for a given layer.
SE_layer_modify_lock | Modifies an already established lock.
SE_layer_revoke_access | Allows layer owner to revoke privileges for other users.
SE_layer_shape_attribute_name | Returns a column name for a specified shape attribute.
SE_layer_truncate | Removes spatial data from a table.

In the following example, spatially enable the ‘cities’ table by adding the ‘boundary’ spatial column:

/* Create a coordinate reference system structure. */

rc = SE_coordref_create (&coordref);

/* See Error handling section for check_error function code. */

check_error(Connection, NULL, rc, "SE_coordref_create");

rc = SE_coordref_set_xy (coordref, 512.0, 280.0, 100.0);

check_error(Connection, NULL, rc, "SE_coordref_set_xy");

/* Initialize the layerinfo structure */

rc = SE_layerinfo_create(coordref, &layer);

check_error(Connection, NULL, rc, "SE_layerinfo_create");

/* Set the required parameters to create a layer: spatial column,

the shape entity types, and a spatial index grid size */

rc = SE_layerinfo_set_spatial_column (layer, "cities", "boundary");

check_error(Connection, NULL, rc, "SE_layerinfo_set_spatial_column");

rc = SE_layerinfo_set_shape_types (layer, SE_AREA_TYPE_MASK);

check_error(Connection, NULL, rc, "SE_layerinfo_set_shape_types");

rc = SE_layerinfo_set_grid_sizes (layer, 10000.0, 0.0, 0.0);

check_error(Connection, NULL, rc, "SE_layerinfo_set_grid_sizes");

/* Use the CITIES dbtune.sde configuration keyword to specify

DBMS storage parameters. This is optional. */

rc = SE_layerinfo_set_creation_keyword (layer, "CITIES");

check_error(Connection, NULL, rc, "SE_layerinfo_set_creation_keyword");

/* Create the layer */

rc = SE_layer_create (Connection, layer, 0, 0);

check_error(Connection, NULL, rc, "SE_layer_create");

Deleting a spatial column

Spatial columns are deleted using the SE_layer_delete function. This function deletes the spatial column entry in the LAYERS table, drops the feature and spatial index tables associated with the layer, and nulls the contents of the spatial index column in the business table. Deleting a layer does not delete the business table, it just NULLS the spatial column.

This example deletes a spatial column named ‘Boundary’ in a table named ‘Parcels’:

/* Delete the spatial column */

rc = SE_layer_delete(Connection, "Parcels", "Boundary");

check_error(Connection, NULL, rc, "SE_layer_delete");

You can retain the layer definition but remove the shape data with the SE_layer_truncate function.

/* Truncate the spatial column */

rc = SE_layer_truncate(Connection, "Parcels", "Boundary");

check_error(Connection, NULL, rc, "SE_layer_truncate");

Back


SDE Table Registry

The table registry provides a central repository of tables that the ArcSDE software manages directly or must access for an application. Registering tables provides applications with a fast, efficient mechanism for determining the properties of specific tables or obtaining lists of tables with a desired property such as a geometry column. The registry maintains the name, owner, and other relevant properties for tables that have one or more of the following:

  • Contain geometry columns.

  • Contain raster columns.

  • Are multi-versioned.

  • Have a unique SE_ROW_ID column.

  • Allow row locks.

  • Are hidden (not displayed)

When SDE Version 3.0.x databases are upgraded to ArcSDE Version 8.0, all spatially enabled tables are automatically registered. In these cases, the geometry column is used as the SE_ROW_ID column. Tables without geometry columns can be registered by the application using the API functions. A user or ArcSDE administrator can directly register and manage tables with the sdetable administration command.

When a business table is spatially enabled, the table registry is updated first, then the geometry column is added to the business table.

You can change the registration entry's description, minimum_id, and row_id column type. However, ArcSDE-maintained columns can only be integer columns. A registration entry for an multiversion table may not be set to a row_id column type of SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE. Only the owner of the table may alter its properties.

DBMS Tables

The TABLE_REGISTRY table maintains a list of all tables that contain objects created by the ArcSDE software. These objects include spatial columns (layers), multi-versioned tables, tables with an ArcSDE-managed row ID column, and images. The registry table records the table name, owner, a unique row_ID column, description, and the type of ArcSDE object maintained within the table:

TABLE_REGISTRY
Column Name | Description
Registration_ID | The ID for the registered table. This ID will be maintained by the ArcSDE I/O manager, and is unique, and indexed.
Table_name | The name of the registered table.
Owner | The owner of the registered table.
Rowid_column | The name of the column in the registered table that provides the ArcSDE row ID.
Description | Optional description of the registered table
Object_flags | A mask of the ArcSDE objects managed in this table: row ID column type (ArcSDE or user-maintained or none), layer, multiversion table, allows row locks, or images
Registration_date | The date and time the table was registered
Config_keyword | The configuration parameter reference used to create this table.
Privileges | The user’s access rights on the table.
Minimum_ID | The minimum SE_ROW_ID to assign to rows in this table.

Registration is a mechanism where an arbitrary DBMS table can be added to an instance-level list of tables that ArcSDE can scan efficiently provided with a reliable unique row_id column. All tables created through ArcSDE, spatially enabled, multiversion tables or other managed ArcSDE objects such as annotation or images are automatically registered tables as well.

A registered table knows if it has a layer, is an multiversion table, or other ArcSDE managed objects - it is only necessary to check the TABLE_REGISTRY table to determine if a table has any ArcSDE special columns.

Like most ArcSDE objects, the registered table is an opaque object, it will be visible to the application programmer as an SE_REGINFO handle.

A row_id_type has been added to the SE_COLUMN_DEF structure.

Typedef struct {

CHAR column_name;

/* the column name, SE_MAX_COLUMN_LEN */

LONG sde_type;

/* the ArcSDE data type */

LONG size;

/* the size of the column values */

SHORT decimal_digits;

/* number of digits after decimal */

BOOL nulls_allowed;

/* allow NULL values? */

SHORT row_id_type;

/* column's use as table's row id */

} SE_COLUMN_DEF

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE

Column type of SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE generates an error of SE_READ_ONLY_COLUMN when set or bound for input.

Registration functions

Function Name | Function Description
SE_registration_alter | Changes a registration entry.
SE_registration_create | Creates a new registration entry.
SE_registration_delete | Deletes a registration entry.
SE_registration_free_info_list | Releases memory allocated for a list of registrations.
SE_registration_get_difference_list | Retrieves an array of SE_REGINFO structures for all accessible versions.
SE_registration_get_info | Retrieves a registration definition.
SE_registration_get_info_by_id | Retrieves a registration entry by ID.
SE_registration_get_info_list | Retrieves an array of SE_REGINFO structures for all accessible versions.

Reginfo functions

Function Name | Function Description
SE_reginfo_allow_rowlocks | Returns TRUE if rowlocking is enabled.
SE_reginfo_create | Creates a new registration entry.
SE_reginfo_duplicate | Copies a SE_REGINFO entry.
SE_reginfo_free | Releases memory allocated for an SE_REGINFO structure.
SE_reginfo_get_access | Retrieves the privilege bitmask for a registered table.
SE_reginfo_get_creation_keyword | Retrieves the registered table's configuration keyword.
SE_reginfo_get_description | Retrieves the registered table's description.
SE_reginfo_get_id | Retrieves the ID of a registered table.
SE_reginfo_get_mv_view | Retrieves the multiversion view of a registered table.
SE_reginfo_get_minimum_id | Retrieves the minimum ID allowed for the registered table.
SE_reginfo_get_reg_date | Retrieves the registration date of a table.
SE_reginfo_get_rowid_column | Retrieves the row ID column name for a registered table.
SE_reginfo_get_table_name | Retrieves the table name for a registered table.
SE_reginfo_has_layer | Returns TRUE if the registered table has a spatial column.
SE_reginfo_has_locator | Returns TRUE if the registered table has a locator.
SE_reginfo_is_hidden | Returns TRUE if the registered table is hidden.
SE_reginfo_is_multiversion | Returns TRUE if the registered table is a multiversioned table.
SE_reginfo_is_view | Returns TRUE if the registered table is a view.
SE_reginfo_set_creation_keyword | Sets the registered table's configuration keyword.
SE_reginfo_set_description | Sets the registered table's description.
SE_reginfo_set_hidden | Sets the hidden flag for a registered table.
SE_reginfo_set_locator | Sets the locator flag for a registered table.
SE_reginfo_set_minimum_id | Sets the minimum ID allowed for the registered table.
SE_reginfo_set_multiversion | Sets the multiversion flag for a registered table.
SE_reginfo_set_rowlocks | Sets row locking to enabled or not enabled on a registered table.
SE_reginfo_set_rowid_column | Sets the row ID column name for a registered table.
SE_reginfo_set_table_name | Sets the table name for a registered table.
SE_reginfo_set_view | Sets the view flag for a registered table.

Back


Metadata functions

The ArcSDE software maintains some limited metadata for objects like tables, layers, and versions. A method to store new or different metadata with a table can help greatly when developing a new application or new functionality. You can now store application-specific metadata, or properties, with a table.

The metadata support provides a generic mechanism for storing metadata about an object. The metadata is stored as property/value pairs with associated description and modification date.

Information about a metadata object is contained in an SE_METADATAINFO opaque pointer. A set of functions of the format SE_metadatainfo_* allows you to retrieve and set the various metadata parameters. You must call SE_metadatainfo_create before using any other function that uses an SE_METADATAINFO object.

You can use an SE_METADATAINFO pointer as a specification to create or alter meta-data or to describe an existing meta-data object.

Some of the information you can retrieve or set with SE_METADATAINFO includes:

record ID | Record number set and maintained by the ArcSDE software.
object ID | For tables, the registration ID with which the meta-data is associated.
object type | Object type with which the meta-data is associated.
class name | Class name of the meta-data.
property | Meta-data property name.
value | Property value stored as a string.
date | Creation or update date and time.
owner | Owner name.
Description | A description of the meta-data.

You can set or retrieve the meta-data parameters with the SE_metadatainfo_get_* and SE_metadatainfo_set_* functions. See “Meta-data info functions” for more information. To add, edit, or delete a meta-data record, use the SE_table_metadata_* functions.

The SE_metadatainfo_set_* functions do not actually modify a meta-data object. Once the SE_METADATAINFO pointer is modified, you must pass it to SE_metadata_create or SE_table_metadata_alter to affect a table.

Metadatainfo functions

Function Name | Function Description
SE_metadatainfo_create | Creates a metadata object.
SE_ metadatainfo_duplicate | Makes a copy of a metadata object.
SE_ metadatainfo_free | Frees an allocated metadata object.
SE_metadatainfo_get_classname | Returns the class name for the supplied metadata object.
SE_ metadatainfo_get_date | Returns the data for the supplied metadata object.
SE_metadatainfo_get_description | Returns the description of the metadata object.
SE_ metadatainfo_get_id | Returns the ID for the supplied metadata object.
SE_ metadatainfo_get_object_name | Returns the object name for the supplied metadata object.
SE_ metadatainfo_get_object_owner | Returns the description for the supplied metadata object.
SE_ metadatainfo_get_object_type | Returns the object type for a metadata object.
SE_ metadatainfo_get_property | Returns the property of the supplied metadata object.
SE_ metadatainfo_get_value | Returns the value for a metadata object.
SE_ metadatainfo_set_classname | Sets the class name for a meta data object.
SE_ metadatainfo_set_description | Sets the description of the meta data object.
SE_ metadatainfo_set_object_name | Sets the object name for the supplied meta data object.
SE_ metadatainfo_set_object_type | Sets the object type for a meta data object.
SE_ metadatainfo_set_property | Sets the property of the supplied meta data object.
SE_ metadatainfo_set_value | Sets the value for a meta data object.

Meta-data functions

Function Name | Function Description
SE_metadata_free_info_list | Frees a pointer to a list of metadata objects.
SE_metadata_get_info | Returns a meta data entry.
SE_metadata_get_info_list | Returns a pointer to a list of meta data objects.
SE_table_metadata_add | Adds meta-data to a table.
SE_table_metadata_alter | Changes the meta-data associated with a table.
SE_table_metadata_delete | Removes meta-data from a table.
SE_table_metadata_delete_where | Removes meta-data from a table using a where clause.
SE_table_metadata_free_info_list | Frees a list of meta-data.
SE_table_metadata_get_info_list | Returns a list of meta-data from a table.

Back to the C concepts introduction


Geometry Model

The ArcSDE geometric model is centered around operations on various types of geometric shapes. Shapes represent geometric objects in two-dimensional planar space that are useful for GIS applications. Shapes can be 0-dimensional points, 1-dimensional lines, and 2-dimensional areas. The available shape types are nil, points, lines, simple lines, and areas. Each shape has a spatial reference system which describes the coordinate space in which the shape is defined.

The spatial reference system for a shape describes the coordinate system in which it is defined. Spatial data often is defined with different coordinate systems. To integrate spatial data from various sources, the data must be transformed to a common coordinate system. The spatial reference system must be clearly defined not only to verify the integrity of geometric calculations between shapes, but also to allow transformations to take place between shapes in different coordinate systems.

Comparing and combining shapes

Shape functions

Back to C concepts introduction


Comparing and combining shapes

ArcSDE functions that compare or combine two shapes use ‘Clementini’ operators. Eliseo Clementini and colleagues have formalized the possible relationships that can exist between shapes. The Clementini operators differentiate between a shape’s boundary and interior. A point is considered to be all interior and has no boundary. The endpoints of a line constitutes its boundary, while the rest of the line is considered the interior. The lines that form the edge of a polygon are the boundary, while the rest of the polygon is the interior.

The boundaries and interiors of shapes.

Comparison functions are Boolean operators that check the relationships between shapes such as equals, touches, within, contains, crosses, overlaps, and disjoint. SE_shape_find_relation in a sense combines the Boolean operators by returning a mask which enumerates how two shapes are related. You can also combine shapes with intersect, difference, symmetrical difference, union, and clip.

Shape Predicates

Equals

SE_shape_is_equal returns TRUE if the secondary shape is equal (identical) to the primary shape object. Two shapes are equal if they have:

• The same coordinate reference system

• The same type

• The same number of points

• The identical points in the same order (x, y, z, and measures)

Applies to all shape type combinations.

Two lines that are equal and identical assuming c1 = c1’, c2 = c2’, c3 = c3’, and c4 = c4’.

Touches

SE_shape_is_touching returns TRUE if two shapes share a common boundary. However, the intersection of the interiors of the two shapes must be empty. In the Point/Line case, the point may touch an endpoint only of the line. Applies to all combinations except Point/Point.

Within

SE_shape_is_within returns TRUE if the primary shape is wholly contained within the secondary shape. Applies to all shape type combinations.

Contains

SE_shape_is_containing returns TRUE if the secondary shape is wholly contained within the primary shape. This is the same as reversing the primary and secondary shapes of the Within operation.

Crosses

SE_shape_is_crossing returns TRUE if the intersection of the interiors of two shapes is not empty and has a lower dimension than the maximum dimension of the two shapes. Two lines that share an endpoint in common do not cross. Valid for Line/Line, Line/Area, Multipoint/Area, and Multipoint/Line shape type combinations.

Overlaps

SE_shape_is_overlapping returns TRUE if the intersection of two shapes results in an object of the same dimension, but different from both of the shapes. Applies to Area/Area, Line/Line, and Multipoint/Multipoint shape type combinations.

Disjoint

SE_shape_is_disjoint returns TRUE if the intersection of two shapes is empty. Applies to all shape type combinations.

Shape transformations

The SE_shape_overlay function combines two shapes. The function returns two shapes, primary_remainder and secondary_remainder, which contain any pieces that are unique to the primary or secondary shape only. Shapes that are common to both shapes are returned in a list of shapes. ArcSDE also has functions that return specific relationships of the overlay. For instance, SE_shape_intersect returns shapes that are common to both shapes. SE_shape_difference returns the shapes which are part of the primary shape only, while SE_shape_symmetrical_difference returns two lists: primary only and secondary only.

Intersect

SE_shape_intersect returns the set intersection of the primary and secondary shape (the logical AND of space), that is, those shapes that are common to both. Applies to all shape type combinations. The result can be multiple shapes (see the Area/Line example). If the two shapes are disjoint, the result is a nil shape.

Difference

SE_shape_difference returns the difference of the primary and secondary shapes (logical AND NOT of space). Returns the primary remainder. Applies to Area/Area, Line/Line, and Point/Point shape type combinations.

Symmetrical difference

SE_shape_symmetrical_difference returns the symmetric difference of the primary and secondary shapes (logical XOR of space). Returns both the primary and secondary remainders. Applies to Area/Area, Line/Line, and Point/Point shape type combinations.

Union

SE_shape_union returns the union of the primary and secondary shapes (logical OR of space). Applies to Area/Area, Line/Line, and Point/Point shape type combinations.

Clip

SE_shape_clip returns the portion of the primary shape that is interior to the envelope. Applies to all shape types.

Back to the Geometry model


Shape functions

Managing Shapes

ArcSDE implements numerous operations on shapes through the ArcSDE API. These operations are executed locally, without requiring any interaction with the ArcSDE server or underlying database. Supported shape routines fall into several categories: creating and maintaining shapes, editing shapes, accessing information about shapes, and computing geometric relations between shapes.

Some of the operations described here are ‘shape on shape’ operations, in the sense that one shape is compared in some way to another shape. These operations are only valid if the two shapes are in the same coordinate reference system. You can handle this situation in three ways: ignore the differences (don’t even check), check the coordinate reference systems and fail if they differ, or perform a transformation if the coordinate reference systems differ but can be resolved.

Creating and freeing shapes

ArcSDE has many objects including shapes that use opaque pointers. Before performing any shape operations including fetching a shape, you must use SE_shape_create. The SE_shape_create function creates an internal SE_SHAPE structure and returns an opaque pointer that points to the structure. ArcSDE automatically allocates any memory needed by the object. By default, SE_shape_create creates a nil shape. Once the object is no longer needed, call SE_shape_free to destroy the object.

Several shape functions return an array, or list, of shapes including SE_shape_overlay, SE_shape_find_along, and SE_shape_intersect. Use SE_shape_free_array to destroy a list of shapes. Here’s a C code fragment for illustration.

LONG index, num_points, num_shapes;
LFLOAT measure;
SE_SHAPE *shape_list;

result = SE_shape_find_along(source_shape, measure, &num_shapes, &shape_list);
for (index = 0; index < num_shapes; index ++)
{
result = SE_shape_get_num_points(shape_list[index], 0, 0, &num_points);
}
SE_shape_free_array(num_shapes,shape_list);

The SE_shape_make_nil converts a shape object into a nil shape. The SE_shape_generate_* functions can create any shape type from an array of points. Other SE_shape_generate_* functions can create label points or shapes from a buffer or a convex hull.

The following example creates a layer and inserts two shapes. Note the order of usage of SE_coordref_create and SE_shape_create. The example also illustrates using the shape generation functions and the freeing of resources at the end of the program. The ‘check_error’ function is described in the ‘Error handling’ section of Chapter 1.

#include <stdio.h>
#include <stdlib.h>
#include "sdetype.h"
#include "sdeerno.h"

static void check_error (SE_CONNECTION handle, SE_STREAM stream, LONG rc,
CHAR *comment);

void main( argc, argv )
int argc;
char *argv[];
{
LONG rc;
LONG num_cols;
SE_SHAPE shape;
SE_ENVELOPE rect;
LONG part_offsets[2], int_val;
CHAR **attrs;
CHAR *server, *instance, *user, *passwd, *database;
CHAR *column, *table;
CHAR *config_keyword, *table_idx;
SHORT num_columns;
SE_COORDREF coordref;
SE_POINT pt[10];
SE_LAYERINFO layer;
SE_COLUMN_DEF *column_defs;
SE_CONNECTION handle;
SE_STREAM stream;
SE_ERROR ext;

/* Check command line specific to this example */

if( argc ! = 8 )
{
printf( "\n\nERROR, Usage: %s <server> <instance> <database>
 <user>
<passwd> <table> <column>...\n\n", argv[0] );
exit(1);
}

server = argv[1];
instance = argv[2];
database = argv[3];
user = argv[4];
passwd = argv[5];
table = argv[6];
column = argv[7];

/* Connect to a server */
SE_connection_create (server, instance, database, user, passwd, &ext,
&handle);
check_error (handle, NULL, rc, "SE_connection_create");

/* Create connection stream */
SE_stream_create (handle, &stream);
check_error (handle, NULL, rc, "SE_stream_create");

/* Create business table */
num_cols = 1;
column_defs = (SE_COLUMN_DEF *) calloc (num_cols, sizeof(SE_COLUMN_DEF));

strcpy (column_defs[0].column_name, "MYCOLUMN");
column_defs[0].sde_type = SE_INTEGER_TYPE;
column_defs[0].nulls_allowed = TRUE;

rc = SE_table_create(handle, table, num_cols, column_defs,"DEFAULTS");
check_error (handle, NULL, rc, "SE_table_create");

/* Create layer coordinate reference */
rc = SE_coordref_create (&coordref);
check_error (handle, NULL, rc, "SE_coordref_create");

rc = SE_coordref_set_xy (coordref,0,0,10000);
check_error (handle, NULL, rc, "SE_coordref_set_xy");

rc = SE_layerinfo_create (coordref, &layer);
check_error (handle, NULL, rc, "SE_layerinfo_create");

/* Set layer grid sizes, allowed shape types, creation keyword
and spatial column */
rc = SE_layerinfo_set_grid_sizes (layer,1000,0,0);
check_error (handle, NULL, rc, "SE_layerinfo_set_grid_sizes");

rc = SE_layerinfo_set_shape_types(layer, SE_NIL_TYPE_MASK |
SE_POINT_TYPE_MASK |
SE_LINE_TYPE_MASK |
SE_SIMPLE_LINE_TYPE_MASK |
SE_AREA_TYPE_MASK |
SE_MULTIPART_TYPE_MASK );
check_error(handle, NULL, rc, "SE_layerinfo_set_shape_types");

rc = SE_layerinfo_set_creation_keyword (layer, "DEFAULTS");
check_error (handle, NULL, rc, "SE_layerinfo_set_creation_keyword");

rc = SE_layerinfo_set_spatial_column (layer, table, column);
check_error (handle, NULL, rc, "SE_layerinfo_set_spatial_column");

/* Create layer */
rc = SE_layer_create (handle, layer, 0,0);
check_error (handle, NULL, rc, "SE_layer_create");

/* Create shape */
rc = SE_shape_create (coordref, &shape);
check_error (handle, NULL, rc, "SE_shape_create");

/* Prep for insert */
attrs = (CHAR **) malloc (sizeof(CHAR *) * 2);
attrs[0] = column;
attrs[1] = "MYCOLUMN";

rc = SE_stream_insert_table (stream, table, 2, (const CHAR**) attrs);
check_error (handle, NULL, rc, "SE_stream_insert_table");

free (attrs);

/* Set min and max for the rectangle and generate shape */
rect.minx = 5000.0;
rect.miny = 1000.0;
rect.maxx = 8000.0;
rect.maxy = 4000.0;

rc = SE_shape_generate_rectangle (&rect, shape);
check_error (handle, NULL, rc, "SE_shape_generate_rectangle");

/* Set shape and attribute column */
rc = SE_stream_set_shape (stream, 1, shape);
check_error (NULL, stream, rc, "SE_stream_set_shape");

int_val = 1;
rc = SE_stream_set_integer (stream, 2, &int_val);
check_error (NULL, stream, rc, "SE_stream_set_integer");

/* Insert row */
rc = SE_stream_execute (stream);
check_error (NULL, stream, rc, "SE_stream_execute");

/* Set coordinate array for area shape - a box with a donut hole.
Generate the area shape. */
part_offsets[0] = 0;
pt[0].x = 1000.; pt[0].y = 1000.;
pt[1].x = 4000.; pt[1].y = 1000.;
pt[2].x = 4000.; pt[2].y = 4000.;
pt[3].x = 1000.; pt[3].y = 4000.;
pt[4].x = 1000.; pt[4].y = 1000.;
pt[5].x = 2000.; pt[5].y = 2000.;
pt[6].x = 2000.; pt[6].y = 3000.;
pt[7].x = 3000.; pt[7].y = 3000.;
pt[8].x = 3000.; pt[8].y = 2000.;
pt[9].x = 2000.; pt[9].y = 2000.;

rc = SE_shape_generate_polygon (10,1,part_offsets,pt,NULL,NULL,shape);
check_error (handle, NULL, rc, "SE_shape_generate_polygon");

/* Set shape and attribute column */
rc = SE_stream_set_shape (stream, 1, shape);
check_error (NULL, stream, rc, "SE_stream_set_shape");

int_val = 2;
rc=SE_stream_set_integer (stream, 2, &int_val);
check_error (NULL, stream, rc, "SE_stream_set_integer");

/* Insert row */
rc = SE_stream_execute (stream);
check_error (NULL, stream, rc, "SE_stream_execute");

/* Free resources and disconnect */
printf( "\n\nFree resources...\n" );

SE_shape_free (shape);
SE_coordref_free (coordref);
SE_stream_free (stream);

printf( "\nDisconnecting ...\n" );

SE_connection_free( handle );
}

Functions that create shapes

Function Name | Function Description
<E> | Returns a shape of type line, given a shape of any type.
SE_shape_as_point | Returns a shape of type point, given a shape of any type.
SE_shape_as_polygon | Returns a shape of type polygon, given a shape of any type.
SE_shape_as_simple_line | Returns a shape of type simple line, given a shape of any type.
SE_shape_build | Assembles a set of line segments into polygons or linestrings using the specified mode.
SE_shape_clip | Returns the intersection (logical AND of space) of a shape and a supplied rectangular envelope.
SE_shape_create | Initializes a shape structure.
SE_shape_duplicate | Copies a shape to a target shape.
SE_shape_find_along | Returns the points or lines along a shape as defined by the shapeâ€™s measures and the supplied measure value.
SE_shape_find_between | Returns the points or lines along a shape as defined by the shapeâ€™s measures between the given from- and to-values.
SE_shape_free | Frees the memory allocated to a shape.
SE_shape_free_array | Frees the memory allocated to an array of shapes.
SE_shape_generate_buffer | Generates a buffer around the source shape, returning the resulting new shape.
SE_shape_generate_circle | Generates a polygon shape in the form of a circle based on the supplied center and radius.
SE_shape_generate_convex_hull | Generates a convex hull for a shape.
SE_shape_generate_ellipse | Generates an ellipse from the specified parameters.
SE_shape_generate_from_part | Generates a new shape from the specified part number of a multipart shape.
SE_shape_generate_label_point | Generates a label point for a shape.
SE_shape_generate_line | Generates a line shape from an array of points.
SE_shape_generate_point | Generates a multiple-point shape from an array of points.
SE_shape_generate_polygon | Generates a polygon shape from an array of points.
SE_shape_generate_rectangle | Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.
SE_shape_generate_simple_line | Generates a simple line shape from an array of points.
SE_shape_interpolate_by_measures | Returns a shape which is densified by a supplied measure value.

Editing and updating shapes

ArcSDE provides a wide range of functions that can change a shape. You can change the shape type with the casting functions, SE_shape_as_*. For example, you can use SE_shape_as_polygon to convert a line shape into an area shape. You can add and delete islands (or donut holes) to area shapes. Generalize a shape with SE_shape_filter_coordinates, or buffer it with SE_shape_generate_buffer.

Several functions deal with multipart shapes. Simply add a part or use SE_shape_insert_part to maintain a part order in the shape. SE_shape_replace_part allows you to update a part.

Other commands apply to a piece of a shape. SE_shape_move_point changes a point’s coordinates, while SE_shape_delete_point removes any occurrence of a point within a shape. A section of a shape, a path, can be changed with SE_shape_change_path or converted to a circular arc with SE_shape_replace_path_with_arc. SE_shape_extend_line can lengthen a line.

Functions that edit or update shapes

Function Name | Function Description
SE_shape_add_island | Adds an island to a polygon shape.
SE_shape_add_part | Adds a new part to a given shape.
SE_shape_build | Assembles a set of line segments into polygons or linestrings using the specified mode.
SE_shape_change_coordref | Projects a shape to a new coordinate system.
SE_shape_change_path | Changes a path in a shape.
SE_shape_delete_island | Deletes an island from a polygon shape.
SE_shape_delete_part | Deletes a part from a multipart shape.
SE_shape_delete_path | Deletes a path from a shape.
SE_shape_delete_point | Deletes a point from a shape.
SE_shape_extend_line | Extends a line by adding a string of points to the beginning or end of the shape.
SE_shape_filter_coordinates | Applies a Douglas-Poiker line generalization to a shape.
SE_shape_insert_part | Inserts a new part into a shape.
SE_shape_make_nil | Converts a shape of any type to a nil shape.
SE_shape_move_point | Moves all occurrences of a point in a shape.
SE_shape_replace_part | Replaces a specified part of a shape.
SE_shape_replace_path_with_arc | Replaces a line or path with an arc represented as a series of vectors.
SE_shape_set_anno | Sets the annotation of a shape.
SE_shape_set_coordref | Sets the coordinate reference of a shape.

This example generates a line and then replaces the segment between the second and third vertices with an arc.

pt[0].x = 586527.56; pt[0].y = 4125700.75;
pt[1].x = 592068.46; pt[1].y = 4131241.66;
pt[2].x = 602707.00; pt[2].y = 4131241.66;
pt[3].x = 609134.44; pt[3].y = 4125700.75;

rc = SE_shape_generate_line (4,1,NULL,pt,NULL,NULL,shape);
check_error (handle, NULL, rc, "SE_shape_generate_line");

firstpt.x = pt[1].x; firstpt.y = pt[1].y;
firstpt.z = 0.0;
firstpt.m = 0.0;
lastpt.x = pt[2].x; lastpt.y = pt[2].y;
lastpt.z = 0.0;
lastpt.m = 0.0;

radius = 10000.;
arc_segs = 360;

rc = SE_shape_replace_path_with_arc (test_shape,&firstpt,NULL,&lastpt,radius,arc_segs);
check_error (handle, NULL, rc, "SE_shape_replace_path_with_arc");

Querying a shape

Functions exist to retrieve all properties of a shape using the SE_shape_get_*. You can find the area, length, extent, or the coordinate system. If the shape supports measures or z-coordinates, you can get the range of the values. You can also find the number of parts or points in the shape. The SE_shape_is_* functions are the basis of a group of functions which can check the shape type or find how two shapes are related.

The SE_shape_get_all_points and SE_shape_get_points return the actual points which comprise a shape. Both functions return arrays that you can use to conveniently navigate through the parts, subparts, and points. See the function reference for the actual usage. The part_offsets array contains integer indexes into the subpart_offsets array that indicate the first subpart of a part. The subpart_offsets array contains integer indexes into the point array that indicate the first point of a subpart. Allocating the subpart_offsets array is optional. If the subpart_offsets array is null, the part_offsets array contains integer indexes directly into the points array. Also, allocating the part_offsets array is optional. If both the part_offsets and subpart_offsets arrays are null, then only the points array is returned. If part_offsets is null but subpart_offsets is not null, the behavior of the subpart_offsets array is the same. The part_offsets and subpart_offsets arguments behave the same for all shape types. Shapes, however, other than polygons will always have a single subpart offset for each part.

How the part, subpart, and point arrays are connected.

The example below illustrates returning and drawing a shape.

SE_shape_get_num_parts(shape, &num_parts, &num_subparts);
SE_shape_get_num_points(shape, 0, 0, &num_points);

part_offsets = malloc(num_parts * sizeof(LONG));
subpart_offsets = malloc(num_subparts * sizeof(LONG));
points = malloc(num_points * sizeof(SE_POINT));

SE_shape_get_all_points(shape, SE_DEFAULT_ROTATION, part_offsets,
subpart_offsets, points, NULL, NULL);
/* For each part */
for (part_index = 0; part_index < num_parts; part_index++)
{
SE_shape_get_num_subparts(shape, part_index + 1, &subpart_count);

/* For each subpart */
for (subpart_index = part_offsets[part_index];
subpart_index < part_offsets[part_index] + subpart_count;
subpart_index++)
{
SE_shape_get_num_points(shape, part_index + 1, subpart_index + 1,
&subpart_point_count);
DrawPoints(&(points[subpart_offsets[subpart_index]]),
subpart_point_count);
}
}

While the example above works, it’s possible to optimize the code by using the offset arrays to calculate the size of any given part or subpart. By increasing the size of the part and subpart offset arrays and placing the subpart count and point count in the extra array element, the subpart and point counts can be calculated rather than calling SE_shape_get_num_subparts and SE_shape_get_num_points.

/* Optimized method for accessing a shape's subparts
 and points */
SE_shape_get_num_parts(shape, &num_parts, &num_subparts);
SE_shape_get_num_points(shape, 0, 0, &num_points);

/* Increase the part/subpart arrays by one */
part_offsets = malloc((num_parts + 1) * sizeof(LONG));
subpart_offsets = malloc((num_subparts + 1) * sizeof(LONG));
points = malloc(num_points * sizeof(SE_POINT));

SE_shape_get_all_points(shape, SE_DEFAULT_ROTATION, part_offsets,
subpart_offsets, points, NULL, NULL);

/* Populate the additional offset entries */
part_offsets[num_parts] = num_subparts;
subpart_offsets[num_subparts] = num_points;

/* For each part */
for (part_index = 0; part_index < num_parts; part_index++)
{
subpart_count = part_offsets[part_index + 1] - part_offsets[part_index];

/* For each subpart */
for (subpart_index = part_offsets[part_index];
subpart_index < part_offsets[part_index] + subpart_count;
subpart_index++)
{
subpart_point_count = subpart_offsets[subpart_index + 1]
- subpart_offsets[subpart_index];
DrawPoints(&(points[subpart_offsets[subpart_index]]),
}
}

Functions that return information about a shape

Function Name | Function Description
SE_shape_get_all_points | Returns all points in a shape.
SE_shape_get_anno | Returns the annotation of a shape.
SE_shape_get_area | Returns the area of the shape.
SE_shape_get_coordref | Returns the coordinate reference of a shape.
SE_shape_get_extent | Returns the extent of a shape.
SE_shape_get_length | Returns the length of a shape.
SE_shape_get_Mrange | Returns the range of a shape’s measure values.
SE_shape_get_num_parts | Returns the number of parts and subparts in a shape.
SE_shape_get_num_points | Returns the number of points in a shape.
SE_shape_get_points | Returns the point array of the specified part.
SE_shape_get_num_subparts | Returns the number of subparts for the specified part in a shape.
SE_shape_get_3D_length | Returns the three-dimensional length of a shape.
SE_shape_get_type | Returns the type of a shape.
SE_shape_get_Zrange | Returns the range of a shape’s elevation values.
SE_shape_has_anno | Returns TRUE if the supplied shape has annotation.
SE_shape_is_line | Returns TRUE if the supplied shape is type line.
SE_shape_is_measured | Returns TRUE if the supplied shape has a measure array.
SE_shape_is_multipart | Returns TRUE if the supplied shape has multiple parts.
SE_shape_is_nil | Returns TRUE if the supplied shape is nil (empty).
SE_shape_is_point | Returns TRUE if the supplied shape is type point.
SE_shape_is_polygon | Returns TRUE if the supplied shape is type polygon.
SE_shape_is_simple_line | Returns TRUE if the supplied shape is type simple line.
SE_shape_is_3D | Returns TRUE if the supplied shape has an elevation array.

Computing spatial relationships

ArcSDE functions that compare or combine two shapes use ‘Clementini’ operators. Eliseo Clementini and colleagues have formalized the possible relationships which can exist between shapes. The Clementini operators differentiate between a shape’s boundary and interior. A point is considered to be all interior and has no boundary. The endpoints of a line constitutes its boundary while the rest of the line is considered the interior. The lines that form the edges of an area shape make up the boundary, while the rest are the interior.

The boundaries and interiors of shapes.

Comparison functions are Boolean operators that check the relationships between shapes such as equals, touches, within, contains, crosses, overlaps, and disjoint. SE_shape_find_relation in a sense combines the Boolean operators by returning a mask which enumerates how two shapes are related. You can also combine shapes with intersect, difference, symmetrical difference, union, and clip. See Chapter 2, ‘ArcSDE geometric model’, for examples. Functions that combine shapes work in 2-D space. The resulting shapes won’t have z- or m-values.

This code fragment displays any relations found between two shapes.

result = SE_shape_find_relation (primary_shape, secondary_shape,
 mask);

if (mask & RM_TESTS_PERFORMED)
{
if (mask & RM_LINE_CROSS) printf( "RM_LINE_CROSS\n");
if (mask & RM_COMMON_PT) printf( "RM_COMMON_PT\n");
if (mask & RM_EMBEDDED_PT) printf( "RM_EMBEDDED_PT\n");
if (mask & RM_CBOUND_SAME) printf( "RM_CBOUND_SAME\n");
if (mask & RM_CBOUND_DIFF) printf( "RM_CBOUND_DIFF\n");
if (mask & RM_PARALLEL_OVERLAPPING) printf( "RM_PARALLEL_OVERLAPPING\n");
if (mask & RM_IDENTICAL) printf( "RM_IDENTICAL\n");
if (mask & RM_AREA_INTERSECT) printf( "RM_AREA_INTERSECT\n");
if (mask & RM_INTERIOR_INTERSECT) printf( "RM_INTERIOR_INTERSECT\n");
if (mask & RM_BOUNDARY_INTERSECT ) printf( "RM_BOUNDARY_INTERSECT\n");
if (mask & RM_PRIM_LEP_INTERIOR ) printf( "RM_PRIM_LEP_INTERIOR\n");
if (mask & RM_SEC_LEP_INTERIOR ) printf( "RM_SEC_LEP_INTERIOR\n");
if (mask & RM_PRIM_CONTAINED) printf( "RM_PRIM_CONTAINED\n");
if (mask & RM_SEC_CONTAINED) printf( "RM_SEC_CONTAINED\n");
if (mask & RM_TESTS_PERFORMED) printf( "RM_TESTS_PERFORMED\n");
}
else
{
printf( "NO TESTS PERFORMED\n" );
}

Functions that compute spatial relationships between shapes

Function Name | Function Description
SE_shape_calculate_distance | Returns the closest difference between two shapes.
SE_shape_difference | Returns the difference (logical AND NOT of space) of two shapes.
SE_shape_evaluate_CBM | Checks a relationship expression against a SE_CBM_INFO structure.
SE_shape_find_CBM_relation | Returns a SE_CBM_INFO structure defining all the relationships between the supplied shapes.
SE_shape_find_relation | Returns a mask defining all the spatial relationships between the supplied shapes.
SE_shape_intersect | Returns the intersection (logical AND of space) of two shapes.
SE_shape_is_containing | Returns TRUE if the secondary shape is wholly contained within the primary shape.
SE_shape_is_crossing | Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.
SE_shape_is_disjoint | Returns TRUE if the intersection of two shapes is empty.
SE_shape_is_equal | Returns TRUE if the two supplied shapes are identical.
SE_shape_is_overlapping | Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.
SE_shape_is_touching | Returns TRUE if the two supplied shapes share a common boundary.
SE_shape_is_within | Returns TRUE if the primary shape is wholly contained within the secondary shape.
SE_shape_overlay | Overlays two shapes.
SE_shape_symmetrical_difference | Returns the difference (logical XOR of space) of two shapes.
SE_shape_union | Returns the difference (logical OR of space) of two shapes.

Annotation functions

An annotation is attached to a shape. The shape functions, SE_shape_get_anno and SE_shape_set_anno retrieve and add annotation from an individual shape. You must set whether a layer can have annotations by updating the layerinfo object with SE_layerinfo_set_anno. Information about an annotation is accessible via an opaque pointer to an SE_ANNO object. A set of functions of the format SE_anno_* allow you to retrieve and set the various annotation parameters.

The SE_ANNO object upon creation has the following attributes.

justification SE_ANNO_LOWER_LEFT

leader line NULL

level 0

x_offset 0.0

y_offset 0.0

placement NULL

symbol 0

text empty string

height 0.0

gap_ratio 0.0

The allowed justification values are:

SE_ANNO_UPPER_LEFT SE_ANNO_UPPER_CENTER SE_ANNO_UPPER_RIGHT

SE_ANNO_CENTER_LEFT SE_ANNO_CENTER_CENTER SE_ANNO_CENTER_RIGHT

SE_ANNO_LOWER_LEFT SE_ANNO_LOWER_CENTER SE_ANNO_LOWER_RIGHT

The height and gap ratio values must be greater than or equal to zero.

Both the leader line and the placement are represented by shapes and must have the same coordinate reference as the shape to which the annotation is attached. A shape’s dimension (e.g., 2-D or 3-D) and whether it has measures is independent of the leader line and placement shapes. A placement shape could have z-values and be attached to a two-dimensional shape. The SE_shape_change_coordref function will change the placement and leader line shapes’ coordinate system. New offset and height values are calculated as well. Setting the coordinate reference with SE_shape_set_coordref will set the leader line and placement shapes’ coordinate references but won’t change any of the annotation’s values.

Shape casting functions (e.g., SE_shape_as_line), functions which modify the source shape (e.g., SE_shape_build and SE_shape_add_island), and the SE_shape_duplicate function will copy the annotation without modifying it to the target shape. Functions that generate new shapes (e.g., SE_shape_generate_polygon and SE_shape_overlay) won’t retain the annotation. Shape functions that determine relationships between shapes don’t compare any annotations.

Annotation functions

Function Name | Function Description
SE_anno_create | Creates an SE_anno object
SE_anno_duplicate | Creates a copy of an SE_ANNO object.
SE_anno_free | Releases memory allocated for an SE_ANNO object.
SE_anno_get_alignment | Retrieves the alignment for the annotation.
SE_anno_get_justification | Retrieves the annotation’s justification.
SE_anno_get_leader | Retrieves the leader for the specified annotation.
SE_anno_get_level | Retrieves the annotation level.
SE_anno_get_offset | Retrieves the offset of the annotation.
SE_anno_get_placement | Retrieves the annotation’s placement.
SE_anno_get_symbol | Retrieves the annotation symbol.
SE_anno_get_text | Retrieves the text of the annotation.
SE_anno_get_text_size | Retrieves the text height and gap ratio of the annotation.
SE_anno_set_alignment | Sets the alignment of the annotation.
SE_anno_set_justification | Sets the annotation’s justification.
SE_anno_set_leader | Sets the leader for the specified annotation.
SE_anno_set_level | Sets the annotation level.
SE_anno_set_offset | Sets the offset of the annotation.
SE_anno_set_placement | Sets the annotation’s placement.
SE_anno_set_symbol | Sets the annotation symbol.
SE_anno_set_text | Sets the text of the annotation.
SE_anno_set_text_size | Sets the text height and gap ratio of the annotation.

Back


Locking data in SDE

Locking Data in ArcSDE

Locking data in a layer
Locking table schema
Locking application objects
Locking rows in a table
Back to the concepts introduction


Locking data in a layer

To avoid conflicts with other users, ArcSDE supports a locking mechanism to prevent data in a layer from being modified. The locking mechanism operates on either an area or an entire layer, and supports both read locks and write locks. Except for row locks, a lock remains in effect until it is explicitly released or the connection is freed. Row locks are persistent and must be explicitly released. Freeing a connection does not free row locks.

Lock types

SE_READ_LOCK A READ lock prevents others from updating data in the area of the lock. Other users can establish READ locks in the same area, but no users can establish WRITE locks or update the data until all READ locks are freed.

SE_WRITE_LOCK A WRITE lock prevents any other user from establishing any kind of lock in the area until the WRITE lock is released. Users can still read data from the area, but they are not permitted to establish a READ lock.

Lock scopes

LAYER Lock A LAYER lock establishes a READ or WRITE lock on an entire ArcSDE layer. Multiple READ locks can be established on a layer at any time. If a WRITE lock is in place on a layer, no other locks are permitted.

AREA Lock An AREA lock defines a rectangular area on a layer that is to be either READ or WRITE locked. A user can define multiple AREA locks on a layer, but only one WRITE lock with no READ locks is permitted in an area. WRITE locks may not overlap, but READ locks can overlap.

Lock-related functions

Function Name | Function Description
SE_layer_free_lock | Releases a lock placed on a layer.
SE_layer_free_locks | Releases memory allocated for the list of locks returned by SE_layer_get_locks.
SE_layer_get_locks | Retrieves information on the locks set on a layer.
SE_layer_lock | Locks an entire layer.
SE_layer_lock_area | Locks the specified area for a given layer.
SE_layer_modify_lock | Modifies an already established lock.

Back


Locking Table Schema

Table schema changes during application execution can cause problems when the application caches column names. Applications may protect themselves, or others, from changes in schema by setting table schema locks.

Lock types

SE_TABLE_SHARED_SCHEMA_LOCK A shared schema lock prevents others from modifying the table’s schema. Other users can establish shared schema locks on the same table, but no users can establish an exclusive schema lock until all shared schema locks are freed.

SE_TABLE_EXCLUSIVE_SCHEMA_LOCK An exclusive schema lock prevents any other user from establishing any kind of schema lock on the table until the exclusive schema lock is released. Users can still read data from the table, but they are not permitted to establish a shared schema lock.

Function Name | Function Description
SE_table_free_lock | Frees the locks on a table.
SE_table_free_locks | Frees an array of locks.
SE_table_get_locks | Returns a list of locks on a table.
SE_table_lock | Locks a table.

Back


Locking Application Objects

Object locks allow you to set an arbitrary, application-defined lock on an object. Object locks can be used by the application to provide general purpose lock services. Objects are identified by an application defined object type and the ID of the object. Object locks are released when the application disconnects from ArcSDE.

Information about an object lock is contained in an SE_OBJECTLOCKINFO opaque pointer. A set of functions of the format SE_objectlockinfo_* allows you to retrieve and set the various object lock parameters. You must call SE_objectlockinfo_create before using any other function that uses an SE_OBJECTLOCKINFO object.

Lock Types

SE_ OBJECTLOCK_SHARED_LOCK A shared lock prevents others from establishing an exclusive lock. Other users can establish shared locks on the same object, but no users can establish an exclusive lock until all shared locks are freed.

SE_ OBJECTLOCK_EXCLUSIVE_LOCK An exclusive lock prevents any other user from establishing any kind of lock on the object until the exclusive lock is released.

SE_OBJECTLOCK_NO_LOCK_SET indicates that no lock is present on this object.

Objectlockinfo functions

Function Name | Function Description
SE_objectlockinfo_create | Creates an object lock definition.
SE_objectlockinfo_duplicate | Copies a object lock definition.
SE_objectlockinfo_free | Frees memory allocates for a object lock definition.
SE_objectlockinfo_get_lock_mode | Retrieves the object lock mode.
SE_objectlockinfo_get_object_id | Retrieves the ID of an object lock.
SE_objectlockinfo_get_object_type | Retrieves the type of an object lock.
SE_objectlockinfo_get_owner | Retrieves the owner.
SE_objectlockinfo_set_object_id | Sets the ID of an object lock.
SE_objectlockinfo_set_object_type | Sets the type of an object lock.

Objectlock functions

Function Name | Function Description
SE_objectlock_free_list | Releases memory allocated for a list of object lock structures.
SE_objectlock_free_lock | Releases memory allocated for a list of object lock structures.
SE_objectlock_get_list | Retrieves an array of SE_OBJECTLOCKINFO structures for all accessible object locks.
SE_objectlock_lock | Locks a object.

Back


Locking rows in a table

Locks are placed on features to prevent update collisions between users. ArcSDE already supports area locks, the ArcSDE 8.0 release also support persistent rowlocks. This included registered tables that with or without a spatial column but do not support versioned table.

A rowlock is a persistent flag recorded for a row in an ArcSDE registered table that indicates that only the user placing the lock may delete, rowlock or update that row. Rowlocks are stored in a separate lock table. A registered table must have a valid ArcSDE maintain integer row_id column which is set by calling SE_reginfo_set_rowid_column and have the SE_REGISTRATION_HAS_ROW_LOCKS bit set in its object mask by calling SE_reginfo_set_rowlocks to allow rowlocking operations. You must call SE_registration_create or SE_registration_alter for your SE_REGINFO setting to take affect.

Rowlocks, area locks and layer locks don't know about each other and don't interact. So in ArcSDE 8.0, if a registered table has both a layer and rowlocking enabled, then area locks are not allowed, an error of SE_LAYER_INUSE being returned and no autolocks are set.

There is two basic technique one can perform rowlock operation on a registered table. One way is to use the set of SE_table_* functions and the other is to perform rowlock as a constraint on an ArcSDE stream.

With the set of SE_table_* functions, basically an array of row_id is pass for adding or removing locks.

With the stream-based rowlocks, it works rather like a combination of stream logging and stream versions. They are like logging as process happens as a side-affect of other operations (query, insert or update), and like versions in that they can be both input filters and output filters. This is managed directly on a stream, by calling the function SE_stream_set_rowlocking to setup the rowlocking operation flags.

Rowlocks affect who is allowed to delete or update the existing rows for the registered table. If a row is rowlocked by a user other than the one currently connected, then SE_stream_delete_row, SE_stream_set_row, SE_stream_flush_buffered_writes or SE_stream_execute will return SE_LOCK_CONFLICT.

The SE_stream_set_rowlocking function is called for setting the rowlocking environment for the specified stream. It remains in effect until the stream is closed with reset TRUE or until the stream is freed.

Rowlocking operation flags on stream:

SE_ROWLOCKING_LOCK_ON_QUERY All rows selected by SE_stream_fetch_row(), SE_stream_query() or SE_stream_query_logfile() will be rowlocked. If any of the rows selected are rowlocked by other users, then no rows will be rowlocked. Rows already rowlocked by the current user will not cause failure. At the start of the query, the lock table will be locked with an underlying DBMS lock. At the completion of the query, a commit will be performed to preserve the rowlocks.

SE_ROWLOCKING_LOCK_ON_INSERT All new rows inserted by SE_stream_insert_table() will automatically have a rowlock entry inserted for them at the same time.

SE_ROWLOCKING_LOCK_ON_UPDATE All rows modified by SE_stream_set_row(), SE_stream_update_row() or SE_stream_update_table() have a rowlock entry made for them at the same time.

SE_ROWLOCKING_LOCK_ONLY No actual features are returned by query operations, only the rowlocks are placed, and if requested by SE_stream_set_logfile(), rowlocked rows are logged.

SE_ROWLOCKING_UNLOCK_ON_QUERY All rows selected by SE_stream_fetch_row(), SE_stream_query() or SE_stream_query_logfile() will have any rowlocks owned by the current user removed. At the completion of the query, a commit will be performed to preserve the changes to the rowlocks.

SE_ROWLOCKING_UNLOCK_ON_UPDATE All rows modified by SE_stream_set_row(), SE_stream_update_row() or SE_stream_update_table() have their corresponding rowlock entry (if any) removed for them at the same time.

SE_ROWLOCKING_FILTER_MY_LOCKS This is a query filter, affecting SE_stream_fetch_row(), SE_stream_query() and SE_stream_query_logfile(): only those features locked by the current user are returned (unless other lock filter options are selected -- they are additive).

SE_ROWLOCKING_FILTER_OTHER_LOCKS This is a query filter, affecting SE_stream_fetch_row(), SE_stream_query() and SE_stream_query_logfile(): only those features locked by the users other than the current user are returned (unless other lock filter options are selected -- they are additive).

SE_ROWLOCKING_FILTER_UNLOCKED This is a query filter, affecting SE_stream_fetch_row(), SE_stream_query() and SE_stream_query_logfile(): only those features not locked by any user are returned (unless other lock filter options are selected -- they are additive).

Functions for enabling rowlocks on registered table

Function Name | Function Description
SE_reginfo_allow_rowlocks | See if a registered table is rowlock enabled.
SE_reginfo_set_rowid_column | Sets registered table's row_id column name.
SE_reginfo_set_rowlocks | To enable or disable rowlocking on a registered table.

Table functions that manage rowlocking

Function Name | Function Description
SE_table_add_rowlocks | Adds an array of locks to the lock table.
SE_table_get_rowlocks | Return locks for a registered table as arrays of row_id and user_name.
SE_table_get_rowlocks_by_user | Given user name, return locks for a registetered table as an array of row_id.
SE_table_free_rowlocks_list | Free row_id and user_name arrays from SE_table_get_rowlocks_by_user or SE_table_get_rowlocks.
SE_table_remove_rowlocks | Removes an array of locks from the lock table.

Stream function to initiates rowlocking

Function Name | Function Description
SE_stream_set_rowlocking | Sets the rowlocking environment as a constraint on an ArcSDE stream.

Sample code segment for enabling rowlocks on registered table.

LONG                    rc;

SE_CONNECTION  connection;

SE_REGINFO          regInfo;

/* Create register info structure */

rc = SE_reginfo_create (&regInfo);

check_error (connection, NULL, rc, "SE_reginfo_create");

/* Get the registry info of a table */

rc = SE_registration_get_info (connection, "my_table", regInfo);

check_error (connection, NULL, rc, "SE_registration_get_info");

/* Set row_id column name and column type as ArcSDE maintain */

rc = SE_reginfo_set_rowid_column (regInfo, "my_row_id",

                                                             SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE);

check_error (connection, NULL, rc, "SE_reginfo_set_rowid_column");

/* Allowed rowlocks on table */

rc = SE_reginfo_set_rowlocks (regInfo, TRUE);

check_error (connection, NULL, rc, "SE_reginfo_set_rowlocks");

/* Now, perform the actual update by ArcSDE server */

rc = SE_registration_alter (connection, regInfo);

check_error (connection, NULL, rc, "SE_registration_alter");

/* Free regInfo */

SE_reginfo_free (regInfo);

Sample code segment of rowlocking with table functions.

SE_CONNECTION   connection;

LONG                         num_locks, failed_row_id, row_id_array[100];

LONG                       *output_row_id_array;

CHAR                     **output_user_name_array;

/* User1 create ArcSDE connection */

rc = SE_connection_create (server, instance, "user1", NULL, "user1_password",

                                                                                &connection);

check_error (connection, NULL, rc, "SE_connection_create");

/* Note: assume the table is registered, rowlocks enable and rows exist. */

/* User1 add rowlock for feature number 10, 11 and 12 */

row_id_array[0] = 10;

row_id_array[1] = 11;

row_id_array[2] = 12;

num_locks = 3;

rc = SE_table_add_rowlocks (connection, "my_table", num_locks, row_id_array,

                                                 SE_NULL_STATE_ID, &failed_row_id);

if (SE_SUCCESS != rc)

{

  if (failed_row_id  > 0)

      printf ("Failed to lock feature number %d \n", failed_row_id);

  check_error (connection, NULL, rc, "SE_table_add_rowlocks");

}

/* User1 remove rowlock for feature number 11 */

row_id_array[0] = 11;

num_locks = 1;

rc = SE_table_remove_rowlocks (connection, "my_table", num_locks, row_id_array,

                                                         SE_NULL_STATE_ID, &failed_row_id);

if (SE_SUCCESS != rc)

{

   if (failed_row_id  > 0)

       printf ("Failed to unlock feature number %d \n", failed_row_id);

   check_error (connection, NULL, rc, "SE_table_remove_rowlocks");

}

/* Get all locks on "my_table" */

rc = SE_table_get_rowlocks (connection, "my_table", &num_locks, &output_row_id_array,

                                                                                &output_user_name_array);

check_error (connection, NULL, rc, "SE_table_get_rowlocks");

printf ("Total number of rowlocks on 'my_table' are %d \n", num_locks);

for (k=0; k < num_locks; k++)

       printf ("rowid   %d   '%s'\n",output_row_id_array[k],output_user_name_array[k]);

/* Note: the output from the above printf statements should look like the following.

 *

 *  Total number of rowlocks on 'my_table' are 2

 *  rowid  10   'USER1'

 *  rowid  12   'USER1'

 */

/* Free resources */

SE_table_free_rowlocks_list (num_locks, output_row_id_array,

                                                                     output_user_name_array);

/* Get all locks on "my_table" by "user1" */

rc = SE_table_get_rowlocks_by_user (connection, "my_table", "user1", &num_locks,

                                                                                &output_row_id_array);

check_error (connection, NULL, rc, "SE_table_get_rowlocks_by_user");

printf ("Total number of rowlocks on 'my_table' by 'user1' are %d \n", num_locks);

for (k=0; k < num_locks; k++)

       printf ("rowid    %d \n", output_row_id_array[k]);

/* Note: the output from the above printf statements should look like the following.

 *

 *  Total number of rowlocks on 'my_table' by 'user1' are 2

 *  rowid   10

 *  rowid   12

 */

/* Free resources */

SE_table_free_rowlocks_list (num_locks, output_row_id_array, NULL);

SE_connection_free (connection);        /* Free connection */

Sample code segment of rowlocking with stream functions.

CHAR                                 *server, *instance, *database, where_clause[4096];

LONG                                   rc, num_locks, row_id, rowid_colType;

LFLOAT                               data;

SE_SQL_CONSTRUCT   *sqlc;

CHAR                                   rowid_colnam[SE_MAX_COLUMN_LEN];

SHORT                                col_cnt;

const CHAR                       *col_list[16];

SE_CONNECTION             connection

SE_STREAM                      stream;

SE_REGINFO                     regInfo;

/* User1 create ArcSDE connection */

rc = SE_connection_create (server, instance, "user1", database, "user1_password",

                                                                                &connection);

check_error (connection, NULL, rc, "SE_connection_create");

/* Get table registry info */

rc = SE_reginfo_create (&regInfo);

check_error (connection, NULL, rc, "SE_reginfo_create");

rc = SE_registration_get_info (connection, "my_table", regInfo);

check_error (connection, NULL, rc, "SE_registration_get_info");

/* Get register table's rowid column name and rowid column type */

rc = SE_reginfo_get_rowid_column (regInfo, rowid_colnam, &rowid_colType);

check_error (connection, NULL, rc, "SE_reginfo_get_rowid_column");

if (rowid_colType != SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE)

{

  printf ("Rowid column is not SDE maintain...\n");

  exit (1);

}

/* Free resources */

SE_reginfo_free (regInfo);

/* Setup SE_SQL_CONSTRUCT */

rc = SE_sql_construct_alloc (1, &sqlc);

sqlc->num_tables = 1;

strcpy (sqlc->tables[0], "my_table");

/* Setup column names array for stream query */

col_list[0] = strdup (rowid_colname);

col_list[1] = "data";                                              /* Attribute column type double */

col_cnt = 2;

/* ------------------------------------------------------------------------

 * User1 add rowlock for feature number 10, 11 and 12 with stream

 * Note: rows exist.

 * ------------------------------------------------------------------------

 */

rc = SE_stream_create (connection, &stream);                   /* Create a stream */

check_error (connection, NULL, rc, "SE_stream_create");

/* Sets SE_ROWLOCKING_LOCK_ON_QUERY on stream */

rc = SE_stream_set_rowlocking (stream, SE_ROWLOCKING_LOCK_ON_QUERY);

check_error (NULL, stream, rc, "SE_stream_set_rowlocking");

sprintf (where_clause, "where %s in (10, 11, 12)", rowid_colname);

sqlc->where = &where_clause[0];

/* Initiates the stream query */

rc = SE_stream_query (stream, col_cnt, (const CHAR **) col_list,

                                                                    (const SE_SQL_CONSTRUCT *) sqlc);

check_error (NULL, stream, rc, "SE_stream_query");

/* Execute the query. */

rc = SE_stream_execute (stream);

check_error (NULL, stream, rc, "SE_stream_execute");

while (SE_SUCCESS == rc)

{

  rc = SE_stream_fetch (stream);

  if (rc != SE_SUCCESS)

  {

    if (rc == SE_FINISHED)  break;

    check_error (NULL, stream, rc, "SE_stream_fetch");

  }

  /* Get the column value */

  rc = SE_stream_get_integer (stream, 1, (LONG *) &row_id);

  check_error (NULL, stream, rc, "SE_stream_get_interger");

  rc = SE_stream_get_double  (stream, 2, (LFLOAT *) &data);

  check_error (NULL, stream, rc, "SE_stream_get_double");

  printf ("rowid %d is locked\n", row_id);

} /* while () */

/* ------------------------------------------------------------------------

 * Get all locks on "my_table"

 * ------------------------------------------------------------------------

 */

rc = SE_stream_close (stream, TRUE);                                     /* Reset stream */

check_error (NULL, stream, rc, "SE_stream_close");

/* Sets to fetch all locks on table */

rc =SE_stream_set_rowlocking(stream,SE_ROWLOCKING_FILTER_MY_LOCKS |

                                                           SE_ROWLOCKING_FILTER_OTHER_LOCKS);

check_error (NULL, stream, rc, "SE_stream_set_rowlocking");

sqlc->where = (CHAR *) NULL;

/* Initiates the stream query */

rc = SE_stream_query (stream, col_cnt, (const CHAR **) col_list,

                                                                   (const SE_SQL_CONSTRUCT *) sqlc);

check_error (NULL, stream, rc, "SE_stream_query");

/* Execute the query. */

rc = SE_stream_execute (stream);

check_error (NULL, stream, rc, "SE_stream_execute");

while (SE_SUCCESS == rc)

{

  rc = SE_stream_fetch (stream);

  if (rc != SE_SUCCESS)

  {

    if (rc == SE_FINISHED)  break;

    check_error (NULL, stream, rc, "SE_stream_fetch");

  }

  /* Get the column value */

  rc = SE_stream_get_integer (stream, 1, (LONG *) &row_id);

  rc = SE_stream_get_double  (stream, 2, (LFLOAT *) &data);

  printf ("rowid %d is locked\n", row_id);

} /* while () */

/* Free resources */

rc = SE_stream_free (stream)

check_error (NULL, stream, rc, "SE_stream_free");

SE_sql_construct_free (sqlc);

SE_connection_free (connection);

Back


API for Version and State Management

ArcSDE provides three API’s for accessing data in a versioned database. The Native SQL access provides a single SQL Stored Produce to set the desired version – all insert, update, delete and query operations will be processed against that version. The ArcSDE Java API provides the same functionality as the C API. See the ArcSDE Java API function reference for more information.

The ArcSDE C-API provides full access to the Version and State objects. This API follows the traditional ArcSDE API coding conventions, providing SE_versioninfo and SE_stateinfo objects for accessing version and state properties. The standard SDE alter, create, delete, and list functions are provided for states and versions, as well as specialized methods for these objects.

A few additional functions are provided in the ArcSDE C-API for setting versions on stream queries, to set difference filters on stream queries, and to determine if an ArcSDE registered table is versioned. These functions are documented as part of the SE_stream and SE_registration objects – the appropriate functions have been duplicated here.

Version functions

Function Name | Function Description
SE_version_alter | Changes a version definition.
SE_version_change_state | Changes the state of a version.
SE_version_create | Creates a new version.
SE_version_delete | Deletes a version.
SE_version_free_info_list | Releases memory allocated for a list of version structures.
SE_version_free_lock | Releases a version lock.
SE_version_free_locks | Releases memory allocated for a list of version lock structures.
SE_version_get_info | Retrieves a version definition.
SE_version_get_info_by_id | Retrieves information for a version by its ID.
SE_version_get_info_list | Retrieves an array of SE_VERSIONINFO structures for all accessible versions.
SE_version_get_locks | Retrieves the locks on a version.
SE_version_lock | Locks a version.
SE_version_rename | Renames a version.

Information about a version is contained in an SE_VERSIONINFO opaque pointer. A set of functions of the format SE_versioninfo_* allows you to retrieve and set the various version parameters. You must call SE_versioninfo_create before using any other function that uses an SE_VERSIONINFO object.

Versioninfo functions

Function Name | Function Description
SE_versioninfo_create | Creates a version definition.
SE_versioninfo_duplicate | Copies a version definition.
SE_versioninfo_free | Frees memory allocates for a version definition.
SE_versioninfo_get_access | Retrieves the version access type.
SE_versioninfo_get_creation_time | Retrieves the version access type.
SE_versioninfo_get_description | Retrieves the version description.
SE_versioninfo_get_id | Retrieves the ID of a version.
SE_versioninfo_get_name | Retrieves the version name.
SE_versioninfo_get_parent_id | Retrieves the parent ID of a version.
SE_versioninfo_get_parent_name | Retrieves the parent name.
SE_versioninfo_get_state_id | Retrieves the state ID of a version.
SE_versioninfo_set_access | Sets the version access type.
SE_versioninfo_set_description | Sets a version description.
SE_versioninfo_set_name | Sets a version name.
SE_versioninfo_set_parent_name | Sets the parent name.
SE_versioninfo_set_state_id | Sets the state ID of a version.

State functions

Function Name | Function Description
SE_state_close | Changes a state definition.
SE_state_compress_tree | Changes the state of a state.
SE_state_create | Creates a new state.
SE_state_delete | Deletes a state.
SE_state_delete_range | Deletes a list of states.
SE_state_free_info_list | Releases memory allocated for a list of state structures.
SE_state_free_lock | Releases memory allocated for a list of state structures.
SE_state_get_info | Retrieves a state definition.
SE_state_get_info_list | Retrieves an array of SE_STATEINFO structures for all accessible states.
SE_state_lock | Locks a state.
SE_state_merge | Merges two states.
SE_state_open | Opens a state.
SE_state_trim_tree | Removes states between two given states.

Information about a state is contained in an SE_STATEINFO opaque pointer. A set of functions of the format SE_stateinfo_* allows you to retrieve and set the various state parameters. You must call SE_stateinfo_create before using any other function that uses an SE_STATEINFO object.

Stateinfo functions

Function Name | Function Description
SE_stateinfo_create | Creates a state definition.
SE_stateinfo_duplicate | Copies a state definition.
SE_stateinfo_free | Frees memory allocates for a state definition.
SE_stateinfo_get_closing_time | Retrieves the state closing time.
SE_stateinfo_get_creation_time | Retrieves the state creation time.
SE_stateinfo_get_id | Retrieves the ID of a state.
SE_stateinfo_get_lineage | Retrieves the lineage.
SE_stateinfo_get_owner | Retrieves the owner.
SE_stateinfo_get_parent | Retrieves the parent.
SE_stateinfo_is_open | Changes a state definition.

Back


Versioned Database Coding Example

/***********************************************************************

*

*N  {versioned_1.c}  --  Examples of programming vs a versioned instance

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This program provides examples of programming against a versioned

*   instance.  Two versions are created, seperately edited, then

*   reconciled.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*X  Script:

*

* 1. High-Level Overview

*

*     Each of the following steps will be broken down further below.

*

*  o  Create a base table;

*  o  User 1 creates a version and edits the base table in several states;

*  o  User 2 creates a version and edits the base table in several states;

*  o  User 1 reconciles his and User 2's versions.

*

*

* 2. Create a Base Table

*

*      A user-named table with 60 rows and the following schema will

* be created:

*

*      DATA            SE_STRING_TYPE(64)

*      CATEGORY        INTEGER

*

* The DATA column will contain strings of the form: "Original Row 1",

* "Original Row 2", etc.  The CATEGORY column will evenly divided

* between 1's and 2's.  This table will be given an ArcSDE-maintained row

* id column (ROW_ID) and made a layer (with a spatial column named

* SHAPE).  Simple squares will be generated for shapes.  Once it is

* built, it will also be made multiversion.

*

*

* 3.  User 1's Edit Session

*

*      User 1 will start by creating a state that is the child of the

* state of the DEFAULT version, and a version named "User 1" which is a

* child of the DEFAULT version.

*

*      User 1 will perform two updates, a delete and an insert, then

* close the current state, and create a child state.  This will be

* repeated four times to simulate an edit session with save points.

* Updates will have DATA fields with values of the form: "Updated Row 1,

* at State 3".  Inserted rows will have DATA fields of the form: "Row

* Inserted at state 3".

*

*      To simulate a rollback/undo operation, the last state will be

* deleted.

*

*      The version 'User 1' will be move to the last state in the chain.

*

*      The edit session will be compressed using trim to reduce it from

* three states to one.

*

*

* 4.  User 2's Edit Session

*

*      User 2 will start by creating a state that is the child of the

* state of the DEFAULT version, and a version named "User 2" which is a

* child of the DEFAULT version.

*

*      User 2 will perform two updates, a delete and an insert, then

* close the current state, and create a child state.  This will be

* repeated four times to simulate an edit session with save points.

* About 1/2 of the rows will be rows also modified by User 1.  Updates

* will have DATA fields with values of the form: "Updated Row 1, at

* State 3".  Inserted rows will have DATA fields of the form: "New Row

* 34, at state 3".

*

*      The version 'User 2' will be move to the last state in the chain.

*

*      The edit session will be compressed using trim to reduce it from

* four states to one.

*

*

* 5.  User 1 Reconciles with User 2.

*

*      User 1 will create a new state to receive the results of the

* reconciliation.  The following reconcilation queries will be made:

*

* NoChange/Delete from User 1 to User 2.  Any unmodified rows in User 1

* that were deleted in User 2 and have a CATEGORY of 1 will be deleted.

*

* Nochange/Update from User 1 to User 2.  Any rows updated in User 2 and

* not in User 1 and having a CATEGORY of 1 will be copied over.

*

* Insert from User 2 to User 1.  Any rows inserted into User 2 will be

* copied to User 1.

*

* Update/Delete from User 2 to User 1.  Any rows deleted in User 1 but

* updated in User 2 will be copied from User 2 to User 1.

*

*      Finally, the version "User 1" will move moved to the new,

* reconciled state, the state closed, and trim performed to remove the

* old state.

*

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*X  Legalese:

*

*   Copyright 1992-1999, Environmental Systems Research Institute, Inc.

*   All rights reserved.  This software is provided with RESTRICTED AND

*   LIMITED RIGHTS.  Use, duplication, or disclosure by the Government

*   is subject to restrictions as set forth in FAR 52.227-14 (JUN 1987)

*   Alternate III (g) (3) (JUN 1987), FAR 52.227-19 (JUN 1987), or

*   DFARS 252.227-7013 (c) (1) (ii) (OCT 1988), as applicable.

*   Contractor/Manufacturer is Environmental Systems Research Institute,

*   Inc. (ESRI), 380 New York Street., Redlands, California 92373.

*

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Usage:

*     versioned_1 <table> <user> <password> {server} {instance} {database}

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/11/99           Original coding.

*E

***********************************************************************/

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

#ifdef unix

#  include <unistd.h>

#elif defined (WIN32)

#  include <winsock.h>

#endif

#include "sdetype.h"

#include "sdeerno.h"

/* Constants. */

#define NUMBER_OF_ROWS  60

#define MAX_EDIT_DEPTH  6

#define USER_1_VERSION  "User 1"

#define USER_2_VERSION  "User 2"

/* Function macros */

#define print_error(c,s)\

   S_print_error (c,s,__LINE__)

#define print_conn_error(h,c,s)\

   S_print_conn_error (h,c,s,__LINE__)

#define print_stream_error(st,c,s)\

   S_print_stream_error (st,c,s,__LINE__)

/* Type definitions. */

typedef enum {

  RE_DELETE_ROWS_FOUND,

  RE_COPY_ROWS_FOUND

} RE_ACTION;

/***********************************************************************

*

*N  {S_print_error}  --  Print an ArcSDE error.

*

***********************************************************************/

static void S_print_error (LONG        code,

                           const CHAR  *str,

                           LONG        line_number)

{

  LONG  result;

  CHAR  errstr[SE_MAX_MESSAGE_LENGTH];

  result = SE_error_get_string (code,errstr);

  if (SE_SUCCESS != result) strcpy (errstr,"Unknown error code");

  printf ("Error: %s (%d).\n",errstr,code);

  printf ("Error: %s\n",str);

  printf ("Near line number: %d\n",line_number);

  return;

}

/***********************************************************************

*

*N  {S_print_conn_error}  --  Print an ArcSDE connection error.

*

***********************************************************************/

static void S_print_conn_error (SE_CONNECTION  handle,

                                LONG           code,

                                const CHAR     *errstr,

                                LONG           line_number)

{

  SE_ERROR  error;

  S_print_error (code,errstr,line_number);

  if (code == SE_DB_IO_ERROR) {

    if ((SE_connection_get_ext_error (handle,&error)) == SE_SUCCESS) {

      if (error.err_msg1[0] != NULL) {

        printf ("%s\n",error.err_msg1);

        if (error.err_msg2[0] != NULL)

          printf ("%s\n",error.err_msg2);

      }

      else

        printf ("DBMS error (%d)\n",error.ext_error);

    }

  }

  return;

}

/***********************************************************************

*

*N  {S_print_stream_error}  --  Print an ArcSDE stream error.

*

***********************************************************************/

static void S_print_stream_error (SE_STREAM  stream,

                                  LONG       code,

                                  CHAR       *errstr,

                                  LONG       line_number)

{

  SE_ERROR  error;

  S_print_error (code,errstr,line_number);

  if (code == SE_DB_IO_ERROR) {

    if ((SE_stream_get_ext_error (stream,&error)) == SE_SUCCESS) {

      if (error.err_msg1[0] != NULL) {

        printf ("%s\n",error.err_msg1);

        if (error.err_msg2[0] != NULL)

          printf ("%s\n",error.err_msg2);

      }

      else

        printf ("DBMS error (%d)\n",error.ext_error);

    }

  }

  return;

}

/***********************************************************************

*

*N  {S_compare_ids}  --  Compare a pair of row ids for sorting.

*

***********************************************************************/

static int S_compare_ids (const void  *id_ptr_1,

                          const void  *id_ptr_2)

{

  LONG  id_1 = *(LONG *)id_ptr_1;

  LONG  id_2 = *(LONG *)id_ptr_2;

  if (id_1 > id_2) return (1);

  if (id_1 < id_2) return (-1);

  return (0);

}

/***********************************************************************

*

*N  {S_create_base_table}  --  Create the base table and contents for test

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function creates a non-multiversion table with three columns

*   (DATA, CATEGORY and SHAPE), and places NUMBER_OF_ROWS rows in it.

*   Every row receives a unique DATA string, a CATEGORY of 1 or 2, and

*   a unique square polygon.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection  <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                               handle; used to request information and

*                               actions from the server.

*     table_name  <Input>  ==  (const CHAR *) The name of the base table

*                               to create.

*     RETURN     <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                               an appropriate ArcSDE error code on

*                               failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/13/99           Original coding.

*E

***********************************************************************/

static LONG S_create_base_table (SE_CONNECTION  connection,

                                 const CHAR     *table_name)

{

  LONG           result,row,category;

  SE_STREAM      stream;

  CHAR           data[64],*columns[3];

  SE_LAYERINFO   layer;

  SE_COORDREF    coordref;

  SE_SHAPE       shape;

  SE_ENVELOPE    rectangle;

  SHORT          data_ind = SE_IS_NOT_NULL_VALUE;

  SHORT          category_ind = SE_IS_NOT_NULL_VALUE;

  SHORT          shape_ind = SE_IS_NOT_NULL_VALUE;

  SE_COLUMN_DEF  column_def[] = {{"data",SE_STRING_TYPE,64,0,FALSE},

                                 {"category",SE_INTEGER_TYPE,0,0,TRUE}};

  /* Create the table. */

  result = SE_table_create (connection,table_name,(SHORT)2,column_def,

                            "DEFAULTS");

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to create table.",table_name);

    print_conn_error (connection,result,"Unable to create table");

    return (result);

  }

  /* Give the table a layer (column name SHAPE). */

  result = SE_coordref_create (&coordref);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create coordref object");

    return (result);

  }

  result = SE_coordref_set_xy (coordref,0.0,0.0,10000.0);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_coordref_set_xy");

    return (result);

  }

  result = SE_layerinfo_create (coordref,&layer);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create layerinfo object");

    return (result);

  }

  result = SE_layerinfo_set_grid_sizes (layer,1000.0,0.0,0.0);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_layerinfo_set_grid_sizes");

    return (result);

  }

  result = SE_layerinfo_set_shape_types (layer,

                                         SE_AREA_TYPE_MASK|SE_NIL_TYPE_MASK);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_layerinfo_set_shape_types");

    return (result);

  }

  result = SE_layerinfo_set_spatial_column (layer,table_name,"shape");

  if (SE_SUCCESS != result) {

    print_error (result,"SE_layerinfo_set_spatial_column");

    return (result);

  }

  result = SE_layer_create (connection,layer,0,0);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create layer.");

    return (result);

  }

  SE_layerinfo_free (layer);

  /* Set up to insert NUMBER_OF_ROWS rows. */

  result = SE_shape_create (coordref,&shape);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create shape object");

    return (result);

  }

  SE_coordref_free (coordref);

  result = SE_stream_create (connection,&stream);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create stream.");

    return (result);

  }

  result = SE_connection_start_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"SE_connection_start_transaction");

    return (result);

  }

  columns[0] = column_def[0].column_name;

  columns[1] = column_def[1].column_name;

  columns[2] = "shape";

  result = SE_stream_insert_table (stream,table_name,(SHORT)3,

                                   (const CHAR **)columns);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_insert_table");

    return (result);

  }

  result = SE_stream_set_write_mode (stream,TRUE /* Buffered. */);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_set_write_mode");

    return (result);

  }

  result = SE_stream_bind_input_column (stream,1,data,&data_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_bind_input_column (data)");

    return (result);

  }

  result = SE_stream_bind_input_column (stream,2,&category,&category_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_bind_input_column (category)");

    return (result);

  }

  result = SE_stream_bind_input_column (stream,3,shape,&shape_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_bind_input_column (shape)");

    return (result);

  }

  /* Perform the actual inserts. */

  for (row = 0;row < NUMBER_OF_ROWS;row++) {

    /* Generate data. */

    sprintf (data,"Base row %d",row + 1);

    category = row % 2 + 1;

    rectangle.minx = 1000.0 + row * 100.0;

    rectangle.miny = 1000.0;

    rectangle.maxx = 1100.0 + row * 100.0;

    rectangle.maxy = 1100.0;

    result = SE_shape_generate_rectangle (&rectangle,shape);

    if (SE_SUCCESS != result) {

      print_error (result,"Unable to generate rectangle into shape object");

      break;

    }

    /* Insert it. */

    result = SE_stream_execute (stream);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_execute (insert)");

      return (result);

    }

  }

  /* Done, clean up. */

  result = SE_stream_free (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_free");

    return (result);

  }

  result = SE_connection_commit_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Error in commit.");

    return (result);

  }

  SE_shape_free (shape);

  /* Done. */

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_make_table_multiversion}  --  Make our test table multiversioned.

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function takes the table created by S_create_base_table(),

*   and makes it multiversion and gives it a ArcSDE-maintained unique,

*   integer row id column (ROW_ID).

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection  <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                               handle; used to request information and

*                               actions from the server.

*     table_name  <Input>  ==  (const CHAR *) The name of the table to

*                               make multiversion.

*     RETURN     <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                               an appropriate ArcSDE error code on

*                               failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/13/99           Original coding.

*E

***********************************************************************/

static LONG S_make_table_multiversion (SE_CONNECTION  connection,

                                       const CHAR     *table_name)

{

  LONG        result;

  SE_REGINFO  registration;

  /* Fetch the existing registration for the table (the table will always

     have an existing registration entry because all ArcSDE-created tables

     are automatically registered).  */

  result = SE_reginfo_create (&registration);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create REGINFO object.");

    return (result);

  }

  result = SE_registration_get_info (connection,table_name,registration);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to fetch registration");

    return (result);

  }

  /* Update the registration entry to give it an ArcSDE-maintained row id

     column (named ROW_ID), to make it multiversion, and to give it a

     meaningful description.  */

  result = SE_reginfo_set_description (registration,

                                       "Version operations demo table.");

  if (SE_SUCCESS != result) {

    print_error (result,"SE_reginfo_set_description");

    return (result);

  }

  result = SE_reginfo_set_rowid_column (registration,"row_id",

                                        SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_reginfo_set_rowid_column");

    return (result);

  }

  result = SE_reginfo_set_multiversion (registration,TRUE);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_reginfo_set_multiversion");

    return (result);

  }

  /* Make the actual changes to the registration. */

  result = SE_registration_alter (connection,registration);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to modify registration.");

    return (result);

  }

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_create_edit_table}  --  Create a table to edit

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function creates our example edit table, which will have

*   60 rows in the base state, and be multiversioned.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection  <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                               handle; used to request information and

*                               actions from the server.

*     table_name  <Input>  ==  (const CHAR *) The name of the edit table

*                               to create.

*     RETURN     <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                               an appropriate ArcSDE error code on

*                               failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/22/99           Original coding.

*E

***********************************************************************/

static LONG S_create_edit_table (SE_CONNECTION  connection,

                                 const CHAR     *table_name)

{

  LONG  result;

  /* Delete the table in case it is pre-existing. */

  (void) SE_table_delete (connection,table_name);

  /* Create an unversioned table with data. */

  result = S_create_base_table (connection,table_name);

  if (SE_SUCCESS != result) return (result);

  /* Make it multiversioned. */

  result = S_make_table_multiversion (connection,table_name);

  return (result);

}

/***********************************************************************

*

*N  {S_create_version}  --  Create the version used for the edit run

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function creates a uniquely named version to be used for the

*   edit session.  It starts pointing to the base state of the instance.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     version_name  <Input>  ==  (const CHAR *) The name for the version

*                                 to create.  (This may not be the actual

*                                 name of the version created, to insure

*                                 uniqueness, ArcSDE may append a suffix

*                                 to the version name.)

*     version      <Output>  ==  (SE_VERSIONINFO *) The resulting version.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/26/99           Original coding.

*E

***********************************************************************/

static LONG S_create_version (SE_CONNECTION   connection,

                              const CHAR      *version_name,

                              SE_VERSIONINFO  *version)

{

  LONG  result,result2;

  /* Create the empty version object. */

  result = SE_versioninfo_create (version);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create VERSIONINFO object.");

    return (result);

  }

  /* Fetch the default version: we need it's state id. */

  result = SE_version_get_info (connection,SE_QUALIFIED_DEFAULT_VERSION_NAME,

                                *version);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to fetch default version");

    exit (EXIT_FAILURE);

  }

  /* Change our copy of the default version into the version we want to

     create. */

  result = SE_versioninfo_set_description (*version,

                                           "Editing demonstration version.");

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_set_description");

    return (result);

  }

  result = SE_versioninfo_set_name (*version,version_name);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_set_name");

    return (result);

  }

  result = SE_versioninfo_set_parent_name (*version,

                                           SE_QUALIFIED_DEFAULT_VERSION_NAME);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_set_parent_name");

    return (result);

  }

  /* Create the version in the database (if it already exists, we will delete

     it; in a user-driven application we might instead call SE_version_create()

     with the unique flag set to TRUE, and ArcSDE would add a suffix to our

     supplied version name in order to make it unique).  */

  (void) SE_version_delete (connection,version_name);

  result = SE_version_create (connection,*version,FALSE,*version);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create version.");

    return (result);

  }

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_create_child_state}  --  Create a child state of the supplied state

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     Given an existing state, this function creates a child of that

*   state, and returns its description.  If the parent state is open, it

*   is closed first.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     parent_state  <Input>  ==  (SE_STATEINFO) The state to be the parent

*                                 of the new state.

*     new_state    <Output>  ==  (SE_STATEINFO *) The newly created child

*                                 state of the parent state.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/01/99           Original coding.

*E

***********************************************************************/

static LONG S_create_child_state (SE_CONNECTION  connection,

                                  SE_STATEINFO   parent_state,

                                  SE_STATEINFO   *new_state)

{

  LONG  result,parent_state_id;

  /* Set up. */

  result = SE_stateinfo_get_id (parent_state,&parent_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  /* If the parent state is open, close it.   Only open states can be written

     to, and only closed states can have child states. */

  if (SE_stateinfo_is_open (parent_state)) {

    result = SE_state_close (connection,parent_state_id);

    if (SE_SUCCESS != result) {

      CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

      sprintf (error_msg,"Unable to close state %d.",parent_state_id);

      print_conn_error (connection,result,"Unable to fetch registration");

      return (result);

    }

  }

  /* Create the child state and its local object. */

  result = SE_stateinfo_create (new_state);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create STATEINFO object.");

    return (result);

  }

  result = SE_state_create (connection,*new_state,parent_state_id,*new_state);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create state.");

    SE_stateinfo_free (*new_state);

    *new_state = (SE_STATEINFO)NULL;

    return (result);

  }

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_edit_state}  -- "Edit" the specified table in the specified state

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function simulates a set of edits on a table in a state.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     state_id      <Input>  ==  (LONG) The id for the state in which the

*                                 edits are to occur.

*     table_name    <Input>  ==  (const CHAR *) The name of the table which

*                                 to edit.

*     delete_count  <Input>  ==  (LONG) The number of rows to delete.

*     delete_list   <Input>  ==  (const LONG *) The list of row ids for rows

*                                 to be deleted.

*     update_count  <Input>  ==  (LONG) The number of rows to update.

*     update_list   <Input>  ==  (const LONG *) The list of row ids for rows

*                                 to be updated.

*     insert_list   <Input>  ==  (LONG) The number of rows to insert.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/01/99           Original coding.

*E

***********************************************************************/

static LONG S_edit_state (SE_CONNECTION  connection,

                          LONG           state_id,

                          const CHAR     *table_name,

                          LONG           delete_count,

                          const LONG     *delete_list,

                          LONG           update_count,

                          const LONG     *update_list,

                          LONG           insert_count)

{

  LONG           result,row_id,*sorted_update_list,row,category;

  SE_STREAM      stream;

  CHAR           data[64],*columns[3];

  SE_LAYERINFO   layer;

  SE_COORDREF    coordref;

  SE_SHAPE       shape;

  SE_ENVELOPE    rectangle;

  SHORT          data_ind = SE_IS_NOT_NULL_VALUE;

  SHORT          category_ind = SE_IS_NOT_NULL_VALUE;

  SHORT          shape_ind = SE_IS_NOT_NULL_VALUE;

  /* Set up our stream and transaction environment. */

  result = SE_connection_start_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"SE_connection_start_transaction");

    return (result);

  }

  result = SE_stream_create (connection,&stream);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create stream.");

    return (result);

  }

  result = SE_stream_set_state (stream,

                                state_id,

                                SE_NULL_STATE_ID,

                                SE_STATE_DIFF_NOCHECK);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_set_state");

    return (result);

  }

  /* Perform the deletes. */

  if (delete_count > 0) {

    result = SE_stream_delete_by_id_list (stream,

                                          table_name,

                                          (LONG *)delete_list,

                                          delete_count);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_delete_by_id_list");

      return (result);

    }

    result = SE_stream_close (stream,FALSE /* Don't reset. */);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_close");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

  }

  /* Perform the update.   We are going to use SE_stream_update_ordered(),

     which is the most efficient update function to use for versioned data*;

     but requires that rows be updated in row_id order (ascending).  If this

     is not practical, SE_stream_update_row() should be used instead (or if

     updating by other than row_id, SE_stream_update_table()).

     (*) For unversioned data, SE_stream_update_row() is as efficient.  */

  /* Create a sorted version of the update list. */

  if (update_count > 0) {

    sorted_update_list = (LONG *) malloc (update_count * sizeof(LONG));

    if ((LONG *)NULL == sorted_update_list) {

      CHAR  msg[80];

      sprintf (msg,"Unable to allocate %d bytes for sorted update list.",

               update_count * sizeof(LONG));

      print_error (SE_OUT_OF_CLMEM,msg);

      (void) SE_connection_rollback_transaction (connection);

      return (SE_OUT_OF_CLMEM);

    }

    memcpy (sorted_update_list,update_list,update_count * sizeof(LONG));

    qsort (sorted_update_list,update_count,sizeof(LONG),S_compare_ids);

    /* Perform the actual update. */

    columns[0] = "data";

    result = SE_stream_update_ordered (stream,

                                       table_name,

                                       &row_id,

                                       update_list /* Unsorted list OK here. */,

                                       update_count,

                                       (SHORT)1,

                                       (const CHAR **)columns);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_update_row");

      (void) SE_connection_rollback_transaction (connection);

      free (sorted_update_list);

      return (result);

    }

    result = SE_stream_set_write_mode (stream,TRUE /* Buffered. */);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_set_write_mode");

      return (result);

    }

    result = SE_stream_bind_input_column (stream,1,data,&data_ind);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_bind_input_column (data)");

      return (result);

    }

    for (row = 0;row < update_count;row++) {

      sprintf (data,"Updated row %d at state %d",sorted_update_list[row],

               state_id);

      row_id = sorted_update_list[row]; /* Select row to update. */

      result = SE_stream_execute (stream);

      if (SE_SUCCESS != result) {

        print_stream_error (stream,result,"SE_stream_execute (insert)");

        (void) SE_connection_rollback_transaction (connection);

        free (sorted_update_list);

        return (result);

      }

    }

    free (sorted_update_list);

    result = SE_stream_close (stream,FALSE /* Don't reset. */);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_close");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

  }

  /* Perform the inserts. */

  if (insert_count > 0) {

    /* Since the table has a layer, we need to fetch that layer in order

       to obtain the correct coordref for our shapes. */

    result = SE_layerinfo_create (NULL,&layer);

    if (SE_SUCCESS != result) {

      print_error (result,"Unable to create layerinfo object");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_coordref_create (&coordref);

    if (SE_SUCCESS != result) {

      print_error (result,"Unable to create coordref object");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_layer_get_info (connection,table_name,"shape",layer);

    if (SE_SUCCESS != result) {

      print_conn_error (connection,result,"Unable to fetch layer definition");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_layerinfo_get_coordref (layer,coordref);

    if (SE_SUCCESS != result) {

      print_error (result,"Unable to get coordref object from layerinfo "

                   "object");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_shape_create (coordref,&shape);

    if (SE_SUCCESS != result) {

      print_error (result,"Unable to create shape object");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    SE_coordref_free (coordref);

    SE_layerinfo_free (layer);

    /* Set up for actual insert. */

    columns[1] = "category";

    columns[2] = "shape";

    result = SE_stream_insert_table (stream,table_name,(SHORT)3,

                                     (const CHAR **)columns);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_insert_table");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    if (0 == update_count) { /* If we haven't done this yet. */

      result = SE_stream_set_write_mode (stream,TRUE /* Buffered. */);

      if (SE_SUCCESS != result) {

        print_stream_error (stream,result,"SE_stream_set_write_mode");

        return (result);

      }

    }

    result = SE_stream_bind_input_column (stream,1,data,&data_ind);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_bind_input_column (data)");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_stream_bind_input_column (stream,2,&category,&category_ind);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,

                          "SE_stream_bind_input_column (category)");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    result = SE_stream_bind_input_column (stream,3,shape,&shape_ind);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_bind_input_column (shape)");

      (void) SE_connection_rollback_transaction (connection);

      return (result);

    }

    /* Perform the actual inserts. */

    for (row = 0;row < insert_count;row++) {

      /* Generate data. */

      sprintf (data,"Row Inserted at state %d",state_id);

      category = row % 2 + 1;

      rectangle.minx = 1000.0 + (row + state_id) * 100.0;

      rectangle.miny = 1000.0;

      rectangle.maxx = 1100.0 + (row + state_id) * 100.0;

      rectangle.maxy = 1100.0;

      result = SE_shape_generate_rectangle (&rectangle,shape);

      if (SE_SUCCESS != result) {

        print_error (result,"Unable to generate rectangle into shape object");

        break;

      }

      /* Insert it. */

      result = SE_stream_execute (stream);

      if (SE_SUCCESS != result) {

        print_stream_error (stream,result,"SE_stream_execute (insert)");

        (void) SE_connection_rollback_transaction (connection);

        return (result);

      }

    }

    SE_shape_free (shape);

  }

  /* Done, clean up and commit. */

  result = SE_stream_free (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_free");

    (void) SE_connection_rollback_transaction (connection);

    return (result);

  }

  result = SE_connection_commit_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Error in commit.");

    return (result);

  }

  /* Done. */

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_user_1_edit_session}  --  User 1's edit session.

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     Execute the first "user"'s simulated edit session.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     table_name    <Input>  ==  (const CHAR *) The name of the table for

*                                 User 1 to edit.

*     version_name  <Input>  ==  (const CHAR *) The version to hold all

*                                 of User 1's edits.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/13/99           Original coding.

*E

***********************************************************************/

static LONG S_user_1_edit_session (SE_CONNECTION  connection,

                                   const CHAR     *table_name,

                                   const CHAR     *version_name)

{

  LONG            result,state_id,edit_depth,low_state_id;

  LONG            delete_count,update_count,insert_count;

  LONG            delete_list[1],update_list[2];

  SE_VERSIONINFO  version;

  SE_STATEINFO    state_list[MAX_EDIT_DEPTH];

  /* Create our version. */

  result = S_create_version (connection,version_name,&version);

  if (SE_SUCCESS != result) return (result);

  /* Create our first working state. */

  for (edit_depth = 0;edit_depth < MAX_EDIT_DEPTH;edit_depth++)

    state_list[edit_depth] = NULL;

  edit_depth = 0;

  result = SE_stateinfo_create (&state_list[edit_depth]);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create STATEINFO object.");

    return (result);

  }

  result = SE_versioninfo_get_state_id (version,&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_get_state_id");

    return (result);

  }

  result = SE_state_get_info (connection,state_id,state_list[edit_depth]);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to fetch state %d.",state_id);

    print_conn_error (connection,result,error_msg);

    return (result);

  }

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  /* Perform a set of edits. */

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 1;

  update_count = 2;

  update_list[0] = 2;

  update_list[1] = 3;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our second state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 11;

  update_count = 2;

  update_list[0] = 12;

  update_list[1] = 13;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our third state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 21;

  update_count = 2;

  update_list[0] = 22;

  update_list[1] = 23;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our fourth state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 31;

  update_count = 2;

  update_list[0] = 32;

  update_list[1] = 33;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* We decide that our last set of changes were wrong, so we delete the

     last state we created. */

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  result = SE_state_delete (connection,state_id);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"SE_state_delete");

    return (result);

  }

  SE_stateinfo_free (state_list[edit_depth]);

  edit_depth--;

  /* Move our version to point at the last state we edited. */

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  result = SE_version_change_state (connection,version,state_id);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to move version %s to new state %d",

             version_name,state_id);

    print_conn_error (connection,result,error_msg);

    return (result);

  }

  /* Trim our branch of the state tree to its minimum length -- one state. */

  result = SE_stateinfo_get_id (state_list[1],&low_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  result = SE_state_trim_tree (connection,low_state_id,state_id);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to trim edit tree.");

    return (result);

  }

  /* Done, clean up. */

  for (edit_depth = 0;edit_depth < MAX_EDIT_DEPTH;edit_depth++)

    if (state_list[edit_depth]) SE_stateinfo_free (state_list[edit_depth]);

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_user_2_edit_session}  --  User 2's edit session.

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     Execute the second "user"'s simulated edit session.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     table_name    <Input>  ==  (const CHAR *) The name of the table for

*                                 User 2 to edit.

*     version_name  <Input>  ==  (const CHAR *) The version to hold all

*                                 of User 2's edits.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 10/13/99           Original coding.

*E

***********************************************************************/

static LONG S_user_2_edit_session (SE_CONNECTION  connection,

                                   const CHAR     *table_name,

                                   const CHAR     *version_name)

{

  LONG            result,state_id,edit_depth,low_state_id;

  LONG            delete_count,update_count,insert_count;

  LONG            delete_list[1],update_list[2];

  SE_VERSIONINFO  version;

  SE_STATEINFO    state_list[MAX_EDIT_DEPTH];

  /* Create our version. */

  result = S_create_version (connection,version_name,&version);

  if (SE_SUCCESS != result) return (result);

  /* Create our first working state. */

  for (edit_depth = 0;edit_depth < MAX_EDIT_DEPTH;edit_depth++)

    state_list[edit_depth] = NULL;

  edit_depth = 0;

  result = SE_stateinfo_create (&state_list[edit_depth]);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create STATEINFO object.");

    return (result);

  }

  result = SE_versioninfo_get_state_id (version,&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_get_state_id");

    return (result);

  }

  result = SE_state_get_info (connection,state_id,state_list[edit_depth]);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to fetch state %d.",state_id);

    print_conn_error (connection,result,error_msg);

    return (result);

  }

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  /* Perform a set of edits. */

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 1;

  update_count = 2;

  update_list[0] = 2;

  update_list[1] = 4;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our second state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 14;

  update_count = 2;

  update_list[0] = 11;

  update_list[1] = 15;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our third state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 22;

  update_count = 2;

  update_list[0] = 25;

  update_list[1] = 26;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Create our fourth state, and edit it. */

  result = S_create_child_state (connection,

                                 state_list[edit_depth],

                                 &state_list[edit_depth + 1]);

  if (SE_SUCCESS != result) return (result);

  edit_depth++;

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  delete_count = 1;

  delete_list[0] = 31;

  update_count = 2;

  update_list[0] = 32;

  update_list[1] = 33;

  insert_count = 1;

  result = S_edit_state (connection,

                         state_id,

                         table_name,

                         delete_count,

                         delete_list,

                         update_count,

                         update_list,

                         insert_count);

  if (SE_SUCCESS != result) return (result);

  /* Move our version to point at the last state we edited. */

  result = SE_stateinfo_get_id (state_list[edit_depth],&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  result = SE_version_change_state (connection,version,state_id);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to move version %s to new state %d",

             version_name,state_id);

    print_conn_error (connection,result,error_msg);

    return (result);

  }

  /* Trim our branch of the state tree to its minimum length -- one state. */

  result = SE_stateinfo_get_id (state_list[1],&low_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  result = SE_state_trim_tree (connection,low_state_id,state_id);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to trim edit tree.");

    return (result);

  }

  /* Done, clean up. */

  for (edit_depth = 0;edit_depth < MAX_EDIT_DEPTH;edit_depth++)

    if (state_list[edit_depth]) SE_stateinfo_free (state_list[edit_depth]);

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_reconcile_operation}  --  Perform a reconciliation operation

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function performs a single reconciliation operation on a

*   table, such as deleting all rows in one state that were deleted in

*   another, or copying over all inserts in one state that matched a

*   where clause into another state.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection       <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                    handle; used to request information and

*                                    actions from the server.

*     table_name       <Input>  ==  (const CHAR *) The name of the table to

*                                    apply changes to.

*     source_id        <Input>  ==  (LONG) The Id of the state to get

*                                    ids from.

*     difference_id    <Input>  ==  (LONG) The Id of the state to compare

*                                    against.

*     copy_from_id     <Input>  ==  (LONG) The Id of the state to copy rows

*                                    from.

*     target_id        <Input>  ==  (LONG) The Id of the state to copy into

*                                    or delete from.

*     difference_type  <Input>  ==  (LONG) The difference type filter to

*                                    detect rows with:

*                                     SE_STATE_DIFF_NOCHANGE_UPDATE

*                                     SE_STATE_DIFF_NOCHANGE_DELETE

*                                     SE_STATE_DIFF_UPDATE_NOCHANGE

*                                     SE_STATE_DIFF_UPDATE_UPDATE

*                                     SE_STATE_DIFF_UPDATE_DELETE

*                                     SE_STATE_DIFF_INSERT

*     where_clause     <Input>  ==  (const CHAR *) The where clause to use

*                                    when selecting rows to operate on;

*                                    NULL if no selection is required.

*     action_type      <Input>  ==  (RE_ACTION) The action to perform with

*                                    the rows detected:

*                                     RE_DELETE_ROWS_FOUND

*                                     RE_COPY_ROWS_FOUND

*     RETURN          <Output>  ==  (LONG) Error return: SE_SUCCESS on

*                                    success, an appropriate ArcSDE error

*                                    code on failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/17/99           Original coding.

*E

***********************************************************************/

static LONG S_reconcile_operation (SE_CONNECTION  connection,

                                   const CHAR     *table_name,

                                   LONG           source_id,

                                   LONG           difference_id,

                                   LONG           copy_from_id,

                                   LONG           target_id,

                                   LONG           difference_type,

                                   const CHAR     *where_clause,

                                   RE_ACTION      action_type)

{

  LONG              result,row_id,*row_id_list,row_id_count;

  CHAR              *table_list[1];

  const CHAR        *columns[1];

  SHORT             row_id_ind;

  SE_STREAM         stream;

  SE_SQL_CONSTRUCT  sql_construct;

  /* Set up the stream. */

  result = SE_stream_create (connection,&stream);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create stream.");

    exit (EXIT_FAILURE);

  }

  result = SE_stream_set_state (stream,source_id,difference_id,difference_type);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Unable to set states for stream.");

    exit (EXIT_FAILURE);

  }

  /* Initialize query. */

  columns[0] = "ROW_ID";

  table_list[0] = (CHAR *)table_name;

  sql_construct.num_tables = 1;

  sql_construct.tables = (CHAR **)table_list;

  sql_construct.where = (CHAR *)where_clause;

  result = SE_stream_query (stream,(SHORT)1,columns,&sql_construct);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to initialize query.");

    return (result);

  }

  result = SE_stream_bind_output_column (stream,1,&row_id,&row_id_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Unable bind 'row_id' column.");

    return (result);

  }

  /* Collect the ids of all of the rows that we are interested in. */

  result = SE_stream_execute (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Error in executing query.");

    return (result);

  }

  row_id_list = (LONG *)NULL;

  row_id_count = 0;

  while ((result = SE_stream_fetch (stream)) == SE_SUCCESS) {

    if (SE_IS_NULL_VALUE == row_id_ind) continue; /* Can't really happen. */

    row_id_count++;

    row_id_list = realloc (row_id_list,row_id_count * sizeof(LONG));

    if ((LONG *)NULL == row_id_list) {

      print_error (SE_OUT_OF_CLMEM,"Unable to allocate enought memory for "

                   "id list.");

      return (SE_OUT_OF_CLMEM);

    }

    row_id_list[row_id_count - 1] = row_id;

  }

  if (SE_FINISHED != result) {

    print_stream_error (stream,result,"Error in fetching row.");

    return (result);

  }

  result = SE_stream_close (stream,TRUE /* Reset. */);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_close");

    return (result);

  }

  /* Peform the indicated operation with the rows we collected the ids of. */

  if (0 == row_id_count) { /* Nothing to do, so return. */

    result = SE_stream_free (stream);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_free");

      return (result);

    }

    return (SE_SUCCESS);

  }

  result = SE_connection_start_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"SE_connection_start_transaction");

    return (result);

  }

  switch (action_type) {

  case RE_DELETE_ROWS_FOUND:

    /* Delete from the target state all the rows for which we collected ids. */

    result = SE_stream_set_state (stream,

                                  target_id,

                                  SE_NULL_STATE_ID,

                                  SE_STATE_DIFF_NOCHECK);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_set_state");

      return (result);

    }

    result = SE_stream_delete_by_id_list (stream,

                                          table_name,

                                          row_id_list,

                                          row_id_count);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"Error in deleting rows.");

      return (result);

    }

    break;

  case RE_COPY_ROWS_FOUND:

    /* Copy from the from state to the target states all of the rows for which

       we have an id. */

    result = SE_stream_set_state (stream,

                                  target_id,

                                  copy_from_id,

                                  SE_STATE_DIFF_INSERT);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"SE_stream_set_state");

      return (result);

    }

    result = SE_stream_copy_state_rows (stream,

                                        table_name,

                                        row_id_list,

                                        row_id_count);

    if (SE_SUCCESS != result) {

      print_stream_error (stream,result,"Error in copying rows.");

      return (result);

    }

  }

  result = SE_stream_free (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_free");

    return (result);

  }

  result = SE_connection_commit_transaction (connection);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Error in commit.");

    return (result);

  }

  /* Done. */

  free (row_id_list);

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_reconcile_user_1}  --  Reconcile user 1's version with user 2's

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function reconciles user 1's version with user 2's, resulting

*   in a new state for user 1's version containing data as appropriate

*   from both versions.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection           <Input>  ==  (SE_CONNECTION) ArcSDE server

*                                        connection handle; used to request

*                                        information and actions from the

*                                        server.

*     table_name           <Input>  ==  (const CHAR *) The name of the table

*                                        for User 2 to reconcile.

*     user_1_version_name  <Input>  ==  (const CHAR *) The version containing

*                                        User 1's edits.

*     user_2_version_name  <Input>  ==  (const CHAR *) The version containing

*                                        User 2's edits.

*     RETURN              <Output>  ==  (LONG) Error return: SE_SUCCESS on

*                                        success, an appropriate ArcSDE error

*                                        code on failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/17/99           Original coding.

*E

***********************************************************************/

static LONG S_reconcile_user_1 (SE_CONNECTION  connection,

                                const CHAR     *table_name,

                                const CHAR     *user_1_version_name,

                                const CHAR     *user_2_version_name)

{

  LONG            result,user_1_state_id,user_2_state_id,old_state_id;

  SE_VERSIONINFO  version;

  SE_STATEINFO    state;

  /* Get both versions, and determine their state ids. (We fetch user 1's

     version 2nd as we need to keep it around so when we are done, we can

     use it in the call to SE_version_change_state() when we point user 1's

     version at the result of the reconciliation.)  */

  result = SE_versioninfo_create (&version);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create VERSIONINFO object.");

    return (result);

  }

  result = SE_version_get_info (connection,user_2_version_name,version);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to fetch user 2's version");

    exit (EXIT_FAILURE);

  }

  result = SE_versioninfo_get_state_id (version,&user_2_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_get_state_id");

    return (result);

  }

  result = SE_version_get_info (connection,user_1_version_name,version);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to fetch user 1's version");

    exit (EXIT_FAILURE);

  }

  result = SE_versioninfo_get_state_id (version,&user_1_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_get_state_id");

    return (result);

  }

  /* Create a new state as a child of version 1's state to receive the results

     of the reconciliation. */

  result = SE_stateinfo_create (&state);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create STATEINFO object.");

    return (result);

  }

  result = SE_state_create (connection,state,user_1_state_id,state);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create state.");

    SE_stateinfo_free (state);

    return (result);

  }

  old_state_id = user_1_state_id;

  result = SE_stateinfo_get_id (state,&user_1_state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_stateinfo_get_id");

    return (result);

  }

  SE_stateinfo_free (state);

  /* Perform the required reconcilation queries and operations. */

  /* NoChange/Delete from User 1 to User 2.  Any unmodified rows in User 1

     that were deleted in User 2 and have a CATEGORY of 1 will be deleted. */

  result = S_reconcile_operation (connection,

                                  table_name,

                                  user_1_state_id /* Source state id */,

                                  user_2_state_id /* Difference state id */,

                                  SE_NULL_STATE_ID,

                                  user_1_state_id /* Target state id */,

                                  SE_STATE_DIFF_NOCHANGE_DELETE,

                                  "CATEGORY = 1",

                                  RE_DELETE_ROWS_FOUND);

  if (SE_SUCCESS != result) return (result);

  /* Nochange/Update from User 1 to User 2.  Any rows updated in User 2 and

     not in User 1 and having a CATEGORY of 1 will be copied over.  */

  result = S_reconcile_operation (connection,

                                  table_name,

                                  user_1_state_id /* Source state id */,

                                  user_2_state_id /* Difference state id */,

                                  user_2_state_id /* Copy from state id */,

                                  user_1_state_id /* Target state id */,

                                  SE_STATE_DIFF_NOCHANGE_UPDATE,

                                  "CATEGORY = 1",

                                  RE_COPY_ROWS_FOUND);

  if (SE_SUCCESS != result) return (result);

  /* Insert from User 2 to User 1.  Any rows inserted into User 2 will be

     copied to User 1.  */

  result = S_reconcile_operation (connection,

                                  table_name,

                                  user_2_state_id /* Source state id */,

                                  user_1_state_id /* Difference state id */,

                                  user_2_state_id /* Copy from state id */,

                                  user_1_state_id /* Target state id */,

                                  SE_STATE_DIFF_INSERT,

                                  NULL,

                                  RE_COPY_ROWS_FOUND);

  if (SE_SUCCESS != result) return (result);

  /* Update/Delete from User 2 to User 1.  Any rows deleted in User 1 but

     updated in User 2 will be copied from User 2 to User 1.   */

  result = S_reconcile_operation (connection,

                                  table_name,

                                  user_2_state_id /* Source state id */,

                                  user_1_state_id /* Difference state id */,

                                  user_2_state_id /* Copy from state id */,

                                  user_1_state_id /* Target state id */,

                                  SE_STATE_DIFF_UPDATE_DELETE,

                                  NULL,

                                  RE_COPY_ROWS_FOUND);

  if (SE_SUCCESS != result) return (result);

  /* We're done with the reconcilition, close the state to prevent any more

     writes, and make our version point to it. */

  result = SE_state_close (connection,user_1_state_id);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to close state %d.",user_1_state_id);

    print_conn_error (connection,result,"Unable to fetch registration");

    return (result);

  }

  result = SE_version_change_state (connection,version,user_1_state_id);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to move version %s to new state %d",

             user_1_version_name,user_1_state_id);

    print_conn_error (connection,result,error_msg);

    return (result);

  }

  SE_versioninfo_free (version);

  /* Trim the state tree to remove the state immeadiately above the one

     containing the reconcilation results -- it isn't needed any more.  This

     will leave us just one step below our original parent state, keeping the

     tree small. */

  result = SE_state_trim_tree (connection,old_state_id,user_1_state_id);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to trim edit tree.");

    return (result);

  }

  /* Done! */

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {S_list_table_version}  --  List a table's row at a specified version

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This function lists a specified table's rows as at a specified

*   version to stdout.  This function is hard-coded for our test case

*   schema.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*A  Parameters:

*     connection    <Input>  ==  (SE_CONNECTION) ArcSDE server connection

*                                 handle; used to request information and

*                                 actions from the server.

*     table_name    <Input>  ==  (const CHAR *) The name of the table to

*                                 be listed.

*     version_name  <Input>  ==  (const CHAR *) The version at which the

*                                 the table is to be listed.

*     RETURN       <Output>  ==  (LONG) Error return: SE_SUCCESS on success,

*                                 an appropriate ArcSDE error code on

*                                 failure.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/22/99           Original coding.

*E

***********************************************************************/

static LONG S_list_table_version (SE_CONNECTION  connection,

                                  const CHAR     *table_name,

                                  const CHAR     *version_name)

{

  LONG              result,state_id,row_id,category;

  CHAR              data[64];

  CHAR              *table_list[1];

  const CHAR        *columns[3];

  SHORT             data_ind,category_ind,row_id_ind;

  SE_STREAM         stream;

  SE_SQL_CONSTRUCT  sql_construct;

  SE_VERSIONINFO    version;

  /* Get the specified version, and extract its state id. */

  result = SE_versioninfo_create (&version);

  if (SE_SUCCESS != result) {

    print_error (result,"Unable to create VERSIONINFO object.");

    return (result);

  }

  result = SE_version_get_info (connection,version_name,version);

  if (SE_SUCCESS != result) {

    CHAR  error_msg[SE_MAX_MESSAGE_LENGTH];

    sprintf (error_msg,"Unable to fetch version %s",version_name);

    print_conn_error (connection,result,error_msg);

    exit (EXIT_FAILURE);

  }

  result = SE_versioninfo_get_state_id (version,&state_id);

  if (SE_SUCCESS != result) {

    print_error (result,"SE_versioninfo_get_state_id");

    return (result);

  }

  SE_versioninfo_free (version);

  /* Set up the stream. */

  result = SE_stream_create (connection,&stream);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to create stream.");

    exit (EXIT_FAILURE);

  }

  result = SE_stream_set_state (stream,

                                state_id,

                                SE_NULL_STATE_ID,

                                SE_STATE_DIFF_NOCHECK);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_set_state");

    return (result);

  }

  /* Initialize query. */

  columns[0] = "ROW_ID";

  columns[1] = "CATEGORY";

  columns[2] = "DATA";

  table_list[0] = (CHAR *)table_name;

  sql_construct.num_tables = 1;

  sql_construct.tables = (CHAR **)table_list;

  sql_construct.where = (CHAR *)NULL;

  result = SE_stream_query (stream,(SHORT)3,columns,&sql_construct);

  if (SE_SUCCESS != result) {

    print_conn_error (connection,result,"Unable to initialize query.");

    return (result);

  }

  result = SE_stream_bind_output_column (stream,1,&row_id,&row_id_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Unable bind 'row_id' column.");

    return (result);

  }

  result = SE_stream_bind_output_column (stream,2,&category,&category_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Unable bind 'category' column.");

    return (result);

  }

  result = SE_stream_bind_output_column (stream,3,data,&data_ind);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Unable bind 'data' column.");

    return (result);

  }

  /* Loop through the rows, printing them. */

  printf ("Listing version %s of table %s:\n\n",version_name,table_name);

  printf ("ROW_ID\t\tCATEGORY\t\tDATA\n======\t\t========\t\t====\n");

  result = SE_stream_execute (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"Error in executing query.");

    return (result);

  }

  while ((result = SE_stream_fetch (stream)) == SE_SUCCESS) {

    if (SE_IS_NULL_VALUE == row_id_ind) row_id = -9999;

    if (SE_IS_NULL_VALUE == category_ind) category = 0;

    if (SE_IS_NULL_VALUE == data_ind) strcpy (data,"(null)");

    printf ("%6d\t\t%6d\t\t\t%s\n",row_id,category,data);

  }

  if (SE_FINISHED != result) {

    print_stream_error (stream,result,"Error in fetching row.");

    return (result);

  }

  puts (" ");

  /* Done, clean up. */

  result = SE_stream_free (stream);

  if (SE_SUCCESS != result) {

    print_stream_error (stream,result,"SE_stream_free");

    return (result);

  }

  return (SE_SUCCESS);

}

/***********************************************************************

*

*N  {main}  --  Versioned demo main function, executes demo script

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*     This main function executes the top level steps of the versioned

*   demo script described in the main header of this file.

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*    Peter Aronson                 11/19/99           Original coding.

*E

***********************************************************************/

int main (int  argc,

          char *argv[])

{

  SE_CONNECTION   connection;

  LONG            result;

  CHAR            *table_name,*user,*password,*server,*instance,*database;

  CHAR            error_msg[SE_MAX_MESSAGE_LENGTH];

  SE_ERROR        error;

  static const CHAR  *_usage = "Usage: versioned_1 <table> <user> <password> "

                                             " {server} {service} {database}\n";

  /* Check arguments. */

  if (argc < 4 || argc > 7) {

    fputs (_usage,stderr);

    exit (EXIT_FAILURE);

  }

  /* Assign arguments to local variables -- optional arguments may be

     represented by a # */

  table_name = argv[1];

  user     = argv[2];

  password = argv[3];

  server = "localhost";

  instance = (CHAR *)NULL;

  database = (CHAR *)NULL;

  if (argc > 4) {

    server = argv[4];

    if (strcmp (server,"#") == 0) server = "localhost";

    if (argc > 5) {

      instance = argv[5];

      if (strcmp (instance,"#") == 0) instance = (CHAR *)NULL;

      if (argc > 6) {

        database = argv[6];

        if (strcmp (database,"#") == 0) database = (CHAR *)NULL;

      }

    }

  }

  /* Connect to the ArcSDE server. */

  result = SE_connection_create (server,instance,database,user,password,

                                 &error,&connection);

  if (result != SE_SUCCESS) {

    sprintf (error_msg,"Could not create a connection for user %s.\n",user);

    print_error (result,error_msg);

    if (SE_DB_IO_ERROR == result) {

      printf ("Extended DBMS error code: %d\n",error.ext_error);

      printf ("%s\n",error.err_msg1);

      printf ("%s\n",error.err_msg2);

    }

    return (EXIT_FAILURE);

  }

  printf ("Connected to ArcSDE server as user %s . . .\n",user);

  /* Create the table for editing. */

  result = S_create_edit_table (connection,table_name);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  printf ("Created edit table %s . . .\n",table_name);

  /* List the edit table. */

  result = S_list_table_version (connection,table_name,

                                 SE_QUALIFIED_DEFAULT_VERSION_NAME);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  /* Run user 1's edit session. */

  result = S_user_1_edit_session (connection,table_name,USER_1_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  printf ("User 1's edit session complete . . . \n");

  /* List the results of user 1's edit session. */

  result = S_list_table_version (connection,table_name,USER_1_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  printf ("User 2's edit session complete . . . \n");

  /* Run user 2's edit session. */

  result = S_user_2_edit_session (connection,table_name,USER_2_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  /* List the results of user 2's edit session. */

  result = S_list_table_version (connection,table_name,USER_2_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  /* Reconcile user 1's version and user 2's version in order to create

     an updated user 1 version. */

  result = S_reconcile_user_1 (connection,

                               table_name,

                               USER_1_VERSION,

                               USER_2_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  printf ("User 1 reconciled with User 2 . . .\n");

  /* List the new user 1 version. */

  result = S_list_table_version (connection,table_name,USER_1_VERSION);

  if (SE_SUCCESS != result) return (EXIT_FAILURE);

  /* Done. */

  SE_connection_free (connection);

  return (EXIT_SUCCESS);

Back


Projection Engine architecture and data structure

Coordinate Systems and Projections

The Projection Engine isolates map projection and datum-handling code into a compact, easily integrated program for managing coordinate systems through a well-defined, open C language application programming interface (API). All spatial data has a coordinate system. The Projection Engine has two purposes: defining coordinate systems and transforming data between coordinate systems. Spatial data comes from many different sources which means you may have to change coordinate systems to combine data for display or storage in a database. The Projection Engine includes predefined coordinate systems and transformation methods. It also allows you to create your own coordinate systems and implement your own transformation functions.

Architecture
Data Model
Overview of coordinate systems
Projection engine functions
Defining a coordinate system
Using persistent user-defined objects
Defining a geographic (datum) transformation
Using grid-based geographic transformations
Changing coordinate systems
Calculating geodetic distances
Macros
Examples
Back


Raster data management

Managing Raster Data

ArcSDE supports the management of raster data in a DBMS. Raster data represents a significant portion of the total data used in a GIS. ArcSDE provides support for rasters in a number of different forms.

SDE Raster Model

The following concepts are used to manage rasters in SDE:

Pixel Depth –the resolution of an individual pixel value. Pixel depth ranges from a single binary value to complex float values.

Raster– a collection of raster bands that are generally referenced together. An RGB image has three raster bands, one each for red, green, and blue, and will become a raster stack in SDE with three raster bands.

Raster Band – a single layer in a raster stack that has a specified pixel depth.

Raster Type – a column type in a DBMS table that provides a foreign key reference to a raster stack in a Raster Dataset.

Raster Value – a single value from a Raster Type that provides a foreign key reference to a specific Raster Stack

Raster_Columns – the system table that lists all raster columns managed by the Spatial Database Engine. This table is the raster equivalent of the LAYERS table.

Raster Datastore – a collection of rasters and their raster bands that are managed together. Every DBMS table with a column of type raster will have an associated Raster Datastore.

Image – a file or set of files in a specified format that stores data as pixel values in one or more bands. Image files imported into SDE become Rasters. Rasters can be exported into image files.

BIN Function – a function applied to a raster band to reclassify the data. BIN functions are used to aggregate and simplify data. Statistics are accumulated on the results of BIN function filtering.

Value Attribute Table – a table of Raster Band statistics and application properties based on the pixel classifications derived from a BIN Function.

Raster Columns are added to Business Tables to store raster data. A raster value is a foreign key reference to a specific Raster in a Raster Column. The Raster contains a list of Raster Bands that, taken together, form the desired image (For example, a Red, Green, and Blue band for a true color 24 bit RGB image). The Raster Bands for the Rasters are collectively stored in a Raster Datastore associated with each Raster Column.

Raster Bands contain the pixel data used to produce the desired raster image. Each band stores pixel values of a specified depth or resolution. Raster bands may be stored at reduced resolutions for faster data access. Raster bands may have an associated BIN function that maps the raw pixel value to a classified pixel value. Pixel statistics and other application properties may be stored in a Value Attribute Table for the Raster Band.

Application Solutions

Applications can build on the basic ArcSDE Raster support to provide catalogs of raster images, or collections of raster maps.

Raster Map– A Raster Map is a collection of individual rasters (images) that have been rectified and merged into one very large, continuous raster. A Raster Map is typically geo-referenced, and appears to the application to be a single raster from which any desired rectangular portion can be extracted and displayed.

Raster Catalog – A Raster Catalog is a collection of rasters (images) with thematic properties. The rasters(images) may be geo-referenced, with associated footprint polygons that can be spatially searched.

Both Raster Maps and Raster Catalogs are application concepts, built by adding Raster Columns to business tables, and storing the appropriate Raster data in the database. It is the responsibility of the application to provide tiling and image rectification services for the construction of Raster Maps.

Raster Maps are collections of rasters that form a continuous mosaic, portions of which are accessed as needed.

Raster Catalogs with collections of rasters in the same coordinate system that can be searched by their footprint.

Raster Catalogs may contain rasters that are not geo-referenced, such as house photos or pictures of people.

Raster Columns are added to Business Tables, just like spatial columns. Information about Raster Columns will be stored in the SDE RASTER_COLUMNS table.

Applications can manage raster columns and geometry columns in the same table. Applications can insert the footprint polygon of a geo-referenced raster into the geometry column, allowing spatial searches for rasters. Rasters that are not geo-referenced must be selected using queries against thematic properties.

The raster data type is supported in ArcSDE release 8.0.1 through a set of raster API, which enables users to manage their raster dataset, including geo-referenced and rectified remote sensing images and other non-geo referenced image, such as a photo of a house.

ArcSDE handles raster data in a similar way as it handles vector data. When a user specifies certain column in a business table as raster type column, ArcSDE will refer this image column as an image layer. Image layer can be retrieved by its name or id. Each image layer can have multiple images, but you can't mix geo-referenced and non-geo-referenced images in a single image layer. You can add, delete, and update images in an image layer.

Each image or called raster can have multiple raster band, the pixel data in each band is saved as rectangular raster tiles or blocks. The following code snippet will show you how to create and remove an image layer, how to load image data using ArcSDE raster API and how to query raster data.

Raster Columns

The management of raster columns is conceptually the same as shape columns. Information about the raster column is maintained in a Raster_Columns metadata table. The raster columns are created and managed using the SE_rastercolumn API. Information about the raster column is accessed through an opaque pointer to SE_RASCOLINFO.

Raster column functions

Function Name | Function Description
SE_rastercolumn_alter | Creates a raster column's characteristics.
SE_rastercolumn_create | Creates a raster column entry in the raster datastore.
SE_rastercolumn_delete | Deletes a raster column.
SE_rastercolumn_free_info_list | Releases memory allocated for a list of raster column structures.
SE_rastercolumn_get_info_by_id | Retrieves information about the specified raster column by ID.
SE_rastercolumn_get_info_by_name | Retrieves information about the specified raster column by name.
SE_rastercolumn_get_info_list | Returns an array of SE_RASCOLINFO pointers for a raster column.
SE_rastercolumn_grant_access | Grants a user’s access to a raster column.
SE_rastercolumn_revoke_access | Revokes a user’s access to a raster column.

Information about a rastercolumn is contained in an SE_RASCOLINFO opaque pointer. A set of functions of the format SE_rascolinfo_* allows you to retrieve and set the various raster column parameters. You must call SE_rascolinfo_create before using any other function that uses an SE_RASCOLINFO object.

You can use an SE_RASCOLINFO pointer as a specification to create or alter raster columns in a database or to describe an existing raster column.

Some of the information you can retrieve or set with SE_RASCOLINFO includes:

Property Name | Property Description
raster column id | raster column number
description | Raster column description
base ID | Base raster column ID
minimum ID | Minimum ID value
table name | Business table name
raster column name | Raster column name
raster column mask | Raster column mask
coordinate reference | Coordinate reference
owner | Table and raster column creator
creation date | Creation date and time
privileges | User’s access bitmap
raster column keyword | Raster column configuration keyword

The SE_rascolinfo_set_* functions do not actually modify a raster column in a database. Once the SE_RASCOLINFO pointer is modified, you must pass it to SE_rastercolumn_create or SE_rastercolumn_alter to affect a raster column.

Rascolinfo functions

Function Name | Function Description
SE_rascolinfo_create | Creates an SE_RASCOLINFO structure.
SE_rascolinfo_free | Releases memory allocated for an SE_RASCOLINFO structure.
SE_rascolinfo_get_access | Retrieves the privileges for the specified raster column.
SE_rascolinfo_get_coordref | Retrieves the coordinate reference.
SE_rascolinfo_get_creation_date | Retrieves the raster column creation date.
SE_rascolinfo_get_creation_keyword | Retrieves the configuration keyword.
SE_rascolinfo_get_description | Retrieves the raster column’s description.
SE_rascolinfo_get_id | Retrieves the raster column ID.
SE_rascolinfo_get_minimum_id | Retrieves the minimum ID value.
SE_rascolinfo_get_raster_column | Retrieves the table and column name.
SE_rascolinfo_is_in_load_mode | Returns TRUE if in load-only mode.
SE_rascolinfo_set_coordref | Sets the coordinate reference.
SE_rascolinfo_set_creation_keyword | Sets the configuration keyword.
SE_rascolinfo_set_description | Sets the raster column’s description.
SE_rascolinfo_set_load_mode | Sets the loading mode.
SE_rascolinfo_set_minimum_id | Sets the minimum ID value.
SE_rascolinfo_set_raster_column | Sets the raster column name.

Creating a Raster Column

/* Create raster column info object. */

ret = SE_rascolinfo_create (&hRasCol);
checkError (handle, NULL, ret, "SE_rascolinfo_create");

/* Set properties */

ret = SE_rascolinfo_set_raster_column (hRasCol, table, column);
checkError (handle, NULL, ret, "SE_rascolinfo_set_raster_column");

/* Create Image Layer */

ret = SE_rastercolumn_create (handle, hRasCol);
checkError (handle, NULL, ret, "SE_rascolinfo_set_raster_column");

/* Free raster column info object. */

SE_rascolinfo_free (hRasCol);

Deleting a Raster Column

/* Create raster column info object. */

ret = SE_rascolinfo_create (&hRasCol);
checkError (handle, NULL, ret, "SE_rascolinfo_create");

/* Remove the image layer identified by the fully
qualified table name and column name. */

ret = SE_rastercolumn_delete (handle, table, column);
checkError (handle, NULL, ret, "SE_rastercolumn_delete");

/* Free raster column info object. */

SE_rascolinfo_free (hRasCol);

Loading Raster Data by using raster API

Loading raster data is just like inserting any other type of data into the business table by using ArcSDE stream operations. For raster type column you'll need to bind or set raster attributes object.

Raster data can be very large; ArcSDE will only request these data chunk by chunk at run-time through a user defined call back function. Pixel data will be returned per scanline or multiple scanlines. For multiple-band image data, it's returned in band sequential order. (band interleaved by line or band interleaved by pixel will also be supported soon.)

The SE_raster object is used to define an instance of a raster. The raster is like a shape, in that it represents the data value in a row of a table that has a raster column. Properties of the raster are accessed through the SE_rasterinfo interface.

Raster functions

Function Name | Function Description
SE_raster_add_band | Adds a band to a raster.
SE_raster_create | Creates a raster entry in the raster datastore.
SE_raster_delete | Deletes a raster.
SE_raster_drop_band | Drops a band from a raster.
SE_raster_get_bands | Returns an array of SE_RASBANDINFO pointers for a raster.
SE_raster_get_info_by_id | Retrieves information about a raster by the ID.

Information about a raster is contained in an SE_RASTERINFO opaque pointer. A set of functions of the format SE_rasterinfo_* allows you to retrieve and set the various raster parameters. You must call SE_rasterinfo_create before using any other function that uses an SE_RASTERINFO object.

You can use an SE_RASTERINFO pointer as a specification to create or alter rasters in a database or to describe an existing raster.

The SE_rasterinfo_set_* functions do not actually modify a raster in a database. Once the SE_RASTERINFO pointer is modified, you must pass it to SE_raster_create to affect a raster.

Rasterinfo functions

Function Name | Function Description
SE_rasterinfo_create | Creates an SE_RASTERINFO structure.
SE_rasterinfo_free | Releases memory allocated for an SE_RASTERINFO structure.
SE_rasterinfo_duplicate | Copies an SE_RASTERINFO structure.
SE_rasterinfo_get_description | Retrieves the raster’s description.
SE_rasterinfo_get_rascol_id | Retrieves the raster column ID.
SE_rasterinfo_get_raster_id | Retrieves the raster’s ID.
SE_rasterinfo_set_description | Sets the raster’s description.
SE_rasterinfo_set_rascol_id | Sets the raster column ID.

Rasters may contain multiple bands – for example, a true color RGB image containes three bands, one for each of the Red, Green, and Blue sets of pixels.

Rasterband functions

Function Name | Function Description
SE_rasterband_alter | Changes a raster band's characteristics.
SE_rasterband_create | Creates a raster entry in the raster datastore.
SE_rasterband_delete | Deletes a raster.
SE_rasterband_free_info_list | Releases memory allocated for a list of raster band structures.
SE_rasterband_get_info_by_id | Retrieves information about the specified raster band by ID.
SE_rasterband_get_info_list | Returns an array of SE_RASBANDINFO pointers for a raster.

Information about a raster band is contained in an SE_RASBANDINFO opaque pointer. A set of functions of the format SE_rasbandinfo_* allows you to retrieve and set the various raster band parameters. You must call SE_rasbandinfo_create before using any other function that uses an SE_RASBANDINFO object.

You can use an SE_RASBANDINFO pointer as a specification to create or alter raster bands in a database or to describe an existing raster band.

Some of the information you can retrieve or set with SE_RASBANDINFO includes:

Property Name | Property Description
rasterband ID | Raster band number.
description | Raster band description
BIN function | BIN function and properties
VAT name | Value attribute table name
raster band name | Raster band name
owner | Table and raster band creator
creation date | Creation date and time
band type | User’s access bitmap
band extent | User’s access bitmap
pixel type | The pixel type
block storage size | User’s access bitmap
time last modified | Time the raster band was last modified
coordinate system | Part of the band’s georeferencing information
transformation | Part of the band’s georeferencing information

The SE_rasbandinfo_set_* functions do not actually modify a raster band in a database. Once the SE_RASBANDINFO pointer is modified, you must pass it to SE_rasterband_create or SE_rasterband_alter to affect a raster band.

Rasbandinfo functions

Function Name | Function Description
SE_rasbandinfo_create | Creates an SE_RASBANDINFO structure.
SE_rasbandinfo_free | Releases memory allocated for an SE_RASBANDINFO structure.
SE_rasbandinfo_duplicate | Copies an SE_RASBANDINFO structure.
SE_rasbandinfo_get_band_name | Retrieves the name of the raster band.
SE_rasbandinfo_get_band_number | Retrieves the raster band number.
SE_rasbandinfo_get_band_size | Retrieves the band size.
SE_rasbandinfo_get_extent | Retrieves the raster band ID.
SE_rasbandinfo_get_id | Retrieves the raster band ID.
SE_rasbandinfo_get_max_level | Retrieves the maximum level of the image pyramid.
SE_rasbandinfo_get_pixel_type | Retrieves the raster band pixel type.
SE_rasbandinfo_get_rascol_id | Retrieves the raster column ID.
SE_rasbandinfo_get_raster_id | Retrieves the raster band ID.
SE_rasbandinfo_get_statistics | Retrieves the statistics for the raster band.
SE_rasbandinfo_get_tile_size | Retrieves the tile size.
SE_rasbandinfo_get_time | Retrieves the last modification date and time.
SE_rasbandinfo_set_band_name | Sets the raster band name.
SE_rasbandinfo_set_band_number | Sets the raster band number.
SE_rasbandinfo_set_band_size | Sets the band size.
SE_rasbandinfo_set_extent | Sets the block size.
SE_rasbandinfo_set_max_level | Sets the maximum level of the image pyramid.
SE_rasbandinfo_set_pixel_type | Sets the raster band’s pixel type.
SE_rasbandinfo_set_rascolid | Sets the raster column ID.
SE_rasbandinfo_set_statistics | Sets the statistics for the raster band.
SE_rasbandinfo_set_tile_size | Sets the tile size.

Information about raster attributes is contained in an SE_RASTERATTR opaque pointer. A set of functions of the format SE_rasterattr_* allows you to retrieve and set the various raster attribute parameters. You must call SE_rasterattr_create before using any other function that uses an SE_RASTERATTR object.

Rasterattr functions

Function Name | Function Description
SE_rasterattr_create | Creates an SE_RASTERATTR structure.
SE_rasterattr_duplicate | Creates a copy of the raster attribute structure.
SE_rasterattr_free | Releases memory allocated for an SE_RASTERATTR structure.
SE_rasterattr_get_image_size | Retrieves the image size.
SE_rasterattr_get_max_level | Retrieves the maximum level.
SE_rasterattr_get_num_bands | Retrieves the number of raster bands.
SE_rasterattr_get_pixel_type | Retrieves the pixel type.
SE_rasterattr_get_rascol_id | Retrieves the raster column ID.
SE_rasterattr_get_raster_id | Retrieves the raster ID.
SE_rasterattr_get_raster_info | Retrieves the raster.
SE_rasterattr_get_rasterband_info | Retrieves the raster band.
SE_rasterattr_get_rasterband_info_list | Retrieves a list of raster bands.
SE_rasterattr_get_tile_size | Retrieves the tile size.
SE_rasterattr_set_callback | Sets a callback.
SE_rasterattr_set_image_size | Sets the image size.
SE_rasterattr_set_pixel_type | Sets the pixel type.
SE_rasterattr_set_tile_size | Sets the tile size.

The following is an example of the user-defined call back function.

typedef struct {
LONG fd; /* File descriptor of image file. */
CHAR *buffer; /* Data buffer */
LONG length; /* Length of data to read */
} CLIENT_DATA;

LONG RasterDataCallback (void *client_data,
void **buffer,
LONG *length)
{
LONG size;
CLIENT_DATA *ptr;

/* We assume the image data is in BSQ (band sequential) format. */

*buffer = NULL;
*length = 0;

ptr = (CLIENT_DATA *) client_data;

memset (ptr-<buffer, 0, ptr->length);
size = read (ptr-<fd, ptr->buffer, ptr->length);

if (size < 0)
{
printf ("File I/O error (%d)\n", size);
return (SE_FAILURE);
}

*buffer = ptr->buffer;
*length = size;

return (SE_SUCCESS);
}

Here is the code segment from sample data loading program:

/* Create stream for insert. */

ret = SE_stream_create (handle, &stream);
checkError (handle, NULL, ret, "SE_stream_create");

/* Assume the business table is defined as

Name Null? Type
---------------- ----- ----
NAME VARCHAR2(64)
IMAGE INTEGER

*/

columns[0] = nameCol;
columns[1] = imageCol;

ret = SE_stream_insert_table (stream, table, 2, (const CHAR **)columns);
checkError (handle, NULL, ret, "SE_stream_insert_table");

/* Bind input columns. */

notNull = SE_IS_NOT_NULL_VALUE;

/* 1. NAME */

ret = SE_stream_bind_input_column (stream, 1, (void *)fileName, &notNull);
checkError (handle, NULL, ret, "SE_stream_bind_input_column");

/* 2. IMAGE */

context = (CLIENT_DATA *) calloc (1, sizeof(CLIENT_DATA));
bits_per_pixel = SE_PIXEL_TYPE_GET_DEPTH (pixelType);

/* Number of bytes per scanline. */

bytes = (imageWidth * bits_per_pixel + 7) / 8;

context->buffer = (CHAR *) calloc (1, bytes);
context->length = bytes;
context->fd = open (fileName, O_RDONLY | O_BINARY);

/* Initialize raster attribute handle */

ret = SE_rasterattr_create (&hRasAttr, TRUE);
checkError (handle, NULL, ret, "SE_rasterattr_create");

ret = SE_rasterattr_set_callback (hRasAttr,
RasterDataCallback, (void *)context);
checkError (handle, NULL, ret, "SE_rasterattr_set_callback");

ret = SE_rasterattr_set_image_size (hRasAttr,
imageWidth, imageHeight, numBands);
checkError (handle, NULL, ret, "SE_rasterattr_set_image_size");

ret = SE_rasterattr_set_tile_size (hRasAttr, tileWidth, tileHeight);
checkError (handle, NULL, ret, "SE_rasterattr_set_tile_size");

ret = SE_rasterattr_set_pixel_type (hRasAttr, pixelType);
checkError (handle, NULL, ret, "SE_rasterattr_set_pixel_type");

ret = SE_stream_bind_input_column (stream, 2, (void *)hRasAttr, &notNull);
checkError (handle, NULL, ret, "SE_stream_bind_input_column");

/* Execute */

ret = SE_stream_execute (stream);
checkError (handle, NULL, ret, "SE_stream_execute");

/* We're done. */

ret = SE_stream_free (stream);
checkError (handle, NULL, ret, "SE_stream_free");

close (context->fd);
free (context->buffer);
free (context);

SE_rasterattr_free (hRasAttr);

Query raster data

Raster data managed by ArcSDE can be queried by using ArcSDE stream operation. If the columns being queried include an raster type column. After stream fetch, you may obtain the metadata about the raster in the current row by calling SE_stream_get_raster(), this function will return a raster attribute object.

To obtain the pixel data in the current raster, you'll need to specify the area of interest, it's a rectangle in tile space. (Area of interest specified in pixel space or geographic space will be supported soon.) If you don't set this rectangle, the whole image will be returned. You may also specify the level of detail if the image contains a down-sampled image pyramid, the default value is 0, which is level 0, the full resolution image. Currently ArcSDE will return raster tiles in one of two ways, either interleaved by band or interleaved by block, similar to BSQ and BIP. You can choose either one of them, the default order is from left to right, from top to bottom, interleaved by band. (In an upcoming release, we'll provide the support to directly return any rectangular pixel array in the image.)

The Raster Constraint object, SE_RASCONSTRAINT, defines the constraints to apply during the selection of raster data. Information about a raster constraint is contained in an SE_RASCONSTRAINT opaque pointer. A set of functions of the format SE_rasconstraint_* allows you to retrieve and set the various raster constraint parameters. You must call SE_rasconstraint_create before using any other function that uses an SE_RASCONSTRAINT object.

Rasconstraint functions

Function Name | Function Description
SE_rasconstraint_create | Creates an SE_RASCONSTRAINT structure.
SE_rasconstraint_free | Releases memory allocated for an SE_RASCONSTRAINT structure.
SE_rasconstraint_set_bands | Sets the bands.
SE_rasconstraint_set_envelope | Sets the envelope.
SE_rasconstraint_set_interleave | Sets the interleave.
SE_rasconstraint_set_level | Sets the level.

The raster is fetched into a raster tile. Information about a raster tile is contained in an SE_RASTILEINFO opaque pointer. A set of functions of the format SE_rastileinfo_* allows you to retrieve and set the various raster tile parameters. You must call SE_rastileinfo_create before using any other function that uses an SE_RASTILEINFO object.

The SE_rastileinfo_set_* functions do not actually modify a raster tile in a database. Once the SE_RASTILEINFO pointer is modified, you must pass it to SE_rastercolumn_create or SE_rastercolumn_alter to affect a raster column.

Rastileinfo functions

Function Name | Function Description
SE_rastileinfo_create | Creates an SE_RASTILEINFO structure.
SE_rastileinfo_free | Releases memory allocated for an SE_RASTILEINFO structure.
SE_rastileinfo_get_band_id | Retrieves the raster band ID.
SE_rastileinfo_get_rowcol_number | Retrieves the row and column values.
SE_rastileinfo_get_level | Retrieves the level.
SE_rastileinfo_get_pixel_data | Retrieves the pixel data.
SE_rastileinfo_set_band_id | Sets the raster band ID.
SE_rastileinfo_set_level | Sets the level.
SE_rastileinfo_set_pixel_data | Sets the pixel data.
SE_rastileinfo_set_rowcol_number | Sets the row and column number.

Here's a code segment to illustrate how to query raster data.

...

ret = SE_stream_query (stream, 1, (const CHAR **) attrs, construct);
checkError (handle, NULL, ret, "SE_stream_query");

/* Execute the query. */

ret = SE_stream_execute (stream);
checkError (handle, NULL, ret, "SE_stream_execute");

/* Fetch the first row. */

ret = SE_stream_fetch (stream);
checkError (NULL, stream, ret, "SE_stream_fetch");

/* Obtain the image metadata in the current row. */

ret = SE_rasterattr_create (&hAttr, FALSE);
checkError (NULL, stream, ret, "SE_rasterattr_create");

ret = SE_stream_get_raster (stream, 1, hAttr);
checkError (NULL, stream, ret, "SE_stream_get_raster");

/* Get raster band metadata */

ret = SE_rasterattr_get_rasterband_info (hAttr, &hRasBnd, 1);
checkError (NULL, stream, ret, "SE_rasterattr_get_rasterband_info");

/* Get the four tiles in the upper-left corner of the image. */

ret = SE_rasconstraint_create (&hConstraint);
checkError (handle, NULL, ret, "SE_rasconstraint_create");

ret = SE_rasconstraint_set_envelope (hConstraint, 0, 0, 1, 1);
checkError (handle, NULL, ret, "SE_rasconstraint_set_bands");

ret = SE_stream_query_raster_tile (stream, hConstraint);
checkError (handle, NULL, ret, "SE_stream_query_raster_tile");

ret = SE_rastileinfo_create (&hTile);
checkError (handle, NULL, ret, "SE_rastileinfo_create");

while (SE_SUCCESS == ret)
{
ret = SE_stream_get_raster_tile (stream, hTile);
if (ret == SE_SUCCESS)
{
ret = SE_rastileinfo_get_band_id (hTile, &rasterband_id);
checkError (NULL, stream, ret, "SE_rastileinfo_get_band_id");

ret = SE_rastileinfo_get_level (hTile, &level);
checkError (NULL, stream, ret, "SE_rastileinfo_get_level");

ret = SE_rastileinfo_get_rowcol_number (hTile, &row, &column);
checkError (NULL, stream, ret, "SE_rastileinfo_get_rowcol_number");

ret = SE_rastileinfo_get_pixel_data (hTile, &pixels, &length);
checkError (NULL, stream, ret, "SE_rastileinfo_get_pixel_data");
}
}

/* To query another area of the image, call SE_stream_query_raster_tile()
again, followed by SE_stream_get_raster_tile() till it returns
SE_FINISH, which means no more data available. */


Application Development Support

ArcSDE provides support utilities to aid application development. This support includes:

  • API Trace Logs for logging Client function calls

  • Shape Tables for maintaining a local cache of geometries

  • Point Tables for maintaining a local cache of coordinates

Trace functions


Trace functions

The ArcSDE trace functions log call interface information that can be used to debug or time your code. If tracing is enabled, functions names, I/O parameters, return codes, and times between calls are written to a file.

You can either add calls to the trace functions in your application or set environment variables. To enable tracing with environment variables, use

setenv SDETRACELOC <path_to_trace_results_file>

If SDETRACELOC is set, tracing begins when an application first connects to the ArcSDE server and ends when the application terminates. A trace file is appended to, not written over.

The type and amount of information that is written to the trace file is set with SDETRACEMODE. You can set one or modes in SE_trace_on with the following parameters.

Trace Mode | Description
SE_TRACE_API_BRIEF | Prints function names only.
SE_TRACE_API_VERBOSE | Prints names, input, output and return values.
SE_TRACE_API_MINSEC | Prints the time in [min:sec] format between function calls.
SE_TRACE_API_HRMINSEC | Prints the time in [hour:minute:second] format.
SE_TRACE_API_FLUSH | Forces data to be written to the trace file.

The SDETRACEMODE environment variable accepts characters which represent the parameters.

SE_TRACE_API_BRIEF /* = b */

SE_TRACE_API_VERBOSE /* = v */

SE_TRACE_API_MINSEC /* = m */

SE_TRACE_API_HRMINSEC /* = h */

SE_TRACE_API_FLUSH /* = f */

To set a verbose trace with times in min:sec format as an environment variable:

setenv SDETRACEMODE vm

If SDETRACELOC is set but SDETRACEMODE is not set, a default mode of vhf (verbose, hr:min:sec, and flush) is used. If SDETRACEMODE has an invalid parameter, the brief mode is used.

Trace functions

Function Name | Function Description
SE_trace_off | Turns tracing off.
SE_trace_on | Turns tracing on.

Back


Shape table functions

A shape table, or stable, is a simple, in-memory structure that allows shapes to be stored, deleted, retrieved, and searched both spatially and by their shape identifier (FID). Shape tables are created and accessed by the client application for very rapid access to the shapes, and have no interaction with the ArcSDE server. Shape tables are designed for primarily read-only applications, like routing applications, that demand repeated, fast access to a limited set of shapes.

To the application developer, a shape table looks like a local cache of data that can be loaded and repeatedly searched without the burden of network traffic and DBMS load. As they are referenced by a handle, an application can create and use multiple stables.

Stables store shapes and associated pointers (users determine to what the pointers point) and allow shapes to be accessed by search or FID.

Shapes returned by SE_stable_search and SE_stable_get_shape are read-only. You can’t use these shapes for certain arguments in a wide variety of shape functions that create and edit shapes. The table belows lists the functions and arguments.

Shape function arguments that won’t allow shapes from an stable

Function Argument

SE_shape_add_island shape
SE_shape_add_part tgt_shape
SE_shape_as_line tgt_shape
SE_shape_as_point tgt_shape
SE_shape_as_polygon tgt_shape
SE_shape_as_simple_line tgt_shape
SE_shape_build tgt_shape
SE_shape_change_coordref tgt_shape

Function Argument

SE_shape_change_path shape
SE_shape_clip tgt_shape
SE_shape_delete_island shape
SE_shape_delete_part shape
SE_shape_delete_path shape
SE_shape_delete_point shape
SE_shape_duplicate tgt_shape
SE_shape_extend_line shape
SE_shape_filter_coordinates tgt_shape
SE_shape_free shape
SE_shape_generate_buffer tgt_shape
SE_shape_generate_circle tgt_shape
SE_shape_generate_convex_hull tgt_shape
SE_shape_generate_ellipse tgt_shape
SE_shape_generate_from_part tgt_shape
SE_shape_generate_line tgt_shape
SE_shape_generate_polygon tgt_shape
SE_shape_generate_simple_line tgt_shape
SE_shape_insert_part tgt_shape
SE_shape_interpolate_by_measures tgt_shape
SE_shape_make_nil tgt_shape
SE_shape_move_point shape
SE_shape_replace_part shape
SE_shape_replace_path_with_arc shape
SE_shape_set_anno shape
SE_shape_set_cad shape

Shape table functions

Function Name | Function Description
SE_stable_add_shape | Adds a shape to an stable.
SE_stable_create | Creates an empty stable.
SE_stable_delete_shape | Deletes a shape from an stable.
SE_stable_free | Frees all resources associated with an stable.
SE_stable_get_extent | Returns the extent of the specified stable.
SE_stable_get_num_shapes | Returns the number of shapes currently in the table.
SE_stable_get_shape | Returns a single shape from an stable.
SE_stable_search | Spatially searches for shapes in an stable.
SE_stable_set_concurrency | Establishes concurrency control for threaded client applications.
SE_stable_size | Returns the amount of memory allocated to an stable in bytes.

Back


Point table functions

A point tables stores points in memory for fast point snapping and coordinate retrieval. Point tables are particularly useful for drawing applications.

There is often a need in applications (especially a map editing system) to point to one of the coordinate points that make up a displayed shape for the purpose of obtaining the geographic coordinates at that location. There is often a need to obtain the values of the stored geographic coordinates. A simple transformation from pixel coordinates does not provide the true geographic coordinates. Unfortunately, by the time the user points to the desired coordinate, the shape that contains it is often no longer in memory.

Point table routines resolve this problem. As shapes are retrieved and displayed, the shapes’ coordinates are loaded into an in-memory point table. Subsequently, it is possible to snap to a ‘closest’ point very quickly. The points stored in the point table may be ‘grouped’ with a type mask, which provides the ability to snap to the closest point of a particular type or types.

The point table routines provide automatic dynamic memory allocation. There is no need to allocate memory for a point table. Do not use the POINT_TABLE_HANDLE to directly deallocate point table memory. Deallocate point table memory with the SE_ptable_free function.

Each point stored in the point table is stored as a three-dimensional point with x-, y-, and z-values. Two-dimensional points are assigned a z-value of zero. In addition, each stored point has an associated type mask (an unsigned long integer). You can use individual bits within the type mask to determine the point type (parcel, zone, road, etc.). The user application has complete control over the mask values used.

You can load points into a point table from a point array or by using an ArcSDE shape structure. If the ArcSDE shape is three-dimensional, the z-values are stored; otherwise, the point table z-values are set to zero. Similarly, you can delete points from a point table by using a point array or an ArcSDE shape structure.

Adding and deleting points to the table

Points are added to a point table with the following functions:

Function Name | Function Description
SE_ptable_add_shape | Adds the points in a shape to a point table.
SE_ptable_add_point | Inserts one or more points into a point table.

Points are deleted from a point table with the following functions:

Function Name | Function Description
SE_ptable_delete_point | Deletes a point from a point table.
SE_ptable_delete_shape | Deletes all of a shape’s points from a point table.

You cannot add a point to a point table more than once. Although the same point can be inserted more than once, it resides only once in the point table. Each point in a point table is associated with a point type mask, an UNSIGNED LONG integer. Points are inserted in a point table along with a given mask value, which should be nonzero.

If the given point already exists in a table, the insertion point mask is ORed with the mask of the point already in the table and the new mask value is thereafter associated with the point in the table. Conversely, when a point is deleted from the table, the deletion mask provided is NOT ORed with the stored point’s mask and the point is deleted if the result is zero (null). If the result of the operation is not null, the point stays in the point table, but the point mask is set to the result of the NOT OR operation.

Point table functions

Function Name | Function Description
SE_ptable_create | Creates an empty point table.
SE_ptable_free | Deallocates memory used by a point table.
SE_ptable_get | Retrieves all points within an envelope from the point table.
SE_ptable_set_concurrency | Establishes point table concurrency control for threaded client applications.
SE_ptable_snap | Snaps to the closest point in the point table.

Point table type masks

Each point stored in a point table is associated with a type mask that is under the control of the application. The type mask is an unsigned long integer. One method for using these masks is to associate a different bit with each geographic shape type. For example:

Land Parcels | 1 | (1<<0)
Zoning | 2 | (1<<1)
Hydrography | 4 | (1<<2)
Contour Lines | 8 | (1<<3)
Water Lines | 16 | (1<<4)

Because there are thirty-two bits in an unsigned long type, this method can differentiate between thirty-two different point mask types. If more than thirty-two type masks are needed, you can allocate a second point table.

Whenever a point is inserted into a point table, the operation is associated with an insert mask value. If the point previously existed in the point table, the insert mask is ORed with the current mask value and the result becomes the new current mask value for the point.

Use mask values to control which point types to snap to.

Point snapping

Perform point snapping with the following function:

SE_ptable_snap Snaps to the closest point in the point table.

Calls to SE_ptable_snap require passing a coordinate point, a snap radius, a snapmode, and a point mask (unsigned long). The snap routine only examines points whose mask shares one or more bits with the passed snap mask. If a point in the point table is within the snap radius distance of the designated search coordinate, the closest point is returned in an SE_SNAPPED_POINT structure. The SE_SNAPPED_POINT structure contains the (x,y,z) values and the mask value of the snapped point.

The snapmode parameter determines whether 2-D or 3-D snapping takes place. When the SE_SNAP2D mode is set, the z-value (if nonzero) is the tie-breaker if two points are found at the same horizontal distance. True three-dimensional distances are calculated if the SE_SNAP3D mode is used.

Display of polymarkers

It is customary to show the location of coordinate point data on a computer screen by drawing polymarkers consisting of small crosses or circles. After shapes are retrieved, it is more efficient to load the shapes’ points into the point table while the shapes are being drawn, and to subsequently retrieve and draw all of the polymarkers at once. This sequence avoids drawing a polymarker more than once and selects an appropriate color based on the composite point type. For instance, a given point may belong to parcel and zoning data.

The SE_ptable_get function retrieves all point table points within a designated rectangular area.

Examples

To illustrate the use of the point table routines, make an application capable of displaying spatial shapes of various types. Polymarkers indicate to the user where the shape’s coordinate points are located. The user can select a point with the mouse and have the application instantly obtain the precise coordinates for the point.

The steps to accomplish this are:

  1. Initialize an in-memory point table with SE_ptable_create to associate with the data to be drawn in the display viewport. Note that the geographic envelope associated with the scaled drawable is passed to this routine. SE_ptable_create returns a point table handle that is associated with this point table. Several different point tables may be active at any one time, each differentiated by a unique point table handle.

  2. Create the display. Search the various map layers and retrieve shapes. Each retrieved shape is drawn in an appropriate color. In addition to drawing the shape, make a call to SE_ptable_add_shape. This routine adds the shape’s points to the in-memory point table. Use a different point table mask value for each map layer to differentiate point types later. You could draw polymarkers at each point location at this time, but for this example, delay drawing them until all shapes are retrieved.

  3. Draw polymarkers at the location of every coordinate point after all the shapes are drawn on the screen. Make a call to SE_ptable_get, passing the original geographic envelope, a mask value of zero, and a pointer to the function that will draw the polymarkers. A mask value of zero retrieves all points in the table, not just those of a particular type. You can call the function that draws the polymarkers one or more times; each time it receives an array of SE_SNAPPED_POINT structures. Each structure consists of a coordinate point and a mask value. Because a point is never duplicated in the memory point table, a given point’s mask may be associated with more than one map layer. The routine that draws the polymarkers should use the mask values to determine the correct polymarker color. Thus, the polymarker location indicates the point location, and the color of the polymarker indicates the point type.

  4. If the user now points to a polymarker on the screen, obtain the screen coordinate and convert it into geographic coordinates. Set the snap mask to indicate which types of points to use in the snap search. To find the closest point, call the SE_ptable_snap routine. The application snaps to the closest stored point in the point table.

  5. If the user performs a zoom operation, the current display is erased and a new one is created at the new scale. If a point table is active, use SE_ptable_free to deallocate the current table before calling SE_ptable_create to allocate a new one. You may want to speed up zoom operations by creating several point tables and associate each with a different drawable area. You can differentiate the point tables by their handles.

  6. When a point table is no longer needed, free the memory it is using. You should do this only by calling SE_ptable_free. Although the point table handle is actually a pointer, do not attempt to deallocate a point table by calling the C free( ) function directly, because it doesn’t deallocate all of the allocated memory.

Back


Functional Reference

A list of over 700 functions in the C API.

Database Connections and Server Instances
Layer Management
Geometry Functions
Coordinate Reference
Projection Engine
Stream and Query Management
Table Management
Logfiles
Raster Data Management
Versioned Database Management
Locators
Application DevelopmentSupport

Alphabetical List of Functions


Database Connections and Server Instances

Connection Functions

SE_connection_commit_transaction
SE_connection_create

SE_connection_export_dbtune
SE_connection_free_all_locks
SE_connection_free
SE_connection_free_keyword_info

SE_connection_get_admin_database

SE_connection_get_database
SE_connection_get_dbms_info
SE_connection_get_error_string
SE_connection_get_ext_error
SE_connection_get_instance_name
SE_connection_get_release
SE_connection_get_server_name
SE_connection_get_server_time
SE_connection_get_sql_info
SE_connection_get_keyword_info

SE_connection_get_sdedba_name
SE_connection_get_stream_spec
SE_connection_get_user_name

SE_connection_import_dbtune
SE_connection_rollback_transaction
SE_connection_set_concurrency
SE_connection_set_stream_spec
SE_connection_set_transaction_autocommit
SE_connection_start_transaction

Database Functions

SE_database_list
SE_database_free_list
SE_database_use

Instance Functions

SE_instance_configuration
SE_instance_control
SE_instance_free_locks
SE_instance_free_state_locks
SE_instance_free_table_locks
SE_instance_free_version_locks
SE_instance_free_statistics
SE_instance_free_users
SE_instance_free_variables
SE_instance_get_locks
SE_instance_get_objectlocks
SE_instance_get_state_locks
SE_instance_get_table_locks
SE_instance_get_statistics
SE_instance_get_users
SE_instance_get_variables
SE_instance_get_version_locks
SE_instance_start
SE_instance_status


Layer Management

Layer Functions

SE_layer_alter
SE_layer_create
SE_layer_delete
SE_layer_free_info_list
SE_layer_free_lock

SE_layer_free_locks
SE_layer_calculate_extent
SE_layer_get_info_by_id
SE_layer_get_info
SE_layer_get_info_list
SE_layer_get_locks
SE_layer_get_si_statistics
SE_layer_get_statistics
SE_layer_grant_access
SE_layer_lock
SE_layer_lock_area
SE_layer_modify_lock
SE_layer_revoke_access
SE_layer_truncate
SE_layer_shape_attribute_name

Layer Properties

SE_layerinfo_create
SE_layerinfo_duplicate
SE_layerinfo_free
SE_layerinfo_get_access
SE_layerinfo_get_array_size
SE_layerinfo_get_coordref
SE_layerinfo_get_creation_date
SE_layerinfo_get_creation_keyword
SE_layerinfo_get_description
SE_layerinfo_get_envelope
SE_layerinfo_get_grid_sizes
SE_layerinfo_get_id
SE_layerinfo_get_minimum_id

SE_layerinfo_get_shape_types

SE_layerinfo_get_spatial_column

SE_layerinfo_get_storage_type

SE_layerinfo_has_anno

SE_layerinfo_has_cad

SE_layerinfo_has_spatial_index

SE_layerinfo_is 3D
SE_layerinfo_is_in_load_mode
SE_layerinfo_is_measured
SE_layerinfo_is_storage_external

SE_layerinfo_is_storage_lob
SE_layerinfo_is_storage_normalized
SE_layerinfo_is_storage_sdebinary
SE_layerinfo_is_storage_sql
SE_layerinfo_is_storage_wkb
SE_layerinfo_set_3D
SE_layerinfo_set_anno
SE_layerinfo_set_array_size
SE_layerinfo_set_cad
SE_layerinfo_set_coordref
SE_layerinfo_set_creation_keyword
SE_layerinfo_set_description
SE_layerinfo_set_envelope
SE_layerinfo_set_grid_sizes
SE_layerinfo_set_load_mode
SE_layerinfo_set_measured
SE_layerinfo_set_minimum_id
SE_layerinfo_set_shape_types
SE_layerinfo_set_spatial_column
SE_layerinfo_set_storage_type


Geometry Functions

Shape Management

SE_shape_create
SE_shape_change_coordref
SE_shape_duplicate
SE_shape_free
SE_shape_free_array

Shape Exchange Formats

SE_shape_as_text
SE_shape_generate_from_text
SE_shape_get_text_size
SE_shape_as_WKB
SE_shape_generate_from_WKB
SE_shape_get_WKB_size
SE_shape_as_binary
SE_shape_generate_from_binary
SE_shape_get_binary_size

Shape Properties

SE_shape_get_all_points
SE_shape_get_area
SE_shape_get_coordref
SE_shape_get_extent
SE_shape_get_length
SE_shape_get_num_parts
SE_shape_get_num_points
SE_shape_get_num_subparts
SE_shape_get_points
SE_shape_get_type
SE_shape_is_line
SE_shape_is_multipart
SE_shape_is_nil
SE_shape_is_point
SE_shape_is_polygon
SE_shape_is_simple_line
SE_shape_set_coordref

Shape Construction

SE_shape_add_island
SE_shape_add_part
SE_shape_as_line
SE_shape_as_point
SE_shape_as_polygon
SE_shape_as_simple_line
SE_shape_build
SE_shape_change_path
SE_shape_delete_island
SE_shape_delete_part
SE_shape_delete_point
SE_shape_delete_path
SE_shape_extend_line
SE_shape_filter_coordinates
SE_shape_generate_buffer
SE_shape_generate_circle
SE_shape_generate_convex_hull
SE_shape_generate_ellipse
SE_shape_generate_from_part
SE_shape_generate_label_point
SE_shape_generate_line
SE_shape_generate_point
SE_shape_generate_polygon
SE_shape_generate_rectangle
SE_shape_generate_simple_line
SE_shape_insert_part
SE_shape_make_nil
SE_shape_move_point
SE_shape_replace_part
SE_shape_replace_path_with_arc

Shape Overlay

SE_shape_clip
SE_shape_difference
SE_shape_find_relation
SE_shape_find_CBM_relation
SE_shape_evaluate_CBM
SE_shape_intersect
SE_shape_overlay
SE_shape_symmetrical_difference
SE_shape_union

Shape Relationships

SE_shape_calculate_distance
SE_shape_is_containing
SE_shape_is_crossing
SE_shape_is_disjoint
SE_shape_is_equal
SE_shape_is_overlapping
SE_shape_is_touching
SE_shape_is_within

Shapes with Elevations

SE_shape_get_3D_length
SE_shape_get_Zrange
SE_shape_is_3D

Shapes with Measures

SE_shape_interpolate_by_measures
SE_shape_get_Mrange
SE_shape_is_measured
SE_shape_find_along
SE_shape_find_between

Shapes with Annotation

SE_shape_get_anno
SE_shape_has_anno
SE_shape_set_anno

Annotation

SE_anno_create
SE_anno_duplicate
SE_anno_free
SE_anno_get_alignment
SE_anno_get_justification
SE_anno_get_leader
SE_anno_get_level
SE_anno_get_offset
SE_anno_get_placement
SE_anno_get_symbol
SE_anno_get_text
SE_anno_get_text_size
SE_anno_set_alignment
SE_anno_set_justification
SE_anno_set_leader
SE_anno_set_level
SE_anno_set_offset
SE_anno_set_placement
SE_anno_set_symbol
SE_anno_set_text
SE_anno_set_text_size


ArcSDE Coordinate Reference

Coordinate Reference

Spatial Reference Properties

SE_spatialref_alter
SE_spatialref_create
SE_spatialref_delete
SE_spatialref_free_info_list
SE_spatialref_get_info
SE_spatialref_get_info_list

Spatial Reference Properties

SE_spatialrefinfo_create
SE_spatialrefinfo_duplicate
SE_spatialrefinfo_free
SE_spatialrefinfo_get_auth_name
SE_spatialrefinfo_get_auth_srid
SE_spatialrefinfo_get_coordref
SE_spatialrefinfo_get_description
SE_spatialrefinfo_get_srid
SE_spatialrefinfo_set_auth_name
SE_spatialrefinfo_set_auth_srid
SE_spatialrefinfo_set_coordref
SE_spatialrefinfo_set_description

Coordinate Reference Functions

SE_coordref_create
SE_coordref_free
SE_coordref_duplicate
SE_coordref_get_coordsys
SE_coordref_get_description
SE_coordref_get_id

SE_coordref_get_srid
SE_coordref_get_m
SE_coordref_get_m_range

SE_coordref_get_srid
SE_coordref_get_xy
SE_coordref_get_xy_envelope
SE_coordref_get_z
SE_coordref_get_z_range
SE_coordref_set_coordsys
SE_coordref_set_by_description
SE_coordref_set_by_id
SE_coordref_set_m
SE_coordref_set_m_by_range
SE_coordref_set_xy
SE_coordref_set_xy_by_envelope
SE_coordref_set_z
SE_coordref_set_z_by_range


Projection Engine

Coordinate Systems

pe_coordsys_clone
pe_coordsys_del
pe_coordsys_eq
pe_coordsys_from_string
pe_coordsys_p
pe_coordsys_to_string

Datums

pe_datum_clone
pe_datum_del
pe_datum_eq
pe_datum_from_string
pe_datum_name
pe_datum_new
pe_datum_p
pe_datum_spheroid
pe_datum_to_string

Geographic Coordinate Systems

pe_geogcs_clone
pe_geogcs_datum
pe_geogcs_del
pe_geogcs_eq
pe_geogcs_from_string
pe_geogcs_name
pe_geogcs_new
pe_geogcs_p
pe_geogcs_primem
pe_geogcs_to_string
pe_geogcs_unit

Geographic Transformations

pe_geogtran_clone
pe_geogtran_del
pe_geogtran_eq
pe_geogtran_from_string
pe_geogtran_geogcs1
pe_geogtran_geogcs2
pe_geogtran_isconstloaded
pe_geogtran_method
pe_geogtran_load_constants
pe_geogtran_name
pe_geogtran_new
pe_geogtran_p
pe_geogtran_parameters
pe_geogtran_to_string
pe_geogtran_unload_constants

Mathematical Functions

pe_auth_r
pe_beta_to_phi
pe_cart_to_curv
pe_chi_to_phi
pe_curv_to_cart
pe_delta
pe_eq
pe_eta_to_phi
pe_geodesic_coordinate
pe_geodesic_distance
pe_m
pe_mu_to_phi
pe_n
pe_phi_to_beta
pe_phi_to_chi
pe_phi_to_eta
pe_phi_to_mu
pe_q
pe_q90
pe_w

Metadata Converters

pe_coordsys_from_prjfile
pe_coordsys_from_prjstring
pe_coordsys_to_prjfile
pe_coordsys_to_prjstring
pe_zunit_from_prjfile
pe_zunit_from_prjstring

Parameters

pe_parameter_clone
pe_parameter_del
pe_parameter_eq
pe_parameter_from_string
pe_parameter_index
pe_parameter_method_defaults
pe_parameter_name
pe_parameter_name_set
pe_parameter_new
pe_parameter_p
pe_parameter_projection_defaults
pr_parameter_to_string
pe_parameter_value
pe_parameter_value_set

Predefined Objects

pe_factory
pe_factory_code
pe_factory_datum
pe_factory_geogcs
pe_factory_geogtran
pe_factory_method
pe_factory_parameter
pe_factory_primem
pe_factory_projcs
pe_factory_projection
pe_factory_spheroid
pe_factory_unit
pe_predefined_angular_unit
pe_predefined_datum
pe_predefined_geogcs
pe_predefined_geogtran
pe_predefined_linear_unit
pe_predefined_method
pe_predefined_parameter
pe_predefined_primem
pe_predefined_projcs
pe_predefined_projection
pe_predefined_spheroid
pe_table_del
pe_factory_angular_unit_codelist
pe_factory_datum_codelist
pe_factory_geogcs_codelist
pe_factory_geogtran_codelist
pe_factory_linear_unit_codelist
pe_factory_method_codelist
pe_factory_parameter_codelist
pe_factory_primem_codelist
pe_factory_projcs_codelist
pe_factory_projection_codelist
pe_factory_spheroid_codelist
pe_factory_codelist_del

Prime Meridians

pe_primem_clone
pe_primem_del
pe_primem_eq
pe_primem_from_string
pe_primem_longitude
pe_primem_name
pe_primem_new
pe_primem_p
pe_primem_to_string

Projected Coordinate Systems

pe_projcs_clone

pe_projcs_clone_alter_units
pe_projcs_del
pe_projcs_eq
pe_projcs_eqnn
pe_projcs_from_string
pe_projcs_geogcs
pe_projcs_isconstloaded
pe_projcs_load_constants
pe_projcs_name
pe_projcs_new
pe_projcs_p
pe_projcs_parameters
pe_projcs_projection
pr_projcs_to_string
pe_projcs_unit
pe_projcs_unload_constants

Projection Horizons (description)

pe_generate_horizon
pe_horizon_del

Projections

pe_projection_clone
pe_projection_del
pe_projection_eq
pe_projection_forward
pe_projection_from_string
pe_projection_horizon
pe_projection_inverse
pe_projection_name
pe_projection_new
pe_projection_p
pe_projection_to_string

Spheroids

pe_spheroid_axis
pe_spheroid_clone
pe_spheroid_del
pe_spheroid_eq
pe_spheroid_flattening
pe_spheroid_from_string
pe_spheroid_name
pe_spheroid_new
pe_spheroid_p
pe_spheroid_to_string

Transformation Methods

pe_method_clone
pe_method_del
pe_method_eq
pe_method_forward
pe_method_from_string
pe_method_inverse
pe_method_name
pe_method_new
pe_method_p
pe_method_to_string

Transformation

pe_geog_to_proj
pe_geog1_to_geog2
pe_geog2_to_geog1
pe_proj_to_geog

Units of Measure

pe_unit_clone
pe_unit_del
pe_unit_eq
pe_unit_factor
pe_unit_from_string
pe_unit_name
pe_unit_new
pe_unit_p
pe_unit_to_string


Stream and Query Management

Stream Functions

SE_stream_create
SE_stream_free
SE_stream_close
SE_stream_execute
SE_stream_flush_buffered_writes

Stream Properties

SE_stream_get_connection
SE_stream_in_progress
SE_stream_last_inserted_row_id
SE_stream_get_ext_error
SE_stream_set_write_mode
SE_stream_set_ouput_coordref
SE_stream_set_rowlocking
SE_stream_num_result_column
SE_stream_describe_column

Stream Utilities

SE_stream_insert_into_file
SE_stream_locate_table
SE_stream_calculate_layer_extent
SE_stream_calculate_layer_statistics
SE_stream_calculate_table_statistics

Stream Version Functions

SE_stream_copy_state_rows
SE_stream_restore_rows
SE_stream_set_state

Server Side Applications

SE_stream_set_ssa_filter
SE_stream_invoke_ssa

Raster Data Access

SE_stream_last_inserted_raster_id

SE_stream_set_raster_constraint
SE_stream_query_raster_tile
SE_stream_get_raster_tile
SE_stream_get_raster

Preparing Queries

SQL Queries

SE_stream_prepare_sql
SE_stream_query
SE_stream_query_from_file
SE_stream_query_with_info
SE_sql_construct_free
SE_sql_construct_alloc

Spatial Queries

SE_stream_get_spatial_masks
SE_stream_set_spatial_constraints

Logfile Queries

SE_stream_set_logfile
SE_stream_query_logfile

Query Object Properties

SE_queryinfo_create

SE_queryinfo_duplicate
SE_queryinfo_free

SE_queryinfo_free_columns

SE_queryinfo_free_tables

SE_queryinfo_get_by_clause
SE_queryinfo_get_columns

SE_queryinfo_get_entity_type

SE_queryinfo_get_logfile

SE_queryinfo_get_query_type

SE_queryinfo_get_tables
SE_queryinfo_get_where_clause

SE_queryinfo_set_by_clause
SE_queryinfo_set_columns

SE_queryinfo_set_entity_type

SE_queryinfo_set_logfile

SE_queryinfo_set_query_type

SE_queryinfo_set_tables
SE_queryinfo_set_where_clause

Fetching Rows

SE_stream_fetch
SE_stream_fetch_row

Inserting Rows

SE_stream_insert_table

Updating Rows

SE_stream_update_ordered
SE_stream_update_row
SE_stream_update_sdodim_table
SE_stream_update_table

SE_stream_set_row

Deleting Rows

SE_stream_delete_from_table
SE_stream_delete_by_id_list
SE_stream_delete_row

Setting Values

SE_stream_bind_input_column
SE_stream_set_blob
SE_stream_set_date
SE_stream_set_double
SE_stream_set_float
SE_stream_set_integer
SE_stream_set_shape
SE_stream_set_smallint
SE_stream_set_string

Accessing Values

SE_stream_bind_output_column
SE_stream_get_blob
SE_blob_free
SE_stream_get_double
SE_stream_get_date
SE_stream_get_float
SE_stream_get_integer
SE_stream_get_shape
SE_stream_get_smallint
SE_stream_get_string


Table Management

Table Registration

Table Registration Functions

SE_registration_alter
SE_registration_create
SE_registration_delete
SE_registration_get_difference_list
SE_registration_get_info_by_id
SE_registration_get_info
SE_registration_get_info_list
SE_registration_free_info_list

SE_registration_get_dependent_tables
SE_registration_free_dependent_tables

Table Registration Properties

SE_reginfo_create
SE_reginfo_duplicate
SE_reginfo_free
SE_reginfo_get_access
SE_reginfo_get_creation_keyword
SE_reginfo_get_description
SE_reginfo_get_id
SE_reginfo_get_mv_view_name
SE_reginfo_get_minimum_id
SE_reginfo_get_reg_date

SE_reginfo_get_rowid_allocation
SE_reginfo_get_rowid_column
SE_reginfo_get_table_name
SE_reginfo_has_layer
SE_reginfo_is_hidden
SE_reginfo_is_multiversion
SE_reginfo_allow_rowlocks
SE_reginfo_set_creation_keyword
SE_reginfo_set_description
SE_reginfo_set_hidden
SE_reginfo_set_minimum_id
SE_reginfo_set_multiversion
SE_reginfo_set_rowlocks

SE_reginfo_set_rowid_allocation
SE_reginfo_set_rowid_column
SE_reginfo_set_table_name
SE_reginfo_set_view
SE_reginfo_is_view
SE_reginfo_set_locator
SE_reginfo_has_locator

Table Functions

SE_table_add_column
SE_table_calculate_stats
SE_table_create

SE_table_create_primarykey_constraint

SE_table_create_unique_constraint
SE_table_create_mv_view
SE_table_create_index
SE_table_create_indexes
SE_table_create_view
SE_table_delete

SE_table_delete_contraint
SE_table_delete_mv_view
SE_table_delete_index
SE_table_describe
SE_table_describe_indexes
SE_table_drop_column
SE_table_free_descriptions
SE_table_free_index_descriptions
SE_table_free_list
SE_table_free_lock
SE_table_free_locks
SE_table_free_stats
SE_table_get_locks
SE_table_get_ids
SE_table_return_ids
SE_table_get_permissions
SE_table_grant_access
SE_table_list
SE_table_lock
SE_table_make_qualified_name
SE_table_metadata_alter
SE_table_metatdata_add
SE_table_metadata_delete
SE_table_metadata_delete_where
SE_table_metadata_free_info_list
SE_table_metadata_get_info_list
SE_table_parse_qualified_name
SE_table_rename
SE_table_revoke_access
SE_table_truncate
SE_table_update_dbms_stats
SE_table_add_locator
SE_table_delete_locator
SE_table_get_locator
SE_table_get_locator_list

SE_table_get_mvedit_states
SE_table_free_locator_list
SE_table_add_rowlocks
SE_table_remove_rowlocks
SE_table_get_rowlocks
SE_table_get_rowlocks_by_user
SE_table_free_rowlocks_list


Logfiles

Logfile Functions

SE_log_get_by_name
SE_log_get_by_owner
SE_log_get_by_table
SE_log_get_open_log_info
SE_log_make_name
SE_log_create
SE_log_delete
SE_log_alter
SE_log_calculate_extent
SE_log_count_ids
SE_log_combine
SE_log_copy
SE_log_grant_access
SE_log_revoke_access
SE_log_sort
SE_log_open_log
SE_log_close
SE_log_count
SE_log_add_id
SE_log_add_id_list
SE_log_delete_id_list
SE_log_get_id_list
SE_log_open
SE_log_set_type

Logfile Properties

SE_loginfo_create

SE_loginfo_duplicate
SE_loginfo_free
SE_loginfo_free_list
SE_loginfo_get_id
SE_loginfo_get_name
SE_loginfo_get_target_object
SE_loginfo_is_persistent
SE_loginfo_set_name
SE_loginfo_set_target_object
SE_loginfo_set_persistence


Raster Data Management

Raster Columns

Raster Column Functions

SE_rastercolumn_alter
SE_rastercolumn_create
SE_rastercolumn_delete
SE_rastercolumm_free_info_list
SE_rastercolumn_get_info_by_name
SE_rastercolumn_get_info_by_id
SE_rastercolumn_get_info_list
SE_rastercolumn_grant_access
SE_rastercolumn_revoke_access

SE_rastercolumn_truncate

Raster Column Properties

SE_rascolinfo_create
SE_rascolinfo_free
SE_rascolinfo_get_id
SE_rascolinfo_get_access
SE_rascolinfo_get_creation_date
SE_rascolinfo_get_creation_keyword
SE_rascolinfo_set_creation_keyword
SE_rascolinfo_get_description

SE_rascolinfo_set_description

SE_rascolinfo_get_gdbtype

SE_rascolinfo_has_gdbtype

SE_rascolinfo_set_gdbtype

SE_rascolinfo_get_raster_column
SE_rascolinfo_set_raster_column

SE_rascolinfo_set_load_mode
SE_rascolinfo_get_minimum_id
SE_rascolinfo_set_minimum_id
SE_rascolinfo_set_band_name
SE_rascolinfo_get_coordref
SE_rascolinfo_set_coordref
SE_rascolinfo_is_in_load_mode

Rasters

Raster Functions

SE_raster_create
SE_raster_delete
SE_raster_get_bands
SE_raster_add_band
SE_raster_drop_band
SE_raster_get_info_by_id

Raster Properties

SE_rasterinfo_create
SE_rasterinfo_free
SE_rasterinfo_duplicate
SE_rasterinfo_get_description
SE_rasterinfo_set_description
SE_rasterinfo_get_rascol_id
SE_rasterinfo_set_rascol_id
SE_rasterinfo_get_raster_id

Raster Bands

Raster Band Functions

SE_rasterband_alter
SE_rasterband_create
SE_rasterband_delete
SE_rasterband_free_info_list
SE_rasterband_get_info_by_id
SE_rasterband_get_info_list

Raster Band Properties

SE_rasbandinfo_create
SE_rasbandinfo_free
SE_rasbandinfo_duplicate

SE_rasbandinfo_set_bin_function

SE_rasbandinfo_free_colormap

SE_rasbandinfo_get_colormap

SE_rasbandinfo_has_colormap

SE_rasbandinfo_set_colormap

SE_rasbandinfo_get_compression type

SE_rasbandinfo_set_compression type
SE_rasbandinfo_get_id
SE_rasbandinfo_get_pixel_type
SE_rasbandinfo_set_pixel_type
SE_rasbandinfo_get_tile_size
SE_rasbandinfo_set_tile_size
SE_rasbandinfo_get_tile_origin
SE_rasbandinfo_get_rascol_id

SE_rasbandinfo_set_rascol_id
SE_rasbandinfo_get_band_number
SE_rasbandinfo_set_band_number
SE_rasbandinfo_get_raster_id
SE_rasbandinfo_get_time
SE_rasbandinfo_get_band_size
SE_rasbandinfo_set_band_size
SE_rasbandinfo_get_extent
SE_rasbandinfo_set_extent
SE_rasbandinfo_get_max_level

SE_rasbandinfo_set_max_level
SE_rasbandinfo_get_band_name

SE_rasbandinfo_set_band_name

SE_rasbandinfo_free_stats_histogram

SE_rasbandinfo_get_stats_histogram
SE_rasbandinfo_get_statistics
SE_rasbandinfo_set_statistics

SE_rasbandinfo_has_stats

SE_rasbandinfo_get_stats_min

SE_rasbandinfo_get_stats_max

SE_rasbandinfo_get_stats_mean

SE_rasbandinfo_get_stats_stddev

Raster Data Access

Stream Functions

SE_stream_last_inserted_raster_id

SE_stream_set_raster_constraint
SE_stream_query_raster_tile
SE_stream_get_raster_tile
SE_stream_get_raster

Raster Tile Properties

SE_rastileinfo_create
SE_rastileinfo_free
SE_rastileinfo_get_band_id
SE_rastileinfo_set_band_id
SE_rastileinfo_get_rowcol
SE_rastileinfo_set_rowcol
SE_rastileinfo_get_level
SE_rastileinfo_set_level
SE_rastileinfo_get_pixel_data
SE_rastileinfo_set_pixel_data

Raster Attribute Functions

SE_rasterattr_create
SE_rasterattr_free
SE_rasterattr_duplicate

SE_rasterattr_set_colormap

SE_rasterattr_get_compression_type

SE_rasterattr_set_compression_type
SE_rasterattr_get_extent
SE_rasterattr_set_extent
SE_rasterattr_get_extent_by_level
SE_rasterattr_get_image_size
SE_rasterattr_set_image_size
SE_rasterattr_get_image_size_by_level
SE_rasterattr_get_max_level

SE_rasterattr_set_mask_mode

SE_rasterattr_get_num_bands
SE_rasterattr_get_pixel_type
SE_rasterattr_set_pixel_type
SE_rasterattr_get_raster_id
SE_rasterattr_get_raster_info
SE_rasterattr_get_rasterband_info

SE_rasterattr_get_rasterband_info_list
SE_rasterattr_get_rascol_id
SE_rasterattr_get_tile_origin
SE_rasterattr_get_tile_size
SE_rasterattr_set_tile_size
SE_rasterattr_set_callback
SE_rasterattr_set_delete_area
SE_rasterattr_set_mosaic_mode
SE_rasterattr_get_pyramid_info
SE_rasterattr_set_pyramid_info

Raster Query Constraints

SE_rasconstraint_create

SE_rasconstraint_free

SE_rasconstraint_set_bands

SE_rasconstraint_set_envelope

SE_rasconstraint_set_level

SE_rasconstraint_set_interleave


Versioned Database Management

Version Functions

SE_version_alter
SE_version_change_state
SE_version_create
SE_version_delete
SE_version_free_info_list
SE_version_free_lock
SE_version_free_locks
SE_version_get_info
SE_version_get_info_by_id

SE_version_get_info_list
SE_version_get_locks
SE_version_lock
SE_version_rename

Version Properties

SE_versioninfo_create
SE_versioninfo_duplicate
SE_versioninfo_free
SE_versioninfo_get_access
SE_versioninfo_get_creation_time
SE_versioninfo_get_description
SE_versioninfo_get_id
SE_versioninfo_get_name
SE_versioninfo_get_parent_id
SE_versioninfo_get_parent_name
SE_versioninfo_get_state_id
SE_versioninfo_set_access
SE_versioninfo_set_description
SE_versioninfo_set_name
SE_versioninfo_set_parent_name
SE_versioninfo_set_state_id

State Functions

SE_state_close
SE_state_compress_tree
SE_state_create
SE_state_delete
SE_state_delete_range
SE_state_free_info_list
SE_state_free_lock
SE_state_get_info
SE_state_get_info_list
SE_state_lock
SE_state_merge
SE_state_open
SE_state_trim_tree

State Properties

SE_stateinfo_create
SE_stateinfo_duplicate
SE_stateinfo_free
SE_stateinfo_free_lineage
SE_stateinfo_get_closing_time
SE_stateinfo_get_creation_time
SE_stateinfo_get_id
SE_stateinfo_get_lineage
SE_stateinfo_get_owner
SE_stateinfo_get_parent
SE_stateinfo_is_open

Stream Version Functions

SE_stream_copy_state_rows
SE_stream_restore_rows
SE_stream_set_state


Locators

Locator Functions

SE_locator_alter
SE_locator_create
SE_locator_delete
SE_locator_get_info
SE_locator_get_info_by_id
SE_locator_free_info_list
SE_locator_get_info_list
SE_locator_describe_output
SE_locator_free_descriptions

Locator Properties

SE_locatorinfo_create
SE_locatorinfo_free
SE_locatorinfo_duplicate
SE_locatorinfo_get_description
SE_locatorinfo_get_category
SE_locatorinfo_get_id
SE_locatorinfo_get_type
SE_locatorinfo_get_name
SE_locatorinfo_get_owner
SE_locatorinfo_get_property_values
SE_locatorinfo_free_property_values
SE_locatorinfo_set_description
SE_locatorinfo_set_category
SE_locatorinfo_set_name
SE_locatorinfo_set_property_values
SE_locatorinfo_set_type


Application Development Support

Error Messages

SE_error_get_string

Working with Files

File Functions

SE_file_close
SE_file_create
SE_file_describe
SE_file_exist

SE_file_free_descriptions
SE_file_open

File Properties

SE_fileinfo_create

SE_fileinfo_duplicate
SE_fileinfo_free
SE_fileinfo_get_layerinfo
SE_fileinfo_get_name
SE_fileinfo_get_type
SE_fileinfo_set_layerinfo
SE_fileinfo_set_name
SE_fileinfo_set_type

Object Metadata

Metadata Functions

SE_metadata_free_info_list
SE_metadata_get_info_by_id
SE_metadata_get_info_list

Metadata Properties

SE_metadatainfo_create
SE_metadatainfo_free
SE_metadatainfo_duplicate
SE_metadatainfo_get_classname
SE_metadatainfo_get_date
SE_metadatainfo_get_description
SE_metadatainfo_get_id
SE_metadatainfo_get_object_owner
SE_metadatainfo_get_object_type
SE_metadatainfo_get_property
SE_metadatainfo_get_object_name
SE_metadatainfo_get_value
SE_metadatainfo_set_classname
SE_metadatainfo_set_description
SE_metadatainfo_set_object_type
SE_metadatainfo_set_property
SE_metadatainfo_set_object_name
SE_metadatainfo_set_value

Object Locks

Object Lock Functions

SE_objectlock_free_lock
SE_objectlock_free_list
SE_objectlock_get_list
SE_objectlock_lock

Object Lock Properties

SE_objectlockinfo_create
SE_objectlockinfo_duplicate
SE_objectlockinfo_free
SE_objectlockinfo_get_lock_mode
SE_objectlockinfo_get_object_id
SE_objectlockinfo_get_object_type
SE_objectlockinfo_get_owner
SE_objectlockinfo_set_object_id
SE_objectlockinfo_set_object_type

Server Side Applications

SE_stream_set_ssa_filter
SE_stream_invoke_ssa

Point Table Functions

SE_ptable_add_point
SE_ptable_add_shape
SE_ptable_create
SE_ptable_delete_point
SE_ptable_delete_shape
SE_ptable_free
SE_ptable_get
SE_ptable_set_concurrency
SE_ptable_snap

Shape Table Functions

SE_stable_add_shape
SE_stable_create
SE_stable_delete_shape
SE_stable_free
SE_stable_get_extent
SE_stable_get_shape
SE_stable_get_num_shapes
SE_stable_set_concurrency
SE_stable_size
SE_stable_search

API Call Trace Functions

SE_trace_on
SE_trace_off


Alphabetical list of functions

A B C D F I L M O P Q R S T V

A

SE_anno_create
SE_anno_duplicate
SE_anno_free
SE_anno_get_alignment
SE_anno_get_justification
SE_anno_get_leader
SE_anno_get_level
SE_anno_get_offset
SE_anno_get_placement
SE_anno_get_symbol
SE_anno_get_text
SE_anno_get_text_size
SE_anno_set_alignment
SE_anno_set_justification
SE_anno_set_leader
SE_anno_set_level
SE_anno_set_offset
SE_anno_set_placement
SE_anno_set_symbol
SE_anno_set_text
SE_anno_set_text_size

Back to the top

B

SE_blob_free

Back to the top

C

SE_coordref_create
SE_coordref_duplicate
SE_coordref_free
SE_coordref_get_coordsys
SE_coordref_get_description
SE_coordref_get_id
SE_coordref_get_m
SE_coordref_get_m_range
SE_coordref_get_srid
SE_coordref_get_xy
SE_coordref_get_xy_envelope
SE_coordref_get_z
SE_coordref_get_z_range
SE_coordref_set_by_description
SE_coordref_set_by_id
SE_coordref_set_coordsys
SE_coordref_set_m
SE_coordref_set_m_by_range
SE_coordref_set_xy
SE_coordref_set_xy_by_envelope
SE_coordref_set_z
SE_coordref_set_z_by_range
SE_connection_commit_transaction
SE_connection_create
SE_connection_export_dbtune
SE_connection_free
SE_connection_free_all_locks
SE_connection_free_keyword_info

SE_connection_get_admin_database

SE_connection_get_database
SE_connection_get_dbms_info
SE_connection_get_error_string
SE_connection_get_ext_error
SE_connection_get_instance_name
SE_connection_get_keyword_info
SE_connection_get_release
SE_connection_get_sdedba_name
SE_connection_get_server_name
SE_connection_get_server_time
SE_connection_get_sql_info
SE_connection_get_stream_spec
SE_connection_get_user_name
SE_connection_import_dbtune
SE_connection_rollback_transaction
SE_connection_set_concurrency
SE_connection_set_stream_spec
SE_connection_set_transaction_autocommit
SE_connection_start_transaction

Back to the top

D

SE_database_list
SE_database_free_list
SE_database_use

Back to the top

F

SE_file_close
SE_file_create
SE_file_describe
SE_file_free_descriptions
SE_file_exist
SE_file_open
SE_fileinfo_create
SE_fileinfo_duplicate
SE_fileinfo_free
SE_fileinfo_get_layerinfo
SE_fileinfo_get_name
SE_fileinfo_get_type
SE_fileinfo_set_layerinfo
SE_fileinfo_set_name
SE_fileinfo_set_type

Back to the top

I

SE_instance_configuration
SE_instance_control
SE_instance_free_locks
SE_instance_free_state_locks
SE_instance_free_statistics
SE_instance_free_table_locks
SE_instance_free_users
SE_instance_free_variables
SE_instance_free_version_locks
SE_instance_get_locks
SE_instance_get_objectlocks
SE_instance_get_state_locks
SE_instance_get_statistics
SE_instance_get_table_locks
SE_instance_get_users
SE_instance_get_variables
SE_instance_get_version_locks
SE_instance_start
SE_instance_status

Back to the top

L

SE_layer_alter
SE_layer_calculate_extent
SE_layer_create
SE_layer_delete
SE_layer_free_info_list
SE_layer_free_lock
SE_layer_free_locks
SE_layer_get_info_by_id
SE_layer_get_info
SE_layer_get_info_list
SE_layer_get_locks
SE_layer_get_si_statistics
SE_layer_get_statistics
SE_layer_grant_access
SE_layer_lock
SE_layer_lock_area
SE_layer_modify_lock
SE_layer_revoke_access
SE_layer_truncate
SE_layer_shape_attribute_name
SE_layerinfo_create
SE_layerinfo_duplicate
SE_layerinfo_free
SE_layerinfo_get_access
SE_layerinfo_get_array_size
SE_layerinfo_get_coordref
SE_layerinfo_get_creation_date
SE_layerinfo_get_creation_keyword
SE_layerinfo_get_description
SE_layerinfo_get_envelope
SE_layerinfo_get_grid_sizes
SE_layerinfo_get_id
SE_layerinfo_get_minimum_id
SE_layerinfo_get_shape_types
SE_layerinfo_get_spatial_column
SE_layerinfo_get_storage_type
SE_layerinfo_has_anno
SE_layerinfo_has_cad
SE_layerinfo_has_spatial_index
SE_layerinfo_is 3D
SE_layerinfo_is_in_load_mode
SE_layerinfo_is_measured
SE_layerinfo_is_storage_external
SE_layerinfo_is_storage_lob
SE_layerinfo_is_storage_normalized
SE_layerinfo_is_storage_sdebinary
SE_layerinfo_is_storage_sql
SE_layerinfo_is_storage_wkb
SE_layerinfo_set_3D
SE_layerinfo_set_anno
SE_layerinfo_set_array_size
SE_layerinfo_set_cad
SE_layerinfo_set_coordref
SE_layerinfo_set_creation_keyword
SE_layerinfo_set_description
SE_layerinfo_set_envelope
SE_layerinfo_set_grid_sizes
SE_layerinfo_set_load_mode
SE_layerinfo_set_measured
SE_layerinfo_set_minimum_id
SE_layerinfo_set_shape_types
SE_layerinfo_set_spatial_column
SE_layerinfo_set_storage_type
SE_locator_alter
SE_locator_create
SE_locator_delete
SE_locator_describe_output
SE_locator_free_descriptions

SE_locator_free_info_list
SE_locator_get_info
SE_locator_get_info_by_id
SE_locator_get_info_list
SE_locatorinfo_create
SE_locatorinfo_duplicate
SE_locatorinfo_free
SE_locatorinfo_free_property_values
SE_locatorinfo_get_category
SE_locatorinfo_get_description
SE_locatorinfo_get_id
SE_locatorinfo_get_name
SE_locatorinfo_get_owner
SE_locatorinfo_get_property_values
SE_locatorinfo_get_type
SE_locatorinfo_set_category
SE_locatorinfo_set_description
SE_locatorinfo_set_name
SE_locatorinfo_set_property_values
SE_locatorinfo_set_type
SE_log_add_id
SE_log_add_id_list
SE_log_alter
SE_log_calculate_extent
SE_log_close
SE_log_combine
SE_log_copy
SE_log_count
SE_log_count_ids
SE_log_create
SE_log_delete
SE_log_delete_id_list
SE_log_get_by_name
SE_log_get_by_owner
SE_log_get_by_table
SE_log_get_id_list
SE_log_get_open_log_info
SE_log_grant_access
SE_log_make_name
SE_log_open
SE_log_open_log
SE_log_revoke_access
SE_log_set_type
SE_log_sort
SE_loginfo_create
SE_loginfo_duplicate
SE_loginfo_free
SE_loginfo_free_list
SE_loginfo_get_id
SE_loginfo_get_name
SE_loginfo_get_target_object
SE_loginfo_is_persistent
SE_loginfo_set_name
SE_loginfo_set_persistence
SE_loginfo_set_target_object

Back to the top

M

SE_metadata_free_info_list
SE_metadata_get_info_by_id
SE_metadata_get_info_list
SE_metadatainfo_create
SE_metadatainfo_duplicate
SE_metadatainfo_free
SE_metadatainfo_get_classname
SE_metadatainfo_get_date
SE_metadatainfo_get_description
SE_metadatainfo_get_id
SE_metadatainfo_get_object_name
SE_metadatainfo_get_object_owner
SE_metadatainfo_get_object_type
SE_metadatainfo_get_property
SE_metadatainfo_get_value
SE_metadatainfo_set_classname
SE_metadatainfo_set_description
SE_metadatainfo_set_object_name
SE_metadatainfo_set_object_type
SE_metadatainfo_set_property
SE_metadatainfo_set_value

Back to the top

O

SE_objectlock_free_list
SE_objectlock_free_lock
SE_objectlock_get_list
SE_objectlock_lock

SE_objectlockinfo_create
SE_objectlockinfo_duplicate
SE_objectlockinfo_free
SE_objectlockinfo_get_lock_mode
SE_objectlockinfo_get_object_id
SE_objectlockinfo_get_object_type
SE_objectlockinfo_get_owner
SE_objectlockinfo_set_object_id
SE_objectlockinfo_set_object_type

Back to the top

P

SE_ptable_add_point
SE_ptable_add_shape
SE_ptable_create
SE_ptable_delete_point
SE_ptable_delete_shape
SE_ptable_free
SE_ptable_get
SE_ptable_set_concurrency
SE_ptable_snap

Back to the top

Q

SE_queryinfo_create
SE_queryinfo_duplicate
SE_queryinfo_free
SE_queryinfo_free_columns
SE_queryinfo_free_tables
SE_queryinfo_get_by_clause
SE_queryinfo_get_columns
SE_queryinfo_get_entity_type
SE_queryinfo_get_logfile
SE_queryinfo_get_query_type
SE_queryinfo_get_tables
SE_queryinfo_get_where_clause
SE_queryinfo_set_by_clause
SE_queryinfo_set_columns
SE_queryinfo_set_entity_type
SE_queryinfo_set_logfile
SE_queryinfo_set_query_type
SE_queryinfo_set_tables
SE_queryinfo_set_where_clause

Back to the top

R

SE_rasbandinfo_create
SE_rasbandinfo_duplicate
SE_rasbandinfo_free
SE_rasbandinfo_free_colormap
SE_rasbandinfo_free_stats_histogram
SE_rasbandinfo_get_band_name
SE_rasbandinfo_get_band_number
SE_rasbandinfo_get_band_size
SE_rasbandinfo_get_colormap
SE_rasbandinfo_get_compression_type
SE_rasbandinfo_get_extent
SE_rasbandinfo_get_id
SE_rasbandinfo_get_max_level
SE_rasbandinfo_get_pixel_type
SE_rasbandinfo_get_rascol_id
SE_rasbandinfo_get_raster_id
SE_rasbandinfo_get_stats_histogram
SE_rasbandinfo_get_stats_max
SE_rasbandinfo_get_stats_mean
SE_rasbandinfo_get_stats_min
SE_rasbandinfo_get_stats_stddev
SE_rasbandinfo_get_tile_origin
SE_rasbandinfo_get_tile_size
SE_rasbandinfo_get_time
SE_rasbandinfo_has_colormap
SE_rasbandinfo_has_stats
SE_rasbandinfo_set_band_name
SE_rasbandinfo_set_band_number
SE_rasbandinfo_set_bin_function
SE_rasbandinfo_set_colormap
SE_rasbandinfo_set_compression_type
SE_rasbandinfo_set_pixel_type
SE_rasbandinfo_set_rascol_id
SE_rasbandinfo_set_max_level
SE_rasbandinfo_set_tile_size
SE_rasbandinfo_set_band_size
SE_rasbandinfo_set_extent
SE_rasbandinfo_set_statistics
SE_rascolinfo_create
SE_rascolinfo_free
SE_rascolinfo_get_access
SE_rascolinfo_get_coordref
SE_rascolinfo_get_creation_date
SE_rascolinfo_get_creation_keyword
SE_rascolinfo_get_description
SE_rascolinfo_get_gdbtype
SE_rascolinfo_get_id
SE_rascolinfo_get_minimum_id
SE_rascolinfo_get_raster_column
SE_rascolinfo_has_gdbtype
SE_rascolinfo_is_in_load_mode
SE_rascolinfo_set_coordref
SE_rascolinfo_set_creation_keyword
SE_rascolinfo_set_description
SE_rascolinfo_set_gdbtype
SE_rascolinfo_set_load_mode
SE_rascolinfo_set_minimum_id
SE_rascolinfo_set_raster_column
SE_rasconstraint_create
SE_rasconstraint_free
SE_rasconstraint_set_bands
SE_rasconstraint_set_envelope
SE_rasconstraint_set_level
SE_rasconstraint_set_interleave
SE_raster_add_band
SE_raster_create
SE_raster_delete
SE_raster_drop_band
SE_raster_get_bands
SE_raster_get_info_by_id
SE_rasterattr_create
SE_rasterattr_duplicate
SE_rasterattr_free
SE_rasterattr_get_compression_type
SE_rasterattr_get_extent
SE_rasterattr_get_extent_by_level
SE_rasterattr_get_image_size
SE_rasterattr_get_image_size_by_level
SE_rasterattr_get_max_level
SE_rasterattr_get_num_bands
SE_rasterattr_get_pixel_type
SE_rasterattr_get_pyramid_info
SE_rasterattr_get_rascol_id
SE_rasterattr_get_raster_id
SE_rasterattr_get_raster_info
SE_rasterattr_get_rasterband_info
SE_rasterattr_get_rasterband_info_list
SE_rasterattr_get_tile_origin
SE_rasterattr_get_tile_size
SE_rasterattr_set_callback
SE_rasterattr_set_colormap
SE_rasterattr_set_compression_type
SE_rasterattr_set_delete_area
SE_rasterattr_set_extent
SE_rasterattr_set_image_size
SE_rasterattr_set_mask_mode
SE_rasterattr_set_mosaic_mode
SE_rasterattr_set_pixel_type
SE_rasterattr_set_pyramid_info
SE_rasterattr_set_tile_size
SE_rasterband_alter
SE_rasterband_create
SE_rasterband_delete
SE_rasterband_free_info_list
SE_rasterband_get_info_by_id
SE_rasterband_get_info_list
SE_rastercolumn_alter
SE_rastercolumn_create
SE_rastercolumn_delete
SE_rastercolumm_free_info_list
SE_rastercolumn_get_info_by_id
SE_rastercolumn_get_info_by_name
SE_rastercolumn_get_info_list
SE_rastercolumn_grant_access
SE_rastercolumn_revoke_access
SE_rastercolumn_truncate
SE_rasterinfo_create
SE_rasterinfo_duplicate
SE_rasterinfo_free
SE_rasterinfo_get_description
SE_rasterinfo_get_rascol_id
SE_rasterinfo_set_description
SE_rasterinfo_set_rascol_id
SE_rasterinfo_get_raster_id
SE_rastileinfo_create
SE_rastileinfo_free
SE_rastileinfo_get_band_id
SE_rastileinfo_get_level
SE_rastileinfo_get_pixel_data
SE_rastileinfo_get_rowcol
SE_rastileinfo_set_band_id
SE_rastileinfo_set_level
SE_rastileinfo_set_pixel_data
SE_rastileinfo_set_rowcol
SE_registration_alter
SE_registration_create
SE_registration_delete
SE_registration_free_dependent_tables
SE_registration_free_info_list

SE_registration_get_difference_list
SE_registration_get_info
SE_registration_get_info_by_id
SE_registration_get_info_list
SE_registration_get_dependent_tables
SE_reginfo_allow_rowlocks
SE_reginfo_create
SE_reginfo_duplicate
SE_reginfo_free
SE_reginfo_get_access
SE_reginfo_get_creation_keyword
SE_reginfo_get_description
SE_reginfo_get_id
SE_reginfo_get_minimum_id
SE_reginfo_get_mv_view_name
SE_reginfo_get_reg_date
SE_reginfo_get_rowid_column
SE_reginfo_get_table_name
SE_reginfo_has_layer
SE_reginfo_has_locator
SE_reginfo_is_hidden
SE_reginfo_is_multiversion
SE_reginfo_is_view
SE_reginfo_set_creation_keyword
SE_reginfo_set_description
SE_reginfo_set_hidden
SE_reginfo_set_minimum_id
SE_reginfo_set_multiversion
SE_reginfo_set_rowid_allocation
SE_reginfo_set_rowid_column
SE_reginfo_set_rowlocks
SE_reginfo_set_table_name
SE_reginfo_set_view
SE_reginfo_set_locator

Back to the top

S

SE_shape_add_island
SE_shape_add_part
SE_shape_as_binary
SE_shape_as_line
SE_shape_as_point
SE_shape_as_polygon
SE_shape_as_simple_line
SE_shape_as_text
SE_shape_as_WKB
SE_shape_build
SE_shape_calculate_distance
SE_shape_change_coordref
SE_shape_change_path
SE_shape_clip
SE_shape_create
SE_shape_delete_island
SE_shape_delete_part
SE_shape_delete_point
SE_shape_delete_path
SE_shape_difference
SE_shape_duplicate
SE_shape_evaluate_CBM
SE_shape_extend_line
SE_shape_filter_coordinates
SE_shape_find_along
SE_shape_find_between
SE_shape_find_CBM_relation
SE_shape_find_relation
SE_shape_free
SE_shape_free_array
SE_shape_generate_buffer
SE_shape_generate_circle
SE_shape_generate_convex_hull
SE_shape_generate_ellipse
SE_shape_generate_from_binary
SE_shape_generate_from_part
SE_shape_generate_from_text
SE_shape_generate_from_WKB
SE_shape_generate_label_point
SE_shape_generate_line
SE_shape_generate_point
SE_shape_generate_polygon
SE_shape_generate_rectangle
SE_shape_generate_simple_line
SE_shape_get_3D_length
SE_shape_get_all_points
SE_shape_get_anno
SE_shape_get_area
SE_shape_get_binary_size
SE_shape_get_coordref
SE_shape_get_extent
SE_shape_get_length
SE_shape_get_Mrange
SE_shape_get_num_parts
SE_shape_get_num_points
SE_shape_get_num_subparts
SE_shape_get_points
SE_shape_get_text_size
SE_shape_get_type
SE_shape_get_WKB_size
SE_shape_get_Zrange
SE_shape_has_anno
SE_shape_insert_part
SE_shape_interpolate_by_measures
SE_shape_intersect
SE_shape_is_3D
SE_shape_is_containing
SE_shape_is_crossing
SE_shape_is_disjoint
SE_shape_is_equal
SE_shape_is_line
SE_shape_is_measured
SE_shape_is_multipart
SE_shape_is_nil
SE_shape_is_overlapping
SE_shape_is_point
SE_shape_is_polygon
SE_shape_is_simple_line
SE_shape_is_touching
SE_shape_is_within
SE_shape_make_nil
SE_shape_move_point
SE_shape_overlay
SE_shape_replace_part
SE_shape_replace_path_with_arc
SE_shape_set_anno
SE_shape_set_coordref
SE_shape_symmetrical_difference
SE_shape_union
SE_spatialref_alter
SE_spatialref_create
SE_spatialref_delete
SE_spatialref_free_info_list
SE_spatialref_get_info
SE_spatialref_get_info_list

SE_spatialrefinfo_create
SE_spatialrefinfo_duplicate
SE_spatialrefinfo_free
SE_spatialrefinfo_get_auth_name
SE_spatialrefinfo_get_auth_srid
SE_spatialrefinfo_get_coordref
SE_spatialrefinfo_get_description
SE_spatialrefinfo_get_srid
SE_spatialrefinfo_set_auth_name
SE_spatialrefinfo_set_auth_srid
SE_spatialrefinfo_set_coordref
SE_spatialrefinfo_set_description
SE_sql_construct_free
SE_sql_construct_alloc
SE_stable_add_shape
SE_stable_create
SE_stable_delete_shape
SE_stable_free
SE_stable_get_extent
SE_stable_get_num_shapes
SE_stable_get_shape
SE_stable_search
SE_stable_set_concurrency
SE_stable_size
SE_state_close
SE_state_compress_tree
SE_state_create
SE_state_delete
SE_state_delete_range
SE_state_free_info_list
SE_state_free_lock
SE_state_get_info
SE_state_get_info_list
SE_state_lock
SE_state_merge
SE_state_open
SE_state_trim_tree
SE_stateinfo_create
SE_stateinfo_duplicate
SE_stateinfo_free
SE_stateinfo_free_lineage
SE_stateinfo_get_closing_time
SE_stateinfo_get_creation_time
SE_stateinfo_get_id
SE_stateinfo_get_lineage
SE_stateinfo_get_owner
SE_stateinfo_get_parent
SE_stateinfo_is_open
SE_stream_bind_input_column
SE_stream_bind_output_column
SE_stream_calculate_layer_extent
SE_stream_calculate_layer_statistics
SE_stream_calculate_table_statistics
SE_stream_create
SE_stream_close
SE_stream_copy_state_rows
SE_stream_delete_from_table
SE_stream_delete_by_id_list
SE_stream_delete_row
SE_stream_describe_column
SE_stream_execute
SE_stream_fetch
SE_stream_fetch_row
SE_stream_flush_buffered_writes
SE_stream_free
SE_stream_get_connection
SE_stream_get_ext_error
SE_stream_get_spatial_masks
SE_stream_in_progress
SE_stream_insert_into_file
SE_stream_insert_table

SE_stream_last_inserted_raster_id
SE_stream_last_inserted_row_id
SE_stream_locate_table
SE_stream_num_result_column
SE_stream_prepare_sql
SE_stream_get_blob
SE_stream_get_double
SE_stream_get_date
SE_stream_get_float
SE_stream_get_integer
SE_stream_get_raster
SE_stream_get_raster_tile
SE_stream_get_shape
SE_stream_get_smallint
SE_stream_get_string
SE_stream_invoke_ssa
SE_stream_query
SE_stream_query_from_file
SE_stream_query_logfile
SE_stream_query_raster_tile
SE_stream_query_with_info
SE_stream_restore_rows
SE_stream_set_blob
SE_stream_set_date
SE_stream_set_double
SE_stream_set_float
SE_stream_set_integer
SE_stream_set_logfile
SE_stream_set_ouput_coordref
SE_stream_set_raster_constraint
SE_stream_set_row
SE_stream_set_rowlocking
SE_stream_set_shape
SE_stream_set_smallint
SE_stream_set_spatial_constraints
SE_stream_set_ssa_filter
SE_stream_set_state
SE_stream_set_string
SE_stream_set_write_mode
SE_stream_update_ordered
SE_stream_update_row
SE_stream_update_sdodim_table
SE_stream_update_table

Back to the top

T

SE_table_add_column
SE_table_add_locator
SE_table_add_rowlocks
SE_table_calculate_stats
SE_table_create
SE_table_create_index
SE_table_create_indexes
SE_table_create_mv_view
SE_table_create_primarykey_constraint
SE_table_create_unique_constraint
SE_table_create_view
SE_table_delete
SE_table_delete_constraint
SE_table_delete_index
SE_table_delete_locator
SE_table_delete_mv_view
SE_table_describe
SE_table_describe_indexes
SE_table_drop_column
SE_table_free_descriptions
SE_table_free_index_descriptions
SE_table_free_list
SE_table_free_locator_list
SE_table_free_lock
SE_table_free_locks
SE_table_free_rowlocks_list
SE_table_free_stats
SE_table_get_ids

SE_table_get_locator
SE_table_get_locator_list
SE_table_get_locks
SE_table_get_mvedit_states
SE_table_get_permissions
SE_table_get_rowlocks
SE_table_get_rowlocks_by_user
SE_table_grant_access
SE_table_list
SE_table_lock
SE_table_make_qualified_name
SE_table_metatdata_add
SE_table_metadata_alter
SE_table_metadata_delete
SE_table_metadata_delete_where
SE_table_metadata_free_info_list
SE_table_metadata_get_info_list
SE_table_parse_qualified_name
SE_table_remove_rowlocks
SE_table_rename
SE_table_return_ids
SE_table_revoke_access
SE_table_truncate
SE_table_update_dbms_stats
SE_trace_on
SE_trace_off

Back to the top

V

SE_version_alter
SE_version_change_state
SE_version_create
SE_version_delete
SE_version_free_info_list
SE_version_free_lock
SE_version_free_locks
SE_version_get_info
SE_version_get_info_by_id
SE_version_get_info_list
SE_version_get_locks
SE_version_lock
SE_version_rename
SE_versioninfo_create
SE_versioninfo_duplicate
SE_versioninfo_free
SE_versioninfo_get_access
SE_versioninfo_get_creation_time
SE_versioninfo_get_description
SE_versioninfo_get_id
SE_versioninfo_get_name
SE_versioninfo_get_parent_id
SE_versioninfo_get_parent_name
SE_versioninfo_get_state_id
SE_versioninfo_set_access
SE_versioninfo_set_description
SE_versioninfo_set_name
SE_versioninfo_set_parent_name
SE_versioninfo_set_state_id

Back to the top


Return codes

SE_SUCCESS (0)

The current operation completed successfully.

SE_FAILURE (-1)

A general ArcSDE system failure. Returned whenever the error is not trapped by a more specific indicator.

SE_INVALID_LAYERINFO_OBJECT (-2)

The pointer to SE_LAYERINFO is not initialized.

SE_NO_ANNOTATION (-3)

The given shape has no annotation.

SE_FINISHED (-4)

The current shape stream has finished successfully. If this code is returned from a shape stream initiation call, no shapes were found.

SE_SDE_NOT_STARTED (-5)

The call to start the ArcSDE was not executed or did not complete successfully. The ArcSDE server must be started before calling the function that returned this code.

SE_UNCHANGED (-6)

The specified shape was unchanged. If a shape modification function cannot correctly modify a shape, for whatever reason, it returns this code.

SE_TASKS_EXCEEDED (-7)

The number of allowed server tasks was exceeded and no more logins to the ArcSDE serverare allowed until a task completes. Returned by the SE_connection_create call only.

SE_CONNECTIONS_EXCEEDED (-7)

The number of allowed server connections was exceeded and no more logins to the ArcSDE server are allowed until a connection is closed. Returned by the SE_connection_create call only.

SE_LOGIN_NOT_ALLOWED (-8)

The ArcSDE I/O connection manager task has discontinued logins. No more logins to the ArcSDE server are allowed until an administrator changes the login mode. Returned by the SE_connection_create call only.

SE_INVALID_USER (-9)

The user attempting to access the ArcSDE server does not have a valid login account on the ArcSDE host machine. Returned by the SE_connection_create call only.

SE_NET_FAILURE (-10)

A catastrophic error occurred during a client/server round-trip request and the connection between the client task and the server was severed. Almost any call that makes a round-trip request to the ArcSDE server task can return this code.

SE_NET_TIMEOUT (-11)

Returned when the application that made the call cannot bind itself to the associated server task. Returned by the SE_connection_create call only.

SE_OUT_OF_SVMEM (-12)

The function failed to complete because the server process was unable to allocate the memory needed to perform the function.

SE_OUT_OF_CLMEM (-13)

The function failed to complete because the client could not allocate enough dynamic memory to complete the task.

SE_OUT_OF_CONTEXT (-14)

The call is somehow out of context or inappropriate. Under certain circumstances, some functions are illegal and are not allowed.

SE_NO_ACCESS (-15)

The caller does not have access to the specified object.

SE_TOO_MANY_LAYERS (-16)

Exceeded the maximum number of allowed layers as defined in giomgr.defs.

SE_NO_LAYER_SPECIFIED (-17)

The required layer specification is missing.

SE_LAYER_LOCKED (-18)

Returned from the layer-locking routines when the specified layer is already locked.

SE_LAYER_EXISTS (-19)

Returned from the layer creation function when the specified map layer already exists.

SE_LAYER_NOEXIST (-20)

The user-specified map layer does not exist.

SE_LAYER_INUSE (-21)

The function was prevented from performing its task because another user is using the layer.

SE_ROW_NOEXIST (-22)

The specified row doesn’t exist in the specified map layer. Returned by shape retrieval functions.

SE_ROW_EXISTS (-23)

An operation attempted to insert a shape into an existing row.

SE_LAYER_MISMATCH (-24)

For this operation, both layers must be the same.

SE_NO_PERMISSIONS (-25)

The caller does not have database permissions to perform the operation or function.

SE_INVALID_NOT_NULL (-26)

The specified column has a ‘NOT NULL’ constraint.

SE_INVALID_SHAPE (-27)

Returned when a shape cannot be verified as valid.

SE_INVALID_LAYER_NUMBER (-28)

The map layer number is outside the allowable range.

SE_INVALID_ENTITY_TYPE (-29)

A shape entity type is invalid or not allowed for the operation or function.

SE_INVALID_SEARCH_METHOD (-30)

The specified search method is not one of those defined.

SE_INVALID_ETYPE_MASK (-31)

The entity types or combinations in the entity type mask are invalid. Returned from the map layer creation routine.

SE_BIND_CONFLICT (-32)

A mismatch occurred in one of the bind/set/get functions.

SE_INVALID_GRIDSIZE (-33)

One of the specified grid sizes is either too small or too large. Returned from the map layer creation routine.

SE_INVALID_LOCK_MODE (-34)

The lock mode specified is not one of those supported.

SE_ETYPE_NOT_ALLOWED (-35)

The entity type of the shape is not one of the types allowed by the map layer definition. Returned from the store and replace shape routines.

SE_INVALID_NUM_OF_PTS (-36)

There are more points than allowed by the specified maximum points.

SE_TABLE_NOEXIST (-37)

The specified DBMS table does not exist.

SE_ATTR_NOEXIST (-38)

Returned from functions that attempt to access a column that does not exist. Sometimes returned after misspelling the name of the column.

SE_LICENSE_FAILURE (-39)

A problem exists with the license manager.

SE_OUT_OF_LICENSES (-40)

All ArcSDE licenses are in use.

SE_INVALID_COLUMN_VALUE (-41)

The specified value exceeds the valid range for the column.

SE_INVALID_WHERE (-42)

The user-specified SQL where clause is invalid. The caller should confirm that the syntax and attribute names are correct. This is an old return code; use the new ‘INVALID_SQL’ return code instead.

SE_INVALID_SQL (-42)

The user-specified SQL where clause is invalid. In most cases, returned because of syntax problems in the SQL string. You can call the extended error code immediately after this code is returned to inquire about the specific database error code.

SE_LOG_NOEXIST (-43)

The named logfile does not exist.

SE_LOG_NOACCESS (-44)

The caller does not have permission to access the specified logfile.

SE_LOG_NOTOPEN (-45)

Returned from logfile I/O functions when the specified logfile handle is not open.

SE_LOG_IO_ERROR (-46)

A logfile I/O operation resulted in an error. The caller can check the extended error code to get the ‘errno’ value.

SE_NO_SHAPES (-47)

The function found no shapes to process. Usually returned because an empty logfile was specified.

SE_NO_LOCKS (-48)

No locks were found for the specified map layer. The caller may have specified lock modifications for a layer that does not have any locks defined.

SE_LOCK_CONFLICT (-49)

The lock request was not granted because the request conflicted with another user’s lock.

SE_OUT_OF_LOCKS (-50)

No more locks can be granted because all system lock resources are being used. Also returned from functions that automatically impose locks to complete their tasks.

SE_DB_IO_ERROR (-51)

A database-level I/O error occurred. You can call the extended error code immediately after this code is returned to inquire about the specific database error code.

SE_STREAM_IN_PROGRESS (-52)

The function cannot be executed during a stream shape retrieval. Close the stream before calling this function.

SE_INVALID_COLUMN_TYPE (-53)

The user specified an invalid data type for a column definition.

SE_TOPO_ERROR (-54)

At least one of the shapes processed by the function violated one of the topological integrity rules. Returned from functions that to complete successfully require the topological integrity of shapes.

SE_ATTR_CONV_ERROR (-55)

Returned from the attribute mask function when an unsupported DBMS data type is encountered.

SE_INVALID_COLUMN_DEF (-56)

The user specified an invalid column definition. For example, the user specifies a size of -1 for a column.

SE_INVALID_SHAPE_BUF_SIZE (-57)

The user specified an invalid shape array buffer size.

SE_INVALID_ENVELOPE (-58)

An invalid envelope was specified. Returned when the envelope is NULL, has negative values, or a minimum value is larger than a maximum value.

SE_TEMP_IO_ERROR (-59)

Returned from functions that use temporary system files to perform their tasks. Indicates temporary file permission problems, inadequate disk space, or general temporary file I/O error conditions.

SE_GSIZE_TOO_SMALL (-60)

Storing the shape would create too many grid records which suggests that the grid size for the target map layer is too small. Returned from functions that store or replace shapes.

SE_LICENSE_EXPIRED (-61)

The run-time license for the ArcSDE installation on the specified server has expired. See the system administrator to update the ArcSDE license. Returned from the SE_connection_create function only.

SE_TABLE_EXISTS (-62)

Returned from the table creation function when the specified database table already exists.

SE_INDEX_EXISTS (-63)

Returned from the attribute index creation functions when an attribute index already exists.

SE_INDEX_NOEXIST (-64)

The specified index does not exist.

SE_INVALID_POINTER (-65)

Returned by functions that are passed pointers to data that are either NULL or invalid.

SE_INVALID_PARAM_VALUE (-66)

Returned from a function that was given an invalid parameter value. The function is unable to continue.

SE_ALL_SLIVERS (-67)

Returned by an overlay function that reduces all shapes to slivers, yielding no results. In most cases, you can adjust the sliver factor to fix this problem.

SE_TRANS_IN_PROGRESS (-68)

A user-initiated transaction is currently in progress. The operation cannot be performed until the transaction is committed or rolled back.

SE_IOMGR_NO_DBMS_CONNECT (-69)

The iomgr has lost its connection to the underlying DBMS.

SE_DUPLICATE_ARC (-70)

An attempt was made to store or replace a shape where the arc (startpt, midpt, endpt) already exists.

SE_INVALID_ANNO_OBJECT (-71)

The given annotation object handle is invalid.

SE_PT_NO_EXIST (-72)

The user-specified point does not exist in the associated map shape.

SE_PTS_NOT_ADJACENT (-73)

The two given points are not adjacent in the associated map shape.

SE_INVALID_MID_PT (-74)

The point given as a midpoint along a path is invalid or does not exist.

SE_INVALID_END_PT (-75)

The specified endpoint is invalid or cannot be located within the associated shape.

SE_INVALID_RADIUS (-76)

The given radius was too small to perform the operation.

SE_LOAD_ONLY_LAYER (-77)

The operation cannot be performed because the specified map layer is in LOAD_ONLY mode.

SE_LAYERS_NOT_FOUND (-78)

The LAYERS table does not exist.

SE_FILE_IO_ERROR (-79)

An error occurred when creating or writing to an output file.

SE_BLOB_SIZE_TOO_LARGE (-80)

An attempt is made to store a BLOB that exceeds the maximum allowable size of the ArcSDE server as specified by the MAXBLOBSIZE parameter of the giomgr.defs file.

SE_CORRIDOR_OUT_OF_BOUNDS (-81)

The specified source shape and corridor distance would result in a corridor with coordinates that exceed the valid coordinate range.

SE_SHAPE_INTEGRITY_ERROR (-82)

Returned by low-level code indicating an error in the integrity of a shape.

SE_NOT_IMPLEMENTED_YET (-83)

The specified function is not implemented yet but is intended for a future release.

SE_CAD_EXISTS (-84)

The shape has a CAD entity.

SE_INVALID_TRANSID (-85)

The specified internal ArcSDE Transaction ID is invalid.

SE_INVALID_LAYER_NAME (-86)

The table name entered for the layer definition is invalid. Valid table names must not be NULL.

SE_INVALID_LAYER_KEYWORD (-87)

The specified layer configuration keyword does not exist in the dbtune.sde configuration parameter file.

SE_INVALID_RELEASE (-88)

The release/version of the client application does not match the installed release/version of the ArcSDE server, or the installed release/version of the ArcSDE software does not match the release/version of the ArcSDE datasets. If the datasets are older than the ArcSDE server, you can update them with the admversion administration tool.

SE_VERSION_TBL_EXISTS (-89)

The VERSION table exists when it should not. This error occurs when you attempt to upgrade a server and the VERSION table already exists.

SE_COLUMN_NOT_BOUND (-90)

A column was specified for an insert/update operation but was not bound (by calling SE_stream_bind_input_column), or the value was not set at the time of execution.

SE_INVALID_INDICATOR_VALUE (-91)

Returned during the execution of an insert or update operation for a column that was bound by reference (by calling SE_stream_bind_input_column) and the value of the indicator variable was neither IS_NOT_NULL_VALUE nor IS_NULL_VALUE.

SE_INVALID_CONNECTION (-92)

An invalid or NULL SE_CONNECT connection handle was passed to an ArcSDE function.

SE_INVALID_DBA_PASSWORD (-93)

An invalid DBA password was passed to an ArcSDE function.

SE_PATH_NOT_FOUND (-94)

The specified path was not found.

SE_SDEHOME_NOT_SET (-95)

The SDEHOME variable is not set and is needed for this operation.

SE_NOT_TABLE_OWNER (-96)

The user must be the owner of the table.

SE_PROCESS_NOT_FOUND (-97)

The specified process ID does not correspond to an ArcSDE server.

SE_INVALID_DBMS_LOGIN (-98)

The DBMS did not accept the username or password that was passed to an ArcSDE function.

SE_PASSWORD_TIMEOUT (-99)

The timestamp of the password received was sent more than MAXTIMEDIFF seconds earlier.

SE_INVALID_SERVER (-100)

The server machine was not found.

SE_IOMGR_NOT_AVAILABLE (-101)

The I/O manager is not started. Log in as the ArcSDE administrator and use the sdemon administration tool to determine the status of the I/O manager.

SE_SERVICE_NOT_FOUND (-102)

ArcSDE was unable to locate the appropriate entry in the /etc/services file. See your ArcSDE system administrator.

SE_INVALID_STATS_TYPE (-103)

Tried statistics on a nonnumeric column.

SE_INVALID_DISTINCT_TYPE (-104)

Tried distinct statistics on an invalid type.

SE_INVALID_GRANT_REVOKE (-105)

Invalid use of the grant/revoke functions.

SE_INVALID_SDEHOME (-106)

The supplied SDEHOME path is invalid or NULL.

SE_INVALID_STREAM (-107)

An invalid stream (SE_STREAM) handle was detected.

SE_TOO_MANY_STREAMS (-108)

An attempt was made to create a stream, but the connection already has the maximum number of streams specified by the giomgr.defs parameter MAXSTREAMS.

SE_OUT_OF_MUTEXES (-109)

Exceeded system’s maximum number of mutexes. Involved in concurrency issues.

SE_CONNECTION_LOCKED (-110)

The connection is locked to a different thread.

SE_CONNECTION_IN_USE (-111)

This connection is being used currently by another thread.

SE_NOT_A_SELECT_STATEMENT (-112)

Returned when trying to describe a prepared SQL statement that was not a query.

SE_FUNCTION_SEQUENCE_ERROR (-113)

A function was called out of sequence. For example, SE_stream_fetch was called before executing the stream with SE_stream_execute.

SE_WRONG_COLUMN_TYPE (-114)

Returned when trying to set or get the value of a column in a stream using the wrong column type. For example, calling SE_stream_get_integer on a column that is an SE_FLOAT.

SE_PTABLE_LOCKED (-115)

The specified point table is locked to a different thread.

SE_PTABLE_IN_USE (-116)

The point table is being used at the moment by another thread.

SE_STABLE_LOCKED (-117)

The specified shape table is locked to a different thread.

SE_STABLE_IN_USE (-118)

The shape table is being used at the moment by another thread.

SE_INVALID_FILTER_TYPE (-119)

An invalid value is specified in the filter_type field of the SE_FILTER structure.

SE_NO_CAD (-120)

The shape doesn’t have a CAD entity.

SE_INSTANCE_NOT_AVAILABLE (-121)

No instance is running on the specified server.

SE_INSTANCE_TOO_EARLY (-122)

The specified instance is a version older than 2.0.

SE_INVALID_SYSTEM_UNITS (-123)

The specified systems units were < 1 or > 2147483647.

SE_INVALID_UNITS (-124)

The specified units were not feet, meters, decimal_degrees or other.

SE_INVALID_CAD_OBJECT (-125)

The SE_CAD pointer is not initialized.

SE_VERSION_NOEXIST (-126)

The specified version doesn’t exist.

SE_INVALID_SPATIAL_CONSTRAINT (-127)

A set of spatial filters is supplied to SE_stream_set_spatial_constraints with an SE_SPATIAL_FIRST search order, but all the filters have their truth set to FALSE. This prevents ArcSDE from using its spatial index.

SE_INVALID_STREAM_TYPE (-128)

A stream function is called that is not applicable to the given stream. For example, a call to SE_stream_set_integer on a query_layer stream.

SE_INVALID_SPATIAL_COLUMN (-129)

The specified column contained NOT NULL values during SE_layer_create.

SE_NO_SPATIAL_MASKS (-130)

SE_stream_get_spatial_masks was called on a query stream with no spatial masks.

SE_IOMGR_NOT_FOUND (-131)

The iomgr program was not found.

SE_SYSTEM_IS_CLIENT_ONLY (-132)

The specified operation must be run on the server.

SE_MULTIPLE_SPATIAL_COLS (-133)

Only one spatial column is allowed for this operation.

SE_INVALID_SHAPE_OBJECT (-134)

The given shape object handle is invalid.

SE_INVALID_PARTNUM (-135)

The specified shape part number does not exist.

SE_INCOMPATIBLE_SHAPES (-136)

The given shapes are of incompatible types.

SE_INVALID_PART_OFFSET (-137)

The specified part offset is invalid.

SE_INCOMPATIBLE_COORDREFS (-138)

The given coordinate reference systems are incompatible.

SE_COORD_OUT_OF_BOUNDS (-139)

The specified coordinate exceeds the valid coordinate range.

SE_LAYER_CACHE_FULL (-140)

The maximum number of layers was exceeded in the cache.

SE_INVALID_COORDREF_OBJECT (-141)

The given coordinate reference object handle is invalid.

SE_INVALID_COORDSYS_ID (-142)

The coordinate system identifier is invalid.

SE_INVALID_COORDSYS_DESC (-143)

The coordinate system description is invalid.

SE_INVALID_ROW_ID_LAYER (-144)

The SE_ROW_ID owner.table does not match the specified layer.

SE_PROJECTION_ERROR (-145)

An error occurred while projecting the shape.

SE_ARRAY_BYTES_EXCEEDED (-146)

The value of the max_array_size set in SE_STREAM_SPEC is larger than the MAXARRAYBYTES value in the giomgr.defs file.

SE_POLY_SHELLS_OVERLAP (-147)

Two donuts or two outer shells of a polygon overlap.

SE_TOO_FEW_POINTS (-148)

The number of points is less than the number required for a shape.

SE_INVALID_PART_SEPARATOR (-149)

A part separator is in the wrong position.

SE_INVALID_POLYGON_CLOSURE (-150)

The polygon does not close properly.

SE_INVALID_OUTER_SHELL (-151)

The polygon outer shell does not completely enclose all the donuts in a part of the shape.

SE_ZERO_AREA_POLYGON (-152)

The polygon shell has no area.

SE_POLYGON_HAS_VERTICAL_LINE (-153)

The area shape contains a vertical line.

SE_OUTER_SHELLS_OVERLAP (-154)

The multipart area shape has overlapping parts.

SE_SELF_INTERSECTING (-155)

A simple line or polygon boundary intersects itself.

SE_INVALID_EXPORT_FILE (-156)

The specified export file is invalid.

SE_READ_ONLY_SHAPE (-157)

Attempted to modify or free a read-only shape from a shape table.

SE_INVALID_DATA_SOURCE (-158)

The specified data source (or database) is invalid.

SE_INVALID_STREAM_SPEC (-159)

A stream specification parameter exceeds the giomgr.defs default.

SE_INVALID_ALTER_OPERATION (-160)

An attempt was made to alter a layer in an illegal manner. For example, if a layer allows annotations, you can’t change the layer to disallow them.

SE_INVALID_SPATIAL_COL_NAME (-161)

The specified spatial column name is the same as the table name. Returned by SE_layerinfo_set_spatial_column.

SE_INVALID_DATABASE (-162)

The specified database (or data source) name is invalid. Returned by SE_connection_create.

SE_SPATIAL_SQL_NOT_INSTALLED (-163)

A required spatial SQL extension isn’t present in the underlying DBMS.

SE_NORM_DIM_INFO_NOT_FOUND (-164)

Obsolete 3.0.2 error code. The dimension parameters for an Spatial Database Option (SDO) table were not found in the dbtune.sde file. Add the parameters to the ##DEFAULTS or another keyword’s section before trying to recreate the SDO layer. (Oracle® specific)

SE_NORM_DIM_TAB_VALUE_NOT_FOUND (-165)

Obsolete 3.0.2 error code. The dimension parameters in the SDODIM table for an SDO table were not found or are corrupted. (Oracle specific)

SE_UNSUPPORTED_NORMALIZED_OPERATION (-166)

Obsolete 3.0.2 error code. The requested operation is not supported for normalized layers. (Oracle specific)

SE_INVALID_REGISTERED_LAYER_OPTION (-167)

Obsolete 3.0.2 error code. Returned if an SDO layer is registered in the ArcSDE LAYERS table, but wasn't created by the ArcSDE software. Usually returned when trying to change a layer between normal and load–only modes. (Oracle specific)

SE_READ_ONLY (-168)

Returned if a user tries to insert or update a value into SE_ROW_ID column.

SE_NO_SDE_ROWID_COLUMN (-169)

The current table doesn’t have an ArcSDE-maintained rowid column.

SE_READ_ONLY_COLUMN (-170)

The column is maintained by the ArcSDE software and isn’t user-modifiable.

SE_INVALID_VERSION_NAME (-171)

Illegal or blank version name.

SE_STATE_NOEXIST (-172)

The specified state is not in the VERSION_STATES table.

SE_INVALID_STATEINFO_OBJECT (-173)

The SE_STATEINFO object isn’t initialized.

SE_VERSION_HAS_MOVED (-174)

Attempted to change the state of a version, but it’s already changed.

SE_STATE_HAS_CHILDREN (-175)

Tried to open a state which has children.

SE_PARENT_NOT_CLOSED (-176)

To create a new state, the parent state must be closed.

SE_VERSION_EXISTS (-177)

The specified version already exists.

SE_TABLE_NOT_MULTIVERSION (-178)

Attempted an operation on a table that isn't multiversion.

SE_STATE_USED_BY_VERSION (-179)

You can’t delete a state that’s being used by a version.

SE_INVALID_VERSIONINFO_OBJECT (-180)

The VERSIONINFO object hasn’t been initialized.

SE_INVALID_STATE_ID (-181)

The state ID is out of range or doesn’t exist.

SE_SDETRACELOC_NOT_SET (-182)

The SDETRACELOC environment variable isn’t set.

SE_ERROR_LOADING_SSA (-183)

A problem occurring when loading the server-side application.

SE_TOO_MANY_STATES (-184)

This operation has more states than can fit in an SQL statement.

SE_STATES_ARE_SAME (-185)

The function takes two different states, but the same one was given twice.

SE_NO_ROWID_COLUMN (-186)

The table doesn’t have a usable row ID column.

SE_NO_STATE_SET (-187)

The state must be set before calling the function.

SE_SSA_FUNCTION_ERROR (-188)

An error occurred while executing a server-side application function.

SE_INVALID_REGINFO_OBJECT (-189)

The REGINFO object hasn’t been initialized.

SE_NO_COMMON_LINEAGE (-190)

Attempted to trim between states on different lineage branches.

SE_STATE_INUSE (-191)

The specified state is currently being modified.

SE_STATE_TREE_INUSE (-192)

A lock was requested for a state tree but one or more of the states is already locked.

SE_INVALID_RASTER_COLUMN (-193)

The raster column has non-NULL values or is being used as a row_id column.

SE_RASTERCOLUMN_EXISTS (-194)

A raster column already exists.

SE_INVALID_MVTABLE_INDEX (-195)

Unique indexes are not allowed on multiversion tables.

SE_INVALID_STORAGE_TYPE (-196)

Invalid layer storage type.

SE_AMBIGUOUS_NIL_SHAPE (-197)

No SQL type provided when converting a NIL shape to text.

SE_INVALID_BYTE_ORDER (-198)

Invalid byte order for well-known binary shape.

SE_INVALID_GEOMETRY_TYPE (-199)

The shape type in the given shape is not a valid geometry type.

SE_INVALID_NUM_MEASURES (-200)

The number of measures in the shape must be zero or equal to the number of points.

SE_INVALID_NUM_PARTS (-201)

The number of parts in the shape is incorrect for its geometry type.

SE_BINARY_TOO_SMALL (-202)

The memory allocated for a ESRI binary shape is too small.

SE_SHAPE_TEXT_TOO_LONG (-203)

Shape text representation exceeds the maximum allowed string length.

SE_SHAPE_TEXT_ERROR (-204)

A syntax error exists in the supplied shape text representation.

SE_TOO_MANY_PARTS (-205)

Number of parts in the shape is more than expected for the givenshape text representation.

SE_TYPE_MISMATCH (-206)

Shape's SQL type is not as expected when constructing the shape from the text representation.

SE_SQL_PARENTHESIS_MISMATCH (-207)

Found a parenthesis mismatch when parsing the shape text representation.

SE_NIL_SHAPE_NOT_ALLOWED (-208)

A NIL shape is not allowed in a well-known binary representation.

SE_INSTANCE_ALREADY_RUNNING (-209)

Tried to start an already running ArcSDE instance.

SE_UNSUPPORTED_OPERATION (-210)

The requested operation is unsupported.

SE_INVALID_EXTERNAL_LAYER_OPTION (-211)

An invalid request was made on an external layer. Replaced the SE_INVALID_REGISTERED_LAYER_OPTION return code.

SE_NORMALIZE_VALUE_NOT_FOUND (-212)

The dimension parameters for a normalized layer table were not found.

SE_INVALID_QUERY_TYPE (-213)

The query type is invalid.

SE_NO_TRACE_LIBRARY (-214)

The library doesn’t contain any trace functions.

SE_TRACE_ON (-215)

Tried to start tracing but it’s already enabled.

SE_TRACE_OFF (-216)

Tried to stop tracing but it’s already disabled.

SE_SCL_SYNTAX_ERROR (-217)

Shape comparison language statement couldn’t be interpreted by the SCL compiler.

SE_TABLE_REGISTERED (-218)

The table is already registered.

SE_INVALID_REGISTRATION_ID (-219)

The registration ID is out of range.

SE_TABLE_NOREGISTERED (-220)

The table is not registered.

SE_TOO_MANY_REGISTRATIONS (-221)

The number of registered tables has exceeded the max_registrations value.

SE_DELETE_NOT_ALLOWED (-222)

The object can’t be deleted because other objects depend on it.

SE_ROW_LOCK_ENABLED (-223)

The row lock is already enabled.

SE_ROW_LOCK_NOT_ENABLED (-224)

The row lock is already disabled.

SE_RASTERCOLUMN_INUSE (-225)

Another user is using the requested raster column.

SE_RASTERCOLUMN_NOEXIST (-226)

The specified raster column doesn’t exist.

SE_INVALID_RASTERCOLUMN_NUMBER (-227)

The specified raster column number is out of range or doesn’t exist.

SE_TOO_MANY_RASTERCOLUMNS (-228)

The maximum number of raster columns was exceeded.

SE_INVALID_RASTER_NUMBER (-229)

The specified raster number is out of range.

SE_NO_REQUEST_STATUS (-230)

The status of the request can't be determined.

SE_NO_REQUEST_RESULTS (-231)

Can't open the request results.

SE_RASTERBAND_EXISTS (-232)

The specified raster band already exists.

SE_RASTERBAND_NOEXIST (-233)

The specified raster band doesn’t exist.

SE_RASTER_EXISTS (-234)

The specified raster already exists.

SE_RASTER_NOEXIST (-235)

The specified raster doesn’t exist.

SE_TOO_MANY_RASTERBANDS (-236)

The maximum allowed number of raster bands was exceeded.

SE_TOO_MANY_RASTERS (-237)

The maximum allowed number of rasters was exceeded.

SE_VIEW_EXISTS (-238)

The specified DBMS view already exists.

SE_VIEW_NOEXIST (-239)

The specified DBMS view doesn’t exist.

SE_LOCK_EXISTS (-240)

The specified lock record already exists.

SE_ROWLOCK_MASK_CONFLICT (-241)

A conflict exists in the row locking mask.

SE_NOT_IN_RASTER (-242)

The specified raster band is not in a raster.

SE_INVALID_RASBANDINFO_OBJECT (-243)

The specified RASBANDINFO object doesn’t exist.

SE_INVALID_RASCOLINFO_OBJECT (-244)

The specified RASCOLINFO object doesn’t exist.

SE_INVALID_RASTERINFO_OBJECT (-245)

The specified RASTERINFO object doesn’t exist.

SE_INVALID_RASTERBAND_NUMBER (-246)

The specified raster band number is out of range or doesn’t exist.

SE_MULTIPLE_RASTER_COLS (-247)

Only one raster column is allowed.

SE_TABLE_SCHEMA_IS_LOCKED (-248)

The specified table is already locked.

SE_INVALID_LOGINFO_OBJECT (-249)

The SE_LOGINFO pointer isn’t initialized.

SE_SQL_TOO_LONG (-250)

The operation generated a SQL statement that is too long for the internal buffers or the underlying DBMS. Could possibly occur with difference detection or versioned queries.

SE_UNSUPPORTED_ON_VIEW (-251)

The operation isn’t supported with views.

SE_LOG_EXISTS (-252)

The specified logfile already exists.

SE_LOG_IS_OPEN (-253)

The specified logfile is open.

SE_SPATIALREF_EXISTS (-254)

The specified spatial reference entry already exists.

SE_SPATIALREF_NOEXIST (-255)

The specified spatial reference entry doesn’t exist.

SE_SPATIALREF_IN_USE (-256)

The specified spatial reference entry is in use by one or more layers.

SE_INVALID_SPATIALREFINFO_OBJECT (-257)

The SE_SPATIALREFINFO object isn’t initialized.

SE_SEQUENCENBR_EXISTS (-258)

The raster band squence number already exists.

SE_INVALID_QUERYINFO_OBJECT (-259)

The SE_QUERYINFO object isn’t initialized.

SE_QUERYINFO_NOT_PREPARED (-260)

The SE_QUERYINFO object hasn’t been prepared for a query.

SE_INVALID_RASTILEINFO_OBJECT (-261)

The SE_RASTILEINFO object isn’t initialized.

SE_INVALID_RASCONSTRAINT_OBJECT (-262)

The SE_RASCONSTRAINT object isn’t initialized.

SE_INVALID_METADATA_RECORD_ID (-263)

The record ID number doesn’t exist or is invalid.

SE_INVALID_METADATA_OBJECT (-264)

The SE_METADATAINFO object isn’t initialized.

SE_INVALID_METADATA_OBJECT_TYPE (-265)

The meta-data object type isn’t supported.

SE_SDEMETADATA_NOT_FOUND (-266)

The SDEMETADATA table doesn't exist.

SE_METADATA_RECORD_NOEXIST (-267)

The meta-data record doesn’t exist.

SE_GEOMETRYCOL_NOEXIST (-268)

The geometry entry doesn’t exist.

SE_INVALID_FILE_PATH (-269)

The file path either doesn’t exist, is too long (>512 characters), or contains invalid characters. Returned by SE_connection_create when checking SDEHOME or a path to a database.

SE_INVALID_LOCATOR_OBJECT_TYPE (-270)

The locator object is not initialized.

SE_INVALID_LOCATOR (-271)

The table doesn't have an associated locator.

SE_TABLE_HAS_NO_LOCATOR (-272)

The locator is not valid.

SE_INVALID_LOCATOR_CATEGORY (-273)

The locator category isn't specified.

SE_INVALID_LOCATOR_NAME (-274)

The locator name is invalid.

SE_LOCATOR_NOEXIST (-275)

The locator doesn't exist.

SE_LOCATOR_EXISTS (-276)

The locator already exists.

SE_INVALID_LOCATOR_TYPE (-277)

The locator type is unsupported.

SE_NO_COORDREF (-278)

The coordinate reference isn’t defined.

SE_CANT_TRIM_RECONCILED_STATE (-279)

You can’t trim past an already reconciled state.

SE_FILE_OBJECT_NOEXIST (-280)

The fileinfo object doesn’t exist.

SE_FILE_OBJECT_EXISTS (-281)

The fileinfo object already exists.

SE_INVALID_FILEINFO_OBJECT (-282)

The fileinfo object isn’t initialized.

SE_INVALID_FILEINFO_OBJECT_TYPE (-283)

The fileinfo object type isn’t supported.

SE_RASTERBAND_NO_STATS (-284)

Statistics aren’t available for this raster band.

SE_VERSION_HAS_CHILDREN (-285)

You can’t delete a version that has child versions.

SE_SQLTYPE_UNSUPPORTED_ETYPE (-286)

SQL type doesn’t support annotation or CAD entities at the current release.

SE_NO_DBTUNE_FILE (-287)

The dbtune.sde file is missing or unreadable.

SE_LOG_SYSTABLES_CREATE_FAILED (-288)

The logfile system tables don’t exist or could not be created when the ArcSDE server was started.

SE_OBJECT_RESTRICTED (-289)

This application can’t perform the operation on the specified object.

SE_INVALID_GEOGTRAN_OBJECT (-290)

The given geographic transformation object is invalid.

SE_COLUMN_EXISTS (-291)

The specified column already exists.

SE_SQL_KEYWORD (-292)

The specified SQL keyword doesn’t exist or is invalid.

SE_INVALID_OBJECTLOCKINFO_OBJECT (-293)

The specified objectlock handle is invalid.

SE_RASTERBUFFER_TOO_SMALL (-294)

The raster buffer size is not large enough.

SE_INVALID_RASTER_DATA (-295)

The specified raster data is invalid.

SE_OPERATION_NOT_ALLOWED (-296)

The specified operation is not allowed.

SE_INVALID_RASTERATTR_OBJECT (-297)

The specified SE_RASATTR object isn’t initialized or is invalid.

SE_INVALID_VERSION_ID (-298)

The specified version ID is invalid.

SE_MVTABLE_CANT_BE_LOAD_ONLY (-299)

You can’t put a multiversion table into load-only mode or make a load-only table multiversioned.

SE_INVALID_SDO_GEOM_METADATA_OBJ (-300)

The user-supplied table or column is invalid.

SE_ROW_OUT_OF_SEQUENCE (-301)

The next row was not the expected row.

SE_INSTANCE_IS_READ_ONLY (-302)

The ArcSDE instance is read-only.

SE_MOSAIC_NOT_ALLOWED (-303)

Image mosaicking is not allowed.

SE_INVALID_RASTER_BITMAP (-304)

The raster bitmap object is invalid.

SE_SEQUENCENBR_NOEXIST (-305)

The specified band sequence number does not exist.

SE_SQLTYPE_INVALID_FEATURE_TYPE (-306)

The feature type (i.e., rect, arc, circle) is an invalid SQLTYPE.

SE_DBMS_OBJECTS_NOT_SUPPORTED (-307)

DBMS Objects (Spatial, ADT's not supported

SE_BINARY_CONV_NO_COLUMNS_FOUND (-308)

No columns found for binary onversion (LOB/LONGRAW)

SE_RASTERBAND_NO_COLORMAP (-309)

The raster band has no colormap.

SE_INVALID_BIN_FUNCTION (-310)

Invalid raster band bin function.

SE_INVALID_RASTERBAND_STATS (-311)

Invalid raster band statistics.

SE_INVALID_RASTERBAND_COLORMAP (-312)

Invalid raster band colormap.

SE_INVALID_RASTER_KEYWORD (-313)

Invalid raster layer configuration keyword.

SE_INCOMPATIBLE_INSTANCE (-314)

This sort of iomgr can't run on this sort of instance.

SE_INVALID_VOLUME_INFO (-315)

Export file's volume info is invalid.

SE_INVALID_COMPRESSION_TYPE (-316)

Invalid compression type.

SE_INVALID_INDEX_PARAM (-317)

Invalid index parameter.

SE_INVALID_INDEX_TYPE (-318)

Invalid index type.

SE_SET_VALUE_CONFLICT (-319)

Try to set conflicting value in object.

SE_ADT_DATATYPE_NOT_SUPPORTED (-320)

Abstract Data types not supported.

SE_NO_SPATIAL_INDEX (-321)

No spatial index.

SE_INVALID_IDENTIFIER (-322)

Name not valid for DBMS.

SE_REGISTERED_TABLE_ROWID_EXIST (-323)

ROWID for Oracle Spatial table already exists.

SE_SERVER_LIB_LOAD_ERROR (-324)

gsrvr dll for direct could not be loaded.

SE_REGISTRATION_NOT_ALLOWED (-325)

The table can not be registered.

SE_UNSUPPORTED_ON_MVTABLE (-326)

Operation not supported on multiversion table.

SE_SDE_WARNING (-1000)

Returned by functions that completed successfully but made changes of which the caller needs to be aware. This return code should not be considered a fatal error by the application program.

SE_ETYPE_CHANGED (-1001)

The function completed successfully but it changed the entity type of the shape.

SE_NO_ROWS_DELETED (-1002)

No rows were deleted.

SE_TOO_MANY_DISTINCTS (-1003)

The user tried to perform an SE_DISTINCT_STATS statistic and the resulting number of distinct values exceeds the maximum number allowed. The maximum allowed is the lesser of MAX_DISTINCT (giomgr.defs) and the max_distinct argument in SE_table_calculate_stats.

SE_NULL_VALUE (-1004)

Returned by the SE_stream_get_<data_type> functions when the given column has a NULL value in the current row.

SE_NO_ROWS_UPDATED (-1005)

Returned during an update operation when no rows satisfied the user’s where clause.

SE_NO_CPGCVT (-1006)

No codepage conversion.

SE_NO_CPGHOME (-1007)

Cannot find the codepage directory.

SE_DBMS_DOES_NOT_SUPPORT (-1008)

The DBMS doesn’t support this function.

SE_INVALID_FUNCTION_ID (-1009)

The DBMS function ID is invalid. Returned by SE_connection_get_dbms_function.

SE_LAYERS_UPDATE_FAILED (-1010)

The layer extent couldn’t be updated.

SE_NO_LOCALIZED_MESSAGE (-1011)

No localized error messages are available.

The following status codes are found in the giomgr.log file when a connection exits (as opposed to going down on a signal or with an exception code. Those are documented in the operating system documentation).

SE_EXIT_SUCCESS 0

SE_EXIT_INVALID_COMMAND_LINE 1

SE_EXIT_IOMGR_IO_ERROR 2

SE_EXIT_DBMS_CONNECT_REJECTED 3

SE_EXIT_SHARED_MEMORY_ERROR 4

SE_EXIT_MALLOC_ERROR 5

SE_EXIT_CLIENT_IO_ERROR 6

SE_EXIT_LOGFILE_INIT_FAILED 7

SE_EXIT_LOST_CLIENT 8

SE_EXIT_BAD_COMMAND_CODE 9

SE_EXIT_REGISTRY_INIT_FAILED 10

SE_EXIT_LAYERS_INIT_FAILED 11

SE_EXIT_METADATA_INIT_FAILED 12

SE_EXIT_RASTER_INIT_FAILED 13

SE_EXIT_VERSION_INIT_FAILED 14

SE_EXIT_LOCATOR_INIT_FAILED 15

SE_EXIT_NO_LOCALIZED_MESSAGE 16


sdeerno

/* $Id: sdeerno.h,v 1.116 1999/10/22 22:11:50 peter Exp $ */
/***********************************************************************
*
*N {sdeerno.h} -- SDE Error Numbers
*
*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
*P Purpose:
*
*
* Copyright 1992-1999, Environmental Systems Research Institute, Inc.
* All rights reserved. This software is provided with RESTRICTED AND
* LIMITED RIGHTS. Use, duplication, or disclosure by the Government
* is subject to restrictions as set forth in FAR 52.227-14 (JUN 1987)
* Alternate III (g) (3) (JUN 1987), FAR 52.227-19 (JUN 1987), or
* DFARS 252.227-7013 (c) (1) (ii) (OCT 1988), as applicable.
* Contractor/Manufacturer is Environmental Systems Research Institute,
* Inc. (ESRI), 380 New York Street., Redlands, California 92373.
*
*E
*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*
*H History:
*
* ??? 9/91 Original coding.
*E
***********************************************************************/

#ifndef SDE_ERRNO
#define SDE_ERRNO

/******************************************************************************
**** FATAL SDE ERRORS
******************************************************************************/

#define SE_FAILURE (-1)
#define SE_INVALID_LAYERINFO_OBJECT (-2)/* LAYERINFO pointer not initialized. */
#define SE_NO_ANNOTATION (-3) /* The given shape has no annotation */
#define SE_FINISHED (-4) /* STREAM LOADING OF SHAPES FINISHED */
#define SE_SDE_NOT_STARTED (-5) /* SDE NOT STARTED, CANNOT PERFORM FUNCTION */
#define SE_UNCHANGED (-6) /* THE SPECIFIED SHAPE WAS LEFT UNCHANGED */
#define SE_TASKS_EXCEEDED (-7) /* THE NUMBER OF SERVER TASKS IS @ MAXIMUM */
#define SE_CONNECTIONS_EXCEEDED (-7) /* THE NUMBER OF SERVER CONNECTIONS IS @ MAXIMUM */
#define SE_LOGIN_NOT_ALLOWED (-8) /* IOMGR NOT ACCEPTING CONNECTION REQUESTS */
#define SE_INVALID_USER (-9) /* CANNOT VALIDATE THE SPECIFIED USER AND PASSWORD */
#define SE_NET_FAILURE (-10) /* NETWORK I/O OPERATION FAILED */
#define SE_NET_TIMEOUT (-11) /* NETWORK I/O TIMEOUT */
#define SE_OUT_OF_SVMEM (-12) /* SERVER TASK CANNOT ALLOCATE NEEDED MEMORY */
#define SE_OUT_OF_CLMEM (-13) /* CLIENT TASK CANNOT ALLOCATE NEEDED MEMORY */
#define SE_OUT_OF_CONTEXT (-14) /* FUNCTION CALL IS OUT OF CONTEXT */
#define SE_NO_ACCESS (-15) /* NO ACCESS TO OBJECT */
#define SE_TOO_MANY_LAYERS (-16) /* Exceeded max_layers in giomgr.defs. */
#define SE_NO_LAYER_SPECIFIED (-17) /* MISSING LAYER SPECIFICATION */
#define SE_LAYER_LOCKED (-18) /* SPECIFIED LAYER IS LOCKED */
#define SE_LAYER_EXISTS (-19) /* SPECIFIED LAYER ALREADY EXISTS */
#define SE_LAYER_NOEXIST (-20) /* SPECIFIED LAYER DOES NOT EXIST */
#define SE_LAYER_INUSE (-21) /* SPECIFIED LAYER IS USE BY ANOTHER USER */
#define SE_FID_NOEXIST (-22) /* SPECIFIED SHAPE (LAYER:FID) DOESN'T EXIST */
#define SE_ROW_NOEXIST (-22) /* SPECIFIED ROW DOESN'T EXIST */
#define SE_FID_EXISTS (-23) /* SPECIFIED SHAPE (LAYER:FID) EXISTS */
#define SE_ROW_EXISTS (-23) /* SPECIFIED ROW EXISTS */
#define SE_LAYER_MISMATCH (-24) /* Both layers must be the same for this */
#define SE_NO_PERMISSIONS (-25) /* NO PERMISSION TO PERFORM OPERATION */
#define SE_INVALID_NOT_NULL (-26) /* COLUMN HAS NOT NULL CONSTRAINT. */
#define SE_INVALID_SHAPE (-27) /* INVALID SHAPE, CANNOT BE VERIFIED */
#define SE_INVALID_LAYER_NUMBER (-28) /* MAP LAYER NUMBER OUT OF RANGE */
#define SE_INVALID_ENTITY_TYPE (-29) /* INVALID ENTITY TYPE */
#define SE_INVALID_SEARCH_METHOD (-30) /* INVALID SEARCH METHOD */
#define SE_INVALID_ETYPE_MASK (-31) /* INVALID ENTITY TYPE MASK */
#define SE_BIND_CONFLICT (-32) /* BIND/SET/GET MIS-MATCH */
#define SE_INVALID_GRIDSIZE (-33) /* INVALID GRID SIZE */
#define SE_INVALID_LOCK_MODE (-34) /* INVALID LOCK MODE */
#define SE_ETYPE_NOT_ALLOWED (-35) /* ENTITY TYPE OF SHAPE IS NOT ALLOWED IN LAYER */
#define SE_TOO_MANY_POINTS (-36) /* Exceeded max points specified. */
#define SE_INVALID_NUM_OF_PTS (-36) /* Alternate name of above. */
#define SE_TABLE_NOEXIST (-37) /* DBMS TABLE DOES NOT EXIST */
#define SE_ATTR_NOEXIST (-38) /* SPECIFIED ATTRIBUTE COLUMN DOESN'T EXIST */
#define SE_LICENSE_FAILURE (-39) /* Underlying license manager problem. */
#define SE_OUT_OF_LICENSES (-40) /* No more SDE licenses available. */
#define SE_INVALID_COLUMN_VALUE (-41) /* VALUE EXCEEDS VALID RANGE */
#define SE_INVALID_WHERE (-42) /* USER SPECIFIED WHERE CLAUSE IS INVALID */
#define SE_INVALID_SQL (-42) /* USER SPECIFIED SQL CLAUSE IS INVALID */
#define SE_LOG_NOEXIST (-43) /* SPECIFIED LOG FILE DOES NOT EXIST */
#define SE_LOG_NOACCESS (-44) /* UNABLE TO ACCESS SPECIFIED LOGFILE */
#define SE_LOG_NOTOPEN (-45) /* SPECIFIED LOGFILE IS NOT OPEN FOR I/O */
#define SE_LOG_IO_ERROR (-46) /* I/O ERROR USING LOGFILE */
#define SE_NO_SHAPES (-47) /* NO SHAPES SELECTED OR USED IN OPERATION */
#define SE_NO_LOCKS (-48) /* NO LOCKS DEFINED */
#define SE_LOCK_CONFLICT (-49) /* LOCK REQUEST CONFLICTS W/ ANOTHER ESTABLISHED LOCK */
#define SE_OUT_OF_LOCKS (-50) /* MAXIMUM LOCKS ALLOWED BY SYSTEM ARE IN USE */
#define SE_DB_IO_ERROR (-51) /* DATABASE LEVEL I/O ERROR OCCURRED */
#define SE_STREAM_IN_PROGRESS (-52) /* SHAPE/FID STREAM NOT FINISHED, CAN'T EXECUTE */
#define SE_INVALID_COLUMN_TYPE (-53) /* INVALID COLUMN DATA TYPE */
#define SE_TOPO_ERROR (-54) /* TOPOLOGICAL INTEGRITY ERROR */
#define SE_ATTR_CONV_ERROR (-55) /* ATTRIBUTE CONVERSION ERROR */
#define SE_INVALID_COLUMN_DEF (-56) /* INVALID COLUMN DEFINITION */
#define SE_INVALID_SHAPE_BUF_SIZE (-57) /* INVALID SHAPE ARRAY BUFFER SIZE */
#define SE_INVALID_ENVELOPE (-58) /* ENVELOPE IS NULL, HAS NEGATIVE VALUES OR MIN > MAX */
#define SE_TEMP_IO_ERROR (-59) /* TEMP FILE I/O ERROR, CAN'T OPEN OR RAN OUT OF DISK */
#define SE_GSIZE_TOO_SMALL (-60) /* SPATIAL INDEX GRID SIZE IS TOO SMALL */
#define SE_LICENSE_EXPIRED (-61) /* SDE RUN-TIME LICENSE HAS EXPIRED, NO LOGINS ALLOWED */
#define SE_TABLE_EXISTS (-62) /* DBMS TABLE EXISTS */
#define SE_INDEX_EXISTS (-63) /* INDEX WITH THE SPECIFIED NAME ALREADY EXISTS */
#define SE_INDEX_NOEXIST (-64) /* INDEX WITH THE SPECIFIED NAME DOESN'T EXIST */
#define SE_INVALID_POINTER (-65) /* SPECIFIED POINTER VALUE IS NULL OR INVALID */
#define SE_INVALID_PARAM_VALUE (-66) /* SPECIFIED PARAMETER VALUE IS INVALID */
#define SE_ALL_SLIVERS (-67) /* SLIVER FACTOR CAUSED ALL RESULTS TO BE SLIVERS */
#define SE_TRANS_IN_PROGRESS (-68) /* USER SPECIFIED TRANSACTION IN PROGRESS */
#define SE_IOMGR_NO_DBMS_CONNECT (-69) /* The iomgr has lost its connection
to the underlying DBMS. */
#define SE_DUPLICATE_ARC (-70) /* AN ARC (startpt,midpt,endpt) ALREADY EXISTS */
#define SE_INVALID_ANNO_OBJECT (-71) /* SE_ANNO pointer not initialized. */
#define SE_PT_NO_EXIST (-72) /* SPECIFIED POINT DOESN'T EXIST IN FEAT */
#define SE_PTS_NOT_ADJACENT (-73) /* SPECIFIED POINTS MUST BE ADJACENT */
#define SE_INVALID_MID_PT (-74) /* SPECIFIED MID POINT IS INVALID */
#define SE_INVALID_END_PT (-75) /* SPECIFIED END POINT IS INVALID */
#define SE_INVALID_RADIUS (-76) /* SPECIFIED RADIUS IS INVALID */
#define SE_LOAD_ONLY_LAYER (-77) /* MAP LAYER IS LOAD ONLY MODE, OPERATION NOT ALLOWED */
#define SE_LAYERS_NOT_FOUND (-78) /* LAYERS TABLE DOES NOT EXIST. */
#define SE_FILE_IO_ERROR (-79) /* Error writing or creating an output text file. */
#define SE_BLOB_SIZE_TOO_LARGE (-80) /* Maximum BLOB size exceeded. */
#define SE_CORRIDOR_OUT_OF_BOUNDS (-81) /* Resulting corridor exceeds valid coordinate range */
#define SE_SHAPE_INTEGRITY_ERROR (-82) /* MODEL INTEGRITY ERROR */
#define SE_NOT_IMPLEMENTED_YET (-83) /* Function or option is not really
written yet. */
#define SE_CAD_EXISTS (-84) /* This shape has a cad. */
#define SE_INVALID_TRANSID (-85) /* Invalid internal SDE Transaction ID. */
#define SE_INVALID_LAYER_NAME (-86) /* MAP LAYER NAME MUST NOT BE EMPTY */
#define SE_INVALID_LAYER_KEYWORD (-87) /* Invalid Layer Configuration Keyword used. */
#define SE_INVALID_RELEASE (-88) /* Invalid Release/Version of SDE server. */
#define SE_VERSION_TBL_EXISTS (-89) /* VERSION table exists. */

#define SE_COLUMN_NOT_BOUND (-90) /* Column has not been bound */
#define SE_INVALID_INDICATOR_VALUE (-91) /* Indicator variable contains an invalid value */
#define SE_INVALID_CONNECTION (-92) /* The connection handle is NULL,
closed or the wrong object. */
#define SE_INVALID_DBA_PASSWORD (-93) /* The DBA password is not correct. */
#define SE_PATH_NOT_FOUND (-94) /* Coord path not found in shape
edit op. */
#define SE_SDEHOME_NOT_SET (-95) /* No $SDEHOME variable set, and we
need one. */
#define SE_NOT_TABLE_OWNER (-96) /* User must be table owner. */
#define SE_PROCESS_NOT_FOUND (-97) /* The process ID specified does not
correspond on an SDE server. */
#define SE_INVALID_DBMS_LOGIN (-98) /* DBMS didn't accept user/password. */
#define SE_PASSWORD_TIMEOUT (-99) /* Password received was sent >
MAXTIMEDIFF seconds before. */
#define SE_INVALID_SERVER (-100) /* Server machine was not found */
#define SE_IOMGR_NOT_AVAILABLE (-101) /* IO Mgr task not started on server */
#define SE_SERVICE_NOT_FOUND (-102) /* No SDE entry in the /etc/services file */
#define SE_INVALID_STATS_TYPE (-103) /* Tried statisitics on non-numeric */
#define SE_INVALID_DISTINCT_TYPE (-104) /* Distinct stats on invalid type */
#define SE_INVALID_GRANT_REVOKE (-105) /* Invalid use of grant/revoke function */
#define SE_INVALID_SDEHOME (-106) /* The supplied SDEHOME path is
invalid or NULL. */
#define SE_INVALID_STREAM (-107) /* Stream does not exist */
#define SE_TOO_MANY_STREAMS (-108) /* Max number of streams exceeded */
#define SE_OUT_OF_MUTEXES (-109) /* Exceeded system's max number of mutexs. */
#define SE_CONNECTION_LOCKED (-110) /* This connection is locked to a different
thread. */
#define SE_CONNECTION_IN_USE (-111) /* This connection is being used at the
moment by another thread. */
#define SE_NOT_A_SELECT_STATEMENT (-112) /* The SQL statement was not a select */
#define SE_FUNCTION_SEQUENCE_ERROR (-113)/* Function called out of sequence */
#define SE_WRONG_COLUMN_TYPE (-114) /* Get request on wrong column type */
#define SE_PTABLE_LOCKED (-115) /* This ptable is locked to a different
thread. */
#define SE_PTABLE_IN_USE (-116) /* This ptable is being used at the
moment by another thread. */
#define SE_STABLE_LOCKED (-117) /* This stable is locked to a different
thread. */
#define SE_STABLE_IN_USE (-118) /* This stable is being used at the
moment by another thread. */
#define SE_INVALID_FILTER_TYPE (-119) /* Unrecognized spatial filter type. */
#define SE_NO_CAD (-120) /* The given shape has no CAD. */
#define SE_INSTANCE_NOT_AVAILABLE (-121) /* No instance running on server. */
#define SE_INSTANCE_TOO_EARLY (-122) /* Instance is a version previous to 2.0. */
#define SE_INVALID_SYSTEM_UNITS (-123) /* Systems units < 1 or > 2147483647. */
#define SE_INVALID_UNITS (-124) /* FEET, METERS, DECIMAL_DEGREES or OTHER. */
#define SE_INVALID_CAD_OBJECT (-125) /* SE_CAD pointer not initialized. */
#define SE_VERSION_NOEXIST (-126) /* Version not found. */
#define SE_INVALID_SPATIAL_CONSTRAINT (-127) /* Spatial filters invalid for search */
#define SE_INVALID_STREAM_TYPE (-128) /* Invalid operation for the given stream */
#define SE_INVALID_SPATIAL_COLUMN (-129) /* Column contains NOT NULL values during
SE_layer_create() */
#define SE_NO_SPATIAL_MASKS (-130) /* No spatial masks available. */
#define SE_IOMGR_NOT_FOUND (-131) /* Iomgr program not found. */
#define SE_SYSTEM_IS_CLIENT_ONLY (-132) /* Operation can not possibly be run on
this system -- it needs a server. */
#define SE_MULTIPLE_SPATIAL_COLS (-133) /* Only one spatial column allowed */
#define SE_INVALID_SHAPE_OBJECT (-134) /* The given shape object handle is invalid */
#define SE_INVALID_PARTNUM (-135) /* The specified shape part number does not exist */
#define SE_INCOMPATIBLE_SHAPES (-136) /* The given shapes are of incompatible types */
#define SE_INVALID_PART_OFFSET (-137) /* The specified part offset is invalid */
#define SE_INCOMPATIBLE_COORDREFS (-138) /* The given coordinate references are incompatible */
#define SE_COORD_OUT_OF_BOUNDS (-139) /* The specified coordinate exceeds the valid coordinate range */
#define SE_LAYER_CACHE_FULL (-140) /* Max. Layers exceeded in cache */
#define SE_INVALID_COORDREF_OBJECT (-141) /* The given coordinate reference object handle is invalid */
#define SE_INVALID_COORDSYS_ID (-142) /* The coordinate system identifier is invalid */
#define SE_INVALID_COORDSYS_DESC (-143) /* The coordinate system description is invalid */
#define SE_INVALID_ROW_ID_LAYER (-144) /* SE_ROW_ID owner.table does not match the layer */
#define SE_PROJECTION_ERROR (-145) /* Error projecting shape points */
#define SE_ARRAY_BYTES_EXCEEDED (-146) /* Max array bytes exceeded */

#define SE_POLY_SHELLS_OVERLAP (-147) /* 2 donuts or 2 outer shells overlap */
#define SE_TOO_FEW_POINTS (-148) /* numofpts is less than required for feature */
#define SE_INVALID_PART_SEPARATOR (-149) /* part separator in the wrong position */
#define SE_INVALID_POLYGON_CLOSURE (-150) /* polygon does not close properly */
#define SE_INVALID_OUTER_SHELL (-151) /* A polygon outer shell does not completely
enclose all donuts for the part */
#define SE_ZERO_AREA_POLYGON (-152) /* Polygon shell has no area */
#define SE_POLYGON_HAS_VERTICAL_LINE (-153) /* Polygon shell contains a vertical line */
#define SE_OUTER_SHELLS_OVERLAP (-154) /* Multipart area has overlapping parts */
#define SE_SELF_INTERSECTING (-155) /* Linestring or poly boundary is self-intersecting */
#define SE_INVALID_EXPORT_FILE (-156) /* Export file is invalid */
#define SE_READ_ONLY_SHAPE (-157) /* Attempted to modify or free a
read-only shape from an stable. */
#define SE_INVALID_DATA_SOURCE (-158) /* Invalid data source */
#define SE_INVALID_STREAM_SPEC (-159) /* Stream Spec parameter exceeds giomgr default */
#define SE_INVALID_ALTER_OPERATION (-160) /* Tried to remove cad or anno */
#define SE_INVALID_SPATIAL_COL_NAME (-161) /* Spat col name same as table name */
#define SE_INVALID_DATABASE (-162) /* Invalid database name */
#define SE_SPATIAL_SQL_NOT_INSTALLED (-163) /* Spatial SQL extension not
present in underlying DBMS */
#define SE_NORM_DIM_INFO_NOT_FOUND (-164) /* Obsolete SDE 3.0.2 error */
#define SE_NORM_DIM_TAB_VALUE_NOT_FOUND (-165) /* Obsolete SDE 3.0.2 error */
#define SE_UNSUPPORTED_NORMALIZED_OPERATION (-166) /* " SDE 3.0.2 error */

#define SE_INVALID_REGISTERED_LAYER_OPTION (-167) /* Obsolete SDE 3.0.2 error*/
#define SE_READ_ONLY (-168) /* Has R/O access to SE_ROW_ID */
#define SE_NO_SDE_ROWID_COLUMN (-169) /* The current table doesn't have a
SDE-maintained rowid column. */
#define SE_READ_ONLY_COLUMN (-170) /* Column is not user-modifiable */
#define SE_INVALID_VERSION_NAME (-171) /* Illegal or blank version name */
#define SE_STATE_NOEXIST (-172) /* A specified state is not in
the VERSION_STATES table. */
#define SE_INVALID_STATEINFO_OBJECT (-173) /* STATEINFO object not
initialized. */
#define SE_VERSION_HAS_MOVED (-174) /* Attempted to change version
state, but already changed. */
#define SE_STATE_HAS_CHILDREN (-175) /* Tried to open a state which
has children. */
#define SE_PARENT_NOT_CLOSED (-176) /* To create a state, the parent
state must be closed. */
#define SE_VERSION_EXISTS (-177) /* Version already exists. */
#define SE_TABLE_NOT_MULTIVERSION (-178) /* Table must be multiversion for
this operation. */
#define SE_STATE_USED_BY_VERSION (-179) /* Can't delete state being used by
a version. */
#define SE_INVALID_VERSIONINFO_OBJECT (-180) /* VERSIONINFO object not
initialized. */
#define SE_INVALID_STATE_ID (-181) /* State ID out of range or not
found. */
#define SE_SDETRACELOC_NOT_SET (-182) /* Environment var SDETRACELOC not
set to a value */
#define SE_ERROR_LOADING_SSA (-183) /* Error loading the SSA */

#define SE_TOO_MANY_STATES (-184) /* This operation has more
states than can fit in SQL. */
#define SE_STATES_ARE_SAME (-185) /* Function takes 2 <> states,
but same one was given twice. */
#define SE_NO_ROWID_COLUMN (-186) /* Table has no usable row ID
column. */
#define SE_NO_STATE_SET (-187) /* Call needs state to be set. */

#define SE_SSA_FUNCTION_ERROR (-188) /* Error executing SSA function */

#define SE_INVALID_REGINFO_OBJECT (-189) /* REGINFO object !initialized. */
#define SE_NO_COMMON_LINEAGE (-190) /* Attempting to trim between
states on diff. branches */
#define SE_STATE_INUSE (-191) /* State is being modified. */
#define SE_STATE_TREE_INUSE (-192) /* Try to lock tree, and some
state in tree already locked. */
#define SE_INVALID_RASTER_COLUMN (-193) /* Raster column has non-NULL values
or used as row_id column */
#define SE_RASTERCOLUMN_EXISTS (-194) /* Raster column already exists */
#define SE_INVALID_MVTABLE_INDEX (-195) /* Unique indexes are not allowed
on multiversion tables. */
#define SE_INVALID_STORAGE_TYPE (-196) /* Invalid layer storage type. */

#define SE_AMBIGUOUS_NIL_SHAPE (-197) /* No SQL type provided when
converting NIL shape to text */
#define SE_INVALID_BYTE_ORDER (-198) /* Invalid byte order for
Well-Known Binary shape */
#define SE_INVALID_GEOMETRY_TYPE (-199) /* Shape type in the given shape
is not a valid geometry type */
#define SE_INVALID_NUM_MEASURES (-200) /* Number of measures in shape must
be zero or equal to number
of points */
#define SE_INVALID_NUM_PARTS (-201) /* Number of parts in shape
is incorrect for its
geometry type */
#define SE_BINARY_TOO_SMALL (-202) /* Memory allocated for ESRI
binary shape is too small */
#define SE_SHAPE_TEXT_TOO_LONG (-203) /* Shape text exceeds the
supplied maximum string length */
#define SE_SHAPE_TEXT_ERROR (-204) /* Found syntax error in the
supplied shape text */
#define SE_TOO_MANY_PARTS (-205) /* Number of parts in shape is more
than expected for the given
shape text */
#define SE_TYPE_MISMATCH (-206) /* Shape's SQL type is not as
expected when constructing
shape from text */
#define SE_SQL_PARENTHESIS_MISMATCH (-207) /* Found parentheses mismatch
when parsing shape text */
#define SE_NIL_SHAPE_NOT_ALLOWED (-208) /* NIL shape is not allowed for
Well-Known Binary
represenation */
#define SE_INSTANCE_ALREADY_RUNNING (-209) /* Tried to start already running
SDE instance. */
#define SE_UNSUPPORTED_OPERATION (-210) /* The operation requested is
unsupported. */
#define SE_INVALID_EXTERNAL_LAYER_OPTION (-211) /* Invalid External layer
option. */
#define SE_NORMALIZE_VALUE_NOT_FOUND (-212) /* Normalized layer dimension
table value not found. */
#define SE_INVALID_QUERY_TYPE (-213) /* Invalid query type. */
#define SE_NO_TRACE_LIBRARY (-214) /* No trace functions in this
library */
#define SE_TRACE_ON (-215) /* Tried to enable tracing that
was already on */
#define SE_TRACE_OFF (-216) /* Tried to disable tracing that
was already off */
#define SE_SCL_SYNTAX_ERROR (-217) /* SCL Compiler doesn't like the
SCL stmt */
#define SE_TABLE_REGISTERED (-218) /* Table already registered. */
#define SE_INVALID_REGISTRATION_ID (-219) /* Registration ID out of range */
#define SE_TABLE_NOREGISTERED (-220) /* Table not registered. */
#define SE_TOO_MANY_REGISTRATIONS (-221) /* Exceeded max_registrations. */
#define SE_DELETE_NOT_ALLOWED (-222) /* This object can not be deleted,
other objects depend on it. */
#define SE_ROWLOCKING_ENABLED (-223) /* Row locking enabled */
#define SE_ROWLOCKING_NOT_ENABLED (-224) /* Row locking not enabled */
#define SE_RASTERCOLUMN_INUSE (-225) /* Specified raster column is used
by another user */
#define SE_RASTERCOLUMN_NOEXIST (-226) /* Specified raster column does
not exist */
#define SE_INVALID_RASTERCOLUMN_NUMBER (-227) /* Raster column number
out of range */
#define SE_TOO_MANY_RASTERCOLUMNS (-228) /* Maximum raster column
number exceeded */
#define SE_INVALID_RASTER_NUMBER (-229) /* Raster number out of range */
#define SE_NO_REQUEST_STATUS (-230) /* cannot determine
request status */
#define SE_NO_REQUEST_RESULTS (-231) /* cannot open request results */
#define SE_RASTERBAND_EXISTS (-232) /* Raster band already exists */
#define SE_RASTERBAND_NOEXIST (-233) /* Specified raster band
does not exist */
#define SE_RASTER_EXISTS (-234) /* Raster already exists */
#define SE_RASTER_NOEXIST (-235) /* Specified raster
does not exist */
#define SE_TOO_MANY_RASTERBANDS (-236) /* Maximum raster band
number exceeded */
#define SE_TOO_MANY_RASTERS (-237) /* Maximum raster number
exceeded */
#define SE_VIEW_EXISTS (-238) /* DBMS VIEW EXISTS */
#define SE_VIEW_NOEXIST (-239) /* DBMS VIEW NOT EXISTS */
#define SE_LOCK_EXISTS (-240) /* Lock record exist */
#define SE_ROWLOCK_MASK_CONFLICT (-241) /* Rowlocking mask conflict */
#define SE_NOT_IN_RASTER (-242) /* Raster band specified
not in a raster */
#define SE_INVALID_RASBANDINFO_OBJECT (-243) /* RASBANDINFO object
not initialized */
#define SE_INVALID_RASCOLINFO_OBJECT (-244) /* RASCOLINFO object
not initialized */
#define SE_INVALID_RASTERINFO_OBJECT (-245) /* RASTERINFO object
not initialized */
#define SE_INVALID_RASTERBAND_NUMBER (-246) /* Raster band number
out of range */
#define SE_MULTIPLE_RASTER_COLS (-247) /* Only one raster column allowed */
#define SE_TABLE_SCHEMA_IS_LOCKED (-248) /* Table is being locked already */
#define SE_INVALID_LOGINFO_OBJECT (-249) /* SE_LOGINFO pointer not initialized. */
#define SE_SQL_TOO_LONG (-250) /* Operation generated a SQL
statement too big to process.*/
#define SE_UNSUPPORTED_ON_VIEW (-251) /* Not supported on a View.*/
#define SE_LOG_EXISTS (-252) /* Specified log file exists already. */
#define SE_LOG_IS_OPEN (-253) /* Specified log file is open. */
#define SE_SPATIALREF_EXISTS (-254) /* Spatial reference entry exists. */
#define SE_SPATIALREF_NOEXIST (-255) /* Spatial reference entry does not exist. */
#define SE_SPATIALREF_IN_USE (-256) /* Spatial reference entry is
in use by one or more layers. */
#define SE_INVALID_SPATIALREFINFO_OBJECT (-257) /* The SE_SPATIALREFINFO object
is not initialized. */
#define SE_SEQUENCENBR_EXISTS (-258) /* Raster band sequence number
already exits. */
#define SE_INVALID_QUERYINFO_OBJECT (-259) /* SE_QUERYINFO pointer not initialized. */
#define SE_QUERYINFO_NOT_PREPARED (-260) /* SE_QUERYINFO pointer is not prepared for query. */
#define SE_INVALID_RASTILEINFO_OBJECT (-261) /* RASTILEINFO object not
initialized */
#define SE_INVALID_RASCONSTRAINT_OBJECT (-262) /* SE_RASCONSTRAINT object not
initialized */
#define SE_INVALID_METADATA_RECORD_ID (-263) /* invalid record id number */
#define SE_INVALID_METADATA_OBJECT (-264) /* SE_METADATAINFO pointer not
initialized */
#define SE_INVALID_METADATA_OBJECT_TYPE (-265) /* unsupported object type */
#define SE_SDEMETADATA_NOT_FOUND (-266) /* SDEMETADATA table does not exist */
#define SE_METADATA_RECORD_NOEXIST (-267) /* Metadata record does not exist. */
#define SE_GEOMETRYCOL_NOEXIST (-268) /* Geometry entry does not exist */
#define SE_INVALID_FILE_PATH (-269) /* File path too long or invalid */
#define SE_INVALID_LOCATOR_OBJECT_TYPE (-270) /* Locator object not initialized */
#define SE_INVALID_LOCATOR (-271) /* Locator cannot be validated */
#define SE_TABLE_HAS_NO_LOCATOR (-272) /* Table has no associated locator */
#define SE_INVALID_LOCATOR_CATEGORY (-273) /* Locator cateogry is not specified */
#define SE_INVALID_LOCATOR_NAME (-274) /* Invalid locator name */
#define SE_LOCATOR_NOEXIST (-275) /* Locator does not exist */
#define SE_LOCATOR_EXISTS (-276) /* Locator exists */
#define SE_INVALID_LOCATOR_TYPE (-277) /* Unsupported Locator type */
#define SE_NO_COORDREF (-278) /* No coordref defined */
#define SE_CANT_TRIM_RECONCILED_STATE (-279) /* Can't trim past a reconciled
state. */
#define SE_FILE_OBJECT_NOEXIST (-280) /* Fileinfo object does not
exist. */
#define SE_FILE_OBJECT_EXISTS (-281) /* Fileinfo object already
exists. */
#define SE_INVALID_FILEINFO_OBJECT (-282) /* Fileinfo object not
initialized. */
#define SE_INVALID_FILEINFO_OBJECT_TYPE (-283) /* Unsupported Fileinfo object
type. */
#define SE_RASTERBAND_NO_STATS (-284) /* No statistics available for
this raster band. */
#define SE_VERSION_HAS_CHILDREN (-285) /* Can't delete a version with
children. */

#define SE_SQLTYPE_UNSUPPORTED_ETYPE (-286) /* SQL type does not support
ANNO or CAD at current release */
#define SE_NO_DBTUNE_FILE (-287) /* The DBTUNE file is missing
or unreadable. */
#define SE_LOG_SYSTABLES_CREATE_FAILED (-288) /* Logfile system tables do not
exist. */
#define SE_OBJECT_RESTRICTED (-289) /* This app can't perform this
operation on this object. */
#define SE_INVALID_GEOGTRAN_OBJECT (-290) /* The given geographic
transformation object
handle is invalid */
#define SE_COLUMN_EXISTS (-291) /* Column already exists */
#define SE_SQL_KEYWORD (-292) /* SQL keyword violation. */
#define SE_INVALID_OBJECTLOCKINFO_OBJECT (-293) /* The supplied objectlock
handle is bad. */
#define SE_RASTERBUFFER_TOO_SMALL (-294) /* The raster buffer size
is too small. */
#define SE_INVALID_RASTER_DATA (-295) /* Invalid raster data */
#define SE_OPERATION_NOT_ALLOWED (-296) /* This operation is not
allowed */
#define SE_INVALID_RASTERATTR_OBJECT (-297) /* SE_RASTERATTR object not
initialized */
#define SE_INVALID_VERSION_ID (-298) /* Version ID out of range. */
#define SE_MVTABLE_CANT_BE_LOAD_ONLY (-299) /* Attempting to make an MV
table load-only */
#define SE_INVALID_SDO_GEOM_METADATA_OBJ (-300) /* The user-supplied table/
column is invalid. */
#define SE_ROW_OUT_OF_SEQUENCE (-301) /* The next row was not the row
expected. */

#define SE_INSTANCE_IS_READ_ONLY        (-302) /* The ArcSDE instance is
                                                  read-only */

#define SE_MOSAIC_NOT_ALLOWED           (-303) /* Image mosaicking is not
                                                  allowed */

#define SE_INVALID_RASTER_BITMAP        (-304) /* Invalid raster bitmap
                                                  object */

#define SE_SEQUENCENBR_NOEXIST          (-305) /* The specified band sequence
                                                  number does not exist. */

#define SE_SQLTYPE_INVALID_FEATURE_TYPE (-306) /* Invalid SQLTYPE feature type
                                                  (i.e., Rect, Arc, Circle) */

/******************************************************************************

****    NON-FATAL SDE WARNINGS

******************************************************************************/

#define
SE_SUCCESS               0

#define
SE_SDE_WARNING           (-1000)  /* BASE NUMBER FOR WARNING CODES */

#define
SE_ETYPE_CHANGED         (-1001)  /* FUNCTION CHANGED ENTITY TYPE OF

                                             FEAT */

#define
SE_NO_ROWS_DELETED       (-1002)  /* No rows were deleted. */

#define
SE_TOO_MANY_DISTINCTS    (-1003)  /* Too many distinct values

in stats */

#define SE_NULL_VALUE            (-1004)  /* Request column value is NULL */

#define
SE_NO_ROWS_UPDATED       (-1005)  /* No rows were updated */

#define
SE_NO_CPGCVT             (-1006)  /* No codepage conversion  */

#define SE_NO_CPGHOME            (-1007)  /* Cannot find codepage directory */

#define
SE_DBMS_DOES_NOT_SUPPORT (-1008)  /*
DBMS does NOT support

                                             this function */

#define
SE_INVALID_FUNCTION_ID   (-1009)  /* Invalid DBMS function id */

#define
SE_LAYERS_UPDATE_FAILED  (-1010)  /* Update layer extent failed */

#define
SE_NO_LOCALIZED_MESSAGE  (-1011)  /* No localized error messages */

/******************************************************************************

****    SDE Exit Codes

****

****      These are the status codes found in
giomgr.log when a connection's

****
gsrvr exits (as opposed to going down on a signal or with an
exception

****    code -- those are
documented in the operating system's documentation).

******************************************************************************/

#define
SE_EXIT_SUCCESS                 0

#define
SE_EXIT_INVALID_COMMAND_LINE    1

#define
SE_EXIT_IOMGR_IO_ERROR          2

#define
SE_EXIT_DBMS_CONNECT_REJECTED   3

#define
SE_EXIT_SHARED_MEMORY_ERROR     4

#define
SE_EXIT_MALLOC_ERROR            5

#define
SE_EXIT_CLIENT_IO_ERROR         6

#define
SE_EXIT_LOGFILE_INIT_FAILED     7

#define
SE_EXIT_LOST_CLIENT             8

#define
SE_EXIT_BAD_COMMAND_CODE        9

#define
SE_EXIT_REGISTRY_INIT_FAILED   10

#define
SE_EXIT_LAYERS_INIT_FAILED     11

#define
SE_EXIT_METADATA_INIT_FAILED   12

#define
SE_EXIT_RASTER_INIT_FAILED     13

#define
SE_EXIT_VERSION_INIT_FAILED    14

#define
SE_EXIT_LOCATOR_INIT_FAILED    15

#define
SE_EXIT_NO_LOCALIZED_MESSAGE   16

#endif
/* SDE_ERRNO */


sderaster

/* $Id: sderaster.h,v 1.31 2000/09/19 22:53:53 zh Exp $ */

/***********************************************************************

*

*N {sderaster.h} -- SDE Raster Data Types/Defines Header File

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P Purpose:

*

* SDE Raster Data Types/Defines Header File

*

* Copyright 1992-2000, Environmental Systems Research Institute, Inc.

* All rights reserved. This software is provided with RESTRICTED AND

* LIMITED RIGHTS. Use, duplication, or disclosure by the Government

* is subject to restrictions as set forth in FAR 52.227-14 (JUN 1987)

* Alternate III (g) (3) (JUN 1987), FAR 52.227-19 (JUN 1987), or

* DFARS 252.227-7013 (c) (1) (ii) (OCT 1988), as applicable.

* Contractor/Manufacturer is Environmental Systems Research Institute,

* Inc. (ESRI), 380 New York Street., Redlands, California 92373.

*

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H History:

*

*E

***********************************************************************/

#ifndef SDE_RASTER

#define SDE_RASTER

#ifdef __cplusplus

extern "C" {

#endif

/************************************************************

*** SDE RASTER COLUMN HANDLE

************************************************************/

typedef struct _SE_RasterColumnRecord *SE_RASCOLINFO;

/************************************************************

*** SDE RASTER COLUMN HANDLE

************************************************************/

typedef struct _SE_RasterBandRecord *SE_RASBANDINFO;

/************************************************************

*** SDE RASTER COLUMN HANDLE

************************************************************/

typedef struct _SE_RasterRecord *SE_RASTERINFO;

/************************************/

/*** Time Modes for Raster Band ***/

/************************************/

#define SE_RASTERBAND_CREATED 1

#define SE_RASTERBAND_MODIFIED 2

/************************************/

/*** Image Pyramid Auto Level ****/

/************************************/

#define SE_PYRAMID_AUTO_LEVEL -1

/************************************/

/*** Pixel Type in Raster Band ***/

/************************************/

#define SE_PIXEL_TYPE_1BIT 0x008

#define SE_PIXEL_TYPE_4BIT 0x020

#define SE_PIXEL_TYPE_8BIT_U 0x040

#define SE_PIXEL_TYPE_8BIT_S 0x041

#define SE_PIXEL_TYPE_16BIT_U 0x080

#define SE_PIXEL_TYPE_16BIT_S 0x081

#define SE_PIXEL_TYPE_32BIT_U 0x100

#define SE_PIXEL_TYPE_32BIT_S 0x101

#define SE_PIXEL_TYPE_32BIT_REAL 0x102

#define SE_PIXEL_TYPE_64BIT_REAL 0x200

#if 0

#define SE_PIXEL_TYPE_64BIT_COMPLEX 0x201

#define SE_PIXEL_TYPE_128BIT_COMPLEX 0x400

#endif

/*****************************************************/

/*** Macro to obtain BitsPerPixel from Pixel Type ***/

/*****************************************************/

#define SE_PIXEL_TYPE_GET_DEPTH(type) ((type) >> 3)

/*****************************************/

/*** Compression Type in Raster Band ***/

/*****************************************/

typedef enum

{

SE_COMPRESSION_NONE = 0,

SE_COMPRESSION_LZ77

} SE_COMPRESSION_TYPE;

/****************************************/

/*** Geodatabase Raster Layer Type ***/

/****************************************/

#ifdef SE_GDBTYPE_NONE

#undef SE_GDBTYPE_NONE

#endif

#define SE_GDBTYPE_NONE 0

#define SE_GDBTYPE_RASTERMAP 1

/*******************************************************/

/*** SDE RASTER TILE HANDLE "SE_RASTILEINFO" ***/

/*******************************************************/

typedef struct _SE_RasterTileRecord *SE_RASTILEINFO;

/*******************************************************/

/*** SDE RASTER CONSTRAINT HANDLE "SE_RASCONSTRAINT" ***/

/*******************************************************/

typedef struct _SE_RasterConstraintRecord *SE_RASCONSTRAINT;

/*******************************************************/

/*** SDE RASTER BUFFER HANDLE "SE_RASTERBUFFER" ***/

/*******************************************************/

typedef struct _RasterBufferRecord *SE_RASTERBUFFER;

/***************************************************/

/*** SDE RASTER ATTRIBUTE HANDLE "SE_RASTERATTR" ***/

/***************************************************/

typedef struct _SE_RasterAttrRecord *SE_RASTERATTR;

/*

* ==========================================================================

*

* THE FOLLOWING FUNCTIONS ARE FOR PUBLIC USE.

*

* ==========================================================================

*/

/* Raster column info object functions */

extern LONG SDEAPI SE_rascolinfo_create (SE_RASCOLINFO *rastercolumn);

extern void SDEAPI SE_rascolinfo_free (SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rascolinfo_get_id (const SE_RASCOLINFO rastercolumn,

LONG *rastercolumn_id);

extern LONG SDEAPI SE_rascolinfo_get_access

(const SE_RASCOLINFO rastercolumn,

LONG *privileges);

extern LONG SDEAPI SE_rascolinfo_get_creation_date

(const SE_RASCOLINFO rastercolumn,

struct tm *date);

extern LONG SDEAPI SE_rascolinfo_get_creation_keyword

(const SE_RASCOLINFO rastercolumn,

CHAR *config_keyword);

extern LONG SDEAPI SE_rascolinfo_set_creation_keyword

(SE_RASCOLINFO rastercolumn,

const CHAR *config_keyword);

extern LONG SDEAPI SE_rascolinfo_get_description

(const SE_RASCOLINFO rastercolumn,

CHAR *description);

extern LONG SDEAPI SE_rascolinfo_set_description

(SE_RASCOLINFO rastercolumn,

const CHAR *description);

extern LONG SDEAPI SE_rascolinfo_get_raster_column

(const SE_RASCOLINFO rastercolumn,

CHAR *table,

CHAR *raster_column);

extern LONG SDEAPI SE_rascolinfo_set_raster_column

(SE_RASCOLINFO rastercolumn,

const CHAR *table,

const CHAR *raster_column);

extern LONG SDEAPI SE_rascolinfo_get_minimum_id

(const SE_RASCOLINFO rastercolumn,

ULONG *minimum_id);

extern LONG SDEAPI SE_rascolinfo_set_minimum_id

(SE_RASCOLINFO rastercolumn,

ULONG minimum_id);

extern LONG SDEAPI SE_rascolinfo_get_coordref

(const SE_RASCOLINFO rastercolumn,

SE_COORDREF coordref);

extern LONG SDEAPI SE_rascolinfo_set_coordref

(SE_RASCOLINFO rastercolumn,

const SE_COORDREF coordref);

extern BOOL SDEAPI SE_rascolinfo_is_in_load_mode

(const SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rascolinfo_set_load_mode

(SE_RASCOLINFO rastercolumn,

BOOL load_mode);

extern BOOL SDEAPI SE_rascolinfo_has_gdbtype

(const SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rascolinfo_get_gdbtype

(const SE_RASCOLINFO rastercolumn,

UCHAR *gdbtype);

extern LONG SDEAPI SE_rascolinfo_set_gdbtype

(SE_RASCOLINFO rastercolumn,

UCHAR gdbtype);

/* Raster column object functions */

extern LONG SDEAPI SE_rastercolumn_alter

(SE_CONNECTION handle,

const SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rastercolumn_create

(SE_CONNECTION handle,

const SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rastercolumn_delete

(SE_CONNECTION handle,

const CHAR *table_name,

const CHAR *raster_column);

extern LONG SDEAPI SE_rastercolumn_truncate

(SE_CONNECTION handle,

const CHAR *table_name,

const CHAR *raster_column);

extern void SDEAPI SE_rastercolumn_free_info_list

(LONG count,

SE_RASCOLINFO *rascol_list);

extern LONG SDEAPI SE_rastercolumn_get_info_by_name

(SE_CONNECTION handle,

const CHAR *table_name,

const CHAR *raster_column,

SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rastercolumn_get_info_by_id

(SE_CONNECTION handle,

LONG rastercolumn_id,

SE_RASCOLINFO rastercolumn);

extern LONG SDEAPI SE_rastercolumn_get_info_list

(SE_CONNECTION handle,

SE_RASCOLINFO **rascol_list,

LONG *count_addr);

extern LONG SDEAPI SE_rastercolumn_grant_access

(SE_CONNECTION handle,

const CHAR *table_name,

const CHAR *raster_column,

LONG privilege,

BOOL grant,

const CHAR *user);

extern LONG SDEAPI SE_rastercolumn_revoke_access

(SE_CONNECTION handle,

const CHAR *table_name,

const CHAR *raster_column,

LONG privilege,

const CHAR *user);

/* Raster band info object functions */

extern LONG SDEAPI SE_rasbandinfo_create

(SE_RASBANDINFO *rasterband);

extern void SDEAPI SE_rasbandinfo_free (SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_rasbandinfo_duplicate

(const SE_RASBANDINFO src_rasterband,

SE_RASBANDINFO tgt_rasterband);

extern LONG SDEAPI SE_rasbandinfo_get_id

(const SE_RASBANDINFO rasterband,

LONG *rasterband_id);

extern LONG SDEAPI SE_rasbandinfo_get_pixel_type

(const SE_RASBANDINFO rasterband,

LONG *pixel_type);

extern LONG SDEAPI SE_rasbandinfo_set_pixel_type

(SE_RASBANDINFO rasterband,

LONG pixel_type);

extern LONG SDEAPI SE_rasbandinfo_get_compression_type

(const SE_RASBANDINFO rasterband,

SE_COMPRESSION_TYPE *type);

extern LONG SDEAPI SE_rasbandinfo_set_compression_type

(SE_RASBANDINFO rasterband,

SE_COMPRESSION_TYPE compression);

extern LONG SDEAPI SE_rasbandinfo_get_tile_size

(const SE_RASBANDINFO rasterband,

LONG *block_width,

LONG *block_height);

extern LONG SDEAPI SE_rasbandinfo_set_tile_size

(SE_RASBANDINFO rasterband,

LONG block_width,

LONG block_height);

extern LONG SDEAPI SE_rasbandinfo_get_rascol_id

(const SE_RASBANDINFO rasterband,

LONG *rascol_id);

extern LONG SDEAPI SE_rasbandinfo_set_rascol_id

(SE_RASBANDINFO rasterband,

LONG rascol_id);

extern LONG SDEAPI SE_rasbandinfo_get_band_number

(const SE_RASBANDINFO rasterband,

LONG *sequence_nbr);

extern LONG SDEAPI SE_rasbandinfo_set_band_number

(SE_RASBANDINFO rasterband,

LONG sequence_nbr);

extern LONG SDEAPI SE_rasbandinfo_get_raster_id

(const SE_RASBANDINFO rasterband,

LONG *raster_id);

extern LONG SDEAPI SE_rasbandinfo_get_time

(const SE_RASBANDINFO rasterband,

LONG which_time,

struct tm *time);

extern LONG SDEAPI SE_rasbandinfo_get_band_size

(const SE_RASBANDINFO rasterband,

LONG *band_width,

LONG *band_height);

extern LONG SDEAPI SE_rasbandinfo_set_band_size

(SE_RASBANDINFO rasterband,

LONG band_width,

LONG band_height);

extern LONG SDEAPI SE_rasbandinfo_get_extent

(const SE_RASBANDINFO rasterband,

SE_ENVELOPE *envelope);

extern LONG SDEAPI SE_rasbandinfo_set_extent

(SE_RASBANDINFO rasterband,

const SE_ENVELOPE *envelope);

extern LONG SDEAPI SE_rasbandinfo_get_max_level

(const SE_RASBANDINFO rasterband,

LONG *max_level,

BOOL *skip_level1);

extern LONG SDEAPI SE_rasbandinfo_set_max_level

(SE_RASBANDINFO rasterband,

LONG max_level,

BOOL skip_level1);

extern LONG SDEAPI SE_rasbandinfo_get_band_name

(const SE_RASBANDINFO rasterband,

CHAR *band_name);

extern LONG SDEAPI SE_rasbandinfo_set_band_name

(SE_RASBANDINFO rasterband,

const CHAR *band_name);

extern LONG SDEAPI SE_rasbandinfo_get_tile_origin

(const SE_RASBANDINFO rasterband,

LFLOAT *x,

LFLOAT *y);

extern LONG SDEAPI SE_rasbandinfo_set_bin_function

(SE_RASBANDINFO rasterband,

SE_BIN_FUNCTION_TYPE type,

LONG num_bins,

LFLOAT *bin_table);

extern BOOL SDEAPI SE_rasbandinfo_has_colormap

(const SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_rasbandinfo_set_colormap

(SE_RASBANDINFO rasterband,

SE_COLORMAP_TYPE colormap_type,

SE_COLORMAP_DATA_TYPE data_type,

LONG num_entries,

void *data);

extern LONG SDEAPI SE_rasbandinfo_get_colormap

(const SE_RASBANDINFO rasterband,

SE_COLORMAP_TYPE *colormap_type,

SE_COLORMAP_DATA_TYPE *data_type,

LONG *num_entries,

void **data);

extern void SDEAPI SE_rasbandinfo_free_colormap

(void *data);

extern void SDEAPI SE_rasbandinfo_free_stats_histogram

(LFLOAT *bin_table,

LFLOAT *histogram);

extern LONG SDEAPI SE_rasbandinfo_get_stats_min

(const SE_RASBANDINFO rasterband,

LFLOAT *min);

extern LONG SDEAPI SE_rasbandinfo_get_stats_max

(const SE_RASBANDINFO rasterband,

LFLOAT *max);

extern LONG SDEAPI SE_rasbandinfo_get_stats_mean

(const SE_RASBANDINFO rasterband,

LFLOAT *mean);

extern LONG SDEAPI SE_rasbandinfo_get_stats_stddev

(const SE_RASBANDINFO rasterband,

LFLOAT *stddev);

extern LONG SDEAPI SE_rasbandinfo_get_stats_histogram

(const SE_RASBANDINFO rasterband,

SE_BIN_FUNCTION_TYPE *type,

LONG *num_bins,

LFLOAT **bin_table,

LFLOAT **histogram);

extern BOOL SDEAPI SE_rasbandinfo_has_stats

(const SE_RASBANDINFO rasterband);

/* Raster band object functions */

extern LONG SDEAPI SE_rasterband_alter (SE_CONNECTION handle,

const SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_rasterband_create (SE_CONNECTION handle,

const SE_RASBANDINFO rasterband,

LONG *band_id);

extern LONG SDEAPI SE_rasterband_delete (SE_CONNECTION handle,

const SE_RASBANDINFO rasterband);

extern void SDEAPI SE_rasterband_free_info_list

(LONG count,

SE_RASBANDINFO *rasband_list);

extern LONG SDEAPI SE_rasterband_get_info_by_id

(SE_CONNECTION handle,

LONG rastercolumn_id,

LONG rasterband_id,

SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_rasterband_get_info_list

(SE_CONNECTION handle,

LONG rastercolumn_id,

SE_RASBANDINFO **rasband_list,

LONG *count_addr);

/* Raster info object functions */

extern LONG SDEAPI SE_rasterinfo_create (SE_RASTERINFO *raster);

extern void SDEAPI SE_rasterinfo_free (SE_RASTERINFO raster);

extern LONG SDEAPI SE_rasterinfo_duplicate

(const SE_RASTERINFO src_raster,

SE_RASTERINFO tgt_raster);

extern LONG SDEAPI SE_rasterinfo_get_description

(const SE_RASTERINFO raster,

CHAR *description);

extern LONG SDEAPI SE_rasterinfo_set_description

(SE_RASTERINFO raster,

const CHAR *description);

extern LONG SDEAPI SE_rasterinfo_get_rascol_id

(const SE_RASTERINFO raster,

LONG *rascol_id);

extern LONG SDEAPI SE_rasterinfo_set_rascol_id

(SE_RASTERINFO raster,

LONG rascol_id);

extern LONG SDEAPI SE_rasterinfo_get_raster_id

(const SE_RASTERINFO raster,

LONG *raster_id);

/* Raster object functions */

extern LONG SDEAPI SE_raster_create (SE_CONNECTION handle,

const SE_RASTERINFO raster,

LONG *raster_id);

extern LONG SDEAPI SE_raster_delete (SE_CONNECTION handle,

const SE_RASTERINFO raster);

extern LONG SDEAPI SE_raster_get_bands (SE_CONNECTION handle,

const SE_RASTERINFO raster,

SE_RASBANDINFO **rasband_list,

LONG *count_addr);

extern LONG SDEAPI SE_raster_add_band (SE_CONNECTION handle,

SE_RASTERINFO raster,

const SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_raster_drop_band (SE_CONNECTION handle,

SE_RASTERINFO raster,

const SE_RASBANDINFO rasterband);

extern LONG SDEAPI SE_raster_get_info_by_id

(SE_CONNECTION handle,

LONG rastercolumn_id,

LONG raster_id,

SE_RASTERINFO raster);

/* Raster stream functions */

extern LONG SDEAPI SE_stream_set_raster_constraint

(SE_STREAM stream,

const SE_RASCONSTRAINT constraint);

extern LONG SDEAPI SE_stream_query_raster_tile

(SE_STREAM stream,

const SE_RASCONSTRAINT constraint);

extern LONG SDEAPI SE_stream_get_raster_tile

(SE_STREAM stream,

SE_RASTILEINFO tile_ptr);

extern LONG SDEAPI SE_stream_get_raster (SE_STREAM stream,

SHORT column,

SE_RASTERATTR raster);

extern LONG SDEAPI SE_stream_last_inserted_raster_id

(SE_STREAM stream,

LONG *raster_id);

/* Raster tile info object functions */

extern LONG SDEAPI SE_rastileinfo_create

(SE_RASTILEINFO *tile);

extern void SDEAPI SE_rastileinfo_free (SE_RASTILEINFO tile);

extern LONG SDEAPI SE_rastileinfo_get_band_id

(const SE_RASTILEINFO tile,

LONG *band_id);

extern LONG SDEAPI SE_rastileinfo_set_band_id

(SE_RASTILEINFO tile,

LONG band_id);

extern LONG SDEAPI SE_rastileinfo_get_rowcol

(const SE_RASTILEINFO tile,

LONG *row,

LONG *column);

extern LONG SDEAPI SE_rastileinfo_set_rowcol

(SE_RASTILEINFO tile,

LONG row,

LONG column);

extern LONG SDEAPI SE_rastileinfo_get_level

(const SE_RASTILEINFO tile,

LONG *level);

extern LONG SDEAPI SE_rastileinfo_set_level

(SE_RASTILEINFO tile,

LONG level);

extern LONG SDEAPI SE_rastileinfo_get_pixel_data

(SE_RASTILEINFO tile,

void **pixels,

LONG *length);

extern LONG SDEAPI SE_rastileinfo_set_pixel_data

(SE_RASTILEINFO tile,

void *pixels,

LONG length);

/* Raster constraint object functions */

extern LONG SDEAPI SE_rasconstraint_create

(SE_RASCONSTRAINT *handle);

extern void SDEAPI SE_rasconstraint_free

(SE_RASCONSTRAINT handle);

extern LONG SDEAPI SE_rasconstraint_set_bands

(SE_RASCONSTRAINT handle,

LONG num_bands,

LONG *band_nbr);

extern LONG SDEAPI SE_rasconstraint_set_envelope

(SE_RASCONSTRAINT handle,

LONG minx,

LONG miny,

LONG maxx,

LONG maxy);

extern LONG SDEAPI SE_rasconstraint_set_level

(SE_RASCONSTRAINT handle,

LONG level);

extern LONG SDEAPI SE_rasconstraint_set_interleave

(SE_RASCONSTRAINT handle,

SE_RASTER_INTERLEAVE_TYPE interleave);

/* Raster attribute object functions */

extern LONG SDEAPI SE_rasterattr_create (SE_RASTERATTR *handle,

BOOL input_mode);

extern void SDEAPI SE_rasterattr_free (SE_RASTERATTR handle);

extern LONG SDEAPI SE_rasterattr_duplicate

(const SE_RASTERATTR source,

SE_RASTERATTR target);

extern LONG SDEAPI SE_rasterattr_set_image_size

(SE_RASTERATTR handle,

LONG band_width,

LONG band_height,

LONG num_bands);

extern LONG SDEAPI SE_rasterattr_set_tile_size

(SE_RASTERATTR handle,

LONG tile_width,

LONG tile_height);

extern LONG SDEAPI SE_rasterattr_set_pixel_type

(SE_RASTERATTR handle,

LONG pixel_type);

extern LONG SDEAPI SE_rasterattr_set_callback

(SE_RASTERATTR handle,

SE_RASTER_PROC callback,

void *context);

extern LONG SDEAPI SE_rasterattr_get_raster_info

(SE_RASTERATTR handle,

SE_RASTERINFO *raster);

extern LONG SDEAPI SE_rasterattr_get_image_size

(SE_RASTERATTR handle,

LONG *band_width,

LONG *band_height,

LONG *num_bands);

extern LONG SDEAPI SE_rasterattr_get_tile_size

(SE_RASTERATTR handle,

LONG *tile_width,

LONG *tile_height);

extern LONG SDEAPI SE_rasterattr_get_pixel_type

(SE_RASTERATTR handle,

LONG *pixel_type);

extern LONG SDEAPI SE_rasterattr_get_max_level

(SE_RASTERATTR handle,

LONG *max_level,

BOOL *skip_level1);

extern LONG SDEAPI SE_rasterattr_get_rasterband_info

(SE_RASTERATTR handle,

SE_RASBANDINFO *rasterband,

LONG index);

extern LONG SDEAPI SE_rasterattr_get_num_bands

(SE_RASTERATTR handle,

LONG *num_bands);

extern LONG SDEAPI SE_rasterattr_get_rasterband_info_list

(SE_RASTERATTR handle,

SE_RASBANDINFO **rasbnd_list,

LONG *count);

extern LONG SDEAPI SE_rasterattr_get_rascol_id

(SE_RASTERATTR handle,

LONG *rascol_id);

extern LONG SDEAPI SE_rasterattr_get_raster_id

(SE_RASTERATTR handle,

LONG *raster_id);

extern LONG SDEAPI SE_rasterattr_set_extent

(SE_RASTERATTR handle,

const SE_ENVELOPE *envelope);

extern LONG SDEAPI SE_rasterattr_get_extent

(SE_RASTERATTR handle,

SE_ENVELOPE *envelope);

extern LONG SDEAPI SE_rasterattr_set_mosaic_mode

(SE_RASTERATTR handle,

BOOL mode);

extern LONG SDEAPI SE_rasterattr_set_mask_mode

(SE_RASTERATTR handle,

BOOL mode);

extern LONG SDEAPI SE_rasterattr_get_tile_origin

(SE_RASTERATTR handle,

LFLOAT *x,

LFLOAT *y);

extern LONG SDEAPI SE_rasterattr_get_image_size_by_level

(SE_RASTERATTR handle,

LONG *width,

LONG *height,

LONG *offset_x,

LONG *offset_y,

LONG *num_bands,

LONG level);

extern LONG SDEAPI SE_rasterattr_get_extent_by_level

(SE_RASTERATTR handle,

SE_ENVELOPE *envelope,

LFLOAT *offset_x,

LFLOAT *offset_y,

LONG level);

extern LONG SDEAPI SE_rasterattr_set_pyramid_info

(SE_RASTERATTR handle,

LONG max_level,

BOOL skip_level1,

SE_INTERPOLATION_TYPE interpolation);

extern LONG SDEAPI SE_rasterattr_get_pyramid_info

(SE_RASTERATTR handle,

LONG *max_level,

BOOL *skip_level1,

SE_INTERPOLATION_TYPE *interpolation);

extern LONG SDEAPI SE_rasterattr_set_delete_area

(SE_RASTERATTR handle,

const SE_ENVELOPE *area);

extern LONG SDEAPI SE_rasterattr_set_colormap

(SE_RASTERATTR handle,

SE_COLORMAP_TYPE colormap_type,

SE_COLORMAP_DATA_TYPE data_type,

LONG num_entries,

const void *data);

extern LONG SDEAPI SE_rasterattr_set_compression_type

(SE_RASTERATTR handle,

SE_COMPRESSION_TYPE compression);

extern LONG SDEAPI SE_rasterattr_get_compression_type

(SE_RASTERATTR handle,

SE_COMPRESSION_TYPE *type);

#ifdef __cplusplus

};

#endif

#endif


sdetype

/* $Id: sdetype.h,v 1.220 2001/01/22 20:35:02 peter Exp $ */

/***********************************************************************

*

*N  {sdetype.h}  --  Spatial Database Engine Datatypes/Defines Header File

*

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*P  Purpose:

*

*                  Spatial Database Engine Datatypes/Defines Header File

*

*   Copyright 1992-2000, Environmental Systems Research Institute, Inc.

*   All rights reserved.  This software is provided with RESTRICTED AND

*   LIMITED RIGHTS.  Use, duplication, or disclosure by the Government

*   is subject to restrictions as set forth in FAR 52.227-14 (JUN 1987)

*   Alternate III (g) (3) (JUN 1987), FAR 52.227-19 (JUN 1987), or

*   DFARS 252.227-7013 (c) (1) (ii) (OCT 1988), as applicable.

*   Contractor/Manufacturer is Environmental Systems Research Institute,

*   Inc. (ESRI), 380 New York Street., Redlands, California 92373.

*

*E

*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*H  History:

*

*E

***********************************************************************/

#ifndef SDE_TYPES

#define SDE_TYPES

#ifdef __cplusplus

extern "C" {

#endif

#include <stdio.h>

#include <time.h>

#include <limits.h>

#include "sg.h"

#define SE_ALL                     0

/************************************************************

*** Backwards compatibility macros for SDE 3.0 code -- use

*** SE_RELEASE and SE_connection_get_release() instead.

*** At some future point these will probably be removed.

************************************************************/

#ifndef SDE_COMMON

#  define SE_VERSION SE_RELEASE

#  define SE_connection_get_version SE_connection_get_release

#endif /* SDE_COMMON */

/************************************************************

*** ALLOWABLE SHAPE TYPE MASKS FOR LAYERS

************************************************************/

#define SE_NIL_TYPE_MASK           (1L)

#define SE_POINT_TYPE_MASK         (1L<<1)

#define SE_LINE_TYPE_MASK          (1L<<2)

#define SE_SIMPLE_LINE_TYPE_MASK   (1L<<3)

#define SE_AREA_TYPE_MASK          (1L<<4)

#define SE_UNVERIFIED_SHAPE_MASK   (1L<<11)

#define SE_MULTIPART_TYPE_MASK     (1L<<18)

/************************************************************

*** ALLOWABLE STORAGE TYPE MASKS FOR LAYERS

************************************************************/

#define SE_STORAGE_NORMALIZED_TYPE   (1L<<23)

#define SE_STORAGE_SDEBINARY_TYPE    (1L<<24)

#define SE_STORAGE_WKB_TYPE          (1L<<25)

#define SE_STORAGE_SQL_TYPE          (1L<<26)

#define SE_STORAGE_SPATIAL_TYPE      (1L<<27)

#define SE_STORAGE_LOB_TYPE          (1L<<28)

/************************************************************

*** ALLOWABLE LAYER CHARATERISTICS

************************************************************/

#define SE_LAYER_AUTO_REGISTER           (1L<<5)

#define SE_LAYER_HAS_USER_DEFINED_EXTENT (1L<<6)

/************************************************************

*** OGIS Storage Type Declarations

************************************************************/

#define SE_OGIS_STORAGE_NORMALIZED     0

#define SE_OGIS_STORAGE_BINARY         1

#define SE_OGIS_STORAGE_SQLTYPE        2

/************************************************************

*** OGIS Geometry Type Values

************************************************************/

typedef enum {

  SE_OGIS_GEOMETRY          = 0,

  SE_OGIS_POINT             = 1,

  SE_OGIS_CURVE             = 2,

  SE_OGIS_LINESTRING        = 3,

  SE_OGIS_SURFACE           = 4,

  SE_OGIS_POLYGON           = 5,

  SE_OGIS_COLLECTION        = 6,

  SE_OGIS_MULTIPOINT        = 7,

  SE_OGIS_MULTICURVE        = 8,

  SE_OGIS_MULTILINESTRING   = 9,

  SE_OGIS_MULTISURFACE      = 10,

  SE_OGIS_MULTIPOLYGON      = 11

} SE_OGIS_GEOMETRY_TYPES;

/**************************************************************************

*** OBSOLETE DEFINES FOR STORAGE TYPE MASKS FOR LAYERS -- NOT FOR NEW CODE

***************************************************************************/

#define SE_NORMALIZED_TYPE_MASK  SE_STORAGE_NORMALIZED_TYPE

#define SE_EXTERNAL_TYPE_MASK    SE_STORAGE_SPATIAL_TYPE

#define SE_REGISTERED_TYPE_MASK  (1L<<27)

/***************************************/

/****** ACCESS RIGHTS CONSTANTS ********/

/***************************************/

#define SE_SELECT_PRIVILEGE (1<<1)

#define SE_UPDATE_PRIVILEGE (1<<2)

#define SE_INSERT_PRIVILEGE (1<<3)

#define SE_DELETE_PRIVILEGE (1<<4)

/***************************************************/

/****** TABLE MASKS FOR UPDATING DBMS STATS ********/

/***************************************************/

#define SE_UPDATE_ADDS_TABLE_STATS      (1L<<1)

#define SE_UPDATE_DELETES_TABLE_STATS   (1L<<2)

#define SE_UPDATE_EQUIV_TABLE_STATS     (1L<<3)

#define SE_UPDATE_FEATURE_TABLE_STATS   (1L<<4)

#define SE_UPDATE_BUSINESS_TABLE_STATS  (1L<<5)

#define SE_UPDATE_RASTER_TABLE_STATS    (1L<<6)

#define SE_UPDATE_ALL_TABLE_STATS       (SE_UPDATE_ADDS_TABLE_STATS    | \

                                         SE_UPDATE_DELETES_TABLE_STATS | \

                                         SE_UPDATE_EQUIV_TABLE_STATS   | \

                                         SE_UPDATE_FEATURE_TABLE_STATS | \

                                         SE_UPDATE_RASTER_TABLE_STATS  | \

                                         SE_UPDATE_BUSINESS_TABLE_STATS)

/************************************************************

*** LAYER LOCKING MODES

************************************************************/

#define SE_WRITE_LOCK           1

#define SE_READ_LOCK            2

/************************************************************

*** ATTRIBUTE DATA TYPES

************************************************************/

#define SE_SMALLINT_TYPE           1   /* 2-byte Integer */

#define SE_INTEGER_TYPE            2   /* 4-byte Integer */

#define SE_FLOAT_TYPE              3   /* 4-byte Float */

#define SE_DOUBLE_TYPE             4   /* 8-byte Float */

#define SE_STRING_TYPE             5   /* Null Term. Character Array */

#define SE_BLOB_TYPE               6   /* Variable Length Data */

#define SE_DATE_TYPE               7   /* Struct tm Date */

#define SE_SHAPE_TYPE              8   /* Shape geometry (SE_SHAPE) */

#define SE_RASTER_TYPE             9   /* Raster */

#define SE_POINT_TYPE              20  /* Point ADT */

#define SE_CURVE_TYPE              21  /* LineString ADT */

#define SE_LINESTRING_TYPE         22  /* LineString ADT */

#define SE_SURFACE_TYPE            23  /* Polygon ADT */

#define SE_POLYGON_TYPE            24  /* Polygon ADT */

#define SE_GEOMETRYCOLLECTION_TYPE 25  /* MultiPoint ADT */

#define SE_MULTISURFACE_TYPE       26  /* LineString ADT */

#define SE_MULTICURVE_TYPE         27  /* LineString ADT */

#define SE_MULTIPOINT_TYPE         28  /* MultiPoint ADT */

#define SE_MULTILINESTRING_TYPE    29  /* MultiLineString ADT */

#define SE_MULTIPOLYGON_TYPE       30  /* MultiPolygon ADT */

#define SE_GEOMETRY_TYPE           31  /* Geometry ADT */

/************************************************************

*** CONSTANTS DEFINING LIMITS

************************************************************/

#define SE_MAX_MESSAGE_LENGTH      512 /* MAXIMUM ERROR MESSAGE LENGTH */

#define SE_MAX_SQL_MESSAGE_LENGTH 4096 /* MAXIMUM SQL ERROR MESSAGE LENGTH */

#define SE_MAX_PATH_LEN            512 /* MAXIMUM FILE PATH NAME LENGTH */

#define SE_MAX_CONFIG_KEYWORD_LEN  32  /* MAXIMUM CONFIGURATION KEYWORD

                                          LENGTH */

#define SE_MAX_CONFIG_STR_LEN     2048 /* MAXIMUM CONFIGURATION STRING LENGTH */

#define SE_MAX_DESCRIPTION_LEN     64  /* MAXIMUM LAYER DESCRIPTION LENGTH */

#define SE_MAX_FEAT_CLASS_LEN      128 /* MAXIMUM FILEINFO FEATUE CLASS

                                          DESCRIPTION LENGTH */

#define SE_MAX_COLUMN_LEN          32  /* MAXIMUM COLUMN NAME LENGTH */

#define SE_MAX_TABLE_LEN           160 /* MAXIMUM TABLE NAME LENGTH */

#define SE_MAX_SCHEMA_TABLE_LEN    30  /* MAXIMUN TABLE 'ONLY' NAME LENGTH */

#define SE_MAX_ALIAS_LEN           32  /* MAXIMUM TABLE ALIAS LENGTH */

#define SE_MAX_ENTITY_LEN          256 /* MAXIMUM ENTITY TYPE LENGTH */

#define SE_MAX_HINT_LEN            1024/* MAXIMUM DBMS HINT LENGTH */

#define SE_MAX_OWNER_LEN           32  /* MAXIMUM TABLE OWNER NAME LENGTH */

#define SE_MAX_INDEX_LEN           160 /* MAXIMUM INDEX NAME LENGTH */

#define SE_MAX_COLUMNS             256 /* MAXIMUM NUMBER OF COLUMNS */

#define SE_MAX_ANNO_TEXT_LEN       255 /* MAXIMUM ANNOTATION TEXT LENGTH */

#define SE_MAX_VERSION_LEN         64  /* MAXIMUM VERSION NAME LENGTH */

#define SE_MAX_VERSION_INPUT_LEN   62  /* MAXIMUM USER-SUPPLIED VERSION NAME

                                          LENGTH */

#define SE_MAX_OBJECT_NAME_LEN     160 /* MAXIMUM OBJECT NAME LENGTH */

#define SE_MAX_METADATA_CLASS_LEN  32  /* MAXIMUM CLASS NAME LENGTH */

#define SE_MAX_METADATA_PROPERTY_LEN 32/* MAXIMUM PROPERTY NAME LENGTH */

#define SE_MAX_METADATA_VALUE_LEN  255 /* MAXIMUM VALUE LENGTH */

#define SE_MAX_LOCATOR_PROPERTY_LEN 32 /* MAXIMUM PROPERTY NAME LENGTH */

#define SE_MAX_LOCATOR_VALUE_LEN  255 /* MAXIMUM VALUE LENGTH */

#define SE_MAX_SERVER_LEN          32  /* MAXIMUM SERVER NAME LENGTH */

#define SE_MAX_INSTANCE_LEN        32  /* MAXIMUM INSTANCE NAME LENGTH */

#define SE_MAX_PASSWORD_LEN        32  /* MAXIMUM PASSWORD NAME LENGTH */

#define SE_MAX_DATABASE_LEN        32  /* MAXIMUM DATABASE NAME LENGTH */

#define SE_MAX_SCL_CODESIZE        256 /* MAXIMUM SCL OBJECT CODE LENGTH */

#define SE_MAX_FUNCTION_LEN        32  /* MAXIMUM FUNCTION NAME LENGTH */

#define SE_MAX_KEYWORD_LEN         32  /* MAXIMUM DBMS RESERVED KEYWORD LENGTH */

#define SE_MAX_LOGFILE_NAME_LEN    64  /* MAXIMUM UNQUALIFIED LOGFILE NAME LENGTH */

/* CONSTANTS ALLOWING FOR FULLY QUALIFIED TABLE AND COLUMN NAMES */

#define SE_QUALIFIED_TABLE_NAME    (SE_MAX_DATABASE_LEN + SE_MAX_OWNER_LEN +\

                                    SE_MAX_TABLE_LEN + 2)

#define SE_QUALIFIED_COLUMN_LEN    (SE_QUALIFIED_TABLE_NAME + \

                                    SE_MAX_COLUMN_LEN + 1)

#define SE_QUALIFIED_VERSION_LEN   (SE_MAX_OWNER_LEN + SE_MAX_VERSION_LEN + 1)

#define SE_QUALIFIED_LOGFILE_NAME  (SE_MAX_DATABASE_LEN + SE_MAX_OWNER_LEN +\

                                    SE_MAX_LOGFILE_NAME_LEN + 2)

/************************************************************

*** Minimum gridsize for Layer

************************************************************/

#define SE_MIN_GRIDSIZE        256 /* MINIMUM LAYER GRIDSIZE (system units) */

/************************************************************

*** ATTRIBUTE INDICATOR VALUES

************************************************************/

#define SE_IS_NULL_VALUE       1

#define SE_IS_NOT_NULL_VALUE   2

/************************************************************

*** LOG FILE DEFINES

************************************************************/

#define SE_INPUT_MODE              0

#define SE_OUTPUT_MODE             1

#define SE_EXTEND_MODE             2

#define SE_OUTPUT_NO_DELETE_MODE   3

#define SE_LOG_PERSISTENT          1

#define SE_LOG_TEMPORARY           2

#define SE_LOG_FOR_TABLE           1

#define SE_LOG_FOR_LAYER           2

#define SE_LOG_INTERSECT           1

#define SE_LOG_UNION               2

#define SE_LOG_DIFFERENCE          3

#define SE_LOG_SYMDIFF             4

/************************************************************

*** SPATIAL REFERENCE DEFINES

************************************************************/

#define SE_MAX_SPATIALREF_AUTHNAME_LEN 256

#define SE_MAX_SPATIALREF_SRTEXT_LEN 2048

typedef struct _SE_SpatialRef *SE_SPATIALREFINFO;

/************************************************************

*** ALLOWABLE SPATIAL INDEX TYPE DEFINES FOR LAYERS

*** NOTE: THEIR AVAILABILITY IS DBMS DEPENDENT.

************************************************************/

#define  SE_SPATIALINDEX_MULTI_GRID        1

#define  SE_SPATIALINDEX_DBTUNE            0

#define  SE_SPATIALINDEX_NONE             -1

#define  SE_SPATIALINDEX_RTREE            -2

#define  SE_SPATIALINDEX_FIXED_QUADTREE   -3

#define  SE_SPATIALINDEX_HYBRID_QUADTREE  -4

#define  SE_SPATIALINDEX_UNKNOWN          -5

/************************************************************

*** SEARCH ORDERS

************************************************************/

#define     SE_ATTRIBUTE_FIRST  1   /* DO NOT USE SPATIAL INDEX */

#define     SE_SPATIAL_FIRST    2   /* USE SPATIAL INDEX */

#define     SE_OPTIMIZE         3   /* LET SDE DECIDE */

/************************************************************

*** QUERY TYPES

************************************************************/

#define  SE_QUERYTYPE_ATTRIBUTE_FIRST  1

#define  SE_QUERYTYPE_JFA              2

#define  SE_QUERYTYPE_JSF              3

#define  SE_QUERYTYPE_JSFA             4

#define  SE_QUERYTYPE_V3               5

#define  SE_MAX_QUERYTYPE              5

/************************************************************

*** CONSTANTS FOR SE_PTABLE_SNAP routine

************************************************************/

#define SE_SNAP2D      0

#define SE_SNAP3D      1

/************************************************************

*** INDIVIDUAL BIT-MASKS FOR STATISTICS OPERATIONS

************************************************************/

#define SE_MIN_STATS      0x0001

#define SE_AVERAGE_STATS  0x0002

#define SE_MAX_STATS      0x0004

#define SE_STD_DEV_STATS  0x0008

#define SE_COUNT_STATS    0x0010

#define SE_DISTINCT_STATS 0x0020

#define SE_BASIC_STATS    SE_MIN_STATS | SE_AVERAGE_STATS | SE_MAX_STATS | \

                          SE_STD_DEV_STATS | SE_COUNT_STATS

#define SE_ALL_STATS      SE_BASIC_STATS | SE_DISTINCT_STATS

/************************************************************

*** CONCURRENCY POLICIES

************************************************************/

#define SE_UNPROTECTED_POLICY  0

#define SE_ONE_THREAD_POLICY   1

#define SE_TRYLOCK_POLICY      2

#define SE_LOCK_POLICY         3

/********************************************************************

*** SPATIAL FILTER TYPES FOR SPATIAL CONSTRAINTS AND STABLE SEARCHES

*********************************************************************/

#define SE_SHAPE_FILTER  1

#define SE_ID_FILTER     2

/************************************************************

*** STABLE OPTIONS

************************************************************/

#define SE_DELETE_CURRENT (LONG)0

/************************************************/

/***  SDE ROWID pseudo-column -- Obsolete!!!! ***/

/***  Only present for backwards compatibity: ***/

/***  Use registered tables row ID's instead. ***/

/************************************************/

#define SE_ROW_ID   "SE_ROW_ID"

/**************************

*  Binary Conversion Enum *

**************************/

typedef enum

{

  SE_BINARY_CONVERSION_TO_LOB      = 1,

  SE_BINARY_CONVERSION_TO_LONGRAW  = 2

} SE_BINARY_CONVERSION;

/*******************************/

/***  Shape attribute names  ***/

/*******************************/

#define SE_SHAPE_ATTRIBUTE_NUMOFPTS   0

#define SE_SHAPE_ATTRIBUTE_ENTITY     1

#define SE_SHAPE_ATTRIBUTE_XMIN       2

#define SE_SHAPE_ATTRIBUTE_XMAX       3

#define SE_SHAPE_ATTRIBUTE_YMIN       4

#define SE_SHAPE_ATTRIBUTE_YMAX       5

#define SE_SHAPE_ATTRIBUTE_ZMIN       6

#define SE_SHAPE_ATTRIBUTE_ZMAX       7

#define SE_SHAPE_ATTRIBUTE_MMIN       8

#define SE_SHAPE_ATTRIBUTE_MMAX       9

#define SE_SHAPE_ATTRIBUTE_AREA      10

#define SE_SHAPE_ATTRIBUTE_LENGTH    11

#define SE_SHAPE_ATTRIBUTE_TEXT      12

#define SE_SHAPE_ATTRIBUTE_FID       13

/**********************************/

/*****   DBMS IDENTIFIERS *********/

/**********************************/

#define SE_DBMS_IS_UNKNOWN  -1

#define SE_DBMS_IS_OTHER     0

#define SE_DBMS_IS_ORACLE    1

#define SE_DBMS_IS_INFORMIX  2

#define SE_DBMS_IS_SYBASE    3

#define SE_DBMS_IS_DB2       4

#define SE_DBMS_IS_SQLSERVER 5

#define SE_DBMS_IS_ARCINFO   6

#define SE_DBMS_IS_IUS       7

#define SE_DBMS_IS_DB2_EXT   8

#define SE_DBMS_IS_ARCSERVER 9

#define SE_DBMS_IS_JET       10

/******************************/

/***  DBMS Properties  ***/

/******************************/

#define SE_DBMS_CAN_RENAME                      (1<<0)

#define SE_DBMS_CAN_ADD_COL                     (1<<1)

#define SE_DBMS_CAN_DROP_COL                    (1<<2)

#define SE_DBMS_OWNER_PREFIXES_TABLE            (1<<3)

#define SE_DBMS_IS_CASE_SENSITIVE               (1<<4)

#define SE_DBMS_SUPPORT_DELIMITED_IDENTIFIER    (1<<5)

#define SE_DBMS_IS_CASE_SENSITIVE_IN_COMPARISON (1<<6)

#define SE_DBMS_IS_USER_CASE_SENSITIVE          (1<<7)

#define SE_DBMS_IS_PASSWORD_CASE_SENSITIVE      (1<<8)

/*****************************************************/

/******* Lock type values for SE_TABLE_LOCK *******/

/*****************************************************/

#define SE_TABLE_SHARED_SCHEMA_LOCK   1

#define SE_TABLE_EXCLUSIVE_SCHEMA_LOCK   2

/****************************************************************************/

/***  INSTANCE MODES -- Returned in system_mode field of SE_INSTANCE_STATUS */

/****************************************************************************/

#define SE_INSTANCE_ACCEPTING     1

#define SE_INSTANCE_BLOCKING      2

/*****************************************************/

/******* Lock type values for SE_INSTANCE_LOCK *******/

/*****************************************************/

#define SE_INSTANCE_LAYER_READ_LOCK   0

#define SE_INSTANCE_LAYER_WRITE_LOCK  1

#define SE_INSTANCE_AREA_READ_LOCK    2

#define SE_INSTANCE_AREA_WRITE_LOCK   3

#define SE_INSTANCE_AUTO_LOCK         4

/************************************/

/***  SE_instance_control() options */

/************************************/

#define SE_CONTROL_INSTANCE_SHUTDOWN 1

#define SE_CONTROL_INSTANCE_PAUSE    2

#define SE_CONTROL_INSTANCE_RESUME   3

#define SE_CONTROL_INSTANCE_KILL     4

#define SE_CONTROL_INSTANCE_KILL_ALL 5

#define SE_CONTROL_INSTANCE_START    6

/****************************************/

/***  SE_ANNO text justification values */

/****************************************/

#define SE_ANNO_UPPER_LEFT    1

#define SE_ANNO_UPPER_CENTER  2

#define SE_ANNO_UPPER_RIGHT   3

#define SE_ANNO_CENTER_LEFT   4

#define SE_ANNO_CENTER_CENTER 5

#define SE_ANNO_CENTER_RIGHT  6

#define SE_ANNO_LOWER_LEFT    7

#define SE_ANNO_LOWER_CENTER  8

#define SE_ANNO_LOWER_RIGHT   9

/************************************/

/***  Registered Table Row ID Types */

/************************************/

#define SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE   1

#define SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER  2

#define SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE  3

/*********************************************************/

/***  SDE-maintained rowid columns allocation methods  ***/

/*********************************************************/

#define SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE 1

#define SE_REGISTRATION_ROW_ID_ALLOCATION_MANY   2

/************************************/

/***   Metadata Object Types      ***/

/************************************/

#define SE_METADATA_OBJECT_TYPE_TABLE   1

#define SE_METADATA_OBJECT_TYPE_LOCATOR 2

/************************************/

/***   Locator Status             ***/

/************************************/

#define SE_LOCATOR_TEMPLATE  0

#define SE_LOCATOR_VALIDATED 1

#define SE_LOCATOR_DEFINED   2

/*********************************************/

/***   External FileInfo Object Types      ***/

/*********************************************/

#define SE_FILEINFO_OBJECT_TYPE_EXPORT_FMT   1

#define SE_FILEINFO_OBJECT_TYPE_SHAPEFILE    2

#define SE_FILEINFO_OBJECT_TYPE_COVERAGE     3

/********************************/

/***  Version Reserved Names  ***/

/********************************/

#define SE_DEFAULT_VERSION_NAME  "DEFAULT"

#define SE_QUALIFIED_DEFAULT_VERSION_NAME "sde" "." SE_DEFAULT_VERSION_NAME

/******************************/

/***  Version Access Types  ***/

/******************************/

#define SE_VERSION_ACCESS_PUBLIC     0

#define SE_VERSION_ACCESS_PROTECTED  1

#define SE_VERSION_ACCESS_PRIVATE    2

/****************************/

/***  State Reserved Ids  ***/

/****************************/

#define SE_BASE_STATE_ID      (0)

#define SE_NULL_STATE_ID     (-1)

#define SE_DEFAULT_STATE_ID  (-2)

/*************************************/

/***  State Conflict Filter Types  ***/

/*************************************/

#define SE_STATE_DIFF_NOCHECK         0

#define SE_STATE_DIFF_NOCHANGE_UPDATE 1

#define SE_STATE_DIFF_NOCHANGE_DELETE 2

#define SE_STATE_DIFF_UPDATE_NOCHANGE 3

#define SE_STATE_DIFF_UPDATE_UPDATE   4

#define SE_STATE_DIFF_UPDATE_DELETE   5

#define SE_STATE_DIFF_INSERT          6

/*******************************************************/

/***  State Lock Types (for SE_INSTANCE_STATE_LOCK)  ***/

/*******************************************************/

#define SE_STATE_TREE_SHARED_LOCK     0

#define SE_STATE_TREE_EXCLUSIVE_LOCK  1

#define SE_STATE_SHARED_LOCK          2

#define SE_STATE_EXCLUSIVE_LOCK       3

#define SE_STATE_SHARED_AUTOLOCK      4

#define SE_STATE_EXCLUSIVE_AUTOLOCK   5

/********************************/

/***  Table Rowlocking Types  ***/

/********************************/

#define SE_ROWLOCKING_LOCK_ON_QUERY       (1)

#define SE_ROWLOCKING_LOCK_ON_INSERT      (1<<1)

#define SE_ROWLOCKING_LOCK_ON_UPDATE      (1<<2)

#define SE_ROWLOCKING_UNLOCK_ON_QUERY     (1<<3)

#define SE_ROWLOCKING_UNLOCK_ON_UPDATE    (1<<4)

#define SE_ROWLOCKING_FILTER_MY_LOCKS     (1<<5)

#define SE_ROWLOCKING_FILTER_OTHER_LOCKS  (1<<6)

#define SE_ROWLOCKING_FILTER_UNLOCKED     (1<<7)

#define SE_ROWLOCKING_LOCK_ONLY           (1<<8)

/****************************/

/***  Object Lock Types   ***/

/****************************/

#define SE_OBJECTLOCK_NO_LOCK_SET        (99)

#define SE_OBJECTLOCK_SHARED_LOCK         (0)

#define SE_OBJECTLOCK_EXCLUSIVE_LOCK      (1)

#define SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK  (2)

/*****************************/

/***  Version Lock Types   ***/

/*****************************/

#define SE_VERSION_SHARED_LOCK         (0)

#define SE_VERSION_EXCLUSIVE_LOCK      (1)

#define SE_VERSION_EXCLUSIVE_AUTOLOCK  (2)

/******************************/

/***  Trace Mode Types      ***/

/******************************/

#define SE_TRACE_API_BRIEF      (1<<0)

#define SE_TRACE_API_VERBOSE    (1<<1)

#define SE_TRACE_TIME_MINSEC    (1<<2)

#define SE_TRACE_TIME_HRMINSEC  (1<<3)

#define SE_TRACE_FLUSH          (1<<4)

/*********************************/

/***  Raster Interleave Types  ***/

/*********************************/

typedef enum {

    SE_RASTER_INTERLEAVE_BIP,        /* interleave by pixel */

    SE_RASTER_INTERLEAVE_BIL,        /* interleave by line */

    SE_RASTER_INTERLEAVE_BSQ         /* band sequential */

} SE_RASTER_INTERLEAVE_TYPE;

/*********************************/

/***   Interpolation Methods   ***/

/*********************************/

typedef enum {

    SE_INTERPOLATION_NONE,           /* no interpolation */

    SE_INTERPOLATION_NEAREST,        /* nearest-neighbor interpolation */

    SE_INTERPOLATION_BILINEAR,       /* bilinear interpolation */

    SE_INTERPOLATION_BICUBIC         /* bicubic interpolation */

} SE_INTERPOLATION_TYPE;

/********************************/

/*** Raster Callback Function ***/

/********************************/

typedef LONG (* SE_RASTER_PROC) (

    void              *user_data,

    void              **pixels,

    LONG              *pixels_length,

    void              **bitmask,

    LONG              *bitmask_length

);

/********************************/

/***    Bin Function Types    ***/

/********************************/

typedef enum {

    SE_BIN_FUNCTION_NONE = 0,

    SE_BIN_FUNCTION_AUTO,

    SE_BIN_FUNCTION_DIRECT,

    SE_BIN_FUNCTION_LINEAR,

    SE_BIN_FUNCTION_LOGARITHM,

    SE_BIN_FUNCTION_EXPLICIT

} SE_BIN_FUNCTION_TYPE;

/********************************/

/***  Raster Colormap Types   ***/

/********************************/

typedef enum {

    SE_COLORMAP_NONE = 0,

    SE_COLORMAP_RGB,

    SE_COLORMAP_RGBA

} SE_COLORMAP_TYPE;

/********************************/

/***  Colormap's Data Types   ***/

/********************************/

typedef enum {

    SE_COLORMAP_DATA_BYTE,

    SE_COLORMAP_DATA_SHORT

} SE_COLORMAP_DATA_TYPE;

/***************************************************************************/

/***  function_id Constants(total 50 function constants). ***/

/***************************************************************************/

/* The string functions */

typedef enum {

   SE_DBMS_FUNCTION_UPPERCASE,       /* 0:Returns char in upper case */

   SE_DBMS_FUNCTION_LOWERCASE,       /* 1:Returns char in lower case */

   SE_DBMS_FUNCTION_CONCAT,          /* 2:Returns char1 concatenated with char2 */

   SE_DBMS_FUNCTION_ASCII,           /* 3:Returns decimal representation of char c */

   SE_DBMS_FUNCTION_LENGTH,          /* 4:Return length in CHAR */

   SE_DBMS_FUNCTION_LENGTHB,         /* 5:Returns length in bytes */

   SE_DBMS_FUNCTION_CHR,             /* 6:Returns the character of the binary equivalent */

   SE_DBMS_FUNCTION_LTRIM,           /* 7:remove spaces from the left */

   SE_DBMS_FUNCTION_RTRIM,           /* 8:remove trailing from the right */

   SE_DBMS_FUNCTION_SUBSTR,          /* 9:Returns a portion of char at M and N c long */

   SE_DBMS_FUNCTION_SUBSTRB,         /* 10:Returns a portion of byes at m and n bytes long */

   SE_DBMS_FUNCTION_SOUNDEX,         /* 11:Returns a char containing the phonetic representation of char2 */

   SE_DBMS_FUNCTION_TRANSLATE,       /* 12:Returns char with each char in from replaced by its corresponding char in to */

   SE_DBMS_FUNCTION_TRIM,            /* 13:strip the leading, trailing, * or both from the string */

   SE_DBMS_FUNCTION_CEIL,            /* 14:Returns smallest integer >= n */

   SE_DBMS_FUNCTION_FLOOR,           /* 15:Returns largest integer <= n */

   SE_DBMS_FUNCTION_ROUND,           /* 16:Returns n rounded to m place of n */

   SE_DBMS_FUNCTION_LN,              /* 17:Returns natural logarithm of n */

   SE_DBMS_FUNCTION_LOG10,           /* 18:Returns logarithm of base 10 */

   SE_DBMS_FUNCTION_LOG,             /* 19:Returns logarithm of base n */

   SE_DBMS_FUNCTION_MOD,             /* 20:Returns the reminder of m divided by n */

   SE_DBMS_FUNCTION_POWER,           /* 21:Returns the n power of m */

   SE_DBMS_FUNCTION_SIGN,            /* 22:Returns -1 for negative and 0 for zero and 1 for positive */

   SE_DBMS_FUNCTION_TRUNC,           /* 23:Returns n truncted to m decimal place */

   SE_DBMS_FUNCTION_SINH,            /* 24:Returns hyperbolic sine of x */

   SE_DBMS_FUNCTION_COSH,            /* 25:Returns hyperbolic cosine of x */

   SE_DBMS_FUNCTION_TANH,            /* 26:Returns hyperbolic tangent of x */

   SE_DBMS_FUNCTION_ASIN,            /* 27:Returns the arcsine of x */

   SE_DBMS_FUNCTION_ACOS,            /* 28:Returns the arccosine of x */

   SE_DBMS_FUNCTION_ATAN,            /* 29:Returns the arctangent of x */

   SE_DBMS_FUNCTION_HEX,             /* 30:Returns the hexadecimal representation of a */

   SE_DBMS_FUNCTION_SIN,             /* 31:Returns sine of x */

   SE_DBMS_FUNCTION_COS,             /* 32:Returns cosine  of x */

   SE_DBMS_FUNCTION_TAN,             /* 33:Returns tangent of x */

   SE_DBMS_FUNCTION_EXTRACT,         /* 34:Returns a numeric value of a date */

   SE_DBMS_FUNCTION_BITLEN,          /* 35:Returns the string length in bits */

   SE_DBMS_FUNCTION_POSITION,        /* 36:Returns the a numeric value indicates the the starting position of the search string in the source string */

   SE_DBMS_FUNCTION_ABS,             /* 37:Returns the absolute value of x */

   SE_DBMS_FUNCTION_VARIANCE,        /* 38:Returns variance of x */

   SE_DBMS_FUNCTION_STDDEV,          /* 39:Returns the standard deviation */

   SE_DBMS_FUNCTION_AVG,             /* 40:Returns the average value of n */

   SE_DBMS_FUNCTION_COUNT,           /* 41:Returns the number of rows in the query */

   SE_DBMS_FUNCTION_MAX,             /* 42:Returns the maximum value of expression */

   SE_DBMS_FUNCTION_MIN,             /* 43:Returns the minimum value of expression */

   SE_DBMS_FUNCTION_SUM,             /* 44:Returns the sum of values of n */

   SE_DBMS_FUNCTION_COALSCE,         /* 45:Returns the first NOT_NULL value */

   SE_DBMS_FUNCTION_CONVERT,         /* 46:The convert function  */

   SE_DBMS_FUNCTION_CAST,            /* 47:Converts one data type to another one */

   SE_DBMS_FUNCTION_USER             /* 48:Returns the current user name */

} SE_SQL_FUNCTION;

/* SQL special characters for DBMSs */

typedef enum

{

  SE_SQL_WILDCARD_MANYMATCH_CHAR = 49, /* always start from the total number of

                                          function constants */

  SE_SQL_WILDCARD_SINGLEMATCH_CHAR,

  SE_SQL_DELIMITED_CHAR_PREFIX,

  SE_SQL_DELIMITED_CHAR_SUFFIX,

  SE_SQL_DEFAULT_ESCAPE_CHAR_PREFIX,

  SE_SQL_DEFAULT_ESCAPE_CHAR_SUFFIX,

  SE_SQL_ESCAPE_CLAUSE_PREFIX,

  SE_SQL_ESCAPE_CLAUSE_SUFFIX

} SE_SQL_SPECIAL_CHARACTER;

/***************************************************************************/

/***  annotation alignment constants                                     ***/

/***************************************************************************/

#define SE_ANNO_ALIGN_DEFAULT   0

#define SE_ANNO_ALIGN_LEFT      1

#define SE_ANNO_ALIGN_RIGHT     2

#define SE_ANNO_ALIGN_CENTER    3

#define SE_ANNO_ALIGN_AUTOMATIC 4

/***************************************************************************/

/***  Shape Data Types (Re)Definitions (see sg.h for full definition)    ***/

/***************************************************************************/

typedef SgSimpleShapePoint  SE_POINT;

typedef SgShapePoint        SE_SDEPOINT;

typedef SgShapeEnvelope     SE_ENVELOPE;

typedef SgCoordRef          SE_COORDREF;

/**************************/

/***  Shape Build Modes ***/

/**************************/

typedef enum {

  SE_Build_Polygons_From_All_Rings              = 0,

  SE_Build_Polygons_From_Clockwise_Rings        = 3,

  SE_Build_Polygons_From_CounterClockwise_Rings = 2,

  SE_Build_SimpleLines                          = 4,

  /* The following codes are obsolete, and are only included for backwards

     compatibility. */

  SE_Build_Clockwise_Polygons                   = 0,

  SE_Build_CounterClockwise_Polygons            = 1,

  SE_Build_Forward_Polygons                     = 2,

  SE_Build_Backward_Polygons                    = 3

} SE_BUILD_MODE;

/****************************/

/*** Shape Rotation Modes ***/

/****************************/

typedef enum {

  SE_DEFAULT_ROTATION,

  SE_LEFT_HAND_ROTATION,

  SE_RIGHT_HAND_ROTATION

} SE_ROTATION_TYPE;

/************************************************************

*** LOG FILE TYPES

************************************************************/

typedef int                 SE_LOG;

typedef struct _SE_LogFile  *SE_LOGINFO;

/************************************************************

*** SDE BLOB ATTRIBUTE STRUCTURE "SE_BLOB_INFO"

************************************************************/

typedef struct {

    LONG        blob_length;            /* LENGTH IN BYTES OF BLOB */

    CHAR        *blob_buffer;           /* LINEAR BUFFER OF BLOB DATA */

} SE_BLOB_INFO;

/************************************************************

*** SDE COLUMN DEFINITION STRUCTURE "SE_COLUMN_DEF"

************************************************************/

typedef struct {

    CHAR  column_name[SE_MAX_COLUMN_LEN]; /* the column name */

    LONG  sde_type;                       /* the SDE data type */

    LONG  size;                           /* the size of the column values */

    SHORT decimal_digits;                 /* number of digits after decimal */

    BOOL  nulls_allowed;                  /* allow NULL values ? */

    SHORT row_id_type;                    /* column's use as table's row id */

} SE_COLUMN_DEF;

/************************************************************

*** SDE SSA INPUT DEFINITION STRUCTURE "SE_INPUT_DESC"

************************************************************/

typedef struct {

    LONG  sde_type;                       /* the SDE data type */

    LONG  size;                           /* the size of the input values */

} SE_INPUT_DESC;

/************************************************************

*** SDE SQL CONSTRUCTOR

************************************************************/

typedef struct {

    LONG       num_tables;    /* number of tables */

    CHAR       **tables;      /* table names */

    CHAR       *where;        /* where clause */

} SE_SQL_CONSTRUCT;

/************************************************************

*** SDE INDEX DESCRIPTION STRUCTURE "SE_INDEX_DEF"

************************************************************/

typedef struct {

    SHORT num_columns;                    /* number of columns */

    CHAR  **column_name;                  /* the column name */

    CHAR  index_name[SE_MAX_COLUMN_LEN];   /* the index name */

    BOOL  unique;                         /* unique index */

    BOOL  *ascending;                      /* ascending order */

} SE_INDEX_DEF;

/************************************************************

*** SDE POINT TABLE STRUCTURES

************************************************************/

typedef struct _SE_PointTable *SE_PTABLE;

typedef struct

{

    LFLOAT  x, y, z;

    ULONG   mask;

} SE_SNAPPED_POINT;

/************************************************************

*** SDE RELEASE/VERSION STRUCTURE

************************************************************/

typedef struct

{

    LONG    major;          /* Major release    */

    LONG    minor;          /* Minor release    */

    LONG    bug;            /* Bug version      */

    CHAR    desc[96];       /* Description      */

    LONG    release;        /* Release Number   */

}   SE_RELEASE;

/************************************************************

*** SDE SHAPE HANDLE

************************************************************/

typedef struct _SE_ShapeRecord *SE_SHAPE;

/************************************************************

*** SDE ANNOTATION HANDLE

************************************************************/

typedef struct _SE_AnnoRecord *SE_ANNO;

/************************************************************

*** SDE EXTERNAL DATA FILE HANDLE

************************************************************/

typedef struct _SE_ExternalFileInfo *SE_FILEINFO;

/************************************************************

*** SDE LAYER HANDLE

************************************************************/

typedef struct _SE_LayerRecord *SE_LAYERINFO;

/************************************************************

*** SDE METADATA HANDLE

************************************************************/

typedef struct _SE_MetaData *SE_METADATAINFO;

/************************************************************

*** SDE QUERY HANDLE

************************************************************/

typedef struct _SE_QueryInfo *SE_QUERYINFO;

/************************************************************

*** SDE REGISTRATION HANDLE

************************************************************/

typedef struct _SE_Registration *SE_REGINFO;

/************************************************************

*** SDE VERSION HANDLE

************************************************************/

typedef struct _SE_VersionRecord *SE_VERSIONINFO;

/************************************************************

*** SDE STATE HANDLE

************************************************************/

typedef struct _SE_StateRecord *SE_STATEINFO;

/************************************************************

*** SDE LOCATOR HANDLE

************************************************************/

typedef struct _SE_Locator *SE_LOCATORINFO;

/************************************************************

*** SDE OBJECTLOCK HANDLE

************************************************************/

typedef struct _SE_ObjectLock *SE_OBJECTLOCKINFO;

/************************************************************

*** SDE CONNECTION HANDLE

************************************************************/

typedef struct _SE_ClientRecord *SE_CONNECTION;

/************************************************************

*** SDE STREAM HANDLE

************************************************************/

typedef struct _SE_StreamRecord *SE_STREAM;

/************************************************************

*** SDE SPATIAL FILTER STRUCTURE

************************************************************/

typedef struct {

  CHAR   table[SE_QUALIFIED_TABLE_NAME];    /* the spatial table name */

  CHAR   column[SE_MAX_COLUMN_LEN];         /* the spatial column name */

  LONG   filter_type;                       /* the type of spatial filter */

  union

  {

    SE_SHAPE    shape;                      /* a shape object */

    struct

    {

      LONG  id;                             /* A SDE_ROW_ID id for a shape */

      CHAR  table[SE_QUALIFIED_TABLE_NAME]; /* The shape's spatial table */

    } id;

  } filter;

  LONG  method;                            /* the search method to satisfy */

  BOOL  truth;         /* TRUE to pass the test, FALSE if it must NOT pass */

  char  *cbm_source ;                   /* set ONLY if the method is SM_CBM */

  UCHAR *cbm_object_code ;                      /* internal system use only */

} SE_FILTER;

/************************************************************

*** SDE STREAM SPECIFICATION

************************************************************/

typedef struct {

    LONG  min_size;            /* minimum size of buffer */

    LONG  max_size;            /* total size of buffer */

    LONG  min_objects;         /* minimum number of objects to put in buffer */

    LONG  max_array_size;      /* maximum number of elements per array */

    LONG  attribute_bytes;     /* attribute array buffer size */

    LONG  shape_point_bytes;   /* shape geometry array buffer size */

    LONG  blob_bytes;          /* blob array buffer size */

    LONG  max_bytes_per_blob;  /* maximum individual blob size in array fetch*/

    LONG  stream_pool_size;    /* minimum # of streams to keep in the pool */

    LONG  raster_buf_size;     /* raster buffer size */

} SE_STREAM_SPEC;

/* Stream info structure passed to SSA at initialization time. */

typedef struct _SE_StreamInfo {

  SE_STREAM_SPEC   stream_spec;        /* Stream settings. */

  SE_LOG           logfile;            /* Output logfile handle. */

  BOOL             logfile_only;       /* Don't return rows, only log rows. */

  LONG             rowlock_action;     /* Automatic row locking rule. */

  const SE_FILTER  *spatial_filters;   /* Current spatial filters. */

  SHORT            num_filters;        /* Number of spatial filters. */

  BOOL             buffered_write;     /* Buffered I/O on or off. */

  LONG             state_id;           /* Current state id. */

  LONG             difference_id;      /* Current difference id. */

  LONG             difference_type;    /* Current difference type. */

} SE_STREAM_INFO;

/************************************************************

*** SDE STATISTICS STRUCTURES

************************************************************/

typedef struct {

    LONG        freq;          /* frequency of value */

    union {

        CHAR      *str_val;    /* SE_STRING_TYPE value */

        LONG      int_val;     /* SE_INTEGER_TYPE value */

        LFLOAT    double_val;  /* SE_DOUBLE_TYPE value */

        struct tm date_val;    /* SE_DATE_TYPE value */

    }uval;

}  SE_VALUE;

typedef struct {

    LONG        num_distinct;  /* number of distinct values */

    LONG        type;          /* value type */

    SE_VALUE    *values;       /* array of counts and union'ed values */

}  SE_DISTINCT;

typedef struct {

    LONG        count;         /* number of rows */

    LFLOAT      min;           /* minimum value */

    LFLOAT      average;       /* average value */

    LFLOAT      max;           /* maximum value */

    LFLOAT      std_dev;       /* standard deviation */

    SE_DISTINCT *distinct;     /* distinct info */

}  SE_STATS;

/************************************************************

*** SDE ERROR STRUCTURE

************************************************************/

typedef struct {

    LONG sde_error;                          /* SDE error code */

    LONG ext_error;                          /* DBMS or OS errno code */

    CHAR err_msg1[SE_MAX_MESSAGE_LENGTH];    /* DBMS or SE_error_get_string

                                                msg */

    CHAR err_msg2[SE_MAX_SQL_MESSAGE_LENGTH];/* Second DBMS error, if

                                                applicable */

} SE_ERROR;

/************************************************************

*** SDE FEATURE TABLE STRUCTURES

************************************************************/

typedef struct _SE_STableRec *SE_STABLE;

/************************************************************

*** SE_layer_statistics STRUCTURES

************************************************************/

typedef struct {

  LONG     features;            /* Features indexed by this grid level. */

  LONG     indexRecords;        /* Index records in this grid level. */

  LONG     groupCounts[8];      /* Index rec count by group: <=4, >4, >10, >25,

                                                      >50, >100, >250, >500. */

  LONG     maxFPG;              /* Maximum number of features per grid cell. */

  LONG     gridCells;           /* # of grid cells in this level. */

  LONG     featuresInside1;     /* # of features wholly inside one grid cell. */

} SE_GRID_STATS;

typedef struct {

  CHAR          table[SE_QUALIFIED_TABLE_NAME]; /* Spatial table. */

  CHAR          column[SE_MAX_COLUMN_LEN];      /* Spatial column. */

  LONG          nGrids;                         /* # of spatial index grids. */

  SE_GRID_STATS grids[3];                       /* Individual grid stats. */

} SE_SI_STATS;

typedef struct {                 /*** Layer statistics structure. ***/

   LONG        layer_id;           /* Layer id. */

   LONG        NILs;               /* # of Nil shapes in layer. */

   LONG        POINTs,MultiPOINTs; /* # of Point and Multipoints in layer. */

   LONG        LINEs,MultiLINEs;   /* # of Lines & Multilines in layer. */

   LONG        SIMPLE_LINEs,MultiSIMPLE_LINEs; /* # of Simple Lines &

                                                  Simple Multilines. */

   LONG        AREAs,MultiAREAs;   /* # of Area and Multiareas in layer. */

   LONG        TotalFeatures;      /* Total # of shapes in layer. */

   SE_ENVELOPE bounds;             /* Layer extrema. */

   LONG        lastModified;       /* POSIX time_t date last modified.*/

   LONG        minFid,maxFid;      /* Minimum and maximum IDs in layer. */

   LONG        minPoints,maxPoints;/* Min/max # of pts in layer shapes. */

   LFLOAT      minArea,maxArea;    /* Min and max area shape areas. */

   LFLOAT      minLength,maxLength;/* Min and max linear shape lengths. */

   LFLOAT      averagePoints;      /* Average number of points/shape. */

   LFLOAT      averageArea;        /* Average area/shape. */

   LFLOAT      averageLength;      /* Average length/shape. */

} SE_LAYER_STATS;

/************************************************************

*** SDE LAYER LOCKS STRUCTURES

************************************************************/

typedef struct {

   CHAR          username[SE_MAX_OWNER_LEN + 4];

   LONG          lock_type;

   SE_ENVELOPE   bounds;

} SE_LAYER_LOCKS;

/************************************************************

*** SDE TABLE LOCKS STRUCTURES

************************************************************/

typedef struct {

   CHAR          username[SE_MAX_OWNER_LEN + 4];

   LONG          lock_type;

} SE_TABLE_LOCK;

/************************************************************

*** SDE VERSION LOCK STRUCTURES

************************************************************/

typedef struct {

   CHAR          username[SE_MAX_OWNER_LEN + 4];

   LONG          lock_mode;

} SE_VERSION_LOCK;

/************************************************************

*** SDE INSTANCE STRUCTURES

************************************************************/

typedef struct {

  SE_RELEASE   version;     /* Release version of specified instance.       */

  LONG         connections; /* Number of current connections to SDE on node.*/

  LONG         system_mode; /* Accepting connections or blocking.           */

} SE_INSTANCE_STATUS;

typedef struct {

    LONG svrpid;                           /* Forked Server Task pid */

    LONG cstime;                           /* Connection Start time */

    BOOL xdr_needed;                       /* Use XDR Boolean */

    CHAR sysname[SE_MAX_OWNER_LEN + 1];    /* Client Operating System  Name */

    CHAR nodename[SE_MAX_OWNER_LEN + 1];   /* Client Host Node Name */

    CHAR username[SE_MAX_OWNER_LEN + 1];   /* User Name */

} SE_INSTANCE_USER;

typedef struct {

        LONG max_connections;

        LONG max_locks;

        LONG max_state_locks;

        LONG max_table_locks;

        LONG max_object_locks;

        LONG child_timeout;

        LONG min_net_block_size;

        LONG max_net_block_size;

        LONG min_net_obj_count;

        LONG max_mem_dissolve;

        LONG max_blob_size;

        LONG max_mem_blob;

        LONG auto_commit_freq;

        LONG max_init_feats;

        LONG max_distinct;

        LONG max_streams;

        LONG stream_pool_size;

        LONG max_layers;

        LONG max_registrations;

        LONG max_rastercolumns;

        LONG shape_point_buf_size;

        LONG attribute_buf_size;

        LONG blob_buf_size;

        LONG raster_buf_size;

        LONG max_array_size;

        LONG max_array_bytes;

        LONG max_time_diff;

        CHAR home_path[SE_MAX_PATH_LEN];        /* PATH TO SDE HOME DIR */

        CHAR log_path[SE_MAX_PATH_LEN];         /* PATH TO SDE LOG FILE DIR */

        CHAR tmp_path[SE_MAX_PATH_LEN];         /* PATH TO SDE TEMP FILE DIR */

        LONG dbms_id;                           /* Underlying DBMS ID. */

        LONG dbms_properties;                   /* DBMS properties. */

        LONG client_count;                      /* Connection count */

        BOOL state_caching;

        BOOL tcp_keepalive;

        BOOL instance_read_only;

} SE_INSTANCE_CONFIG;

typedef struct {

    LONG    pid;

    LONG    rcount;     /* TOT # READS BY PROCESS */

    LONG    wcount;     /* TOT # WRITES BY PROCESS */

    LONG    opcount;    /* TOT # F OPERATIONS BY PROCESS */

    LONG    numlocks;   /* TOT # F LOCKS HELD BY THIS PID */

    LONG    fb_partial; /* TOT # F PARTIAL SHAPES SHIPPED BY THIS PROCESS */

    LONG    fb_count;   /* TOT # F BUFFERS LOADED BY THIS PROCESS */

    LONG    fb_fcount;  /* TOT # F SHAPES BUFFERED BY THIS PROCESS */

    LONG    fb_kbytes;  /* TOT # F 1K BYTES BUFFERED DATA BY THIS PROCESS */

} SE_INSTANCE_STATS;

typedef struct {

    LONG        pid;

    SHORT       layer_id;

    LONG        lock_type;

} SE_INSTANCE_LOCK;

typedef struct _SE_InstanceStateLock {

  LONG   pid;       /* Gsrvr process id that holds this lock. */

  LONG   state_id;  /* State being locked. */

  SHORT  lock_type; /* Shared, exclusive or table. */

} SE_INSTANCE_STATE_LOCK;

typedef struct _SE_InstanceTableLock {

  LONG   pid;       /* Gsrvr process id that holds this lock. */

  LONG   registration_id;  /* table being locked. */

  SHORT  lock_type; /* Shared, exclusive or table. */

} SE_INSTANCE_TABLE_LOCK;

typedef struct _SE_InstanceVersionLock {

  LONG   pid;         /* Gsrvr process id that holds this lock. */

  LONG   version_id;  /* Version being locked. */

  SHORT  lock_mode;   /* Shared or exclusive. */

} SE_INSTANCE_VERSION_LOCK;

/************************************************************

*** Struct to receive shape comparison info.

************************************************************/

typedef struct {

        LONG    primary_entity_type ;

        LONG    secondary_entity_type ;

        LONG    mask ;

        LONG    sectdims[3][3] ;

} SE_CBM_INFO ;

/************************************************************

*** Struct to receive dbtune table error data.

************************************************************/

typedef struct {

  CHAR    keyword[SE_MAX_CONFIG_KEYWORD_LEN];

  CHAR    parameter_name[SE_MAX_CONFIG_KEYWORD_LEN];

  CHAR    config_string[SE_MAX_CONFIG_STR_LEN];

} SE_DBTUNE;

/*****************************************************************************

**  Spatial Database Engine API Prototypes

**

*****************************************************************************/

#ifdef WIN32

#define SDEAPI __stdcall

#else

#define SDEAPI

#endif

/*

 * ==========================================================================

 *

 * THE FOLLOWING FUNCTIONS ARE FOR PUBLIC USE.

 *

 * ==========================================================================

 */

/* Annotation object functions */

extern LONG SDEAPI SE_anno_create             (SE_ANNO        *anno);

extern LONG SDEAPI SE_anno_duplicate(          const SE_ANNO  src_anno,

                                               SE_ANNO        tgt_anno);

extern void SDEAPI SE_anno_free               (SE_ANNO        anno);

extern LONG SDEAPI SE_anno_get_alignment      (const SE_ANNO  anno,

                                               LONG *alignment);

extern LONG SDEAPI SE_anno_get_justification  (const SE_ANNO  anno,

                                               LONG           *justification);

extern LONG SDEAPI SE_anno_get_leader         (const SE_ANNO  anno,

                                               SE_SHAPE       leader);

extern LONG SDEAPI SE_anno_get_level          (const SE_ANNO  anno,

                                               LONG           *level);

extern LONG SDEAPI SE_anno_get_offset         (const SE_ANNO  anno,

                                               LFLOAT         *x_offset,

                                               LFLOAT         *y_offset);

extern LONG SDEAPI SE_anno_get_placement      (const SE_ANNO  anno,

                                               SE_SHAPE       placement);

extern LONG SDEAPI SE_anno_get_symbol         (const SE_ANNO  anno,

                                               LONG           *symbol);

extern LONG SDEAPI SE_anno_get_text           (const SE_ANNO  anno,

                                               CHAR           *text);

extern LONG SDEAPI SE_anno_get_text_size      (const SE_ANNO  anno,

                                               LFLOAT         *height,

                                               LFLOAT         *gap_ratio);

extern LONG SDEAPI SE_anno_set_alignment      (SE_ANNO        anno,

                                               const LONG     alignment);

extern LONG SDEAPI SE_anno_set_justification  (SE_ANNO        anno,

                                               LONG           justification);

extern LONG SDEAPI SE_anno_set_leader         (SE_ANNO        anno,

                                               const SE_SHAPE leader);

extern LONG SDEAPI SE_anno_set_level          (SE_ANNO        anno,

                                               LONG           level);

extern LONG SDEAPI SE_anno_set_offset         (SE_ANNO        anno,

                                               LFLOAT         x_offset,

                                               LFLOAT         y_offset);

extern LONG SDEAPI SE_anno_set_placement      (SE_ANNO        anno,

                                               const SE_SHAPE placement);

extern LONG SDEAPI SE_anno_set_symbol         (SE_ANNO        anno,

                                               LONG           symbol);

extern LONG SDEAPI SE_anno_set_text           (SE_ANNO        anno,

                                               const CHAR     *text);

extern LONG SDEAPI SE_anno_set_text_size      (SE_ANNO        anno,

                                               LFLOAT         height,

                                               LFLOAT         gap_ratio);

/* Blob object function */

extern void SDEAPI SE_blob_free (SE_BLOB_INFO *blob);

/* Connection object functions */

extern LONG SDEAPI SE_connection_commit_transaction

                                              (SE_CONNECTION    connection);

extern LONG SDEAPI SE_connection_create       (const CHAR       *server,

                                               const CHAR       *instance,

                                               const CHAR       *database,

                                               const CHAR       *username,

                                               const CHAR       *password,

                                               SE_ERROR         *error,

                                               SE_CONNECTION    *connection);

extern LONG SDEAPI SE_connection_export_dbtune(SE_CONNECTION    connection,

                                               const CHAR  *dbtune_file);

extern LONG SDEAPI SE_connection_free_all_locks

                                              (SE_CONNECTION    connection);

extern void SDEAPI SE_connection_free         (SE_CONNECTION    connection);

extern void SDEAPI SE_connection_free_keyword_info (LONG keyword_count,

                                                    CHAR **keyword_list);

extern LONG SDEAPI SE_connection_get_dbms_info

                                              (SE_CONNECTION    connection,

                                               LONG             *dbms_id,

                                               LONG         *dbms_properties);

extern LONG SDEAPI SE_connection_get_ext_error

                                              (SE_CONNECTION    connection,

                                               SE_ERROR         *error);

extern LONG SDEAPI SE_connection_get_instance_name

                                              (SE_CONNECTION    handle,

                                               CHAR           *instance_name);

extern LONG SDEAPI SE_connection_get_release  (SE_CONNECTION    connection,

                                               SE_RELEASE       *rls_version);

extern LONG SDEAPI SE_connection_get_server_name

                                              (SE_CONNECTION    handle,

                                               CHAR             *server_name);

extern LONG SDEAPI SE_connection_get_server_time

                                              (SE_CONNECTION    connection);

extern LONG SDEAPI SE_connection_get_sql_info

                                              (SE_CONNECTION    connection,

                                               LONG             sql_id,

                                               CHAR            *sql_name);

extern LONG SDEAPI SE_connection_get_keyword_info(

                                               SE_CONNECTION handle,

                                               LONG *keyword_count,

                                               CHAR ***keyword_list);

extern LONG SDEAPI SE_connection_get_stream_spec

                                              (SE_CONNECTION    connection,

                                               SE_STREAM_SPEC *spec);

extern LONG SDEAPI SE_connection_get_user_name

                                              (SE_CONNECTION    handle,

                                               CHAR             *user_name);

extern LONG SDEAPI SE_connection_get_sdedba_name

                                              (SE_CONNECTION    handle,

                                               CHAR             *user_name);

extern LONG SDEAPI SE_connection_import_dbtune(SE_CONNECTION    handle,

                                               const CHAR  *dbtune_file,

                                               SE_DBTUNE   *dbtune_error_data);

extern LONG SDEAPI SE_connection_rollback_transaction

                                              (SE_CONNECTION    connection);

extern LONG SDEAPI SE_connection_set_concurrency

                                              (SE_CONNECTION    connection,

                                               LONG             policy);

extern LONG SDEAPI SE_connection_set_stream_spec

                                              (SE_CONNECTION    connection,

                                               const SE_STREAM_SPEC *spec);

extern LONG SDEAPI SE_connection_set_transaction_autocommit

                                              (SE_CONNECTION    connection,

                                               LONG             interval);

extern LONG SDEAPI SE_connection_start_transaction

                                              (SE_CONNECTION    connection);

/* Coordinate reference object functions */

extern LONG SDEAPI SE_coordref_create      (SE_COORDREF *coordref);

extern void SDEAPI SE_coordref_free        (SE_COORDREF  coordref);

extern LONG SDEAPI SE_coordref_duplicate   (SE_COORDREF  src_ref,

                                            SE_COORDREF  tgt_ref);

extern LONG SDEAPI SE_coordref_get_coordsys(SE_COORDREF  coordref,

                                            PE_COORDSYS *cs);

extern LONG SDEAPI SE_coordref_get_description    (SE_COORDREF  coordref,

                                                   CHAR        *description);

extern LONG SDEAPI SE_coordref_get_id             (SE_COORDREF  coordref,

                                                   LONG        *coordsys_id);

extern LONG SDEAPI SE_coordref_get_m              (SE_COORDREF  coordref,

                                                   LFLOAT      *falsem,

                                                   LFLOAT      *munits);

extern LONG SDEAPI SE_coordref_get_m_range        (SE_COORDREF  coordref,

                                                   LFLOAT      *min_value,

                                                   LFLOAT      *max_value);

extern LONG SDEAPI SE_coordref_get_srid           (SE_COORDREF  coordref,

                                                   LONG        *srid);

extern LONG SDEAPI SE_coordref_get_xy             (SE_COORDREF  coordref,

                                                   LFLOAT      *falsex,

                                                   LFLOAT      *falsey,

                                                   LFLOAT      *xyunits);

extern LONG SDEAPI SE_coordref_get_xy_envelope    (SE_COORDREF  coordref,

                                                   SE_ENVELOPE *extent);

extern LONG SDEAPI SE_coordref_get_z              (SE_COORDREF  coordref,

                                                   LFLOAT      *falsez,

                                                   LFLOAT      *zunits);

extern LONG SDEAPI SE_coordref_get_z_range        (SE_COORDREF  coordref,

                                                   LFLOAT      *min_value,

                                                   LFLOAT      *max_value);

extern LONG SDEAPI SE_coordref_set_coordsys       (SE_COORDREF  coordref,

                                                   PE_COORDSYS  cs);

extern LONG SDEAPI SE_coordref_set_by_description (SE_COORDREF  coordref,

                                                   const CHAR  *description);

extern LONG SDEAPI SE_coordref_set_by_id          (SE_COORDREF  coordref,

                                                   LONG         coordsys_id);

extern LONG SDEAPI SE_coordref_set_m              (SE_COORDREF  coordref,

                                                   LFLOAT       falsem,

                                                   LFLOAT       munits);

extern LONG SDEAPI SE_coordref_set_m_by_range     (SE_COORDREF  coordref,

                                                   LFLOAT       min_mvalue,

                                                   LFLOAT       max_mvalue);

extern LONG SDEAPI SE_coordref_set_xy             (SE_COORDREF  coordref,

                                                   LFLOAT       falsex,

                                                   LFLOAT       falsey,

                                                   LFLOAT       xyunits);

extern LONG SDEAPI SE_coordref_set_xy_by_envelope (SE_COORDREF  coordref,

                                                   SE_ENVELOPE *extent);

extern LONG SDEAPI SE_coordref_set_z              (SE_COORDREF  coordref,

                                                   LFLOAT       falsez,

                                                   LFLOAT       zunits);

extern LONG SDEAPI SE_coordref_set_z_by_range     (SE_COORDREF  coordref,

                                                   LFLOAT       min_zvalue,

                                                   LFLOAT       max_zvalue);

/* Database object functions */

extern LONG SDEAPI SE_database_list       (SE_CONNECTION       connection,

                                           LONG                *num_databases,

                                           CHAR                ***databases);

extern void SDEAPI SE_database_free_list  (LONG                num_databases,

                                           CHAR                **databases );

extern LONG SDEAPI SE_database_use        (SE_CONNECTION       connection,

                                           CHAR                *database);

/* Error object functions */

extern LONG SDEAPI SE_error_get_string            (LONG  error_code,

                                                   CHAR  *error_string);

extern LONG SDEAPI SE_connection_get_error_string (SE_CONNECTION connection,

                                                   LONG  error_code,

                                                   CHAR  *error_string);

/* External file info object functions */

extern LONG SDEAPI SE_file_close           (SE_FILEINFO         fileinfo);

extern LONG SDEAPI SE_file_create          (SE_FILEINFO         fileinfo,

                                            SHORT               num_columns,

                                            const SE_COLUMN_DEF *column_defs);

extern LONG SDEAPI SE_file_describe        (SE_FILEINFO         fileinfo,

                                            SHORT               *num_columns,

                                            SE_COLUMN_DEF       **column_defs);

extern BOOL SDEAPI SE_file_exist           (SE_FILEINFO         fileinfo,

                                            LONG                *status);

extern void SDEAPI SE_file_free_descriptions(SE_COLUMN_DEF      *column_defs);

extern LONG SDEAPI SE_file_open            (SE_FILEINFO         fileinfo);

extern LONG SDEAPI SE_fileinfo_create      (SE_FILEINFO         *fileinfo);

extern LONG SDEAPI SE_fileinfo_duplicate   (const SE_FILEINFO   src_fileinfo,

                                            SE_FILEINFO         tgt_fileinfo);

extern void SDEAPI SE_fileinfo_free        (SE_FILEINFO         fileinfo);

extern LONG SDEAPI SE_fileinfo_get_layerinfo

                                           (const SE_FILEINFO   fileinfo,

                                            SE_LAYERINFO        layer);

extern LONG SDEAPI SE_fileinfo_get_name    (const SE_FILEINFO   fileinfo,

                                            CHAR                *name);

extern LONG SDEAPI SE_fileinfo_get_type    (const SE_FILEINFO   fileinfo,

                                            LONG                *file_type,

                                            CHAR                *feat_class);

extern LONG SDEAPI SE_fileinfo_set_layerinfo

                                           (SE_FILEINFO         fileinfo,

                                            const SE_LAYERINFO  layer);

extern LONG SDEAPI SE_fileinfo_set_name    (SE_FILEINFO         fileinfo,

                                            const CHAR          *name);

extern LONG SDEAPI SE_fileinfo_set_type    (SE_FILEINFO         fileinfo,

                                            const LONG          file_type,

                                            const CHAR          *feat_class);

/* Instance object functions */

extern LONG SDEAPI SE_instance_configuration

                                           (const CHAR         *server,

                                            const CHAR         *instance,

                                            SE_INSTANCE_CONFIG *configuration);

extern LONG SDEAPI SE_instance_control     (const CHAR         *server,

                                            const CHAR         *instance,

                                            const CHAR         *password,

                                            LONG               option,

                                            LONG               pid);

extern void SDEAPI SE_instance_free_locks  (SE_INSTANCE_LOCK   *lock_list,

                                            LONG               lock_count);

extern void SDEAPI SE_instance_free_state_locks

                                           (SE_INSTANCE_STATE_LOCK *lock_list,

                                            LONG                   lock_count);

extern void SDEAPI SE_instance_free_table_locks

                                            (SE_INSTANCE_TABLE_LOCK   *lock_list,

                                            LONG               lock_count);

extern void SDEAPI SE_instance_free_version_locks

                                        (SE_INSTANCE_VERSION_LOCK   *lock_list,

                                         LONG                       lock_count);

extern void SDEAPI SE_instance_free_statistics

                                           (SE_INSTANCE_STATS  *stats_list,

                                            LONG               stats_count);

extern void SDEAPI SE_instance_free_users  (SE_INSTANCE_USER   *user_list,

                                            LONG               user_count);

extern void SDEAPI SE_instance_free_variables (CHAR            **variables,

                                               LONG            var_count);

extern LONG SDEAPI SE_instance_get_locks(const CHAR          *server,

                                         const CHAR          *instance,

                                         SE_INSTANCE_LOCK    **lock_list_addr,

                                         LONG                *lock_count_addr);

extern LONG SDEAPI SE_instance_get_objectlocks (const CHAR         *server,

                                                const CHAR         *instance,

                                                SE_OBJECTLOCKINFO  **lock_list,

                                                LONG               *lock_count);

extern LONG SDEAPI SE_instance_get_state_locks

                                     (const CHAR              *server,

                                      const CHAR              *instance,

                                      SE_INSTANCE_STATE_LOCK  **lock_list_addr,

                                      LONG                   *lock_count_addr);

extern LONG SDEAPI SE_instance_get_table_locks

                                     (const CHAR              *server,

                                      const CHAR              *instance,

                                      SE_INSTANCE_TABLE_LOCK  **lock_list_addr,

                                      LONG                   *lock_count_addr);

extern LONG SDEAPI SE_instance_get_statistics

                                     (const CHAR          *server,

                                      const CHAR          *instance,

                                      SE_INSTANCE_STATS   **stats_list_addr,

                                      LONG                *stats_count_addr);

extern LONG SDEAPI SE_instance_get_users (const CHAR         *server,

                                         const CHAR          *instance,

                                         SE_INSTANCE_USER    **user_list_addr,

                                         LONG                *user_count_addr);

extern LONG SDEAPI SE_instance_get_variables (const CHAR     *server,

                                              const CHAR     *instance,

                                              CHAR           ***variables,

                                              LONG           *var_count_addr);

extern LONG SDEAPI SE_instance_get_version_locks

                                   (const CHAR                *server,

                                    const CHAR                *instance,

                                    SE_INSTANCE_VERSION_LOCK  **lock_list_addr,

                                    LONG                      *lock_count_addr);

extern LONG SDEAPI SE_instance_start     (const CHAR         *sdehome,

                                          const CHAR         *password);

extern LONG SDEAPI SE_instance_status    (const CHAR         *server,

                                          const CHAR         *instance,

                                          SE_INSTANCE_STATUS *istatus);

/* Layer object functions */

extern LONG SDEAPI SE_layer_alter           (SE_CONNECTION      connection,

                                             const SE_LAYERINFO layer);

extern LONG SDEAPI SE_layer_create          (SE_CONNECTION      connection,

                                             const SE_LAYERINFO layer,

                                             LONG               initialf,

                                             LONG               avg_points);

extern LONG SDEAPI SE_layer_delete          (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column);

extern void SDEAPI SE_layer_free_info_list  (LONG               count,

                                             SE_LAYERINFO       *layer_list);

extern LONG SDEAPI SE_layer_free_lock       (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column);

extern void SDEAPI SE_layer_free_locks      (SE_LAYER_LOCKS     *locks);

extern LONG SDEAPI SE_layer_calculate_extent(SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             BOOL               use_index,

                                             SE_ENVELOPE        *e,

                                             LFLOAT             *minz,

                                             LFLOAT             *maxz,

                                             const SE_SQL_CONSTRUCT *construct);

extern LONG SDEAPI SE_layer_get_info_by_id  (SE_CONNECTION      connection,

                                             LONG               layer_id,

                                             SE_LAYERINFO       layer);

extern LONG SDEAPI SE_layer_get_info        (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             SE_LAYERINFO       layer);

extern LONG SDEAPI SE_layer_get_info_list   (SE_CONNECTION      connection,

                                             SE_LAYERINFO       **layer_list,

                                             LONG               *count_addr);

extern LONG SDEAPI SE_layer_get_locks       (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               *num_locks,

                                             SE_LAYER_LOCKS     **locks);

extern LONG SDEAPI SE_layer_get_si_statistics(SE_CONNECTION     connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             SE_SI_STATS        *stats);

extern LONG SDEAPI SE_layer_grant_access    (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               privilege,

                                             BOOL               grant,

                                             const CHAR         *user);

extern LONG SDEAPI SE_layer_lock            (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               lock_mode);

extern LONG SDEAPI SE_layer_lock_area       (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               lock_mode,

                                             const SE_ENVELOPE  *area);

extern LONG SDEAPI SE_layer_modify_lock     (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               new_lock_mode,

                                             const SE_ENVELOPE  *area);

extern LONG SDEAPI SE_layer_revoke_access   (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               privilege,

                                             const CHAR         *user);

extern LONG SDEAPI SE_layer_truncate        (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column);

extern LONG SDEAPI SE_layer_shape_attribute_name (

                                             SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             LONG               attr_code,

                                             CHAR               *attr_name );

/* Obsolete layer function(s). */

extern LONG SDEAPI SE_layer_get_statistics  (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             const CHAR         *column,

                                             SE_LAYER_STATS     *stats);

/* Layer info object functions */

extern LONG SDEAPI SE_layerinfo_create       (const SE_COORDREF   coordref,

                                              SE_LAYERINFO        *layer);

extern LONG SDEAPI SE_layerinfo_duplicate    (const SE_LAYERINFO  src_layer,

                                              SE_LAYERINFO        tgt_layer);

extern void SDEAPI SE_layerinfo_free         (SE_LAYERINFO        layer);

extern LONG SDEAPI SE_layerinfo_get_access   (const SE_LAYERINFO  layer,

                                              LONG                *privileges);

extern LONG SDEAPI SE_layerinfo_get_array_size

                                             (const SE_LAYERINFO  layer,

                                              LONG *optimal_array_size,

                                              struct tm *last_calculated_date);

extern LONG SDEAPI SE_layerinfo_get_coordref (const SE_LAYERINFO  layer,

                                               SE_COORDREF         coordref);

extern LONG SDEAPI SE_layerinfo_get_creation_date

                                             (const SE_LAYERINFO  layer,

                                              struct tm           *date);

extern LONG SDEAPI SE_layerinfo_get_creation_keyword

                                             (const SE_LAYERINFO  layer,

                                              CHAR *config_keyword);

extern LONG SDEAPI SE_layerinfo_get_description

                                             (const SE_LAYERINFO  layer,

                                              CHAR          *description);

extern LONG SDEAPI SE_layerinfo_get_envelope (const SE_LAYERINFO  layer,

                                              SE_ENVELOPE   *envelope);

extern LONG SDEAPI SE_layerinfo_get_grid_sizes

                                             (const SE_LAYERINFO  layer,

                                              LFLOAT              *grid_size,

                                              LFLOAT              *grid_size2,

                                              LFLOAT              *grid_size3);

extern LONG SDEAPI SE_layerinfo_get_id       (const SE_LAYERINFO  layer,

                                              LONG                *layer_id);

extern LONG SDEAPI SE_layerinfo_get_minimum_id

                                             (const SE_LAYERINFO  layer,

                                              ULONG               *minimum_id);

extern LONG SDEAPI SE_layerinfo_get_shape_types    (const SE_LAYERINFO  layer,

                                                    LONG *shape_types);

extern LONG SDEAPI SE_layerinfo_get_spatial_column (const SE_LAYERINFO  layer,

                                                    CHAR                *table,

                                                    CHAR *column);

extern LONG SDEAPI SE_layerinfo_get_storage_type   (const SE_LAYERINFO  layer,

                                                   LONG                *storage_type);

extern BOOL SDEAPI SE_layerinfo_has_anno           (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_has_cad            (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_has_spatial_index  (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_3D              (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_in_load_mode    (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_measured        (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_external

                                                   (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_lob     (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_normalized

                                                   (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_sdebinary

                                                   (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_sql     (const SE_LAYERINFO  layer);

extern BOOL SDEAPI SE_layerinfo_is_storage_wkb     (const SE_LAYERINFO  layer);

extern LONG SDEAPI SE_layerinfo_set_3D             (SE_LAYERINFO  layer,

                                                    BOOL          is_3D);

extern LONG SDEAPI SE_layerinfo_set_anno           (SE_LAYERINFO  layer,

                                                    BOOL          has_anno);

extern LONG SDEAPI SE_layerinfo_set_array_size     (SE_LAYERINFO  layer,

                                                    LONG    optimal_array_size);

extern LONG SDEAPI SE_layerinfo_set_cad            (SE_LAYERINFO  layer,

                                                    BOOL          has_cad);

extern LONG SDEAPI SE_layerinfo_set_coordref       (SE_LAYERINFO  layer,

                                                    SE_COORDREF   coordref);

extern LONG SDEAPI SE_layerinfo_set_creation_keyword(SE_LAYERINFO layer,

                                                    const CHAR *config_keyword);

extern LONG SDEAPI SE_layerinfo_set_description    (SE_LAYERINFO  layer,

                                                    const CHAR    *description);

extern LONG SDEAPI SE_layerinfo_set_envelope       (SE_LAYERINFO  layer,

                                                   const SE_ENVELOPE *envelope);

extern LONG SDEAPI SE_layerinfo_set_grid_sizes     (SE_LAYERINFO  layer,

                                                    LFLOAT        grid_size,

                                                    LFLOAT        grid_size2,

                                                    LFLOAT        grid_size3);

extern LONG SDEAPI SE_layerinfo_set_load_mode      (SE_LAYERINFO  layer,

                                                    BOOL is_in_load_mode);

extern LONG SDEAPI SE_layerinfo_set_measured       (SE_LAYERINFO  layer,

                                                    BOOL          is_measured);

extern LONG SDEAPI SE_layerinfo_set_minimum_id    (SE_LAYERINFO   layer,

                                                   ULONG          minimum_id);

extern LONG SDEAPI SE_layerinfo_set_shape_types    (SE_LAYERINFO  layer,

                                                    LONG          shape_types);

extern LONG SDEAPI SE_layerinfo_set_spatial_column (SE_LAYERINFO  layer,

                                                    const CHAR    *table,

                                                    const CHAR    *column);

extern LONG SDEAPI SE_layerinfo_set_storage_type   (SE_LAYERINFO  layer,

                                                    LONG          storage_type);

/* Locator object functions */

extern LONG SDEAPI SE_locator_alter

                                        (SE_CONNECTION  handle,

                                         const SE_LOCATORINFO locator);

extern LONG SDEAPI SE_locator_create

                                        (SE_CONNECTION  handle,

                                         const SE_LOCATORINFO locator);

extern LONG SDEAPI SE_locator_delete

                                        (SE_CONNECTION  handle,

                                         const CHAR    *locator_name);

extern LONG SDEAPI SE_locator_get_info

                                        (SE_CONNECTION  handle,

                                         const CHAR    *locator_name,

                                         SE_LOCATORINFO locator);

extern LONG SDEAPI SE_locator_get_info_by_id

                                        (SE_CONNECTION  handle,

                                         LONG           id,

                                         SE_LOCATORINFO locator);

extern void SDEAPI SE_locator_free_info_list

                                        (LONG           count,

                                         SE_LOCATORINFO *locator_list);

extern LONG SDEAPI SE_locator_get_info_list

                                        (SE_CONNECTION  handle,

                                         const CHAR     *where,

                                         SE_LOCATORINFO **locator_list,

                                         LONG           *count_addr);

extern LONG SDEAPI SE_locator_describe_output(SE_CONNECTION connection,

                                       SE_LOCATORINFO locator,

                                       SHORT *num_columns,

                                       SE_COLUMN_DEF **column_defs);

extern void SDEAPI SE_locator_free_descriptions(SE_COLUMN_DEF *column_defs);

/* Locatorinfo object functions */

extern LONG SDEAPI SE_locatorinfo_create

                                        (SE_LOCATORINFO        *locator);

extern void SDEAPI SE_locatorinfo_free

                                        (SE_LOCATORINFO        locator);

extern LONG SDEAPI SE_locatorinfo_duplicate

                                        (const SE_LOCATORINFO  src_locator,

                                         SE_LOCATORINFO        tgt_locator);

extern LONG SDEAPI SE_locatorinfo_get_description

                                        (const SE_LOCATORINFO  locator,

                                         CHAR                  *description);

extern LONG SDEAPI SE_locatorinfo_get_category

                                        (const SE_LOCATORINFO  locator,

                                         CHAR                  *category);

extern LONG SDEAPI SE_locatorinfo_get_id

                                        (const SE_LOCATORINFO  locator,

                                         LONG                  *id);

extern LONG SDEAPI SE_locatorinfo_get_type

                                        (const SE_LOCATORINFO  locator,

                                         LONG                  *type);

extern LONG SDEAPI SE_locatorinfo_get_name

                                        (const SE_LOCATORINFO  locator,

                                         CHAR                  *name);

extern LONG SDEAPI SE_locatorinfo_get_owner

                                        (const SE_LOCATORINFO  locator,

                                         CHAR                  *owner);

extern LONG SDEAPI SE_locatorinfo_get_property_values

                                        (const SE_LOCATORINFO  locator,

                                         LONG                  *num_props,

                                         CHAR                  ***properties,

                                         CHAR                  ***values);

extern void SDEAPI SE_locatorinfo_free_property_values

                                        (LONG                  num_props,

                                         CHAR                  **properties,

                                         CHAR                  **values);

extern LONG SDEAPI SE_locatorinfo_set_description

                                        (SE_LOCATORINFO        locator,

                                         const CHAR            *description);

extern LONG SDEAPI SE_locatorinfo_set_category

                                        (SE_LOCATORINFO        locator,

                                         const CHAR            *category);

extern LONG SDEAPI SE_locatorinfo_set_name

                                        (SE_LOCATORINFO        locator,

                                         const CHAR            *name);

extern LONG SDEAPI SE_locatorinfo_set_property_values

                                        (SE_LOCATORINFO        locator,

                                         LONG                  num_props,

                                         const CHAR            **properties,

                                         const CHAR            **values);

extern LONG SDEAPI SE_locatorinfo_set_type

                                        (SE_LOCATORINFO        locator,

                                         LONG                  type);

/***********************

* Logfile functions.

************************/

/* Functions to create and free loginfo objects. */

extern LONG SDEAPI SE_loginfo_create         (SE_LOGINFO        *loginfo);

extern void SDEAPI SE_loginfo_free           (SE_LOGINFO        loginfo);

extern LONG SDEAPI SE_loginfo_duplicate      (const SE_LOGINFO  src_loginfo,

                                              SE_LOGINFO        tgt_loginfo);

extern void SDEAPI SE_loginfo_free_list      (SE_LOGINFO        *loginfo_list,

                                              LONG              count);

/* Functions to get attributes of loginfo objects. */

extern LONG SDEAPI SE_loginfo_get_id         (const SE_LOGINFO  loginfo,

                                              LONG              *log_id);

extern LONG SDEAPI SE_loginfo_get_name       (const SE_LOGINFO  loginfo,

                                              CHAR              *name);

extern LONG SDEAPI SE_loginfo_get_target_object

                                             (const SE_LOGINFO  loginfo,

                                              LONG              *target_type,

                                              CHAR              *table,

                                              CHAR           *spatial_column);

extern BOOL SDEAPI SE_loginfo_is_persistent  ( const SE_LOGINFO  loginfo);

/* Functions to modify attributes of loginfo objects. */

extern LONG SDEAPI SE_loginfo_set_name       (SE_LOGINFO        loginfo,

                                              const CHAR        *name);

extern LONG SDEAPI SE_loginfo_set_target_object

                                             (SE_LOGINFO        loginfo,

                                              LONG              target_type,

                                              CHAR              *table,

                                              CHAR           *spatial_column);

extern LONG SDEAPI SE_loginfo_set_persistence(SE_LOGINFO        loginfo,

                                              BOOL             is_persistent);

/* Functions to find and return logfile information. */

extern LONG SDEAPI SE_log_get_by_name        (SE_CONNECTION     connection,

                                              const CHAR        *logfile,

                                                      /* Qualified name OK. */

                                              SE_LOGINFO        loginfo);

extern LONG SDEAPI SE_log_get_by_owner       (SE_CONNECTION     connection,

                                              const CHAR        *owner,

                                                     /* If NULL, this user. */

                                              SE_LOGINFO   **loginfo_list_addr,

                                              LONG              *count_addr);

extern LONG SDEAPI SE_log_get_by_table       (SE_CONNECTION     connection,

                                              const CHAR        *log_owner,

                                                     /* If NULL, this user. */

                                              const CHAR        *table,

                                              SE_LOGINFO   **loginfo_list_addr,

                                              LONG              *count_addr);

extern LONG SDEAPI SE_log_get_open_log_info  (SE_CONNECTION      connection,

                                              const SE_LOG       log,

                                              SE_LOGINFO         loginfo);

/* Functions to create and manipulate logfiles. */

extern LONG SDEAPI SE_log_make_name         (SE_CONNECTION     connection,

                                             CHAR              *logfile);

extern LONG SDEAPI SE_log_create            (SE_CONNECTION     connection,

                                             SE_LOGINFO        loginfo);

extern LONG SDEAPI SE_log_delete            (SE_CONNECTION     connection,

                                             const CHAR        *log_name);

extern LONG SDEAPI SE_log_alter             (SE_CONNECTION     connection,

                                             SE_LOGINFO        loginfo);

extern LONG SDEAPI SE_log_calculate_extent  (SE_CONNECTION         connection,

                                             const CHAR             *logname,

                                             SE_ENVELOPE            *e,

                                             LFLOAT                 *minz,

                                             LFLOAT                 *maxz,

                                             const SE_SQL_CONSTRUCT *construct);

extern LONG SDEAPI SE_log_count_ids         (SE_CONNECTION     connection,

                                             SE_LOGINFO        loginfo);

extern LONG SDEAPI SE_log_combine           (SE_CONNECTION     connection,

                                             const CHAR        *logfile1,

                                             const CHAR        *logfile2,

                                             const CHAR        *logfile12,

                                             LONG              operation);

extern LONG SDEAPI SE_log_copy              (SE_CONNECTION     connection,

                                             const CHAR        *oldlogfile,

                                             const CHAR        *newlogfile);

extern LONG SDEAPI SE_log_grant_access      (SE_CONNECTION     connection,

                                             const CHAR        *logfiles_owner,

                                             const CHAR        *dbms_user);

extern LONG SDEAPI SE_log_revoke_access     (SE_CONNECTION     connection,

                                             const CHAR        *logfiles_owner,

                                             const CHAR        *dbms_user);

extern LONG SDEAPI SE_log_sort              (SE_CONNECTION     connection,

                                             const CHAR        *logfile);

   /* See also SE_stream_query_logfile */

/* Functions to work with an open logfile - SE_LOG handle. */

extern LONG SDEAPI SE_log_open_log          (SE_CONNECTION     connection,

                                             const SE_LOGINFO  loginfo,

                                             LONG              mode,

                                             SE_LOG            *log);

extern LONG SDEAPI SE_log_close             (SE_CONNECTION     connection,

                                             SE_LOG            log);

extern LONG SDEAPI SE_log_count             (SE_CONNECTION     connection,

                                             SE_LOG            log);

extern LONG SDEAPI SE_log_add_id            (SE_CONNECTION     connection,

                                             SE_LOG            log,

                                             LONG              id);

extern LONG SDEAPI SE_log_add_id_list       (SE_CONNECTION     connection,

                                             SE_LOG            log,

                                             LONG              num_ids,

                                             const LONG        *idbuf);

extern LONG SDEAPI SE_log_delete_id_list    (SE_CONNECTION     connection,

                                             SE_LOG            log,

                                             LONG              num_ids,

                                             const LONG        *idbuf);

extern LONG SDEAPI SE_log_get_id_list       (SE_CONNECTION     connection,

                                             SE_LOG            log,

                                             const LONG        max_num_ids,

                                             LONG              *num_ids,

                                             LONG              *idbuf);

   /* See also SE_stream_set_logfile */

/* Obsolete logfile functions. */

extern LONG SDEAPI SE_log_open              (SE_CONNECTION     connection,

                                             const CHAR        *logfile,

                                             CHAR              *table,

                                             LONG              mode,

                                             LONG              type,

                                             SE_LOG            *log);

extern LONG SDEAPI SE_log_set_type          (SE_CONNECTION     connection,

                                             const CHAR        *logfile,

                                             LONG              type);

/************************

* End logfile functions.

*************************/

/* Metadata object functions */

extern void SDEAPI SE_metadata_free_info_list (LONG             record_count,

                                               SE_METADATAINFO  *metadata_list);

extern LONG SDEAPI SE_metadata_get_info_by_id

                                          (SE_CONNECTION      handle,

                                           LONG               record_id,

                                           SE_METADATAINFO    metadata_record);

extern LONG SDEAPI SE_metadata_get_info_list

                                          (SE_CONNECTION    handle,

                                           const CHAR       *where_clause,

                                           SE_METADATAINFO  **metadata_list,

                                           LONG             *record_count);

/* Metadata info object functions */

extern LONG SDEAPI SE_metadatainfo_create (SE_METADATAINFO  *metadata_record);

extern void SDEAPI SE_metadatainfo_free   (SE_METADATAINFO  metadata_record);

extern LONG SDEAPI SE_metadatainfo_duplicate

                                  (const SE_METADATAINFO   src_metadata_record,

                                   SE_METADATAINFO         tgt_metadata_record);

extern LONG SDEAPI SE_metadatainfo_get_classname

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *classname);

extern LONG SDEAPI SE_metadatainfo_get_date

                                  (const SE_METADATAINFO   metadata_record,

                                   struct tm               *date);

extern LONG SDEAPI SE_metadatainfo_get_description

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *description);

extern LONG SDEAPI SE_metadatainfo_get_id

                                  (const SE_METADATAINFO   metadata_record,

                                   LONG                    *id);

extern LONG SDEAPI SE_metadatainfo_get_object_owner

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *object_owner);

extern LONG SDEAPI SE_metadatainfo_get_object_type

                                  (const SE_METADATAINFO   metadata_record,

                                   LONG                    *object_type);

extern LONG SDEAPI SE_metadatainfo_get_property

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *property);

extern LONG SDEAPI SE_metadatainfo_get_object_name

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *object_name);

extern LONG SDEAPI SE_metadatainfo_get_value

                                  (const SE_METADATAINFO   metadata_record,

                                   CHAR                    *value);

extern LONG SDEAPI SE_metadatainfo_set_classname

                                  (SE_METADATAINFO         metadata_record,

                                   const CHAR              *classname);

extern LONG SDEAPI SE_metadatainfo_set_description

                                  (SE_METADATAINFO         metadata_record,

                                   const CHAR              *description);

extern LONG SDEAPI SE_metadatainfo_set_object_type

                                  (SE_METADATAINFO         metadata_record,

                                   const LONG              object_type);

extern LONG SDEAPI SE_metadatainfo_set_property

                                  (SE_METADATAINFO         metadata_record,

                                   const CHAR              *property);

extern LONG SDEAPI SE_metadatainfo_set_object_name

                                  (SE_METADATAINFO         metadata_record,

                                   const CHAR              *object_name);

extern LONG SDEAPI SE_metadatainfo_set_value

                                  (SE_METADATAINFO         metadata_record,

                                   const CHAR              *value);

/* Object lock object functions. */

extern LONG SDEAPI SE_objectlock_free_lock (SE_CONNECTION            connection,

                                            const SE_OBJECTLOCKINFO  objectlock);

extern void SDEAPI SE_objectlock_free_list (LONG               lock_count,

                                            SE_OBJECTLOCKINFO  *lock_list);

extern LONG SDEAPI SE_objectlock_get_list (SE_CONNECTION            connection,

                                           const SE_OBJECTLOCKINFO  example,

                                           SE_OBJECTLOCKINFO        **lock_list,

                                           LONG                    *lock_count);

extern LONG SDEAPI SE_objectlock_lock (SE_CONNECTION            connection,

                                       const SE_OBJECTLOCKINFO  objectlock,

                                       LONG                     lock_mode);

/* Object lock info object functions. */

extern LONG SDEAPI SE_objectlockinfo_create (SE_OBJECTLOCKINFO  *objectlock);

extern LONG SDEAPI SE_objectlockinfo_duplicate

                                            (const SE_OBJECTLOCKINFO  src_lock,

                                             SE_OBJECTLOCKINFO        tgt_lock);

extern void SDEAPI SE_objectlockinfo_free (SE_OBJECTLOCKINFO  objectlock);

extern LONG SDEAPI SE_objectlockinfo_get_lock_mode

                               (const SE_OBJECTLOCKINFO  objectlock,

                                LONG                     *lock_mode);

extern LONG SDEAPI SE_objectlockinfo_get_object_id

                               (const SE_OBJECTLOCKINFO  objectlock,

                                LONG                    *object_id);

extern LONG SDEAPI SE_objectlockinfo_get_object_type

                               (const SE_OBJECTLOCKINFO  objectlock,

                                LONG                     *object_type);

extern LONG SDEAPI SE_objectlockinfo_get_owner

                               (const SE_OBJECTLOCKINFO  objectlock,

                                CHAR                     *owner,

                                LONG                     *svrpid);

extern LONG SDEAPI SE_objectlockinfo_set_object_id

                               (SE_OBJECTLOCKINFO  objectlock,

                                LONG               object_id);

extern LONG SDEAPI SE_objectlockinfo_set_object_type

                               (SE_OBJECTLOCKINFO  objectlock,

                                LONG               object_type);

/* Point table object functions */

extern LONG SDEAPI SE_ptable_add_point       (SE_PTABLE      ptable,

                                              SE_POINT       *pt,

                                              LFLOAT         *z,

                                              LONG           count,

                                              ULONG          mask);

extern LONG SDEAPI SE_ptable_add_shape       (SE_PTABLE      ptable,

                                              const SE_SHAPE shape,

                                              ULONG          mask);

extern LONG SDEAPI SE_ptable_create          (SE_ENVELOPE    *window,

                                              SE_COORDREF    coordref,

                                              SE_PTABLE      *ptable);

extern LONG SDEAPI SE_ptable_delete_point    (SE_PTABLE      ptable,

                                              SE_POINT       *pt,

                                              LFLOAT         *z,

                                              LONG           count,

                                              ULONG          mask);

extern LONG SDEAPI SE_ptable_delete_shape    (SE_PTABLE      ptable,

                                              const SE_SHAPE shape,

                                              ULONG          mask);

extern void SDEAPI SE_ptable_free            (SE_PTABLE      ptable);

extern LONG SDEAPI SE_ptable_get             (SE_PTABLE      ptable,

                                              SE_ENVELOPE    *userwin,

                                              ULONG          mask,

                                              void           (*user_function)

                                                 (void            *argument,

                                                 SE_SNAPPED_POINT *points,

                                                 LONG             count),

                                              void           *argument);

extern LONG SDEAPI SE_ptable_set_concurrency (SE_PTABLE      ptable,

                                              LONG           policy);

extern LONG SDEAPI SE_ptable_snap            (SE_PTABLE      ptable,

                                              SE_POINT       *pt,

                                              LFLOAT         z,

                                              LFLOAT         radius,

                                              ULONG          mask,

                                              SE_SNAPPED_POINT *spt,

                                              LONG           snapmode);

/* Query info object functions */

extern LONG SDEAPI SE_queryinfo_create        (SE_QUERYINFO        *query_info);

extern void SDEAPI SE_queryinfo_free          (SE_QUERYINFO        query_info);

extern void SDEAPI SE_queryinfo_free_columns  (CHAR                **columns);

extern void SDEAPI SE_queryinfo_free_hints    (CHAR                **hints);

extern void SDEAPI SE_queryinfo_free_tables   (CHAR                **tables);

extern LONG SDEAPI SE_queryinfo_get_columns   (const SE_QUERYINFO  query_info,

                                               LONG                *num_columns,

                                               CHAR                ***columns);

extern LONG SDEAPI SE_queryinfo_get_entity_type

                                              (const SE_QUERYINFO  query_info,

                                               LONG                *entity_type);

extern LONG SDEAPI SE_queryinfo_get_hints     (const SE_QUERYINFO  query_info,

                                               LONG                *num_hints,

                                               CHAR                ***hints);

extern LONG SDEAPI SE_queryinfo_get_logfile   (const SE_QUERYINFO  query_info,

                                               CHAR                *logfile);

extern LONG SDEAPI SE_queryinfo_get_by_clause (const SE_QUERYINFO  query_info,

                                               CHAR                *order_by);

extern LONG SDEAPI SE_queryinfo_get_query_type(const SE_QUERYINFO  query_info,

                                               LONG                *query_type);

extern LONG SDEAPI SE_queryinfo_get_tables    (const SE_QUERYINFO  query_info,

                                               LONG                *num_tables,

                                               CHAR                ***tables);

extern LONG SDEAPI SE_queryinfo_get_where_clause

                                              (const SE_QUERYINFO  query_info,

                                               CHAR                *where_clause);

extern LONG SDEAPI SE_queryinfo_set_columns   (SE_QUERYINFO        query_info,

                                               const LONG          num_columns,

                                               const CHAR          **columns);

extern LONG SDEAPI SE_queryinfo_set_entity_type

                                              (SE_QUERYINFO        query_info,

                                               const LONG          entity_type);

extern LONG SDEAPI SE_queryinfo_set_hints     (SE_QUERYINFO        query_info,

                                               const LONG          num_hints,

                                               const CHAR          **hints);

extern LONG SDEAPI SE_queryinfo_set_logfile   (SE_QUERYINFO        query_info,

                                               const CHAR          *logfile);

extern LONG SDEAPI SE_queryinfo_set_by_clause (SE_QUERYINFO        query_info,

                                               const CHAR          *order_by);

extern LONG SDEAPI SE_queryinfo_set_query_type(SE_QUERYINFO        query_info,

                                               const LONG          query_type);

extern LONG SDEAPI SE_queryinfo_set_tables    (SE_QUERYINFO        query_info,

                                               const LONG          num_tables,

                                               const CHAR          **tables,

                                               const CHAR          **aliases);

extern LONG SDEAPI SE_queryinfo_set_where_clause

                                              (SE_QUERYINFO        query_info,

                                               const CHAR          *where_clause);

extern LONG SDEAPI SE_queryinfo_duplicate     (const SE_QUERYINFO  src_queryinfo,

                                               SE_QUERYINFO        tgt_queryinfo);

/* Registration info object functions. */

extern LONG SDEAPI SE_reginfo_create          (SE_REGINFO  *registration);

extern LONG SDEAPI SE_reginfo_duplicate       (const SE_REGINFO  src_reginfo,

                                               SE_REGINFO        tgt_reginfo);

extern void SDEAPI SE_reginfo_free            (SE_REGINFO  registration);

extern LONG SDEAPI SE_reginfo_get_access      (const SE_REGINFO  registration,

                                               LONG              *privileges);

extern LONG SDEAPI SE_reginfo_get_creation_keyword

                                              (const SE_REGINFO  registration,

                                               CHAR *config_keyword);

extern LONG SDEAPI SE_reginfo_get_description (const SE_REGINFO  registration,

                                               CHAR              *description);

extern LONG SDEAPI SE_reginfo_get_id          (const SE_REGINFO  registration,

                                               LONG              *reg_id);

extern LONG SDEAPI SE_reginfo_get_mv_view_name(const SE_REGINFO  registration,

                                               CHAR             *im_view_name);

extern LONG SDEAPI SE_reginfo_get_minimum_id  (const SE_REGINFO  registration,

                                               ULONG             *minimum_id);

extern LONG SDEAPI SE_reginfo_get_reg_date    (const SE_REGINFO  registration,

                                               struct tm         *reg_date);

extern LONG SDEAPI SE_reginfo_get_rowid_allocation

                                              (const SE_REGINFO  registration,

                                               LONG              *method);

extern LONG SDEAPI SE_reginfo_get_rowid_column

                                              (const SE_REGINFO  registration,

                                               CHAR             *rowid_column,

                                               LONG              *type);

extern LONG SDEAPI SE_reginfo_get_table_name  (const SE_REGINFO  registration,

                                               CHAR              *table_name);

extern BOOL SDEAPI SE_reginfo_has_layer       (SE_REGINFO  registration);

extern BOOL SDEAPI SE_reginfo_is_hidden (const SE_REGINFO  registration);

extern BOOL SDEAPI SE_reginfo_is_multiversion (SE_REGINFO  registration);

extern BOOL SDEAPI SE_reginfo_allow_rowlocks  (SE_REGINFO  registration);

extern LONG SDEAPI SE_reginfo_set_creation_keyword

                                              (SE_REGINFO  registration,

                                               const CHAR *config_keyword);

extern LONG SDEAPI SE_reginfo_set_description (SE_REGINFO  registration,

                                               const CHAR  *description);

extern LONG SDEAPI SE_reginfo_set_hidden      (SE_REGINFO  registration,

                                               BOOL        hidden);

extern LONG SDEAPI SE_reginfo_set_minimum_id  (SE_REGINFO  registration,

                                               ULONG       minimum_id);

extern LONG SDEAPI SE_reginfo_set_multiversion

                                              (SE_REGINFO  registration,

                                               BOOL        is_multiversion);

extern LONG SDEAPI SE_reginfo_set_rowlocks    (SE_REGINFO  registration,

                                               BOOL        allow_row_lock);

extern LONG SDEAPI SE_reginfo_set_rowid_allocation

                                              (SE_REGINFO  registration,

                                               LONG        method);

extern LONG SDEAPI SE_reginfo_set_rowid_column

                                              (SE_REGINFO  registration,

                                               const CHAR  *rowid_column,

                                               LONG        type);

extern LONG SDEAPI SE_reginfo_set_table_name  (SE_REGINFO  registration,

                                               const CHAR  *table_name);

extern LONG SDEAPI SE_reginfo_set_view

                                              (SE_REGINFO  registration,

                                               BOOL        is_view);

extern BOOL SDEAPI SE_reginfo_is_view         (SE_REGINFO  registration);

extern LONG SDEAPI SE_reginfo_set_locator

                                              (SE_REGINFO  registration,

                                               BOOL        has_locator);

extern BOOL SDEAPI SE_reginfo_has_locator     (SE_REGINFO  registration);

/* Registration object functions. */

extern LONG SDEAPI SE_registration_alter          (SE_CONNECTION  connection,

                                                   SE_REGINFO     reginfo);

extern LONG SDEAPI SE_registration_create         (SE_CONNECTION  connection,

                                                   SE_REGINFO     reginfo);

extern LONG SDEAPI SE_registration_delete         (SE_CONNECTION  connection,

                                                   const CHAR     *name);

extern LONG SDEAPI SE_registration_get_difference_list

                                                  (SE_CONNECTION  connection,

                                                   LONG           state1_id,

                                                   LONG           state2_id,

                                                   SE_REGINFO  **reg_list_addr,

                                                   LONG           *count_addr);

extern LONG SDEAPI SE_registration_get_info_by_id (SE_CONNECTION  connection,

                                                   LONG           reg_id,

                                                   SE_REGINFO     reginfo);

extern LONG SDEAPI SE_registration_get_info       (SE_CONNECTION  connection,

                                                   const CHAR     *table,

                                                   SE_REGINFO     reginfo);

extern LONG SDEAPI SE_registration_get_info_list  (SE_CONNECTION  connection,

                                                   SE_REGINFO  **reg_list_addr,

                                                   LONG           *count_addr);

extern void SDEAPI SE_registration_free_info_list (LONG           count,

                                                   SE_REGINFO     *reg_list);

extern LONG SDEAPI SE_registration_get_dependent_tables

                                                  (SE_CONNECTION  handle,

                                                   const CHAR     *table,

                                                   CHAR           ***table_list,

                                                   LONG           *table_count);

extern void SDEAPI SE_registration_free_dependent_tables

                                                  (CHAR  **table_list,

                                                   LONG  *table_count);

/* SQL constructor object functions */

extern void SDEAPI SE_sql_construct_free     (SE_SQL_CONSTRUCT  *constructor);

extern LONG SDEAPI SE_sql_construct_alloc    (LONG               num_tables,

                                              SE_SQL_CONSTRUCT **constructor);

/* Shape object functions */

extern LONG SDEAPI SE_shape_add_island     (SE_SHAPE            shape,

                                            SE_SDEPOINT         *pointlist,

                                            LONG                num_pts);

extern LONG SDEAPI SE_shape_add_part       (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_as_line        (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_as_point       (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_as_polygon     (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_as_simple_line (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_build          (SE_SHAPE            src_shape,

                                            SE_BUILD_MODE       mode,

                                            BOOL                dissolve,

                                            LONG                match_mask,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_calculate_distance

                                           (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            LFLOAT              *distance,

                                            BOOL                inside_test);

extern LONG SDEAPI SE_shape_change_coordref(const SE_SHAPE      src_shape,

                                            SE_COORDREF         coordref,

                                            PE_GEOGTRAN         geogtran,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_change_path    (SE_SHAPE            shape,

                                            SE_SDEPOINT         *firstpt,

                                            SE_SDEPOINT         *midpt,

                                            SE_SDEPOINT         *lastpt,

                                            SE_SDEPOINT         *pointlist,

                                            LONG                num_pts);

extern LONG SDEAPI SE_shape_clip           (SE_SHAPE            src_shape,

                                            SE_ENVELOPE         *window,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_create         (SE_COORDREF         coordref,

                                            SE_SHAPE            *shape);

extern LONG SDEAPI SE_shape_delete_island  (SE_SHAPE            shape,

                                            SE_POINT            *pt);

extern LONG SDEAPI SE_shape_delete_part    (SE_SHAPE            shape,

                                            LONG                part_num);

extern LONG SDEAPI SE_shape_delete_path    (SE_SHAPE            shape,

                                            SE_SDEPOINT         *firstpt,

                                            SE_SDEPOINT         *midpt,

                                            SE_SDEPOINT         *lastpt);

extern LONG SDEAPI SE_shape_delete_point   (SE_SHAPE            shape,

                                            SE_SDEPOINT         *pt);

extern LONG SDEAPI SE_shape_difference     (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_duplicate      (const SE_SHAPE      src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_extend_line    (SE_SHAPE            shape,

                                            SE_SDEPOINT         *endpoint,

                                            SE_SDEPOINT         *pointlist,

                                            LONG                num_pts);

extern LONG SDEAPI SE_shape_filter_coordinates

                                           (const SE_SHAPE      src_shape,

                                            LFLOAT              distance,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_find_along     (SE_SHAPE            shape,

                                            LFLOAT              measure,

                                            LONG                *num_shapes,

                                            SE_SHAPE            **new_shapes);

extern LONG SDEAPI SE_shape_find_between   (SE_SHAPE            shape,

                                            LFLOAT              from_measure,

                                            LFLOAT              to_measure,

                                            LONG                *num_shapes,

                                            SE_SHAPE            **new_shapes);

extern LONG SDEAPI SE_shape_find_relation  (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            LONG                *mask);

extern LONG SDEAPI SE_shape_find_CBM_relation (const SE_SHAPE   primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            SE_CBM_INFO                 *info) ;

extern LONG SDEAPI SE_shape_evaluate_CBM        (SE_CBM_INFO            *info,

                                            char                *scltext,

                                            BOOL                                *testresult);

extern void SDEAPI SE_shape_free           (SE_SHAPE            shape);

extern void SDEAPI SE_shape_free_array     (LONG                num_shapes,

                                            SE_SHAPE            *shapelist);

extern LONG SDEAPI SE_shape_generate_buffer(const SE_SHAPE      src_shape,

                                            LFLOAT              distance,

                                            LONG                max_pts,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_circle(SE_POINT            center,

                                            LFLOAT              radius,

                                            LONG                num_pts,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_convex_hull

                                           (SE_SHAPE            src_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_ellipse

                                           (SE_POINT            center,

                                            LFLOAT              semi_major_axis,

                                            LFLOAT              semi_minor_axis,

                                            LFLOAT              angle,

                                            LONG                num_pts,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_from_part

                                           (const SE_SHAPE      src_shape,

                                            LONG                part_num,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_label_point

                                           (const SE_SHAPE      shape,

                                            SE_POINT           *pt);

extern LONG SDEAPI SE_shape_generate_line  (LONG                num_pts,

                                            LONG                num_parts,

                                            LONG               *part_offsets,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_point (LONG                num_pts,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_polygon

                                           (LONG                num_pts,

                                            LONG                num_parts,

                                            LONG               *part_offsets,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_rectangle

                                           (SE_ENVELOPE        *rect,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_generate_simple_line

                                           (LONG                num_pts,

                                            LONG                num_parts,

                                            LONG               *part_offsets,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_get_3D_length  (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LFLOAT             *length);

extern LONG SDEAPI SE_shape_get_all_points (const SE_SHAPE      shape,

                                            SE_ROTATION_TYPE    rotation,

                                            LONG               *part_offsets,

                                            LONG               *subpart_offsets,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure);

extern LONG SDEAPI SE_shape_get_anno       (const SE_SHAPE      shape,

                                            SE_ANNO             anno);

extern LONG SDEAPI SE_shape_get_area       (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LFLOAT             *area);

extern LONG SDEAPI SE_shape_get_coordref   (const SE_SHAPE      shape,

                                            SE_COORDREF         coordref);

extern LONG SDEAPI SE_shape_get_extent     (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            SE_ENVELOPE        *extent);

extern LONG SDEAPI SE_shape_get_length     (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LFLOAT             *length);

extern LONG SDEAPI SE_shape_get_Mrange     (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LFLOAT             *mmin,

                                            LFLOAT             *mmax);

extern LONG SDEAPI SE_shape_get_num_parts  (const SE_SHAPE      shape,

                                            LONG               *num_parts,

                                            LONG               *num_subparts);

extern LONG SDEAPI SE_shape_get_num_points (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LONG                subpart_num,

                                            LONG               *num_pts);

extern LONG SDEAPI SE_shape_get_num_subparts

                                           (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LONG               *num_subparts);

extern LONG SDEAPI SE_shape_get_points     (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            SE_ROTATION_TYPE    rotation,

                                            LONG               *subpart_offsets,

                                            SE_POINT           *point_array,

                                            LFLOAT             *z,

                                            LFLOAT             *measure);

extern LONG SDEAPI SE_shape_get_type       (const SE_SHAPE      shape,

                                            LONG               *shape_type);

extern LONG SDEAPI SE_shape_get_Zrange     (const SE_SHAPE      shape,

                                            LONG                part_num,

                                            LFLOAT             *zmin,

                                            LFLOAT             *zmax);

extern BOOL SDEAPI SE_shape_has_anno       (const SE_SHAPE      shape);

extern LONG SDEAPI SE_shape_insert_part    (const SE_SHAPE      src_shape,

                                            LONG                part_num,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_interpolate_by_measures

                                           (SE_SHAPE            src_shape,

                                            LFLOAT              delta,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_intersect      (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            LONG               *num_shapes,

                                            SE_SHAPE          **new_shapes);

extern BOOL SDEAPI SE_shape_is_3D          (const SE_SHAPE      shape);

extern BOOL SDEAPI SE_shape_is_containing  (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_crossing    (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_disjoint    (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_equal       (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_line        (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_measured    (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_multipart   (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_nil         (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_overlapping (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_point       (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_polygon     (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_simple_line (const SE_SHAPE     shape);

extern BOOL SDEAPI SE_shape_is_touching    (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern BOOL SDEAPI SE_shape_is_within      (const SE_SHAPE     primary_shape,

                                            const SE_SHAPE     secondary_shape);

extern LONG SDEAPI SE_shape_make_nil       (SE_SHAPE           shape);

extern LONG SDEAPI SE_shape_move_point     (SE_SHAPE           shape,

                                            SE_SDEPOINT        *from_pt,

                                            SE_SDEPOINT        *to_pt);

extern LONG SDEAPI SE_shape_overlay        (const SE_SHAPE primary_shape,

                                            const SE_SHAPE secondary_shape,

                                            LONG           *num_common_shapes,

                                            SE_SHAPE       primary_remainder,

                                            SE_SHAPE       **common_shapes,

                                            SE_SHAPE       secondary_remainder);

extern LONG SDEAPI SE_shape_replace_part   (const SE_SHAPE      src_shape,

                                            LONG                part_num,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_replace_path_with_arc

                                           (SE_SHAPE            shape,

                                            SE_SDEPOINT        *first_pt,

                                            SE_SDEPOINT        *mid_pt,

                                            SE_SDEPOINT        *last_pt,

                                            LFLOAT              radius,

                                            LONG                arc_segs);

extern LONG SDEAPI SE_shape_set_anno       (SE_SHAPE            shape,

                                            const SE_ANNO       anno);

extern LONG SDEAPI SE_shape_set_coordref   (SE_SHAPE            shape,

                                            SE_COORDREF         coordref);

extern LONG SDEAPI SE_shape_symmetrical_difference

                                           (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            SE_SHAPE            tgt_shape);

extern LONG SDEAPI SE_shape_union          (const SE_SHAPE      primary_shape,

                                            const SE_SHAPE      secondary_shape,

                                            SE_SHAPE            result_shape);

/* Shape i/o functions */

extern LONG SDEAPI SE_shape_as_text        (const SE_SHAPE      shape,

                                            LONG                alloc_size,

                                            CHAR               *text_shape);

extern LONG SDEAPI SE_shape_generate_from_text

                                           (const CHAR         *text_shape,

                                            SE_SHAPE           shape);

extern LONG SDEAPI SE_shape_get_text_size  (const SE_SHAPE      shape,

                                            LONG               *size);

extern LONG SDEAPI SE_shape_as_WKB         (const SE_SHAPE      shape,

                                            LONG                alloc_size,

                                            LONG               *binary_size,

                                            CHAR               *WKB_type);

extern LONG SDEAPI SE_shape_generate_from_WKB

                                           (const CHAR         *WKB_type,

                                            SE_SHAPE            shape);

extern LONG SDEAPI SE_shape_get_WKB_size

                                           (const SE_SHAPE      shape,

                                            LONG               *size);

extern LONG SDEAPI SE_shape_as_binary      (const SE_SHAPE      shape,

                                            LONG                alloc_size,

                                            LONG               *binary_size,

                                            CHAR               *binary_type);

extern LONG SDEAPI SE_shape_generate_from_binary

                                           (const CHAR         *binary_type,

                                            SE_SHAPE            shape);

extern LONG SDEAPI SE_shape_get_binary_size

                                           (const SE_SHAPE      shape,

                                            LONG               *size);

/* Functions to manage spatial reference entries. */

extern LONG SDEAPI SE_spatialref_alter     (SE_CONNECTION     connection,

                                            SE_SPATIALREFINFO spatialref);

extern LONG SDEAPI SE_spatialref_create    (SE_CONNECTION     connection,

                                            SE_SPATIALREFINFO spatialref);

extern LONG SDEAPI SE_spatialref_delete    (SE_CONNECTION     connection,

                                            LONG              srid);

extern void SDEAPI SE_spatialref_free_info_list

                                           (LONG         count,

                                            SE_SPATIALREFINFO *sref_list_addr);

extern LONG SDEAPI SE_spatialref_get_info  (SE_CONNECTION     connection,

                                            LONG              srid,

                                            SE_SPATIALREFINFO spatialref);

extern LONG SDEAPI SE_spatialref_get_info_list

                                           (SE_CONNECTION     connection,

                                            SE_SPATIALREFINFO **sref_list_addr,

                                            LONG              *count_addr);

/* Functions to access and set spatial reference object properties */

extern LONG SDEAPI SE_spatialrefinfo_create

                                           (SE_SPATIALREFINFO *spatialref);

extern LONG SDEAPI SE_spatialrefinfo_duplicate

                                           (const SE_SPATIALREFINFO src_sref,

                                            SE_SPATIALREFINFO       tgt_sref);

extern void SDEAPI SE_spatialrefinfo_free  (SE_SPATIALREFINFO      spatialref);

extern LONG SDEAPI SE_spatialrefinfo_get_auth_name

                                           (const SE_SPATIALREFINFO spatialref,

                                            CHAR                    *auth_name);

extern LONG SDEAPI SE_spatialrefinfo_get_auth_srid

                                           (const SE_SPATIALREFINFO spatialref,

                                            LONG                    *auth_srid);

extern LONG SDEAPI SE_spatialrefinfo_get_coordref

                                           (const SE_SPATIALREFINFO spatialref,

                                            SE_COORDREF             coordref);

extern LONG SDEAPI SE_spatialrefinfo_get_description

                                           (const SE_SPATIALREFINFO spatialref,

                                            CHAR                 *description);

extern LONG SDEAPI SE_spatialrefinfo_get_srid

                                           (const SE_SPATIALREFINFO spatialref,

                                            LONG                    *srid);

extern LONG SDEAPI SE_spatialrefinfo_set_auth_name

                                           (SE_SPATIALREFINFO       spatialref,

                                            const CHAR              *auth_name);

extern LONG SDEAPI SE_spatialrefinfo_set_auth_srid

                                           (SE_SPATIALREFINFO       spatialref,

                                            LONG                    auth_srid);

extern LONG SDEAPI SE_spatialrefinfo_set_coordref

                                           (SE_SPATIALREFINFO       spatialref,

                                            SE_COORDREF             coordref);

extern LONG SDEAPI SE_spatialrefinfo_set_description

                                           (SE_SPATIALREFINFO       spatialref,

                                            const CHAR              *description);

/* Shape table object functions */

extern LONG SDEAPI SE_stable_add_shape       (SE_STABLE          stable,

                                              SE_SHAPE           shape,

                                              LONG               user_id,

                                              const void        *associated);

extern LONG SDEAPI SE_stable_create          (const SE_ENVELOPE *extent,

                                              SE_COORDREF        coordref,

                                              SE_STABLE         *stable);

extern LONG SDEAPI SE_stable_delete_shape    (SE_STABLE          stable,

                                              LONG               user_id);

extern void SDEAPI SE_stable_free            (SE_STABLE          stable);

extern LONG SDEAPI SE_stable_get_extent      (SE_STABLE          stable,

                                              SE_ENVELOPE       *extent);

extern LONG SDEAPI SE_stable_get_shape       (SE_STABLE          stable,

                                              LONG               user_id,

                                              SE_SHAPE           *shape_ptr,

                                              const void       **associatedptr);

extern LONG SDEAPI SE_stable_get_num_shapes  (SE_STABLE          stable);

extern LONG SDEAPI SE_stable_set_concurrency (SE_STABLE          stable,

                                              LONG               policy);

extern LONG SDEAPI SE_stable_size            (SE_STABLE          stable);

extern LONG SDEAPI SE_stable_search          (SE_STABLE          stable,

                                              SHORT              num_filters,

                                              const SE_FILTER   *filters,

                                              BOOL       (*func)

                                                 (void        *argument,

                                                  SE_SHAPE    shape,

                                                  const LONG  user_id,

                                                  const void  *associated,

                                                  SHORT       num_filters,

                                                  ULONG       *search_masks),

                                                  void        *argument);

/* State object functions */

extern LONG SDEAPI SE_state_close     (SE_CONNECTION         connection,

                                       LONG                  state_id);

extern LONG SDEAPI SE_state_compress_tree

                                      (SE_CONNECTION         connection);

extern LONG SDEAPI SE_state_create    (SE_CONNECTION         connection,

                                       const SE_STATEINFO    state,

                                       LONG                  parent_state_id,

                                       SE_STATEINFO          result_state);

extern LONG SDEAPI SE_state_delete    (SE_CONNECTION         connection,

                                       LONG                  state_id);

extern LONG SDEAPI SE_state_delete_range

                                      (SE_CONNECTION         connection,

                                       LONG                  low_state_id,

                                       LONG                  high_state_id);

extern void SDEAPI SE_state_free_info_list

                                      (LONG                  count,

                                       SE_STATEINFO          *state_list);

extern LONG SDEAPI SE_state_free_lock (SE_CONNECTION         connection,

                                       LONG                  state_id);

extern LONG SDEAPI SE_state_get_info  (SE_CONNECTION         connection,

                                       LONG                  state_id,

                                       SE_STATEINFO          state);

extern LONG SDEAPI SE_state_get_info_list

                                      (SE_CONNECTION         connection,

                                       const CHAR            *where_clause,

                                       SE_STATEINFO          **state_list,

                                       LONG                  *count);

extern LONG SDEAPI SE_state_lock      (SE_CONNECTION         connection,

                                       LONG                  state_id);

extern LONG SDEAPI SE_state_merge     (SE_CONNECTION         connection,

                                       LONG                  parent_state_id,

                                       LONG                  changes_state_id,

                                       SE_STATEINFO          merged_state);

extern LONG SDEAPI SE_state_open      (SE_CONNECTION         connection,

                                       LONG                  state_id);

extern LONG SDEAPI SE_state_trim_tree (SE_CONNECTION         connection,

                                       LONG                  low_state_id,

                                       LONG                  high_state_id);

/* Stateinfo object functions */

extern LONG SDEAPI SE_stateinfo_create (SE_STATEINFO        *state);

extern LONG SDEAPI SE_stateinfo_duplicate

                                       (const SE_STATEINFO  src_state,

                                        SE_STATEINFO        tgt_state);

extern void SDEAPI SE_stateinfo_free   (SE_STATEINFO        state);

extern void SDEAPI SE_stateinfo_free_lineage

                                       (LONG                  count,

                                        LONG                  *lineage);

extern LONG SDEAPI SE_stateinfo_get_closing_time

                                       (const SE_STATEINFO  state,

                                        struct tm           *closing_time);

extern LONG SDEAPI SE_stateinfo_get_creation_time

                                       (const SE_STATEINFO  state,

                                        struct tm           *created_time);

extern LONG SDEAPI SE_stateinfo_get_id (const SE_STATEINFO  state,

                                        LONG                *id);

extern LONG SDEAPI SE_stateinfo_get_lineage

                                        (const SE_STATEINFO  state,

                                         LONG                **lineage,

                                         LONG                *count);

extern LONG SDEAPI SE_stateinfo_get_owner

                                        (const SE_STATEINFO  state,

                                         CHAR                *owner);

extern LONG SDEAPI SE_stateinfo_get_parent

                                        (const SE_STATEINFO  state,

                                         LONG                *parent_id);

extern BOOL SDEAPI SE_stateinfo_is_open (const SE_STATEINFO  state);

/* Stream object functions */

extern LONG SDEAPI SE_stream_bind_input_column  (SE_STREAM     stream,

                                                 SHORT         column,

                                                 void          *data,

                                                 SHORT         *indicator);

extern LONG SDEAPI SE_stream_bind_output_column (SE_STREAM     stream,

                                                 SHORT         column,

                                                 void          *data,

                                                 SHORT         *indicator);

extern LONG SDEAPI SE_stream_calculate_layer_extent(SE_STREAM  stream,

                                        const SE_QUERYINFO     query_info,

                                        SE_ENVELOPE            *e,

                                        LFLOAT                 *minz,

                                        LFLOAT                 *maxz);

extern LONG SDEAPI SE_stream_calculate_layer_statistics(SE_STREAM stream,

                                        const SE_QUERYINFO     query_info,

                                        SE_LAYER_STATS         *stats);

extern LONG SDEAPI SE_stream_calculate_table_statistics(SE_STREAM stream,

                                        const CHAR             *column,

                                        LONG                   mask,

                                        const SE_QUERYINFO     query_info,

                                        LONG                   max_distinct,

                                        SE_STATS               **stats);

extern LONG SDEAPI SE_stream_copy_state_rows    (SE_STREAM   stream,

                                                 const CHAR  *table,

                                                 const LONG  *row_id_list,

                                                 LONG        row_id_count);

extern LONG SDEAPI SE_stream_create             (SE_CONNECTION connection,

                                                 SE_STREAM     *stream);

extern LONG SDEAPI SE_stream_describe_column    (SE_STREAM     stream,

                                                 SHORT         column,

                                                 SE_COLUMN_DEF *column_def);

extern LONG SDEAPI SE_stream_execute            (SE_STREAM     stream);

extern LONG SDEAPI SE_stream_fetch              (SE_STREAM     stream);

extern LONG SDEAPI SE_stream_fetch_row          (SE_STREAM     stream,

                                                 const CHAR    *table,

                                                 LONG          sde_row_id,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns);

extern LONG SDEAPI SE_stream_flush_buffered_writes(SE_STREAM   stream);

extern LONG SDEAPI SE_stream_free               (SE_STREAM     stream);

extern LONG SDEAPI SE_stream_close              (SE_STREAM     stream,

                                                 BOOL          reset);

extern LONG SDEAPI SE_stream_delete_from_table  (SE_STREAM     stream,

                                                 const CHAR    *table,

                                                 const CHAR    *where_clause);

extern LONG SDEAPI SE_stream_delete_by_id_list  (SE_STREAM     stream,

                                                 const CHAR    *table,

                                                 LONG          *id_list,

                                                 LONG          id_count);

extern LONG SDEAPI SE_stream_delete_row         (SE_STREAM     stream,

                                                 const CHAR    *table,

                                                 LONG          sde_row_id);

extern LONG SDEAPI SE_stream_get_blob           (SE_STREAM     stream,

                                                 SHORT         column,

                                                 SE_BLOB_INFO  *blob_val);

extern LONG SDEAPI SE_stream_get_connection     (SE_STREAM     stream,

                                                 SE_CONNECTION *connection);

extern LONG SDEAPI SE_stream_get_double         (SE_STREAM     stream,

                                                 SHORT         column,

                                                 LFLOAT        *double_val);

extern LONG SDEAPI SE_stream_get_date           (SE_STREAM     stream,

                                                 SHORT         column,

                                                 struct tm     *date_val);

extern LONG SDEAPI SE_stream_get_ext_error      (SE_STREAM     stream,

                                                 SE_ERROR      *error);

extern LONG SDEAPI SE_stream_get_float          (SE_STREAM     stream,

                                                 SHORT         column,

                                                 FLOAT         *float_val);

extern LONG SDEAPI SE_stream_get_integer        (SE_STREAM     stream,

                                                 SHORT         column,

                                                 LONG          *int_val);

extern LONG SDEAPI SE_stream_get_shape          (SE_STREAM     stream,

                                                 SHORT         column,

                                                 SE_SHAPE      shape_val);

extern LONG SDEAPI SE_stream_get_smallint       (SE_STREAM     stream,

                                                 SHORT         column,

                                                 SHORT         *short_val);

extern LONG SDEAPI SE_stream_get_spatial_masks  (SE_STREAM     stream,

                                                 LONG          *masks);

extern LONG SDEAPI SE_stream_get_string         (SE_STREAM     stream,

                                                 SHORT         column,

                                                 CHAR          *string_val);

extern LONG SDEAPI SE_stream_invoke_ssa         (SE_STREAM     stream,

                                                 BOOL          query_stream,

                                                 SHORT         num_inputs,

                                                 SE_INPUT_DESC *input_desc,

                                                 void          **data,

                                                 const CHAR    *ssaName);

extern LONG SDEAPI SE_stream_insert_into_file   (SE_STREAM     stream,

                                                 SE_FILEINFO   fileinfo,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns);

extern LONG SDEAPI SE_stream_insert_table       (SE_STREAM     stream,

                                                 const char    *table,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns);

extern LONG SDEAPI SE_stream_in_progress        (SE_STREAM     stream,

                                                 BOOL          *in_progress);

extern LONG SDEAPI SE_stream_last_inserted_row_id (SE_STREAM  stream,

                                                   LONG       *last_row_id);

extern LONG SDEAPI SE_stream_locate_table       (SE_STREAM stream,

                                                 const CHAR *table,

                                                 const CHAR *where,

                                                 SE_LOCATORINFO locator);

extern LONG SDEAPI SE_stream_num_result_columns (SE_STREAM     stream,

                                                 SHORT         *num_columns);

extern LONG SDEAPI SE_stream_prepare_sql        (SE_STREAM     stream,

                                                 const CHAR    *sql_stmt);

extern LONG SDEAPI SE_stream_query              (SE_STREAM     stream,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns,

                                                 const SE_SQL_CONSTRUCT *construct);

extern LONG SDEAPI SE_stream_query_from_file    (SE_STREAM     stream,

                                                 SE_FILEINFO   fileinfo,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns);

extern LONG SDEAPI SE_stream_query_logfile      (SE_STREAM     stream,

                                                 const CHAR    *logfile,

                                                 SHORT         num_columns,

                                                 const CHAR    **columns,

                                                 const SE_SQL_CONSTRUCT *construct);

extern LONG SDEAPI SE_stream_query_with_info

                                         (SE_STREAM              stream,

                                          const SE_QUERYINFO     query_info);

extern LONG SDEAPI SE_stream_restore_rows(SE_STREAM              stream,

                                          const CHAR             *table,

                                          const LONG             *row_id_list,

                                          LONG                   row_id_count);

extern LONG SDEAPI SE_stream_set_blob    (SE_STREAM              stream,

                                          SHORT                  column,

                                          const SE_BLOB_INFO     *blob_val);

extern LONG SDEAPI SE_stream_set_date    (SE_STREAM              stream,

                                          SHORT                  column,

                                          const struct tm        *date_val);

extern LONG SDEAPI SE_stream_set_double  (SE_STREAM              stream,

                                          SHORT                  column,

                                          const LFLOAT           *double_val);

extern LONG SDEAPI SE_stream_set_float   (SE_STREAM              stream,

                                          SHORT                  column,

                                          const FLOAT            *float_val);

extern LONG SDEAPI SE_stream_set_integer (SE_STREAM              stream,

                                          SHORT                  column,

                                          const LONG             *int_val);

extern LONG SDEAPI SE_stream_set_logfile (SE_STREAM              stream,

                                          SE_LOG                 log,

                                          BOOL                   logfile_only);

extern LONG SDEAPI SE_stream_set_output_coordref (SE_STREAM      stream,

                                          const SE_COORDREF      coordref,

                                          const PE_GEOGTRAN      geogtran);

extern LONG SDEAPI SE_stream_set_rowlocking

                                         (SE_STREAM              stream,

                                          LONG                   rowlck_action);

extern LONG SDEAPI SE_stream_set_row     (SE_STREAM              stream,

                                          const CHAR             *table,

                                          LONG                   sde_row_id,

                                          SHORT                  num_columns,

                                          const CHAR             **columns);

extern LONG SDEAPI SE_stream_set_shape   (SE_STREAM              stream,

                                          SHORT                  column,

                                          const SE_SHAPE         shape_val);

extern LONG SDEAPI SE_stream_set_smallint

                                         (SE_STREAM              stream,

                                          SHORT                  column,

                                          const SHORT            *short_val);

extern LONG SDEAPI SE_stream_set_spatial_constraints

                                         (SE_STREAM              stream,

                                          SHORT                  search_order,

                                          BOOL                   calc_masks,

                                          SHORT                  num_filters,

                                          SE_FILTER              *filters);

extern LONG SDEAPI SE_stream_set_ssa_filter

                                         (SE_STREAM              stream,

                                          const CHAR             *ssaName,

                                          const CHAR             *init_str);

extern LONG SDEAPI SE_stream_set_state   (SE_STREAM              stream,

                                          LONG                   source_id,

                                          LONG                   differences_id,

                                          LONG                  difference_type);

extern LONG SDEAPI SE_stream_set_string  (SE_STREAM              stream,

                                          SHORT                  column,

                                          const CHAR             *string_val);

extern LONG SDEAPI SE_stream_set_write_mode

                                         (SE_STREAM              stream,

                                          BOOL                   buffered);

extern LONG SDEAPI SE_stream_update_ordered (SE_STREAM           stream,

                                             const CHAR          *table,

                                             LONG                *sde_row_id,

                                             const LONG          *id_list,

                                             LONG                id_count,

                                             SHORT               num_columns,

                                             const CHAR          **columns);

extern LONG SDEAPI SE_stream_update_row  (SE_STREAM     stream,

                                          const CHAR    *table,

                                          LONG          *sde_row_id,

                                          SHORT         num_columns,

                                          const CHAR    **columns);

extern LONG SDEAPI SE_stream_update_sdodim_table (SE_STREAM     stream,

                                                  const CHAR    *table_name);

extern LONG SDEAPI SE_stream_update_table

                                         (SE_STREAM     stream,

                                          const char    *table,

                                          SHORT         num_columns,

                                          const CHAR    **columns,

                                          const CHAR    *where);

/* Table object functions */

extern LONG SDEAPI SE_table_add_column   (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          const SE_COLUMN_DEF *column_def);

extern LONG SDEAPI SE_table_create       (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          SHORT               num_columns,

                                          const SE_COLUMN_DEF *column_defs,

                                          const CHAR          *config_keyword);

extern LONG SDEAPI SE_table_create_mv_view (SE_CONNECTION  connection,

                                            const CHAR     *table,

                                            const CHAR     *im_view);

extern LONG SDEAPI SE_table_create_index (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          const CHAR          *column,

                                          BOOL                unique,

                                          BOOL                ascending,

                                          const CHAR          *index_name,

                                          const CHAR          *config_keyword);

extern LONG SDEAPI SE_table_create_indexes (SE_CONNECTION     connection,

                                            const CHAR              *table,

                                            SHORT             num_indexes,

                                            SE_INDEX_DEF      *index_defs,

                                            const CHAR        *config_keyword);

extern LONG SDEAPI SE_table_create_primarykey_constraint (

                                            SE_CONNECTION  handle,

                                            const CHAR     *table,

                                            SHORT          num_columns,

                                            const CHAR     **columns,

                                            const CHAR     *constraint_name,

                                            const CHAR     *config_keyword);

extern LONG SDEAPI SE_table_create_unique_constraint (

                                            SE_CONNECTION  handle,

                                            const CHAR     *table,

                                            SHORT          num_columns,

                                            const CHAR     **columns,

                                            const CHAR     *constraint_name,

                                            const CHAR     *config_keyword);

extern LONG SDEAPI SE_table_create_view  (SE_CONNECTION     connection,

                                            const CHAR        *view,

                                            SHORT             num_view_columns,

                                            SHORT             num_table_columns,

                                            const CHAR        **view_columns,

                                            const CHAR        **table_columns,

                                            const SE_SQL_CONSTRUCT  *construct);

extern LONG SDEAPI SE_table_delete       (SE_CONNECTION       connection,

                                          const CHAR          *table);

extern LONG SDEAPI SE_table_delete_constraint(SE_CONNECTION handle,

                                              const CHAR    *table,

                                              const CHAR    *constraint_name);

extern LONG SDEAPI SE_table_delete_mv_view (SE_CONNECTION  connection,

                                            const CHAR     *table);

extern LONG SDEAPI SE_table_delete_index (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          const CHAR          *index_name);

extern LONG SDEAPI SE_table_describe     (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          SHORT               *num_columns,

                                          SE_COLUMN_DEF       **column_defs);

extern LONG SDEAPI SE_table_describe_indexes (SE_CONNECTION       connection,

                                            const CHAR          *table,

                                            SHORT               *num_indexes,

                                            SE_INDEX_DEF       **index_defs);

extern LONG SDEAPI SE_table_drop_column  (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          const CHAR          *column);

extern void SDEAPI SE_table_free_descriptions(SE_COLUMN_DEF   *column_defs);

extern void SDEAPI SE_table_free_index_descriptions

                                           (LONG count,

                                            SE_INDEX_DEF  *index_def);

extern void SDEAPI SE_table_free_list    (LONG                num_tables,

                                          CHAR                **tables);

extern LONG SDEAPI SE_table_free_lock       (SE_CONNECTION      connection,

                                             const CHAR         *table);

extern void SDEAPI SE_table_free_locks      (SE_TABLE_LOCK     *lock_list,

                                             LONG               lock_count);

extern void SDEAPI SE_table_free_stats   (SE_STATS            *stats);

extern LONG SDEAPI SE_table_get_locks       (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             LONG               *num_locks,

                                             SE_TABLE_LOCK     **locks);

extern LONG SDEAPI SE_table_get_ids        (SE_CONNECTION       handle,

                                            const CHAR          *table,

                                            LONG                num_ids,

                                            LONG                *start_id,

                                            LONG                *id_count);

extern LONG SDEAPI SE_table_return_ids     (SE_CONNECTION       handle,

                                            const CHAR          *table,

                                            LONG                start_id,

                                            LONG                ids_returned);

extern LONG SDEAPI SE_table_get_mvedit_states (SE_CONNECTION  handle,

                                               const CHAR     *table,

                                               SE_STATEINFO   **state_list,

                                               LONG           *count);

extern LONG SDEAPI SE_table_get_permissions(SE_CONNECTION     connection,

                                          const CHAR          *table,

                                          LONG                *permissions);

extern LONG SDEAPI SE_table_grant_access (SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          LONG                privilege,

                                          BOOL                grant,

                                          const CHAR          *user);

extern LONG SDEAPI SE_table_list         (SE_CONNECTION       connection,

                                          LONG                permissions,

                                          LONG                *num_tables,

                                          CHAR                ***tables);

extern LONG SDEAPI SE_table_lock            (SE_CONNECTION      connection,

                                             const CHAR         *table,

                                             LONG               lock_mode);

extern LONG SDEAPI SE_table_make_qualified_name

                                            (SE_CONNECTION   handle,

                                             const CHAR      *database,

                                             const CHAR      *owner,

                                             const CHAR      *table,

                                             const CHAR      *column,

                                             CHAR            *qualified_name);

extern LONG SDEAPI SE_table_metadata_alter

                                     (SE_CONNECTION         handle,

                                     const CHAR             *table,

                                     LONG                   record_count,

                                     const SE_METADATAINFO  *metadata_records);

extern LONG SDEAPI SE_table_metadata_add

                                    (SE_CONNECTION          handle,

                                    const CHAR              *table,

                                    LONG                    record_count,

                                    const SE_METADATAINFO   *metadata_records);

extern LONG SDEAPI SE_table_metadata_delete (SE_CONNECTION   handle,

                                             const CHAR      *table,

                                             LONG            record_count,

                                             LONG            *record_id_list);

extern LONG SDEAPI SE_table_metadata_delete_where

                                            (SE_CONNECTION   handle,

                                             const CHAR      *table,

                                             const CHAR      *where_clause);

extern void SDEAPI SE_table_metadata_free_info_list

                                            (LONG            record_count,

                                             SE_METADATAINFO *metadata_list);

extern LONG SDEAPI SE_table_metadata_get_info_list

                                             (SE_CONNECTION     handle,

                                              const CHAR        *table,

                                              SE_METADATAINFO   **metadata_list,

                                              LONG              *record_count);

extern LONG SDEAPI SE_table_parse_qualified_name

                                             (SE_CONNECTION  handle,

                                              const CHAR      *qualified_name,

                                              CHAR            *database,

                                              CHAR            *owner,

                                              CHAR            *table,

                                              CHAR            *column,

                                              BOOL            iscolumn);

extern LONG SDEAPI SE_table_rename       (SE_CONNECTION       connection,

                                          const CHAR          *old_name,

                                          const CHAR          *new_name);

extern LONG SDEAPI SE_table_revoke_access(SE_CONNECTION       connection,

                                          const CHAR          *table,

                                          LONG                privilege,

                                          const CHAR          *user);

extern LONG SDEAPI SE_table_truncate     (SE_CONNECTION       connection,

                                          const CHAR          *table);

extern LONG SDEAPI SE_table_update_dbms_stats  (SE_CONNECTION   connection,

                                                const CHAR     *table,

                                                const CHAR     *index,

                                                const CHAR     *mode,

                                                const LONG      keyword);

/* Table locator functions */

extern LONG SDEAPI SE_table_add_locator  (SE_CONNECTION        connection,

                                          const CHAR           *table,

                                          const SE_LOCATORINFO locator);

extern LONG SDEAPI SE_table_delete_locator  (SE_CONNECTION    connection,

                                             const CHAR       *table,

                                             const CHAR       *locator_name);

extern LONG SDEAPI SE_table_get_locator_list (SE_CONNECTION    connection,

                                             const CHAR    *table,

                                             SE_LOCATORINFO    **locator_list,

                                             LONG          *num_locators);

extern void SDEAPI SE_table_free_locator_list

                                        (LONG           num_locators,

                                         SE_LOCATORINFO *locator_list);

/* Table Row lock functions */

extern LONG SDEAPI SE_table_add_rowlocks      (SE_CONNECTION   connection,

                                               const CHAR     *table,

                                               LONG            num_locks,

                                               LONG           *row_ID,

                                               LONG            state_ID,

                                               LONG           *failed_rowID);

extern LONG SDEAPI SE_table_remove_rowlocks   (SE_CONNECTION   connection,

                                               const CHAR     *table,

                                               LONG            num_locks,

                                               LONG           *row_ID,

                                               LONG            state_ID,

                                               LONG           *failed_rowID);

extern LONG SDEAPI SE_table_get_rowlocks      (SE_CONNECTION   connection,

                                               const CHAR     *table,

                                               LONG           *num_locks,

                                               LONG          **row_ID,

                                               CHAR         ***user_names );

extern LONG SDEAPI SE_table_get_rowlocks_by_user

                                              (SE_CONNECTION   connection,

                                               const CHAR     *table,

                                               const CHAR     *user_name,

                                               LONG           *num_locks,

                                               LONG          **row_ID );

extern void SDEAPI SE_table_free_rowlocks_list

                                              (LONG            num_locks,

                                               LONG           *row_ID,

                                               CHAR          **user_name );

       /* See also SE_stream_set_rowlocking() */

/* Obsolete table function(s). */

extern LONG SDEAPI SE_table_calculate_stats

                                         (SE_CONNECTION       connection,

                                          const CHAR          *column,

                                          LONG                mask,

                                          const SE_SQL_CONSTRUCT *construct,

                                          LONG                max_distinct,

                                          SE_STATS            **stats);

/* Trace environment functions */

extern LONG SDEAPI SE_trace_on           (const CHAR         *trace_log_name,

                                          LONG               trace_mode);

extern LONG SDEAPI SE_trace_off          (void);

/* Version object functions */

extern LONG SDEAPI SE_version_alter     (SE_CONNECTION         connection,

                                         const SE_VERSIONINFO  version);

extern LONG SDEAPI SE_version_change_state

                                        (SE_CONNECTION         connection,

                                         const SE_VERSIONINFO  version,

                                         LONG                  new_state_id);

extern LONG SDEAPI SE_version_create    (SE_CONNECTION         connection,

                                         const SE_VERSIONINFO  version,

                                         BOOL                  unique_name,

                                         SE_VERSIONINFO        result_version);

extern LONG SDEAPI SE_version_delete    (SE_CONNECTION         connection,

                                         const CHAR            *name);

extern void SDEAPI SE_version_free_info_list

                                        (LONG                  count,

                                         SE_VERSIONINFO        *version_list);

extern LONG SDEAPI SE_version_free_lock (SE_CONNECTION         connection,

                                         const CHAR            *version_name);

extern void SDEAPI SE_version_free_locks (SE_VERSION_LOCK       *lock_list,

                                         LONG                  lock_count);

extern LONG SDEAPI SE_version_get_info  (SE_CONNECTION         connection,

                                         const CHAR            *version_name,

                                         SE_VERSIONINFO        version);

extern LONG SDEAPI SE_version_get_info_by_id

                                        (SE_CONNECTION         connection,

                                         LONG                  version_id,

                                         SE_VERSIONINFO        version);

extern LONG SDEAPI SE_version_get_info_list

                                        (SE_CONNECTION         connection,

                                         const CHAR            *where_clause,

                                         SE_VERSIONINFO        **version_list,

                                         LONG                  *count);

extern LONG SDEAPI SE_version_get_locks (SE_CONNECTION         connection,

                                         const CHAR            *version_names,

                                         LONG                  *num_locks,

                                         SE_VERSION_LOCK       **locks);

extern LONG SDEAPI SE_version_lock      (SE_CONNECTION         connection,

                                         const CHAR            *version_name,

                                         LONG                  lock_mode);

extern LONG SDEAPI SE_version_rename    (SE_CONNECTION         connection,

                                         const CHAR            *old_name,

                                         const CHAR            *new_name);

/* Versioninfo object functions */

extern LONG SDEAPI SE_versioninfo_create(SE_VERSIONINFO        *version);

extern LONG SDEAPI SE_versioninfo_duplicate

                                        (const SE_VERSIONINFO  src_version,

                                         SE_VERSIONINFO        tgt_version);

extern void SDEAPI SE_versioninfo_free  (SE_VERSIONINFO        version);

extern LONG SDEAPI SE_versioninfo_get_access

                                        (const SE_VERSIONINFO  version,

                                         LONG                  *access);

extern LONG SDEAPI SE_versioninfo_get_creation_time

                                        (const SE_VERSIONINFO  version,

                                         struct tm             *created_time);

extern LONG SDEAPI SE_versioninfo_get_description

                                        (const SE_VERSIONINFO  version,

                                         CHAR                  *description);

extern LONG SDEAPI SE_versioninfo_get_id (const SE_VERSIONINFO  version,

                                          LONG                  *version_id);

extern LONG SDEAPI SE_versioninfo_get_name

                                        (const SE_VERSIONINFO  version,

                                         CHAR                  *name);

extern LONG SDEAPI SE_versioninfo_get_parent_id

                                        (const SE_VERSIONINFO  version,

                                         LONG                  *parent_id);

extern LONG SDEAPI SE_versioninfo_get_parent_name

                                        (const SE_VERSIONINFO  version,

                                         CHAR                  *parent_name);

extern LONG SDEAPI SE_versioninfo_get_state_id

                                        (const SE_VERSIONINFO  version,

                                         LONG                  *state_id);

extern LONG SDEAPI SE_versioninfo_set_access

                                        (SE_VERSIONINFO        version,

                                         LONG                  access);

extern LONG SDEAPI SE_versioninfo_set_description

                                        (SE_VERSIONINFO        version,

                                         const CHAR            *description);

extern LONG SDEAPI SE_versioninfo_set_name

                                        (SE_VERSIONINFO        version,

                                         const CHAR            *name);

extern LONG SDEAPI SE_versioninfo_set_parent_name

                                        (SE_VERSIONINFO        version,

                                         const CHAR            *parent_name);

extern LONG SDEAPI SE_versioninfo_set_state_id

                                        (SE_VERSIONINFO        version,

                                         LONG                  state_id);

#ifdef __cplusplus

};

#endif

#endif


pe.h

/* -------------------------------------------------------------------------- */

/* Projection Engine Version 8.10 */

/* Copyright (C) 1996-2001 Environmental Systems Research Institute, Inc. */

/* All rights reserved. */

/* -------------------------------------------------------------------------- */

#ifndef PE_INCLUDED

#define PE_INCLUDED

#ifndef PEDEF_INCLUDED

#include "pedef.h"

#endif

#ifdef __cplusplus

extern "C" {

#endif

#ifdef WIN32

#define PEAPI __stdcall

#else

#define PEAPI

#endif

/* Maximum length of a text buffer: */

#define PE_BUFFER_MAX 1024

/* Maximum length of a name character array: */

#define PE_NAME_MAX 64

/* Maximum number of parameters: */

#define PE_PARM_MAX 16

/* Return Projection Engine version information: */

char * PEAPI pe_version(void);

/* Function to load pointer to function which supplies pedatahome location */

typedef char *(*PE_DHOMEFUNC)();

void PEAPI pe_datahome_setfunc(PE_DHOMEFUNC getdatahome);

/* Function to load pointer to function which supplies peobjedithome location */

typedef char *(*PE_OEHOMEFUNC)();

void PEAPI pe_objedithome_setfunc(PE_OEHOMEFUNC getdatahome);

/*----------------------------------------------------------------------------*/

/* U N I T S O F M E A S U R E */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_UNIT;

/* Create a new unit of measure: */

PE_UNIT PEAPI pe_unit_new(

const char *name,

double factor);

/* Release memory previously allocated by function
pe_unit_new():
 */

void PEAPI pe_unit_del(

PE_UNIT unit);

/* Retrieve a unit's name into array name[]: */

void PEAPI pe_unit_name(

PE_UNIT unit,

char name[PE_NAME_MAX]);

/* Retrieve a unit's conversion factor and return it: */

double PEAPI pe_unit_factor(

PE_UNIT unit);

/* Put an external representation of a unit into array buffer[]: */

void PEAPI pe_unit_to_string(

PE_UNIT unit,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a unit: */

PE_UNIT PEAPI pe_unit_from_string(

const char *buffer);

/* Test if argument p points to a unit: */

int PEAPI pe_unit_p(

struct pe_struct_t *p);

/* Test if two units are identical: */

int PEAPI pe_unit_eq(

PE_UNIT unit1,

PE_UNIT unit2);

/* Clone a unit: */

PE_UNIT PEAPI pe_unit_clone(

PE_UNIT unit);

/*----------------------------------------------------------------------------*/

/* G E O D E T I C S P H E R O I D S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_SPHEROID;

/* Create a new geodetic spheroid: */

PE_SPHEROID PEAPI pe_spheroid_new(

const char *name,

double axis,

double flattening);

/* Relese memory previously allocated by function
pe_spheroid_new():
 */

void PEAPI pe_spheroid_del(

PE_SPHEROID spheroid);

/* Retrieve a spheroid's name into array name[]: */

void PEAPI pe_spheroid_name(

PE_SPHEROID spheroid,

char name[PE_NAME_MAX]);

/* Retrieve a spheroid's semi-major axis and return it: */

double PEAPI pe_spheroid_axis(

PE_SPHEROID spheroid);

/* Retrieve a spheroid's flattening and return it: */

double PEAPI pe_spheroid_flattening(

PE_SPHEROID spheroid);

/* Put an external representation of a spheroid into array buffer[]: */

void PEAPI pe_spheroid_to_string(

PE_SPHEROID spheroid,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a spheroid: */

PE_SPHEROID PEAPI pe_spheroid_from_string(

const char *buffer);

/* Test if argument p points to a spheroid: */

int PEAPI pe_spheroid_p(

struct pe_struct_t *p);

/* Test if two spheroids are identical: */

int PEAPI pe_spheroid_eq(

PE_SPHEROID spheroid1,

PE_SPHEROID spheroid2);

/* Clone a spheroid: */

PE_SPHEROID PEAPI pe_spheroid_clone(

PE_SPHEROID spheroid);

/*----------------------------------------------------------------------------*/

/* H O R I Z O N T A L D A T U M S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_DATUM;

/* Create a new horizontal datum: */

PE_DATUM PEAPI pe_datum_new(

const char *name,

PE_SPHEROID spheroid);

/* Release memory previously allocated by function
pe_datum_new():
 */

void PEAPI pe_datum_del(

PE_DATUM datum);

/* Retrieve a datum's name into array name[]: */

void PEAPI pe_datum_name(

PE_DATUM datum,

char name[PE_NAME_MAX]);

/* Retrieve a datum's spheroid and return it: */

PE_SPHEROID PEAPI pe_datum_spheroid(

PE_DATUM datum);

/* Put an external representation of a datum into array buffer[]: */

void PEAPI pe_datum_to_string(

PE_DATUM datum,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a datum: */

PE_DATUM PEAPI pe_datum_from_string(

const char *buffer);

/* Test if argument p points to a datum: */

int PEAPI pe_datum_p(

struct pe_struct_t *p);

/* Test if two datums are identical: */

int PEAPI pe_datum_eq(

PE_DATUM datum1,

PE_DATUM datum2);

/* Clone a datum: */

PE_DATUM PEAPI pe_datum_clone(

PE_DATUM datum);

/*----------------------------------------------------------------------------*/

/* P R I M E M E R I D I A N S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_PRIMEM;

/* Create a new prime meridian: */

PE_PRIMEM PEAPI pe_primem_new(

const char *name,

double longitude);

/* Release memory previously allocated by function
pe_primem_new():
 */

void PEAPI pe_primem_del(

PE_PRIMEM primem);

/* Retrieve a prime meridian's name into array name[]: */

void PEAPI pe_primem_name(

PE_PRIMEM primem,

char name[PE_NAME_MAX]);

/* Retrieve a prime meridian's longitude and return it: */

double PEAPI pe_primem_longitude(

PE_PRIMEM primem);

/* Put an external representation of a prime meridian into array buffer[]: */

void PEAPI pe_primem_to_string(

PE_PRIMEM primem,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a prime meridian: */

PE_PRIMEM PEAPI pe_primem_from_string(

const char *buffer);

/* Test if argument p points to a prime meridian: */

int PEAPI pe_primem_p(

struct pe_struct_t *p);

/* Test if two prime meridians are identical: */

int PEAPI pe_primem_eq(

PE_PRIMEM primem1,

PE_PRIMEM primem2);

/* Clone a prime meridian: */

PE_PRIMEM PEAPI pe_primem_clone(

PE_PRIMEM primem);

/*----------------------------------------------------------------------------*/

/* G E O G R A P H I C C O O R D I N A T E S Y S T E M S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_GEOGCS;

/* Create a new geographic coordinate system (GCS): */

PE_GEOGCS PEAPI pe_geogcs_new(

const char *name,

PE_DATUM datum,

PE_PRIMEM primem,

PE_UNIT unit);

/* Release memory previously allocated by function
pe_geogcs_new():
 */

void PEAPI pe_geogcs_del(

PE_GEOGCS geogcs);

/* Retrieve a GCS's name into array name[]: */

void PEAPI pe_geogcs_name(

PE_GEOGCS geogcs,

char name[PE_NAME_MAX]);

/* Retrieve a GCS's datum and return it: */

PE_DATUM PEAPI pe_geogcs_datum(

PE_GEOGCS geogcs);

/* Retrieve a GCS's prime meridian and return it: */

PE_PRIMEM PEAPI pe_geogcs_primem(

PE_GEOGCS geogcs);

/* Retrieve a GCS's unit (angular) and return it: */

PE_UNIT PEAPI pe_geogcs_unit(

PE_GEOGCS geogcs);

/* Put an external representation of a GCS into array buffer[]: */

void PEAPI pe_geogcs_to_string(

PE_GEOGCS geogcs,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a GCS: */

PE_GEOGCS PEAPI pe_geogcs_from_string(

const char *buffer);

/* Test if argument p points to a GCS: */

int PEAPI pe_geogcs_p(

struct pe_struct_t *p);

/* Test if two GCSs are identical: */

int PEAPI pe_geogcs_eq(

PE_GEOGCS geogcs1,

PE_GEOGCS geogcs2);

/* Clone a GCS: */

PE_GEOGCS PEAPI pe_geogcs_clone(

PE_GEOGCS geogcs);

/*----------------------------------------------------------------------------*/

/* M A P P R O J E C T I O N S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_PROJECTION;

/* Projection transformation function type: */

typedef int (*PE_PROJFUNC)(

double sph[2],

double parm[PE_PARM_MAX],

int n,

double coord[][2],

int iconst[],

double dconst[]);

/* Projection horizon type: */

typedef struct pe_horizon_t

{

int nump;

int kind;

int inclusive;

int replicate;

int size;

double (*coord)[2];

} *PE_HORIZON;

/* Enum of replication directions for a horizon */

enum replicate_enum {PE_HORIZON_REPLICATE_NONE, PE_HORIZON_REPLICATE_LEFT,
PE_HORIZON_REPLICATE_RIGHT, PE_HORIZON_REPLICATE_BOTH};

/* Projection horizon function type: */

typedef PE_HORIZON (*PE_HORFUNC)(

double sph[2],

double parm[PE_PARM_MAX]);

/* Create a new map projection: */

PE_PROJECTION PEAPI pe_projection_new(

const char *name,

PE_PROJFUNC forward,

PE_PROJFUNC inverse,

PE_HORFUNC horizon);

/* Release memory previously allocated by function pe_projection_new(): */

void PEAPI pe_projection_del(

PE_PROJECTION projection);

/* Retrieve a projection's name into array name[]: */

void PEAPI pe_projection_name(

PE_PROJECTION projection,

char name[PE_NAME_MAX]);

/* Retrieve a projection's forward transformation and return it: */

PE_PROJFUNC PEAPI pe_projection_forward(

PE_PROJECTION projection);

/* Retrieve a projection's inverse transformation and return it: */

PE_PROJFUNC PEAPI pe_projection_inverse(

PE_PROJECTION projection);

/* Retrieve a projection's horizon function and return it: */

PE_HORFUNC PEAPI pe_projection_horizon(

PE_PROJECTION projection);

/* Put an external representation of a projection into array buffer[]: */

void PEAPI pe_projection_to_string(

PE_PROJECTION projection,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a projection: */

PE_PROJECTION PEAPI pe_projection_from_string(

const char *buffer);

/* Test if argument p points to a projection: */

int PEAPI pe_projection_p(

struct pe_struct_t *p);

/* Test if two projections are identical: */

int PEAPI pe_projection_eq(

PE_PROJECTION projection1,

PE_PROJECTION projection2);

/* Clone a projection: */

PE_PROJECTION PEAPI pe_projection_clone(

PE_PROJECTION projection);

/*----------------------------------------------------------------------------*/

/* M E T H O D S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_METHOD;

/* Method transformation function type: */

typedef int (*PE_METHFUNC)(

double sph1[2],

double sph2[2],

double parm[PE_PARM_MAX],

char *chrstr,

int n,

double coord[][2],

double h[]);

/* Create a new transformation method: */

PE_METHOD PEAPI pe_method_new(

const char *name,

PE_METHFUNC forward,

PE_METHFUNC inverse);

/* Release memory previously allocated by function
pe_method_new():
 */

void PEAPI pe_method_del(

PE_METHOD method);

/* Retrieve a methods's name into array name[]: */

void PEAPI pe_method_name(

PE_METHOD method,

char name[PE_NAME_MAX]);

/* Retrieve a method's forward function and return it: */

PE_METHFUNC PEAPI pe_method_forward(

PE_METHOD method);

/* Retrieve a method's inverse function and return it: */

PE_METHFUNC PEAPI pe_method_inverse(

PE_METHOD method);

/* Put an external representation of a method into array buffer[]: */

void PEAPI pe_method_to_string(

PE_METHOD method,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a method: */

PE_METHOD PEAPI pe_method_from_string(

const char *buffer);

/* Test if argument p points to a method: */

int PEAPI pe_method_p(

struct pe_struct_t *p);

/* Test if two methods are identical: */

int PEAPI pe_method_eq(

PE_METHOD method1,

PE_METHOD method2);

/* Clone a method: */

PE_METHOD PEAPI pe_method_clone(

PE_METHOD method);

/*----------------------------------------------------------------------------*/

/* P A R A M E T E R S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_PARAMETER;

/* Create a new parameter: */

PE_PARAMETER PEAPI pe_parameter_new(

const char *name,

double value);

/* Release memory previously allocated by function pe_parameter_new(): */

void PEAPI pe_parameter_del(

PE_PARAMETER parameter);

/* Retrieve a parameter's name into array name[]: */

void PEAPI pe_parameter_name(

PE_PARAMETER parameter,

char name[PE_NAME_MAX]);

/* Retrieve a parameter's value and return it: */

double PEAPI pe_parameter_value(

PE_PARAMETER parameter);

/* Return the parameter array index number a parameter object would occupy */

int PEAPI pe_parameter_index(

PE_PARAMETER parameter);

/* Set a parameter's value: */

int PEAPI pe_parameter_value_set(

PE_PARAMETER parameter,

double value);

/* Set a parameter's name: */

int PEAPI pe_parameter_name_set(

PE_PARAMETER parameter,

char name[PE_NAME_MAX]);

/* Put an external representation of a parameter into array buffer[]: */

void PEAPI pe_parameter_to_string(

PE_PARAMETER parameter,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a parameter: */

PE_PARAMETER PEAPI pe_parameter_from_string(

const char *buffer);

/* Test if argument p points to a parameter: */

int PEAPI pe_parameter_p(

struct pe_struct_t *p);

/* Test if two parameters are identical: */

int PEAPI pe_parameter_eq(

PE_PARAMETER parameter1,

PE_PARAMETER parameter2);

/* Clone a parameter: */

PE_PARAMETER PEAPI pe_parameter_clone(

PE_PARAMETER parameter);

/* Create default parameters in array parameters[] for a method object: */

int PEAPI pe_parameter_method_defaults(

PE_METHOD method,

PE_PARAMETER parameters[PE_PARM_MAX]);

/* Create default parameters in array parameters[] for a projection object: */

int PEAPI pe_parameter_projection_defaults(

PE_PROJECTION projection,

PE_PARAMETER parameters[PE_PARM_MAX]);

/*----------------------------------------------------------------------------*/

/* P R O J E C T E D C O O R D I N A T E S Y S T E M S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_PROJCS;

/* Create a new projected coordinate system (PCS): */

PE_PROJCS PEAPI pe_projcs_new(

const char *name,

PE_GEOGCS geogcs,

PE_PROJECTION projection,

PE_PARAMETER parameters[PE_PARM_MAX],

PE_UNIT unit);

/* Release memory previously allocated by function
pe_projcs_new():
 */

void PEAPI pe_projcs_del(

PE_PROJCS projcs);

/* Retrieve a PCS's name into array name[]: */

void PEAPI pe_projcs_name(

PE_PROJCS projcs,

char name[PE_NAME_MAX]);

/* Retrieve a PCS's GCS and return it: */

PE_GEOGCS PEAPI pe_projcs_geogcs(

PE_PROJCS projcs);

/* Retrieve a PCS's projection and return it: */

PE_PROJECTION PEAPI pe_projcs_projection(

PE_PROJCS projcs);

/* Retrieve a PCS's parameters into array parameters[]: */

void PEAPI pe_projcs_parameters(

PE_PROJCS projcs,

PE_PARAMETER parameters[PE_PARM_MAX]);

/* Retrieve a PCS's unit (linear) and return it: */

PE_UNIT PEAPI pe_projcs_unit(

PE_PROJCS projcs);

/* Put an external representation of a PCS into array buffer[]: */

void PEAPI pe_projcs_to_string(

PE_PROJCS projcs,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a PCS: */

PE_PROJCS PEAPI pe_projcs_from_string(

const char *buffer);

/* Test if argument p points to a PCS: */

int PEAPI pe_projcs_p(

struct pe_struct_t *p);

/* Test if two PCSs are identical: */

int PEAPI pe_projcs_eq(

PE_PROJCS projcs1,

PE_PROJCS projcs2);

/* Test if two PCSs are identical except for the name (no-name comparison) */

int PEAPI pe_projcs_eqnn(

PE_PROJCS projcs1,

PE_PROJCS projcs2);

/* Clone a PCS: */

PE_PROJCS PEAPI pe_projcs_clone(

PE_PROJCS projcs);

/* Clone a PCS, change the clone's unit objects to the arguments, */

/* and convert values in appropriate parameter objects: */

PE_PROJCS PEAPI pe_projcs_clone_alterunits(

PE_PROJCS projcs,

PE_UNIT linear_unit,

PE_UNIT angular_unit);

/* Load projection constants for a PCS */

int PEAPI pe_projcs_load_constants(

PE_PROJCS projcs);

/* Unload projection constants for a PCS */

void PEAPI pe_projcs_unload_constants(

PE_PROJCS projcs);

/* Are projection constants for a PCS loaded? */

int PEAPI pe_projcs_isconstloaded(

PE_PROJCS projcs);

/*----------------------------------------------------------------------------*/

/* C O O R D I N A T E S Y S T E M S */

/*----------------------------------------------------------------------------*/

/* Abstract supertype for PE_GEOGCS and PE_PROJCS: */

typedef struct pe_struct_t *PE_COORDSYS;

/* Release memory previously allocated by function pe_{geogcs|projcs}_new(): */

void PEAPI pe_coordsys_del(

PE_COORDSYS coordsys);

/* Put an external representation of a coordinate system into array buffer[]: */

void PEAPI pe_coordsys_to_string(

PE_COORDSYS coordsys,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a coord. system: */

PE_COORDSYS PEAPI pe_coordsys_from_string(

const char *buffer);

/* Test if argument p points to a coordinate system: */

int PEAPI pe_coordsys_p(

struct pe_struct_t *p);

/* Test if two coordinate systems are identical: */

int PEAPI pe_coordsys_eq(

PE_COORDSYS coordsys1,

PE_COORDSYS coordsys2);

/* Clone a coordinate system: */

PE_COORDSYS PEAPI pe_coordsys_clone(

PE_COORDSYS coordsys);

/*----------------------------------------------------------------------------*/

/* G E O G R A P H I C T R A N S F O R M A T I O N S */

/*----------------------------------------------------------------------------*/

typedef struct pe_struct_t *PE_GEOGTRAN;

/* Create a new geographic transformation (GT): */

PE_GEOGTRAN PEAPI pe_geogtran_new(

const char *name,

PE_GEOGCS geogcs1,

PE_GEOGCS geogcs2,

PE_METHOD method,

PE_PARAMETER parameters[PE_PARM_MAX]);

/* Release memory previously allocated by function pe_geogtran_new(): */

void PEAPI pe_geogtran_del(

PE_GEOGTRAN geogtran);

/* Retrieve a GT's name into array name[]: */

void PEAPI pe_geogtran_name(

PE_GEOGTRAN geogtran,

char name[PE_NAME_MAX]);

/* Retrieve a GT's 1st GCS and return it: */

PE_GEOGCS PEAPI pe_geogtran_geogcs1(

PE_GEOGTRAN geogtran);

/* Retrieve a GT's 2nd GCS and return it: */

PE_GEOGCS PEAPI pe_geogtran_geogcs2(

PE_GEOGTRAN geogtran);

/* Retrieve a GT's method and return it: */

PE_METHOD PEAPI pe_geogtran_method(

PE_GEOGTRAN geogtran);

/* Retrieve a GT's parameters into array parameters[]: */

void PEAPI pe_geogtran_parameters(

PE_GEOGTRAN geogtran,

PE_PARAMETER parameters[PE_PARM_MAX]);

/* Put an external representation of a GT into array buffer[]: */

void PEAPI pe_geogtran_to_string(

PE_GEOGTRAN geogtran,

char buffer[PE_BUFFER_MAX]);

/* Convert an external representation found in buffer into a GT: */

PE_GEOGTRAN PEAPI pe_geogtran_from_string(

const char *buffer);

/* Test if argument p points to a GT: */

int PEAPI pe_geogtran_p(

struct pe_struct_t *p);

/* Test if two GTs are identical: */

int PEAPI pe_geogtran_eq(

PE_GEOGTRAN geogtran1,

PE_GEOGTRAN geogtran2);

/* Clone a GT: */

PE_GEOGTRAN PEAPI pe_geogtran_clone(

PE_GEOGTRAN geogtran);

/* Load constants for a geographic transform */

int PEAPI pe_geogtran_load_constants(

PE_GEOGTRAN geogtran);

/* Unload constants for a geographic transformation */

void PEAPI pe_geotran_unload_constants(

PE_GEOGTRAN geogtran);

/* Are projection constants for a geographic transform loaded? */

int PEAPI pe_geogtran_isconstloaded(

PE_GEOGTRAN geogtran);

/*----------------------------------------------------------------------------*/

/* A C T I O N S */

/*----------------------------------------------------------------------------*/

/* Transform coordinates from a geographic to projected coordinate system: */

int PEAPI pe_geog_to_proj(

PE_PROJCS projcs,

int n,

double coord[][2]);

/* Transform coordinates from a projected to geographic coordinate system: */

int PEAPI pe_proj_to_geog(

PE_PROJCS projcs,

int n,

double coord[][2]);

/* Transform coordinates from a geographic to geographic coordinate system: */

int PEAPI pe_geog1_to_geog2(

PE_GEOGTRAN geogtran,

int n,

double coord[][2],

double h[]);

int PEAPI pe_geog2_to_geog1(

PE_GEOGTRAN geogtran,

int n,

double coord[][2],

double h[]);

/* Generate a horizon for a projected coordinate system and return it: */

PE_HORIZON PEAPI pe_generate_horizon(

PE_PROJCS projcs);

/* Release memory previously allocated by function pe_generate_horizon(): */

void pe_horizon_del(

PE_HORIZON horizon);

/*----------------------------------------------------------------------------*/

/* M A T H E M A T I C S */

/*----------------------------------------------------------------------------*/

/* Longitude adjustment: */

double PEAPI pe_delta(double lam);

/* Comparison with tolerance: */

int PEAPI pe_eq(double u, double v);

/* Auxiliary function: */

double PEAPI pe_w(double e2, double phi);

/* Meridional radius of curvature: */

double PEAPI pe_m(double a, double e2, double phi);

/* Transverse radius of curvature: */

double PEAPI pe_n(double a, double e2, double phi);

/* Conformal latitude: */

double PEAPI pe_phi_to_chi(double e2, double phi);

/* Inverse conformal latitude: */

double PEAPI pe_chi_to_phi(double e2, double chi);

/* Authalic latitude: */

double PEAPI pe_phi_to_beta(double e2, double phi);

/* Inverse authalic latitude: */

double PEAPI pe_beta_to_phi(double e2, double beta);

/* Rectifying latitude: */

double PEAPI pe_phi_to_mu(double e2, double phi);

/* Inverse rectifying latitude: */

double PEAPI pe_mu_to_phi(double e2, double mu);

/* Parametric (reduced) latitude: */

double PEAPI pe_phi_to_eta(double e2, double phi);

/* Inverse parametric (reduced) latitude: */

double PEAPI pe_eta_to_phi(double e2, double eta);

/* Authalic radius: */

double PEAPI pe_auth_r(double a, double e2);

/* Meridional distance: */

double PEAPI pe_q(double a, double e2, double phi);

/* Meridional quadrant: */

double PEAPI pe_q90(double a, double e2);

/* Transformation from curvilinear to cartesian coordinates: */

void PEAPI pe_curv_to_cart(double a, double e2,

double phi, double lam, double h,

double *x, double *y, double *z );

/* Transformation from cartesian to curvilinear coordinates: */

void PEAPI pe_cart_to_curv(double a, double e2,

double x, double y, double z,

double *phi, double *lam, double *h);

/* Find geodesic distance and azimuth given two geodetic coordinates: */

void PEAPI pe_geodesic_distance(double a, double e2,

double lam1, double phi1,

double lam2, double phi2,

double *distance,

double *az12, double *az21);

/* Find destination geodetic coordinate given origin coordinate,

geodesic distance, and azimuth: */

void PEAPI pe_geodesic_coordinate(double a, double e2,

double lam1, double phi1,

double distance, double az12,

double *lam2, double *phi2);

#ifdef __cplusplus

};

#endif

#endif


pe_coordsys_from_prj.h

/* -------------------------------------------------------------------------- */

/* Projection Engine Version 8.10 */

/* Copyright (C) 1992-2001 Environmental Systems Research Institute, Inc. */

/* All rights reserved. */

/* -------------------------------------------------------------------------- */

#ifndef PE_FROM_PRJ_INCLUDED

#define PE_FROM_PRJ_INCLUDED

#define PE_PRJ_ILLEGAL_ARGUMENT (-100)

#define PE_PRJ_CANNOT_OPEN_FILE (-101)

#define PE_PRJ_ILLEGAL_KEYWORD (-102)

#define PE_PRJ_TOO_MANY_PARAMS (-103)

#define PE_PRJ_ILLEGAL_UNIT (-104)

#define PE_PRJ_ILLEGAL_SPHEROID (-105)

#define PE_PRJ_ILLEGAL_DATUM (-106)

#define PE_PRJ_ILLEGAL_PROJECTION (-107)

#define PE_PRJ_ILLEGAL_PARAMETER (-108)

#define PE_PRJ_ILLEGAL_ZONE (-109)

#define PE_PRJ_OUT_OF_MEMORY (-200)

#define PE_PRJ_ILLEGAL_UNIT (-121)

#define PE_PRJ_ILLEGAL_PRIMEM (-122)

#define PE_PRJ_ILLEGAL_PROJECTION (-123)

#define PE_PRJ_ILLEGAL_SPHEROID (-124)

#define PE_PRJ_ILLEGAL_SCALE_FACTOR (-125)

#define PE_PRJ_ILLEGAL_PARAMETER (-126)

#ifdef __cplusplus

extern "C" {

#endif

PE_COORDSYS PEAPI pe_coordsys_from_prjfile(

const char *path,

int *error);

PE_COORDSYS PEAPI pe_coordsys_from_prjstring(

const char *string,

int *error);

PE_UNIT PEAPI pe_zunit_from_prjfile(

const char *path,

int *error);

PE_UNIT PEAPI pe_zunit_from_prjstring(

const char *string,

int *error);

void PEAPI pe_coordsys_to_prjfile(

PE_COORDSYS coordsys,

PE_UNIT zunit,

const char *path,

int *error);

void PEAPI pe_coordsys_to_prjstring(

PE_COORDSYS coordsys,

PE_UNIT zunit,

const char *string,

int *error);

#ifdef __cplusplus

};

#endif

#endif


pedef.h

/* -------------------------------------------------------------------------- */

/* Projection Engine */

/* Copyright (C) 1996-2001 Environmental Systems Research Institute, Inc. */

/* All rights reserved. */

/* -------------------------------------------------------------------------- */

#ifndef PEDEF_INCLUDED

#define PEDEF_INCLUDED

/* from pef.h */

/*----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------*/

/* U N I T S O F M E A S U R E */

/*----------------------------------------------------------------------------*/

#define PE_U_METER             9001 /* International meter                    */
#define PE_U_FOOT              9002 /* International foot                     */
#define PE_U_FOOT_US           9003 /* US survey foot                         */
#define PE_U_FOOT_CLARKE       9005 /* Clarke's foot                          */
#define PE_U_FATHOM            9014 /* Fathom                                 */
#define PE_U_NAUTICAL_MILE     9030 /* International nautical mile            */
#define PE_U_METER_GERMAN      9031 /* German legal meter                     */
#define PE_U_CHAIN_US          9033 /* US survey chain                        */
#define PE_U_LINK_US           9034 /* US survey link                         */
#define PE_U_MILE_US           9035 /* US survey mile                         */
#define PE_U_KILOMETER         9036 /* Kilometer                              */
#define PE_U_YARD_CLARKE       9037 /* Yard (Clarke)                          */
#define PE_U_CHAIN_CLARKE      9038 /* Chain (Clarke)                         */
#define PE_U_LINK_CLARKE       9039 /* Link (Clarke's ratio) (was PE_U_LINK 9007) */
#define PE_U_YARD_SEARS        9040 /* Yard (Sears)          (was 9012)       */
#define PE_U_FOOT_SEARS        9041 /* Sears' foot           (was 9032)       */
#define PE_U_CHAIN_SEARS       9042 /* Chain (Sears)         (was 9011)       */
#define PE_U_LINK_SEARS        9043 /* Link (Sears)          (was 9009)       */
#define PE_U_YARD_BENOIT_A     9050 /* Yard (Benoit 1895 A)                   */
#define PE_U_FOOT_BENOIT_A     9051 /* Foot (Benoit 1895 A)                   */
#define PE_U_CHAIN_BENOIT_A    9052 /* Chain (Benoit 1895 A)                  */
#define PE_U_LINK_BENOIT_A     9053 /* Link (Benoit 1895 A)                   */
#define PE_U_YARD_BENOIT_B     9060 /* Yard (Benoit 1895 B)                   */
#define PE_U_FOOT_BENOIT_B     9061 /* Foot (Benoit 1895 B)                   */
#define PE_U_CHAIN_BENOIT_B    9062 /* Chain (Benoit 1895 B) (was PE_U_CHAIN_BENOIT 9010)*/
#define PE_U_LINK_BENOIT_B     9063 /* Link (Benoit 1895 B) (was PE_U_LINK_BENOIT 9008)*/
#define PE_U_FOOT_1865         9070 /* Foot (1865)                            */
#define PE_U_FOOT_INDIAN       9080 /* Indian geodetic foot  (was 9006)       */
#define PE_U_FOOT_INDIAN_1937  9081 /* Indian foot (1937)                     */
#define PE_U_FOOT_INDIAN_1962  9082 /* Indian foot (1962)                     */
#define PE_U_FOOT_INDIAN_1975  9083 /* Indian foot (1975)                     */
#define PE_U_YARD_INDIAN       9084 /* Indian yard           (was 9013)       */
#define PE_U_YARD_INDIAN_1937  9085 /* Indian yard (1937)                     */
#define PE_U_YARD_INDIAN_1962  9086 /* Indian yard (1962)                     */
#define PE_U_YARD_INDIAN_1975  9087 /* Indian yard (1975)                     */

#define PE_U_RADIAN            9101 /* Radian                                 */
#define PE_U_DEGREE            9102 /* Degree                                 */
#define PE_U_MINUTE            9103 /* Arc-minute                             */
#define PE_U_SECOND            9104 /* Arc-second                             */
#define PE_U_GRAD              9105 /* Grad (angle subtended by 1/400 circle) */
#define PE_U_GON               9106 /* Gon  (angle subtended by 1/400 circle) */
#define PE_U_MICRORADIAN       9109 /* Microradian ( 1e-6 radian )            */
#define PE_U_MINUTE_CENTESIMAL 9112 /* Centesimal minute (1/100th Gon (Grad)) */
#define PE_U_SECOND_CENTESIMAL 9113 /* Centesimal second(1/10000th Gon (Grad))*/
#define PE_U_MIL_6400          9114 /* Mil (angle subtended by 1/6400 circle) */

/*----------------------------------------------------------------------------*/
/*                    G E O D E T I C   S P H E R O I D S                     */
/*----------------------------------------------------------------------------*/
#define PE_S_AIRY_1830           7001 /* Airy 1830                            */
#define PE_S_AIRY_MOD            7002 /* Airy modified                        */
#define PE_S_ATS_1977            7041 /* Average Terrestrial System 1977      */
#define PE_S_AUSTRALIAN          7003 /* Australian National                  */
#define PE_S_BESSEL_1841         7004 /* Bessel 1841                          */
#define PE_S_BESSEL_MOD          7005 /* Bessel modified                      */
#define PE_S_BESSEL_NAMIBIA      7006 /* Bessel Namibia                       */
#define PE_S_CLARKE_1858         7007 /* Clarke 1858                          */
#define PE_S_CLARKE_1866         7008 /* Clarke 1866                          */
#define PE_S_CLARKE_1866_MICH    7009 /* Clarke 1866 Michigan                 */
#define PE_S_CLARKE_1880         7034 /* Clarke 1880                          */
#define PE_S_CLARKE_1880_ARC     7013 /* Clarke 1880 (Arc)                    */
#define PE_S_CLARKE_1880_BENOIT  7010 /* Clarke 1880 (Benoit)                 */
#define PE_S_CLARKE_1880_IGN     7011 /* Clarke 1880 (IGN)                    */
#define PE_S_CLARKE_1880_RGS     7012 /* Clarke 1880 (RGS)                    */
#define PE_S_CLARKE_1880_SGA     7014 /* Clarke 1880 (SGA)                    */
#define PE_S_EVEREST_1830        7042 /* Everest 1830 (definition)            */
#define PE_S_EVEREST_MOD         7018 /* Everest 1830 (modified)              */
#define PE_S_EVEREST_ADJ_1937    7015 /* Everest (adjustment 1937)            */
#define PE_S_EVEREST_DEF_1962    7044 /* Everest (definition 1962)            */
#define PE_S_EVEREST_DEF_1967    7016 /* Everest (definition 1967)            */
#define PE_S_EVEREST_DEF_1975    7045 /* Everest (definition 1975) (was 7017) */
#define PE_S_GEM_10C             7031 /* GEM gravity potential model          */
#define PE_S_GRS_1967            7036 /* GRS 1967 = International 1967        */
#define PE_S_GRS_1980            7019 /* GRS 1980                             */
#define PE_S_HELMERT_1906        7020 /* Helmert 1906                         */
#define PE_S_INDONESIAN          7021 /* Indonesian National                  */
#define PE_S_INTERNATIONAL_1924  7022 /* International 1924                   */
#define PE_S_INTERNATIONAL_1967  7023 /* International 1967                   */
#define PE_S_KRASOVSKY_1940      7024 /* Krasovsky 1940                       */
#define PE_S_NWL_9D              7025 /* Transit precise ephemeris            */
#define PE_S_OSU_86F             7032 /* OSU 1986 geoidal model               */
#define PE_S_OSU_91A             7033 /* OSU 1991 geoidal model               */
#define PE_S_PLESSIS_1817        7027 /* Plessis 1817                         */
#define PE_S_SPHERE              7035 /* Authalic sphere                      */
#define PE_S_STRUVE_1860         7028 /* Struve 1860                          */
#define PE_S_WAR_OFFICE          7029 /* War Office                           */
#define PE_S_NWL_10D             7026 /* NWL-10D == WGS 1972                  */
#define PE_S_WGS_1972            7043 /* WGS 1972                             */
#define PE_S_WGS_1984            7030 /* WGS 1984                             */
#define PE_S_WGS_1966          107001 /* WGS 1966                             */
#define PE_S_FISCHER_1960      107002 /* Fischer 1960                         */
#define PE_S_FISCHER_1968      107003 /* Fischer 1968                         */
#define PE_S_FISCHER_MOD       107004 /* Fischer modified                     */
#define PE_S_HOUGH_1960        107005 /* Hough 1960                           */
#define PE_S_EVEREST_MOD_1969  107006 /* Everest modified 1969                */
#define PE_S_WALBECK           107007 /* Walbeck                              */
#define PE_S_SPHERE_AI         107008 /* Authalic sphere (ARC/INFO)           */
#define PE_S_GRS_1967_TRUNC    107036 /* GRS 1967 Truncated                   */

/*----------------------------------------------------------------------------*/
/*                     H O R I Z O N T A L   D A T U M S                      */
/*                        (S P H E R O I D   O N L Y)                         */
/*----------------------------------------------------------------------------*/
#define PE_D_AIRY_1830           6001 /* Airy 1830                            */
#define PE_D_AIRY_MOD            6002 /* Airy modified                        */
#define PE_D_AUSTRALIAN          6003 /* Australian National                  */
#define PE_D_BESSEL_1841         6004 /* Bessel 1841                          */
#define PE_D_BESSEL_MOD          6005 /* Bessel modified                      */
#define PE_D_BESSEL_NAMIBIA      6006 /* Bessel Namibia                       */
#define PE_D_CLARKE_1858         6007 /* Clarke 1858                          */
#define PE_D_CLARKE_1866         6008 /* Clarke 1866                          */
#define PE_D_CLARKE_1866_MICH    6009 /* Clarke 1866 Michigan                 */
#define PE_D_CLARKE_1880         6034 /* Clarke 1880                          */
#define PE_D_CLARKE_1880_ARC     6013 /* Clarke 1880 (Arc)                    */
#define PE_D_CLARKE_1880_BENOIT  6010 /* Clarke 1880 (Benoit)                 */
#define PE_D_CLARKE_1880_IGN     6011 /* Clarke 1880 (IGN)                    */
#define PE_D_CLARKE_1880_RGS     6012 /* Clarke 1880 (RGS)                    */
#define PE_D_CLARKE_1880_SGA     6014 /* Clarke 1880 (SGA)                    */
#define PE_D_EVEREST_1830        6042 /* Everest 1830  (was 106015)           */
#define PE_D_EVEREST_ADJ_1937    6015 /* Everest (adjustment 1937)            */
#define PE_D_EVEREST_DEF_1962    6044 /* Everest (definition 1962)            */
#define PE_D_EVEREST_DEF_1967    6016 /* Everest (definition 1967)            */
#define PE_D_EVEREST_DEF_1975    6045 /* Everest (definition 1975) (was 6017) */
#define PE_D_EVEREST_MOD         6018 /* Everest modified                     */
#define PE_D_GEM_10C             6031 /* GEM gravity potential model          */
#define PE_D_GRS_1967            6036 /* GRS 1967                             */
#define PE_D_GRS_1980            6019 /* GRS 1980                             */
#define PE_D_HELMERT_1906        6020 /* Helmert 1906                         */
#define PE_D_INDONESIAN          6021 /* Indonesian National                  */
#define PE_D_INTERNATIONAL_1924  6022 /* International 1927                   */
#define PE_D_INTERNATIONAL_1967  6023 /* International 1967                   */
#define PE_D_KRASOVSKY_1940      6024 /* Krasovsky 1940                       */
#define PE_D_NWL_9D              6025 /* Transit precise ephemeris            */
#define PE_D_OSU_86F             6032 /* OSU 1986 geoidal model               */
#define PE_D_OSU_91A             6033 /* OSU 1991 geoidal model               */
#define PE_D_PLESSIS_1817        6027 /* Plessis 1817                         */
#define PE_D_SPHERE              6035 /* Authalic sphere                      */
#define PE_D_STRUVE_1860         6028 /* Struve 1860                          */
#define PE_D_WAR_OFFICE          6029 /* War Office                           */
#define PE_D_WGS_1966          106001 /* WGS 1966                             */
#define PE_D_FISCHER_1960      106002 /* Fischer 1960                         */
#define PE_D_FISCHER_1968      106003 /* Fischer 1968                         */
#define PE_D_FISCHER_MOD       106004 /* Fischer modified                     */
#define PE_D_HOUGH_1960        106005 /* Hough 1960                           */
#define PE_D_EVEREST_MOD_1969  106006 /* Everest modified 1969                */
#define PE_D_WALBECK           106007 /* Walbeck                              */
#define PE_D_SPHERE_AI         106008 /* Authalic sphere (ARC/INFO)           */

/*----------------------------------------------------------------------------*/
/*                     H O R I Z O N T A L   D A T U M S                      */
/*----------------------------------------------------------------------------*/
#define PE_D_ADINDAN             6201 /* Adindan                              */
#define PE_D_AFGOOYE             6205 /* Afgooye                              */
#define PE_D_AGADEZ              6206 /* Agadez                               */
#define PE_D_AGD_1966            6202 /* Australian Geodetic Datum 1966       */
#define PE_D_AGD_1984            6203 /* Australian Geodetic Datum 1984       */
#define PE_D_AIN_EL_ABD_1970     6204 /* Ain el Abd 1970                      */
#define PE_D_AMERSFOORT          6289 /* Amersfoort                           */
#define PE_D_ARATU               6208 /* Aratu                                */
#define PE_D_ARC_1950            6209 /* Arc 1950                             */
#define PE_D_ARC_1960            6210 /* Arc 1960                             */
#define PE_D_ATF                 6901 /* Ancienne Triangulation Francaise     */
#define PE_D_ATS_1977            6122 /* Average Terrestrial System 1977      */
#define PE_D_BARBADOS_1938       6212 /* Barbados 1938                        */
#define PE_D_BATAVIA             6211 /* Batavia                              */
#define PE_D_BEDUARAM            6213 /* Beduaram                             */
#define PE_D_BEIJING_1954        6214 /* Beijing 1954                         */
#define PE_D_BELGE_1950          6215 /* Reseau National Belge 1950           */
#define PE_D_BELGE_1972          6313 /* Reseau National Belge 1972           */
#define PE_D_BERMUDA_1957        6216 /* Bermuda 1957                         */
#define PE_D_BERN_1898           6217 /* Bern 1898                            */
#define PE_D_BERN_1938           6306 /* Bern 1938                            */
#define PE_D_BOGOTA              6218 /* Bogota                               */
#define PE_D_BUKIT_RIMPAH        6219 /* Bukit Rimpah                         */
#define PE_D_CAMACUPA            6220 /* Camacupa                             */
#define PE_D_CAMPO_INCHAUSPE     6221 /* Campo Inchauspe                      */
#define PE_D_CAPE                6222 /* Cape                                 */
#define PE_D_CARTHAGE            6223 /* Carthage                             */
#define PE_D_CHUA                6224 /* Chua                                 */
#define PE_D_CONAKRY_1905        6315 /* Conakry 1905                         */
#define PE_D_CORREGO_ALEGRE      6225 /* Corrego Alegre                       */
#define PE_D_COTE_D_IVOIRE       6226 /* Cote d'Ivoire                        */
#define PE_D_DATUM_73            6274 /* Datum 73                             */
#define PE_D_DEIR_EZ_ZOR         6227 /* Deir ez Zor                          */
#define PE_D_DEALUL_PISCULUI_1933  6316 /* Dealul Piscului 1933               */
#define PE_D_DEALUL_PISCULUI_1970  6317 /* Dealul Piscului 1970               */
#define PE_D_DHDN                6314 /* Deutsche Hauptdreiecksnetz           */
#define PE_D_DOUALA              6228 /* Douala                               */
#define PE_D_ED_1950             6230 /* European Datum 1950                  */
#define PE_D_ED_1987             6231 /* European Datum 1987                  */
#define PE_D_EGYPT_1907          6229 /* Egypt 1907                           */
#define PE_D_ETRF_1989           6258 /* European Terrestrial Ref. Frame 1989 */
#define PE_D_FAHUD               6232 /* Fahud                                */
#define PE_D_FD_1958             6132 /* Final Datum 1958                     */
#define PE_D_GANDAJIKA_1970      6233 /* Gandajika 1970                       */
#define PE_D_GAROUA              6234 /* Garoua                               */
#define PE_D_GDA_1994            6283 /* Geocentric Datum of Australia 1994   */
#define PE_D_GGRS_1987           6121 /* Greek Geodetic Reference System 1987 */
#define PE_D_GREEK               6120 /* Greek                                */
#define PE_D_GUYANE_FRANCAISE    6235 /* Guyane Francaise                     */
#define PE_D_HERAT_NORTH         6255 /* Herat North                          */
#define PE_D_HITO_XVIII_1963     6254 /* Hito XVIII 1963                      */
#define PE_D_HU_TZU_SHAN         6236 /* Hu Tzu Shan                          */
#define PE_D_HUNGARIAN_1972      6237 /* Hungarian Datum 1972                 */
#define PE_D_INDIAN_1954         6239 /* Indian 1954                          */
#define PE_D_INDIAN_1975         6240 /* Indian 1975                          */
#define PE_D_INDONESIAN_1974     6238 /* Indonesian Datum 1974                */
#define PE_D_JAMAICA_1875        6241 /* Jamaica 1875                         */
#define PE_D_JAMAICA_1969        6242 /* Jamaica 1969                         */
#define PE_D_KALIANPUR_1880      6243 /* Kalianpur (was PE_D_KALIANPUR)       */
#define PE_D_KANDAWALA           6244 /* Kandawala                            */
#define PE_D_KERTAU              6245 /* Kertau                               */
#define PE_D_KKJ                 6123 /* Kartastokoordinaattijarjestelma      */
#define PE_D_KOC                 6246 /* Kuwait Oil Company                   */
#define PE_D_KUDAMS              6319 /* Kuwait Utility                       */
#define PE_D_LA_CANOA            6247 /* La Canoa                             */
#define PE_D_LAKE                6249 /* Lake                                 */
#define PE_D_LEIGON              6250 /* Leigon                               */
#define PE_D_LIBERIA_1964        6251 /* Liberia 1964                         */
#define PE_D_LISBON              6207 /* Lisbon                               */
#define PE_D_LITHUANIA_1994      6126 /* Lithuania 1994                       */
#define PE_D_LOMA_QUINTANA       6288 /* Loma Quintana                        */
#define PE_D_LOME                6252 /* Lome                                 */
#define PE_D_LUZON_1911          6253 /* Luzon 1911                           */
#define PE_D_MADRID_1870         6903 /* Madrid 1870                          */
#define PE_D_MADZANSUA           6128 /* Madzansua - superseded by Tete       */
#define PE_D_MAHE_1971           6256 /* Mahe 1971                            */
#define PE_D_MAKASSAR            6257 /* Makassar                             */
#define PE_D_MALONGO_1987        6259 /* Malongo 1987                         */
#define PE_D_MANOCA              6260 /* Manoca                               */
#define PE_D_MASSAWA             6262 /* Massawa                              */
#define PE_D_MERCHICH            6261 /* Merchich                             */
#define PE_D_MGI                 6312 /* Militar-Geographische Institut       */
#define PE_D_MHAST               6264 /* Mhast                                */
#define PE_D_MINNA               6263 /* Minna                                */
#define PE_D_MONTE_MARIO         6265 /* Monte Mario                          */
#define PE_D_MOZNET              6130 /* Moznet                               */
#define PE_D_MPORALOKO           6266 /* M'poraloko                           */
#define PE_D_NAD_MICH            6268 /* NAD Michigan                         */
#define PE_D_NAD_1927            6267 /* North American Datum 1927            */
#define PE_D_NAD_1983            6269 /* North American Datum 1983            */
#define PE_D_NAHRWAN_1967        6270 /* Nahrwan 1967                         */
#define PE_D_NAPARIMA_1972       6271 /* Naparima 1972                        */
#define PE_D_NDG                 6902 /* Nord de Guerre                       */
#define PE_D_NGN                 6318 /* National Geodetic Network (Kuwait)   */
#define PE_D_NGO_1948            6273 /* NGO 1948                             */
#define PE_D_NORD_SAHARA_1959    6307 /* Nord Sahara 1959                     */
#define PE_D_NSWC_9Z_2           6276 /* NSWC 9Z-2                            */
#define PE_D_NTF                 6275 /* Nouvelle Triangulation Francaise     */
#define PE_D_NZGD_1949           6272 /* New Zealand Geodetic Datum 1949      */
#define PE_D_OBSERVATARIO        6129 /* Observatario -  superseded by Tete   */
#define PE_D_OS_SN_1980          6279 /* OS (SN) 1980                         */
#define PE_D_OSGB_1936           6277 /* OSGB 1936                            */
#define PE_D_OSGB_1970_SN        6278 /* OSGB 1970 (SN)                       */
#define PE_D_PADANG_1884         6280 /* Padang 1884                          */
#define PE_D_PALESTINE_1923      6281 /* Palestine 1923                       */
#define PE_D_POINTE_NOIRE        6282 /* Pointe Noire                         */
#define PE_D_PSAD_1956           6248 /* Provisional South Amer. Datum 1956   */
#define PE_D_PULKOVO_1942        6284 /* Pulkovo 1942                         */
#define PE_D_PULKOVO_1995        6200 /* Pulkovo 1995                         */
#define PE_D_QATAR               6285 /* Qatar                                */
#define PE_D_QATAR_1948          6286 /* Qatar 1948                           */
#define PE_D_QORNOQ              6287 /* Qornoq                               */
#define PE_D_RT90                6124 /* RT 1990                              */
#define PE_D_SAD_1969            6291 /* South American Datum 1969            */
#define PE_D_SAMBOJA             6125 /* Samboja                              */
#define PE_D_SAPPER_HILL_1943    6292 /* Sapper Hill 1943                     */
#define PE_D_SCHWARZECK          6293 /* Schwarzeck                           */
#define PE_D_SEGORA              6294 /* Segora                               */
#define PE_D_SERINDUNG           6295 /* Serindung                            */
#define PE_D_STOCKHOLM_1938      6308 /* Stockholm 1938                       */
#define PE_D_ST_GEORGE_ISLAND    6138 /* Alaska - St. George Island           */
#define PE_D_ST_LAWRENCE_ISLAND  6136 /* Alaska - St. Lawrence Island         */
#define PE_D_ST_PAUL_ISLAND      6137 /* Alaska - St. Paul Island             */
#define PE_D_SUDAN               6296 /* Sudan                                */
#define PE_D_TANANARIVE_1925     6297 /* Tananarive 1925                      */
#define PE_D_TETE                6127 /* Tete                                 */
#define PE_D_TIMBALAI_1948       6298 /* Timbalai 1948                        */
#define PE_D_TM65                6299 /* TM65                                 */
#define PE_D_TM75                6300 /* TM75                                 */
#define PE_D_TOKYO               6301 /* Tokyo                                */
#define PE_D_TRINIDAD_1903       6302 /* Trinidad 1903                        */
#define PE_D_TRUCIAL_COAST_1948  6303 /* Trucial Coast 1948                   */
#define PE_D_VOIROL_1875         6304 /* Voirol 1875                          */
#define PE_D_VOIROL_UNIFIE_1960  6305 /* Voirol Unifie 1960                   */
#define PE_D_WGS_1972            6322 /* WGS 1972                             */
#define PE_D_WGS_1972_BE         6324 /* WGS 1972 Transit Broadcast Ephemeris */
#define PE_D_WGS_1984            6326 /* WGS 1984                             */
#define PE_D_YACARE              6309 /* Yacare                               */
#define PE_D_YOFF                6310 /* Yoff                                 */
#define PE_D_ZANDERIJ            6311 /* Zanderij                             */

#define PE_D_ANGUILLA_1957       6600 /* Anguilla 1957                        */
#define PE_D_ESTONIA_1992        6133 /* Estonia 1992                         */
#define PE_D_DOMINICA_1945       6602 /* Dominica 1945                        */
#define PE_D_GRENADA_1953        6603 /* Grenada 1953                         */
#define PE_D_NAD_1927_CGQ77      6609 /* NAD_1927 (CGQ77)                     */
#define PE_D_NAD_1927_DEF_1976   6608 /* NAD 1927 (1976)                      */
#define PE_D_PDO_1993            6134 /* PDO Survey Datum 1993                */
#define PE_D_ST_KITTS_1955       6605 /* St. Kitts 1955                       */
#define PE_D_ST_LUCIA_1955       6606 /* St. Lucia 1955                       */
#define PE_D_ST_VINCENT_1945     6607 /* St. Vincent 1945                     */

#define PE_D_NAD_1983_CSRS98     6140 /* NAD 1983(Canadian Spatial Ref System)*/
#define PE_D_ISRAEL              6141 /* Israel                               */
#define PE_D_LOCODJO_1965        6142 /* Locodjo 1965                         */
#define PE_D_ABIDJAN_1987        6143 /* Abidjan 1987                         */
#define PE_D_KALIANPUR_1937      6144 /* Kalianpur 1937                       */
#define PE_D_KALIANPUR_1962      6145 /* Kalianpur 1962                       */
#define PE_D_KALIANPUR_1975      6146 /* Kalianpur 1975                       */
#define PE_D_HANOI_1972          6147 /* Hanoi 1972                           */
#define PE_D_HARTEBEESTHOEK94    6148 /* Hartebeesthoek 1994                  */
#define PE_D_CH1903              6149 /* CH 1903                              */
#define PE_D_CH1903_PLUS         6150 /* CH 1903+                             */
#define PE_D_CHTRF_1995          6151 /* Swiss Terrestrial Ref Frame 1995     */
#define PE_D_NAD_1983_HARN       6152 /* NAD 1983 (HARN)                      */
#define PE_D_RASSADIRAN          6153 /* Rassadiran                           */
#define PE_D_ED_1950_ED77        6154 /* ED 1950 (ED77)                       */
#define PE_D_OLD_HAWAIIAN        6135 /* Old Hawaiian                         */
#define PE_D_ANTIGUA_1943        6601 /* Antigua Astro 1943                   */
#define PE_D_MONTSERRAT_1958     6604 /* Montserrat Astro 1958                */
#define PE_D_PUERTO_RICO         6139 /* Puerto Rico                          */
#define PE_D_INDIAN_1960         6131 /* Indian 1960                          */
#define PE_D_DABOLA              6155 /* Dabola                               */
#define PE_D_S_JTSK              6156 /* S-JTSK                               */
#define PE_D_BISSAU              6165 /* Bissau                               */

#define PE_D_ESTONIA_1937          106101 /* Estonia 1937                     */
#define PE_D_HERMANNSKOGEL         106102 /* Hermannskogel                    */
#define PE_D_SIERRA_LEONE_1960     106103 /* Sierra Leone 1960                */
#define PE_D_EUROPEAN_1979         106201 /* European 1979                    */
#define PE_D_EVEREST_BANGLADESH    106202 /* Everest - Bangladesh             */
#define PE_D_EVEREST_INDIA_NEPAL   106203 /* Everest - India and Nepal        */
#define PE_D_HJORSEY_1955          106204 /* Hjorsey 1955                     */
#define PE_D_HONG_KONG_1963        106205 /* Hong Kong 1963                   */
#define PE_D_OMAN                  106206 /* Oman                             */
#define PE_D_S_ASIA_SINGAPORE      106207 /* South Asia Singapore             */
#define PE_D_AYABELLE              106208 /* Ayabelle Lighthouse              */
#define PE_D_POINT58               106211 /* Point 58                         */
#define PE_D_BEACON_E_1945         106212 /* Astro Beacon E 1945              */
#define PE_D_TERN_ISLAND_1961      106213 /* Tern Island Astro 1961           */
#define PE_D_ASTRO_1952            106214 /* Astronomical Station 1952        */
#define PE_D_BELLEVUE              106215 /* Bellevue IGN                     */
#define PE_D_CANTON_1966           106216 /* Canton Astro 1966                */
#define PE_D_CHATHAM_ISLAND_1971   106217 /* Chatham Island Astro 1971        */
#define PE_D_DOS_1968              106218 /* DOS 1968                         */
#define PE_D_EASTER_ISLAND_1967    106219 /* Easter Island 1967               */
#define PE_D_GUAM_1963             106220 /* Guam 1963                        */
#define PE_D_GUX_1                 106221 /* GUX 1 Astro                      */
#define PE_D_JOHNSTON_ISLAND_1961  106222 /* Johnston Island 1961             */
#define PE_D_KUSAIE_1951           106259 /* Kusaie Astro 1951                */
#define PE_D_MIDWAY_1961           106224 /* Midway Astro 1961                */
#define PE_D_PITCAIRN_1967         106226 /* Pitcairn Astro 1967              */
#define PE_D_SANTO_DOS_1965        106227 /* Santo DOS 1965                   */
#define PE_D_VITI_LEVU_1916        106228 /* Viti Levu 1916                   */
#define PE_D_WAKE_ENIWETOK_1960    106229 /* Wake-Eniwetok 1960               */
#define PE_D_WAKE_ISLAND_1952      106230 /* Wake Island Astro 1952           */
#define PE_D_ANNA_1_1965           106231 /* Anna 1 Astro 1965                */
#define PE_D_GAN_1970              106232 /* Gan 1970                         */
#define PE_D_ISTS_073_1969         106233 /* ISTS 073 Astro 1969              */
#define PE_D_KERGUELEN_ISLAND_1949 106234 /* Kerguelen Island 1949            */
#define PE_D_REUNION               106235 /* Reunion                          */
#define PE_D_ASCENSION_ISLAND_1958 106237 /* Ascension Island 1958            */
#define PE_D_DOS_71_4              106238 /* Astro DOS 71/4                   */
#define PE_D_CAPE_CANAVERAL        106239 /* Cape Canaveral                   */
#define PE_D_FORT_THOMAS_1955      106240 /* Fort Thomas 1955                 */
#define PE_D_GRACIOSA_1948         106241 /* Graciosa Base SW 1948            */
#define PE_D_ISTS_061_1968         106242 /* ISTS 061 Astro 1968              */
#define PE_D_LC5_1961              106243 /* L.C. 5 Astro 1961                */
#define PE_D_OBSERV_METEOR_1939    106245 /* Observ. Meteorologico 1939       */
#define PE_D_PICO_DE_LAS_NIEVES    106246 /* Pico de Las Nieves               */
#define PE_D_PORTO_SANTO_1936      106247 /* Porto Santo 1936                 */
#define PE_D_SAO_BRAZ              106249 /* Sao Braz                         */
#define PE_D_SELVAGEM_GRANDE_1938  106250 /* Selvagem Grande 1938             */
#define PE_D_TRISTAN_1968          106251 /* Tristan Astro 1968               */
#define PE_D_SAMOA_1962            106252 /* American Samoa 1962              */
#define PE_D_CAMP_AREA             106253 /* Camp Area Astro                  */
#define PE_D_DECEPTION_ISLAND      106254 /* Deception Island                 */
#define PE_D_GUNUNG_SEGARA         106255 /* Gunung Segara                    */
#define PE_D_S42_HUNGARY           106257 /* S-42 Hungary                     */
#define PE_D_ALASKAN_ISLANDS       106260 /* Alaskan Islands                  */
#define PE_D_HONG_KONG_1980        106261 /* Hong Kong 1980                   */
#define PE_D_LISBOA_BESSEL         106262 /* Datum Lisboa Bessel              */
#define PE_D_LISBOA_HAYFORD        106263 /* Datum Lisboa Hayford             */
#define PE_D_RGF_1993              106264 /* Reseau Geodesique Francais 1993  */
#define PE_D_NZGD_2000             106265  /* New Zealand Geodetic Datum 2000 */

/*----------------------------------------------------------------------------*/
/*                       P R I M E   M E R I D I A N S                        */
/*----------------------------------------------------------------------------*/
#define PE_PM_GREENWICH  8901 /*   0~00~00"     E                             */
#define PE_PM_ATHENS     8912 /*  23~42'58".815 E                             */
#define PE_PM_BERN       8907 /*   7~26'22".5   E                             */
#define PE_PM_BOGOTA     8904 /*  74~04'51".3   W                             */
#define PE_PM_BRUSSELS   8910 /*   4~22'04".71  E                             */
#define PE_PM_FERRO      8909 /*  17~40'00"     W                             */
#define PE_PM_JAKARTA    8908 /* 106~48'27".79  E                             */
#define PE_PM_LISBON     8902 /*   9~07'54".862 W                             */
#define PE_PM_MADRID     8905 /*   3~41'16".58  W                             */
#define PE_PM_OSLO       8913 /*  10~43'22".5   E                             */
#define PE_PM_PARIS      8903 /*   2~20'14".025 E                             */
#define PE_PM_ROME       8906 /*  12~27'08".4   E                             */
#define PE_PM_STOCKHOLM  8911 /*  18~03'29".8   E                             */

/*----------------------------------------------------------------------------*/
/*         G E O G R A P H I C   C O O R D I N A T E   S Y S T E M S          */
/*                        (S P H E R O I D   O N L Y)                         */
/*----------------------------------------------------------------------------*/
#define PE_GCS_AIRY_1830           4001 /* Airy 1830                          */
#define PE_GCS_AIRY_MOD            4002 /* Airy modified                      */
#define PE_GCS_ATS_1977            4122 /* Average Terrestrial System 1977    */
#define PE_GCS_AUSTRALIAN          4003 /* Australian National                */
#define PE_GCS_BESSEL_1841         4004 /* Bessel 1841                        */
#define PE_GCS_BESSEL_MOD          4005 /* Bessel modified                    */
#define PE_GCS_BESSEL_NAMIBIA      4006 /* Bessel Namibia                     */
#define PE_GCS_CLARKE_1858         4007 /* Clarke 1858                        */
#define PE_GCS_CLARKE_1866         4008 /* Clarke 1866                        */
#define PE_GCS_CLARKE_1866_MICH    4009 /* Clarke 1866 Michigan               */
#define PE_GCS_CLARKE_1880         4034 /* Clarke 1880                        */
#define PE_GCS_CLARKE_1880_ARC     4013 /* Clarke 1880 (Arc)                  */
#define PE_GCS_CLARKE_1880_BENOIT  4010 /* Clarke 1880 (Benoit)               */
#define PE_GCS_CLARKE_1880_IGN     4011 /* Clarke 1880 (IGN)                  */
#define PE_GCS_CLARKE_1880_RGS     4012 /* Clarke 1880 (RGS)                  */
#define PE_GCS_CLARKE_1880_SGA     4014 /* Clarke 1880 (SGA)                  */
#define PE_GCS_EVEREST_1830        4042 /* Everest 1830   (was 4015)          */
#define PE_GCS_EVEREST_DEF_1962    4044 /* Everest (definition 1962)          */
#define PE_GCS_EVEREST_DEF_1967    4016 /* Everest (definition 1967)          */
#define PE_GCS_EVEREST_DEF_1975    4045 /* Everest (definition 1975)(was 4017)*/
#define PE_GCS_EVEREST_MOD         4018 /* Everest modified                   */
#define PE_GCS_GEM_10C             4031 /* GEM gravity potential model        */
#define PE_GCS_GRS_1967            4036 /* GRS 1967                           */
#define PE_GCS_GRS_1980            4019 /* GRS 1980                           */
#define PE_GCS_HELMERT_1906        4020 /* Helmert 1906                       */
#define PE_GCS_INDONESIAN          4021 /* Indonesian National                */
#define PE_GCS_INTERNATIONAL_1924  4022 /* International 1927                 */
#define PE_GCS_INTERNATIONAL_1967  4023 /* International 1967                 */
#define PE_GCS_KRASOVSKY_1940      4024 /* Krasovsky 1940                     */
#define PE_GCS_NWL_9D              4025 /* Transit precise ephemeris          */
#define PE_GCS_OSU_86F             4032 /* OSU 1986 geoidal model             */
#define PE_GCS_OSU_91A             4033 /* OSU 1991 geoidal model             */
#define PE_GCS_PLESSIS_1817        4027 /* Plessis 1817                       */
#define PE_GCS_SPHERE              4035 /* Authalic sphere                    */
#define PE_GCS_STRUVE_1860         4028 /* Struve 1860                        */
#define PE_GCS_WAR_OFFICE          4029 /* War Office                         */
#define PE_GCS_WGS_1966            (4001+33000) /* WGS 1966                   */
#define PE_GCS_FISCHER_1960        (4002+33000) /* Fischer 1960               */
#define PE_GCS_FISCHER_1968        (4003+33000) /* Fischer 1968               */
#define PE_GCS_FISCHER_MOD         (4004+33000) /* Fischer modified           */
#define PE_GCS_HOUGH_1960          (4005+33000) /* Hough 1960                 */
#define PE_GCS_EVEREST_MOD_1969    (4006+33000) /* Everest modified 1969      */
#define PE_GCS_WALBECK             (4007+33000) /* Walbeck                    */
#define PE_GCS_SPHERE_AI           (4008+33000) /* Authalic sphere (ARC/INFO) */
#define PE_GCS_ASSUMED_GEOGRAPHIC_1 104000  /* NAD27 for shapefiles w/o a PRJ */

/*----------------------------------------------------------------------------*/
/*         G E O G R A P H I C   C O O R D I N A T E   S Y S T E M S          */
/*----------------------------------------------------------------------------*/
#define PE_GCS_ADINDAN             4201 /* Adindan                            */
#define PE_GCS_AFGOOYE             4205 /* Afgooye                            */
#define PE_GCS_AGADEZ              4206 /* Agadez                             */
#define PE_GCS_AGD_1966            4202 /* Australian Geodetic Datum 1966     */
#define PE_GCS_AGD_1984            4203 /* Australian Geodetic Datum 1984     */
#define PE_GCS_AIN_EL_ABD_1970     4204 /* Ain el Abd 1970                    */
#define PE_GCS_AMERSFOORT          4289 /* Amersfoort                         */
#define PE_GCS_ARATU               4208 /* Aratu                              */
#define PE_GCS_ARC_1950            4209 /* Arc 1950                           */
#define PE_GCS_ARC_1960            4210 /* Arc 1960                           */
#define PE_GCS_ATF_PARIS           4901 /* ATF (Paris)                        */
#define PE_GCS_BARBADOS_1938       4212 /* Barbados 1938                      */
#define PE_GCS_BATAVIA             4211 /* Batavia                            */
#define PE_GCS_BATAVIA_JAKARTA     4813 /* Batavia (Jakarta)                  */
#define PE_GCS_BEDUARAM            4213 /* Beduaram                           */
#define PE_GCS_BEIJING_1954        4214 /* Beijing 1954                       */
#define PE_GCS_BELGE_1950          4215 /* Reseau National Belge 1950         */
#define PE_GCS_BELGE_1950_BRUSSELS 4809 /* Belge 1950 (Brussels)              */
#define PE_GCS_BELGE_1972          4313 /* Reseau National Belge 1972         */
#define PE_GCS_BERMUDA_1957        4216 /* Bermuda 1957                       */
#define PE_GCS_BERN_1898           4217 /* Bern 1898                          */
#define PE_GCS_BERN_1898_BERN      4801 /* Bern 1898 (Bern)                   */
#define PE_GCS_BERN_1938           4306 /* Bern 1938                          */
#define PE_GCS_BOGOTA              4218 /* Bogota                             */
#define PE_GCS_BOGOTA_BOGOTA       4802 /* Bogota (Bogota)                    */
#define PE_GCS_BUKIT_RIMPAH        4219 /* Bukit Rimpah                       */
#define PE_GCS_CAMACUPA            4220 /* Camacupa                           */
#define PE_GCS_CAMPO_INCHAUSPE     4221 /* Campo Inchauspe                    */
#define PE_GCS_CAPE                4222 /* Cape                               */
#define PE_GCS_CARTHAGE            4223 /* Carthage                           */
#define PE_GCS_CARTHAGE_DEGREE     (4223+33000) /* Carthage (degrees)         */
#define PE_GCS_CHUA                4224 /* Chua                               */
#define PE_GCS_CONAKRY_1905        4315 /* Conakry 1905                       */
#define PE_GCS_CORREGO_ALEGRE      4225 /* Corrego Alegre                     */
#define PE_GCS_COTE_D_IVOIRE       4226 /* Cote d'Ivoire                      */
#define PE_GCS_DATUM_73            4274 /* Datum 73                           */
#define PE_GCS_DEALUL_PISCULUI_1933  4316 /* Dealul Piscului 1933 (Romania)   */
#define PE_GCS_DEALUL_PISCULUI_1970  4317 /* Dealul Piscului 1970 (Romania)   */
#define PE_GCS_DEIR_EZ_ZOR         4227 /* Deir ez Zor                        */
#define PE_GCS_DHDN                4314 /* Deutsche Hauptdreiecksnetz         */
#define PE_GCS_DOUALA              4228 /* Douala                             */
#define PE_GCS_ED_1950             4230 /* European Datum 1950                */
#define PE_GCS_ED_1987             4231 /* European Datum 1987                */
#define PE_GCS_EGYPT_1907          4229 /* Egypt 1907                         */
#define PE_GCS_ETRF_1989           4258 /* European Terrestrial Ref.Frame 1989*/
#define PE_GCS_FAHUD               4232 /* Fahud                              */
#define PE_GCS_GANDAJIKA_1970      4233 /* Gandajika 1970                     */
#define PE_GCS_GAROUA              4234 /* Garoua                             */
#define PE_GCS_GDA_1994            4283 /* Geocentric Datum of Australia 1994 */
#define PE_GCS_GGRS_1987           4121 /* Greek Geodetic Ref. System 1987    */
#define PE_GCS_GREEK               4120 /* Greek                              */
#define PE_GCS_GREEK_ATHENS        4815 /* Greek (Athens)                     */
#define PE_GCS_GUYANE_FRANCAISE    4235 /* Guyane Francaise                   */
#define PE_GCS_HERAT_NORTH         4255 /* Herat North                        */
#define PE_GCS_HITO_XVIII_1963     4254 /* Hito XVIII 1963                    */
#define PE_GCS_HU_TZU_SHAN         4236 /* Hu Tzu Shan                        */
#define PE_GCS_HUNGARIAN_1972      4237 /* Hungarian Datum 1972               */
#define PE_GCS_INDIAN_1954         4239 /* Indian 1954                        */
#define PE_GCS_INDIAN_1975         4240 /* Indian 1975                        */
#define PE_GCS_INDONESIAN_1974     4238 /* Indonesian Datum 1974              */
#define PE_GCS_JAMAICA_1875        4241 /* Jamaica 1875                       */
#define PE_GCS_JAMAICA_1969        4242 /* Jamaica 1969                       */
#define PE_GCS_KALIANPUR_1880      4243 /* Kalianpur 1880                     */
#define PE_GCS_KALIANPUR_1937      4144 /* Kalianpur 1937                     */
#define PE_GCS_KALIANPUR_1962      4145 /* Kalianpur 1962                     */
#define PE_GCS_KALIANPUR_1975      4146 /* Kalianpur 1975                     */
#define PE_GCS_KANDAWALA           4244 /* Kandawala                          */
#define PE_GCS_KERTAU              4245 /* Kertau                             */
#define PE_GCS_KKJ                 4123 /* Kartastokoordinaattijarjestelma    */
#define PE_GCS_KOC                 4246 /* Kuwait Oil Company                 */
#define PE_GCS_KUDAMS              4319 /* Kuwait Utility                     */
#define PE_GCS_LA_CANOA            4247 /* La Canoa                           */
#define PE_GCS_LAKE                4249 /* Lake                               */
#define PE_GCS_LEIGON              4250 /* Leigon                             */
#define PE_GCS_LIBERIA_1964        4251 /* Liberia 1964                       */
#define PE_GCS_LISBON              4207 /* Lisbon                             */
#define PE_GCS_LISBON_LISBON       4803 /* Lisbon (Lisbon)                    */
#define PE_GCS_LOMA_QUINTANA       4288 /* Loma Quintana                      */
#define PE_GCS_LOME                4252 /* Lome                               */
#define PE_GCS_LUZON_1911          4253 /* Luzon 1911                         */
#define PE_GCS_MAHE_1971           4256 /* Mahe 1971                          */
#define PE_GCS_MAKASSAR            4257 /* Makassar                           */
#define PE_GCS_MAKASSAR_JAKARTA    4804 /* Makassar (Jakarta)                 */
#define PE_GCS_MALONGO_1987        4259 /* Malongo 1987                       */
#define PE_GCS_MANOCA              4260 /* Manoca                             */
#define PE_GCS_MASSAWA             4262 /* Massawa                            */
#define PE_GCS_MERCHICH            4261 /* Merchich                           */
#define PE_GCS_MERCHICH_DEGREE   104261 /* Merchich (degrees)                 */
#define PE_GCS_MGI                 4312 /* Militar-Geographische Institut     */
#define PE_GCS_MGI_FERRO           4805 /* MGI (Ferro)                        */
#define PE_GCS_MHAST               4264 /* Mhast                              */
#define PE_GCS_MINNA               4263 /* Minna                              */
#define PE_GCS_MONTE_MARIO         4265 /* Monte Mario                        */
#define PE_GCS_MONTE_MARIO_ROME    4806 /* Monte Mario (Rome)                 */
#define PE_GCS_MPORALOKO           4266 /* M'poraloko                         */
#define PE_GCS_NAD_MICH            4268 /* NAD Michigan                       */
#define PE_GCS_NAD_1927            4267 /* North American Datum 1927          */
#define PE_GCS_NAD_1983            4269 /* North American Datum 1983          */
#define PE_GCS_NAD_1983_HARN       4152 /* North American Datum 1983 (HARN) (was 104269)*/
#define PE_GCS_NAHRWAN_1967        4270 /* Nahrwan 1967                       */
#define PE_GCS_NAPARIMA_1972       4271 /* Naparima 1972                      */
#define PE_GCS_NDG_PARIS           4902 /* Nord de Guerre (Paris)             */
#define PE_GCS_NGN                 4318 /* National Geodetic Network (Kuwait) */
#define PE_GCS_NGO_1948            4273 /* NGO 1948                           */
#define PE_GCS_NORD_SAHARA_1959    4307 /* Nord Sahara 1959                   */
#define PE_GCS_NSWC_9Z_2           4276 /* NSWC 9Z-2                          */
#define PE_GCS_NTF                 4275 /* Nouvelle Triangulation Francaise   */
#define PE_GCS_NTF_PARIS           4807 /* NTF (Paris)                        */
#define PE_GCS_NZGD_1949           4272 /* New Zealand Geodetic Datum 1949    */
#define PE_GCS_OS_SN_1980          4279 /* OS (SN) 1980                       */
#define PE_GCS_OSGB_1936           4277 /* OSGB 1936                          */
#define PE_GCS_OSGB_1970_SN        4278 /* OSGB 1970 (SN)                     */
#define PE_GCS_PADANG_1884         4280 /* Padang 1884                        */
#define PE_GCS_PADANG_1884_JAKARTA 4808 /* Padang 1884 (Jakarta)              */
#define PE_GCS_PALESTINE_1923      4281 /* Palestine 1923                     */
#define PE_GCS_POINTE_NOIRE        4282 /* Pointe Noire                       */
#define PE_GCS_PSAD_1956           4248 /* Provisional South Amer. Datum 1956 */
#define PE_GCS_PULKOVO_1942        4284 /* Pulkovo 1942                       */
#define PE_GCS_PULKOVO_1995        4200 /* Pulkovo 1995                       */
#define PE_GCS_QATAR               4285 /* Qatar                              */
#define PE_GCS_QATAR_1948          4286 /* Qatar 1948                         */
#define PE_GCS_QORNOQ              4287 /* Qornoq                             */
#define PE_GCS_RT38                4308 /* RT38                               */
#define PE_GCS_RT38_STOCKHOLM      4814 /* RT38 (Stockholm)                   */
#define PE_GCS_SAD_1969            4291 /* South American Datum 1969          */
#define PE_GCS_SAPPER_HILL_1943    4292 /* Sapper Hill 1943                   */
#define PE_GCS_SCHWARZECK          4293 /* Schwarzeck                         */
#define PE_GCS_SEGORA              4294 /* Segora                             */
#define PE_GCS_SERINDUNG           4295 /* Serindung                          */
#define PE_GCS_SUDAN               4296 /* Sudan                              */
#define PE_GCS_TANANARIVE_1925     4297 /* Tananarive 1925                    */
#define PE_GCS_TANANARIVE_1925_PARIS 4810 /* Tananarive 1925 (Paris)          */
#define PE_GCS_TIMBALAI_1948       4298 /* Timbalai 1948                      */
#define PE_GCS_TM65                4299 /* TM65                               */
#define PE_GCS_TM75                4300 /* TM75                               */
#define PE_GCS_TOKYO               4301 /* Tokyo                              */
#define PE_GCS_TRINIDAD_1903       4302 /* Trinidad 1903                      */
#define PE_GCS_TRUCIAL_COAST_1948  4303 /* Trucial Coast 1948                 */
#define PE_GCS_VOIROL_1875         4304 /* Voirol 1875                        */
#define PE_GCS_VOIROL_1875_DEGREE 104304 /* Voirol 1875 (degrees)             */
#define PE_GCS_VOIROL_1875_PARIS   4811 /* Voirol 1875 (Paris)                */
#define PE_GCS_VOIROL_UNIFIE_1960  4305 /* Voirol Unifie 1960                 */
#define PE_GCS_VOIROL_UNIFIE_1960_DEGREE 104305 /*Voirol Unifie 1960 (degrees)*/
#define PE_GCS_VOIROL_UNIFIE_1960_PARIS 4812 /* Voirol Unifie 1960 (Paris)    */
#define PE_GCS_WGS_1972            4322 /* WGS 1972                           */
#define PE_GCS_WGS_1972_BE         4324 /* WGS 1972 Transit Broadcast Ephemer.*/
#define PE_GCS_WGS_1984            4326 /* WGS 1984                           */
#define PE_GCS_YACARE              4309 /* Yacare                             */
#define PE_GCS_YOFF                4310 /* Yoff                               */
#define PE_GCS_ZANDERIJ            4311 /* Zanderij                           */

#define PE_GCS_CARTHAGE_PARIS      4816 /* Carthage (Paris) - superseded by   */
                                        /*             Carthage (Greenwich)   */
#define PE_GCS_FD_1958             4132 /* Final Datum 1958                   */
#define PE_GCS_LKS_1994            4126 /* LKS 1994                           */
#define PE_GCS_MADRID_1870_MADRID  4903 /* Madrid 1870 - Madrid Prime M       */
#define PE_GCS_MADZANSUA           4128 /* Madzansua - superseded by Tete     */
#define PE_GCS_MOZNET              4130 /* Moznet                             */
#define PE_GCS_OBSERVATARIO        4129 /* Observatario - superseded by Tete  */
#define PE_GCS_RT90                4124 /* RT 1990                            */
#define PE_GCS_SAMBOJA             4125 /* Samboja                            */
#define PE_GCS_TETE                4127 /* Tete                               */

#define PE_GCS_ESTONIA_1992        4133 /* Estonia 1992                       */
#define PE_GCS_PDO_1993            4134 /* PDO Survey Datum 1993              */
#define PE_GCS_ANGUILLA_1957       4600 /* Anguilla 1957                      */
#define PE_GCS_ANTIGUA_1943        4601 /* Antigua Astro 1943                 */
#define PE_GCS_DOMINICA_1945       4602 /* Dominica 1945                      */
#define PE_GCS_GRENADA_1953        4603 /* Grenada 1953                       */
#define PE_GCS_ST_KITTS_1955       4605 /* St. Kitts 1955                     */
#define PE_GCS_ST_LUCIA_1955       4606 /* St. Lucia 1955                     */
#define PE_GCS_ST_VINCENT_1945     4607 /* St. Vincent 1945                   */
#define PE_GCS_NAD_1927_DEF_1976   4608 /* NAD 1927 (1976)                    */
#define PE_GCS_NAD_1927_CGQ77      4609 /* NAD_1927 CGQ77                     */

#define PE_GCS_ST_GEORGE_ISLAND    4138 /* Alaska - St. George Island         */
#define PE_GCS_ST_LAWRENCE_ISLAND  4136 /* Alaska - St. Lawrence Island       */
#define PE_GCS_ST_PAUL_ISLAND      4137 /* Alaska - St. Paul Island           */

#define PE_GCS_NAD_1983_CSRS98     4140 /* NAD 1983(Canadian Spatial Ref System)*/
#define PE_GCS_ISRAEL              4141 /* Israel                             */
#define PE_GCS_LOCODJO_1965        4142 /* Locodjo 1965                       */
#define PE_GCS_ABIDJAN_1987        4143 /* Abidjan 1987                       */
#define PE_GCS_HANOI_1972          4147 /* Hanoi 1972                         */
#define PE_GCS_HARTEBEESTHOEK94    4148 /* Hartebeesthoek 1994                */
#define PE_GCS_CH1903              4149 /* CH 1903                            */
#define PE_GCS_CH1903_PLUS         4150 /* CH 1903+                           */
#define PE_GCS_CHTRF_1995          4151 /* Swiss Terrestrial Ref Frame 1995   */
#define PE_GCS_RASSADIRAN          4153 /* Rassadiran                         */
#define PE_GCS_ED_1950_ED77        4154 /* ED 1950 (ED77)                     */
#define PE_GCS_NGO_1948_OSLO       4817 /* NGO 1948 (Oslo)                    */

#define PE_GCS_INDIAN_1960         4131 /* Indian 1960                        */
#define PE_GCS_OLD_HAWAIIAN        4135 /* Old Hawaiian                       */
#define PE_GCS_PUERTO_RICO         4139 /* Puerto Rico                        */
#define PE_GCS_DABOLA              4155 /* Dabola                             */
#define PE_GCS_S_JTSK              4156 /* S-JTSK                             */
#define PE_GCS_S_JTSK_FERRO        4818 /* S-JTSK (Ferro)                     */
#define PE_GCS_BISSAU              4165 /* Bissau                             */
#define PE_GCS_MONTSERRAT_1958     4404 /* Montserrat Astro 1958              */

#define PE_GCS_EUROPEAN_1979        (4201+33000) /* European 1979             */
#define PE_GCS_EVEREST_BANGLADESH   (4202+33000) /* Everest - Bangladesh      */
#define PE_GCS_EVEREST_INDIA_NEPAL  (4203+33000) /* Everest - India and Nepal */
#define PE_GCS_HJORSEY_1955         (4204+33000) /* Hjorsey 1955              */
#define PE_GCS_HONG_KONG_1963       (4205+33000) /* Hong Kong 1963            */
#define PE_GCS_OMAN                 (4206+33000) /* Oman                      */
#define PE_GCS_S_ASIA_SINGAPORE     (4207+33000) /* South Asia Singapore      */
#define PE_GCS_AYABELLE             (4208+33000) /* Ayabelle Lighthouse       */
#define PE_GCS_POINT58              (4211+33000) /* Point 58                  */
#define PE_GCS_BEACON_E_1945        (4212+33000) /* Astro Beacon E 1945       */
#define PE_GCS_TERN_ISLAND_1961     (4213+33000) /* Tern Island Astro 1961    */
#define PE_GCS_ASTRO_1952           (4214+33000) /* Astronomical Station 1952 */
#define PE_GCS_BELLEVUE             (4215+33000) /* Bellevue IGN              */
#define PE_GCS_CANTON_1966          (4216+33000) /* Canton Astro 1966         */
#define PE_GCS_CHATHAM_ISLAND_1971  (4217+33000) /* Chatham Island Astro 1971 */
#define PE_GCS_DOS_1968             (4218+33000) /* DOS 1968                  */
#define PE_GCS_EASTER_ISLAND_1967   (4219+33000) /* Easter Island 1967        */
#define PE_GCS_GUAM_1963            (4220+33000) /* Guam 1963                 */
#define PE_GCS_GUX_1                (4221+33000) /* GUX 1 Astro               */
#define PE_GCS_JOHNSTON_ISLAND_1961 (4222+33000) /* Johnston Island 1961      */
#define PE_GCS_KUSAIE_1951          (4259+33000) /* Kusaie Astro 1951         */
#define PE_GCS_MIDWAY_1961          (4224+33000) /* Midway Astro 1961         */
#define PE_GCS_PITCAIRN_1967        (4226+33000) /* Pitcairn Astro 1967       */
#define PE_GCS_SANTO_DOS_1965       (4227+33000) /* Santo DOS 1965            */
#define PE_GCS_VITI_LEVU_1916       (4228+33000) /* Viti Levu 1916            */
#define PE_GCS_WAKE_ENIWETOK_1960   (4229+33000) /* Wake-Eniwetok 1960        */
#define PE_GCS_WAKE_ISLAND_1952     (4230+33000) /* Wake Island Astro 1952    */
#define PE_GCS_ANNA_1_1965          (4231+33000) /* Anna 1 Astro 1965         */
#define PE_GCS_GAN_1970             (4232+33000) /* Gan 1970                  */
#define PE_GCS_ISTS_073_1969        (4233+33000) /* ISTS 073 Astro 1969       */
#define PE_GCS_KERGUELEN_ISLAND_1949 (4234+33000) /* Kerguelen Island 1949    */
#define PE_GCS_REUNION               (4235+33000) /* Reunion                  */
#define PE_GCS_ASCENSION_ISLAND_1958 (4237+33000) /* Ascension Island 1958    */
#define PE_GCS_DOS_71_4             (4238+33000) /* Astro DOS 71/4            */
#define PE_GCS_CAPE_CANAVERAL       (4239+33000) /* Cape Canaveral            */
#define PE_GCS_FORT_THOMAS_1955     (4240+33000) /* Fort Thomas 1955          */
#define PE_GCS_GRACIOSA_1948        (4241+33000) /* Graciosa Base SW 1948     */
#define PE_GCS_ISTS_061_1968        (4242+33000) /* ISTS 061 Astro 1968       */
#define PE_GCS_LC5_1961             (4243+33000) /* L.C. 5 Astro 1961         */
#define PE_GCS_OBSERV_METEOR_1939   (4245+33000) /* Observ. Meteorologico 1939*/
#define PE_GCS_PICO_DE_LAS_NIEVES   (4246+33000) /* Pico de Las Nieves        */
#define PE_GCS_PORTO_SANTO_1936     (4247+33000) /* Porto Santo 1936          */
#define PE_GCS_SAO_BRAZ             (4249+33000) /* Sao Braz                  */
#define PE_GCS_SELVAGEM_GRANDE_1938 (4250+33000) /* Selvagem Grande 1938      */
#define PE_GCS_TRISTAN_1968         (4251+33000) /* Tristan Astro 1968        */
#define PE_GCS_SAMOA_1962           (4252+33000) /* American Samoa 1962       */
#define PE_GCS_CAMP_AREA            (4253+33000) /* Camp Area Astro           */
#define PE_GCS_DECEPTION_ISLAND     (4254+33000) /* Deception Island          */
#define PE_GCS_GUNUNG_SEGARA        (4255+33000) /* Gunung Segara             */
#define PE_GCS_S42_HUNGARY          (4257+33000) /* S-42 Hungary              */
#define PE_GCS_ALASKAN_ISLANDS      (4260+33000) /* Alaskan Islands           */
#define PE_GCS_ESTONIA_1937        104101        /* Estonia 1937              */
#define PE_GCS_HERMANNSKOGEL       104102        /* Hermannskogel             */
#define PE_GCS_SIERRA_LEONE_1960   104103        /* Sierra Leone 1960         */
#define PE_GCS_HONG_KONG_1980      104104        /* Hong Kong 1980            */
#define PE_GCS_LISBOA_BESSEL       104105        /* Datum Lisboa Bessel       */
#define PE_GCS_LISBOA_HAYFORD      104106        /* Datum Lisboa Hayford      */
#define PE_GCS_RGF_1993            104107  /* Reseau Geodesique Francais 1993 */
#define PE_GCS_NZGD_2000           104108  /* New Zealand Geodetic Datum 2000 */

/*----------------------------------------------------------------------------*/
/*                            P A R A M E T E R S                             */
/*----------------------------------------------------------------------------*/
#define PE_PAR_FALSE_EASTING       100001 /* X0                               */
#define PE_PAR_FALSE_NORTHING      100002 /* Y0                               */
#define PE_PAR_SCALE_FACTOR        100003 /* K0                               */
#define PE_PAR_AZIMUTH             100004 /* ALPHA                            */

#define PE_PAR_CENTRAL_MERIDIAN    100010 /* LAM0                             */
#define PE_PAR_LONGITUDE_OF_ORIGIN 100011 /* LAM0                             */
#define PE_PAR_LONGITUDE_OF_CENTER 100012 /* LAMC                             */
#define PE_PAR_LONGITUDE_OF_1ST    100013 /* LAM1                             */
#define PE_PAR_LONGITUDE_OF_2ND    100014 /* LAM2                             */

#define PE_PAR_CENTRAL_PARALLEL    100020 /* PHI0                             */
#define PE_PAR_LATITUDE_OF_ORIGIN  100021 /* PHI0                             */
#define PE_PAR_LATITUDE_OF_CENTER  100022 /* PHIC                             */
#define PE_PAR_LATITUDE_OF_1ST     100023 /* PHI1                             */
#define PE_PAR_LATITUDE_OF_2ND     100024 /* PHI2                             */
#define PE_PAR_STANDARD_PARALLEL_1 100025 /* PHI1                             */
#define PE_PAR_STANDARD_PARALLEL_2 100026 /* PHI2                             */
#define PE_PAR_PSEUDO_STANDARD_PARALLEL_1 100027 /* PHI1                      */

#define PE_PAR_X_SCALE             100037 /* XS                               */
#define PE_PAR_Y_SCALE             100038 /* YS                               */
#define PE_PAR_XY_PLANE_ROTATION   100039 /* XYR                              */

#define PE_PAR_X_AXIS_TRANSLATION  100040 /* DX                               */
#define PE_PAR_Y_AXIS_TRANSLATION  100041 /* DY                               */
#define PE_PAR_Z_AXIS_TRANSLATION  100042 /* DZ                               */
#define PE_PAR_X_AXIS_ROTATION     100043 /* RX                               */
#define PE_PAR_Y_AXIS_ROTATION     100044 /* RY                               */
#define PE_PAR_Z_AXIS_ROTATION     100045 /* RZ                               */
#define PE_PAR_SCALE_DIFFERENCE    100046 /* DS                               */
#define PE_PAR_NAME_DATASET        100047 /* ND                               */

/*----------------------------------------------------------------------------*/
/*                       M A P   P R O J E C T I O N S                        */
/*----------------------------------------------------------------------------*/
#define PE_PRJ_PLATE_CARREE             43001 /* Plate Carree                 */
#define PE_PRJ_EQUIDISTANT_CYLINDRICAL  43002 /* Equidistant Cylindrical      */
#define PE_PRJ_MILLER_CYLINDRICAL       43003 /* Miller Cylindrical           */
#define PE_PRJ_MERCATOR                 43004 /* Mercator                     */
#define PE_PRJ_GAUSS_KRUGER             43005 /* Gauss-Kruger                 */
#define PE_PRJ_TRANSVERSE_MERCATOR      43006 /* Transverse Mercator = 43005  */
#define PE_PRJ_ALBERS                   43007 /* Albers                       */
#define PE_PRJ_SINUSOIDAL               43008 /* Sinusoidal                   */
#define PE_PRJ_MOLLWEIDE                43009 /* Mollweide                    */
#define PE_PRJ_ECKERT_VI                43010 /* Eckert VI                    */
#define PE_PRJ_ECKERT_V                 43011 /* Eckert V                     */
#define PE_PRJ_ECKERT_IV                43012 /* Eckert IV                    */
#define PE_PRJ_ECKERT_III               43013 /* Eckert III                   */
#define PE_PRJ_ECKERT_II                43014 /* Eckert II                    */
#define PE_PRJ_ECKERT_I                 43015 /* Eckert I                     */
#define PE_PRJ_GALL_STEREOGRAPHIC       43016 /* Gall Stereographic           */
#define PE_PRJ_BEHRMANN                 43017 /* Behrmann                     */
#define PE_PRJ_WINKEL_I                 43018 /* Winkel I                     */
#define PE_PRJ_WINKEL_II                43019 /* Winkel II                    */
#define PE_PRJ_LAMBERT_CONFORMAL_CONIC  43020 /* Lambert Conformal Conic      */
#define PE_PRJ_POLYCONIC                43021 /* Polyconic                    */
#define PE_PRJ_QUARTIC_AUTHALIC         43022 /* Quartic Authalic             */
#define PE_PRJ_LOXIMUTHAL               43023 /* Loximuthal                   */
#define PE_PRJ_BONNE                    43024 /* Bonne                        */
#define PE_PRJ_HOTINE_TWO_POINT_NATORIGIN 43025 /* Hotine 2 Pt Natural Origin */
#define PE_PRJ_STEREOGRAPHIC            43026 /* Stereographic                */
#define PE_PRJ_EQUIDISTANT_CONIC        43027 /* Equidistant Conic            */
#define PE_PRJ_CASSINI                  43028 /* Cassini                      */
#define PE_PRJ_VAN_DER_GRINTEN_I        43029 /* Van der Grinten I            */
#define PE_PRJ_ROBINSON                 43030 /* Robinson                     */
#define PE_PRJ_TWO_POINT_EQUIDISTANT    43031 /* Two-Point Equidistant        */
#define PE_PRJ_AZIMUTHAL_EQUIDISTANT    43032 /* Azimuthal Equidistant        */
#define PE_PRJ_LAMBERT_AZIMUTHAL_EQAREA 43033 /* Lambert Azimuthal Equal Area */
#define PE_PRJ_CYLINDRICAL_EQAREA       43034 /* Cylindrical Equal Area       */
#define PE_PRJ_HOTINE_TWO_POINT_CENTER  43035 /* Hotine 2 Point Center        */
#define PE_PRJ_HOTINE_AZIMUTH_NATORIGIN 43036 /* Hotine Azimuth Natural Origin*/
#define PE_PRJ_HOTINE_AZIMUTH_CENTER    43037 /* Hotine Azimuth Center        */
#define PE_PRJ_DOUBLE_STEREOGRAPHIC     43038 /* Double Stereographic         */
#define PE_PRJ_KROVAK                   43039 /* Krovak Oblique Lambert       */
                                              /*        Conformal Conic       */
#define PE_PRJ_NEW_ZEALAND_MAP_GRID     43040 /* New Zealand Map Grid         */

/*----------------------------------------------------------------------------*/
/*          P R O J E C T E D   C O O R D I N A T E   S Y S T E M S           */
/*                           (W O R L D   W I D E)                            */
/*----------------------------------------------------------------------------*/
#define PE_PCS_WORLD_PLATE_CARREE             54001 /* Plate Carree           */
#define PE_PCS_WORLD_EQUIDISTANT_CYLINDRICAL  54002 /* Equidistant Cyl.       */
#define PE_PCS_WORLD_MILLER_CYLINDRICAL       54003 /* Miller Cylindrical     */
#define PE_PCS_WORLD_MERCATOR                 54004 /* Mercator               */
#define PE_PCS_WORLD_SINUSOIDAL               54008 /* Sinusoidal             */
#define PE_PCS_WORLD_MOLLWEIDE                54009 /* Mollweide              */
#define PE_PCS_WORLD_ECKERT_VI                54010 /* Eckert VI              */
#define PE_PCS_WORLD_ECKERT_V                 54011 /* Eckert V               */
#define PE_PCS_WORLD_ECKERT_IV                54012 /* Eckert IV              */
#define PE_PCS_WORLD_ECKERT_III               54013 /* Eckert III             */
#define PE_PCS_WORLD_ECKERT_II                54014 /* Eckert II              */
#define PE_PCS_WORLD_ECKERT_I                 54015 /* Eckert I               */
#define PE_PCS_WORLD_GALL_STEREOGRAPHIC       54016 /* Gall Stereographic     */
#define PE_PCS_WORLD_BEHRMANN                 54017 /* Behrmann               */
#define PE_PCS_WORLD_WINKEL_I                 54018 /* Winkel I               */
#define PE_PCS_WORLD_WINKEL_II                54019 /* Winkel II              */
#define PE_PCS_WORLD_POLYCONIC                54021 /* Polyconic              */
#define PE_PCS_WORLD_QUARTIC_AUTHALIC         54022 /* Quartic Authalic       */
#define PE_PCS_WORLD_LOXIMUTHAL               54023 /* Loximuthal             */
#define PE_PCS_WORLD_BONNE                    54024 /* Bonne                  */
#define PE_PCS_WORLD_HOTINE                   54025 /* Hotine                 */
#define PE_PCS_WORLD_STEREOGRAPHIC            54026 /* Stereographic          */
#define PE_PCS_WORLD_EQUIDISTANT_CONIC        54027 /* Equidistant Conic      */
#define PE_PCS_WORLD_CASSINI                  54028 /* Cassini                */
#define PE_PCS_WORLD_VAN_DER_GRINTEN_I        54029 /* Van der Grinten I      */
#define PE_PCS_WORLD_ROBINSON                 54030 /* Robinson               */
#define PE_PCS_WORLD_TWO_POINT_EQUIDISTANT    54031 /* Two-Point Equidistant  */
#define PE_PCS_WORLD_AZIMUTHAL_EQUIDISTANT    54032 /* Azimuthal Equidistant  */

/*----------------------------------------------------------------------------*/
/*          P R O J E C T E D   C O O R D I N A T E   S Y S T E M S           */
/*                          (S P H E R E   O N L Y)                           */
/*----------------------------------------------------------------------------*/
#define PE_PCS_SPHERE_PLATE_CARREE             53001 /* Plate Carree          */
#define PE_PCS_SPHERE_EQUIDISTANT_CYLINDRICAL  53002 /* Equidistant Cyl.      */
#define PE_PCS_SPHERE_MILLER_CYLINDRICAL       53003 /* Miller Cylindrical    */
#define PE_PCS_SPHERE_MERCATOR                 53004 /* Mercator              */
#define PE_PCS_SPHERE_SINUSOIDAL               53008 /* Sinusoidal            */
#define PE_PCS_SPHERE_MOLLWEIDE                53009 /* Mollweide             */
#define PE_PCS_SPHERE_ECKERT_VI                53010 /* Eckert VI             */
#define PE_PCS_SPHERE_ECKERT_V                 53011 /* Eckert V              */
#define PE_PCS_SPHERE_ECKERT_IV                53012 /* Eckert IV             */
#define PE_PCS_SPHERE_ECKERT_III               53013 /* Eckert III            */
#define PE_PCS_SPHERE_ECKERT_II                53014 /* Eckert II             */
#define PE_PCS_SPHERE_ECKERT_I                 53015 /* Eckert I              */
#define PE_PCS_SPHERE_GALL_STEREOGRAPHIC       53016 /* Gall Stereographic    */
#define PE_PCS_SPHERE_BEHRMANN                 53017 /* Behrmann              */
#define PE_PCS_SPHERE_WINKEL_I                 53018 /* Winkel I              */
#define PE_PCS_SPHERE_WINKEL_II                53019 /* Winkel II             */
#define PE_PCS_SPHERE_POLYCONIC                53021 /* Polyconic             */
#define PE_PCS_SPHERE_QUARTIC_AUTHALIC         53022 /* Quartic Authalic      */
#define PE_PCS_SPHERE_LOXIMUTHAL               53023 /* Loximuthal            */
#define PE_PCS_SPHERE_BONNE                    53024 /* Bonne                 */
#define PE_PCS_SPHERE_HOTINE                   53025 /* Hotine                */
#define PE_PCS_SPHERE_STEREOGRAPHIC            53026 /* Stereographic         */
#define PE_PCS_SPHERE_EQUIDISTANT_CONIC        53027 /* Equidistant Conic     */
#define PE_PCS_SPHERE_CASSINI                  53028 /* Cassini               */
#define PE_PCS_SPHERE_VAN_DER_GRINTEN_I        53029 /* Van der Grinten I     */
#define PE_PCS_SPHERE_ROBINSON                 53030 /* Robinson              */
#define PE_PCS_SPHERE_TWO_POINT_EQUIDISTANT    53031 /* Two-Point Equidistant */
#define PE_PCS_SPHERE_AZIMUTHAL_EQUIDISTANT    53032 /* Azimuthal Equidistant */

/*----------------------------------------------------------------------------*/
/*          P R O J E C T E D   C O O R D I N A T E   S Y S T E M S           */
/*----------------------------------------------------------------------------*/
#define PE_PCS_WGS_1984_UTM_1N    32601 /* WGS 1984 UTM Zone 1N               */
#define PE_PCS_WGS_1984_UTM_2N    32602 /* WGS 1984 UTM Zone 2N               */
#define PE_PCS_WGS_1984_UTM_3N    32603 /* WGS 1984 UTM Zone 3N               */
#define PE_PCS_WGS_1984_UTM_4N    32604 /* WGS 1984 UTM Zone 4N               */
#define PE_PCS_WGS_1984_UTM_5N    32605 /* WGS 1984 UTM Zone 5N               */
#define PE_PCS_WGS_1984_UTM_6N    32606 /* WGS 1984 UTM Zone 6N               */
#define PE_PCS_WGS_1984_UTM_7N    32607 /* WGS 1984 UTM Zone 7N               */
#define PE_PCS_WGS_1984_UTM_8N    32608 /* WGS 1984 UTM Zone 8N               */
#define PE_PCS_WGS_1984_UTM_9N    32609 /* WGS 1984 UTM Zone 9N               */
#define PE_PCS_WGS_1984_UTM_10N   32610 /* WGS 1984 UTM Zone 10N              */
#define PE_PCS_WGS_1984_UTM_11N   32611 /* WGS 1984 UTM Zone 11N              */
#define PE_PCS_WGS_1984_UTM_12N   32612 /* WGS 1984 UTM Zone 12N              */
#define PE_PCS_WGS_1984_UTM_13N   32613 /* WGS 1984 UTM Zone 13N              */
#define PE_PCS_WGS_1984_UTM_14N   32614 /* WGS 1984 UTM Zone 14N              */
#define PE_PCS_WGS_1984_UTM_15N   32615 /* WGS 1984 UTM Zone 15N              */
#define PE_PCS_WGS_1984_UTM_16N   32616 /* WGS 1984 UTM Zone 16N              */
#define PE_PCS_WGS_1984_UTM_17N   32617 /* WGS 1984 UTM Zone 17N              */
#define PE_PCS_WGS_1984_UTM_18N   32618 /* WGS 1984 UTM Zone 18N              */
#define PE_PCS_WGS_1984_UTM_19N   32619 /* WGS 1984 UTM Zone 19N              */
#define PE_PCS_WGS_1984_UTM_20N   32620 /* WGS 1984 UTM Zone 20N              */
#define PE_PCS_WGS_1984_UTM_21N   32621 /* WGS 1984 UTM Zone 21N              */
#define PE_PCS_WGS_1984_UTM_22N   32622 /* WGS 1984 UTM Zone 22N              */
#define PE_PCS_WGS_1984_UTM_23N   32623 /* WGS 1984 UTM Zone 23N              */
#define PE_PCS_WGS_1984_UTM_24N   32624 /* WGS 1984 UTM Zone 24N              */
#define PE_PCS_WGS_1984_UTM_25N   32625 /* WGS 1984 UTM Zone 25N              */
#define PE_PCS_WGS_1984_UTM_26N   32626 /* WGS 1984 UTM Zone 26N              */
#define PE_PCS_WGS_1984_UTM_27N   32627 /* WGS 1984 UTM Zone 27N              */
#define PE_PCS_WGS_1984_UTM_28N   32628 /* WGS 1984 UTM Zone 28N              */
#define PE_PCS_WGS_1984_UTM_29N   32629 /* WGS 1984 UTM Zone 29N              */
#define PE_PCS_WGS_1984_UTM_30N   32630 /* WGS 1984 UTM Zone 30N              */
#define PE_PCS_WGS_1984_UTM_31N   32631 /* WGS 1984 UTM Zone 31N              */
#define PE_PCS_WGS_1984_UTM_32N   32632 /* WGS 1984 UTM Zone 32N              */
#define PE_PCS_WGS_1984_UTM_33N   32633 /* WGS 1984 UTM Zone 33N              */
#define PE_PCS_WGS_1984_UTM_34N   32634 /* WGS 1984 UTM Zone 34N              */
#define PE_PCS_WGS_1984_UTM_35N   32635 /* WGS 1984 UTM Zone 35N              */
#define PE_PCS_WGS_1984_UTM_36N   32636 /* WGS 1984 UTM Zone 36N              */
#define PE_PCS_WGS_1984_UTM_37N   32637 /* WGS 1984 UTM Zone 37N              */
#define PE_PCS_WGS_1984_UTM_38N   32638 /* WGS 1984 UTM Zone 38N              */
#define PE_PCS_WGS_1984_UTM_39N   32639 /* WGS 1984 UTM Zone 39N              */
#define PE_PCS_WGS_1984_UTM_40N   32640 /* WGS 1984 UTM Zone 40N              */
#define PE_PCS_WGS_1984_UTM_41N   32641 /* WGS 1984 UTM Zone 41N              */
#define PE_PCS_WGS_1984_UTM_42N   32642 /* WGS 1984 UTM Zone 42N              */
#define PE_PCS_WGS_1984_UTM_43N   32643 /* WGS 1984 UTM Zone 43N              */
#define PE_PCS_WGS_1984_UTM_44N   32644 /* WGS 1984 UTM Zone 44N              */
#define PE_PCS_WGS_1984_UTM_45N   32645 /* WGS 1984 UTM Zone 45N              */
#define PE_PCS_WGS_1984_UTM_46N   32646 /* WGS 1984 UTM Zone 46N              */
#define PE_PCS_WGS_1984_UTM_47N   32647 /* WGS 1984 UTM Zone 47N              */
#define PE_PCS_WGS_1984_UTM_48N   32648 /* WGS 1984 UTM Zone 48N              */
#define PE_PCS_WGS_1984_UTM_49N   32649 /* WGS 1984 UTM Zone 49N              */
#define PE_PCS_WGS_1984_UTM_50N   32650 /* WGS 1984 UTM Zone 50N              */
#define PE_PCS_WGS_1984_UTM_51N   32651 /* WGS 1984 UTM Zone 51N              */
#define PE_PCS_WGS_1984_UTM_52N   32652 /* WGS 1984 UTM Zone 52N              */
#define PE_PCS_WGS_1984_UTM_53N   32653 /* WGS 1984 UTM Zone 53N              */
#define PE_PCS_WGS_1984_UTM_54N   32654 /* WGS 1984 UTM Zone 54N              */
#define PE_PCS_WGS_1984_UTM_55N   32655 /* WGS 1984 UTM Zone 55N              */
#define PE_PCS_WGS_1984_UTM_56N   32656 /* WGS 1984 UTM Zone 56N              */
#define PE_PCS_WGS_1984_UTM_57N   32657 /* WGS 1984 UTM Zone 57N              */
#define PE_PCS_WGS_1984_UTM_58N   32658 /* WGS 1984 UTM Zone 58N              */
#define PE_PCS_WGS_1984_UTM_59N   32659 /* WGS 1984 UTM Zone 59N              */
#define PE_PCS_WGS_1984_UTM_60N   32660 /* WGS 1984 UTM Zone 60N              */
#define PE_PCS_WGS_1984_UTM_1S    32701 /* WGS 1984 UTM Zone 1S               */
#define PE_PCS_WGS_1984_UTM_2S    32702 /* WGS 1984 UTM Zone 2S               */
#define PE_PCS_WGS_1984_UTM_3S    32703 /* WGS 1984 UTM Zone 3S               */
#define PE_PCS_WGS_1984_UTM_4S    32704 /* WGS 1984 UTM Zone 4S               */
#define PE_PCS_WGS_1984_UTM_5S    32705 /* WGS 1984 UTM Zone 5S               */
#define PE_PCS_WGS_1984_UTM_6S    32706 /* WGS 1984 UTM Zone 6S               */
#define PE_PCS_WGS_1984_UTM_7S    32707 /* WGS 1984 UTM Zone 7S               */
#define PE_PCS_WGS_1984_UTM_8S    32708 /* WGS 1984 UTM Zone 8S               */
#define PE_PCS_WGS_1984_UTM_9S    32709 /* WGS 1984 UTM Zone 9S               */
#define PE_PCS_WGS_1984_UTM_10S   32710 /* WGS 1984 UTM Zone 10S              */
#define PE_PCS_WGS_1984_UTM_11S   32711 /* WGS 1984 UTM Zone 11S              */
#define PE_PCS_WGS_1984_UTM_12S   32712 /* WGS 1984 UTM Zone 12S              */
#define PE_PCS_WGS_1984_UTM_13S   32713 /* WGS 1984 UTM Zone 13S              */
#define PE_PCS_WGS_1984_UTM_14S   32714 /* WGS 1984 UTM Zone 14S              */
#define PE_PCS_WGS_1984_UTM_15S   32715 /* WGS 1984 UTM Zone 15S              */
#define PE_PCS_WGS_1984_UTM_16S   32716 /* WGS 1984 UTM Zone 16S              */
#define PE_PCS_WGS_1984_UTM_17S   32717 /* WGS 1984 UTM Zone 17S              */
#define PE_PCS_WGS_1984_UTM_18S   32718 /* WGS 1984 UTM Zone 18S              */
#define PE_PCS_WGS_1984_UTM_19S   32719 /* WGS 1984 UTM Zone 19S              */
#define PE_PCS_WGS_1984_UTM_20S   32720 /* WGS 1984 UTM Zone 20S              */
#define PE_PCS_WGS_1984_UTM_21S   32721 /* WGS 1984 UTM Zone 21S              */
#define PE_PCS_WGS_1984_UTM_22S   32722 /* WGS 1984 UTM Zone 22S              */
#define PE_PCS_WGS_1984_UTM_23S   32723 /* WGS 1984 UTM Zone 23S              */
#define PE_PCS_WGS_1984_UTM_24S   32724 /* WGS 1984 UTM Zone 24S              */
#define PE_PCS_WGS_1984_UTM_25S   32725 /* WGS 1984 UTM Zone 25S              */
#define PE_PCS_WGS_1984_UTM_26S   32726 /* WGS 1984 UTM Zone 26S              */
#define PE_PCS_WGS_1984_UTM_27S   32727 /* WGS 1984 UTM Zone 27S              */
#define PE_PCS_WGS_1984_UTM_28S   32728 /* WGS 1984 UTM Zone 28S              */
#define PE_PCS_WGS_1984_UTM_29S   32729 /* WGS 1984 UTM Zone 29S              */
#define PE_PCS_WGS_1984_UTM_30S   32730 /* WGS 1984 UTM Zone 30S              */
#define PE_PCS_WGS_1984_UTM_31S   32731 /* WGS 1984 UTM Zone 31S              */
#define PE_PCS_WGS_1984_UTM_32S   32732 /* WGS 1984 UTM Zone 32S              */
#define PE_PCS_WGS_1984_UTM_33S   32733 /* WGS 1984 UTM Zone 33S              */
#define PE_PCS_WGS_1984_UTM_34S   32734 /* WGS 1984 UTM Zone 34S              */
#define PE_PCS_WGS_1984_UTM_35S   32735 /* WGS 1984 UTM Zone 35S              */
#define PE_PCS_WGS_1984_UTM_36S   32736 /* WGS 1984 UTM Zone 36S              */
#define PE_PCS_WGS_1984_UTM_37S   32737 /* WGS 1984 UTM Zone 37S              */
#define PE_PCS_WGS_1984_UTM_38S   32738 /* WGS 1984 UTM Zone 38S              */
#define PE_PCS_WGS_1984_UTM_39S   32739 /* WGS 1984 UTM Zone 39S              */
#define PE_PCS_WGS_1984_UTM_40S   32740 /* WGS 1984 UTM Zone 40S              */
#define PE_PCS_WGS_1984_UTM_41S   32741 /* WGS 1984 UTM Zone 41S              */
#define PE_PCS_WGS_1984_UTM_42S   32742 /* WGS 1984 UTM Zone 42S              */
#define PE_PCS_WGS_1984_UTM_43S   32743 /* WGS 1984 UTM Zone 43S              */
#define PE_PCS_WGS_1984_UTM_44S   32744 /* WGS 1984 UTM Zone 44S              */
#define PE_PCS_WGS_1984_UTM_45S   32745 /* WGS 1984 UTM Zone 45S              */
#define PE_PCS_WGS_1984_UTM_46S   32746 /* WGS 1984 UTM Zone 46S              */
#define PE_PCS_WGS_1984_UTM_47S   32747 /* WGS 1984 UTM Zone 47S              */
#define PE_PCS_WGS_1984_UTM_48S   32748 /* WGS 1984 UTM Zone 48S              */
#define PE_PCS_WGS_1984_UTM_49S   32749 /* WGS 1984 UTM Zone 49S              */
#define PE_PCS_WGS_1984_UTM_50S   32750 /* WGS 1984 UTM Zone 50S              */
#define PE_PCS_WGS_1984_UTM_51S   32751 /* WGS 1984 UTM Zone 51S              */
#define PE_PCS_WGS_1984_UTM_52S   32752 /* WGS 1984 UTM Zone 52S              */
#define PE_PCS_WGS_1984_UTM_53S   32753 /* WGS 1984 UTM Zone 53S              */
#define PE_PCS_WGS_1984_UTM_54S   32754 /* WGS 1984 UTM Zone 54S              */
#define PE_PCS_WGS_1984_UTM_55S   32755 /* WGS 1984 UTM Zone 55S              */
#define PE_PCS_WGS_1984_UTM_56S   32756 /* WGS 1984 UTM Zone 56S              */
#define PE_PCS_WGS_1984_UTM_57S   32757 /* WGS 1984 UTM Zone 57S              */
#define PE_PCS_WGS_1984_UTM_58S   32758 /* WGS 1984 UTM Zone 58S              */
#define PE_PCS_WGS_1984_UTM_59S   32759 /* WGS 1984 UTM Zone 59S              */
#define PE_PCS_WGS_1984_UTM_60S   32760 /* WGS 1984 UTM Zone 60S              */

#define PE_PCS_WGS_1972_UTM_1N    32201 /* WGS 1972 UTM Zone 1N               */
#define PE_PCS_WGS_1972_UTM_2N    32202 /* WGS 1972 UTM Zone 2N               */
#define PE_PCS_WGS_1972_UTM_3N    32203 /* WGS 1972 UTM Zone 3N               */
#define PE_PCS_WGS_1972_UTM_4N    32204 /* WGS 1972 UTM Zone 4N               */
#define PE_PCS_WGS_1972_UTM_5N    32205 /* WGS 1972 UTM Zone 5N               */
#define PE_PCS_WGS_1972_UTM_6N    32206 /* WGS 1972 UTM Zone 6N               */
#define PE_PCS_WGS_1972_UTM_7N    32207 /* WGS 1972 UTM Zone 7N               */
#define PE_PCS_WGS_1972_UTM_8N    32208 /* WGS 1972 UTM Zone 8N               */
#define PE_PCS_WGS_1972_UTM_9N    32209 /* WGS 1972 UTM Zone 9N               */
#define PE_PCS_WGS_1972_UTM_10N   32210 /* WGS 1972 UTM Zone 10N              */
#define PE_PCS_WGS_1972_UTM_11N   32211 /* WGS 1972 UTM Zone 11N              */
#define PE_PCS_WGS_1972_UTM_12N   32212 /* WGS 1972 UTM Zone 12N              */
#define PE_PCS_WGS_1972_UTM_13N   32213 /* WGS 1972 UTM Zone 13N              */
#define PE_PCS_WGS_1972_UTM_14N   32214 /* WGS 1972 UTM Zone 14N              */
#define PE_PCS_WGS_1972_UTM_15N   32215 /* WGS 1972 UTM Zone 15N              */
#define PE_PCS_WGS_1972_UTM_16N   32216 /* WGS 1972 UTM Zone 16N              */
#define PE_PCS_WGS_1972_UTM_17N   32217 /* WGS 1972 UTM Zone 17N              */
#define PE_PCS_WGS_1972_UTM_18N   32218 /* WGS 1972 UTM Zone 18N              */
#define PE_PCS_WGS_1972_UTM_19N   32219 /* WGS 1972 UTM Zone 19N              */
#define PE_PCS_WGS_1972_UTM_20N   32220 /* WGS 1972 UTM Zone 20N              */
#define PE_PCS_WGS_1972_UTM_21N   32221 /* WGS 1972 UTM Zone 21N              */
#define PE_PCS_WGS_1972_UTM_22N   32222 /* WGS 1972 UTM Zone 22N              */
#define PE_PCS_WGS_1972_UTM_23N   32223 /* WGS 1972 UTM Zone 23N              */
#define PE_PCS_WGS_1972_UTM_24N   32224 /* WGS 1972 UTM Zone 24N              */
#define PE_PCS_WGS_1972_UTM_25N   32225 /* WGS 1972 UTM Zone 25N              */
#define PE_PCS_WGS_1972_UTM_26N   32226 /* WGS 1972 UTM Zone 26N              */
#define PE_PCS_WGS_1972_UTM_27N   32227 /* WGS 1972 UTM Zone 27N              */
#define PE_PCS_WGS_1972_UTM_28N   32228 /* WGS 1972 UTM Zone 28N              */
#define PE_PCS_WGS_1972_UTM_29N   32229 /* WGS 1972 UTM Zone 29N              */
#define PE_PCS_WGS_1972_UTM_30N   32230 /* WGS 1972 UTM Zone 30N              */
#define PE_PCS_WGS_1972_UTM_31N   32231 /* WGS 1972 UTM Zone 31N              */
#define PE_PCS_WGS_1972_UTM_32N   32232 /* WGS 1972 UTM Zone 32N              */
#define PE_PCS_WGS_1972_UTM_33N   32233 /* WGS 1972 UTM Zone 33N              */
#define PE_PCS_WGS_1972_UTM_34N   32234 /* WGS 1972 UTM Zone 34N              */
#define PE_PCS_WGS_1972_UTM_35N   32235 /* WGS 1972 UTM Zone 35N              */
#define PE_PCS_WGS_1972_UTM_36N   32236 /* WGS 1972 UTM Zone 36N              */
#define PE_PCS_WGS_1972_UTM_37N   32237 /* WGS 1972 UTM Zone 37N              */
#define PE_PCS_WGS_1972_UTM_38N   32238 /* WGS 1972 UTM Zone 38N              */
#define PE_PCS_WGS_1972_UTM_39N   32239 /* WGS 1972 UTM Zone 39N              */
#define PE_PCS_WGS_1972_UTM_40N   32240 /* WGS 1972 UTM Zone 40N              */
#define PE_PCS_WGS_1972_UTM_41N   32241 /* WGS 1972 UTM Zone 41N              */
#define PE_PCS_WGS_1972_UTM_42N   32242 /* WGS 1972 UTM Zone 42N              */
#define PE_PCS_WGS_1972_UTM_43N   32243 /* WGS 1972 UTM Zone 43N              */
#define PE_PCS_WGS_1972_UTM_44N   32244 /* WGS 1972 UTM Zone 44N              */
#define PE_PCS_WGS_1972_UTM_45N   32245 /* WGS 1972 UTM Zone 45N              */
#define PE_PCS_WGS_1972_UTM_46N   32246 /* WGS 1972 UTM Zone 46N              */
#define PE_PCS_WGS_1972_UTM_47N   32247 /* WGS 1972 UTM Zone 47N              */
#define PE_PCS_WGS_1972_UTM_48N   32248 /* WGS 1972 UTM Zone 48N              */
#define PE_PCS_WGS_1972_UTM_49N   32249 /* WGS 1972 UTM Zone 49N              */
#define PE_PCS_WGS_1972_UTM_50N   32250 /* WGS 1972 UTM Zone 50N              */
#define PE_PCS_WGS_1972_UTM_51N   32251 /* WGS 1972 UTM Zone 51N              */
#define PE_PCS_WGS_1972_UTM_52N   32252 /* WGS 1972 UTM Zone 52N              */
#define PE_PCS_WGS_1972_UTM_53N   32253 /* WGS 1972 UTM Zone 53N              */
#define PE_PCS_WGS_1972_UTM_54N   32254 /* WGS 1972 UTM Zone 54N              */
#define PE_PCS_WGS_1972_UTM_55N   32255 /* WGS 1972 UTM Zone 55N              */
#define PE_PCS_WGS_1972_UTM_56N   32256 /* WGS 1972 UTM Zone 56N              */
#define PE_PCS_WGS_1972_UTM_57N   32257 /* WGS 1972 UTM Zone 57N              */
#define PE_PCS_WGS_1972_UTM_58N   32258 /* WGS 1972 UTM Zone 58N              */
#define PE_PCS_WGS_1972_UTM_59N   32259 /* WGS 1972 UTM Zone 59N              */
#define PE_PCS_WGS_1972_UTM_60N   32260 /* WGS 1972 UTM Zone 60N              */
#define PE_PCS_WGS_1972_UTM_1S    32301 /* WGS 1972 UTM Zone 1S               */
#define PE_PCS_WGS_1972_UTM_2S    32302 /* WGS 1972 UTM Zone 2S               */
#define PE_PCS_WGS_1972_UTM_3S    32303 /* WGS 1972 UTM Zone 3S               */
#define PE_PCS_WGS_1972_UTM_4S    32304 /* WGS 1972 UTM Zone 4S               */
#define PE_PCS_WGS_1972_UTM_5S    32305 /* WGS 1972 UTM Zone 5S               */
#define PE_PCS_WGS_1972_UTM_6S    32306 /* WGS 1972 UTM Zone 6S               */
#define PE_PCS_WGS_1972_UTM_7S    32307 /* WGS 1972 UTM Zone 7S               */
#define PE_PCS_WGS_1972_UTM_8S    32308 /* WGS 1972 UTM Zone 8S               */
#define PE_PCS_WGS_1972_UTM_9S    32309 /* WGS 1972 UTM Zone 9S               */
#define PE_PCS_WGS_1972_UTM_10S   32310 /* WGS 1972 UTM Zone 10S              */
#define PE_PCS_WGS_1972_UTM_11S   32311 /* WGS 1972 UTM Zone 11S              */
#define PE_PCS_WGS_1972_UTM_12S   32312 /* WGS 1972 UTM Zone 12S              */
#define PE_PCS_WGS_1972_UTM_13S   32313 /* WGS 1972 UTM Zone 13S              */
#define PE_PCS_WGS_1972_UTM_14S   32314 /* WGS 1972 UTM Zone 14S              */
#define PE_PCS_WGS_1972_UTM_15S   32315 /* WGS 1972 UTM Zone 15S              */
#define PE_PCS_WGS_1972_UTM_16S   32316 /* WGS 1972 UTM Zone 16S              */
#define PE_PCS_WGS_1972_UTM_17S   32317 /* WGS 1972 UTM Zone 17S              */
#define PE_PCS_WGS_1972_UTM_18S   32318 /* WGS 1972 UTM Zone 18S              */
#define PE_PCS_WGS_1972_UTM_19S   32319 /* WGS 1972 UTM Zone 19S              */
#define PE_PCS_WGS_1972_UTM_20S   32320 /* WGS 1972 UTM Zone 20S              */
#define PE_PCS_WGS_1972_UTM_21S   32321 /* WGS 1972 UTM Zone 21S              */
#define PE_PCS_WGS_1972_UTM_22S   32322 /* WGS 1972 UTM Zone 22S              */
#define PE_PCS_WGS_1972_UTM_23S   32323 /* WGS 1972 UTM Zone 23S              */
#define PE_PCS_WGS_1972_UTM_24S   32324 /* WGS 1972 UTM Zone 24S              */
#define PE_PCS_WGS_1972_UTM_25S   32325 /* WGS 1972 UTM Zone 25S              */
#define PE_PCS_WGS_1972_UTM_26S   32326 /* WGS 1972 UTM Zone 26S              */
#define PE_PCS_WGS_1972_UTM_27S   32327 /* WGS 1972 UTM Zone 27S              */
#define PE_PCS_WGS_1972_UTM_28S   32328 /* WGS 1972 UTM Zone 28S              */
#define PE_PCS_WGS_1972_UTM_29S   32329 /* WGS 1972 UTM Zone 29S              */
#define PE_PCS_WGS_1972_UTM_30S   32330 /* WGS 1972 UTM Zone 30S              */
#define PE_PCS_WGS_1972_UTM_31S   32331 /* WGS 1972 UTM Zone 31S              */
#define PE_PCS_WGS_1972_UTM_32S   32332 /* WGS 1972 UTM Zone 32S              */
#define PE_PCS_WGS_1972_UTM_33S   32333 /* WGS 1972 UTM Zone 33S              */
#define PE_PCS_WGS_1972_UTM_34S   32334 /* WGS 1972 UTM Zone 34S              */
#define PE_PCS_WGS_1972_UTM_35S   32335 /* WGS 1972 UTM Zone 35S              */
#define PE_PCS_WGS_1972_UTM_36S   32336 /* WGS 1972 UTM Zone 36S              */
#define PE_PCS_WGS_1972_UTM_37S   32337 /* WGS 1972 UTM Zone 37S              */
#define PE_PCS_WGS_1972_UTM_38S   32338 /* WGS 1972 UTM Zone 38S              */
#define PE_PCS_WGS_1972_UTM_39S   32339 /* WGS 1972 UTM Zone 39S              */
#define PE_PCS_WGS_1972_UTM_40S   32340 /* WGS 1972 UTM Zone 40S              */
#define PE_PCS_WGS_1972_UTM_41S   32341 /* WGS 1972 UTM Zone 41S              */
#define PE_PCS_WGS_1972_UTM_42S   32342 /* WGS 1972 UTM Zone 42S              */
#define PE_PCS_WGS_1972_UTM_43S   32343 /* WGS 1972 UTM Zone 43S              */
#define PE_PCS_WGS_1972_UTM_44S   32344 /* WGS 1972 UTM Zone 44S              */
#define PE_PCS_WGS_1972_UTM_45S   32345 /* WGS 1972 UTM Zone 45S              */
#define PE_PCS_WGS_1972_UTM_46S   32346 /* WGS 1972 UTM Zone 46S              */
#define PE_PCS_WGS_1972_UTM_47S   32347 /* WGS 1972 UTM Zone 47S              */
#define PE_PCS_WGS_1972_UTM_48S   32348 /* WGS 1972 UTM Zone 48S              */
#define PE_PCS_WGS_1972_UTM_49S   32349 /* WGS 1972 UTM Zone 49S              */
#define PE_PCS_WGS_1972_UTM_50S   32350 /* WGS 1972 UTM Zone 50S              */
#define PE_PCS_WGS_1972_UTM_51S   32351 /* WGS 1972 UTM Zone 51S              */
#define PE_PCS_WGS_1972_UTM_52S   32352 /* WGS 1972 UTM Zone 52S              */
#define PE_PCS_WGS_1972_UTM_53S   32353 /* WGS 1972 UTM Zone 53S              */
#define PE_PCS_WGS_1972_UTM_54S   32354 /* WGS 1972 UTM Zone 54S              */
#define PE_PCS_WGS_1972_UTM_55S   32355 /* WGS 1972 UTM Zone 55S              */
#define PE_PCS_WGS_1972_UTM_56S   32356 /* WGS 1972 UTM Zone 56S              */
#define PE_PCS_WGS_1972_UTM_57S   32357 /* WGS 1972 UTM Zone 57S              */
#define PE_PCS_WGS_1972_UTM_58S   32358 /* WGS 1972 UTM Zone 58S              */
#define PE_PCS_WGS_1972_UTM_59S   32359 /* WGS 1972 UTM Zone 59S              */
#define PE_PCS_WGS_1972_UTM_60S   32360 /* WGS 1972 UTM Zone 60S              */

#define PE_PCS_NAD_1927_BLM_14N      32074 /* NAD 1927 BLM Zone 14N           */
#define PE_PCS_NAD_1927_BLM_15N      32075 /* NAD 1927 BLM Zone 15N           */
#define PE_PCS_NAD_1927_BLM_16N      32076 /* NAD 1927 BLM Zone 16N           */
#define PE_PCS_NAD_1927_BLM_17N      32077 /* NAD 1927 BLM Zone 17N           */

#define PE_PCS_NAD_1927_UTM_3N    26703 /* NAD 1927 UTM Zone 3N               */
#define PE_PCS_NAD_1927_UTM_4N    26704 /* NAD 1927 UTM Zone 4N               */
#define PE_PCS_NAD_1927_UTM_5N    26705 /* NAD 1927 UTM Zone 5N               */
#define PE_PCS_NAD_1927_UTM_6N    26706 /* NAD 1927 UTM Zone 6N               */
#define PE_PCS_NAD_1927_UTM_7N    26707 /* NAD 1927 UTM Zone 7N               */
#define PE_PCS_NAD_1927_UTM_8N    26708 /* NAD 1927 UTM Zone 8N               */
#define PE_PCS_NAD_1927_UTM_9N    26709 /* NAD 1927 UTM Zone 9N               */
#define PE_PCS_NAD_1927_UTM_10N   26710 /* NAD 1927 UTM Zone 10N              */
#define PE_PCS_NAD_1927_UTM_11N   26711 /* NAD 1927 UTM Zone 11N              */
#define PE_PCS_NAD_1927_UTM_12N   26712 /* NAD 1927 UTM Zone 12N              */
#define PE_PCS_NAD_1927_UTM_13N   26713 /* NAD 1927 UTM Zone 13N              */
#define PE_PCS_NAD_1927_UTM_14N   26714 /* NAD 1927 UTM Zone 14N              */
#define PE_PCS_NAD_1927_UTM_15N   26715 /* NAD 1927 UTM Zone 15N              */
#define PE_PCS_NAD_1927_UTM_16N   26716 /* NAD 1927 UTM Zone 16N              */
#define PE_PCS_NAD_1927_UTM_17N   26717 /* NAD 1927 UTM Zone 17N              */
#define PE_PCS_NAD_1927_UTM_18N   26718 /* NAD 1927 UTM Zone 18N              */
#define PE_PCS_NAD_1927_UTM_19N   26719 /* NAD 1927 UTM Zone 19N              */
#define PE_PCS_NAD_1927_UTM_20N   26720 /* NAD 1927 UTM Zone 20N              */
#define PE_PCS_NAD_1927_UTM_21N   26721 /* NAD 1927 UTM Zone 21N              */
#define PE_PCS_NAD_1927_UTM_22N   26722 /* NAD 1927 UTM Zone 22N              */

#define PE_PCS_NAD_1983_UTM_3N    26903 /* NAD 1983 UTM Zone 3N               */
#define PE_PCS_NAD_1983_UTM_4N    26904 /* NAD 1983 UTM Zone 4N               */
#define PE_PCS_NAD_1983_UTM_5N    26905 /* NAD 1983 UTM Zone 5N               */
#define PE_PCS_NAD_1983_UTM_6N    26906 /* NAD 1983 UTM Zone 6N               */
#define PE_PCS_NAD_1983_UTM_7N    26907 /* NAD 1983 UTM Zone 7N               */
#define PE_PCS_NAD_1983_UTM_8N    26908 /* NAD 1983 UTM Zone 8N               */
#define PE_PCS_NAD_1983_UTM_9N    26909 /* NAD 1983 UTM Zone 9N               */
#define PE_PCS_NAD_1983_UTM_10N   26910 /* NAD 1983 UTM Zone 10N              */
#define PE_PCS_NAD_1983_UTM_11N   26911 /* NAD 1983 UTM Zone 11N              */
#define PE_PCS_NAD_1983_UTM_12N   26912 /* NAD 1983 UTM Zone 12N              */
#define PE_PCS_NAD_1983_UTM_13N   26913 /* NAD 1983 UTM Zone 13N              */
#define PE_PCS_NAD_1983_UTM_14N   26914 /* NAD 1983 UTM Zone 14N              */
#define PE_PCS_NAD_1983_UTM_15N   26915 /* NAD 1983 UTM Zone 15N              */
#define PE_PCS_NAD_1983_UTM_16N   26916 /* NAD 1983 UTM Zone 16N              */
#define PE_PCS_NAD_1983_UTM_17N   26917 /* NAD 1983 UTM Zone 17N              */
#define PE_PCS_NAD_1983_UTM_18N   26918 /* NAD 1983 UTM Zone 18N              */
#define PE_PCS_NAD_1983_UTM_19N   26919 /* NAD 1983 UTM Zone 19N              */
#define PE_PCS_NAD_1983_UTM_20N   26920 /* NAD 1983 UTM Zone 20N              */
#define PE_PCS_NAD_1983_UTM_21N   26921 /* NAD 1983 UTM Zone 21N              */
#define PE_PCS_NAD_1983_UTM_22N   26922 /* NAD 1983 UTM Zone 22N              */
#define PE_PCS_NAD_1983_UTM_23N   26923 /* NAD 1983 UTM Zone 23N              */

#define PE_PCS_ETRF_1989_UTM_28N   25828 /* ETRF 1989 UTM Zone 28N            */
#define PE_PCS_ETRF_1989_UTM_29N   25829 /* ETRF 1989 UTM Zone 29N            */
#define PE_PCS_ETRF_1989_UTM_30N   25830 /* ETRF 1989 UTM Zone 30N            */
#define PE_PCS_ETRF_1989_UTM_31N   25831 /* ETRF 1989 UTM Zone 31N            */
#define PE_PCS_ETRF_1989_UTM_32N   25832 /* ETRF 1989 UTM Zone 32N            */
#define PE_PCS_ETRF_1989_UTM_33N   25833 /* ETRF 1989 UTM Zone 33N            */
#define PE_PCS_ETRF_1989_UTM_34N   25834 /* ETRF 1989 UTM Zone 34N            */
#define PE_PCS_ETRF_1989_UTM_35N   25835 /* ETRF 1989 UTM Zone 35N            */
#define PE_PCS_ETRF_1989_UTM_36N   25836 /* ETRF 1989 UTM Zone 36N            */
#define PE_PCS_ETRF_1989_UTM_37N   25837 /* ETRF 1989 UTM Zone 37N            */
#define PE_PCS_ETRF_1989_UTM_38N   25838 /* ETRF 1989 UTM Zone 38N            */

#define PE_PCS_PULKOVO_1942_GK_2     28402 /* Pulkovo 1942 GK Zone 2          */
#define PE_PCS_PULKOVO_1942_GK_3     28403 /* Pulkovo 1942 GK Zone 3          */
#define PE_PCS_PULKOVO_1942_GK_4     28404 /* Pulkovo 1942 GK Zone 4          */
#define PE_PCS_PULKOVO_1942_GK_5     28405 /* Pulkovo 1942 GK Zone 5          */
#define PE_PCS_PULKOVO_1942_GK_6     28406 /* Pulkovo 1942 GK Zone 6          */
#define PE_PCS_PULKOVO_1942_GK_7     28407 /* Pulkovo 1942 GK Zone 7          */
#define PE_PCS_PULKOVO_1942_GK_8     28408 /* Pulkovo 1942 GK Zone 8          */
#define PE_PCS_PULKOVO_1942_GK_9     28409 /* Pulkovo 1942 GK Zone 9          */
#define PE_PCS_PULKOVO_1942_GK_10    28410 /* Pulkovo 1942 GK Zone 10         */
#define PE_PCS_PULKOVO_1942_GK_11    28411 /* Pulkovo 1942 GK Zone 11         */
#define PE_PCS_PULKOVO_1942_GK_12    28412 /* Pulkovo 1942 GK Zone 12         */
#define PE_PCS_PULKOVO_1942_GK_13    28413 /* Pulkovo 1942 GK Zone 13         */
#define PE_PCS_PULKOVO_1942_GK_14    28414 /* Pulkovo 1942 GK Zone 14         */
#define PE_PCS_PULKOVO_1942_GK_15    28415 /* Pulkovo 1942 GK Zone 15         */
#define PE_PCS_PULKOVO_1942_GK_16    28416 /* Pulkovo 1942 GK Zone 16         */
#define PE_PCS_PULKOVO_1942_GK_17    28417 /* Pulkovo 1942 GK Zone 17         */
#define PE_PCS_PULKOVO_1942_GK_18    28418 /* Pulkovo 1942 GK Zone 18         */
#define PE_PCS_PULKOVO_1942_GK_19    28419 /* Pulkovo 1942 GK Zone 19         */
#define PE_PCS_PULKOVO_1942_GK_20    28420 /* Pulkovo 1942 GK Zone 20         */
#define PE_PCS_PULKOVO_1942_GK_21    28421 /* Pulkovo 1942 GK Zone 21         */
#define PE_PCS_PULKOVO_1942_GK_22    28422 /* Pulkovo 1942 GK Zone 22         */
#define PE_PCS_PULKOVO_1942_GK_23    28423 /* Pulkovo 1942 GK Zone 23         */
#define PE_PCS_PULKOVO_1942_GK_24    28424 /* Pulkovo 1942 GK Zone 24         */
#define PE_PCS_PULKOVO_1942_GK_25    28425 /* Pulkovo 1942 GK Zone 25         */
#define PE_PCS_PULKOVO_1942_GK_26    28426 /* Pulkovo 1942 GK Zone 26         */
#define PE_PCS_PULKOVO_1942_GK_27    28427 /* Pulkovo 1942 GK Zone 27         */
#define PE_PCS_PULKOVO_1942_GK_28    28428 /* Pulkovo 1942 GK Zone 28         */
#define PE_PCS_PULKOVO_1942_GK_29    28429 /* Pulkovo 1942 GK Zone 29         */
#define PE_PCS_PULKOVO_1942_GK_30    28430 /* Pulkovo 1942 GK Zone 30         */
#define PE_PCS_PULKOVO_1942_GK_31    28431 /* Pulkovo 1942 GK Zone 31         */
#define PE_PCS_PULKOVO_1942_GK_32    28432 /* Pulkovo 1942 GK Zone 32         */
#define PE_PCS_PULKOVO_1942_GK_2N    28462 /* Pulkovo 1942 GK Zone 2N         */
#define PE_PCS_PULKOVO_1942_GK_3N    28463 /* Pulkovo 1942 GK Zone 3N         */
#define PE_PCS_PULKOVO_1942_GK_4N    28464 /* Pulkovo 1942 GK Zone 4N         */
#define PE_PCS_PULKOVO_1942_GK_5N    28465 /* Pulkovo 1942 GK Zone 5N         */
#define PE_PCS_PULKOVO_1942_GK_6N    28466 /* Pulkovo 1942 GK Zone 6N         */
#define PE_PCS_PULKOVO_1942_GK_7N    28467 /* Pulkovo 1942 GK Zone 7N         */
#define PE_PCS_PULKOVO_1942_GK_8N    28468 /* Pulkovo 1942 GK Zone 8N         */
#define PE_PCS_PULKOVO_1942_GK_9N    28469 /* Pulkovo 1942 GK Zone 9N         */
#define PE_PCS_PULKOVO_1942_GK_10N   28470 /* Pulkovo 1942 GK Zone 10N        */
#define PE_PCS_PULKOVO_1942_GK_11N   28471 /* Pulkovo 1942 GK Zone 11N        */
#define PE_PCS_PULKOVO_1942_GK_12N   28472 /* Pulkovo 1942 GK Zone 12N        */
#define PE_PCS_PULKOVO_1942_GK_13N   28473 /* Pulkovo 1942 GK Zone 13N        */
#define PE_PCS_PULKOVO_1942_GK_14N   28474 /* Pulkovo 1942 GK Zone 14N        */
#define PE_PCS_PULKOVO_1942_GK_15N   28475 /* Pulkovo 1942 GK Zone 15N        */
#define PE_PCS_PULKOVO_1942_GK_16N   28476 /* Pulkovo 1942 GK Zone 16N        */
#define PE_PCS_PULKOVO_1942_GK_17N   28477 /* Pulkovo 1942 GK Zone 17N        */
#define PE_PCS_PULKOVO_1942_GK_18N   28478 /* Pulkovo 1942 GK Zone 18N        */
#define PE_PCS_PULKOVO_1942_GK_19N   28479 /* Pulkovo 1942 GK Zone 19N        */
#define PE_PCS_PULKOVO_1942_GK_20N   28480 /* Pulkovo 1942 GK Zone 20N        */
#define PE_PCS_PULKOVO_1942_GK_21N   28481 /* Pulkovo 1942 GK Zone 21N        */
#define PE_PCS_PULKOVO_1942_GK_22N   28482 /* Pulkovo 1942 GK Zone 22N        */
#define PE_PCS_PULKOVO_1942_GK_23N   28483 /* Pulkovo 1942 GK Zone 23N        */
#define PE_PCS_PULKOVO_1942_GK_24N   28484 /* Pulkovo 1942 GK Zone 24N        */
#define PE_PCS_PULKOVO_1942_GK_25N   28485 /* Pulkovo 1942 GK Zone 25N        */
#define PE_PCS_PULKOVO_1942_GK_26N   28486 /* Pulkovo 1942 GK Zone 26N        */
#define PE_PCS_PULKOVO_1942_GK_27N   28487 /* Pulkovo 1942 GK Zone 27N        */
#define PE_PCS_PULKOVO_1942_GK_28N   28488 /* Pulkovo 1942 GK Zone 28N        */
#define PE_PCS_PULKOVO_1942_GK_29N   28489 /* Pulkovo 1942 GK Zone 29N        */
#define PE_PCS_PULKOVO_1942_GK_30N   28490 /* Pulkovo 1942 GK Zone 30N        */
#define PE_PCS_PULKOVO_1942_GK_31N   28491 /* Pulkovo 1942 GK Zone 31N        */
#define PE_PCS_PULKOVO_1942_GK_32N   28492 /* Pulkovo 1942 GK Zone 32N        */

#define PE_PCS_PULKOVO_1995_GK_2     20002 /* Pulkovo 1995 GK Zone 2          */
#define PE_PCS_PULKOVO_1995_GK_3     20003 /* Pulkovo 1995 GK Zone 3          */
#define PE_PCS_PULKOVO_1995_GK_4     20004 /* Pulkovo 1995 GK Zone 4          */
#define PE_PCS_PULKOVO_1995_GK_5     20005 /* Pulkovo 1995 GK Zone 5          */
#define PE_PCS_PULKOVO_1995_GK_6     20006 /* Pulkovo 1995 GK Zone 6          */
#define PE_PCS_PULKOVO_1995_GK_7     20007 /* Pulkovo 1995 GK Zone 7          */
#define PE_PCS_PULKOVO_1995_GK_8     20008 /* Pulkovo 1995 GK Zone 8          */
#define PE_PCS_PULKOVO_1995_GK_9     20009 /* Pulkovo 1995 GK Zone 9          */
#define PE_PCS_PULKOVO_1995_GK_10    20010 /* Pulkovo 1995 GK Zone 10         */
#define PE_PCS_PULKOVO_1995_GK_11    20011 /* Pulkovo 1995 GK Zone 11         */
#define PE_PCS_PULKOVO_1995_GK_12    20012 /* Pulkovo 1995 GK Zone 12         */
#define PE_PCS_PULKOVO_1995_GK_13    20013 /* Pulkovo 1995 GK Zone 13         */
#define PE_PCS_PULKOVO_1995_GK_14    20014 /* Pulkovo 1995 GK Zone 14         */
#define PE_PCS_PULKOVO_1995_GK_15    20015 /* Pulkovo 1995 GK Zone 15         */
#define PE_PCS_PULKOVO_1995_GK_16    20016 /* Pulkovo 1995 GK Zone 16         */
#define PE_PCS_PULKOVO_1995_GK_17    20017 /* Pulkovo 1995 GK Zone 17         */
#define PE_PCS_PULKOVO_1995_GK_18    20018 /* Pulkovo 1995 GK Zone 18         */
#define PE_PCS_PULKOVO_1995_GK_19    20019 /* Pulkovo 1995 GK Zone 19         */
#define PE_PCS_PULKOVO_1995_GK_20    20020 /* Pulkovo 1995 GK Zone 20         */
#define PE_PCS_PULKOVO_1995_GK_21    20021 /* Pulkovo 1995 GK Zone 21         */
#define PE_PCS_PULKOVO_1995_GK_22    20022 /* Pulkovo 1995 GK Zone 22         */
#define PE_PCS_PULKOVO_1995_GK_23    20023 /* Pulkovo 1995 GK Zone 23         */
#define PE_PCS_PULKOVO_1995_GK_24    20024 /* Pulkovo 1995 GK Zone 24         */
#define PE_PCS_PULKOVO_1995_GK_25    20025 /* Pulkovo 1995 GK Zone 25         */
#define PE_PCS_PULKOVO_1995_GK_26    20026 /* Pulkovo 1995 GK Zone 26         */
#define PE_PCS_PULKOVO_1995_GK_27    20027 /* Pulkovo 1995 GK Zone 27         */
#define PE_PCS_PULKOVO_1995_GK_28    20028 /* Pulkovo 1995 GK Zone 28         */
#define PE_PCS_PULKOVO_1995_GK_29    20029 /* Pulkovo 1995 GK Zone 29         */
#define PE_PCS_PULKOVO_1995_GK_30    20030 /* Pulkovo 1995 GK Zone 30         */
#define PE_PCS_PULKOVO_1995_GK_31    20031 /* Pulkovo 1995 GK Zone 31         */
#define PE_PCS_PULKOVO_1995_GK_32    20032 /* Pulkovo 1995 GK Zone 32         */
#define PE_PCS_PULKOVO_1995_GK_2N    20062 /* Pulkovo 1995 GK Zone 2N         */
#define PE_PCS_PULKOVO_1995_GK_3N    20063 /* Pulkovo 1995 GK Zone 3N         */
#define PE_PCS_PULKOVO_1995_GK_4N    20064 /* Pulkovo 1995 GK Zone 4N         */
#define PE_PCS_PULKOVO_1995_GK_5N    20065 /* Pulkovo 1995 GK Zone 5N         */
#define PE_PCS_PULKOVO_1995_GK_6N    20066 /* Pulkovo 1995 GK Zone 6N         */
#define PE_PCS_PULKOVO_1995_GK_7N    20067 /* Pulkovo 1995 GK Zone 7N         */
#define PE_PCS_PULKOVO_1995_GK_8N    20068 /* Pulkovo 1995 GK Zone 8N         */
#define PE_PCS_PULKOVO_1995_GK_9N    20069 /* Pulkovo 1995 GK Zone 9N         */
#define PE_PCS_PULKOVO_1995_GK_10N   20070 /* Pulkovo 1995 GK Zone 10N        */
#define PE_PCS_PULKOVO_1995_GK_11N   20071 /* Pulkovo 1995 GK Zone 11N        */
#define PE_PCS_PULKOVO_1995_GK_12N   20072 /* Pulkovo 1995 GK Zone 12N        */
#define PE_PCS_PULKOVO_1995_GK_13N   20073 /* Pulkovo 1995 GK Zone 13N        */
#define PE_PCS_PULKOVO_1995_GK_14N   20074 /* Pulkovo 1995 GK Zone 14N        */
#define PE_PCS_PULKOVO_1995_GK_15N   20075 /* Pulkovo 1995 GK Zone 15N        */
#define PE_PCS_PULKOVO_1995_GK_16N   20076 /* Pulkovo 1995 GK Zone 16N        */
#define PE_PCS_PULKOVO_1995_GK_17N   20077 /* Pulkovo 1995 GK Zone 17N        */
#define PE_PCS_PULKOVO_1995_GK_18N   20078 /* Pulkovo 1995 GK Zone 18N        */
#define PE_PCS_PULKOVO_1995_GK_19N   20079 /* Pulkovo 1995 GK Zone 19N        */
#define PE_PCS_PULKOVO_1995_GK_20N   20080 /* Pulkovo 1995 GK Zone 20N        */
#define PE_PCS_PULKOVO_1995_GK_21N   20081 /* Pulkovo 1995 GK Zone 21N        */
#define PE_PCS_PULKOVO_1995_GK_22N   20082 /* Pulkovo 1995 GK Zone 22N        */
#define PE_PCS_PULKOVO_1995_GK_23N   20083 /* Pulkovo 1995 GK Zone 23N        */
#define PE_PCS_PULKOVO_1995_GK_24N   20084 /* Pulkovo 1995 GK Zone 24N        */
#define PE_PCS_PULKOVO_1995_GK_25N   20085 /* Pulkovo 1995 GK Zone 25N        */
#define PE_PCS_PULKOVO_1995_GK_26N   20086 /* Pulkovo 1995 GK Zone 26N        */
#define PE_PCS_PULKOVO_1995_GK_27N   20087 /* Pulkovo 1995 GK Zone 27N        */
#define PE_PCS_PULKOVO_1995_GK_28N   20088 /* Pulkovo 1995 GK Zone 28N        */
#define PE_PCS_PULKOVO_1995_GK_29N   20089 /* Pulkovo 1995 GK Zone 29N        */
#define PE_PCS_PULKOVO_1995_GK_30N   20090 /* Pulkovo 1995 GK Zone 30N        */
#define PE_PCS_PULKOVO_1995_GK_31N   20091 /* Pulkovo 1995 GK Zone 31N        */
#define PE_PCS_PULKOVO_1995_GK_32N   20092 /* Pulkovo 1995 GK Zone 32N        */

#define PE_PCS_BEIJING_1954_GK_13    21413 /* Beijing 1954 GK Zone 13         */
#define PE_PCS_BEIJING_1954_GK_14    21414 /* Beijing 1954 GK Zone 14         */
#define PE_PCS_BEIJING_1954_GK_15    21415 /* Beijing 1954 GK Zone 15         */
#define PE_PCS_BEIJING_1954_GK_16    21416 /* Beijing 1954 GK Zone 16         */
#define PE_PCS_BEIJING_1954_GK_17    21417 /* Beijing 1954 GK Zone 17         */
#define PE_PCS_BEIJING_1954_GK_18    21418 /* Beijing 1954 GK Zone 18         */
#define PE_PCS_BEIJING_1954_GK_19    21419 /* Beijing 1954 GK Zone 19         */
#define PE_PCS_BEIJING_1954_GK_20    21420 /* Beijing 1954 GK Zone 20         */
#define PE_PCS_BEIJING_1954_GK_21    21421 /* Beijing 1954 GK Zone 21         */
#define PE_PCS_BEIJING_1954_GK_22    21422 /* Beijing 1954 GK Zone 22         */
#define PE_PCS_BEIJING_1954_GK_23    21423 /* Beijing 1954 GK Zone 23         */
#define PE_PCS_BEIJING_1954_GK_13N   21473 /* Beijing 1954 GK Zone 13N        */
#define PE_PCS_BEIJING_1954_GK_14N   21474 /* Beijing 1954 GK Zone 14N        */
#define PE_PCS_BEIJING_1954_GK_15N   21475 /* Beijing 1954 GK Zone 15N        */
#define PE_PCS_BEIJING_1954_GK_16N   21476 /* Beijing 1954 GK Zone 16N        */
#define PE_PCS_BEIJING_1954_GK_17N   21477 /* Beijing 1954 GK Zone 17N        */
#define PE_PCS_BEIJING_1954_GK_18N   21478 /* Beijing 1954 GK Zone 18N        */
#define PE_PCS_BEIJING_1954_GK_19N   21479 /* Beijing 1954 GK Zone 19N        */
#define PE_PCS_BEIJING_1954_GK_20N   21480 /* Beijing 1954 GK Zone 20N        */
#define PE_PCS_BEIJING_1954_GK_21N   21481 /* Beijing 1954 GK Zone 21N        */
#define PE_PCS_BEIJING_1954_GK_22N   21482 /* Beijing 1954 GK Zone 22N        */
#define PE_PCS_BEIJING_1954_GK_23N   21483 /* Beijing 1954 GK Zone 23N        */

#define PE_PCS_ED_1950_UTM_28N   23028 /* European Datum 1950 UTM Zone 28N    */
#define PE_PCS_ED_1950_UTM_29N   23029 /* European Datum 1950 UTM Zone 29N    */
#define PE_PCS_ED_1950_UTM_30N   23030 /* European Datum 1950 UTM Zone 30N    */
#define PE_PCS_ED_1950_UTM_31N   23031 /* European Datum 1950 UTM Zone 31N    */
#define PE_PCS_ED_1950_UTM_32N   23032 /* European Datum 1950 UTM Zone 32N    */
#define PE_PCS_ED_1950_UTM_33N   23033 /* European Datum 1950 UTM Zone 33N    */
#define PE_PCS_ED_1950_UTM_34N   23034 /* European Datum 1950 UTM Zone 34N    */
#define PE_PCS_ED_1950_UTM_35N   23035 /* European Datum 1950 UTM Zone 35N    */
#define PE_PCS_ED_1950_UTM_36N   23036 /* European Datum 1950 UTM Zone 36N    */
#define PE_PCS_ED_1950_UTM_37N   23037 /* European Datum 1950 UTM Zone 37N    */
#define PE_PCS_ED_1950_UTM_38N   23038 /* European Datum 1950 UTM Zone 38N    */

#define PE_PCS_ATS_1977_UTM_19N   2219  /* ATS 1977 UTM Zone 19N              */
#define PE_PCS_ATS_1977_UTM_20N   2220  /* ATS 1977 UTM Zone 20N              */

#define PE_PCS_KKJ_FINLAND_1      2391 /* Finland Zone 1                      */
#define PE_PCS_KKJ_FINLAND_2      2392 /* Finland Zone 2                      */
#define PE_PCS_KKJ_FINLAND_3      2393 /* Finland Zone 3                      */
#define PE_PCS_KKJ_FINLAND_4      2394 /* Finland Zone 4                      */

#define PE_PCS_SAD_1969_UTM_18N   29118 /* South American 1969 UTM Zone 18N   */
#define PE_PCS_SAD_1969_UTM_19N   29119 /* South American 1969 UTM Zone 19N   */
#define PE_PCS_SAD_1969_UTM_20N   29120 /* South American 1969 UTM Zone 20N   */
#define PE_PCS_SAD_1969_UTM_21N   29121 /* South American 1969 UTM Zone 21N   */
#define PE_PCS_SAD_1969_UTM_22N   29122 /* South American 1969 UTM Zone 22N   */
#define PE_PCS_SAD_1969_UTM_17S   29177 /* South American 1969 UTM Zone 17S   */
#define PE_PCS_SAD_1969_UTM_18S   29178 /* South American 1969 UTM Zone 18S   */
#define PE_PCS_SAD_1969_UTM_19S   29179 /* South American 1969 UTM Zone 19S   */
#define PE_PCS_SAD_1969_UTM_20S   29180 /* South American 1969 UTM Zone 20S   */
#define PE_PCS_SAD_1969_UTM_21S   29181 /* South American 1969 UTM Zone 21S   */
#define PE_PCS_SAD_1969_UTM_22S   29182 /* South American 1969 UTM Zone 22S   */
#define PE_PCS_SAD_1969_UTM_23S   29183 /* South American 1969 UTM Zone 23S   */
#define PE_PCS_SAD_1969_UTM_24S   29184 /* South American 1969 UTM Zone 24S   */
#define PE_PCS_SAD_1969_UTM_25S   29185 /* South American 1969 UTM Zone 25S   */

#define PE_PCS_AGD_1966_AMG_48   20248 /* AGD 1966 AMG Zone 48                */
#define PE_PCS_AGD_1966_AMG_49   20249 /* AGD 1966 AMG Zone 49                */
#define PE_PCS_AGD_1966_AMG_50   20250 /* AGD 1966 AMG Zone 50                */
#define PE_PCS_AGD_1966_AMG_51   20251 /* AGD 1966 AMG Zone 51                */
#define PE_PCS_AGD_1966_AMG_52   20252 /* AGD 1966 AMG Zone 52                */
#define PE_PCS_AGD_1966_AMG_53   20253 /* AGD 1966 AMG Zone 53                */
#define PE_PCS_AGD_1966_AMG_54   20254 /* AGD 1966 AMG Zone 54                */
#define PE_PCS_AGD_1966_AMG_55   20255 /* AGD 1966 AMG Zone 55                */
#define PE_PCS_AGD_1966_AMG_56   20256 /* AGD 1966 AMG Zone 56                */
#define PE_PCS_AGD_1966_AMG_57   20257 /* AGD 1966 AMG Zone 57                */
#define PE_PCS_AGD_1966_AMG_58   20258 /* AGD 1966 AMG Zone 58                */

#define PE_PCS_AGD_1984_AMG_48   20348 /* AGD 1984 AMG Zone 48                */
#define PE_PCS_AGD_1984_AMG_49   20349 /* AGD 1984 AMG Zone 49                */
#define PE_PCS_AGD_1984_AMG_50   20350 /* AGD 1984 AMG Zone 50                */
#define PE_PCS_AGD_1984_AMG_51   20351 /* AGD 1984 AMG Zone 51                */
#define PE_PCS_AGD_1984_AMG_52   20352 /* AGD 1984 AMG Zone 52                */
#define PE_PCS_AGD_1984_AMG_53   20353 /* AGD 1984 AMG Zone 53                */
#define PE_PCS_AGD_1984_AMG_54   20354 /* AGD 1984 AMG Zone 54                */
#define PE_PCS_AGD_1984_AMG_55   20355 /* AGD 1984 AMG Zone 55                */
#define PE_PCS_AGD_1984_AMG_56   20356 /* AGD 1984 AMG Zone 56                */
#define PE_PCS_AGD_1984_AMG_57   20357 /* AGD 1984 AMG Zone 57                */
#define PE_PCS_AGD_1984_AMG_58   20358 /* AGD 1984 AMG Zone 58                */

#define PE_PCS_GDA_1994_MGA_48   28348 /* GDA 1994 MGA Zone 48                */
#define PE_PCS_GDA_1994_MGA_49   28349 /* GDA 1994 MGA Zone 49                */
#define PE_PCS_GDA_1994_MGA_50   28350 /* GDA 1994 MGA Zone 50                */
#define PE_PCS_GDA_1994_MGA_51   28351 /* GDA 1994 MGA Zone 51                */
#define PE_PCS_GDA_1994_MGA_52   28352 /* GDA 1994 MGA Zone 52                */
#define PE_PCS_GDA_1994_MGA_53   28353 /* GDA 1994 MGA Zone 53                */
#define PE_PCS_GDA_1994_MGA_54   28354 /* GDA 1994 MGA Zone 54                */
#define PE_PCS_GDA_1994_MGA_55   28355 /* GDA 1994 MGA Zone 55                */
#define PE_PCS_GDA_1994_MGA_56   28356 /* GDA 1994 MGA Zone 56                */
#define PE_PCS_GDA_1994_MGA_57   28357 /* GDA 1994 MGA Zone 57                */
#define PE_PCS_GDA_1994_MGA_58   28358 /* GDA 1994 MGA Zone 58                */

#define PE_PCS_NAD_1927_AL_E    26729 /* NAD 1927 SPCS Zone Alabama East      */
#define PE_PCS_NAD_1927_AL_W    26730 /* NAD 1927 SPCS Zone Alabama West      */
#define PE_PCS_NAD_1927_AK_1    26731 /* NAD 1927 SPCS Zone Alaska 1          */
#define PE_PCS_NAD_1927_AK_2    26732 /* NAD 1927 SPCS Zone Alaska 2          */
#define PE_PCS_NAD_1927_AK_3    26733 /* NAD 1927 SPCS Zone Alaska 3          */
#define PE_PCS_NAD_1927_AK_4    26734 /* NAD 1927 SPCS Zone Alaska 4          */
#define PE_PCS_NAD_1927_AK_5    26735 /* NAD 1927 SPCS Zone Alaska 5          */
#define PE_PCS_NAD_1927_AK_6    26736 /* NAD 1927 SPCS Zone Alaska 6          */
#define PE_PCS_NAD_1927_AK_7    26737 /* NAD 1927 SPCS Zone Alaska 7          */
#define PE_PCS_NAD_1927_AK_8    26738 /* NAD 1927 SPCS Zone Alaska 8          */
#define PE_PCS_NAD_1927_AK_9    26739 /* NAD 1927 SPCS Zone Alaska 9          */
#define PE_PCS_NAD_1927_AK_10   26740 /* NAD 1927 SPCS Zone Alaska 10         */
#define PE_PCS_NAD_1927_AZ_E    26748 /* NAD 1927 SPCS Zone Arizona East      */
#define PE_PCS_NAD_1927_AZ_C    26749 /* NAD 1927 SPCS Zone Arizona Central   */
#define PE_PCS_NAD_1927_AZ_W    26750 /* NAD 1927 SPCS Zone Arizona West      */
#define PE_PCS_NAD_1927_AR_N    26751 /* NAD 1927 SPCS Zone Arkansas North    */
#define PE_PCS_NAD_1927_AR_S    26752 /* NAD 1927 SPCS Zone Arkansas South    */
#define PE_PCS_NAD_1927_CA_I    26741 /* NAD 1927 SPCS Zone California I      */
#define PE_PCS_NAD_1927_CA_II   26742 /* NAD 1927 SPCS Zone California II     */
#define PE_PCS_NAD_1927_CA_III  26743 /* NAD 1927 SPCS Zone California III    */
#define PE_PCS_NAD_1927_CA_IV   26744 /* NAD 1927 SPCS Zone California IV     */
#define PE_PCS_NAD_1927_CA_V    26745 /* NAD 1927 SPCS Zone California V      */
#define PE_PCS_NAD_1927_CA_VI   26746 /* NAD 1927 SPCS Zone California VI     */
#define PE_PCS_NAD_1927_CA_VII  26747 /* NAD 1927 SPCS Zone California VII    */
#define PE_PCS_NAD_1927_CO_N    26753 /* NAD 1927 SPCS Zone Colorado North    */
#define PE_PCS_NAD_1927_CO_C    26754 /* NAD 1927 SPCS Zone Colorado Central  */
#define PE_PCS_NAD_1927_CO_S    26755 /* NAD 1927 SPCS Zone Colorado South    */
#define PE_PCS_NAD_1927_CT      26756 /* NAD 1927 SPCS Zone Connecticut       */
#define PE_PCS_NAD_1927_DE      26757 /* NAD 1927 SPCS Zone Delaware          */
#define PE_PCS_NAD_1927_FL_E    26758 /* NAD 1927 SPCS Zone Florida East      */
#define PE_PCS_NAD_1927_FL_W    26759 /* NAD 1927 SPCS Zone Florida West      */
#define PE_PCS_NAD_1927_FL_N    26760 /* NAD 1927 SPCS Zone Florida North     */
#define PE_PCS_NAD_1927_GA_E    26766 /* NAD 1927 SPCS Zone Georgia East      */
#define PE_PCS_NAD_1927_GA_W    26767 /* NAD 1927 SPCS Zone Georgia West      */
#define PE_PCS_NAD_1927_HI_1    26761 /* NAD 1927 SPCS Zone Hawaii 1          */
#define PE_PCS_NAD_1927_HI_2    26762 /* NAD 1927 SPCS Zone Hawaii 2          */
#define PE_PCS_NAD_1927_HI_3    26763 /* NAD 1927 SPCS Zone Hawaii 3          */
#define PE_PCS_NAD_1927_HI_4    26764 /* NAD 1927 SPCS Zone Hawaii 4          */
#define PE_PCS_NAD_1927_HI_5    26765 /* NAD 1927 SPCS Zone Hawaii 5          */
#define PE_PCS_NAD_1927_ID_E    26768 /* NAD 1927 SPCS Zone Idaho East        */
#define PE_PCS_NAD_1927_ID_C    26769 /* NAD 1927 SPCS Zone Idaho Central     */
#define PE_PCS_NAD_1927_ID_W    26770 /* NAD 1927 SPCS Zone Idaho West        */
#define PE_PCS_NAD_1927_IL_E    26771 /* NAD 1927 SPCS Zone Illinois East     */
#define PE_PCS_NAD_1927_IL_W    26772 /* NAD 1927 SPCS Zone Illinois West     */
#define PE_PCS_NAD_1927_IN_E    26773 /* NAD 1927 SPCS Zone Indiana East      */
#define PE_PCS_NAD_1927_IN_W    26774 /* NAD 1927 SPCS Zone Indiana West      */
#define PE_PCS_NAD_1927_IA_N    26775 /* NAD 1927 SPCS Zone Iowa North        */
#define PE_PCS_NAD_1927_IA_S    26776 /* NAD 1927 SPCS Zone Iowa South        */
#define PE_PCS_NAD_1927_KS_N    26777 /* NAD 1927 SPCS Zone Kansas North      */
#define PE_PCS_NAD_1927_KS_S    26778 /* NAD 1927 SPCS Zone Kansas South      */
#define PE_PCS_NAD_1927_KY_N    26779 /* NAD 1927 SPCS Zone Kentucky North    */
#define PE_PCS_NAD_1927_KY_S    26780 /* NAD 1927 SPCS Zone Kentucky South    */
#define PE_PCS_NAD_1927_LA_N    26781 /* NAD 1927 SPCS Zone Louisiana North   */
#define PE_PCS_NAD_1927_LA_S    26782 /* NAD 1927 SPCS Zone Louisiana South   */
#define PE_PCS_NAD_1927_ME_E    26783 /* NAD 1927 SPCS Zone Maine East        */
#define PE_PCS_NAD_1927_ME_W    26784 /* NAD 1927 SPCS Zone Maine West        */
#define PE_PCS_NAD_1927_MD      26785 /* NAD 1927 SPCS Zone Maryland          */
#define PE_PCS_NAD_1927_MA_M    26786 /* NAD 1927 SPCS Zone Mass. Mainland    */
#define PE_PCS_NAD_1927_MA_I    26787 /* NAD 1927 SPCS Zone Mass. Island      */
#define PE_PCS_NAD_1927_MI_N    26788 /* NAD 1927 SPCS Zone Michigan North    */
#define PE_PCS_NAD_1927_MI_C    26789 /* NAD 1927 SPCS Zone Michigan Central  */
#define PE_PCS_NAD_1927_MI_S    26790 /* NAD 1927 SPCS Zone Michigan South    */
#define PE_PCS_NAD_1927_MN_N    26791 /* NAD 1927 SPCS Zone Minnesota North   */
#define PE_PCS_NAD_1927_MN_C    26792 /* NAD 1927 SPCS Zone Minnesota Central */
#define PE_PCS_NAD_1927_MN_S    26793 /* NAD 1927 SPCS Zone Minnesota South   */
#define PE_PCS_NAD_1927_MS_E    26794 /* NAD 1927 SPCS Zone Mississippi East  */
#define PE_PCS_NAD_1927_MS_W    26795 /* NAD 1927 SPCS Zone Mississippi West  */
#define PE_PCS_NAD_1927_MO_E    26796 /* NAD 1927 SPCS Zone Missouri East     */
#define PE_PCS_NAD_1927_MO_C    26797 /* NAD 1927 SPCS Zone Missouri Central  */
#define PE_PCS_NAD_1927_MO_W    26798 /* NAD 1927 SPCS Zone Missouri West     */
#define PE_PCS_NAD_1927_MT_N    32001 /* NAD 1927 SPCS Zone Montana North     */
#define PE_PCS_NAD_1927_MT_C    32002 /* NAD 1927 SPCS Zone Montana Central   */
#define PE_PCS_NAD_1927_MT_S    32003 /* NAD 1927 SPCS Zone Montana South     */
#define PE_PCS_NAD_1927_NE_N    32005 /* NAD 1927 SPCS Zone Nebraska North    */
#define PE_PCS_NAD_1927_NE_S    32006 /* NAD 1927 SPCS Zone Nebraska South    */
#define PE_PCS_NAD_1927_NV_E    32007 /* NAD 1927 SPCS Zone Nevada East       */
#define PE_PCS_NAD_1927_NV_C    32008 /* NAD 1927 SPCS Zone Nevada Central    */
#define PE_PCS_NAD_1927_NV_W    32009 /* NAD 1927 SPCS Zone Nevada West       */
#define PE_PCS_NAD_1927_NH      32010 /* NAD 1927 SPCS Zone New Hampshire     */
#define PE_PCS_NAD_1927_NJ      32011 /* NAD 1927 SPCS Zone New Jersey        */
#define PE_PCS_NAD_1927_NM_E    32012 /* NAD 1927 SPCS Zone New Mexico East   */
#define PE_PCS_NAD_1927_NM_C    32013 /* NAD 1927 SPCS Zone New Mexico Cent.  */
#define PE_PCS_NAD_1927_NM_W    32014 /* NAD 1927 SPCS Zone New Mexico West   */
#define PE_PCS_NAD_1927_NY_E    32015 /* NAD 1927 SPCS Zone New York East     */
#define PE_PCS_NAD_1927_NY_C    32016 /* NAD 1927 SPCS Zone New York Central  */
#define PE_PCS_NAD_1927_NY_W    32017 /* NAD 1927 SPCS Zone New York West     */
#define PE_PCS_NAD_1927_NY_LI   32018 /* NAD 1927 SPCS Zone NY Long Island    */
#define PE_PCS_NAD_1927_NC      32019 /* NAD 1927 SPCS Zone North Carolina    */
#define PE_PCS_NAD_1927_ND_N    32020 /* NAD 1927 SPCS Zone North Dakota N    */
#define PE_PCS_NAD_1927_ND_S    32021 /* NAD 1927 SPCS Zone North Dakota S    */
#define PE_PCS_NAD_1927_OH_N    32022 /* NAD 1927 SPCS Zone Ohio North        */
#define PE_PCS_NAD_1927_OH_S    32023 /* NAD 1927 SPCS Zone Ohio South        */
#define PE_PCS_NAD_1927_OK_N    32024 /* NAD 1927 SPCS Zone Oklahoma North    */
#define PE_PCS_NAD_1927_OK_S    32025 /* NAD 1927 SPCS Zone Oklahoma South    */
#define PE_PCS_NAD_1927_OR_N    32026 /* NAD 1927 SPCS Zone Oregon North      */
#define PE_PCS_NAD_1927_OR_S    32027 /* NAD 1927 SPCS Zone Oregon South      */
#define PE_PCS_NAD_1927_PA_N    32028 /* NAD 1927 SPCS Zone Pennsylvania N    */
#define PE_PCS_NAD_1927_PA_S    32029 /* NAD 1927 SPCS Zone Pennsylvania S    */
#define PE_PCS_NAD_1927_RI      32030 /* NAD 1927 SPCS Zone Rhode Island      */
#define PE_PCS_NAD_1927_SC_N    32031 /* NAD 1927 SPCS Zone South Carolina N  */
#define PE_PCS_NAD_1927_SC_S    32033 /* NAD 1927 SPCS Zone South Carolina S  */
#define PE_PCS_NAD_1927_SD_N    32034 /* NAD 1927 SPCS Zone South Dakota N    */
#define PE_PCS_NAD_1927_SD_S    32035 /* NAD 1927 SPCS Zone South Dakota S    */
#define PE_PCS_NAD_1927_TN      32036 /* NAD 1927 SPCS Zone Tennessee         */
#define PE_PCS_NAD_1927_TX_N    32037 /* NAD 1927 SPCS Zone Texas North       */
#define PE_PCS_NAD_1927_TX_NC   32038 /* NAD 1927 SPCS Zone Texas North Cent. */
#define PE_PCS_NAD_1927_TX_C    32039 /* NAD 1927 SPCS Zone Texas Central     */
#define PE_PCS_NAD_1927_TX_SC   32040 /* NAD 1927 SPCS Zone Texas South Cent. */
#define PE_PCS_NAD_1927_TX_S    32041 /* NAD 1927 SPCS Zone Texas South       */
#define PE_PCS_NAD_1927_UT_N    32042 /* NAD 1927 SPCS Zone Utah North        */
#define PE_PCS_NAD_1927_UT_C    32043 /* NAD 1927 SPCS Zone Utah Central      */
#define PE_PCS_NAD_1927_UT_S    32044 /* NAD 1927 SPCS Zone Utah South        */
#define PE_PCS_NAD_1927_VT      32045 /* NAD 1927 SPCS Zone Vermont           */
#define PE_PCS_NAD_1927_VA_N    32046 /* NAD 1927 SPCS Zone Virginia North    */
#define PE_PCS_NAD_1927_VA_S    32047 /* NAD 1927 SPCS Zone Virginia South    */
#define PE_PCS_NAD_1927_WA_N    32048 /* NAD 1927 SPCS Zone Washington North  */
#define PE_PCS_NAD_1927_WA_S    32049 /* NAD 1927 SPCS Zone Washington South  */
#define PE_PCS_NAD_1927_WV_N    32050 /* NAD 1927 SPCS Zone West Virginia N   */
#define PE_PCS_NAD_1927_WV_S    32051 /* NAD 1927 SPCS Zone West Virginia S   */
#define PE_PCS_NAD_1927_WI_N    32052 /* NAD 1927 SPCS Zone Wisconsin North   */
#define PE_PCS_NAD_1927_WI_C    32053 /* NAD 1927 SPCS Zone Wisconsin Central */
#define PE_PCS_NAD_1927_WI_S    32054 /* NAD 1927 SPCS Zone Wisconsin South   */
#define PE_PCS_NAD_1927_WY_E    32055 /* NAD 1927 SPCS Zone Wyoming I East    */
#define PE_PCS_NAD_1927_WY_EC   32056 /* NAD 1927 SPCS Zone Wyoming II EC     */
#define PE_PCS_NAD_1927_WY_WC   32057 /* NAD 1927 SPCS Zone Wyoming III WC    */
#define PE_PCS_NAD_1927_WY_W    32058 /* NAD 1927 SPCS Zone Wyoming IV West   */
#define PE_PCS_NAD_1927_PR      32059 /* NAD 1927 SPCS Zone Puerto Rico       */
#define PE_PCS_NAD_1927_VI      32060 /* NAD 1927 SPCS Zone St. Croix         */
#define PE_PCS_NAD_1927_GU      (32061+33000) /* NAD 1927 SPCS Zone Guam      */

#define PE_PCS_NAD_MICH_MI_E_OLD  26801 /* NAD Michigan SPCS Zone Michigan East Old    */
#define PE_PCS_NAD_MICH_MI_C_OLD  26802 /* NAD Michigan SPCS Zone Michigan Central Old */
#define PE_PCS_NAD_MICH_MI_W_OLD  26803 /* NAD Michigan SPCS Zone Michigan West Old    */
#define PE_PCS_NAD_MICH_MI_N      26811 /* NAD Michigan SPCS Zone Michigan North       */
#define PE_PCS_NAD_MICH_MI_C      26812 /* NAD Michigan SPCS Zone Michigan Central     */
#define PE_PCS_NAD_MICH_MI_S      26813 /* NAD Michigan SPCS Zone Michigan South       */

#define PE_PCS_NAD_1983_AL_E    26929 /* NAD 1983 SPCS Zone Alabama East      */
#define PE_PCS_NAD_1983_AL_W    26930 /* NAD 1983 SPCS Zone Alabama West      */
#define PE_PCS_NAD_1983_AK_1    26931 /* NAD 1983 SPCS Zone Alaska 1          */
#define PE_PCS_NAD_1983_AK_2    26932 /* NAD 1983 SPCS Zone Alaska 2          */
#define PE_PCS_NAD_1983_AK_3    26933 /* NAD 1983 SPCS Zone Alaska 3          */
#define PE_PCS_NAD_1983_AK_4    26934 /* NAD 1983 SPCS Zone Alaska 4          */
#define PE_PCS_NAD_1983_AK_5    26935 /* NAD 1983 SPCS Zone Alaska 5          */
#define PE_PCS_NAD_1983_AK_6    26936 /* NAD 1983 SPCS Zone Alaska 6          */
#define PE_PCS_NAD_1983_AK_7    26937 /* NAD 1983 SPCS Zone Alaska 7          */
#define PE_PCS_NAD_1983_AK_8    26938 /* NAD 1983 SPCS Zone Alaska 8          */
#define PE_PCS_NAD_1983_AK_9    26939 /* NAD 1983 SPCS Zone Alaska 9          */
#define PE_PCS_NAD_1983_AK_10   26940 /* NAD 1983 SPCS Zone Alaska 10         */
#define PE_PCS_NAD_1983_AZ_E    26948 /* NAD 1983 SPCS Zone Arizona East      */
#define PE_PCS_NAD_1983_AZ_C    26949 /* NAD 1983 SPCS Zone Arizona Central   */
#define PE_PCS_NAD_1983_AZ_W    26950 /* NAD 1983 SPCS Zone Arizona West      */
#define PE_PCS_NAD_1983_AR_N    26951 /* NAD 1983 SPCS Zone Arkansas North    */
#define PE_PCS_NAD_1983_AR_S    26952 /* NAD 1983 SPCS Zone Arkansas South    */
#define PE_PCS_NAD_1983_CA_I    26941 /* NAD 1983 SPCS Zone California I      */
#define PE_PCS_NAD_1983_CA_II   26942 /* NAD 1983 SPCS Zone California II     */
#define PE_PCS_NAD_1983_CA_III  26943 /* NAD 1983 SPCS Zone California III    */
#define PE_PCS_NAD_1983_CA_IV   26944 /* NAD 1983 SPCS Zone California IV     */
#define PE_PCS_NAD_1983_CA_V    26945 /* NAD 1983 SPCS Zone California V      */
#define PE_PCS_NAD_1983_CA_VI   26946 /* NAD 1983 SPCS Zone California VI     */
#define PE_PCS_NAD_1983_CO_N    26953 /* NAD 1983 SPCS Zone Colorado North    */
#define PE_PCS_NAD_1983_CO_C    26954 /* NAD 1983 SPCS Zone Colorado Central  */
#define PE_PCS_NAD_1983_CO_S    26955 /* NAD 1983 SPCS Zone Colorado South    */
#define PE_PCS_NAD_1983_CT      26956 /* NAD 1983 SPCS Zone Connecticut       */
#define PE_PCS_NAD_1983_DE      26957 /* NAD 1983 SPCS Zone Delaware          */
#define PE_PCS_NAD_1983_FL_E    26958 /* NAD 1983 SPCS Zone Florida East      */
#define PE_PCS_NAD_1983_FL_W    26959 /* NAD 1983 SPCS Zone Florida West      */
#define PE_PCS_NAD_1983_FL_N    26960 /* NAD 1983 SPCS Zone Florida North     */
#define PE_PCS_NAD_1983_GA_E    26966 /* NAD 1983 SPCS Zone Georgia East      */
#define PE_PCS_NAD_1983_GA_W    26967 /* NAD 1983 SPCS Zone Georgia West      */
#define PE_PCS_NAD_1983_HI_1    26961 /* NAD 1983 SPCS Zone Hawaii Zone 1     */
#define PE_PCS_NAD_1983_HI_2    26962 /* NAD 1983 SPCS Zone Hawaii Zone 2     */
#define PE_PCS_NAD_1983_HI_3    26963 /* NAD 1983 SPCS Zone Hawaii Zone 3     */
#define PE_PCS_NAD_1983_HI_4    26964 /* NAD 1983 SPCS Zone Hawaii Zone 4     */
#define PE_PCS_NAD_1983_HI_5    26965 /* NAD 1983 SPCS Zone Hawaii Zone 5     */
#define PE_PCS_NAD_1983_ID_E    26968 /* NAD 1983 SPCS Zone Idaho East        */
#define PE_PCS_NAD_1983_ID_C    26969 /* NAD 1983 SPCS Zone Idaho Central     */
#define PE_PCS_NAD_1983_ID_W    26970 /* NAD 1983 SPCS Zone Idaho West        */
#define PE_PCS_NAD_1983_IL_E    26971 /* NAD 1983 SPCS Zone Illinois East     */
#define PE_PCS_NAD_1983_IL_W    26972 /* NAD 1983 SPCS Zone Illinois West     */
#define PE_PCS_NAD_1983_IN_E    26973 /* NAD 1983 SPCS Zone Indiana East      */
#define PE_PCS_NAD_1983_IN_W    26974 /* NAD 1983 SPCS Zone Indiana West      */
#define PE_PCS_NAD_1983_IA_N    26975 /* NAD 1983 SPCS Zone Iowa North        */
#define PE_PCS_NAD_1983_IA_S    26976 /* NAD 1983 SPCS Zone Iowa South        */
#define PE_PCS_NAD_1983_KS_N    26977 /* NAD 1983 SPCS Zone Kansas North      */
#define PE_PCS_NAD_1983_KS_S    26978 /* NAD 1983 SPCS Zone Kansas South      */
#define PE_PCS_NAD_1983_KY_N    26979 /* NAD 1983 SPCS Zone Kentucky North    */
#define PE_PCS_NAD_1983_KY_S    26980 /* NAD 1983 SPCS Zone Kentucky South    */
#define PE_PCS_NAD_1983_LA_N    26981 /* NAD 1983 SPCS Zone Louisiana North   */
#define PE_PCS_NAD_1983_LA_S    26982 /* NAD 1983 SPCS Zone Louisiana South   */
#define PE_PCS_NAD_1983_ME_E    26983 /* NAD 1983 SPCS Zone Maine East        */
#define PE_PCS_NAD_1983_ME_W    26984 /* NAD 1983 SPCS Zone Maine West        */
#define PE_PCS_NAD_1983_MD      26985 /* NAD 1983 SPCS Zone Maryland          */
#define PE_PCS_NAD_1983_MA_M    26986 /* NAD 1983 SPCS Zone Mass. Mainland    */
#define PE_PCS_NAD_1983_MA_I    26987 /* NAD 1983 SPCS Zone Mass. Island      */
#define PE_PCS_NAD_1983_MI_N    26988 /* NAD 1983 SPCS Zone Michigan North    */
#define PE_PCS_NAD_1983_MI_C    26989 /* NAD 1983 SPCS Zone Michigan Central  */
#define PE_PCS_NAD_1983_MI_S    26990 /* NAD 1983 SPCS Zone Michigan South    */
#define PE_PCS_NAD_1983_MN_N    26991 /* NAD 1983 SPCS Zone Minnesota North   */
#define PE_PCS_NAD_1983_MN_C    26992 /* NAD 1983 SPCS Zone Minnesota Central */
#define PE_PCS_NAD_1983_MN_S    26993 /* NAD 1983 SPCS Zone Minnesota South   */
#define PE_PCS_NAD_1983_MS_E    26994 /* NAD 1983 SPCS Zone Mississippi East  */
#define PE_PCS_NAD_1983_MS_W    26995 /* NAD 1983 SPCS Zone Mississippi West  */
#define PE_PCS_NAD_1983_MO_E    26996 /* NAD 1983 SPCS Zone Missouri East     */
#define PE_PCS_NAD_1983_MO_C    26997 /* NAD 1983 SPCS Zone Missouri Central  */
#define PE_PCS_NAD_1983_MO_W    26998 /* NAD 1983 SPCS Zone Missouri West     */
#define PE_PCS_NAD_1983_MT      32100 /* NAD 1983 SPCS Zone Montana           */
#define PE_PCS_NAD_1983_NE      32104 /* NAD 1983 SPCS Zone Nebraska          */
#define PE_PCS_NAD_1983_NV_E    32107 /* NAD 1983 SPCS Zone Nevada East       */
#define PE_PCS_NAD_1983_NV_C    32108 /* NAD 1983 SPCS Zone Nevada Central    */
#define PE_PCS_NAD_1983_NV_W    32109 /* NAD 1983 SPCS Zone Nevada West       */
#define PE_PCS_NAD_1983_NH      32110 /* NAD 1983 SPCS Zone New Hampshire     */
#define PE_PCS_NAD_1983_NJ      32111 /* NAD 1983 SPCS Zone New Jersey        */
#define PE_PCS_NAD_1983_NM_E    32112 /* NAD 1983 SPCS Zone New Mexico East   */
#define PE_PCS_NAD_1983_NM_C    32113 /* NAD 1983 SPCS Zone New Mexico Cent.  */
#define PE_PCS_NAD_1983_NM_W    32114 /* NAD 1983 SPCS Zone New Mexico West   */
#define PE_PCS_NAD_1983_NY_E    32115 /* NAD 1983 SPCS Zone New York East     */
#define PE_PCS_NAD_1983_NY_C    32116 /* NAD 1983 SPCS Zone New York Central  */
#define PE_PCS_NAD_1983_NY_W    32117 /* NAD 1983 SPCS Zone New York West     */
#define PE_PCS_NAD_1983_NY_LI   32118 /* NAD 1983 SPCS Zone NY Long Island    */
#define PE_PCS_NAD_1983_NC      32119 /* NAD 1983 SPCS Zone North Carolina    */
#define PE_PCS_NAD_1983_ND_N    32120 /* NAD 1983 SPCS Zone North Dakota N    */
#define PE_PCS_NAD_1983_ND_S    32121 /* NAD 1983 SPCS Zone North Dakota S    */
#define PE_PCS_NAD_1983_OH_N    32122 /* NAD 1983 SPCS Zone Ohio North        */
#define PE_PCS_NAD_1983_OH_S    32123 /* NAD 1983 SPCS Zone Ohio South        */
#define PE_PCS_NAD_1983_OK_N    32124 /* NAD 1983 SPCS Zone Oklahoma North    */
#define PE_PCS_NAD_1983_OK_S    32125 /* NAD 1983 SPCS Zone Oklahoma South    */
#define PE_PCS_NAD_1983_OR_N    32126 /* NAD 1983 SPCS Zone Oregon North      */
#define PE_PCS_NAD_1983_OR_S    32127 /* NAD 1983 SPCS Zone Oregon South      */
#define PE_PCS_NAD_1983_PA_N    32128 /* NAD 1983 SPCS Zone Pennsylvania N    */
#define PE_PCS_NAD_1983_PA_S    32129 /* NAD 1983 SPCS Zone Pennsylvania S    */
#define PE_PCS_NAD_1983_RI      32130 /* NAD 1983 SPCS Zone Rhode Island      */
#define PE_PCS_NAD_1983_SC      32133 /* NAD 1983 SPCS Zone South Carolina    */
#define PE_PCS_NAD_1983_SD_N    32134 /* NAD 1983 SPCS Zone South Dakota N    */
#define PE_PCS_NAD_1983_SD_S    32135 /* NAD 1983 SPCS Zone South Dakota S    */
#define PE_PCS_NAD_1983_TN      32136 /* NAD 1983 SPCS Zone Tennessee         */
#define PE_PCS_NAD_1983_TX_N    32137 /* NAD 1983 SPCS Zone Texas North       */
#define PE_PCS_NAD_1983_TX_NC   32138 /* NAD 1983 SPCS Zone Texas North Cent. */
#define PE_PCS_NAD_1983_TX_C    32139 /* NAD 1983 SPCS Zone Texas Central     */
#define PE_PCS_NAD_1983_TX_SC   32140 /* NAD 1983 SPCS Zone Texas South Cent. */
#define PE_PCS_NAD_1983_TX_S    32141 /* NAD 1983 SPCS Zone Texas South       */
#define PE_PCS_NAD_1983_UT_N    32142 /* NAD 1983 SPCS Zone Utah North        */
#define PE_PCS_NAD_1983_UT_C    32143 /* NAD 1983 SPCS Zone Utah Central      */
#define PE_PCS_NAD_1983_UT_S    32144 /* NAD 1983 SPCS Zone Utah South        */
#define PE_PCS_NAD_1983_VT      32145 /* NAD 1983 SPCS Zone Vermont           */
#define PE_PCS_NAD_1983_VA_N    32146 /* NAD 1983 SPCS Zone Virginia North    */
#define PE_PCS_NAD_1983_VA_S    32147 /* NAD 1983 SPCS Zone Virginia South    */
#define PE_PCS_NAD_1983_WA_N    32148 /* NAD 1983 SPCS Zone Washington North  */
#define PE_PCS_NAD_1983_WA_S    32149 /* NAD 1983 SPCS Zone Washington South  */
#define PE_PCS_NAD_1983_WV_N    32150 /* NAD 1983 SPCS Zone West Virginia N   */
#define PE_PCS_NAD_1983_WV_S    32151 /* NAD 1983 SPCS Zone West Virginia S   */
#define PE_PCS_NAD_1983_WI_N    32152 /* NAD 1983 SPCS Zone Wisconsin North   */
#define PE_PCS_NAD_1983_WI_C    32153 /* NAD 1983 SPCS Zone Wisconsin Central */
#define PE_PCS_NAD_1983_WI_S    32154 /* NAD 1983 SPCS Zone Wisconsin South   */
#define PE_PCS_NAD_1983_WY_E    32155 /* NAD 1983 SPCS Zone Wyoming I East    */
#define PE_PCS_NAD_1983_WY_EC   32156 /* NAD 1983 SPCS Zone Wyoming II EC     */
#define PE_PCS_NAD_1983_WY_WC   32157 /* NAD 1983 SPCS Zone Wyoming III WC    */
#define PE_PCS_NAD_1983_WY_W    32158 /* NAD 1983 SPCS Zone Wyoming IV West   */
#define PE_PCS_NAD_1983_PR_VI   32161 /* NAD 1983 SPCS Zone PR & St. Croix    */
#define PE_PCS_NAD_1983_GU      (32161+33000) /* NAD 1983 SPCS Zone Guam      */

#define PE_PCS_ADINDAN_UTM_37N         20137 /* Adindan UTM Zone 37N          */
#define PE_PCS_ADINDAN_UTM_38N         20138 /* Adindan UTM Zone 38N          */
#define PE_PCS_AFGOOYE_UTM_38N         20538 /* Afgooye UTM Zone 38N          */
#define PE_PCS_AFGOOYE_UTM_39N         20539 /* Afgooye UTM Zone 39N          */
#define PE_PCS_AIN_EL_ABD_UTM_37N      20437 /* Ain el Abd 1970 UTM Zone 37N  */
#define PE_PCS_AIN_EL_ABD_UTM_38N      20438 /* Ain el Abd 1970 UTM Zone 38N  */
#define PE_PCS_AIN_EL_ABD_UTM_39N      20439 /* Ain el Abd 1970 UTM Zone 39N  */
#define PE_PCS_ARATU_UTM_22S           20822 /* Aratu UTM Zone 22S            */
#define PE_PCS_ARATU_UTM_23S           20823 /* Aratu UTM Zone 23S            */
#define PE_PCS_ARATU_UTM_24S           20824 /* Aratu UTM Zone 24S            */
#define PE_PCS_BATAVIA_UTM_48S         21148 /* Batavia UTM Zone 48S          */
#define PE_PCS_BATAVIA_UTM_49S         21149 /* Batavia UTM Zone 49S          */
#define PE_PCS_BATAVIA_UTM_50S         21150 /* Batavia UTM Zone 50S          */
#define PE_PCS_BOGOTA_UTM_17N          21817 /* Bogota UTM Zone 17N           */
#define PE_PCS_BOGOTA_UTM_18N          21818 /* Bogota UTM Zone 18N           */
#define PE_PCS_CAMACUPA_UTM_32S        22032 /* Camacupa UTM Zone 32S         */
#define PE_PCS_CAMACUPA_UTM_33S        22033 /* Camacupa UTM Zone 33S         */
#define PE_PCS_CARTHAGE_UTM_32N        22332 /* Carthage UTM Zone 32N         */
#define PE_PCS_CORREGO_ALEGRE_UTM_23S  22523 /* Corrego Alegre UTM Zone 23S   */
#define PE_PCS_CORREGO_ALEGRE_UTM_24S  22524 /* Corrego Alegre UTM Zone 24S   */
#define PE_PCS_DATUM_73_UTM_ZONE_29N   27429 /* Datum 73 UTM Zone 29N         */
#define PE_PCS_DOUALA_UTM_32N          22832 /* Douala UTM Zone 32N           */
#define PE_PCS_FAHUD_UTM_39N           23239 /* Fahud UTM Zone 39N            */
#define PE_PCS_FAHUD_UTM_40N           23240 /* Fahud UTM Zone 40N            */
#define PE_PCS_GAROUA_UTM_33N          23433 /* Garoua UTM Zone 33N           */
#define PE_PCS_GGRS_1987_GREEK_GRID    2100  /* Greek Grid                    */
#define PE_PCS_ID_1974_UTM_46N         23846 /* Indonesia 1974 UTM Zone 46N   */
#define PE_PCS_ID_1974_UTM_47N         23847 /* Indonesia 1974 UTM Zone 47N   */
#define PE_PCS_ID_1974_UTM_48N         23848 /* Indonesia 1974 UTM Zone 48N   */
#define PE_PCS_ID_1974_UTM_49N         23849 /* Indonesia 1974 UTM Zone 49N   */
#define PE_PCS_ID_1974_UTM_50N         23850 /* Indonesia 1974 UTM Zone 50N   */
#define PE_PCS_ID_1974_UTM_51N         23851 /* Indonesia 1974 UTM Zone 51N   */
#define PE_PCS_ID_1974_UTM_52N         23852 /* Indonesia 1974 UTM Zone 52N   */
#define PE_PCS_ID_1974_UTM_53N         23853 /* Indonesia 1974 UTM Zone 53N   */
#define PE_PCS_ID_1974_UTM_46S         23886 /* Indonesia 1974 UTM Zone 46S   */
#define PE_PCS_ID_1974_UTM_47S         23887 /* Indonesia 1974 UTM Zone 47S   */
#define PE_PCS_ID_1974_UTM_48S         23888 /* Indonesia 1974 UTM Zone 48S   */
#define PE_PCS_ID_1974_UTM_49S         23889 /* Indonesia 1974 UTM Zone 49S   */
#define PE_PCS_ID_1974_UTM_50S         23890 /* Indonesia 1974 UTM Zone 50S   */
#define PE_PCS_ID_1974_UTM_51S         23891 /* Indonesia 1974 UTM Zone 51S   */
#define PE_PCS_ID_1974_UTM_52S         23892 /* Indonesia 1974 UTM Zone 52S   */
#define PE_PCS_ID_1974_UTM_53S         23893 /* Indonesia 1974 UTM Zone 53S   */
#define PE_PCS_ID_1974_UTM_54S         23894 /* Indonesia 1974 UTM Zone 54S   */
#define PE_PCS_INDIAN_1954_UTM_47N     23947 /* Indian 1954 UTM Zone 47N      */
#define PE_PCS_INDIAN_1954_UTM_48N     23948 /* Indian 1954 UTM Zone 48N      */
#define PE_PCS_INDIAN_1975_UTM_47N     24047 /* Indian 1975 UTM Zone 47N      */
#define PE_PCS_INDIAN_1975_UTM_48N     24048 /* Indian 1975 UTM Zone 48N      */
#define PE_PCS_KERTAU_UTM_47N          24547 /* Kertau UTM Zone 47N           */
#define PE_PCS_KERTAU_UTM_48N          24548 /* Kertau UTM Zone 48N           */
#define PE_PCS_LA_CANOA_UTM_18N        24718 /* La Canoa UTM Zone 18N         */
#define PE_PCS_LA_CANOA_UTM_19N        24719 /* La Canoa UTM Zone 19N         */
#define PE_PCS_LA_CANOA_UTM_20N        24720 /* La Canoa UTM Zone 20N         */
#define PE_PCS_LA_CANOA_UTM_21N        24721 /* La Canoa UTM Zone 21N         */
#define PE_PCS_LOME_UTM_31N            25231 /* Lome UTM Zone 31N             */
#define PE_PCS_MPORALOKO_UTM_32N       26632 /* M'poraloko UTM Zone 32N       */
#define PE_PCS_MPORALOKO_UTM_32S       26692 /* M'poraloko UTM Zone 32S       */
#define PE_PCS_MALONGO_1987_UTM_32S    25932 /* Malongo 1987 UTM Zone 32S     */
#define PE_PCS_MASSAWA_UTM_37N         26237 /* Massawa UTM Zone 37N          */
#define PE_PCS_MHAST_UTM_32S           26432 /* Mhast UTM Zone 32S            */
#define PE_PCS_MINNA_UTM_31N           26331 /* Minna UTM Zone 31N            */
#define PE_PCS_MINNA_UTM_32N           26332 /* Minna UTM Zone 32N            */
#define PE_PCS_NAHRWAN_1967_UTM_38N    27038 /* Nahrwan 1967 UTM Zone 38N     */
#define PE_PCS_NAHRWAN_1967_UTM_39N    27039 /* Nahrwan 1967 UTM Zone 39N     */
#define PE_PCS_NAHRWAN_1967_UTM_40N    27040 /* Nahrwan 1967 UTM Zone 40N     */
#define PE_PCS_NGN_UTM_38N             31838 /* NGN UTM Zone 38N              */
#define PE_PCS_NGN_UTM_39N             31839 /* NGN UTM Zone 39N              */
#define PE_PCS_NORD_SAHARA_UTM_29N     30729 /* Nord Sahara 1959 UTM Zone 29N */
#define PE_PCS_NORD_SAHARA_UTM_30N     30730 /* Nord Sahara 1959 UTM Zone 30N */
#define PE_PCS_NORD_SAHARA_UTM_31N     30731 /* Nord Sahara 1959 UTM Zone 31N */
#define PE_PCS_NORD_SAHARA_UTM_32N     30732 /* Nord Sahara 1959 UTM Zone 32N */
#define PE_PCS_NAPARIMA_1972_UTM_20N   27120 /* Naparima 1972 UTM Zone 20N    */
#define PE_PCS_POINTE_NOIRE_UTM_32S    28232 /* Pointe Noire UTM Zone 32S     */
#define PE_PCS_PSAD_1956_UTM_18N   24818 /* Prov. S. Amer. Datum UTM Zone 18N */
#define PE_PCS_PSAD_1956_UTM_19N   24819 /* Prov. S. Amer. Datum UTM Zone 19N */
#define PE_PCS_PSAD_1956_UTM_20N   24820 /* Prov. S. Amer. Datum UTM Zone 20N */
#define PE_PCS_PSAD_1956_UTM_21N   24821 /* Prov. S. Amer. Datum UTM Zone 21N */
#define PE_PCS_PSAD_1956_UTM_17S   24877 /* Prov. S. Amer. Datum UTM Zone 17S */
#define PE_PCS_PSAD_1956_UTM_18S   24878 /* Prov. S. Amer. Datum UTM Zone 18S */
#define PE_PCS_PSAD_1956_UTM_19S   24879 /* Prov. S. Amer. Datum UTM Zone 19S */
#define PE_PCS_PSAD_1956_UTM_20S   24880 /* Prov. S. Amer. Datum UTM Zone 20S */
#define PE_PCS_PSAD_1956_UTM_22S   24882 /* Prov. S. Amer. Datum UTM zone 22S */
#define PE_PCS_SAPPER_HILL_UTM_20S     29220 /* Sapper Hill 1943 UTM Zone 20S */
#define PE_PCS_SAPPER_HILL_UTM_21S     29221 /* Sapper Hill 1943 UTM Zone 21S */
#define PE_PCS_SCHWARZECK_UTM_33S      29333 /* Schwarzeck UTM Zone 33S       */
#define PE_PCS_SUDAN_UTM_35N           29635 /* Sudan UTM Zone 35N            */
#define PE_PCS_SUDAN_UTM_36N           29636 /* Sudan UTM Zone 36N            */
#define PE_PCS_TANANARIVE_UTM_38S      29738 /* Tananarive 1925 UTM Zone 38S  */
#define PE_PCS_TANANARIVE_UTM_39S      29739 /* Tananarive 1925 UTM Zone 39S  */
#define PE_PCS_TC_1948_UTM_39N       30339 /* Trucial Coast 1948 UTM Zone 39N */
#define PE_PCS_TC_1948_UTM_40N       30340 /* Trucial Coast 1948 UTM Zone 40N */
#define PE_PCS_TIMBALAI_1948_UTM_49N   29849 /* Timbalai 1948 UTM Zone 49N    */
#define PE_PCS_TIMBALAI_1948_UTM_50N   29850 /* Timbalai 1948 UTM Zone 50N    */
#define PE_PCS_YOFF_1972_UTM_28N       31028 /* Yoff 1972 UTM Zone 28N        */
#define PE_PCS_ZANDERIJ_1972_UTM_21N   31121 /* Zanderij 1972 UTM Zone 21N    */

#define PE_PCS_ATS_1977_NEW_BRUNSWICK 2200 /* ATS 1977 New Brunswick Stereographic */
#define PE_PCS_ATS_1977_PRINCE_EDWARD_ISLAND 2290 /* ATS 1977 Prince Edward   */
                                                  /*  Island Stereographic    */
#define PE_PCS_ATS_1977_MTM_4_NS      2294 /* ATS 1977 MTM zone 4 Nova Scotia */
#define PE_PCS_ATS_1977_MTM_5_NS      2295 /* ATS 1977 MTM zone 5 Nova Scotia */

#define PE_PCS_NAD_1983_CSRS98_NEW_BRUNSWICK  2036 /* NAD 1983 CSRS98 New     */
                                                   /*  Brunswick Sterographic */
#define PE_PCS_NAD_1983_CSRS98_UTM_19N  2037 /* NAD 1983 CSRS98 UTM Zone 19N  */
#define PE_PCS_NAD_1983_CSRS98_UTM_20N  2038 /* NAD 1983 CSRS98 UTM Zone 20N  */

#define PE_PCS_AMERSFOORT_RD_OLD       28991 /* Amersfoort RD Old,Netherlands */
#define PE_PCS_AMERSFOORT_RD_NEW       28992 /* Amersfoort RD New,Netherlands */

#define PE_PCS_KUDAMS_KTM                 31900 /* Kuwait Utility KTM         */
#define PE_PCS_LUZON_PHILIPPINES_I        25391 /* Philippines Zone I         */
#define PE_PCS_LUZON_PHILIPPINES_II       25392 /* Philippines Zone II        */
#define PE_PCS_LUZON_PHILIPPINES_III      25393 /* Philippines Zone III       */
#define PE_PCS_LUZON_PHILIPPINES_IV       25394 /* Philippines Zone IV        */
#define PE_PCS_LUZON_PHILIPPINES_V        25395 /* Philippines Zone V         */
#define PE_PCS_MGI_FERRO_AUSTRIA_WEST     31291 /* Austria (Ferro) West Zone  */
#define PE_PCS_MGI_FERRO_AUSTRIA_CENTRAL  31292 /* Austria (Ferro) Cent. Zone */
#define PE_PCS_MGI_FERRO_AUSTRIA_EAST     31293 /* Austria (Ferro) East Zone  */
#define PE_PCS_MONTE_MARIO_ITALY_1  102091 /* Monte Mario (Greenwich) Italy 1 */
#define PE_PCS_MONTE_MARIO_ITALY_2  102092 /* Monte Mario (Greenwich) Italy 2 */
#define PE_PCS_MONTE_MARIO_ROME_ITALY_1   26591 /* Monte Mario (Rome) Italy 1 */
#define PE_PCS_MONTE_MARIO_ROME_ITALY_2   26592 /* Monte Mario (Rome) Italy 2 */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_1    22191 /* Argentina Zone 1           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_2    22192 /* Argentina Zone 2           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_3    22193 /* Argentina Zone 3           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_4    22194 /* Argentina Zone 4           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_5    22195 /* Argentina Zone 5           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_6    22196 /* Argentina Zone 6           */
#define PE_PCS_C_INCHAUSPE_ARGENTINA_7    22197 /* Argentina Zone 7           */
#define PE_PCS_DHDN_GERMANY_1             31491 /* Germany Zone 1             */
#define PE_PCS_DHDN_GERMANY_2             31492 /* Germany Zone 2             */
#define PE_PCS_DHDN_GERMANY_3             31493 /* Germany Zone 3             */
#define PE_PCS_DHDN_GERMANY_4             31494 /* Germany Zone 4             */
#define PE_PCS_DHDN_GERMANY_5             31495 /* Germany Zone 5             */
#define PE_PCS_AIN_EL_ABD_BAHRAIN_GRID    20499 /* Bahrain State Grid         */
#define PE_PCS_BOGOTA_COLOMBIA_WEST       21891 /* Colombia West Zone         */
#define PE_PCS_BOGOTA_COLOMBIA_BOGOTA     21892 /* Colombia Bogota Zone       */
#define PE_PCS_BOGOTA_COLOMBIA_E_CENTRAL  21893 /* Colombia E Central Zone    */
#define PE_PCS_BOGOTA_COLOMBIA_EAST       21894 /* Colombia East Zone         */
#define PE_PCS_EGYPT_BLUE_BELT            22991 /* Egypt 1907 Blue Belt       */
#define PE_PCS_EGYPT_RED_BELT             22992 /* Egypt Red Belt             */
#define PE_PCS_EGYPT_PURPLE_BELT          22993 /* Egypt Purple Belt          */
#define PE_PCS_EGYPT_EXT_PURPLE_BELT      22994 /* Egypt Extended Purple Belt */
#define PE_PCS_LEIGON_GHANA_GRID          25000 /* Ghana Metre Grid           */
#define PE_PCS_TM65_IRISH_GRID            29900 /* Irish National Grid        */
#define PE_PCS_NZGD_1949_NEW_ZEALAND_MAP_GRID  27200 /* New Zealand Map Grid  */
#define PE_PCS_NZGD_1949_NORTH_ISLAND     27291 /* New Zealand North Island   */
#define PE_PCS_NZGD_1949_SOUTH_ISLAND     27292 /* New Zealand South Island   */
#define PE_PCS_MINNA_NIGERIA_WEST_BELT    26391 /* Nigeria West Belt          */
#define PE_PCS_MINNA_NIGERIA_MID_BELT     26392 /* Nigeria Mid Belt           */
#define PE_PCS_MINNA_NIGERIA_EAST_BELT    26393 /* Nigeria East Belt          */
#define PE_PCS_PSAD_1956_PERU_WEST        24891 /* Peru West Zone             */
#define PE_PCS_PSAD_1956_PERU_CENTRAL     24892 /* Peru Central Zone          */
#define PE_PCS_PSAD_1956_PERU_EAST        24893 /* Peru East Zone             */
#define PE_PCS_LISBON_PORTUGUESE_GRID     20790 /* Portuguese National Grid   */
#define PE_PCS_QATAR_GRID                 28600 /* Qatar National Grid        */
#define PE_PCS_OSGB_1936_BRITISH_GRID     27700 /* British National Grid      */
#define PE_PCS_RT38_STOCKHOLM_SWEDISH_GRID  30800 /* Swedish National Grid    */

#define PE_PCS_VOIROL_N_ALGERIE_ANCIENNE  30491 /* Nord Algerie ancienne      */
#define PE_PCS_VOIROL_S_ALGERIE_ANCIENNE  30492 /* Nord Algerie ancienne      */
#define PE_PCS_VOIROL_UNIFIE_N_ALGERIE    30591 /* Nord Algerie               */
#define PE_PCS_VOIROL_UNIFIE_S_ALGERIE    30592 /* Nord Algerie               */
#define PE_PCS_ATF_NORD_DE_GUERRE         27500 /* Nord de Guerre             */

#define PE_PCS_NTF_FRANCE_I               27581 /* France I                   */
#define PE_PCS_NTF_FRANCE_II              27582 /* France II                  */
#define PE_PCS_NTF_FRANCE_III             27583 /* France III                 */
#define PE_PCS_NTF_FRANCE_IV              27584 /* France IV                  */

#define PE_PCS_NTF_FRANCE_I_DEG          102581 /* NTF France I   (degrees)   */
#define PE_PCS_NTF_FRANCE_II_DEG         102582 /* NTF France II  (degrees)   */
#define PE_PCS_NTF_FRANCE_III_DEG        102583 /* NTF France III (degrees)   */
#define PE_PCS_NTF_FRANCE_IV_DEG         102584 /* NTF France IV  (degrees)   */

#define PE_PCS_NTF_NORD_FRANCE            27591 /* Nord France                */
#define PE_PCS_NTF_CENTRE_FRANCE          27592 /* Centre France              */
#define PE_PCS_NTF_SUD_FRANCE             27593 /* Sud France                 */
#define PE_PCS_NTF_CORSE                  27594 /* Corse                      */

#define PE_PCS_KALIANPUR_1880_INDIA_0     24370 /* Kalianpur 1880 India Zone 0   */
#define PE_PCS_KALIANPUR_1880_INDIA_I     24371 /* Kalianpur 1880 India Zone I   */
#define PE_PCS_KALIANPUR_1880_INDIA_IIA   24372 /* Kalianpur 1880 India Zone IIa */
#define PE_PCS_KALIANPUR_1880_INDIA_IIB   24382 /* Kalianpur 1880 India Zone IIb */
#define PE_PCS_KALIANPUR_1880_INDIA_III   24373 /* Kalianpur 1880 India Zone III */
#define PE_PCS_KALIANPUR_1880_INDIA_IV    24374 /* Kalianpur 1880 India Zone IV  */
#define PE_PCS_KALIANPUR_1937_INDIA_IIB   24375 /* Kalianpur 1937 India Zone IIb */
#define PE_PCS_KALIANPUR_1962_INDIA_I     24376 /* Kalianpur 1962 India Zone I   */
#define PE_PCS_KALIANPUR_1962_INDIA_IIA   24377 /* Kalianpur 1962 India Zone IIa */
#define PE_PCS_KALIANPUR_1975_INDIA_I     24378 /* Kalianpur 1975 India Zone I   */
#define PE_PCS_KALIANPUR_1975_INDIA_IIA   24379 /* Kalianpur 1975 India Zone IIa */
#define PE_PCS_KALIANPUR_1975_INDIA_IIB   24380 /* Kalianpur 1975 India Zone IIb */
#define PE_PCS_KALIANPUR_1975_INDIA_III   24381 /* Kalianpur 1975 India Zone III */
#define PE_PCS_KALIANPUR_1975_INDIA_IV    24383 /* Kalianpur 1975 India Zone IV  */
#define PE_PCS_KALIANPUR_1937_UTM_45N     24305 /* Kalianpur 1937 Zone 45N    */
#define PE_PCS_KALIANPUR_1937_UTM_46N     24306 /* Kalianpur 1937 Zone 46N    */
#define PE_PCS_KALIANPUR_1962_UTM_41N     24311 /* Kalianpur 1962 Zone 41N    */
#define PE_PCS_KALIANPUR_1962_UTM_42N     24312 /* Kalianpur 1962 Zone 42N    */
#define PE_PCS_KALIANPUR_1962_UTM_43N     24313 /* Kalianpur 1962 Zone 43N    */
#define PE_PCS_KALIANPUR_1975_UTM_42N     24342 /* Kalianpur 1975 Zone 42N    */
#define PE_PCS_KALIANPUR_1975_UTM_43N     24343 /* Kalianpur 1975 Zone 43N    */
#define PE_PCS_KALIANPUR_1975_UTM_44N     24344 /* Kalianpur 1975 Zone 44N    */
#define PE_PCS_KALIANPUR_1975_UTM_45N     24345 /* Kalianpur 1975 Zone 45N    */
#define PE_PCS_KALIANPUR_1975_UTM_46N     24346 /* Kalianpur 1975 Zone 46N    */
#define PE_PCS_KALIANPUR_1975_UTM_47N     24347 /* Kalianpur 1975 Zone 47N    */
#define PE_PCS_JAMAICA_1875_OLD_GRID      24100 /* Jamaica 1875 Old Grid      */
#define PE_PCS_JAD_1969_JAMAICA_GRID      24200 /* Jamaica Grid               */
#define PE_PCS_MERCHICH_NORD_MAROC        26191 /* Nord Maroc                 */
#define PE_PCS_MERCHICH_SUD_MAROC         26192 /* Sud Maroc                  */
#define PE_PCS_MERCHICH_SAHARA            26193 /* Sahara                     */
#define PE_PCS_CARTHAGE_NORD_TUNISIE      22391 /* Nord Tunisie               */
#define PE_PCS_CARTHAGE_SUD_TUNISIE       22392 /* Sud Tunisie                */
#define PE_PCS_KOC_LAMBERT                24600 /* Kuwait Oil Co - Lambert    */
#define PE_PCS_BELGE_LAMBERT_1950         21500 /* Belge Lambert 1950         */
#define PE_PCS_BELGE_LAMBERT_1972        103300 /* Belge Lambert 1972         */
#define PE_PCS_DEALUL_PISCULUI_1933_STEREO_33  31600 /* Stereo 1933           */
#define PE_PCS_DEALUL_PISCULUI_1970_STEREO_70  31700 /* Stereo 1970           */

#define PE_PCS_WGS_1984_UPS_NORTH   32661 /* Universal Polar Stereographic NP */
#define PE_PCS_WGS_1984_UPS_SOUTH   32761 /* Universal Polar Stereographic SP */

#define PE_PCS_WGS_1984_TM_36_SE    32766 /* WGS 84 TM 36 SE - Mozambique     */

#define PE_PCS_NAD_1983_MTM_1       32181 /* NAD 1983 MTM Zone 1    Canada    */
#define PE_PCS_NAD_1983_MTM_2       32182 /* NAD 1983 MTM Zone 2    Canada    */
#define PE_PCS_NAD_1983_MTM_2_SCOPQ 32180 /* NAD 1983 SCoPQ Zone 2  Quebec    */
#define PE_PCS_NAD_1983_MTM_3       32183 /* NAD 1983 MTM Zone 3    Canada    */
#define PE_PCS_NAD_1983_MTM_4       32184 /* NAD 1983 MTM Zone 4    Canada    */
#define PE_PCS_NAD_1983_MTM_5       32185 /* NAD 1983 MTM Zone 5    Canada    */
#define PE_PCS_NAD_1983_MTM_6       32186 /* NAD 1983 MTM Zone 6    Canada    */
#define PE_PCS_NAD_1983_MTM_7       32187 /* NAD 1983 MTM Zone 7    Canada    */
#define PE_PCS_NAD_1983_MTM_8       32188 /* NAD 1983 MTM Zone 8    Canada    */
#define PE_PCS_NAD_1983_MTM_9       32189 /* NAD 1983 MTM Zone 9    Canada    */
#define PE_PCS_NAD_1983_MTM_10      32190 /* NAD 1983 MTM Zone 10   Canada    */
#define PE_PCS_NAD_1983_MTM_11      32191 /* NAD 1983 MTM Zone 11   Canada    */
#define PE_PCS_NAD_1983_MTM_12      32192 /* NAD 1983 MTM Zone 12   Canada    */
#define PE_PCS_NAD_1983_MTM_13      32193 /* NAD 1983 MTM Zone 13   Canada    */
#define PE_PCS_NAD_1983_MTM_14      32194 /* NAD 1983 MTM Zone 14   Canada    */
#define PE_PCS_NAD_1983_MTM_15      32195 /* NAD 1983 MTM Zone 15   Canada    */
#define PE_PCS_NAD_1983_MTM_16      32196 /* NAD 1983 MTM Zone 16   Canada    */
#define PE_PCS_NAD_1983_MTM_17      32197 /* NAD 1983 MTM Zone 17   Canada    */

#define PE_PCS_NAD_1927_MTM_1   32081 /* NAD 1927 MTM Zone 1  - Newfoundland  */
#define PE_PCS_NAD_1927_MTM_2   32082 /* NAD 1927 MTM Zone 2  - Newfoundland  */
#define PE_PCS_NAD_1927_MTM_3   32083 /* NAD 1927 MTM Zone 3  - Newfoundland  */
#define PE_PCS_NAD_1927_MTM_4   32084 /* NAD 1927 MTM Zone 4  - Newfoundland  */
#define PE_PCS_NAD_1927_MTM_5   32085 /* NAD 1927 MTM Zone 5  - Newfoundland  */
#define PE_PCS_NAD_1927_MTM_6   32086 /* NAD 1927 MTM Zone 6  - Newfoundland  */

#define PE_PCS_NAD_1983_QUEBEC_LAMBERT  32198 /* NAD 1983 Quebec Lambert      */

#define PE_PCS_RT90_25_GON_W     2400 /* RT 1990 2.5 gon W Sweden             */

#define PE_PCS_KERTAU_SINGAPORE_GRID    24500 /* Kertau Singapore grid        */

#define PE_PCS_CAMACUPA_TM_11_30_SE 22091 /* Camacupa TM 11 30 SE             */
#define PE_PCS_CAMACUPA_TM_12_SE    22092 /* Camacupa TM 12 SE                */
#define PE_PCS_ED_1950_TM_0_N       23090 /* ED 1950 TM 0 N                   */
#define PE_PCS_ED_1950_TM_5_NE      23095 /* ED 1950 TM 5 NE                  */
#define PE_PCS_FD_1958_IRAQ          3200 /* Final Datum 1958 Iraq            */
#define PE_PCS_INDIAN_1960_TM_106NE  3176 /* Indian 1960 TM 106NE             */
#define PE_PCS_INDIAN_1960_UTM_48N   3148 /* Indian 1960 UTM Zone 48N         */
#define PE_PCS_INDIAN_1960_UTM_49N   3149 /* Indian 1960 UTM Zone 49N         */
#define PE_PCS_LIETUVOS_KOORDINACIU_SISTEMA 2600 /* LKS1994                   */
#define PE_PCS_MOZNET_UTM_36S        3036 /* Moznet UTM Zone 36S              */
#define PE_PCS_MOZNET_UTM_37S        3037 /* Moznet UTM Zone 37S              */
#define PE_PCS_SAMBOJA_UTM_50S       2550 /* Samboja UTM zone 50S             */
#define PE_PCS_TETE_UTM_36S          2736 /* Tete UTM Zone 36S                */
#define PE_PCS_TETE_UTM_37S          2737 /* Tete UTM Zone 37S                */

#define PE_PCS_OLD_HAWAIIAN_HI_1    3561 /* Old Hawaiian State Plane Hawaii 1 */
#define PE_PCS_OLD_HAWAIIAN_HI_2    3562 /* Old Hawaiian State Plane Hawaii 2 */
#define PE_PCS_OLD_HAWAIIAN_HI_3    3563 /* Old Hawaiian State Plane Hawaii 3 */
#define PE_PCS_OLD_HAWAIIAN_HI_4    3564 /* Old Hawaiian State Plane Hawaii 4 */
#define PE_PCS_OLD_HAWAIIAN_HI_5    3565 /* Old Hawaiian State Plane Hawaii 5 */

#define PE_PCS_TOKYO_JAPAN_1    30161 /* Tokyo Japan Zone 1                   */
#define PE_PCS_TOKYO_JAPAN_2    30162 /* Tokyo Japan Zone 2                   */
#define PE_PCS_TOKYO_JAPAN_3    30163 /* Tokyo Japan Zone 3                   */
#define PE_PCS_TOKYO_JAPAN_4    30164 /* Tokyo Japan Zone 4                   */
#define PE_PCS_TOKYO_JAPAN_5    30165 /* Tokyo Japan Zone 5                   */
#define PE_PCS_TOKYO_JAPAN_6    30166 /* Tokyo Japan Zone 6                   */
#define PE_PCS_TOKYO_JAPAN_7    30167 /* Tokyo Japan Zone 7                   */
#define PE_PCS_TOKYO_JAPAN_8    30168 /* Tokyo Japan Zone 8                   */
#define PE_PCS_TOKYO_JAPAN_9    30169 /* Tokyo Japan Zone 9                   */
#define PE_PCS_TOKYO_JAPAN_10   30170 /* Tokyo Japan Zone 10                  */
#define PE_PCS_TOKYO_JAPAN_11   30171 /* Tokyo Japan Zone 11                  */
#define PE_PCS_TOKYO_JAPAN_12   30172 /* Tokyo Japan Zone 12                  */
#define PE_PCS_TOKYO_JAPAN_13   30173 /* Tokyo Japan Zone 13                  */
#define PE_PCS_TOKYO_JAPAN_14   30174 /* Tokyo Japan Zone 14                  */
#define PE_PCS_TOKYO_JAPAN_15   30175 /* Tokyo Japan Zone 15                  */
#define PE_PCS_TOKYO_JAPAN_16   30176 /* Tokyo Japan Zone 16                  */
#define PE_PCS_TOKYO_JAPAN_17   30177 /* Tokyo Japan Zone 17                  */
#define PE_PCS_TOKYO_JAPAN_18   30178 /* Tokyo Japan Zone 18                  */
#define PE_PCS_TOKYO_JAPAN_19   30179 /* Tokyo Japan Zone 19                  */

#define PE_PCS_PUERTO_RICO_PR     3991 /* Puerto Rico State Plane Puerto Rico */
#define PE_PCS_PUERTO_RICO_VI     3992 /* Puerto Rico State Plane St. Croix   */

#define PE_PCS_ESTONIAN_COORDINATE_SYSTEM_1992 3300 /* Estonian Coordinate System of 1992 */
#define PE_PCS_PALESTINE_1923_PALESTINE_GRID  28191 /* Palestine 1923 Palestine Grid */
#define PE_PCS_SAD_1969_BRAZIL_POLYCONIC      29100 /* SAD 1969 Brazil Polyconic */

#define PE_PCS_PDO_1993_UTM_39N          3439 /* PDO 1993 UTM zone 39N        */
#define PE_PCS_PDO_1993_UTM_40N          3440 /* PDO 1993 UTM zone 40N        */
#define PE_PCS_PUERTO_RICO_UTM_20N       3920 /* Puerto Rico UTM zone 20N     */
#define PE_PCS_PALESTINE_1923_PALESTINE_BELT 28192 /* Palestine 1923 Palestine Belt */
#define PE_PCS_ETRF_1989_TM_BALTIC_1993 25884 /* ETRF89 TM Baltic 1993        */

#define PE_PCS_ISRAEL_ISRAEL_TM_GRID     2039 /* Israel Israel TM Grid        */
#define PE_PCS_PALESTINE_1923_ISRAEL_CS_GRID  28193 /* Palestine 1923 Israel CS Grid */

#define PE_PCS_ED_1950_ED77_UTM_38N      2058 /* ED 1950 (ED77) UTM 38N       */
#define PE_PCS_ED_1950_ED77_UTM_39N      2059 /* ED 1950 (ED77) UTM 39N       */
#define PE_PCS_ED_1950_ED77_UTM_40N      2060 /* ED 1950 (ED77) UTM 40N       */
#define PE_PCS_ED_1950_ED77_UTM_41N      2061 /* ED 1950 (ED77) UTM 41N       */

#define PE_PCS_ABIDJAN_1987_UTM_29N      2043 /* Abidjan 1987 UTM 29N         */
#define PE_PCS_ABIDJAN_1987_UTM_30N      2041 /* Abidjan 1987 UTM 30N         */
#define PE_PCS_LOCODJO_1965_UTM_29N      2042 /* Locodjo 1965 UTM 29N         */
#define PE_PCS_LOCODJO_1965_UTM_30N      2040 /* Locodjo 1965 UTM 30N         */

#define PE_PCS_HANOI_1972_GK_18       2044 /* Hanoi 1972 Gauss-Kruger zone 18 */
#define PE_PCS_HANOI_1972_GK_19       2045 /* Hanoi 1972 Gauss-Kruger zone 19 */

#define PE_PCS_NGO_1948_OSLO_NORWAY_1   27391 /* NGO 1948 Oslo Norway zone 1  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_2   27392 /* NGO 1948 Oslo Norway zone 2  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_3   27393 /* NGO 1948 Oslo Norway zone 3  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_4   27394 /* NGO 1948 Oslo Norway zone 4  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_5   27395 /* NGO 1948 Oslo Norway zone 5  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_6   27396 /* NGO 1948 Oslo Norway zone 6  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_7   27397 /* NGO 1948 Oslo Norway zone 7  */
#define PE_PCS_NGO_1948_OSLO_NORWAY_8   27398 /* NGO 1948 Oslo Norway zone 8  */

#define PE_PCS_DEIR_EZ_ZOR_LEVANT       22700 /* Deir ez Zor Levant Zone      */
#define PE_PCS_DEIR_EZ_ZOR_SYRIA        22770 /* Deir ez Zor Syria Lambert    */

#define PE_PCS_MGI_M28                  31294 /* MGI Austria M28 Zone         */
#define PE_PCS_MGI_M31                  31295 /* MGI Austria M31 Zone         */
#define PE_PCS_MGI_M34                  31296 /* MGI Austria M34 Zone         */
#define PE_PCS_MGI_AUSTRIA_LAMBERT      31297 /* MGI Austria Lambert          */

#define PE_PCS_NAD_1927_GUATEMALA_NORTE 32061 /* NAD 1927 Guatemala Norte     */
#define PE_PCS_NAD_1927_GUATEMALA_SUR   32062 /* NAD 1927 Guatemala Sur       */

#define PE_PCS_TRINIDAD_1903_TRINIDAD_GRID    30200 /* Trinidad 1903 Trinidad Grid */
#define PE_PCS_BARBADOS_1938_BRITISH_W_INDIES 21291 /* Barbados 1938 British W Indies Grid   */
#define PE_PCS_BARBADOS_1938_BARBADOS_GRID    21292 /* Barbados 1938 Barbados Grid           */

#define PE_PCS_ANGUILLA_1957_BRITISH_W_INDIES   2000 /* Anguilla 1957 British W Indies Grid   */
#define PE_PCS_ANTIGUA_1943_BRITISH_W_INDIES    2001 /* Antigua 1943 British W Indies Grid    */
#define PE_PCS_DOMINICA_1945_BRITISH_W_INDIES   2002 /* Dominica 1945 British W Indies Grid   */
#define PE_PCS_GRENADA_1953_BRITISH_W_INDIES    2003 /* Grenada 1953 British W Indies Grid    */
#define PE_PCS_MONTSERRAT_1958_BRITISH_W_INDIES 2004 /* Montserrat 1958 British W Indies Grid */
#define PE_PCS_ST_KITTS_1955_BRITISH_W_INDIES   2005 /* St Kitts 1955 British W Indies Grid   */
#define PE_PCS_ST_LUCIA_1955_BRITISH_W_INDIES   2006 /* St Lucia 1955 British W Indies Grid   */
#define PE_PCS_ST_VINCENT_1945_BRITISH_W_INDIES 2007 /* St Vincent 1945 British W Indies Grid */

#define PE_PCS_NAD_1927_CGQ77_MTM_2_SCOPQ  2008 /* NAD 1927 SCoPQ Zone 2       */
#define PE_PCS_NAD_1927_CGQ77_MTM_3_SCOPQ  2009 /* NAD 1927 SCoPQ Zone 3       */
#define PE_PCS_NAD_1927_CGQ77_MTM_4_SCOPQ  2010 /* NAD 1927 SCoPQ Zone 4       */
#define PE_PCS_NAD_1927_CGQ77_MTM_5_SCOPQ  2011 /* NAD 1927 SCoPQ Zone 5       */
#define PE_PCS_NAD_1927_CGQ77_MTM_6_SCOPQ  2012 /* NAD 1927 SCoPQ Zone 6       */
#define PE_PCS_NAD_1927_CGQ77_MTM_7_SCOPQ  2013 /* NAD 1927 SCoPQ Zone 7       */
#define PE_PCS_NAD_1927_CGQ77_MTM_8_SCOPQ  2014 /* NAD 1927 SCoPQ Zone 8       */
#define PE_PCS_NAD_1927_CGQ77_MTM_9_SCOPQ  2015 /* NAD 1927 SCoPQ Zone 9       */
#define PE_PCS_NAD_1927_CGQ77_MTM_10_SCOPQ 2016 /* NAD 1927 SCoPQ Zone 10      */
#define PE_PCS_NAD_1927_DEF_1976_MTM_8     2017 /* NAD 1927 (1976) MTM Zone 8  */
#define PE_PCS_NAD_1927_DEF_1976_MTM_9     2018 /* NAD 1927 (1976) MTM Zone 9  */
#define PE_PCS_NAD_1927_DEF_1976_MTM_10    2019 /* NAD 1927 (1976) MTM Zone 10 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_11    2020 /* NAD 1927 (1976) MTM Zone 11 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_12    2021 /* NAD 1927 (1976) MTM Zone 12 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_13    2022 /* NAD 1927 (1976) MTM Zone 13 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_14    2023 /* NAD 1927 (1976) MTM Zone 14 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_15    2024 /* NAD 1927 (1976) MTM Zone 15 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_16    2025 /* NAD 1927 (1976) MTM Zone 16 */
#define PE_PCS_NAD_1927_DEF_1976_MTM_17    2026 /* NAD 1927 (1976) MTM Zone 17 */
#define PE_PCS_NAD_1927_DEF_1976_UTM_15N   2027 /* NAD 1927 (1976) UTM Zone 15 */
#define PE_PCS_NAD_1927_DEF_1976_UTM_16N   2028 /* NAD 1927 (1976) UTM Zone 16 */
#define PE_PCS_NAD_1927_DEF_1976_UTM_17N   2029 /* NAD 1927 (1976) UTM Zone 17 */
#define PE_PCS_NAD_1927_DEF_1976_UTM_18N   2030 /* NAD 1927 (1976) UTM Zone 18 */
#define PE_PCS_NAD_1927_CGQ77_UTM_17N      2031 /* NAD 1927 (CGQ77) UTM Zone 17*/
#define PE_PCS_NAD_1927_CGQ77_UTM_18N      2032 /* NAD 1927 (CGQ77) UTM Zone 18*/
#define PE_PCS_NAD_1927_CGQ77_UTM_19N      2033 /* NAD 1927 (CGQ77) UTM Zone 19*/
#define PE_PCS_NAD_1927_CGQ77_UTM_20N      2034 /* NAD 1927 (CGQ77) UTM Zone 20*/
#define PE_PCS_NAD_1927_CGQ77_UTM_21N      2035 /* NAD 1927 (CGQ77) UTM Zone 21*/

#define PE_PCS_MADRID_1870_MADRID_SPAIN    2062 /* Madrid 1870 (Madrid) Spain  */

#define PE_PCS_HUNGARIAN_1972_EOV  23700 /* Hungarian 1972 Egyseges Orszagos Vetuleti */

#define PE_PCS_CH1903_LV03                21781 /* CH1903 LV03  (Swiss, Liech) */
#define PE_PCS_CH1903_PLUS_LV95            2056 /* CH1903+ LV95 (Swiss, Liech) */

#define PE_PCS_S_JTSK_FERRO_KROVAK         2065 /* S-JTSK (Ferro) Krovak       */
#define PE_PCS_S_JTSK_KROVAK             102065 /* S-JTSK Krovak               */
#define PE_PCS_S_JTSK_FERRO_KROVAK_EN    102066 /* S-JTSK (Ferro) Krovak EastNorth XY */
#define PE_PCS_S_JTSK_KROVAK_EN          102067 /* S-JTSK Krovak EastNorth XY  */

#define PE_PCS_NAD_1983_CANADA_ALBERS        102001 /* NAD 1983 Albers Canada */
#define PE_PCS_NAD_1983_CANADA_LAMBERT       102002 /* NAD 1983 Lambert Canada */
#define PE_PCS_NAD_1983_USA_ALBERS           102003 /* NAD 1983 Albers contiguous USA */
#define PE_PCS_NAD_1983_USA_LAMBERT          102004 /* NAD 1983 Lambert contiguous USA */
#define PE_PCS_NAD_1983_USA_EQUI_CONIC       102005 /* NAD 1983 Equidistant Conic contiguous USA */
#define PE_PCS_NAD_1983_ALASKA_ALBERS        102006 /* NAD 1983 Albers Alaska */
#define PE_PCS_NAD_1983_HAWAII_ALBERS        102007 /* NAD 1983 Albers Hawaii */
#define PE_PCS_NAD_1983_N_AMERICA_ALBERS     102008 /* NAD 1983 Albers North America */
#define PE_PCS_NAD_1983_N_AMERICA_LAMBERT    102009 /* NAD 1983 Lambert North America */
#define PE_PCS_NAD_1983_N_AMERICA_EQUI_CONIC 102010 /* NAD 1983 Equidistant Conic North America */
#define PE_PCS_WGS_1984_AFRICA_SINUSOIDAL    102011 /* WGS 1984 Sinusoidal Africa */
#define PE_PCS_WGS_1984_ASIA_LAMBERT         102012 /* WGS 1984 Lambert Asia  */
#define PE_PCS_ED_1950_EUROPE_ALBERS         102013 /* ED 1950 Albers Europe  */
#define PE_PCS_ED_1950_EUROPE_LAMBERT        102014 /* ED 1950 Lambert Europe */
#define PE_PCS_SAD_1969_S_AMERICA_LAMBERT    102015 /* SAD 1969 Lambert South America */
#define PE_PCS_WGS_1984_N_POLE_AZI_EQUI      102016 /* WGS 1984 Azimuthal Equidistant North Pole */
#define PE_PCS_WGS_1984_N_POLE_LAMBERT_AZI_EQAREA 102017
                                                    /* WGS 1984 Lambert Azimuthal EqArea North Pole */
#define PE_PCS_WGS_1984_N_POLE_STEREOGRAPHIC 102018 /* WGS 1984 Stereographic North Pole */
#define PE_PCS_WGS_1984_S_POLE_AZI_EQUI      102019 /* WGS 1984 Azimuthal Equidistant South Pole */
#define PE_PCS_WGS_1984_S_POLE_LAMBERT_AZI_EQAREA 102020
                                                    /* WGS 1984 Lambert Azimuthal EqArea South Pole */
#define PE_PCS_WGS_1984_S_POLE_STEREOGRAPHIC 102021 /* WGS 1984 Stereographic South Pole */

#define PE_PCS_WGS_1984_AFRICA_ALBERS        102022 /* WGS 1984 Albers for Africa */
#define PE_PCS_WGS_1984_AFRICA_EQUI_CONIC    102023 /* WGS 1984 Equidistant Conic for Africa */
#define PE_PCS_WGS_1984_AFRICA_LAMBERT       102024 /* WGS 1984 Lambert for Africa */
#define PE_PCS_WGS_1984_ASIA_NORTH_ALBERS    102025 /* WGS 1984 Albers for Northern Asia */
#define PE_PCS_WGS_1984_ASIA_NORTH_EQUI_CONIC 102026 /* WGS 1984 Equidistant Conic for Northern Asia */
#define PE_PCS_WGS_1984_ASIA_NORTH_LAMBERT   102027 /* WGS 1984 Lambert for Northern Asia */
#define PE_PCS_WGS_1984_ASIA_SOUTH_ALBERS    102028 /* WGS 1984 Albers for Southern Asia */
#define PE_PCS_WGS_1984_ASIA_SOUTH_EQUI_CONIC 102029 /* WGS 1984 Equidistant Conic for Southern Asia */
#define PE_PCS_WGS_1984_ASIA_SOUTH_LAMBERT   102030 /* WGS 1984 Lambert for Southern Asia */

#define PE_PCS_ED_1950_EUROPE_EQUI_CONIC     102031 /* ED 1950 Equidistant Conic for Europe */
#define PE_PCS_SAD_1969_S_AMERICA_EQUI_CONIC 102032 /* SAD 1969 Equidistant Conic for South America */
#define PE_PCS_SAD_1969_S_AMERICA_ALBERS     102033 /* SAD 1969 Albers for South America */

#define PE_PCS_NGO_1948_NORWAY_1   102101 /* NGO 1948 Norway zone 1           */
#define PE_PCS_NGO_1948_NORWAY_2   102102 /* NGO 1948 Norway zone 2           */
#define PE_PCS_NGO_1948_NORWAY_3   102103 /* NGO 1948 Norway zone 3           */
#define PE_PCS_NGO_1948_NORWAY_4   102104 /* NGO 1948 Norway zone 4           */
#define PE_PCS_NGO_1948_NORWAY_5   102105 /* NGO 1948 Norway zone 5           */
#define PE_PCS_NGO_1948_NORWAY_6   102106 /* NGO 1948 Norway zone 6           */
#define PE_PCS_NGO_1948_NORWAY_7   102107 /* NGO 1948 Norway zone 7           */
#define PE_PCS_NGO_1948_NORWAY_8   102108 /* NGO 1948 Norway zone 8           */

#define PE_PCS_RGF_1993_LAMBERT_93 102110 /* RGF Lambert-93                   */

#define PE_PCS_OLD_HAWAIIAN_UTM_4N 102114 /* Old Hawaiian UTM zone 4N         */
#define PE_PCS_OLD_HAWAIIAN_UTM_5N 102115 /* Old Hawaiian UTM zone 5N         */

#define PE_PCS_NAD_1927_MICHIGAN_GEOREF 102120 /* NAD 1927 Michigan GeoRef    */
#define PE_PCS_NAD_1983_MICHIGAN_GEOREF 102121 /* NAD 1983 Michigan GeoRef    */
#define PE_PCS_NAD_1927_MICHIGAN_GEOREF_M 102122 /* NAD 1927 Michigan GeoRef (Meters) */
#define PE_PCS_NAD_1983_MICHIGAN_GEOREF_M 102123 /* NAD 1983 Michigan GeoRef (Meters) */

#define PE_PCS_NGO_1948_UTM_32N    102132 /* NGO 1948 UTM zone 32N            */
#define PE_PCS_NGO_1948_UTM_33N    102133 /* NGO 1948 UTM zone 33N            */
#define PE_PCS_NGO_1948_UTM_34N    102134 /* NGO 1948 UTM zone 34N            */
#define PE_PCS_NGO_1948_UTM_35N    102135 /* NGO 1948 UTM zone 35N            */

#define PE_PCS_HONG_KONG_1980_GRID     102140 /* Hong Kong 1980 Grid          */
#define PE_PCS_HONG_KONG_1980_UTM_49N  102141 /* Hong Kong 1980 UTM 49N       */
#define PE_PCS_HONG_KONG_1980_UTM_50N  102142 /* Hong Kong 1980 UTM 50N       */

#define PE_PCS_TOKYO_UTM_51N       102151 /* Tokyo UTM Zone 51N               */
#define PE_PCS_TOKYO_UTM_52N       102152 /* Tokyo UTM Zone 52N               */
#define PE_PCS_TOKYO_UTM_53N       102153 /* Tokyo UTM Zone 53N               */
#define PE_PCS_TOKYO_UTM_54N       102154 /* Tokyo UTM Zone 54N               */
#define PE_PCS_TOKYO_UTM_55N       102155 /* Tokyo UTM Zone 55N               */
#define PE_PCS_TOKYO_UTM_56N       102156 /* Tokyo UTM Zone 56N               */

#define PE_PCS_DATUM_73_HAYFORD_GAUSS_IGEOE 102160 /* Datum 73 Hayford Gauss IGeoE  */
#define PE_PCS_DATUM_73_HAYFORD_GAUSS_IPCC  102161 /* Datum 73 Hayford Gauss IPCC   */
#define PE_PCS_GRACIOSA_1948_UTM_26N        102162 /* Graciosa Base SW 1948 UTM Zone 26N */
#define PE_PCS_LISBOA_BESSEL_BONNE          102163 /* Lisboa Bessel Bonne           */
#define PE_PCS_LISBOA_HAYFORD_GAUSS_IGEOE   102164 /* Lisboa Hayford Gauss IGeoE    */
#define PE_PCS_LISBOA_HAYFORD_GAUSS_IPCC    102165 /* Lisboa Hayford Gauss IPCC     */
#define PE_PCS_OBSERV_METEOR_1939_UTM_25N   102166 /* Observ Meteorologico 1939 UTM Zone 25N */
#define PE_PCS_PORTO_SANTO_1936_UTM_28N     102167 /* Porto Santo 1936 UTM Zone 28N */
#define PE_PCS_SAO_BRAZ_UTM_26N             102168 /* Sao Braz UTM Zone 26N         */
#define PE_PCS_SELVAGEM_GRANDE_1938_UTM_28N 102169 /* Selvagem Grande 1938 UTM Zone 28N */

#define PE_PCS_MERCHICH_DEGREE_NORD_MAROC 102191 /*Merchich(degrees) Nord Maroc*/
#define PE_PCS_MERCHICH_DEGREE_SUD_MAROC  102192 /*Merchich(degrees) Sud Maroc*/
#define PE_PCS_MERCHICH_DEGREE_SAHARA     102193 /* Merchich(degrees) Sahara  */

#define PE_PCS_NAD_1983_HARN_AL_E   102229 /* NAD 1983 HARN SPCS Alabama East      */
#define PE_PCS_NAD_1983_HARN_AL_W   102230 /* NAD 1983 HARN SPCS Alabama West      */
#define PE_PCS_NAD_1983_HARN_AZ_E   102248 /* NAD 1983 HARN SPCS Arizona East      */
#define PE_PCS_NAD_1983_HARN_AZ_C   102249 /* NAD 1983 HARN SPCS Arizona Central   */
#define PE_PCS_NAD_1983_HARN_AZ_W   102250 /* NAD 1983 HARN SPCS Arizona West      */
#define PE_PCS_NAD_1983_HARN_AR_N   102251 /* NAD 1983 HARN Zone Arkansas North    */
#define PE_PCS_NAD_1983_HARN_AR_S   102252 /* NAD 1983 HARN Zone Arkansas South    */
#define PE_PCS_NAD_1983_HARN_CA_I   102241 /* NAD 1983 HARN SPCS California I      */
#define PE_PCS_NAD_1983_HARN_CA_II  102242 /* NAD 1983 HARN SPCS California II     */
#define PE_PCS_NAD_1983_HARN_CA_III 102243 /* NAD 1983 HARN SPCS California III    */
#define PE_PCS_NAD_1983_HARN_CA_IV  102244 /* NAD 1983 HARN SPCS California IV     */
#define PE_PCS_NAD_1983_HARN_CA_V   102245 /* NAD 1983 HARN SPCS California V      */
#define PE_PCS_NAD_1983_HARN_CA_VI  102246 /* NAD 1983 HARN SPCS California VI     */
#define PE_PCS_NAD_1983_HARN_CO_N   102253 /* NAD 1983 HARN SPCS Colorado North    */
#define PE_PCS_NAD_1983_HARN_CO_C   102254 /* NAD 1983 HARN SPCS Colorado Central  */
#define PE_PCS_NAD_1983_HARN_CO_S   102255 /* NAD 1983 HARN SPCS Colorado South    */
#define PE_PCS_NAD_1983_HARN_CT     102256 /* NAD 1983 HARN SPCS Connecticut       */
#define PE_PCS_NAD_1983_HARN_DE     102257 /* NAD 1983 HARN SPCS Delaware          */
#define PE_PCS_NAD_1983_HARN_FL_E   102258 /* NAD 1983 HARN SPCS Florida East      */
#define PE_PCS_NAD_1983_HARN_FL_W   102259 /* NAD 1983 HARN SPCS Florida West      */
#define PE_PCS_NAD_1983_HARN_FL_N   102260 /* NAD 1983 HARN SPCS Florida North     */
#define PE_PCS_NAD_1983_HARN_GA_E   102266 /* NAD 1983 HARN SPCS Georgia East      */
#define PE_PCS_NAD_1983_HARN_GA_W   102267 /* NAD 1983 HARN SPCS Georgia West      */
#define PE_PCS_NAD_1983_HARN_HI_1   102261 /* NAD 1983 HARN SPCS Hawaii Zone 1     */
#define PE_PCS_NAD_1983_HARN_HI_2   102262 /* NAD 1983 HARN SPCS Hawaii Zone 2     */
#define PE_PCS_NAD_1983_HARN_HI_3   102263 /* NAD 1983 HARN SPCS Hawaii Zone 3     */
#define PE_PCS_NAD_1983_HARN_HI_4   102264 /* NAD 1983 HARN SPCS Hawaii Zone 4     */
#define PE_PCS_NAD_1983_HARN_HI_5   102265 /* NAD 1983 HARN SPCS Hawaii Zone 5     */
#define PE_PCS_NAD_1983_HARN_ID_E   102268 /* NAD 1983 HARN SPCS Idaho East        */
#define PE_PCS_NAD_1983_HARN_ID_C   102269 /* NAD 1983 HARN SPCS Idaho Central     */
#define PE_PCS_NAD_1983_HARN_ID_W   102270 /* NAD 1983 HARN SPCS Idaho West        */
#define PE_PCS_NAD_1983_HARN_IL_E   102271 /* NAD 1983 SPCS Zone Illinois East     */
#define PE_PCS_NAD_1983_HARN_IL_W   102272 /* NAD 1983 SPCS Zone Illinois West     */
#define PE_PCS_NAD_1983_HARN_IN_E   102273 /* NAD 1983 SPCS Zone Indiana East      */
#define PE_PCS_NAD_1983_HARN_IN_W   102274 /* NAD 1983 SPCS Zone Indiana West      */
#define PE_PCS_NAD_1983_HARN_KS_N   102277 /* NAD 1983 HARN SPCS Kansas North      */
#define PE_PCS_NAD_1983_HARN_KS_S   102278 /* NAD 1983 HARN SPCS Kansas South      */
#define PE_PCS_NAD_1983_HARN_KY_N   102279 /* NAD 1983 HARN SPCS Kentucky North    */
#define PE_PCS_NAD_1983_HARN_KY_S   102280 /* NAD 1983 HARN SPCS Kentucky South    */
#define PE_PCS_NAD_1983_HARN_LA_N   102281 /* NAD 1983 HARN SPCS Louisiana North   */
#define PE_PCS_NAD_1983_HARN_LA_S   102282 /* NAD 1983 HARN SPCS Louisiana South   */
#define PE_PCS_NAD_1983_HARN_ME_E   102283 /* NAD 1983 HARN SPCS Maine East        */
#define PE_PCS_NAD_1983_HARN_ME_W   102284 /* NAD 1983 HARN SPCS Maine West        */
#define PE_PCS_NAD_1983_HARN_MD     102285 /* NAD 1983 HARN SPCS Maryland          */
#define PE_PCS_NAD_1983_HARN_MA_M   102286 /* NAD 1983 HARN SPCS Mass. Mainland    */
#define PE_PCS_NAD_1983_HARN_MA_I   102287 /* NAD 1983 HARN SPCS Mass. Island      */
#define PE_PCS_NAD_1983_HARN_MI_N   102288 /* NAD 1983 HARN SPCS Michigan North    */
#define PE_PCS_NAD_1983_HARN_MI_C   102289 /* NAD 1983 HARN SPCS Michigan Central  */
#define PE_PCS_NAD_1983_HARN_MI_S   102290 /* NAD 1983 HARN SPCS Michigan South    */
#define PE_PCS_NAD_1983_HARN_MN_N   102291 /* NAD 1983 SPCS Zone Minnesota North   */
#define PE_PCS_NAD_1983_HARN_MN_C   102292 /* NAD 1983 SPCS Zone Minnesota Central */
#define PE_PCS_NAD_1983_HARN_MN_S   102293 /* NAD 1983 SPCS Zone Minnesota South   */
#define PE_PCS_NAD_1983_HARN_MS_E   102294 /* NAD 1983 HARN SPCS Mississippi East  */
#define PE_PCS_NAD_1983_HARN_MS_W   102295 /* NAD 1983 HARN SPCS Mississippi West  */
#define PE_PCS_NAD_1983_HARN_MO_E   102296 /* NAD 1983 SPCS Zone Missouri East     */
#define PE_PCS_NAD_1983_HARN_MO_C   102297 /* NAD 1983 SPCS Zone Missouri Central  */
#define PE_PCS_NAD_1983_HARN_MO_W   102298 /* NAD 1983 SPCS Zone Missouri West     */
#define PE_PCS_NAD_1983_HARN_MT     102300 /* NAD 1983 HARN SPCS Montana           */
#define PE_PCS_NAD_1983_HARN_NE     102304 /* NAD 1983 HARN SPCS Nebraska          */
#define PE_PCS_NAD_1983_HARN_NV_E   102307 /* NAD 1983 HARN SPCS Nevada East       */
#define PE_PCS_NAD_1983_HARN_NV_C   102308 /* NAD 1983 HARN SPCS Nevada Central    */
#define PE_PCS_NAD_1983_HARN_NV_W   102309 /* NAD 1983 HARN SPCS Nevada West       */
#define PE_PCS_NAD_1983_HARN_NH     102310 /* NAD 1983 HARN SPCS New Hampshire     */
#define PE_PCS_NAD_1983_HARN_NJ     102311 /* NAD 1983 HARN SPCS New Jersey        */
#define PE_PCS_NAD_1983_HARN_NM_E   102312 /* NAD 1983 HARN SPCS New Mexico East   */
#define PE_PCS_NAD_1983_HARN_NM_C   102313 /* NAD 1983 HARN SPCS New Mexico Cent.  */
#define PE_PCS_NAD_1983_HARN_NM_W   102314 /* NAD 1983 HARN SPCS New Mexico West   */
#define PE_PCS_NAD_1983_HARN_NY_E   102315 /* NAD 1983 HARN SPCS New York East     */
#define PE_PCS_NAD_1983_HARN_NY_C   102316 /* NAD 1983 HARN SPCS New York Central  */
#define PE_PCS_NAD_1983_HARN_NY_W   102317 /* NAD 1983 HARN SPCS New York West     */
#define PE_PCS_NAD_1983_HARN_NY_LI  102318 /* NAD 1983 HARN SPCS NY Long Island    */
#define PE_PCS_NAD_1983_HARN_ND_N   102320 /* NAD 1983 HARN SPCS North Dakota N    */
#define PE_PCS_NAD_1983_HARN_ND_S   102321 /* NAD 1983 HARN SPCS North Dakota S    */
#define PE_PCS_NAD_1983_HARN_OH_N   102322 /* NAD 1983 HARN SPCS Ohio North        */
#define PE_PCS_NAD_1983_HARN_OH_S   102323 /* NAD 1983 HARN SPCS Ohio South        */
#define PE_PCS_NAD_1983_HARN_OK_N   102324 /* NAD 1983 HARN SPCS Oklahoma North    */
#define PE_PCS_NAD_1983_HARN_OK_S   102325 /* NAD 1983 HARN SPCS Oklahoma South    */
#define PE_PCS_NAD_1983_HARN_OR_N   102326 /* NAD 1983 HARN SPCS Oregon North      */
#define PE_PCS_NAD_1983_HARN_OR_S   102327 /* NAD 1983 HARN SPCS Oregon South      */
#define PE_PCS_NAD_1983_HARN_RI     102330 /* NAD 1983 HARN SPCS Rhode Island      */
#define PE_PCS_NAD_1983_HARN_SD_N   102334 /* NAD 1983 HARN SPCS South Dakota N    */
#define PE_PCS_NAD_1983_HARN_SD_S   102335 /* NAD 1983 HARN SPCS South Dakota S    */
#define PE_PCS_NAD_1983_HARN_TN     102336 /* NAD 1983 HARN SPCS Tennessee         */
#define PE_PCS_NAD_1983_HARN_TX_N   102337 /* NAD 1983 HARN SPCS Texas North       */
#define PE_PCS_NAD_1983_HARN_TX_NC  102338 /* NAD 1983 HARN SPCS Texas North Cent. */
#define PE_PCS_NAD_1983_HARN_TX_C   102339 /* NAD 1983 HARN SPCS Texas Central     */
#define PE_PCS_NAD_1983_HARN_TX_SC  102340 /* NAD 1983 HARN SPCS Texas South Cent. */
#define PE_PCS_NAD_1983_HARN_TX_S   102341 /* NAD 1983 HARN SPCS Texas South       */
#define PE_PCS_NAD_1983_HARN_UT_N   102342 /* NAD 1983 HARN SPCS Utah North        */
#define PE_PCS_NAD_1983_HARN_UT_C   102343 /* NAD 1983 HARN SPCS Utah Central      */
#define PE_PCS_NAD_1983_HARN_UT_S   102344 /* NAD 1983 HARN SPCS Utah South        */
#define PE_PCS_NAD_1983_HARN_VT     102345 /* NAD 1983 HARN SPCS Vermont           */
#define PE_PCS_NAD_1983_HARN_VA_N   102346 /* NAD 1983 HARN SPCS Virginia North    */
#define PE_PCS_NAD_1983_HARN_VA_S   102347 /* NAD 1983 HARN SPCS Virginia South    */
#define PE_PCS_NAD_1983_HARN_WA_N   102348 /* NAD 1983 HARN SPCS Washington North  */
#define PE_PCS_NAD_1983_HARN_WA_S   102349 /* NAD 1983 HARN SPCS Washington South  */
#define PE_PCS_NAD_1983_HARN_WV_N   102350 /* NAD 1983 HARN SPCS West Virginia N   */
#define PE_PCS_NAD_1983_HARN_WV_S   102351 /* NAD 1983 HARN SPCS West Virginia S   */
#define PE_PCS_NAD_1983_HARN_WI_N   102352 /* NAD 1983 HARN SPCS Wisconsin North   */
#define PE_PCS_NAD_1983_HARN_WI_C   102353 /* NAD 1983 HARN SPCS Wisconsin Central */
#define PE_PCS_NAD_1983_HARN_WI_S   102354 /* NAD 1983 HARN SPCS Wisconsin South   */
#define PE_PCS_NAD_1983_HARN_WY_E   102355 /* NAD 1983 HARN SPCS Wyoming I East    */
#define PE_PCS_NAD_1983_HARN_WY_EC  102356 /* NAD 1983 HARN SPCS Wyoming II EC     */
#define PE_PCS_NAD_1983_HARN_WY_WC  102357 /* NAD 1983 HARN SPCS Wyoming III WC    */
#define PE_PCS_NAD_1983_HARN_WY_W   102358 /* NAD 1983 HARN SPCS Wyoming IV West   */
#define PE_PCS_NAD_1983_HARN_PR_VI  102361 /* NAD 1983 HARN SPCS PR & St. Croix    */

#define PE_PCS_VOIROL_DEGREE_N_ALGERIE_ANCIENNE 102491 /* Voirol 1875 (degrees)   */
                                                       /* Nord Algerie Ancienne   */
#define PE_PCS_VOIROL_DEGREE_S_ALGERIE_ANCIENNE 102492 /* Voirol 1875 (degrees)   */
                                                       /* Sud Algerie Ancienne    */
#define PE_PCS_VOIROL_UNIFIE_DEGREE_N_ALGERIE   102591 /* Voirol Unifie (degrees) */
                                                       /* Nord Algerie            */
#define PE_PCS_VOIROL_UNIFIE_DEGREE_S_ALGERIE   102592 /* Voirol Unifie (degrees) */
                                                       /* Sud Algerie             */

/*       NAD 1983 State Plane Coordinate System (in US survey feet)               */

#define PE_PCS_NAD_1983_AL_E_FT   102629 /* NAD 1983 SPCS Alabama East (Feet)     */
#define PE_PCS_NAD_1983_AL_W_FT   102630 /* NAD 1983 SPCS Alabama West (Feet)     */
#define PE_PCS_NAD_1983_AK_1_FT   102631 /* NAD 1983 SPCS Alaska 1 (Feet)         */
#define PE_PCS_NAD_1983_AK_2_FT   102632 /* NAD 1983 SPCS Alaska 2 (Feet)         */
#define PE_PCS_NAD_1983_AK_3_FT   102633 /* NAD 1983 SPCS Alaska 3 (Feet)         */
#define PE_PCS_NAD_1983_AK_4_FT   102634 /* NAD 1983 SPCS Alaska 4 (Feet)         */
#define PE_PCS_NAD_1983_AK_5_FT   102635 /* NAD 1983 SPCS Alaska 5 (Feet)         */
#define PE_PCS_NAD_1983_AK_6_FT   102636 /* NAD 1983 SPCS Alaska 6 (Feet)         */
#define PE_PCS_NAD_1983_AK_7_FT   102637 /* NAD 1983 SPCS Alaska 7 (Feet)         */
#define PE_PCS_NAD_1983_AK_8_FT   102638 /* NAD 1983 SPCS Alaska 8 (Feet)         */
#define PE_PCS_NAD_1983_AK_9_FT   102639 /* NAD 1983 SPCS Alaska 9 (Feet)         */
#define PE_PCS_NAD_1983_AK_10_FT  102640 /* NAD 1983 SPCS Alaska 10 (Feet)        */
#define PE_PCS_NAD_1983_AZ_E_FT   102648 /* NAD 1983 SPCS Arizona East (Feet)     */
#define PE_PCS_NAD_1983_AZ_C_FT   102649 /* NAD 1983 SPCS Arizona Central (Feet)  */
#define PE_PCS_NAD_1983_AZ_W_FT   102650 /* NAD 1983 SPCS Arizona West (Feet)     */
#define PE_PCS_NAD_1983_AR_N_FT   102651 /* NAD 1983 SPCS Arkansas North (Feet)   */
#define PE_PCS_NAD_1983_AR_S_FT   102652 /* NAD 1983 SPCS Arkansas South (Feet)   */
#define PE_PCS_NAD_1983_CA_I_FT   102641 /* NAD 1983 SPCS California I (Feet)     */
#define PE_PCS_NAD_1983_CA_II_FT  102642 /* NAD 1983 SPCS California II (Feet)    */
#define PE_PCS_NAD_1983_CA_III_FT 102643 /* NAD 1983 SPCS California III (Feet)   */
#define PE_PCS_NAD_1983_CA_IV_FT  102644 /* NAD 1983 SPCS California IV (Feet)    */
#define PE_PCS_NAD_1983_CA_V_FT   102645 /* NAD 1983 SPCS California V (Feet)     */
#define PE_PCS_NAD_1983_CA_VI_FT  102646 /* NAD 1983 SPCS California VI (Feet)    */
#define PE_PCS_NAD_1983_CO_N_FT   102653 /* NAD 1983 SPCS Colorado North (Feet)   */
#define PE_PCS_NAD_1983_CO_C_FT   102654 /* NAD 1983 SPCS Colorado Central (Feet) */
#define PE_PCS_NAD_1983_CO_S_FT   102655 /* NAD 1983 SPCS Colorado South (Feet)   */
#define PE_PCS_NAD_1983_CT_FT     102656 /* NAD 1983 SPCS Connecticut (Feet)      */
#define PE_PCS_NAD_1983_DE_FT     102657 /* NAD 1983 SPCS Delaware (Feet)         */
#define PE_PCS_NAD_1983_FL_E_FT   102658 /* NAD 1983 SPCS Florida East (Feet)     */
#define PE_PCS_NAD_1983_FL_W_FT   102659 /* NAD 1983 SPCS Florida West (Feet)     */
#define PE_PCS_NAD_1983_FL_N_FT   102660 /* NAD 1983 SPCS Florida North (Feet)    */
#define PE_PCS_NAD_1983_GA_E_FT   102666 /* NAD 1983 SPCS Georgia East (Feet)     */
#define PE_PCS_NAD_1983_GA_W_FT   102667 /* NAD 1983 SPCS Georgia West (Feet)     */
#define PE_PCS_NAD_1983_HI_1_FT   102661 /* NAD 1983 SPCS Hawaii Zone 1 (Feet)    */
#define PE_PCS_NAD_1983_HI_2_FT   102662 /* NAD 1983 SPCS Hawaii Zone 2 (Feet)    */
#define PE_PCS_NAD_1983_HI_3_FT   102663 /* NAD 1983 SPCS Hawaii Zone 3 (Feet)    */
#define PE_PCS_NAD_1983_HI_4_FT   102664 /* NAD 1983 SPCS Hawaii Zone 4 (Feet)    */
#define PE_PCS_NAD_1983_HI_5_FT   102665 /* NAD 1983 SPCS Hawaii Zone 5 (Feet)    */
#define PE_PCS_NAD_1983_ID_E_FT   102668 /* NAD 1983 SPCS Idaho East (Feet)       */
#define PE_PCS_NAD_1983_ID_C_FT   102669 /* NAD 1983 SPCS Idaho Central (Feet)    */
#define PE_PCS_NAD_1983_ID_W_FT   102670 /* NAD 1983 SPCS Idaho West (Feet)       */
#define PE_PCS_NAD_1983_IL_E_FT   102671 /* NAD 1983 SPCS Illinois East (Feet)    */
#define PE_PCS_NAD_1983_IL_W_FT   102672 /* NAD 1983 SPCS Illinois West (Feet)    */
#define PE_PCS_NAD_1983_IN_E_FT   102673 /* NAD 1983 SPCS Indiana East (Feet)     */
#define PE_PCS_NAD_1983_IN_W_FT   102674 /* NAD 1983 SPCS Indiana West (Feet)     */
#define PE_PCS_NAD_1983_IA_N_FT   102675 /* NAD 1983 SPCS Iowa North (Feet)       */
#define PE_PCS_NAD_1983_IA_S_FT   102676 /* NAD 1983 SPCS Iowa South (Feet)       */
#define PE_PCS_NAD_1983_KS_N_FT   102677 /* NAD 1983 SPCS Kansas North (Feet)     */
#define PE_PCS_NAD_1983_KS_S_FT   102678 /* NAD 1983 SPCS Kansas South (Feet)     */
#define PE_PCS_NAD_1983_KY_N_FT   102679 /* NAD 1983 SPCS Kentucky North (Feet)   */
#define PE_PCS_NAD_1983_KY_S_FT   102680 /* NAD 1983 SPCS Kentucky South (Feet)   */
#define PE_PCS_NAD_1983_LA_N_FT   102681 /* NAD 1983 SPCS Louisiana North (Feet)  */
#define PE_PCS_NAD_1983_LA_S_FT   102682 /* NAD 1983 SPCS Louisiana South (Feet)  */
#define PE_PCS_NAD_1983_ME_E_FT   102683 /* NAD 1983 SPCS Maine East (Feet)       */
#define PE_PCS_NAD_1983_ME_W_FT   102684 /* NAD 1983 SPCS Maine West (Feet)       */
#define PE_PCS_NAD_1983_MD_FT     102685 /* NAD 1983 SPCS Maryland (Feet)         */
#define PE_PCS_NAD_1983_MA_M_FT   102686 /* NAD 1983 SPCS Mass. Mainland (Feet)   */
#define PE_PCS_NAD_1983_MA_I_FT   102687 /* NAD 1983 SPCS Mass. Island (Feet)     */
#define PE_PCS_NAD_1983_MI_N_FT   102688 /* NAD 1983 SPCS Michigan North (Feet)   */
#define PE_PCS_NAD_1983_MI_C_FT   102689 /* NAD 1983 SPCS Michigan Central (Feet) */
#define PE_PCS_NAD_1983_MI_S_FT   102690 /* NAD 1983 SPCS Michigan South (Feet)   */
#define PE_PCS_NAD_1983_MN_N_FT   102691 /* NAD 1983 SPCS Minnesota North (Feet)  */
#define PE_PCS_NAD_1983_MN_C_FT   102692 /* NAD 1983 SPCS Minnesota Central (Feet)*/
#define PE_PCS_NAD_1983_MN_S_FT   102693 /* NAD 1983 SPCS Minnesota South (Feet)  */
#define PE_PCS_NAD_1983_MS_E_FT   102694 /* NAD 1983 SPCS Mississippi East (Feet) */
#define PE_PCS_NAD_1983_MS_W_FT   102695 /* NAD 1983 SPCS Mississippi West (Feet) */
#define PE_PCS_NAD_1983_MO_E_FT   102696 /* NAD 1983 SPCS Missouri East (Feet)    */
#define PE_PCS_NAD_1983_MO_C_FT   102697 /* NAD 1983 SPCS Missouri Central (Feet) */
#define PE_PCS_NAD_1983_MO_W_FT   102698 /* NAD 1983 SPCS Missouri West (Feet)    */
#define PE_PCS_NAD_1983_MT_FT     102700 /* NAD 1983 SPCS Montana (Feet)          */
#define PE_PCS_NAD_1983_NE_FT     102704 /* NAD 1983 SPCS Nebraska (Feet)         */
#define PE_PCS_NAD_1983_NV_E_FT   102707 /* NAD 1983 SPCS Nevada East (Feet)      */
#define PE_PCS_NAD_1983_NV_C_FT   102708 /* NAD 1983 SPCS Nevada Central (Feet)   */
#define PE_PCS_NAD_1983_NV_W_FT   102709 /* NAD 1983 SPCS Nevada West (Feet)      */
#define PE_PCS_NAD_1983_NH_FT     102710 /* NAD 1983 SPCS New Hampshire (Feet)    */
#define PE_PCS_NAD_1983_NJ_FT     102711 /* NAD 1983 SPCS New Jersey (Feet)       */
#define PE_PCS_NAD_1983_NM_E_FT   102712 /* NAD 1983 SPCS New Mexico East (Feet)  */
#define PE_PCS_NAD_1983_NM_C_FT   102713 /* NAD 1983 SPCS New Mexico Cent. (Feet) */
#define PE_PCS_NAD_1983_NM_W_FT   102714 /* NAD 1983 SPCS New Mexico West (Feet)  */
#define PE_PCS_NAD_1983_NY_E_FT   102715 /* NAD 1983 SPCS New York East (Feet)    */
#define PE_PCS_NAD_1983_NY_C_FT   102716 /* NAD 1983 SPCS New York Central (Feet) */
#define PE_PCS_NAD_1983_NY_W_FT   102717 /* NAD 1983 SPCS New York West (Feet)    */
#define PE_PCS_NAD_1983_NY_LI_FT  102718 /* NAD 1983 SPCS NY Long Island (Feet)   */
#define PE_PCS_NAD_1983_NC_FT     102719 /* NAD 1983 SPCS North Carolina (Feet)   */
#define PE_PCS_NAD_1983_ND_N_FT   102720 /* NAD 1983 SPCS North Dakota N (Feet)   */
#define PE_PCS_NAD_1983_ND_S_FT   102721 /* NAD 1983 SPCS North Dakota S (Feet)   */
#define PE_PCS_NAD_1983_OH_N_FT   102722 /* NAD 1983 SPCS Ohio North (Feet)       */
#define PE_PCS_NAD_1983_OH_S_FT   102723 /* NAD 1983 SPCS Ohio South (Feet)       */
#define PE_PCS_NAD_1983_OK_N_FT   102724 /* NAD 1983 SPCS Oklahoma North (Feet)   */
#define PE_PCS_NAD_1983_OK_S_FT   102725 /* NAD 1983 SPCS Oklahoma South (Feet)   */
#define PE_PCS_NAD_1983_OR_N_FT   102726 /* NAD 1983 SPCS Oregon North (Feet)     */
#define PE_PCS_NAD_1983_OR_S_FT   102727 /* NAD 1983 SPCS Oregon South (Feet)     */
#define PE_PCS_NAD_1983_PA_N_FT   102728 /* NAD 1983 SPCS Pennsylvania N (Feet)   */
#define PE_PCS_NAD_1983_PA_S_FT   102729 /* NAD 1983 SPCS Pennsylvania S (Feet)   */
#define PE_PCS_NAD_1983_RI_FT     102730 /* NAD 1983 SPCS Rhode Island (Feet)     */
#define PE_PCS_NAD_1983_SC_FT     102733 /* NAD 1983 SPCS South Carolina (Feet)   */
#define PE_PCS_NAD_1983_SD_N_FT   102734 /* NAD 1983 SPCS South Dakota N (Feet)   */
#define PE_PCS_NAD_1983_SD_S_FT   102735 /* NAD 1983 SPCS South Dakota S (Feet)   */
#define PE_PCS_NAD_1983_TN_FT     102736 /* NAD 1983 SPCS Tennessee (Feet)        */
#define PE_PCS_NAD_1983_TX_N_FT   102737 /* NAD 1983 SPCS Texas North (Feet)      */
#define PE_PCS_NAD_1983_TX_NC_FT  102738 /* NAD 1983 SPCS Texas North Cent. (Feet)*/
#define PE_PCS_NAD_1983_TX_C_FT   102739 /* NAD 1983 SPCS Texas Central (Feet)    */
#define PE_PCS_NAD_1983_TX_SC_FT  102740 /* NAD 1983 SPCS Texas South Cent. (Feet)*/
#define PE_PCS_NAD_1983_TX_S_FT   102741 /* NAD 1983 SPCS Texas South (Feet)      */
#define PE_PCS_NAD_1983_UT_N_FT   102742 /* NAD 1983 SPCS Utah North (Feet)       */
#define PE_PCS_NAD_1983_UT_C_FT   102743 /* NAD 1983 SPCS Utah Central (Feet)     */
#define PE_PCS_NAD_1983_UT_S_FT   102744 /* NAD 1983 SPCS Utah South (Feet)       */
#define PE_PCS_NAD_1983_VT_FT     102745 /* NAD 1983 SPCS Vermont (Feet)          */
#define PE_PCS_NAD_1983_VA_N_FT   102746 /* NAD 1983 SPCS Virginia North (Feet)   */
#define PE_PCS_NAD_1983_VA_S_FT   102747 /* NAD 1983 SPCS Virginia South (Feet)   */
#define PE_PCS_NAD_1983_WA_N_FT   102748 /* NAD 1983 SPCS Washington North (Feet) */
#define PE_PCS_NAD_1983_WA_S_FT   102749 /* NAD 1983 SPCS Washington South (Feet) */
#define PE_PCS_NAD_1983_WV_N_FT   102750 /* NAD 1983 SPCS West Virginia N (Feet)  */
#define PE_PCS_NAD_1983_WV_S_FT   102751 /* NAD 1983 SPCS West Virginia S (Feet)  */
#define PE_PCS_NAD_1983_WI_N_FT   102752 /* NAD 1983 SPCS Wisconsin North (Feet)  */
#define PE_PCS_NAD_1983_WI_C_FT   102753 /* NAD 1983 SPCS Wisconsin Central (Feet)*/
#define PE_PCS_NAD_1983_WI_S_FT   102754 /* NAD 1983 SPCS Wisconsin South (Feet)  */
#define PE_PCS_NAD_1983_WY_E_FT   102755 /* NAD 1983 SPCS Wyoming I East (Feet)   */
#define PE_PCS_NAD_1983_WY_EC_FT  102756 /* NAD 1983 SPCS Wyoming II EC (Feet)    */
#define PE_PCS_NAD_1983_WY_WC_FT  102757 /* NAD 1983 SPCS Wyoming III WC (Feet)   */
#define PE_PCS_NAD_1983_WY_W_FT   102758 /* NAD 1983 SPCS Wyoming IV West (Feet)  */
#define PE_PCS_NAD_1983_PR_VI_FT  102761 /* NAD 1983 SPCS PR & St. Croix (Feet)   */
#define PE_PCS_NAD_1983_GU_FT     102766 /* NAD 1983 SPCS Guam (Feet)             */

/*----------------------------------------------------------------------------*/
/*                               M E T H O D S                                */
/*----------------------------------------------------------------------------*/
#define PE_MTH_LONGITUDE_ROTATION      9601 /* Longitude Rotation             */
#define PE_MTH_GEOCENTRIC_TRANSLATION  9603 /* Geocentric Translation (3-par.)*/
#define PE_MTH_MOLODENSKY              9604 /* Molodensky                     */
#define PE_MTH_MOLODENSKY_ABRIDGED     9605 /* Abridged Molodensky            */
#define PE_MTH_POSITION_VECTOR         9606 /* Position Vector (7-par.)       */
#define PE_MTH_COORDINATE_FRAME        9607 /* Coordinate Frame (7-par.)      */
#define PE_MTH_BURSA_WOLF            109607 /* Bursa-Wolf                     */
#define PE_MTH_NADCON                  9613 /* NADCON                         */
#define PE_MTH_NTV2                    9615 /* NTv2                           */
#define PE_MTH_HARN                  109613 /* HARN (HPGN)                    */

/*----------------------------------------------------------------------------*/
/*            G E O G R A P H I C   T R A N S F O R M A T I O N S             */
/*----------------------------------------------------------------------------*/
#define PE_GT_AMERSFOORT_TO_WGS_1984        8012 /* Netherlands               */
#define PE_GT_ETRF_1989_TO_WGS_1984         8049 /* Europe                    */
#define PE_GT_GDA_1994_TO_WGS_1984          8050 /* Australia                 */
#define PE_GT_ED_1987_TO_WGS_1984_1         8137 /* North Sea south of 62     */
                                                 /* deg N (UK,Denmark,Germany,*/
                                                 /* Norway) and Netherlands   */
                                                 /* (offshore)                */
#define PE_GT_ED_1950_TO_ED_1987_2          8138 /* Norway (offshore north of */
                                                 /* 65 deg N)                 */
#define PE_GT_WGS_1972_TO_WGS_1984_1        8140 /* World                     */
#define PE_GT_WGS_1972_TO_WGS_1984_2        8141 /* World                     */
#define PE_GT_AGD_1984_TO_WGS_1984_2        8139 /* Australia                 */

#define PE_GT_ADINDAN_TO_WGS_1984_1         8000 /* Mean for Ethiopia and     */
                                                 /* Sudan                     */
#define PE_GT_ADINDAN_TO_WGS_1984_2         8001 /* Burkina Faso              */
#define PE_GT_ADINDAN_TO_WGS_1984_3         8002 /* Cameroon                  */
#define PE_GT_ADINDAN_TO_WGS_1984_4         8003 /* Ethiopia                  */
#define PE_GT_ADINDAN_TO_WGS_1984_5         8004 /* Mali                      */
#define PE_GT_ADINDAN_TO_WGS_1984_6         8005 /* Senegal                   */
#define PE_GT_ADINDAN_TO_WGS_1984_7         8006 /* Sudan                     */
#define PE_GT_AFGOOYE_TO_WGS_1984           8007 /* Somalia                   */
#define PE_GT_AGD_1966_TO_WGS_1984          8008 /* Australia                 */
#define PE_GT_AGD_1984_TO_WGS_1984_1        8009 /* Australia                 */
#define PE_GT_AIN_EL_ABD_TO_WGS_1984_1      8010 /* Bahrain                   */
#define PE_GT_AIN_EL_ABD_TO_WGS_1984_2      8011 /* Saudi Arabia              */
#define PE_GT_ARC_1950_TO_WGS_1984_1        8013 /* Mean for Botswana, Malawi,*/
                                                 /* Swaziland, Zaire, Zambia, */
                                                 /* and Zimbabwe              */
#define PE_GT_ARC_1950_TO_WGS_1984_2        8014 /* Botswana                  */
#define PE_GT_ARC_1950_TO_WGS_1984_3        8015 /* Burundi                   */
#define PE_GT_ARC_1950_TO_WGS_1984_4        8016 /* Lesotho                   */
#define PE_GT_ARC_1950_TO_WGS_1984_5        8017 /* Malawi                    */
#define PE_GT_ARC_1950_TO_WGS_1984_6        8018 /* Swaziland                 */
#define PE_GT_ARC_1950_TO_WGS_1984_7        8019 /* Zaire                     */
#define PE_GT_ARC_1950_TO_WGS_1984_8        8020 /* Zambia                    */
#define PE_GT_ARC_1950_TO_WGS_1984_9        8021 /* Zimbabwe                  */
#define PE_GT_ARC_1960_TO_WGS_1984          8022 /* Mean for Kenya and        */
                                                 /* Tanzania                  */
#define PE_GT_BATAVIA_TO_WGS_1984           8023 /* Indonesia (Sumatra)       */
#define PE_GT_BERMUDA_1957_TO_WGS_1984      8024 /* Bermuda                   */
#define PE_GT_BOGOTA_TO_WGS_1984            8025 /* Columbia                  */
#define PE_GT_BUKIT_RIMPAH_TO_WGS_1984      8026 /* Indonesia (Bangka and     */
                                                 /* Belitung Islands          */
#define PE_GT_CAMPO_INCHAUSPE_TO_WGS_1984   8027 /* Argentina                 */
#define PE_GT_CAPE_TO_WGS_1984_1            8028 /* South Africa              */
#define PE_GT_CAPE_TO_WGS_1984_2            8029 /* South Africa              */
#define PE_GT_CARTHAGE_TO_WGS_1984          8030 /* Tunisia                   */
#define PE_GT_CHUA_TO_WGS_1984              8031 /* Paraguay                  */
#define PE_GT_CORREGO_ALEGRE_TO_WGS_1984    8032 /* Brazil                    */
#define PE_GT_ED_1950_TO_WGS_1984_1         8033 /* Mean for Austria, Belgium,*/
                                                 /* Denmark, Finland, France, */
                                                 /* Germany (West), Gibraltar,*/
                                                 /* Greece, Italy, Luxembourg,*/
                                                 /* Netherlands, Norway,      */
                                                 /* Spain, Sweden,            */
                                                 /* Switzerland, and Portugal */
#define PE_GT_ED_1950_TO_WGS_1984_2         8034 /* Mean for Austria, Denmark,*/
                                                 /* France, Germany (West),   */
                                                 /* Netherlands,              */
                                                 /* and Switzerland           */
#define PE_GT_ED_1950_TO_WGS_1984_3         8035 /* Mean for Iraq, Israel,    */
                                                 /* Jordan, Kuwait, Lebanon,  */
                                                 /* Saudi Arabia, and Syria   */
#define PE_GT_ED_1950_TO_WGS_1984_4         8036 /* Cyprus                    */
#define PE_GT_ED_1950_TO_WGS_1984_5         8037 /* Egypt                     */
#define PE_GT_ED_1950_TO_WGS_1984_6         8038 /* Ireland, United Kingdom   */
#define PE_GT_ED_1950_TO_WGS_1984_7         8039 /* Finland, Norway           */
#define PE_GT_ED_1950_TO_WGS_1984_8         8040 /* Greece                    */
#define PE_GT_ED_1950_TO_WGS_1984_9         8041 /* Iran                      */
#define PE_GT_ED_1950_TO_WGS_1984_10        8042 /* Italy (Sardinia)          */
#define PE_GT_ED_1950_TO_WGS_1984_11        8043 /* Italy (Sicily)            */
#define PE_GT_ED_1950_TO_WGS_1984_12        8044 /* Malta                     */
#define PE_GT_ED_1950_TO_WGS_1984_13        8045 /* Portugal, Spain           */
#define PE_GT_ED_1950_TO_WGS_1984_16        8148 /* Tunisia                   */
#define PE_GT_EGYPT_1907_TO_WGS_1984        8048 /* Egypt                     */
#define PE_GT_GGRS_1987_TO_WGS_1984         8181 /* Greek GRS                 */
#define PE_GT_HUNGARIAN_1972_TO_ETRF_1989_1 8182 /* Hungarian to ETRF 1989    */
#define PE_GT_NZGD_1949_TO_WGS_1984         8051 /* New Zealand               */
#define PE_GT_HU_TZU_SHAN_TO_WGS_1984       8052 /* Taiwan                    */
#define PE_GT_INDIAN_1954_TO_WGS_1984       8053 /* Thailand, Vietnam         */
#define PE_GT_INDIAN_1975_TO_WGS_1984       8054 /* Thailand                  */
#define PE_GT_KALIANPUR_1937_TO_WGS_1984_1  8055 /* Bangladesh                */
#define PE_GT_KALIANPUR_1962_TO_WGS_1984_1  8150 /* Pakistan                  */
#define PE_GT_KALIANPUR_1975_TO_WGS_1984_1  8056 /* India, Nepal              */
#define PE_GT_KANDAWALA_TO_WGS_1984         8057 /* Sri Lanka                 */
#define PE_GT_KERTAU_TO_WGS_1984            8058 /* West Malaysia, Singapore  */
#define PE_GT_LEIGON_TO_WGS_1984            8059 /* Ghana                     */
#define PE_GT_LIBERIA_1964_TO_WGS_1984      8060 /* Liberia                   */
#define PE_GT_LUZON_1911_TO_WGS_1984_1      8061 /* Philippines (excluding    */
                                                 /* Mindanao)                 */
#define PE_GT_LUZON_1911_TO_WGS_1984_2      8062 /* Philippines (Mindanao)    */
#define PE_GT_MPORALOKO_TO_WGS_1984         8063 /* Gabon                     */
#define PE_GT_MAHE_1971_TO_WGS_1984         8064 /* Mahe Island               */
#define PE_GT_MASSAWA_TO_WGS_1984           8065 /* Ethiopia (Eritrea)        */
#define PE_GT_MERCHICH_TO_WGS_1984          8066 /* Morocco                   */
#define PE_GT_MINNA_TO_WGS_1984_1           8067 /* Cameroon                  */
#define PE_GT_MINNA_TO_WGS_1984_2           8068 /* Nigeria                   */
#define PE_GT_MONTE_MARIO_TO_WGS_1984       8069 /* Italy (Sardinia)          */
#define PE_GT_NAD_1927_TO_WGS_1984_1        8070 /* Mean for Antigua, Barbados*/
                                                 /* Barbuda, Caicos Islands,  */
                                                 /* Cuba, Dominican Republic, */
                                                 /* Grand Cayman, Jamaica,    */
                                                 /* and Turks Islands         */
#define PE_GT_NAD_1927_TO_WGS_1984_2        8071 /* Mean for Belize,          */
                                                 /* Costa Rica, El Salvador,  */
                                                 /* Guatemala, Honduras,      */
                                                 /* and Nicaragua             */
#define PE_GT_NAD_1927_TO_WGS_1984_3        8072 /* Mean for Canada           */
#define PE_GT_NAD_1927_TO_WGS_1984_4        8073 /* Mean for United States    */
                                                 /* (CONUS)                   */
#define PE_GT_NAD_1927_TO_WGS_1984_5        8074 /* Mean for United States    */
                                                 /* (CONUS East of Mississippi*/
                                                 /* River including MN, MO,   */
                                                 /* and LA)                   */
#define PE_GT_NAD_1927_TO_WGS_1984_6        8075 /* Mean for United States    */
                                                 /* (CONUS West of Mississippi*/
                                                 /* River)                    */
#define PE_GT_NAD_1927_TO_WGS_1984_7        8076 /* United States (Alaska)    */
#define PE_GT_NAD_1927_TO_WGS_1984_8        8077 /* Bahamas (except San       */
                                                 /* Salvador Island)          */
#define PE_GT_NAD_1927_TO_WGS_1984_9        8078 /* Bahamas (San Salvador     */
                                                 /* Island)                   */
#define PE_GT_NAD_1927_TO_WGS_1984_10       8079 /* Canada (Alberta, British  */
                                                 /* Columbia)                 */
#define PE_GT_NAD_1927_TO_WGS_1984_11       8080 /* Canada (Manitoba, Ontario)*/
#define PE_GT_NAD_1927_TO_WGS_1984_12       8081 /* Canada (New Brunswick,    */
                                                 /* Newfoundland, Nova Scotia,*/
                                                 /* and Quebec)               */
#define PE_GT_NAD_1927_TO_WGS_1984_13       8082 /* Canada (Northwest         */
                                                 /* Territories, Saskatchewan)*/
#define PE_GT_NAD_1927_TO_WGS_1984_14       8083 /* Canada (Yukon)            */
#define PE_GT_NAD_1927_TO_WGS_1984_15       8084 /* Panama (Canal Zone)       */
#define PE_GT_NAD_1927_TO_WGS_1984_16       8085 /* Cuba                      */
#define PE_GT_NAD_1927_TO_WGS_1984_17       8086 /* Greenland (Hayes          */
                                                 /* Peninsula)                */
#define PE_GT_NAD_1927_TO_WGS_1984_18       8087 /* Mexico                    */
#define PE_GT_NAD_1927_TO_WGS_1984_21       8152 /* United States (Alaska -   */
                                                 /* Aleutians East of 180E)   */
#define PE_GT_NAD_1927_TO_WGS_1984_22       8153 /* United States (Alaska -   */
                                                 /* Aleutians West of 180E)   */
#define PE_GT_NAD_1983_TO_WGS_1984_1        8088 /* Canada, Central America,  */
                                                 /* Mexico, and United States */
                                                 /* (Alaska, CONUS)           */
#define PE_GT_NAD_1983_TO_WGS_1984_2        8154 /* United States (Alaska -   */
                                                 /* Aleutians)                */
#define PE_GT_NAD_1983_TO_WGS_1984_3        8155 /* United States (Hawaii)    */
#define PE_GT_NAHRWAN_1967_TO_WGS_1984_1    8089 /* Oman (Nasirah Island)     */
#define PE_GT_NAHRWAN_1967_TO_WGS_1984_2    8090 /* Saudi Arabia              */
#define PE_GT_NAHRWAN_1967_TO_WGS_1984_3    8091 /* United Arab Emirates      */
#define PE_GT_NAPARIMA_1972_TO_WGS_1984     8092 /* Trinidad & Tobago         */
#define PE_GT_NTF_TO_WGS_1984               8093 /* France                    */
#define PE_GT_OSGB_1936_TO_WGS_1984_1       8095 /* Mean for UK (England,     */
                                                 /* Scotland, Wales, and      */
                                                 /* Isle of Man)              */
#define PE_GT_OSGB_1936_TO_WGS_1984_2       8096 /* UK (England)              */
#define PE_GT_OSGB_1936_TO_WGS_1984_3       8097 /* UK (England, Wales, and   */
                                                 /* Isle of Man)              */
#define PE_GT_OSGB_1936_TO_WGS_1984_4       8098 /* UK (Scotland, including   */
                                                 /* Shetland Islands)         */
#define PE_GT_OSGB_1936_TO_WGS_1984_5       8099 /* UK (Wales)                */
#define PE_GT_POINTE_NOIRE_TO_WGS_1984      8100 /* Congo                     */
#define PE_GT_PSAD_1956_TO_WGS_1984_1       8101 /* Mean for Bolivia, Chile,  */
                                                 /* Colombia, Ecuador, Guyana,*/
                                                 /* Peru, and Venezuela       */
#define PE_GT_PSAD_1956_TO_WGS_1984_2       8102 /* Bolivia                   */
#define PE_GT_PSAD_1956_TO_WGS_1984_3       8103 /* Chile (Northern, near     */
                                                 /* 19 deg S                  */
#define PE_GT_PSAD_1956_TO_WGS_1984_4       8104 /* Chile (Southern, near     */
                                                 /* 43 deg S                  */
#define PE_GT_PSAD_1956_TO_WGS_1984_5       8105 /* Colombia                  */
#define PE_GT_PSAD_1956_TO_WGS_1984_6       8106 /* Ecuador                   */
#define PE_GT_PSAD_1956_TO_WGS_1984_7       8107 /* Guyana                    */
#define PE_GT_PSAD_1956_TO_WGS_1984_8       8108 /* Peru                      */
#define PE_GT_PSAD_1956_TO_WGS_1984_9       8109 /* Venezuela                 */
#define PE_GT_QATAR_TO_WGS_1984             8110 /* Qatar                     */
#define PE_GT_QORNOQ_TO_WGS_1984            8111 /* Greenland (South)         */
#define PE_GT_SAD_1969_TO_WGS_1984_1        8112 /* Mean for Argentina,       */
                                                 /* Bolivia, Brazil, Chile,   */
                                                 /* Colombia, Ecuador, Guyana,*/
                                                 /* Paraguay, Peru, Trinidad &*/
                                                 /* Tobago, and Venezuela     */
#define PE_GT_SAD_1969_TO_WGS_1984_2        8113 /* Argentina                 */
#define PE_GT_SAD_1969_TO_WGS_1984_3        8114 /* Bolivia                   */
#define PE_GT_SAD_1969_TO_WGS_1984_4        8115 /* Brazil                    */
#define PE_GT_SAD_1969_TO_WGS_1984_5        8116 /* Chile                     */
#define PE_GT_SAD_1969_TO_WGS_1984_6        8117 /* Colombia                  */
#define PE_GT_SAD_1969_TO_WGS_1984_7        8118 /* Ecuador                   */
#define PE_GT_SAD_1969_TO_WGS_1984_8        8119 /* Ecuador (Baltra,          */
                                                 /* Galapagos)                */
#define PE_GT_SAD_1969_TO_WGS_1984_9        8120 /* Guyana                    */
#define PE_GT_SAD_1969_TO_WGS_1984_10       8121 /* Paraguay                  */
#define PE_GT_SAD_1969_TO_WGS_1984_11       8122 /* Peru                      */
#define PE_GT_SAD_1969_TO_WGS_1984_12       8123 /* Trinidad & Tobago         */
#define PE_GT_SAD_1969_TO_WGS_1984_13       8124 /* Venezuela                 */
#define PE_GT_SAPPER_HILL_1943_TO_WGS_1984  8125 /* Falkland Islands (East    */
                                                 /* Falkland Island)          */
#define PE_GT_SCHWARZECK_TO_WGS_1984        8126 /* Namibia                   */
#define PE_GT_SCHWARZECK_TO_WGS_1984_2      8180 /* Namibia                   */
#define PE_GT_TANANARIVE_1925_TO_WGS_1984   8127 /* Madagascar                */
#define PE_GT_TIMBALAI_1948_TO_WGS_1984     8128 /* Brunei, Malaysia (Sabah,  */
                                                 /* Sarawak)                  */
#define PE_GT_TM65_TO_WGS_1984              8129 /* Ireland                   */
#define PE_GT_TOKYO_TO_WGS_1984_1           8130 /* Mean for Japan, Korea,    */
                                                 /* and Okinawa               */
#define PE_GT_TOKYO_TO_WGS_1984_2           8131 /* Japan                     */
#define PE_GT_TOKYO_TO_WGS_1984_3           8132 /* Korea                     */
#define PE_GT_TOKYO_TO_WGS_1984_4           8133 /* Okinawa                   */
#define PE_GT_YACARE_TO_WGS_1984            8134 /* Uruguay                   */
#define PE_GT_ZANDERIJ_TO_WGS_1984          8135 /* Suriname                  */

#define PE_GT_FAHUD_TO_WGS_1984             8159 /* Oman                      */
#define PE_GT_HERAT_NORTH_TO_WGS_1984       8149 /* Afghanistan               */
#define PE_GT_INDONESIAN_1974_TO_WGS_1984   8151 /* Indonesia                 */
#define PE_GT_NORD_SAHARA_1959_TO_WGS_1984  8156 /* Algeria                   */
#define PE_GT_PULKOVO_1942_TO_WGS_1984      8157 /* Russia                    */
#define PE_GT_VOIROL_UNIFIE_1960_TO_WGS_1984  8158 /* Algeria                 */

#define PE_GT_BATAVIA_JAKARTA_TO_WGS_1984   8178 /* Batavia(Jakarta) to WGS84 */
#define PE_GT_BOGOTA_BOGOTA_TO_WGS_1984     8174 /* Bogota(Bogota) to WGS84   */
#define PE_GT_MONTE_MARIO_ROME_TO_WGS_1984  8175 /* Monte Mario(Rome) to WGS84*/
#define PE_GT_NTF_PARIS_TO_ED_1950          8186 /* NTF(Paris) to ED 1950     */
#define PE_GT_NTF_PARIS_TO_WGS_1972         8188 /* NTF(Paris) to WGS 1972    */
#define PE_GT_NTF_PARIS_TO_WGS_1984         8094 /* NTF(Paris) to WGS 1984    */
#define PE_GT_TANANARIVE_1925_PARIS_TO_WGS_1984  8176
                                                 /* Tananarive (Paris) to     */
                                                 /* WGS84                     */
#define PE_GT_VOIROL_1875_PARIS_TO_WGS_1984 8211 /* Voirol 1875 (Paris) to    */
                                                 /* WGS84                     */
#define PE_GT_VOIROL_UNIFIE_1960_PARIS_TO_WGS_1984  8177
                                                 /* Voirol Unifie (Paris) to  */
                                                 /* WGS84                     */

#define PE_GT_AGD_1966_TO_GDA_1994          8189 /* Australia                 */
#define PE_GT_AGD_1984_TO_GDA_1994          8191 /* Australia                 */
#define PE_GT_ARC_1960_TO_WGS_1984_2        8207 /* Kenya                     */
#define PE_GT_ARC_1960_TO_WGS_1984_3        8208 /* Tanzania                  */
#define PE_GT_CAMACUPA_TO_WGS_1972_BE_1     8249 /* Angola - offshore         */
#define PE_GT_CAMACUPA_TO_WGS_1984_1        8250 /* Angola - offshore block 5 */
#define PE_GT_CAMACUPA_TO_WGS_1984_2        8251 /* Angola - offshore block 2 */
#define PE_GT_CAMACUPA_TO_WGS_1984_4        8253 /* Angola - offshore block 7 & 8 */
#define PE_GT_CAMACUPA_TO_WGS_1984_5        8254 /* Angola - offshore block 3 */
#define PE_GT_CAMACUPA_TO_WGS_1984_6        8255 /* Angola - offshore block 7 */
#define PE_GT_CAMACUPA_TO_WGS_1984_7        8256 /* Angola - offshore block 3, 7, 15, & 17 */
#define PE_GT_CAMACUPA_TO_WGS_1984_8        8257 /* Angola - offshore block 2 */
#define PE_GT_CAMACUPA_TO_WGS_1984_10       8259 /* Angola - offshore block 2, 3, & 17 */
#define PE_GT_ED_1950_TO_WGS_1984_17        8184 /* France                    */
#define PE_GT_INDIAN_1975_TO_WGS_1984_2     8226 /* Thailand                  */
#define PE_GT_LKS_1994_TO_WGS_1984          8198 /* Lithuania                 */
#define PE_GT_MALONGO_1987_TO_MHAST_1       8260 /* Angola - Cabinda offshore */
#define PE_GT_MANOCA_TO_WGS_1984_1          8248 /* Cameroon                  */
#define PE_GT_MGI_TO_WGS_1984               8228 /* Boznia and Herzegovina,   */
                                                 /* Croatia, Serbia, Slovenia */
#define PE_GT_MHAST_TO_WGS_1984_1           8261 /* Angola - Cabinda offshore */
#define PE_GT_MALONGO_1987_TO_WGS_1984_1    8262 /* Angola - Cabinda offshore */
#define PE_GT_NAPARIMA_1972_TO_WGS_1984_2   8212 /* Trinidad and Tobago       */
#define PE_GT_NAPARIMA_1972_TO_WGS_1984_3   8229 /* Trinidad and Tobago       */
#define PE_GT_NTF_TO_ED_1950                8185 /* France                    */
#define PE_GT_NTF_TO_WGS_1972               8187 /* France                    */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_3    8200 /* Hungary                   */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_4    8201 /* Poland                    */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_5    8202 /* Czech Republic            */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_6    8203 /* Latvia                    */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_7    8204 /* Kazakhstan                */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_8    8205 /* Albania                   */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_9    8206 /* Romania                   */
#define PE_GT_SAMBOJA_TO_WGS_1984           8196 /* Indonesia - E Kalimantan  */
                                                 /*   Mahakam delta area      */
#define PE_GT_SEGORA_TO_WGS_1984            8209 /* Indonesia - Kalimantan    */
#define PE_GT_TOKYO_TO_WGS_1984_5           8227 /* South Korea               */
#define PE_GT_TRINIDAD_1903_TO_WGS_1984     8213 /* Trinidad and Tobago       */
#define PE_GT_VOIROL_1875_TO_WGS_1984       8210 /* Algeria - N of 35g (31 30') N */

#define PE_GT_AGD_1984_TO_GDA_1994_2        8193 /* Australia                 */
#define PE_GT_CAMACUPA_TO_WGS_1984_3        8252 /* Angola - offshore block 1 & 16 */
#define PE_GT_CAMACUPA_TO_WGS_1984_9        8258 /* Angola - offshore block 1 & 16 */
#define PE_GT_DHDN_TO_ETRF_1989             8233 /* Germany - former W Germany*/
#define PE_GT_ED_1950_TO_WGS_1984_18        8237 /* UK - offshore E of 6W     */
#define PE_GT_MOZNET_TO_WGS_1984            8224 /* Mozambique                */
#define PE_GT_NAD_1983_TO_WGS_1984_4        8232 /* United States- CORS ITRF96*/
#define PE_GT_NGO_1948_TO_WGS_1984        108201 /* Norway                    */
#define PE_GT_OSGB_1936_TO_ED_1950_UKOOA    8247 /* UK - England, Scotland, Wales, N Sea */
#define PE_GT_OSGB_1936_TO_WGS_1984_PETROL  8246 /* UK - England, Scotland, Wales, N Sea */
#define PE_GT_PULKOVO_1942_TO_ETRF_1989     8235 /* Germany - former E Germany*/
#define PE_GT_PULKOVO_1942_TO_LKS_1994      8197 /* Lithuania                 */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_10   8225 /* Kazakhstan - Caspian      */
#define PE_GT_RT90_TO_WGS_1984              8195 /* Sweden                    */
#define PE_GT_TETE_TO_MOZNET_1              8214 /* Mozambique                */
#define PE_GT_TETE_TO_MOZNET_2              8216 /* Mozambique - Maputo &     */
                                                 /*   S Gaza  province,       */
                                                 /*   S of approx. 24S        */
#define PE_GT_TETE_TO_MOZNET_3              8218 /* Mozambique - Gaza,        */
                                                 /*  Inhambane, S Sofala and  */
                                                 /*  S Manhica, betwn 20S-24S */
#define PE_GT_TETE_TO_MOZNET_4              8220 /* Mozambique - Sofala N of  */
                                                 /*  Beira corridor, Manhica, */
                                                 /*  Tete & Zambezia, 16S-20S */
#define PE_GT_TETE_TO_MOZNET_5              8222 /* Mozambique  - Nampula,    */
                                                 /*  Niassa and Cabo Delgado, */
                                                 /*  N of 16S                 */

#define PE_GT_ANTIGUA_1943_TO_WGS_1984      8373 /* Antigua                   */
#define PE_GT_DOMINICA_1945_TO_WGS_1984     8374 /* Dominica                  */
#define PE_GT_ED_1950_TO_WGS_1984_19        8372 /* Greece                    */
#define PE_GT_GRENADA_1953_TO_WGS_1984      8375 /* Grenada                   */
#define PE_GT_MGI_FERRO_TO_WGS_1984         8263 /* Mean for Croatia, Slovenia, */
                                                 /* Bosnia and Herzegovina, & Serbia */
#define PE_GT_MONTSERRAT_1958_TO_WGS_1984   8376 /* Montserrat                */
#define PE_GT_ST_KITTS_1955_TO_WGS_1984     8377 /* St. Kitts and Nevis       */
#define PE_GT_ST_LUCIA_1955_TO_WGS_1984     8278 /* St. Lucia                 */

#define PE_GT_ESTONIA_1992_TO_ETRF_1989     8264 /* Estonia                   */
#define PE_GT_ESTONIA_1992_TO_WGS_1984      8266 /* Estonia                   */
#define PE_GT_FAHUD_TO_WGS_1984_2           8370 /* Oman                      */
#define PE_GT_PDO_1993_TO_WGS_1984          8371 /* Oman                      */
#define PE_GT_PULKOVO_1942_TO_ESTONIA_1992  8265 /* Estonia                   */
#define PE_GT_PULKOVO_1942_TO_WGS_1984_12   8267 /* Estonia                   */

#define PE_GT_AGD_1966_TO_GDA_1994_2        8395 /* Australia - ACT           */
#define PE_GT_AGD_1966_TO_GDA_1994_3        8397 /* Australia - Tasmania      */
#define PE_GT_AGD_1966_TO_GDA_1994_4        8399 /* Australia - New South Wales & Victoria */

#define PE_GT_ABIDJAN_1987_TO_WGS_1984      8414 /* Cote d'Ivoire             */
#define PE_GT_CAPE_TO_HARTEBEESTHOEK94      8449 /* South Africa              */
#define PE_GT_CH1903_PLUS_TO_CHTRF_1995     8456 /* Liechtenstein, Switzerland*/
#define PE_GT_CH1903_TO_WGS_1984_2          8458 /* Liechtenstein, Switzerland*/
#define PE_GT_CHTRF_1995_TO_WGS_1984        8459 /* Liechtenstein, Switzerland*/
#define PE_GT_FD_1958_TO_WGS_1984           8491 /* Iran - Kangan District    */
#define PE_GT_HARTEBEESTHOEK94_TO_WGS_1984  8450 /* South Africa              */
#define PE_GT_LA_CANOA_TO_WGS_1984          8495 /* Venezuela - Delta Amacuro,*/
                                                 /*   Anzoategui, Bolivar,    */
                                                 /*   Monagas, Sucre States   */
#define PE_GT_LOCODJO_1965_TO_WGS_1984      8413 /* Cote d'Ivoire             */
#define PE_GT_NAD_1983_CSRS98_TO_WGS_1984   8417 /* Canada - New Brunswick    */
#define PE_GT_RASSADIRAN_TO_WGS_1984        8490 /* Iran - Tehari Refinery    */

#define PE_GT_CH1903_TO_WGS_1984_1          8455 /* Liechtenstein, Switzerland*/
#define PE_GT_ED_1950_ED77_TO_WGS_1984      8492 /* Iran                      */
#define PE_GT_MGI_TO_WGS_1984_2             8415 /* Austria                   */
#define PE_GT_NAD_1983_TO_WGS_1984_5        8494 /* United States             */

#define PE_GT_OLD_HAWAIIAN_TO_WGS_1984_1  108008 /* Old Hawaiian to WGS 1984 (1 - OHA_M) */
#define PE_GT_OLD_HAWAIIAN_TO_WGS_1984_2  108009 /* Old Hawaiian to WGS 1984 (2 - OHA_A) */
#define PE_GT_OLD_HAWAIIAN_TO_WGS_1984_3  108010 /* Old Hawaiian to WGS 1984 (3 - OHA_B) */
#define PE_GT_OLD_HAWAIIAN_TO_WGS_1984_4  108011 /* Old Hawaiian to WGS 1984 (4 - OHA_C) */
#define PE_GT_OLD_HAWAIIAN_TO_WGS_1984_5  108012 /* Old Hawaiian to WGS 1984 (5 - OHA_D) */

#define PE_GT_JAMAICA_1969_TO_WGS_1984_1  108101 /* Jamaica 1969 to WGS 1984_1*/

#define PE_GT_DATUM_73_TO_WGS_1984_1           108110 /* Portugal             */
#define PE_GT_DATUM_73_TO_WGS_1984_2           108120 /* Portugal             */
#define PE_GT_ED_1950_TO_WGS_1984_PT3          108111 /* Portugal             */
#define PE_GT_ED_1950_TO_WGS_1984_PT7          108121 /* Portugal             */
#define PE_GT_GRACIOSA_1948_TO_WGS_1984_1    108112 /* Faial, Graciosa, Pico, */
                                                    /*  Sao Jorge, & Terceira */
                                                    /*  Islands (Azores)      */
#define PE_GT_GRACIOSA_1948_TO_WGS_1984_2    108122 /* Faial, Graciosa, Pico, */
                                                    /*  Sao Jorge, & Terceira */
                                                    /*  Islands (Azores)      */
#define PE_GT_LISBOA_BESSEL_TO_WGS_1984_1      108113 /* Portugal             */
#define PE_GT_LISBOA_BESSEL_TO_WGS_1984_2      108123 /* Portugal             */
#define PE_GT_LISBOA_HAYFORD_TO_WGS_1984_1     108114 /* Portugal             */
#define PE_GT_LISBOA_HAYFORD_TO_WGS_1984_2     108124 /* Portugal             */
#define PE_GT_PORTO_SANTO_1936_TO_WGS_1984_1   108115 /* Porto Santo & Madeira Islands */
#define PE_GT_PORTO_SANTO_1936_TO_WGS_1984_2   108125 /* Porto Santo & Madeira Islands */
#define PE_GT_OBSERV_METEOR_1939_TO_WGS_1984_1 108116 /* Corvo & Flores Islands (Azores) */
#define PE_GT_SAO_BRAZ_TO_WGS_1984_1        108117 /* Sao Miguel and Santa    */
                                                   /*  Maria Islands (Azores) */
#define PE_GT_SAO_BRAZ_TO_WGS_1984_2        108127 /* Sao Miguel and Santa    */
                                                   /*  Maria Islands (Azores) */

#define PE_GT_NTF_TO_RGF_1993_1             108130 /* France                  */

#define PE_GT_NZGD_1949_TO_NZGD_2000_3PAR   108131 /* New Zealand             */
#define PE_GT_NZGD_1949_TO_NZGD_2000_7PAR   108132 /* New Zealand             */

/* -------------------------------------------------------------------------- */
/*                  Transforms by Longitude Rotation Method                   */
/*              Prime Meridians of (non-Greenwich) to Greenwich               */
/* -------------------------------------------------------------------------- */

#define PE_GT_BATAVIA_JAKARTA_TO_BATAVIA       8172 /* Batavia (Jakarta) to   */
                                                    /* Batavia                */
#define PE_GT_BELGE_1950_BRUSSELS_TO_BELGE_1950  8168
                                                    /* Belge 1950(Brussels) to*/
                                                    /* to Belge 1950          */
#define PE_GT_BERN_1898_BERN_TO_BERN_1898      8161 /* Bern 1898 (Bern) to    */
                                                    /* Bern 1898              */
#define PE_GT_BOGOTA_BOGOTA_TO_BOGOTA          8162 /* Bogota (Bogota) to     */
                                                    /* Bogota                 */
#define PE_GT_GREEK_ATHENS_TO_GREEK            8179 /* Greek(Athens) to Greek */
#define PE_GT_LISBON_LISBON_TO_LISBON          8163 /* Lisbon (Lisbon) to     */
                                                    /* Lisbon                 */
#define PE_GT_MAKASSAR_JAKARTA_TO_MAKASSAR     8164 /* Makassar (Jakarta) to  */
                                                    /* Makassar               */
#define PE_GT_MGI_FERRO_TO_MGI                 8165 /* MGI (Ferro) to MGI     */
#define PE_GT_MONTE_MARIO_ROME_TO_MONTE_MARIO  8166 /* Monte Mario (Rome) to  */
                                                    /* Monte Mario            */
#define PE_GT_NGO_1948_OSLO_TO_NGO_1948        8411 /* NGO 1948 (Oslo) to     */
                                                    /* NGO 1948               */
#define PE_GT_NTF_PARIS_TO_NTF                 8160 /* NTF (Paris) to NTF     */
#define PE_GT_PADANG_1884_JAKARTA_TO_PADANG_1884  8167
                                                    /* Padang 1884(Jakarta) to*/
                                                    /* to Padang 1884         */
#define PE_GT_RT38_STOCKHOLM_TO_RT38           8173 /* RT38 (Stockholm) to    */
                                                    /* RT38                   */
#define PE_GT_TANANARIVE_1925_PARIS_TO_TANANARIVE_1925  8169
                                                /* Tananarive 1925 (Paris) to */
                                                /* Tananarive 1925            */
#define PE_GT_VOIROL_1875_PARIS_TO_VOIROL_1875 8170 /* Voirol 1875 (Paris) to */
                                                    /* Voirol 1875            */
#define PE_GT_VOIROL_UNIFIE_1960_PARIS_TO_VOIROL_UNIFIE_1960  8171
                                             /* Voirol Unifie 1960 (Paris) to */
                                             /* Voirol Unifie 1960            */

/* -------------------------------------------------------------------------- */
/*                  Transforms by NADCON/HARN Grid Method                     */
/* -------------------------------------------------------------------------- */

/* NAD27 - NAD83 grid-based transformations */

#define PE_GT_NAD_1927_TO_NAD_1983_NADCON 108001 /* NAD27 to NAD83 - CONUS    */
#define PE_GT_NAD_1927_TO_NAD_1983_AK     108002 /* NAD27 to NAD83 - Alaska   */
#define PE_GT_NAD_1927_TO_NAD_1983_PRVI   108003 /* NAD27 to NAD83 -          */
                                                 /*   Puerto Rico-Virgin I.   */
/* Old non-NAD27 - NAD83 grid-based transformations */
#define PE_GT_OLD_HAWAIIAN_TO_NAD_1983    108004 /* Old Hawaiian to NAD83     */
#define PE_GT_ST_GEORGE_TO_NAD_1983       108005 /* St. George I. to NAD83    */
#define PE_GT_ST_LAWRENCE_TO_NAD_1983     108006 /* St. Lawrence I. to NAD83  */
#define PE_GT_ST_PAUL_TO_NAD_1983         108007 /* St. Paul I. to NAD83      */

/* HARN - HPGN grid-based transformations */
#define PE_GT_NAD_1983_TO_HARN_AL    8419 /* Alabama HARN                     */
#define PE_GT_NAD_1983_TO_HARN_AZ    8420 /* Arizona HARN                     */
#define PE_GT_NAD_1983_TO_HARN_AR  108140 /* Arkansas HARN                    */
#define PE_GT_NAD_1983_TO_HARN_CN    8421 /* California North HARN -above 36N */
#define PE_GT_NAD_1983_TO_HARN_CS    8422 /* California South HARN -below 37N */
#define PE_GT_NAD_1983_TO_HARN_CO    8423 /* Colorado HARN                    */
#define PE_GT_NAD_1983_TO_HARN_FL    8425 /* Florida HARN                     */
#define PE_GT_NAD_1983_TO_HARN_GA    8424 /* Georgia HARN                     */
#define PE_GT_NAD_1983_TO_HARN_HI    8501 /* Hawaii HARN                      */
#define PE_GT_NAD_1983_TO_HARN_IL    8551 /* Illinois HARN                    */
#define PE_GT_NAD_1983_TO_HARN_IN    8502 /* Indiana HARN                     */
#define PE_GT_NAD_1983_TO_HARN_KS    8503 /* Kansas HARN                      */
#define PE_GT_NAD_1983_TO_HARN_KY    8428 /* Kentucky HARN                    */
#define PE_GT_NAD_1983_TO_HARN_LA    8429 /* Louisiana HARN                   */
#define PE_GT_NAD_1983_TO_HARN_MD    8430 /* Maryland & Delaware HARN         */
#define PE_GT_NAD_1983_TO_HARN_ME    8431 /* Maine HARN                       */
#define PE_GT_NAD_1983_TO_HARN_MI    8432 /* Michigan HARN                    */
#define PE_GT_NAD_1983_TO_HARN_MN  108141 /* Minnesota HARN                   */
#define PE_GT_NAD_1983_TO_HARN_MS    8433 /* Mississippi HARN                 */
#define PE_GT_NAD_1983_TO_HARN_MO  108142 /* Missouri HARN                    */
#define PE_GT_NAD_1983_TO_HARN_EM    8426 /* Montana & Idaho HARN - E of 113W */
#define PE_GT_NAD_1983_TO_HARN_WM    8427 /* Montana & Idaho HARN - W of 113W */
#define PE_GT_NAD_1983_TO_HARN_NB    8434 /* Nebraska HARN                    */
#define PE_GT_NAD_1983_TO_HARN_NV    8504 /* Nevada HARN                      */
#define PE_GT_NAD_1983_TO_HARN_NE    8435 /* New England -CT,MA,NH,RI,VT HARN */
#define PE_GT_NAD_1983_TO_HARN_NJ    8552 /* New Jersey HARN                  */
#define PE_GT_NAD_1983_TO_HARN_NM    8436 /* New Mexico HARN                  */
#define PE_GT_NAD_1983_TO_HARN_NY    8437 /* New York HARN                    */
#define PE_GT_NAD_1983_TO_HARN_ND    8438 /* North Dakota HARN                */
#define PE_GT_NAD_1983_TO_HARN_OH    8505 /* Ohio HARN                        */
#define PE_GT_NAD_1983_TO_HARN_OK    8439 /* Oklahoma HARN                    */
#define PE_GT_NAD_1983_TO_HARN_PV    8440 /* Puerto Rico & Virgin Islnds HARN */
#define PE_GT_NAD_1983_TO_HARN_SD    8441 /* South Dakota HARN                */
#define PE_GT_NAD_1983_TO_HARN_TN    8442 /* Tennessee HARN                   */
#define PE_GT_NAD_1983_TO_HARN_ET    8443 /* Texas HARN - E of 100W           */
#define PE_GT_NAD_1983_TO_HARN_WT    8444 /* Texas HARN - W of 100W           */
#define PE_GT_NAD_1983_TO_HARN_UT    8506 /* Utah HARN                        */
#define PE_GT_NAD_1983_TO_HARN_VA    8445 /* Virginia HARN                    */
#define PE_GT_NAD_1983_TO_HARN_WO    8446 /* Washington & Oregon HARN         */
#define PE_GT_NAD_1983_TO_HARN_WV    8507 /* West Virginia HARN               */
#define PE_GT_NAD_1983_TO_HARN_WI    8447 /* Wisconsin HARN                   */
#define PE_GT_NAD_1983_TO_HARN_WY    8448 /* Wyoming HARN                     */

/* -------------------------------------------------------------------------- */
/*                       Transforms by NTv2 Grid Method                       */
/* -------------------------------------------------------------------------- */

/* NTv2 method grid-based transformations - various countries and GCS's       */
#define PE_GT_NAD_1927_TO_NAD_1983_NTV2_CANADA  8244 /* NAD27 to NAD83 Canada */
#define PE_GT_NAD_1927_DEF_1976_TO_NAD_1983_NTV2_ONTARIO  8405 /* NAD27 Def76 */
                                                          /* to NAD83 Ontario */

                                         /* Australia AGD66 or AGD84 to GDA94 */
#define PE_GT_AGD_1966_TO_GDA_1994_NTV2_VICTORIA     8407 /* Victoria         */
#define PE_GT_AGD_1966_TO_GDA_1994_NTV2_TASMANIA     8451 /* Tasmania         */
#define PE_GT_AGD_1966_TO_GDA_1994_NTV2_NORTH_TERR   8452 /* Northern Territory */
#define PE_GT_AGD_1984_TO_GDA_1994_NTV2_QUEENSLAND 108453 /* Queensland       */
#define PE_GT_AGD_1984_TO_GDA_1994_NTV2_WESTERN    108454 /* Western Aus      */
#define PE_GT_AGD_1966_TO_GDA_1994_NTV2_SOUTHEAST  108455 /* New South Wales  */
                                                          /*  & Victoria      */

#define PE_GT_NZGD_1949_TO_NZGD_2000_NTV2          108460 /* New Zealand      */

/*----------------------------------------------------------------------------*/
/* Symbolic names for array sph[] indexes:                                    */
/*----------------------------------------------------------------------------*/
#define PE_SPH_A   0 /* Semimajor axis                                        */
#define PE_SPH_E2  1 /* Eccentricity squared                                  */

/*----------------------------------------------------------------------------*/
/* Symbolic names for array parm[] indexes:                                   */
/*    Projections                                                             */
/*----------------------------------------------------------------------------*/
#define PE_PARM_X0     0 /* False easting                                     */
#define PE_PARM_Y0     1 /* False northing                                    */

#define PE_PARM_LAM0   2 /* Central meridian, Longitude of origin             */
#define PE_PARM_LON0   2 /* = PE_PARM_LAM0                                    */
#define PE_PARM_PHI0   6 /* Central parallel, Latitude of origin              */
#define PE_PARM_LAT0   6 /* = PE_PARM_PHI0                                    */

#define PE_PARM_PHI1   3 /* Standard parallel 1, Latitude of 1st point        */
#define PE_PARM_LAT1   3 /* = PE_PARM_PHI1                                    */
#define PE_PARM_LAM1   8 /* Longitude of 1st point                            */
#define PE_PARM_LON1   8 /* = PE_PARM_LAM1                                    */

#define PE_PARM_PHI2   4 /* Standard parallel 2, Latitude of 2nd point        */
#define PE_PARM_LAT2   4 /* = PE_PARM_PHI2                                    */
#define PE_PARM_LAM2   9 /* Longitude of 2nd point                            */
#define PE_PARM_LON2   9 /* = PE_PARM_LAM2                                    */

#define PE_PARM_LAMC  10 /* Longitude of Center                               */
#define PE_PARM_LONC  10 /*  == PE_PARM_LAMC                                  */
#define PE_PARM_PHIC  11 /* Latitude of Center                                */
#define PE_PARM_LATC  11 /*  == PE_PARM_PHIC                                  */

#define PE_PARM_K0     5 /* Scale factor                                      */
#define PE_PARM_ALPHA  7 /* Azimuth                                           */

#define PE_PARM_XS    12 /* X Scale                                           */
#define PE_PARM_YS    13 /* Y Scale                                           */
#define PE_PARM_XYR   14 /* XY Plane Rotation                                 */

/*----------------------------------------------------------------------------*/
/* Symbolic names for array coord[] indexes:                                  */
/*----------------------------------------------------------------------------*/
#define PE_COORD_LAM   0 /* Longitude                                         */
#define PE_COORD_LON   0 /* = PE_COORD_LAM                                    */

#define PE_COORD_PHI   1 /* Latitude                                          */
#define PE_COORD_LAT   1 /* = PE_COORD_PHI                                    */

#define PE_COORD_X     0 /* X-coordinate                                      */
#define PE_COORD_Y     1 /* Y-coordinate                                      */

#define PE_COORD_H     2 /* Height                                            */

/*----------------------------------------------------------------------------*/
/* Symbolic names for array parm[] indexes:                                   */
/*   Geographic Transforms                                                    */
/*----------------------------------------------------------------------------*/
#define PE_PARM_DX  0 /* X-axis translation                                   */
#define PE_PARM_DY  1 /* Y-axis translation                                   */
#define PE_PARM_DZ  2 /* Z-axis translation                                   */
#define PE_PARM_RX  3 /* X-axis rotation                                      */
#define PE_PARM_RY  4 /* Y-axis rotation                                      */
#define PE_PARM_RZ  5 /* Z-axis rotation                                      */
#define PE_PARM_DS  6 /* Scale difference                                     */
#define PE_PARM_ND 15 /* Name of Dataset for Grid based Geog transforms       */

/*----------------------------------------------------------------------------*/

#define PE_EPS   3.55271367880050092935562E-15  /* 2^(-48) */
#define PE_EPSS  0.000000059604644775390625     /* 2^(-24) */
#define PE_PI    3.14159265358979323846264
#define PE_PI2   1.57079632679489661923132
#define PE_PI4   0.785398163397448309615661

#define PE_SPHERE(e2) ((e2) < PE_EPS)
#define PE_ABS(a)     (((a) < 0) ? -(a) : (a))
#define PE_SGN(a,b)   (((b) >= 0) ? PE_ABS(a) : -PE_ABS(a))
#define PE_EQ(a,b)    (PE_ABS((a)-(b)) <= PE_EPS*(1+(PE_ABS(a)+PE_ABS(b))/2))
#define PE_ZERO(a)    (PE_ABS(a) <= PE_EPS)

/*----------------------------------------------------------------------------*/
/* Symbolic names for kinds of a horizon:                                     */
/*----------------------------------------------------------------------------*/
#define PE_HORIZON_RECT  0
#define PE_HORIZON_POLY  1
#define PE_HORIZON_LINE  2
#define PE_HORIZON_POINT 3

#define PE_HORIZON_DELTA  0.0000002  /* radians - about 1.2 meters along      */
                                     /*           the equator                 */

#endif


pef.h

/* -------------------------------------------------------------------------- */

/* Projection Engine Version 8.10 */

/* Copyright (C) 1992-2001 Environmental Systems Research Institute, Inc. */

/* All rights reserved. */

/* -------------------------------------------------------------------------- */

#ifndef PEF_INCLUDED

#define PEF_INCLUDED

#ifndef PE_INCLUDED

#include "pe.h"

#endif

#ifndef PEDEF_INCLUDED

#include "pedef.h"

#endif

#ifdef __cplusplus

extern "C" {

#endif

typedef struct pe_entry_t

{

int code;

char name[PE_NAME_MAX];

} *PE_TABLE;

/* Return the predefined angular unit table: */

PE_TABLE PEAPI pe_predefined_angular_unit(

int *n);

/* Return the predefined linear unit table: */

PE_TABLE PEAPI pe_predefined_linear_unit(

int *n);

/* Return the predefined spheroid table: */

PE_TABLE PEAPI pe_predefined_spheroid(

int *n);

/* Return the predefined datum table: */

PE_TABLE PEAPI pe_predefined_datum(

int *n);

/* Return the predefined prime meridian table: */

PE_TABLE PEAPI pe_predefined_primem(

int *n);

/* Return the predefined parameter table: */

PE_TABLE PEAPI pe_predefined_parameter(

int *n);

/* Return the predefined projection table: */

PE_TABLE PEAPI pe_predefined_projection(

int *n);

/* Return the predefined method table: */

PE_TABLE PEAPI pe_predefined_method(

int *n);

/* Return the predefined geographic CS table: */

PE_TABLE PEAPI pe_predefined_geogcs(

int *n);

/* Return the predefined projected CS table: */

PE_TABLE PEAPI pe_predefined_projcs(

int *n);

/* Return the predefined geographic transformation table: */

PE_TABLE PEAPI pe_predefined_geogtran(

int *n);

/* Release memory previously allocated by functions pe_predefined_...() */

void PEAPI pe_table_del(

PE_TABLE table);

/* Manufacture a new Projection Engine object: */

struct pe_struct_t * PEAPI pe_factory(

int code);

/* Return an object's factory code: */

int PEAPI pe_factory_code(

struct pe_struct_t *p);

/* Manufacture a new Projection Engine object of an exact type: */

PE_UNIT PEAPI pe_factory_unit(int code);

PE_SPHEROID PEAPI pe_factory_spheroid(int code);

PE_DATUM PEAPI pe_factory_datum(int code);

PE_PRIMEM PEAPI pe_factory_primem(int code);

PE_GEOGCS PEAPI pe_factory_geogcs(int code);

PE_PARAMETER PEAPI pe_factory_parameter(int code);

PE_PROJECTION PEAPI pe_factory_projection(int code);

PE_PROJCS PEAPI pe_factory_projcs(int code);

PE_METHOD PEAPI pe_factory_method(int code);

PE_GEOGTRAN PEAPI pe_factory_geogtran(int code);

/* Create an integer array of factory codes for specific object types */

int * PEAPI pe_factory_datum_codelist(int *num_codes);

int * PEAPI pe_factory_geogcs_codelist(int *num_codes);

int * PEAPI pe_factory_geogtran_codelist(int *num_codes);

int * PEAPI pe_factory_method_codelist(int *num_codes);

int * PEAPI pe_factory_parameter_codelist(int *num_codes);

int * PEAPI pe_factory_projcs_codelist(int *num_codes);

int * PEAPI pe_factory_primem_codelist(int *num_codes);

int * PEAPI pe_factory_projection_codelist(int *num_codes);

int * PEAPI pe_factory_spheroid_codelist(int *num_codes);

int * PEAPI pe_factory_angular_unit_codelist(int *num_codes);

int * PEAPI pe_factory_linear_unit_codelist(int *num_codes);

/* Delete an integer array of factory codes */

void PEAPI pe_factory_codelist_delete(int *codelist);

#ifdef __cplusplus

};

#endif

#endif


Introduction

The ArcSDE 8.1 Java API consists of two packages: the Client Package and the Geometry Package.

The Client Package contains classes that establish a connection to an ArcSDE instance, query a layer, and otherwise communicate with a server. The client package is written in Java, right down to the socket level transmission layer of ArcSDE. The Geometry Package contains the Java version of the shape functionality available in the C-API’s shape library. The Geometry Package is actually a mixture of Java and native code. The native code is called when advanced capabilities like spatial operations and spatial relations are accessed by a client application, but geometries can be created and accessed by the Java code, without ever loading the native library. Therefore, simple data query applications, like ArcExplorer Java, can be developed as pure Java applications that can run on any Java enabled platform.

As an additional note for developers familiar with the previous ArcSDE Java API that was released in versions 8.0.1 and 8.0.2, the 8.1 Java API has been redesigned from scratch. Therefore, applications written to the previous Java API will have to be modified to work with the new API.


Setting up

The ArcSDE Java API is installed by the client side installation option in the ArcSDE installation script. The files that make up the Java product are as follows:

jsde81_sdk.jar - contains the class files of the com.esri.sde.sdk.client and com.esri.sde.sdk.geom packages.

jsg81.dll (NT) - contains the native code portion of the geometry package.

sdejavautil.dll (NT) - contains the native code portion of the SeInstance start function.

libjsg81.so - contains the native code portion of the geometry package. This library is now available on all UNIX platforms (libjsg81.sl for HP) for this release.

libsdejavautil.so - contains the native code portion of the SeInstance start function. (libsdejavautil.sl for HP)

The Java Doc (HTML documentation) for this API can be accessed from the ArcSDE Developer Help

To develop with the Java API, you must have Java 2 Standard Edition (SDK), version 1.2.2 installed on your system. Simply add the jsde81_sdk jar to your CLASSPATH to utilize the Java API. If you will be accessing the advanced functionality of the Geometry Package, you need to add the jsg81 library to your path. The jar and library can be found under %SDEHOME%\bin.

The following section, "Client Applications", describes the functionality available in this release and provides a few examples.


ArcSDE 8

Writing Client Applications

This section demonstrates a few of the client functionalities available in the ArcSDE 8.1 Java API. Please refer to the concepts section for a discussion of the general concepts of creating an ArcSDE client application.

Connecting to an ArcSDE server

Getting Table/Layer information

Retrieving Data

Inserting Data

Sample Programs

Connecting to an ArcSDE server

The following code snippet demonstrates how to establish a connection to an ArcSDE server:

public static void main (String args[])throws Exception {

SeConnection conn=null;

            String server = “arcserver”;

            int instance = 5151;

            String database = “sdedb”;

            String user = “sdeuser”;

            String password = “xxxx”;

try {

conn = new SeConnection(server, instance, database, user, password);

}catch (SeException ce) {

SeError err = ce.getSeError();

System.out.println(err.getSdeErrMsg());

}

}

NOTE: Specify the instance port as the port number. For example: 5250, not esri_sde.

Getting Table / Layer information

      The following code sample demonstrates how to retrieve the list of the layers in the database currently connected to.

      Vector layerList = conn.getLayers();

      for( int index = 0 ; index < layerList.size() ; index++ )

{

      SeLayer layer = (SeLayer)layerList.elementAt(index);

      // Displays the layer’s name

            System.out.println( layer.getName() );

            // Displays the layer’s ID

            System.out.println( layer.getID().longValue() );

            // Displays the layer’s spatial column name

            System.out.println( layer.getSpatialColumn() );

      }

      The SeLayer object contains all the information about the layer. Refer the ArcSDE 8.1 Java API Function Reference to obtain a list of methods that can be used to retrieve the various attributes of the layer. Information about the tables in an ArcSDE database can be obtained in a similar way.

Retrieving data

Data is retrieved from either a layer or a table by preparing and executing a query. The SeQuery object is used to perform this operation. The steps to create and execute a query are:

1. Create an SeSqlConstruct object that contains the name of the table/layer to be queried. It can also include an optional where-clause constraint on the query.

      SeSqlConstruct sqlConstruct = new SeSqlConstruct( layer.getName() );

2. Create a java.lang.String array containing the names of the table columns to be queried.

String[] cols = new String[2];

cols[0] = new String("ColumnOneName");

cols[1] = layer.getSpatialColumn();

3. Define, prepare and execute the query.

// Create a query stream between the client and server

SeQuery query = new SeQuery( conn, cols, sqlConstruct );

      query.prepareQuery();

      query.execute();

4. Fetch the first row retrieved by the query into an SeRow object.

SeRow row = query.fetch();

5. Retrieve the column definitions of the row retrieved.

// Get the definitions of all the columns retrieved

      SeColumnDefinition[] colDefs = SeRow.getColumns();

6. For each column definition, determine the ArcSDE data type of the column. Then retrieve the data in that column.

      // Retrieve data from the first column

      int colNum = 0;

      int dataType = colDefs[colNum].getType;

// Assuming that the columns we retrieve are either string or shape data type

      // Add more case statements to retrieve all possible SDE data types.

// ( See Working with Layers Example )

      switch( dataType ) {

      case SeColumnDefinition.TYPE_STRING:

System.out.println(colDef.getName()+ row.getString(colNum));

            break;

      case SeColumnDefinition.TYPE_SHAPE:

            System.out.println(colDef.getName() );

            SeShape shape = row.getShape(colNum);

            // Call a function to retrieve the shape attributes

break;

      }

7. Close the query.

NOTE: To retrieve all the rows returned by the query, call query.fetch repeatedly until the SeRow object returned is null.

Inserting data

Data is inserted into an ArcSDE table or layer using the SeInsert object. The steps to insert data into a table / layer :

1. Create a java.lang.String array containing the names of the table columns to be populated. Note the array index value of each column; this index value will be used in the SeRow.set* methods later on. The index value for the string column is 0 and the index value for the shape column is 1.

String[] cols = new String[2];

cols[0] = new String("ColumnOneName");

cols[1] = layer.getSpatialColumn();

2. Create an SeInsert object and associate it with the current connection. This creates an insert stream between the client and the server. Then specify the columns of the table or layer to insert into. Set the SeInsert object to write mode.

      SeInsert insert = new SeInsert(conn);

insert.intoTable(layer.getName(),cols);

insert.setWriteMode(true);

3. Obtain the SeRow object that is to be filled, from the insert object. Then set the row object with the data to be inserted. This is done using the SeRow.set* methods. Use the index values from step 1 for the columnPosition parameter of each set method.

SeRow row = insert.getRowToSet();

      row.setString(0, "Shape Number One");

      row.setShape(1,shape);

4. Invoke the execute method of the Insert object to insert the row into the layer. Close the insert stream to finish insert operation.

insert.execute();

insert.close();

NOTE: Data can only be inserted into columns created and maintained by the user. If the column is registered as SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE, the values for this column are automatically generated and inserted by ArcSDE. The object id column generated when creating a new Table or Feature class through ArcCatalog is maintained by ArcSDE. Users cannot insert, delete or update values in this column.

These few samples demonstrate the majority of the functionality needed to create a basic query or insert application for ArcSDE. Refer to the JavaDoc in the ArcSDE Developer help for a complete description of all the classes and methods provided in ArcSDE 8.1 Java API. The Sample Programs below demonstrate the use of the ArcSDE 8.1 Java API to create tables and layers, insert data into tables and layers, creating spatial queries, creating logfiles, creating versioned databases.

Sample Programs

Working with Layers - This example program demonstrates how to create a new ArcSDE layer and insert, delete and update data. It also demonstrates how to retrieve the attributes of shapes.

Using Spatial Filters - This example demonstrates the use of the SeShapeFilter class. It shows how to identify and retrieve features that have a specified spatial relationship with a given feature or a set of features.

Working with Versions - This example demonstrates how to create versions of an ArcSDE database, edit tables that are part of the versioned database. It also shows how to reconcile between different database versions.

Using Logfiles - This example demonstrates how to create and edit logfiles. It shows how to direct the results of a query into a logfile.


Creating a Geometry Application

The goal of ArcSDE Geometry Package is to provide an API at the simple feature access level. It has two parts, a hierarchy of interfaces describing the OGC (Open GIS Consortium) specification of simple features, and the ArcSDE implementation of those interfaces. The ArcSDE implementation also provides additional functionality, such as support for z coordinates and measures.

The Geometry Package provided as part of the ArcSDE 8.1 Java API is useful for developers who want to build an application that performs some spatial operations, such as buffering a Geometry, or checks for spatial relations, such as testing if one Geometry is within another.

Example 1: Generating a buffer around a point

static void main (String[] args) {

Geometry[] g = new Geometry[1];

g[0] = null;

// Set a reasonable coordinate reference.

SeCoordRef cr = new SeCoordRef();

cr.setXY(0.0, 0.0, 1000.0);

// Generate a point

SePoint pz = new SePoint(cr, 10.0, 10.0, 20.0, Double.NaN);

// generate a new geometry that represents the buffered point

g[0] = pz.buffer(9);

}

Developers can also use the Geometry Package to build a JDBC application that works with spatial data. For example, an application could use JDBC to connect to a database, extract data from a blob column containing the OGC well-known binary representation of a geometry, then use that binary stream to construct an ESRI Shape that can be compared with other shapes. That shape could also be modified and exported as well-known binary to be inserted back into the database.

Example 2: Export a Shape as Well-Known Binary or create a Shape from WKB

// point with Zs

g[0] = new SePoint (cr, -50.123, -50.1234567, 50, Double.NaN);

outshp = ((SeGeometry)g[0]).asBinaryShape();

tempshp = outshp.toByteArray();

inshp = new ByteArrayInputStream(tempshp);

g[1] = SeGeometrySource.geometryFromShape(inshp, cr);


Localization

The ArcSDE Java API 8.1 enables the localization of error messages returned from the ArcSDE server, allowing for the display of error messages in any desired language. This localization of error messages is supported through the ArcSDE Java API Localization Toolkit. Contact your regional ESRI distributor to obtain the ArcSDE Java API 8.1 Localization Toolkit.


: Overview

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES
This document is the API specification of the ArcSDE Java API, version 8.1.

See:
Description

Packages
com.esri.sde.sdk.client | This package contains classes that provide the basic functionality exposed in the C sde81 client library.
com.esri.sde.sdk.geom |

This document is the API specification of the ArcSDE Java API, version 8.1.

This release of the ArcSDE Java API contains two packages, the Client Package and the Geometry Package.

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


C Java Function tables

C and Java Function comparison list

Instance functions | Functions that create shapes | Metadatainfo functions | Functions that define Coordinate Systems and Spatial References | Raster column functions
Connection Functions | Functions that edit or update shapes | Meta-data functions | Spatialref functions | Raster column info functions
Database Functions | Functions that return information about a shape | Functions that manage streams | Spatialrefinfo functions | Raster functions
Functions to set up an attribute query | Annotation functions | Table functions | Layer functions | Rasterinfo functions
Functions to Execute the Query | Functions that compute spatial relationships between shapes | Layerinfo functions | Enable and check the status of multi-versioned views | Rasterband functions
Functions to fetch results | Table functions that manage rowlocking | Stream function to initiate rowlocking | Stateinfo functions | Rasbandinfo functions
Functions to set the Spatial Constraint | Lock-related functions | Registration functions | State functions | Rasterattr functions
Functions to insert data | Locking Table Schema | Reginfo functions | Versioninfo functions | Rasconstraint functions
Functions to Update Rows | Objectlockinfo functions |  | Version functions | Rastileinfo functions
Functions to Delete Rows | Objectlock functions | Locator Functions | Stream Logfile functions | Trace functions
SQL construct functions | Functions for enabling rowlocks on registered table | Locator Properties | Loginfo functions |
Connection functions for Transactions | Shape table functions | Point table Functions | Logfile functions |

Instance functions

C | Java | Function Description
SE_instance_configuration | SeInstance.getConfiguration | Returns an ArcSDE configuration.
SE_instance_control | SeInstance.pause SeInstance.shutdown SeInstance.resume SeInstance.start SeInstance.killProcess SeInstance.killAllProcesses | Controls the state of the connected instance.
SE_instance_free_locks | NA | Frees memory allocated for a list of instance locks.
SE_connection_free_state_locks | NA | Frees memory allocated for a list of state locks held by the specified instance.
SE_instance_free_statistics | NA | Frees memory allocated for a list of instance statistics.
SE_connection_free_table_locks | NA | Frees memory allocated for a list of table locks held by the specified instance.
SE_instance_free_users | NA | Frees memory allocated for a list of instance users.
SE_instance_free_variables | NA | Frees memory allocated for a list of environment variables.
SE_connection_free_version_locks | NA | Frees memory allocated for a list of version locks held by the specified instance.
SE_instance_get_locks | SeInstance.getLocks | Returns a list of locks in use on a specified ArcSDE instance.
SE_instance_get_objectlocks | SeInstance.getObjectLocks | Returns a list of object locks in use on a specified instance.
SE_instance_get_statistics | SeInstance.getStats | Gets statistics on the specified ArcSDE instance.
SE_instance_get_state_locks | SeInstance.getStateLocks | Returns a list of state locks in use on a specified instance.
SE_instance_get_table_locks | SeInstance.getTableLocks | Returns a list of table locks in use on a specified instance.
SE_instance_get_users | SeInstance.getUsers | Gets the users of the specified ArcSDE instance.
SE_instance_get_variables | SeInstance.getVariables | Gets the environment variables of the specified ArcSDE instance.
SE_instance_get_version_locks | SeInstance.getVersionLocks | Returns a list of version locks in use on a specified instance.
SE_instance_start | SeInstance.start | Starts an ArcSDE instance on the current node.
SE_instance_status | SeInstance.getStatus | Gets status information on an ArcSDE instance.

Database functions

C | Java | Function Description
SE_database_free_list | NA | Frees a list of databases.
SE_database_list | SeConnection.getDatabaseList | Returns a list of databases or data sources for a DBMS instance.
SE_database_use | SeConnection.databaseUse | Changes the database or data source being used for a connection.

Connection functions

C | Java | Function Description
SE_connection_commit_transaction | SeConnection.commitTransaction | Commits a user transaction.
SE_connection_create | SeConnection constructors | Connects the application to the ArcSDE server.
SE_connection_free | SeConnection.close | Disconnects the application from the ArcSDE server.
SE_connection_free_all_locks | SeConnection.freeAllLocks | Releases all locks held by the specified connection.
SE_connection_free_keyword_info | NA | Releases the DBMS keyword list.
SE_connection_get_dbms_info | SeConnection.getDBMSInfo | Retrieves DBMS information.
SE_connection_get_ext_error | SeError.getExtError, SeError.getExtErrMsg | Retrieves extended error information.
SE_connection_get_error_string | SeError.getErrDesc | Retrieves a localized string for an error code.
SE_connection_get_instance_name | SeConnection.getInstance returns the port number | Returns the name of the instance associated with this connection.
SE_connection_get_keyword_info | SeConnection.getKeywordInfo | Retrieves a list of DBMS-specific keywords.
SE_connection_get_release | SeConnection.getRelease | Returns the ArcSDE release version number for this connection.
SE_connection_get_server_name | SeConnection.getServer | Returns the name of the server associated with this connection.
SE_connection_get_server_time | SeConnection.getServerTime | Returns the clock time of the server associated with this connection.
SE_connection_get_sql_info | SeConnection.getSQLInfo | Retrieves the DBMS-specific function name.
SE_connection_get_stream_spec | SeConnection.getStreamSpec | Returns buffering properties for future streams.
SE_connection_get_user_name | SeConnection.getUser | Returns the name of the user associated with this connection.
SE_connection_get_version | SeConnection.getRelease | Returns the ArcSDE release version number for this connection.
SE_connection_rollback_transaction | SeConnection.rollBackTransaction | Rolls back a user transaction.
SE_connection_set_concurrency | SeConnection.setConcurrency | Establishes concurrency control for threaded client applications.
SE_connection_set_stream_spec | SeConnection.setStreamSpec | Sets buffering properties for future streams.
SE_connection_set_transaction_autocommit | SeConnection.setTransactionAutocomit | Sets the autocommit frequency.
SE_connection_start_transaction | SeConnection.startTransaction | Starts a user transaction.

Functions that create shapes

C | Java | Function Description
SE_shape_as_line | SeShape.asLine | Returns a shape of type line, given a shape of any type.
SE_shape_as_point | SeShape.asPoint | Returns a shape of type point, given a shape of any type.
SE_shape_as_polygon | SeShape.asPolygon | Returns a shape of type polygon, given a shape of any type.
SE_shape_as_simple_line | SeShape.asSimpleLine | Returns a shape of type simple line, given a shape of any type.
SE_shape_build | SeShape.build | Assembles a set of line segments into polygons or linestrings using the specified mode.
SE_shape_clip | SeShape.clip | Returns the intersection (logical AND of space) of a shape and a supplied rectangular envelope.
SE_shape_create | SeShape constructors | Initializes a shape structure.
SE_shape_duplicate | SeShape.clone | Copies a shape to a target shape.
SE_shape_find_along | SeShape.findAlong | Returns the points or lines along a shape as defined by the shape’s measures and the supplied measure value.
SE_shape_find_between | SeShape.findBetween | Returns the points or lines along a shape as defined by the shape’s measures between the given from- and to-values.
SE_shape_free | NA | Frees the memory allocated to a shape.
SE_shape_free_array | NA | Frees the memory allocated to an array of shapes.
SE_shape_generate_buffer | SeShape.generateBuffer | Generates a buffer around the source shape, returning the resulting new shape.
SE_shape_generate_circle | Not implemented | Generates a polygon shape in the form of a circle based on the supplied center and radius.
SE_shape_generate_convex_hull | SeShape.generateConvexHull | Generates a convex hull for a shape.
SE_shape_generate_ellipse | Not implemented | Generates an ellipse from the specified parameters.
SE_shape_generate_from_part | SeShape.generateFromPart | Generates a new shape from the specified part number of a multipart shape.
SE_shape_generate_label_point | SeShape.generateLablePoint | Generates a label point for a shape.
SE_shape_generate_line | SeShape.generateLine | Generates a line shape from an array of points.
SE_shape_generate_point | SeShape.generatePoint | Generates a multiple-point shape from an array of points.
SE_shape_generate_polygon | SeShape.generatePolygon | Generates a polygon shape from an array of points.
SE_shape_generate_rectangle | SeShape.generateRectangle | Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.
SE_shape_generate_simple_line | SeShape.generateSimpleLine | Generates a simple line shape from an array of points.
SE_shape_interpolate_by_measures | SeShape.interpolateByMeasures | Returns a shape which is densified by a supplied measure value.

Functions that edit or update shapes

C | Java | Function Description
SE_shape_add_island | SeShape.addIsland | Adds an island to a polygon shape.
SE_shape_add_part | SeShape.addPart | Adds a new part to a given shape.
SE_shape_build | SeShape.build | Assembles a set of line segments into polygons or linestrings using the specified mode.
SE_shape_change_coordref | Not implemented | Projects a shape to a new coordinate system.
SE_shape_change_path | SeShape.changePath | Changes a path in a shape.
SE_shape_delete_island | SeShape.deleteIsland | Deletes an island from a polygon shape.
SE_shape_delete_part | SeShape.deletePart | Deletes a part from a multipart shape.
SE_shape_delete_path | SeShape.deletePath | Deletes a path from a shape.
SE_shape_delete_point | SeShape.deletePoint | Deletes a point from a shape.
SE_shape_extend_line | SeShape.extendLine | Extends a line by adding a string of points to the beginning or end of the shape.
SE_shape_filter_coordinates | SeShape.filterCoordinates | Applies a Douglas-Poiker line generalization to a shape.
SE_shape_insert_part | SeShape.insertPart | Inserts a new part into a shape.
SE_shape_make_nil | SeShape.makeNil | Converts a shape of any type to a nil shape.
SE_shape_move_point | SeShape.movePoint | Moves all occurrences of a point in a shape.
SE_shape_replace_part | SeShape.replacePart | Replaces a specified part of a shape.
SE_shape_replace_path_with_arc | SeShape.replacePathWithArc | Replaces a line or path with an arc represented as a series of vectors.
SE_shape_set_anno | SeShape.setAnno | Sets the annotation of a shape.
SE_shape_set_coordref | SeShape.setCoordRef | Sets the coordinate reference of a shape.

Functions that return information about a shape

C | Java | Function Description
SE_shape_get_all_points | SeShape.getAllPoints | Returns all points in a shape.
SE_shape_get_anno | SeShape.getAnno | Returns the annotation of a shape.
SE_shape_get_area | SeShape.getArea | Returns the area of the shape.
SE_shape_get_coordref | SeShape.getCoordRef | Returns the coordinate reference of a shape.
SE_shape_get_extent | SeShape.getExtent | Returns the extent of a shape.
SE_shape_get_length | SeShape.getLength | Returns the length of a shape.
SE_shape_get_Mrange | SeShape.getMRange | Returns the range of a shape’s measure values.
SE_shape_get_num_parts | SeShape.getNumParts | Returns the number of parts and subparts in a shape.
SE_shape_get_num_points | SeShape.getNumPoints | Returns the number of points in a shape.
SE_shape_get_points | SeShape.getPoints | Returns the point array of the specified part.
SE_shape_get_num_subparts | SeShape.getNumSubParts | Returns the number of subparts for the specified part in a shape.
SE_shape_get_3D_length | SeShape.get3DLength | Returns the three-dimensional length of a shape.
SE_shape_get_type | SeShape.getType | Returns the type of a shape.
SE_shape_get_Zrange | SeShape.getZRange | Returns the range of a shape’s elevation values.
SE_shape_has_anno | SeShape.hasAnno | Returns TRUE if the supplied shape has annotation.
SE_shape_is_line | SeShape.isLine | Returns TRUE if the supplied shape is type line.
SE_shape_is_measured | SeShape.isMeasured | Returns TRUE if the supplied shape has a measure array.
SE_shape_is_multipart | SeShape.isMultiPart | Returns TRUE if the supplied shape has multiple parts.
SE_shape_is_nil | SeShape.isNil | Returns TRUE if the supplied shape is nil (empty).
SE_shape_is_point | SeShape.isPoint | Returns TRUE if the supplied shape is type point.
SE_shape_is_polygon | SeShape.isPolygon | Returns TRUE if the supplied shape is type polygon.
SE_shape_is_simple_line | SeShape.isSimpleLine | Returns TRUE if the supplied shape is type simple line.
SE_shape_is_3D | SeShape.is3D | Returns TRUE if the supplied shape has an elevation array.

Functions that compute spatial relationships between shapes

C | Java | Function Description
SE_shape_calculate_distance | SeShape.calculateDistance | Returns the closest difference between two shapes.
SE_shape_difference | SeShape.difference | Returns the difference (logical AND NOT of space) of two shapes.
SE_shape_evaluate_CBM | Not implemented | Checks a relationship expression against a SE_CBM_INFO structure.
SE_shape_find_CBM_relation | Not implemented | Returns a SE_CBM_INFO structure defining all the relationships between the supplied shapes.
SE_shape_find_relation | SeShape.findRelation | Returns a mask defining all the spatial relationships between the supplied shapes.
SE_shape_intersect | SeShape.intersect | Returns the intersection (logical AND of space) of two shapes.
SE_shape_is_containing | SeShape.isContaining | Returns TRUE if the secondary shape is wholly contained within the primary shape.
SE_shape_is_crossing | SeShape.isCrossing | Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.
SE_shape_is_disjoint | SeShape.isDisjoint | Returns TRUE if the intersection of two shapes is empty.
SE_shape_is_equal | SeShape.isEqual | Returns TRUE if the two supplied shapes are identical.
SE_shape_is_overlapping | SeShape.isOverlapping | Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.
SE_shape_is_touching | SeShape.isTouching | Returns TRUE if the two supplied shapes share a common boundary.
SE_shape_is_within | SeShape.isWithin | Returns TRUE if the primary shape is wholly contained within the secondary shape.
SE_shape_overlay | SeShape.overlay | Overlays two shapes.
SE_shape_symmetrical_difference | SeShape.symmetricalDifference | Returns the difference (logical XOR of space) of two shapes.
SE_shape_union | SeShape.union | Returns the difference (logical OR of space) of two shapes.

Annotation functions

C | Java | Function Description
SE_anno_create | SeShapeAnno constructor | Creates an SE_anno object
SE_anno_duplicate | SeShapeAnno.duplicate | Creates a copy of an SE_ANNO object.
SE_anno_free | NA | Releases memory allocated for an SE_ANNO object.
SE_anno_get_alignment | SeShapeAnno.getAlignment | Retrieves the alignment for the annotation.
SE_anno_get_justification | SeShapeAnno.getJustification | Retrieves the annotation’s justification.
SE_anno_get_leader | SeShapeAnno.getLeader | Retrieves the leader for the specified annotation.
SE_anno_get_level | SeShapeAnno.getLevel | Retrieves the annotation level.
SE_anno_get_offset | SeShapeAnno.getXOffset SeShapeAnno.getYOffset | Retrieves the offset of the annotation.
SE_anno_get_placement | SeShapeAnno.getPlacement | Retrieves the annotation’s placement.
SE_anno_get_symbol | SeShapeAnno.getSymbol | Retrieves the annotation symbol.
SE_anno_get_text | SeShapeAnno.getText | Retrieves the text of the annotation.
SE_anno_get_text_size | SeShapeAnno.getHeight, SeShapeAnno.getGapRatio | Retrieves the text height and gap ratio of the annotation.
SE_anno_set_alignment | SeShapeAnno.setAlignment | Sets the alignment of the annotation.
SE_anno_set_justification | SeShapeAnno.setJustification | Sets the annotation’s justification.
SE_anno_set_leader | SeShapeAnno.setLeader | Sets the leader for the specified annotation.
SE_anno_set_level | SeShapeAnno.setLevel | Sets the annotation level.
SE_anno_set_offset | SeShapeAnno.setXOffset SeShapeAnno.setYOffset | Sets the offset of the annotation.
SE_anno_set_placement | SeShapeAnno.setPlacement | Sets the annotation’s placement.
SE_anno_set_symbol | SeShapeAnno.setSymbol | Sets the annotation symbol.
SE_anno_set_text | SeShapeAnno.setText | Sets the text of the annotation.
SE_anno_set_text_size | SeShapeAnno.setHeight, SeShapeAnno.setGapRatio | Sets the text height and gap ratio of the annotation.

Version functions

C | Java | Function Description
SE_version_alter | SeVersion.alter | Changes a version definition.
SE_version_change_state | SeVersion.changeState | Changes the state of a version.
SE_version_create | SeVersion.create | Creates a new version.
SE_version_delete | SeVersion.delete | Deletes a version.
SE_version_free_info_list | NA | Releases memory allocated for a list of version structures.
SE_version_free_lock | SeVersion.freeLock | Releases a version lock.
SE_version_free_locks | NA | Releases memory allocated for a list of version lock structures.
SE_version_get_info | SeVersion.getInfo | Retrieves a version definition.
SE_version_get_info_by_id | SeVersion constructor 2 | Retrieves information for a version by its ID.
SE_version_get_info_list | SeConnection.getVersionList | Retrieves an array of SE_VERSIONINFO structures for all accessible versions.
SE_version_get_locks | SeVersion.getLocks | Retrieves the locks on a version.
SE_version_lock | SeVersion.lock | Locks a version.
SE_version_rename | SeVersion.rename | Renames a version.

Versioninfo functions

C | Java | Function Description
SE_versioninfo_create | SeVersion Constructors | Creates a version definition.
SE_versioninfo_duplicate | SeVersion.clone | Copies a version definition.
SE_versioninfo_free | NA | Frees memory allocates for a version definition.
SE_versioninfo_get_access | SeVersion.getAccess | Retrieves the version access type.
SE_versioninfo_get_creation_time | SeVersion.getCreationTime | Retrieves the version access type.
SE_versioninfo_get_description | SeVersion.getDescription | Retrieves the version description.
SE_versioninfo_get_id | SeVersion.getId | Retrieves the ID of a version.
SE_versioninfo_get_name | SeVersion.getName | Retrieves the version name.
SE_versioninfo_get_parent_id | SeVersion.getParentId | Retrieves the parent ID of a version.
SE_versioninfo_get_parent_name | SeVersion.getParentName | Retrieves the parent name.
SE_versioninfo_get_state_id | SeVersion.getStateId | Retrieves the state ID of a version.
SE_versioninfo_set_access | SeVersion.setAccess | Sets the version access type.
SE_versioninfo_set_description | SeVersion.setDescription | Sets a version description.
SE_versioninfo_set_name | SeVersion.setName | Sets a version name.
SE_versioninfo_set_parent_name | SeVersion.setParentName | Sets the parent name.
SE_versioninfo_set_state_id | SeVersion.changeState | Sets the state ID of a version.

State functions

C | Java | Function Description
SE_state_close | SeState.close | Changes a state definition.
SE_state_compress_tree | SeState.compressTree | Changes the state of a state.
SE_state_create | SeState.create | Creates a new state.
SE_state_delete | SeState.delete | Deletes a state.
SE_state_delete_range | SeState.deleteRange | Deletes a list of states.
SE_state_free_info_list | NA | Releases memory allocated for a list of state structures.
SE_state_free_lock | SeState.freeLock | Unlock a locked state..
SE_state_get_info | SeState Constructor 2 | Retrieves a state definition.
SE_state_get_info_list | SeConnection.getStateList | Retrieves an array of SE_STATEINFO structures for all accessible states.
SE_state_lock | SeState.lock | Locks a state.
SE_state_merge | SeState.merge | Merges two states.
SE_state_open | SeState.open | Opens a state.
SE_state_trim_tree | SeState.trimTree | Removes states between two given states.

Stateinfo functions

C | Java | Function Description
SE_stateinfo_create | SeState constructors | Creates a state definition.
SE_stateinfo_duplicate | SeState.clone | Copies a state definition.
SE_stateinfo_free | NA | Frees memory allocates for a state definition.
SE_stateinfo_get_closing_time | SeState.getClosingTime | Retrieves the state closing time.
SE_stateinfo_get_creation_time | SeState.getCreationTime | Retrieves the state creation time.
SE_stateinfo_get_id | SeState.getId | Retrieves the ID of a state.
SE_stateinfo_get_lineage | SeState.getLineage | Retrieves the lineage.
SE_stateinfo_get_owner | SeState.getOwner | Retrieves the owner.
SE_stateinfo_get_parent | SeState.getParent | Retrieves the parent.
SE_stateinfo_is_open | SeState.isOpen | Returns TRUE if state is open..

Enable and check the status of multi-versioned views:

C | Java | Function description
SE_table_create_mv_view | SeTable.createMultiVersionView | Creates a multi-versioned view on a versioned table.
SE_table_delete_mv_view | SeTable.deleteMultiVersionView | Deletes the multi-versioned view associated with a versioned table.
SE_reginfo_get_mv_view_name | SeRegistration.getMvViewName | Returns the name of the multi-versioned view associated with this table registration.

Raster column functions

C | Java | Function Description
SE_rastercolumn_alter | Not Implemented | Creates a raster column's characteristics.
SE_rastercolumn_create | Not Implemented | Creates a raster column entry in the raster datastore.
SE_rastercolumn_delete | Not Implemented | Deletes a raster column.
SE_rastercolumn_free_info_list | Not Implemented | Releases memory allocated for a list of raster column structures.
SE_rastercolumn_get_info_by_id | Not Implemented | Retrieves information about the specified raster column by ID.
SE_rastercolumn_get_info_by_name | Not Implemented | Retrieves information about the specified raster column by name.
SE_rastercolumn_get_info_list | Not Implemented | Returns an array of SE_RASCOLINFO pointers for a raster column.
SE_rastercolumn_grant_access | Not Implemented | Grants a user’s access to a raster column.
SE_rastercolumn_revoke_access | Not Implemented | Revokes a user’s access to a raster column.

Raster column info functions

C | Java | Function Description
SE_rascolinfo_create | Not Implemented | Creates an SE_RASCOLINFO structure.
SE_rascolinfo_free | Not Implemented | Releases memory allocated for an SE_RASCOLINFO structure.
SE_rascolinfo_get_access | Not Implemented | Retrieves the privileges for the specified raster column.
SE_rascolinfo_get_coordref | Not Implemented | Retrieves the coordinate reference.
SE_rascolinfo_get_creation_date | Not Implemented | Retrieves the raster column creation date.
SE_rascolinfo_get_creation_keyword | Not Implemented | Retrieves the configuration keyword.
SE_rascolinfo_get_description | Not Implemented | Retrieves the raster column’s description.
SE_rascolinfo_get_id | Not Implemented | Retrieves the raster column ID.
SE_rascolinfo_get_minimum_id | Not Implemented | Retrieves the minimum ID value.
SE_rascolinfo_get_raster_column | Not Implemented | Retrieves the table and column name.
SE_rascolinfo_is_in_load_mode | Not Implemented | Returns TRUE if in load-only mode.
SE_rascolinfo_set_coordref | Not Implemented | Sets the coordinate reference.
SE_rascolinfo_set_creation_keyword | Not Implemented | Sets the configuration keyword.
SE_rascolinfo_set_description | Not Implemented | Sets the raster column’s description.
SE_rascolinfo_set_load_mode | Not Implemented | Sets the loading mode.
SE_rascolinfo_set_minimum_id | Not Implemented | Sets the minimum ID value.
SE_rascolinfo_set_raster_column | Not Implemented | Sets the raster column name.

Raster functions

C | Java | Function Description
SE_raster_add_band | Not Implemented | Adds a band to a raster.
SE_raster_create | Not Implemented | Creates a raster entry in the raster datastore.
SE_raster_delete | Not Implemented | Deletes a raster.
SE_raster_drop_band | Not Implemented | Drops a band from a raster.
SE_raster_get_bands | Not Implemented | Returns an array of SE_RASBANDINFO pointers for a raster.
SE_raster_get_info_by_id | Not Implemented | Retrieves information about a raster by the ID.

Rasterinfo functions

C | Java | Function Description
SE_rasterinfo_create | Not Implemented | Creates an SE_RASTERINFO structure.
SE_rasterinfo_free | Not Implemented | Releases memory allocated for an SE_RASTERINFO structure.
SE_rasterinfo_duplicate | Not Implemented | Copies an SE_RASTERINFO structure.
SE_rasterinfo_get_description | Not Implemented | Retrieves the raster’s description.
SE_rasterinfo_get_rascol_id | Not Implemented | Retrieves the raster column ID.
SE_rasterinfo_get_raster_id | Not Implemented | Retrieves the raster’s ID.
SE_rasterinfo_set_description | Not Implemented | Sets the raster’s description.
SE_rasterinfo_set_rascol_id | Not Implemented | Sets the raster column ID.

Rasterband functions

C | Java | Function Description
SE_rasterband_alter | Not Implemented | Changes a raster band's characteristics.
SE_rasterband_create | Not Implemented | Creates a raster entry in the raster datastore.
SE_rasterband_delete | Not Implemented | Deletes a raster.
SE_rasterband_free_info_list | Not Implemented | Releases memory allocated for a list of raster band structures.
SE_rasterband_get_info_by_id | Not Implemented | Retrieves information about the specified raster band by ID.
SE_rasterband_get_info_list | Not Implemented | Returns an array of SE_RASBANDINFO pointers for a raster.

Rasbandinfo functions

C | Java | Function Description
SE_rasbandinfo_create | Not Implemented | Creates an SE_RASBANDINFO structure.
SE_rasbandinfo_free | Not Implemented | Releases memory allocated for an SE_RASBANDINFO structure.
SE_rasbandinfo_duplicate | Not Implemented | Copies an SE_RASBANDINFO structure.
SE_rasbandinfo_get_band_name | Not Implemented | Retrieves the name of the raster band.
SE_rasbandinfo_get_band_number | Not Implemented | Retrieves the raster band number.
SE_rasbandinfo_get_band_size | Not Implemented | Retrieves the band size.
SE_rasbandinfo_get_extent | Not Implemented | Retrieves the raster band ID.
SE_rasbandinfo_get_id | Not Implemented | Retrieves the raster band ID.
SE_rasbandinfo_get_max_level | Not Implemented | Retrieves the maximum level of the image pyramid.
SE_rasbandinfo_get_pixel_type | Not Implemented | Retrieves the raster band pixel type.
SE_rasbandinfo_get_rascol_id | Not Implemented | Retrieves the raster column ID.
SE_rasbandinfo_get_raster_id | Not Implemented | Retrieves the raster band ID.
SE_rasbandinfo_get_statistics | Not Implemented | Retrieves the statistics for the raster band.
SE_rasbandinfo_get_tile_size | Not Implemented | Retrieves the tile size.
SE_rasbandinfo_get_time | Not Implemented | Retrieves the last modification date and time.
SE_rasbandinfo_set_band_name | Not Implemented | Sets the raster band name.
SE_rasbandinfo_set_band_number | Not Implemented | Sets the raster band number.
SE_rasbandinfo_set_band_size | Not Implemented | Sets the band size.
SE_rasbandinfo_set_extent | Not Implemented | Sets the block size.
SE_rasbandinfo_set_max_level | Not Implemented | Sets the maximum level of the image pyramid.
SE_rasbandinfo_set_pixel_type | Not Implemented | Sets the raster band’s pixel type.
SE_rasbandinfo_set_rascolid | Not Implemented | Sets the raster column ID.
SE_rasbandinfo_set_statistics | Not Implemented | Sets the statistics for the raster band.
SE_rasbandinfo_set_tile_size | Not Implemented | Sets the tile size.

Rasterattr functions

C | Java | Function Description
SE_rasterattr_create | Not Implemented | Creates an SE_RASTERATTR structure.
SE_rasterattr_duplicate | Not Implemented | Creates a copy of the raster attribute structure.
SE_rasterattr_free | Not Implemented | Releases memory allocated for an SE_RASTERATTR structure.
SE_rasterattr_get_image_size | Not Implemented | Retrieves the image size.
SE_rasterattr_get_max_level | Not Implemented | Retrieves the maximum level.
SE_rasterattr_get_num_bands | Not Implemented | Retrieves the number of raster bands.
SE_rasterattr_get_pixel_type | Not Implemented | Retrieves the pixel type.
SE_rasterattr_get_rascol_id | Not Implemented | Retrieves the raster column ID.
SE_rasterattr_get_raster_id | Not Implemented | Retrieves the raster ID.
SE_rasterattr_get_raster_info | Not Implemented | Retrieves the raster.
SE_rasterattr_get_rasterband_info | Not Implemented | Retrieves the raster band.
SE_rasterattr_get_rasterband_info_list | Not Implemented | Retrieves a list of raster bands.
SE_rasterattr_get_tile_size | Not Implemented | Retrieves the tile size.
SE_rasterattr_set_callback | Not Implemented | Sets a callback.
SE_rasterattr_set_image_size | Not Implemented | Sets the image size.
SE_rasterattr_set_pixel_type | Not Implemented | Sets the pixel type.
SE_rasterattr_set_tile_size | Not Implemented | Sets the tile size.

Rasconstraint functions

C | Java | Function Description
SE_rasconstraint_create | Not Implemented | Creates an SE_RASCONSTRAINT structure.
SE_rasconstraint_free | Not Implemented | Releases memory allocated for an SE_RASCONSTRAINT structure.
SE_rasconstraint_set_bands | Not Implemented | Sets the bands.
SE_rasconstraint_set_envelope | Not Implemented | Sets the envelope.
SE_rasconstraint_set_interleave | Not Implemented | Sets the interleave.
SE_rasconstraint_set_level | Not Implemented | Sets the level.

Rastileinfo functions

C | Java | Function Description
SE_rastileinfo_create | Not Implemented | Creates an SE_RASTILEINFO structure.
SE_rastileinfo_free | Not Implemented | Releases memory allocated for an SE_RASTILEINFO structure.
SE_rastileinfo_get_band_id | Not Implemented | Retrieves the raster band ID.
SE_rastileinfo_get_rowcol_number | Not Implemented | Retrieves the row and column values.
SE_rastileinfo_get_level | Not Implemented | Retrieves the level.
SE_rastileinfo_get_pixel_data | Not Implemented | Retrieves the pixel data.
SE_rastileinfo_set_band_id | Not Implemented | Sets the raster band ID.
SE_rastileinfo_set_level | Not Implemented | Sets the level.
SE_rastileinfo_set_pixel_data | Not Implemented | Sets the pixel data.
SE_rastileinfo_set_rowcol_number | Not Implemented | Sets the row and column number.

Functions to set up an attribute query

C | Java | Function Description
SE_stream_query | SeQuery.prepareQuery | Initiates a query
SE_stream_query_from_file | Not implemented | Initiates a query on an external file.
SE_stream_query_logfile | SeQuery.prepareQueryLogfile | Initiates a stream query statement using a logfile as the data source.
SE_stream_prepare_sql | SeQuery.prepareSql | Prepares an arbitrary SQL statement for a stream.

Functions to Execute the Query

C | Java | Function Description
SE_stream_execute | SeQuery.execute (SeInsert.execute, SeUpdate.execute, SeDelete.execute) | Executes the given stream.

Functions to fetch results

C | Java | Function Description
SE_stream_fetch | SeQuery.fetch | Fetches the next row from a stream
SE_stream_fetch_row | SeQuery.fetchRow | Retrieves a single feature based on the ID from the specified table.
SE_stream_get_blob | SeRow.getBlob | Gets a Binary Large Object column from the current row.
SE_stream_get_date | SeRow.getDate | Gets a date column from the row.
SE_stream_get_double | SeRow.getDouble | Gets a double-precision column from the row.
SE_stream_get_ext_error | SeError.getExtError | Returns the extended error information.
SE_stream_get_float | SeRow.getFloat | Gets a single-precision float column from the row.
SE_stream_get_integer | SeRow.getInteger | Gets an integer column from the row.
SE_stream_get_raster | Not mplemented | Gets a raster column from the row.
SE_stream_get_raster_tile | Not implemented | Gets a raster tile from the row.
SE_stream_get_shape | SeRow.getShape | Gets a shape column from the row.
SE_stream_get_smallint | SeRow.getShort | Gets a small integer column from the row.
SE_stream_get_spatial_masks | SeRow.getSpatialMasks | Returns the spatial filter masks for the current row.
SE_stream_get_string | SeRow.getString | Gets a string column from the row.
SE_stream_bind_output_column | NA | Binds a column to an output data location for fetches.

Functions to set the Spatial Constraint

C | Java | Function Description
SE_stream_set_spatial_constraints | SeQuery.setSpatialConstraints | Sets the spatial constraints for a stream

Functions to insert data

C | Java | Function Description
SE_stream_insert_into_file | Not implemented | Prepares to insert a row into an external file.
SE_stream_insert_table | SeInsert.intoTable | Initiates a stream insert into a specified table.
SE_stream_set_blob | SeRow.setBlob | Sets the value for a blob column.
SE_stream_set_date | SeRow.setDate | Sets the value for a date column.
SE_stream_set_double | SeRow.setDouble | Sets the value for a double-precision column.
SE_stream_set_float | SeRow.setFloat | Sets the value for a single-precision float column.
SE_stream_set_integer | SeRow.setInteger | Sets the value for an integer column.
SE_stream_set_raster_constraint | Not implemented | Sets the raster environment for a stream.
SE_stream_set_row | SeInsert.setRow | Updates a single feature based on the ID from the specified table.
SE_stream_set_shape | SeRow.setShape | Sets the value for a shape column.
SE_stream_set_smallint | SeRow.setShort | Sets the value for a small integer column.
SE_stream_set_state | SeInsert.setState | Sets the state.
SE_stream_set_string | SeRow.setString | Sets the value for a string column.
SE_stream_set_write_mode | SeInsert.setWriteMode | Sets the write mode between single-record and stream mode.
SE_stream_flush_buffered_writes | SeInsert.flushBufferedWrites | Forces any buffered writes to post on the server.
SE_stream_bind_input_column | NA | Binds a column to an input data location for inserting a row.

Functions to Update Rows

C | Java | Function Description
SE_stream_update_row | Not implemented | Initiates a stream update into a specified row.
SE_stream_update_table | SeUpdate.toTable | Initiates a stream update into a specified table.
SE_stream_set_blob | SeRow.setBlob | Sets the value for a blob column.
SE_stream_set_date | SeRow.setDate | Sets the value for a date column.
SE_stream_set_double | SeRow.setDouble | Sets the value for a double-precision column.
SE_stream_set_float | SeRow.setFloat | Sets the value for a single-precision float column.
SE_stream_set_integer | SeRow.setInteger | Sets the value for an integer column.
SE_stream_set_raster_constraint | Not implemented | Sets the raster environment for a stream.
SE_stream_set_row | Not implemented | Updates a single feature based on the ID from the specified table.
SE_stream_set_shape | SeRow.setShape | Sets the value for a shape column.
SE_stream_set_smallint | SeRow.setShort | Sets the value for a small integer column.
SE_stream_set_state | SeUpdate.setState | Sets the state.
SE_stream_set_string | SeRow.setString | Sets the value for a string column.
SE_stream_set_write_mode | SeUpdate.setWriteMode | Sets the write mode between single-record and stream mode.
SE_stream_flush_buffered_writes | SeUpdate.flushBufferedWrites | Forces any buffered writes to post on the server.
SE_stream_bind_input_column | NA | Binds a column to an input data location for inserting a row.

Functions to Delete Rows

C | Java | Function Description
SE_stream_delete_row | SeDelete.byId | Deletes a specified row from a layer
SE_stream_delete_by_id_list | SeDelete.byIdList | Deletes specified rows by IDs from a table.
SE_stream_delete_from_table | SeDelete.fromTable | Deletes rows from a table using an SQL where clause.


SQL Interface

SQL Application Programmer's Interface

While ArcSDE does not specifically deliver a SQL API, there are SQL functions available to users of IBM DB2 Spatial Extender and Informix Spatial DataBlade. Those functions are documented here for convenience. They are also documented with the delivery of the Spatial Extender and the Spatial DataBlade by the respective RDBMS vendors. For more information on these vendor products, please consult their web pages:

Product Information for IBM DB2 Spatial Extender

Product Information for Informix Spatial DataBlade

Function references


Administrator Command References

ArcSDE Administrator Command References

The administration commands allow the ArcSDE administrator, usually a database administrator, to manage and monitor the use of an ArcSDE service. This section describes these commands in detail, providing both the syntax and example usage.

• Command listing

• Command syntax

• Getting help

• Working with ArcSDE services

• ArcSDE system environment variables

Command listing

The command names begin with "sde" except for four; cov2sde, shpinfo, shp2sde, and tbl2sde. The names identify the command's functions. For example, sdetable works with tables, while sdeimport imports ArcSDE export files.

cov2sde - Imports data from a coverage

sdedbtune - Imports and exports a dbtune parameters stored in the DBTUNE table

sdeexport - Creates an ArcSDE export file

sdegroup - Compresses geometries into multi-part geometry for very fast display

sdeimport - Imports data from an ArcSDE export file

sdelayer - Creates and manages of feature classes (layers)

sdelocator - Defines geolocation information in the database

sdelog - Manages log tables

sdemon - Manages the ArcSDE server

sderaster - Manages rasters

sdeservice - Manages the ArcSDE service on Windows NT platforms

sdesetupmssql - Creates and updates sde meta tables and stored procedures (SQL Server)

sdesetupora8 - Creates and updates sde meta tables and stored procedures (Oracle 8)

sdesetupora8i - Creates and updates sde meta tables and stored procedures (Oracle 8i)

sdesetupinfx - Creates and updates sde meta tables and stored procedures (Informix)

sdesetupdb2 - Creates and updates sde meta tables and stored procedures (DB2)

sdetable - Creates and manages tables and views

sde2cov - Converts an ArcSDE feature class (layer) to a coverage

sde2shp - Converts an ArcSDE feature class (layer) to a shapefile

sde2tbl - Converts an ArcSDE table to a dBASE®, INFO™, or ArcSDE table

sdeversion - Manages versions and states

sdexinfo - Describes an ArcSDE export file

shpinfo - Reports information about a shapefile

shp2sde - Converts an ESRI® shapefile to an ArcSDE feature class (layer)

tbl2sde - Converts a dBASE®, INFO™, or ArcSDE table to an ArcSDE table

Command syntax style

The administration commands use UNIX style command syntax and notation according to the following conventions:

-<letter> - Specifies a command operation or option, for example, "-o" or "-a". Letters are both lowercase and uppercase.

< >- Required argument. Replace appropriately. For example,
"-u <DB_User_name>" could become "-u av".

| - Mutually exclusive arguments. Pick one from the list.

{ } - Used with " | " to specify a list of choices for an argument.

[ ] - Optional parameter.

Each command has "operations" and "options". An operation does a specific task related to the command and is specified with "o <task>". For example, some of the sdetable command operations are:

sdetable -o create
sdetable -o delete
sdetable -o truncate
sdetable -o list
sdetable -o describe
sdetable -o create_index
sdetable -o delete_index

Each operation has a set of options. Just like operations, options are specified by "-<letter>". The -"<letter>" used for a particular option is standard across all commands. For instance, the option to specify a service is always "-i". Sometimes a letter is used for two different types of options, but never in the same command. In sdelayer, the "-f" option defines the initial number of features and average points per feature. Other administration commands use "-f" to point to a file.

For each command's operation, there are mandatory and non-mandatory options.

sdelog -o list -u <username [-i <service>] [-q]>

The example above has three options. Anything enclosed within "[ ]" isn't required. The username option is required, while service "[i]" and quiet "[q]" aren't. Sometimes an option marked optional is not truly optional. The most common occurrence is "[-p <DB_User_password>]". It is optional on the command line, but ArcSDE will query for the password if it is not given. For example:

$ sdetable -o delete -t test30 -u sde

Enter Database User password:

Some options have a list of choices such as

shp2sde -o append [-a {none | all | file=<file_name>}]

The "-a" option in this example allows you to choose how to execute the option. These elements are enclosed in curly brackets.

A few options have two or more parameters separated by commas. The most common is

-l <table,column>

which specifies a business table and column. Do not add spaces between the parameters.

UNIX users should be careful with special characters such as "?". Depending on the UNIX shell version, you may need to use the appropriate quote character to use a special character. For example, you can use the "-?" operation with any administration command to get help. If you're using a C shell (rather than a
Bourne shell), you must use "\", which tells the shell to use the next character directly rather than as a special character.

Therefore, in a C shell, you must use

$ sdetable -\?

In a Bourne shell, you can simply use

$ sdetable -?

Some commands include optional SQL query statements, or "where clauses", to limit the features retrieved from a table or log file. If this option is included, the query must be quoted (for example, "area < 1000"). If your DBMS encloses character literals with single quotes, enclose the entire expression with double quotes
(e.g., " state_code = 'CO' "). If your DBMS encloses character literals with double quotes, enclose the entire expression with single quotes, for example, ' state_code = "CO" ' .

Getting help

You can list the usage, operations, and options for any ArcSDE administration command with the "-h" or "-?" options.

$ sdedbtune -

Usage for sdedbtune:

sdedbtune -o import -f <DBTune file> [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]
sdedbtune -o export -f <DBTune file> [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

Operations:
Import DBTune file into database
Export contents of DBTune table to specified table.

Options:
-f Import/Export DBTune file name
Import from (Export to) $SDEHOME/etc directory
-D Database name
-h help
-i SDE instance
-N No Verification
-o Operation
-p DB User password
-q Quiet
-s Server name
-u DB User name
-? Help

Working with ArcSDE services

You can specify a service in several ways. By default, the service is named in the SDEHOME/etc/services.sde file. However, you can override the service in the services.sde file in three ways:

• The SDEINSTANCE environment variable can be set to the name of a service.

setenv SDEINSTANCE esri_sde3

• The sdemon command "-i <service>" option accepts the service name as its argument.

• The sdemon command "-H <sde_directory>" option specifies the home directory (normally one not specified by $SDEHOME) within which the etc/services.sde file contains the service name.

The "-i <service" and "-H <sde_directory>" options are mutually exclusive and cannot be used together. Either of the options override the service specified in both the SDEINSTANCE variable and the SDEHOME\etc\services.sde file.

Either

<service> is specified in the -i option

or

<service> is listed in the services.sde file located in the home directory specified by the -h <sde_directory> option.

If neither of the above have been specified:

The service is specified by the SDEINSTANCE system variable.

If no SDEINSTANCE variable exists:

The service is specified in the SDEHOME/etc/services.sde file.

The port:<port number> can be substituted for the service name if you wish to enter the port number of the service name directly.

$ sdelayer -o list -u av -p mo -i port:5151

The above set of rules does not apply to the sdemon "-o start" operation. For this operation, specifying the service on the command line specifies that you wish to perform a remote startup.

Refer to the book 'Managing ArcSDE services' for more information on using remote startup.

The "start" operation doesn't use the service specified in the SDEINSTANCE variable.

Administration commands and services

All administration commands, except sdesetup*, connect to the service through the giomgr process and are clients of the ArcSDE service.

For these commands the default service is "esri_sde". To operate on a service other than the default, you must set the SDEINSTANCE variable or include the
"-i <service>" option on the administration command line.

$ setenv SDEINSTANCE production

$ sdelayer -o list -u arcview -p mapobjects

or

$ sdelayer -o list -u arcview -p mapobjects -i production

The sdesetup* commands behave differently because they must be able to directly connect to the DBMS instance.

The sdesetup* command also requires you to enter either the database administrator's password or the sde user password, depending on the DBMS used. Please refer to the SDE Install guide for details.

ArcSDE system environment variables

All of the administration commands are located in the bin directory under $SDEHOME or %SDEHOME%. Each program within the bin directory administers different parts of the ArcSDE installation. Be sure to set the $SDEHOME or %SDEHOME% environment variable and include $SDEHOME/bin or %SDEHOME%\bin in your system "path" variable. Once you add the bin directory to the PATH environment variable, you can execute the administration programs without the full file specification.

You can also set other environment variables. ArcSDE administration commands such as sdelayer and cov2sde often require you to specify the server, service, database, user, and password. You can avoid having to type these by defining environment variables.

Setting ArcSDE system environment variables on UNIX

1. Using the appropriate UNIX shell syntax, set the SDEHOME variable to reflect the ArcSDE installation directory.

Bourne Shell: $ SDEHOME=/disk1/sdeexe81
$ export SDEHOME

C Shell: $ setenv SDEHOME /disk1/sdeexe81

2. Print the current shell environment to confirm settings.

Bourne Shell: $ env
C Shell: $ printenv

Setting ArcSDE system environment variables on Windows NT (with Windows tools)

1. Click the Start menu, select Settings, and click Control Panel. Double-click Systems and click the Environment tab on the Systems Properties panel.

2. Type SDEHOME in the Variable input box and type the path to the ArcSDE installation in the Value input box.

3. Click Set and then click OK.

ArcSDE specific variables that you can set are:

• SDESERVER—ArcSDE server

• SDEDATABASE—your database name (not required for some DBMSs)

• SDEHOME- system path location of the ArcSDE software

• SDEINSTANCE—ArcSDE service name

• SDEUSER—your username

• SDEPASSWORD—your password

You may override the environment variables by typing a different value on the command line. Normally, if you don't give your password, you are prompted for it. If the SDEPASSWORD environment variable is set, that value is used and you won't be prompted. Storing a password with the SDEPASSWORD environment variable is not secure.

Setting the ArcSDE- supported variables on UNIX and Windows NT (with DOS)

Set each supported variable using the appropriate UNIX shell syntax or use the MS_DOS "set" command.

Bourne Shell:
$ SDESERVER=cymru
$ export SDESERVER
$ SDEINSTANCE=arcsde8
$ export SDEINSTANCE
$ SDEUSER=sdeuser
$ export SDEUSER
$ SDEPASSWORD=cymru
$ export SDEPASSWORD

C Shell:
$ setenv SDESERVER cymru
$ setenv SDEINSTANCE arcsde8
$ setenv SDEUSER sdeuser
$ setenv SDEPASSWORD sdepswd

MS_DOS:
C:\ set SDESERVER cymru
C:\ setSDEINSTANCE arcsde8
C:\ set SDEUSER sdeuser
C:\ set SDEPASSWORD sdepswd

As an example, try using the sdelayer command to describe a feature class (layer).

$ sdelayer -o describe -l cities,shape

If these variables haven't been defined, you must use this alternative command syntax.

$ sdelayer -o describe -l cities,shape -s cymru -i arcsde8 -u sdeuser -p sdepswd

Note: The sdemon command does not support the use of these environment variables.

cov2sde

This command converts ArcInfo data to ArcSDE feature classes.

Usage syntax

cov2sde -h

cov2sde -o create -l <table,column> [-V <version_name>]
-f <cover,feature_cls> [Spatial_Index]
[{-R <SRID> | [Spatial_Ref_Opts]}]
[-r <anno_relate>] [-d <dissolve_item>]
[-M <minimum_ID>] [-S <layer_description_str>]
[-e <entity_mask>] [-v] [-a {none | all | file=<file_name>}]
[-k <config_keyword>] [-c <commit_interval>] [-i <service>]
[-s <server_name] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

Where [Spatial_Ref_Opts] := [-x <xoffset,yoffset,xyscale>]
[-z <zoffset,zscale>] [-m <moffset,mscale>]
[-G {<projection_ID> | file=<proj_file_name>}]

[Spatial_Index] := [-g {<grid_size>1[,<grid_size2>[,<grid_size3>]] |
SPIDX_GRID,<grid_1>[,<grid_2>[,<grid_3>]] |
SPIDX_NONE |
SPIDX_RTREE |
SPIDX_DBTUNE |
SPIDX_FIXED,<sdo_level> |
SPIDX_HYBRID,<sdo_level>,<sdo_numtiles>}]

cov2sde -o init -l <table,column> -f <cover,feature_cls>
[-r <anno_relate>] [-d <dissolve_item>]
[-a {none | all | file=<file_name>}]
[-c <commit_interval>] [-i <service>]
[-s <server_name>] [-D <database>]
[-u <DB_User_name> [-p <DB_User_password>] [-v]

cov2sde -o append -l <table,column> [-V <version_name>]
-f <cover,feature_cls> [-r <anno_relate>] [-d <dissolve_item>]
[-a {none | all | file=<file_name>}] [-c <commit_interval>]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-v]

Operations

create Creates a new ArcSDE feature class and imports features into the new feature class from the coverage feature class—an error is returned if the feature
class already exists

init Deletes all of the features of an existing feature class before importing new features from the coverage feature class

append Adds features from the coverage to an existing feature class—the default

Options

-a Attribute mode:

none Do not load any attributes—this is the default

all Load all attribute columns. If no attribute table exists for the feature class, one will be created. If one exists, then incoming schema must be
union compatible with the existing table if the APPEND option is used.

file=<file_name> File containing lines of the form <INFO_item> [SDE_column]. The INFO_item selects the column to be output; the SDE_column
(optional) is the new column name to be specified.

-c Commit rate (default: AUTOCOMMIT from $SDEHOME/etc/giomgr.defs)

-d Dissolve item for Map LIBRARIAN layer only

-D Database name

-e Entity types allowed (npsla3+MA)

-f Input feature class name from:
Coverage: -f <cover,feature_cls>
Librarian: -f <lib_name.layer_name,feature_cls>
ArcStorm: -f <db_name.lib_name.layer_name,feature_cls>
For annotation, regions, and routes the feature class subclass is specified as: <feature_cls.subclass_name>

-g Spatial index type and parameters
<grid1,grid2,grid3> or SPIDX_GRID,<grid1,grid2,grid3> -- Create multi-level grid index; grid2, grid3 are optional.
SPIDX_DBTUNE -- Use DBTUNE parameters to index.
SPIDX_NONE -- No spatial index is created.
SPIDX_RTREE -- Create Rtree index.
SPIDX_FIXED,<lvl> -- Create fixed Quadtree index.
SPIDX_HYBRID,<lvl,ntiles> -- Create hybrid Quadtree index.

-G Projection specifier (default: coverage's projection if exists) <projection_ID> Projection ID
file=<proj_file_name> File containing projection description string

-h Prints usage and options

-i ArcSDE service name

-k Configuration keyword (default: DEFAULTS)

-l Feature class table and spatial column name

-m Measure offset, measure scale

-M Layer's minimum ID (default: 1)

-o Operation

-p ArcSDE user DBMS password

-r Annotation relate name to load anno and feature at the same time. Relate will be loaded from the INFO table <cover.REL>.

-R Spatial reference ID (SRID)

-s ArcSDE server hostname (default: localhost)

-S Map layer description string

-u ArcSDE user DBMS username

-v Verbose diagnostic output

-V Version name. If specified, data is inserted into the version. Not allowed for the init operation -x xoffset, yoffset, xyscale (default: 0.0, 0.0, 1.0)

-z zoffset, zscale (default: 0.0, 1.0)

-? Prints usage and options (use "-\?" on C shell)

Discussion

Cov2sde won't load feature-associated annotation from Map LIBRARIAN layers. To load feature-associated annotation from Map LIBRARIAN, extract the data to a coverage and then import it from the coverage.

If loading annotations with no subclass using the "-o create" operation, you must use the "-a none" option. You can also load annotations with no subclass into an existing feature class (layer) with the "-o append" or "-o init" operations.

Column names that contain a pound sign "#" or a dash "-" will have different names in the new ArcSDE feature class (layer) because these characters are converted to underscores. Although <cover#> and <cover-id> will be different, cov2sde will automatically match these columns. If multiple coverages with the same items are imported, create only one feature class (layer) and then load all subsequent coverages with the "-o append" operation; the <cover#> and <cover-id> items will be matched automatically.

Feature class to ArcSDE entity (feature) type mapping
Coverage feature class | ArcSDE entity (feature) type
point, node | point (p)
line | simple line, line (sl)
polygon | area (a)
region.<subclass> | multipart area (a+)
route.<subclass> | multipart lines with measures (slM+)
anno.<subclass> | point, line, simple line, anno (pslA)

It may be necessary to widen the output width of any item using the INFO ALTER command. If the INFO LIST command is displaying asterisks
(i.e, ******) for any of the items of the coverage feature attribute table, increase the items output width. The cov2sde command uses the INFO item definition
to derive the ArcSDE column definition. If an item value doesn't display, then it will not load into the DBMS table. This problem will manifest itself
as a DBMS error stating that the value is larger than the specified column precision allows.

The "create" operation requires you to provide a spatial reference. You may use an existing spatial reference system by entering the SRID number. Valid SRID numbers may be obtained by querying the sde.spatial_ref_sys table.

You can also enter the spatial reference by supplying the information directly. Spatial reference information includes the x- and y-coordinate offsets, x- and y-coordinate system units, z- coordinate offset, z-coordinate system units, measures offset, measure system units and the coordinate reference system. If no false x,y and scale values are provided by the "-x" option, the extent of the coverage, ArcStorm™ library, or map library is used to calculate these values automatically. Note that the resulting feature class (layer) will have the highest attainable scale factor for that extent. If features that fall outside of the original coverage's extent are appended to the feature class (layer) with subsequent loading operations, they will be rejected.

Examples

1. Loading the regions from a coverage:

$  cov2sde -o create -l country,shape -f country,region.cntry -a all -s tiffany -i esri_av -u andy -p passwrd -g 20,0,0

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-------------------------------------------------------

Loading feature class/subclass "region.cntry" from Coverage "country"

Imported 166 features into SDE country,shape from coverage country,region.cntry

Cov2SDE completed.

2. Loading polygons from an ArcStorm layer:

$ cov2sde -o create -l counties,feature -f worldas.worldlib.country,polygon -a all -s tiffany
-i esri_av -u andy -p password -g 20,0,0

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-------------------------------------------------------

Loading feature class/subclass "polygon" from ArcStorm layer "/ultra1/worldas/worldlib/country"

Cov2SDE completed.

3. Loading lines from a coverage with feature-associated annotation:
First, establish a relate between the feature attribute table (in this case AAT) and the text attribute table (TAT). Save the relate to an INFO file named <cover.rel>:

Arc: relate add
Relation Name: cityrel
Table Identifier: cities.tatname
Database Name: info
INFO Item: cities-id
Relate Column: cities-id
Relate Type: linear
Relate Access: ro
Relation Name:

Arc: relate save cities.rel
1 Relates saved to file cities.rel

Arc: q

Specify the name of the relate with -r <relate>. Cov2sde will load the relate from the INFO file called <cover.rel>:

$ cov2sde -o create -l cities,feature -f cities,point -r cityrel -g 20,0,0 -x -180,-90,10000 -e pA -k WORLD -a all -s stout -u world -p world

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Loading feature class/subclass "point" from Coverage "cities"

Imported 606 features into SDE cities,feature from coverage cities,point

Cov2SDE completed.

4. Loading points from an Map Librarian layer:

$ cov2sde -o create -l cities,feature -f maplib.cities,point -g 20,0,0 -x -180,90, 10000 -e slA -k WORLD -a all -s stout -u world -p world

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Loading feature class/subclass "point" from MapLibrarian layer "/ultra1/maplib/cities"

Cov2SDE completed.

5. Loading standalone annotation from an ArcStorm layer:

$ cov2sde -o create -l rivernames,feature -f worldas.worldlib.rivers, anno.riv -g 20,0,0 -x -180,-90,10000 -e slA -k WORLD -a all -s stout -u world -p world

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Loading feature class/subclass “anno.riv” from ArcStorm layer “/ultra1/worldas/worldlib/rivers”

Cov2SDE completed.

6. Loading feature-associated annotation from an ArcStorm layer:
First, establish a relate between the feature attribute table (in this case PAT) and the text attribute table (TAT). Save the relate to an INFO file named <database>.<library>.<layer.rel>:

Arc: relate add
Relation Name: cityrel
Table Identifier: !cities.tatname
Database Name: info
INFO Item: cities-id
Relate Column: cities-id
Relate Type: linear
Relate Access: ro
Relation Name:

Arc: relate save worldas.worldlib.cities.rel
1 Relates saved to file worldas.worldlib.cities.rel

Arc: q

Specify the name of the relate with -r <relate>. Cov2sde will load the relate from an INFO file called <database>.<library>.<layer.rel>:

$ cov2sde -o create -l cityname,shape -f worldas.worldlib.cities,point -r cityrel -e pA -g 20,0,0 -a all -u world -p world

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Loading feature class/subclass "point" from ArcStorm layer "/bevo4/andym/arcstorm/worldas/worldlib/cities"

Cov2SDE completed.

7. Creating a multiversioned feature class (layer) from a polygon coverage:

$ sdeversion -o create -V version1 -S 0 -A public -d ‘Base version’ -u andy -p andy -s tiffany -i esri_av

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Successfully created new version ANDY.version1:
Base version

Version Name:             MARK.version1
Parent Version Name:
State ID:                 0
Access:                   Public
Creation Time:            Thu Sep 23 11:22:49 1999

$ cov2sde -o create -l country,shape -f country,polygon -a all -s tiffany -i esri_av -u andy -p passwrd -g 20,0,0 -V version1

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Coverage to Layer Loading        Administration Utility
-----------------------------------------------------

Loading feature class/subclass “polygon” from Coverage “country”

Imported 273 features into SDE country,shape from coverage country,polygon

Cov2SDE completed.

sdedbtune

This command exports and imports an ArcSDE dbtune file.
Usage syntax

sdedbtune -h
sdedbtune -?

sdedbtune -o import -f <DBTune file> [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]
[-N] [-q]

sdedbtune -o export -f <DBTune file> [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name [-p <DB_User_password]
[-N] [-q]

Operations

import Imports the entire DBTune file into the DBTune table for the specified database, replacing the contents of the DBTune table.

export Exports the entire DBTune table to the specified DBTune file.

Options

-f DBTune file.

-i ArcSDE service name

-s ArcSDE server hostname (default: localhost)

-D Database or data source name. Not supported by all DBMS

-u ArcSDE administrator DBMS user

-p ArcSDE administrator DBMS password

-N No verification is performed. The operation begins immediately after being invoked

-q Quiet; all titles and warnings are suppressed

Discussion

The sdedbtune administration command allows you export the entire dbtune table to a file for editing. The file can then be edited with a file-based editor such as vi or emacs, and imported back into the dbtune table. Essentially through this command you are able to update the dbtune table using a file based editor.

Please note that the entire contents of the dbtune table are overwritten with the contents of the edited export file during the import operation. Do not attempt to import the file while tables or layers are being created or altered.

For more information regarding the dbtune keywords and parameters for your DBMS, please consult the appendices of the ArcSDE Configuration and Tuning Guide for your DBMS.

sdeexport

This command creates an ArcSDE export file.

Usage syntax

sdeexport -h

sdeexport [-o create] -l <table,column> [-V <version_name>]
-f <{export_file> | -} [-O] [-w <"where_clause">]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

sdeexport -o create21 -l <table,column> [-V <version_name>]
-f <{export_file> | -} [-O] [-w <"where_clause">]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

Operations

create Creates export format file version 3.0.2 (default)—for backward compatibility

create21 Creates export format file for SDE 2.1

Options

-f Export format filename. Export to standard output if set to "-".

-h Prints usage and options

-i ArcSDE service name

-l Feature class table and spatial column name

-O Export in spatial index order

-p ArcSDE user DBMS password

-s ArcSDE server hostname (default: localhost)

-u ArcSDE user DBMS username

-V Version name. If specified, use only the data that belongs to the version.

-w SQL where clause

-? Prints usage and options (use "-\?" on C shell)

sdegroup

This command merges features by combining their geometry into mulipart shapes.
Features are grouped by tiles or by an business table attribute

Usage syntax

sdegroup -h

sdegroup -?

sdegroup -o create -S <source_layer,spl_column>
[-s <server_name>] -T <target_layer, spl_column>
-e <entity_type> [-a {none | all | file=<file_name>}]
[-D <database>] [-c <commit_interval>] [-i <service>]
[-k <config_keyword>] [-w <"where_clause">] [spatial index]
-u <DB_User_name> [-p <DB_User_password>] [-q]
[-t <Tile_size> | column=<col_name>]

sdegroup -o init -S <source_layer,spl_column> [-s <server_name>]
-T <target_layer,spl_column> [-D <database>]
[-c <commit_interval>] [-i <service>]
[-a {none | all | file=<file_name>}]
[-k <config_keyword>] [-w <"where_clause">]
-u <DB_User_name> [-p <DB_User_password>]
[-N] [-q] [-t <Tile_size> | column=<col_name>]

sdegroup -o append -S <source_layer,spl_column>
[-s <server_name>] -T <target_layer,spl_column>
[-D <database>] [-c <commit_interval>]
[-i <service>] [-a {none | all | file=<file_name>}]
[-k <config_keyword>] [-w <"where_clause">]
-u <DB_User_name> [-p <DB_User_password>]
[-N] [-q] [-t <Tile size> | column=<col_name> ]

[Spatial_Index] := [-g {<grid_size1> [,<grid_size2> [,<grid_size3>]] |
SPIDX_GRID,<grid_1>[,<grid_2>[,<grid_3>]] |
SPIDX_NONE |
SPIDX_RTREE |
SPIDX_DBTUNE |
SPIDX_FIXED,<sdo_level> |
SPIDX_HYBRID,<sdo_level>,<sdo_numtiles>}]

Operations

create Creates a new ArcSDE layer and imports features into it from a source layer based on a grouping of shapes into a single feature

init Deletes all features from an existing target layer before importing the grouped features from the source layer

append Adds features from a source layer into any existing target layer

Options

-a Attribute mode:

none Do not load any attributes—default
all Load all attribute columns. If no attribute table exists for the feature, one will be created. If one exists, then incoming schema must be union
compatible with the existing table if the APPEND option is used.
file=<file_name> File containing lines of the form <shape_column> [ sde_column]. The shape_column selects the column to be output;
the sde_column is the new name to be specified.

-c Commit rate

-D Database or data source name. Not supported by all DBMSs.

-e Entity types allowed (psla+). If your source layer has multiple shape types but you restrict the entity type to one shape type, only that shape type is copied to the
target feature class. For example, if the source layer has lines and area shapes, but you use "-e a+", only area shapes will be grouped and written to the new layer.

p Point shapes
s Line (spaghetti) shapes
l Simple line (line string) shapes
a Area shapes
+ Multipart shapes

-g Spatial index type and parameters
<grid1,grid2,grid3> or SPIDX_GRID,<grid1,grid2,grid3> -- Create multi-level grid index; grid2, grid3 are optional.
SPIDX_DBTUNE -- Use DBTUNE parameters to index.
SPIDX_NONE -- No spatial index is created.
SPIDX_RTREE -- Create Rtree index.
SPIDX_FIXED,<lvl> -- Create fixed Quadtree index.
SPIDX_HYBRID,<lvl,ntiles> -- Create hybrid Quadtree index.

-h Prints usage and options

-i ArcSDE service name

-k Configuration keyword present in the dbtune table.

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-p ArcSDE user DBMS password

-q Quiet; all titles and warnings are suppressed

-s ArcSDE server hostname (default: localhost)

-S Source layer and spatial column names. If you are not the owner of the table, you must qualify the table name as "owner.table".

-t Either the size of the tiles (default size is 2),
or the name of a column whose values the features are to be grouped on.

-T Target layer and spatial column names. If you are not the owner of the table, you must qualify the table name as "owner.table".

-u ArcSDE user DBMS username

-w SQL where clause

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sdegroup command uses either tiles or a column value to group shapes into new multipart shapes. Using sdegroup can improve performance and display speed by reducing the number of rows that must be fetched from the database. However, you will lose the attribute data. The new table will be populated with the attribute values of the first feature for each new feature.

If you are grouping on a tile size, use a common viewing or query area to determine the tile size. If clients usually want to see an area of 1,600 square miles (40 by 40 miles) on a feature class (layer) that's 40,000 square miles (200 by 200 miles), you might want to use a tile size of 40. This will group the original features into 25 new features. Remember to consider the unit of measure of the feature class (layer). If the feature class's (layer) unit of measure is feet, you would use 211,200 for the previous example.

Grouping on a column is usually done to combine all of the features have having the same value into single feature. For instance if a feature class containing roads contains roads that are segmented into many linestrings, roads with the same name could be combined into a single multilinestring by grouping on a NAME column.

If the spatial index of the target and source feature class is a grid, you should increase the size of the grid cells because you're reducing the number of features in the each grid. How much depends on the size of the resulting grouped features. Run sdelayer -o si_stats to obtain grid statitics of the resulting target feature class and determine if an adjustment to the grid cell size is necessary.

To create a new feature class (layer), target_cities, from the original cities feature class, use the following command syntax:

$ sdegroup -o create -S cities,shape -T target_cities,shape -u av -p mo
  -t 1 -e p+ -g 20,0,0 -i esri_81

The tile size is one, and only points will be copied from the cities feature class (layer).

The new feature class, target_roads, combines linestrings from the source feature class roads into multilinestrings based on their name:

$ sdegroup -o create -S roads,shape -T target_roads,shape -u av -p mo
  -t column=name -e sl+ -g 20,0,0 -i esri_81

sdeimport

This command imports data from an ArcSDE export file.

Usage syntax

sdeimport -h

sdeimport -o append -l <table,column> [-V <version_name>]
-f <{export_file | -}> [-v] [-c <commit_interval>]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

sdeimport -o init -l <table,column> -f <{export_file | -}> [-v]
[-c <commit_interval>] [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

sdeimport -o create -l <table,column> [-V <version_name>]
-f <{export_file | -}> [-v] [-g <grid_size> ]
[-M <minimum_ID>] [-k <config_keyword>]
[-c <commit_interval>] [-i <service>]
[-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>]

where [Spatial_Index] := [-g {<grid_size1>[,<grid_size2>[,<grid_size3>]] |
SPIDX_GRID,<grid_1>[,<grid_2>[,<grid_3>]] |
SPIDX_NONE |
SPIDX_RTREE |
SPIDX_DBTUNE |
SPIDX_FIXED,<sdo_level> |
SPIDX_HYBRID,<sdo_level>,<sdo_numtiles>}]
Operations

append Imports features into an existing layer (default)

init Deletes all features of an existing layer before importing new features

create Creates a new layer based on the definition stored in the export file and imports features into the new layer—an error is returned if the layer already
exists

Options

-c Commit rate (defaults to the AUTOCOMMIT value in the giomgr.defs file)

-D Database or data source name. Not supported by all RDBMSs.

-f Export format filename. If set to '-', import from standard input.

-g Spatial index type and parameters
<grid1,grid2,grid3> or SPIDX_GRID,<grid1,grid2,grid3> -- Create multi-level grid index; grid2, grid3 are optional.
SPIDX_DBTUNE -- Use DBTUNE parameters to index.
SPIDX_NONE -- No spatial index is created.
SPIDX_RTREE -- Create Rtree index.
SPIDX_FIXED,<lvl> -- Create fixed Quadtree index.
SPIDX_HYBRID,<lvl,ntiles> -- Create hybrid Quadtree index.

-h Prints usage and options

-i ArcSDE service name

-k Layer configuration keyword—used with the "create" operation only

-l Map layers's table and spatial column names. If you are not the owner of the table, you must qualify the table name as "owner.table" and have insert privileges.

-M Minimum feature ID. New shape IDs are assigned the larger of the minimum ID or the maximum assigned ID + one. Default is 1.

-o Operation

-p ArcSDE user RDBMS password

-s ArcSDE server hostname (default: localhost)

-u ArcSDE user RDBMS username

-v Verbose option—reports records committed

-V Version name. If specified, insert the data into the version. Not allowed for the init operation.

-? Prints usage and options (use "-\?" on C shell)

sdelayer

This command administers feature classes.

Usage syntax

sdelayer -o add -l <table,column> -e <entity_mask>
[Spatial_Index] [{-R <SRID> | [Spatial_Ref_Opts]}]
[-M <minimum_id>] [{-f <init_features,avg_points> | -k <config_keyword>}]
[-E <{empty | xmin,ymin,xmax,ymax}>]
[-t <storage_type>] [-S <layer_description_str>]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-q]

Where [Spatial_Ref_Opts] := [-x <xoffset,yoffset,xyscale>] [-z <zoffset,zscale>]
[-m <moffset,mscale>] [-G {<projection_ID> | file=<proj_file_name>}]

[Spatial_Index] := [-g {<grid_size1>[,<grid_size2> [,<grid_size3>]] |
SPIDX_GRID,<grid_1>[,<grid_2>[,<grid_3>]] |
SPIDX_NONE |
SPIDX_RTREE |
SPIDX_DBTUNE |
SPIDX_FIXED,<sdo_level> |
SPIDX_HYBRID,<sdo_level>,<sdo_numtiles>}]

sdelayer -o alter -l <table,column> [-e <entity_mask>] [-M <minimum_id>]
[-S <layer_description_str>] [-k <config_keyword>] [-i <service>]
[-s <server_name>][-D <database>] [-g <new_grid_size>]
[-E <{empty | calc | xmin,ymin,xmax,ymax}>]
[-G {<projection_ID> | file=<proj_file_name}>]
-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdelayer -o {grant | revoke} -l <table,column> -U <user>
-A <SELECT,UPDATE,INSERT,DELETE>
[-i <service] [-s <server_name] [-D <database]
-u <DB_User_name> [-p <DB_User_password>] [-I] [-q]

sdelayer -o {describe | describe_long} [{-O <owner | -l <table,column>}]
[-i <service>] [-s <server_name>] [-D <database>] -u <DB_User_name>
[-p <DB_User_password>] [-q]

sdelayer -o list -l <table,column> -v <shape_id> [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>] [-q]

sdelayer -o delete -l <table,column> [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdelayer -o truncate -l <table,column> [-i <service>] [-s <server_name>]
[-D <database>] -u < DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdelayer -o {stats | si_stats} -l <table,column> [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>] [-q]

sdelayer -o {load_only_io | normal_io} -l <table,column> [-i <service>]
[-s <server_name>] [-D <database>] -u <DB_User_name>
[-p <DB_User_password>] [-q]

sdelayer -o register -l <table,column> [-e <entity_mask>] -c <primary_key_column>
[-k <config_keyword>] [-S <layer_description_str>] [-i <service>]
[-s <server_name>] -u <DB_User_name> [-p <DB_User_password>] [-q]

sdelayer -h

sdelayer -?

Operations

add Adds a spatial column to a business table, creating a feature class

alter Modifies a feature class

grant Grants access to a feature class for a user

revoke Revokes access to a feature class for a user

describe Lists feature class definitions (short form). If a feature class is not specified, lists all feature classes the user has access to.

describe_long Lists feature class definitions (long form). If a feature class is not specified, lists all feature classes the user has access to.

list Lists the fields of a shape record including the point values for all points that define the shape of the feature

delete Deletes an entire feature class. All shapes and the feature class definition are permanently removed. The business table is not deleted.

truncate Deletes all shape records in the feature class. The feature class definition remains.

stats Reports feature class statistics

si_stats Reports spatial index grid statistics

load_only_io Sets the I/O mode of the feature class to load-only, allowing only store and replace I/O operations. Use load-only mode when performing
large inserts to avoid the continuous update of the layer indexes.

normal_io Sets the I/O mode of the layer from load-only I/O mode to normal I/O mode

register Registers a column defined with using Oracle Spatial Geometry Type, Oracle Spatial Normalized Type, Spatial DataBlade,
or DB2 Spatial Extender

Options

-A Type of access: SELECT, UPDATE, INSERT, or DELETE

-c Specifies a unique column to be added to an external table that will be used as a uinique column for queries in ArcInfo and ArcView.

-D Database or data source name. Not supported by all DBMSs.

-e Entity types allowed (npslaAc3+M).

n Nil
p Point shapes
s Line (spaghetti) shapes
l Simple line (line string) shapes
a Area shapes
A Annotation
c CAD data
3 Three-dimensional shapes can be added to the entity type mask only with the `-o add' operation
+ Multipart shapes
M Measures on coordinates. The [-m] option is required if measures on coordinates are a defined shape type.

Measures can be added to the entity type mask only with the "-o add" operation.

Adding a new entity type allows users to store shapes defined as the new entity type. Removing a previously allowed entity type will delete all shapes of the removed entity type.

-E Layer envelope. There are three option:

empty Sets the layer envelope to an empty envelope
calc Calculates the layer envelope
xmin,ymin,xmax,ymax Sets the envelope to the specified values

-f (ArcSDE for Oracle only) Initial number of features and the average number of points per feature. These are used to calculate the initial and next extent of the
layers's F and S tables. You cannot use this option with the -k option.

-g Spatial index type and parameters

<grid1,grid2,grid3> or SPIDX_GRID,<grid1,grid2,grid3> -- Create multi-level grid index; grid2, grid3 are optional.
SPIDX_DBTUNE -- Use DBTUNE parameters to index.
SPIDX_NONE -- No spatial index is created.
SPIDX_RTREE -- Create Rtree index.
SPIDX_FIXED,<lvl> -- Create fixed Quadtree index.
SPIDX_HYBRID,<lvl,ntiles> -- Create hybrid Quadtree index.

-G Coordinate system specifier. When used with the "alter" operation, it changes the feature class' metadata, not the data itself. <projection_id>—coordinate
system ID (see the pedef.h file for the integer codes). file=<proj_file_name>—file containing coordinate system description string.

-h Prints usage and options

-i ArcSDE service name

-I Inherit grant privilege. The "grant option" is included with the granted privilege. For example, if user A grants user B update privileges on a table, the -I option
indicates that user A also wants to grant user B the ability to grant other users update privileges on a particular table.

-k Configuration keyword present in DBTUNE table. The storage parameters specific to the feature class will be found under the specified keyword. You
cannot use this option with the -f option.

-l The business table and its spatial column. If you are not the owner of the table, you must qualify the table name as "owner.table".

-m Measure offset and scale, separated by a comma

-M Minimum feature ID. New shape IDs are assigned the larger of the minimum ID or the maximum assigned ID + one.

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-O The owner of the layer

-p ArcSDE user DBMS password

-q Quiet; all titles and warnings are suppressed

-R Spatial reference ID (SRID)

-s ArcSDE server hostname (default: localhost)

-S Map layer description string (up to 63 characters)

-t Allowed Storage type. Values are B (ArcSDE binary), N (normalized), W (well-known binary), or Q (SQL ADT)

-u ArcSDE user DBMS username

-U ArcSDE user DBMS username—the user to grant or revoke layer access to

-v Shape ID

-x The x and y offsets and scale values, separated by commas—the default is 0.0, 0.0, 1.0

-z The z offset and scale values, separated by a comma

-? Prints usage and options (use "-\?" on C shell)

Discussion

Before creating a new feature class (layer), make sure that enough space is available on your system.

Calculate the x-,y-, and z-scale values for the feature class (layer) by using the size of the service area and how much resolution is needed for the data. Coordinates are truncated if the scales are too small. For example, if the scale is set to 100 for coordinates in meters, then the unit of resolution is centimeters. Precision less than a centimeter is not stored. To set the unit of resolution to millimeters, increase the scale to 1,000. For more information on offsets and scales, see the previous sections.

Given this feature class specification:

DBMS table name:         victoria
DBMS column name:        parcels
Feature types:           multipart polygons and annotation
Location:                victoria
Initial # of features:   10000
Avg points per feature:  10
Spatial index grid:      Level 1 - 1000 meters
xy offset:               0,0
xy scale:                200
z offset:                0
z scale:                 200
Coordinate system:       28355 (GDA1994 zone 55) Geographic extent

The following command will create a feature class (layer):

$ sdelayer -o add -l victoria,parcels -e aA3+ -g 1000,0,0 -x 0,0,200 -z 0,200 -G 28355 -f 10000,10 -u av -p mo -i esri_80

This command uses sdelayer to create a new layer with the above specifications. New empty layer tables are created.

The x,y offsets and scale are optional. If unspecified, they default to 0, 0, 1.

The register operation allows you to create a feature class (layer) from an DBMS table that contains a column defined as a spatial data type.To date, ArcSDE supports four different implementations of DBMS spatial data types: Oracle Spatial Geometry Type, Oracle Spatial Normalized Type, Spatial DataBlade, and DB2 Spatial Extender. Tables created with one of these spatial data types and populated using the DBMS SQL interface or some other third party interface can be added to the ArcSDE database by registering the existing tables as ArcSDE feature classes (layers). The register command updates the ArcSDE data dictionary tables and, in the case of the ESRI Spatial DataBlade and the DB2 Data Extender, adds the SE_ROW_ID column to the table to facilitate ArcSDE logging.

$ sdelayer -o register -l victoria,parcels -c parcel_no -u av -p mo -i esri_80

The grant and revoke operations control access to feature classes (layers). The grant operation allows the owner of a feature class (layer) to provide either SELECT, INSERT, UPDATE, or DELETE privileges to other users or roles. The revoke operation allows the owner to rescind previously granted privileges.

The following two commands grant and then revoke select privileges from user "bob".

$ sdelayer -o grant -l victoria,parcels -U bob -A SELECT -u av -p mo -i esri_80

$ sdelayer -o revoke -l victoria,parcels -U bob -A SELECT -u av -p mo -i esri_80

Granting privileges to roles that users are members of is more efficient since it avoids having to repetitively grant the privileges to each user. Whenever possible create roles representing privileges that can be granted to a group of users.

You can list a feature class (layer) definition by using the ArcSDE feature class administration utility. All fields that define a feature class (layer) are displayed on the screen. To list all available feature classes (layer) for the current server, use:

$ sdelayer -o describe -u av -p mo -i esri_80

The system responds with something like this:

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Layer    Administration Utility
-----------------------------------------------------

Table Owner :         AV
Table Name :          BORDERS
Spatial Column :      FID
Layer id :            1
Entities :            a
Layer Type :          SDE
I/O Mode :            NORMAL
User Privileges :     SELECT, UPDATE
Layer Configuration : DEFAULTS

-----------------------------------------------------

Table Owner :         AV
Table Name :          BOUNDARIES
Spatial Column :      BOUNDARY
Layer id :            2
Entities :            a
Layer Type :          SDE
I/O Mode :            NORMAL
User Privileges :     SELECT, UPDATE, INSERT
Layer Configuration : DEFAULTS

-----------------------------------------------------

Table Owner :         AV
Table Name :          MINOR_ROADS
Spatial Column :      ROAD_LAYER
Layer id :            3
Entities :            s
Layer Type :          SDE
I/O Mode :            NORMAL
User Privileges :     SELECT
Layer Configuration : DEFAULTS

-----------------------------------------------------

To display the definition for a particular feature class (layer), specify the table and column name with the -l option.

$ sdelayer -o describe -l borders,fid -u av -p mo -i esri_80

The system responds with something like this:

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Layer    Administration Utility
-----------------------------------------------------

Table Owner :          AV
Table Name :           BORDERS
Spatial Column :       FID
Layer id :             1
Entities :             a
Layer Type :           SDE
I/O Mode :             NORMAL
User Privileges :      SELECT, UPDATE
Layer Configuration :  DEFAULTS

-----------------------------------------------------

You can list information about a feature's shape by using its shape ID. Get the shape ID by using sdetable's "list" operation.

Specifying a shape ID returns the shape fields and coordinates. Some shapes may have so many points that you can't view all the information as it's displayed. To control the display of the shape information, list the detailed feature information with a pagination program or redirect it to a file for later viewing or printing.

The following example displays a shape's detail and pipes the output through the "more" filter, allowing you to page through the information.

$ sdelayer -o list -l victoria,parcels -v 1012 -u av -p mo -i esri_40 | more

For feature classes (layers) that have been implemented using the binary schema (see Appendix C in the Managing ArcSDE Services), deleting an ArcSDE feature class (layer) drops the DBMS spatial tables (the F and S tables) and removes the definition of the feature class (layer) from the LAYERS and GEOMETRY_COLUMNS tables.

For feature classes (layers) implemented with the normalized schema (see Appendix C in the Managing ArcSDE Services), the geometry table is dropped. The business table’s spatial column is nulled and the feature class (layer) definition is removed from the LAYERS and GEOMETRY_COLUMNS table.
Under the spatial types and functions implementation, the spatial column is nulled and the feature class (layer) definition is removed from the LAYERS and GEOMETRY_COLUMNS table.

The business table still exists and is registered. To completely remove the business table, use “sdetable -o delete”.

If a user has the feature class (layer) locked, sdelayer will return an error. You can use the sdemon “info” operation to make sure the feature class (layer) is not locked. The sdemon “kill” operation can remove the process that locked the feature class (layer). This is an abrupt solution and should only be used when
necessary. If circumstances permit, you should inform everyone that the feature class (layer) is going to be removed and provide application programmers with enough time to remove references to the feature class (layer) from their programs.

Use the sdelayer administration utility to delete the feature class (layer).

$ sdelayer -o delete -l victoria,parcels -u av -p mo -i esri_80

The "truncate" operation removes the records from the feature class (layer) but does not drop the tables. However, the records of the business table are not removed. To remove these and the feature class (layer) tables, use sdetable with the "truncate" operation.

$ sdelayer -o truncate -l victoria,parcels -u av -p mo -i esri_80 -N

Using the "alter" operation of sdelayer, you can modify the entity mask, spatial index grid cell sizes, coordinate system ID, description, envelope, or configuration keyword. The example below modifies the entity mask, configuration keyword, coordinate system ID, and description.

$ sdelayer -o alter -l victoria,parcels -e al+ -k vict2 -G 4326 -S "Victoria Parcels" -u av -p mo -i esri_40

This example changes the grid size.

$ sdelayer -o alter -l victoria,parcels -g 2000,0,0 -u av -p mo -i esri_40 -N

The "-N" option suppresses the prompt to verify the change in grid size.

The ArcSDE for Informix product implemented an rtree index as its spatial index. Changing the grid parameters with the "-g" option has no effect on an ArcSDE for Informix feature class (layer) since it does not have a grid index. The maintenance of the rtree index is automatic and cannot be adjusted.

You can change the grid sizes while the feature class (layer) is in normal or load-only I/O mode.

If the feature class (layer) is in normal I/O mode, the indexes on the spatial index table are dropped. While rebuilding the spatial index table, the feature class (layer) is set to load-only mode to disable read access. The indexes are rebuilt when the feature class (layer) is reset to normal I/O mode.

If the grid fields are updated while the feature class (layer) is in load-only I/O mode, the spatial index is rebuilt with the new grid sizes when you reset the feature class (layer) to normal I/O mode.

The sdelayer's envelope option has three keywords: "empty", "calc", and "xmin,ymin,xmax,ymax".

Setting it to "empty" will force an ArcSDE client to calculate the feature class's (layer's) envelope on the fly. This can be time-consuming.

When the feature class (layer) is in normal I/O mode, the envelope is automatically updated whenever a feature that extends the current envelope is added. The envelope is not updated while the feature class (layer) is in load-only I/O mode but is recalculated to the full extent when the feature class (layer) is reset to normal I/O mode.

Use "xmin,ymin,xmax,ymax" to set the envelope explicitly (for example, a study area). However, since the envelope is dynamically maintained, it will be extended to include new features that are added outside the extent set by "xmin,ymin,xmax,ymax".

The sdelayer command always creates a feature class (layer) in normal I/O mode. The load-only I/O mode is provided to make the bulk data loading processes more efficient. Load-only I/O mode allows shape storage and modification but disables retrieval.

To modify the I/O mode, use the "load_only_io" or "normal_io" operations.

$ sdelayer -o load_only_io -l victoria,parcels -u av -p mo -i esri_40

or

$ sdelayer -o normal_io -l victoria,parcels -u av -p mo -i esri_40

When the feature class (layer) administration utility returns a feature class (layer) to normal I/O mode, the spatial index table and database indexes are rebuilt. If the operation does not complete successfully for any reason, the feature class (layer) is left in load-only mode.

When a feature class (layer) is in load-only I/O mode, the unique index is removed from the feature class's (layer's) spatial column. When the index is absent, it's possible to enter nonunique values into the spatial column with a non-ArcSDE application. No applications besides ArcSDE should ever update the spatial column. Database administrators should be aware of the increased vulnerability of the spatial column when the feature class (layer) is in load-only I/O mode.

You can use sdelayer to display statistics about a feature class (layer) including feature entity type counts, total number of shapes, minimum and maximum shape number, the date of the last shape modification, the number of points in the largest shape, minimum and maximum linear shape lengths, minimum and maximum polygon areas, and the feature class (layer) envelope.The following command will display statistics for the parcels feature class (layer):

$ sdelayer -o stats -l victoria,parcels -u av -p mo -i esri_40

The sdelayer command's spatial index statistics operation, ``si_stats", can help you determine optimum spatial index grid sizes. Optimum grid cell sizes depend on the spatial size of all features, the variation in spatial feature size, and the types of searches to be performed on the feature class (layer).

Below is a sample output generated by "si_stats":

$ sdelayer -o si_stats -l victoria,parcels -u av -p mo -i esri_40

ArcSDE 8.1                   Sun Oct  1 22:32:06 PDT 2000
Layer Administration Utility
--------------------------------------------------------
Layer 1 Spatial Index Statistics:
Level 1, Grid Size 200 (Meters)
|------------------------------------------------------------------|
| Grid Records: 978341                                             |
| Shape Records: 627392                                            |
| Grids/Shape Ratio: 1.56                                          |
| Avg. Shapes per Grid: 18.26                                      |
| Max. Shapes per Grid: 166                                        |
| % of Shapes Wholly Inside 1 Grid: 59.71                          |
|------------------------------------------------------------------|
|              Spatial Index Record Count By Group                 |
|Grids:      <=4    4    10    25    50    100   250   500  |
|--------- ------ ------ ------ ------ ------ ------ ------ ------ |
|Features: 627392      0      0      0      0      0      0      0 |
|% Total:     100%     0%     0%     0%     0%     0%     0%     0%|
|------------------------------------------------------------------|
|                                                                  |
Level 2, Grid Size 1600 (Meters)
|------------------------------------------------------------------|
| Grid Records: 70532                                              |
| Shape Records: 36434                                             |
| Grids/Shape Ratio: 1.94                                          |
| Avg. Shapes per Grid: 18.21                                      |
| Max. Shapes per Grid: 82                                         |
| % of Shapes Wholly Inside 1 Grid: 45.35                          |
|------------------------------------------------------------------|
|              Spatial Index Record Count By Group                 |
|Grids:      <=4    4    10    25    50    100   250   500  |
|--------- ------ ------ ------ ------ ------ ------ ------ ------ |
|Features:  35682    752     87     17      3      0      0      0 |
|% Total:      97%     2%     0%     0%     0%     0%     0%     0%|
|------------------------------------------------------------------|

As the output shows, for each defined spatial index level in the feature class definition, the following values and statistics are printed:

• Grid level and cell size.

• Total spatial index records for the current grid level.

• Total shapes stored for the current grid level.

• Ratio of spatial index records per shape.

• Shape counts and percentages by group that indicate how shapes are grouped within the spatial index at this grid level. The column headings have the following meaning (where "N" is the number of grid cells):

<=N Number of shapes and percentage of total shapes that fall within <= N grid cells

N Number of shapes and percentage of total shapes that fall within N grid cells

Notice that the "" groupings include count values from the next group. For instance, the "4" group count represents the number of shapes that require more
than four grid records as well as more than 10, and so on.

• Average number of shapes per grid.

• Maximum number of shapes per grid. This is the maximum number of shapes indexed into a single grid.

• Percentage of shapes wholly inside one grid. This is the percentage of all shapes wholly contained by one grid record.

The output sample shows spatial index statistics for a feature class that uses two grid levels: one that specifies a grid size of 200 meters, the other a grid size of 1,600 meters. When a shape requires more than four spatial index records, it is automatically promoted to the next grid level if one is defined. That is, in no case will a shape generate more than four grid records if more than one grid level exists. If a higher grid level doesn't exist, then a shape can have more than four grid records.

In the example above, 627,392 features are indexed through grid level 1. Because the system automatically promotes shapes that need more than four spatial index records to the next defined grid level, all 627,392 shapes for grid level 1 are indexed with four grid records or less. Grid level 2 is the last defined grid level, so shapes indexed at this level are allowed to be indexed with more than four grid records.

At grid level 2, there are a total of 36,434 shapes and 70,532 spatial index records: 35,682 shapes are indexed with four grid records or fewer, 752 shapes are indexed with more than four grid records, 87 shapes are indexed with more than 10, 17 shapes with more than 25, and three shapes with more than 50 grid records. Percentage values below each column show how the shapes are dispersed through the eight groups.

sdelocator

This command manages ArcSDE locators.

Usage syntax

sdelocator -o list [-T <{t|v|d}>] [-i <service>] [-s <server_name>]
[-D <database>] -u <DB_User_name> [-p <DB_User_password>] [-q]

sdelocator -o create -n <locator_name> -f <locator_properties_file>
-T <{t|v}> [-S <locator_description>] [-i <service>]
[-s <server_name>] [-D <database>] -u <DB_User_name>
[-p <DB_User_password>] [-q]

sdelocator -o delete {-n <locator_name> | -I <locator_id>} [-N]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-q]

sdelocator -o describe [-n <locator_name> | <-I locator_id>]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-q]

sdelocator -o refresh {-n <locator_name> | -I <locator_id>} [-N]
[-i <service>] [ -s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [ -q]

sdelocator -h

sdelocator -?

Operations

list List the locators for the service

create Create a locator from the property file

delete Delete the specified locator

describe Describe the locator properties—if no locator is specified, all locators are described

refresh Refresh locator indices

Options

-D Database name

-f Locator properties file

-h Prints usage and options

-I Locator ID

-i ArcSDE service name

-N No verification

-n Locator name

-o Operation

-p ArcSDE user DBMS password

-q Quiet

-s ArcSDE server hostname (default: localhost)

-S Locator description string

-T Locator type (t: template, d: system defined, v: validated)

-u ArcSDE user DBMS username

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sdelocator command manages the ArcSDE metadata of a locator. Locators contain information that allows you to create features for locations—a process referred to as geolocation.

The "create" operation reads the locator's properties from a property file and, if the locator does not already exist in the SDE.LOCATORS table, adds an entry. The locator's properties are stored in the SDE.METADATA table.

The format of the locator property file must conform to the guidelines listed in the book Modeling Our World. The locator type option "-T" must specify the type of locator that will be created, either using a template or validated.

sdelocator -o create -n "US Streets" -f C:\locators\us_strts.loc -T v -S US STREETS -i esri_80 -u av -p mo

The "delete" operation removes a locator's metadata from the SDE.LOCATORS and SDE.METADATA table.

sdelocator -o delete -n "US Streets" -i esri_80 -u av -p mo

The "list" operation provides a list of the locators in the ArcSDE server. The listing includes the locator ID, type, name, owner, category, and description.

sdelocator -o list -i esri_80 -u av -p mo

ArcSDE     8.1       Sun Oct  1 22:32:06 PDT 2000
Locator      Administration Utility
-------------------------------------------------------
  ID T Name                        Owner    Category Description
--------------------------------------------------------------------------------------------------
   1 t Single Field                SDE      Address  Single Field Geocoding Service
   2 t ESRI US Streets             SDE      Address  ESRI US Nationwide Streets Geocoding Service
   3 t US One Address with Zone    SDE      Address  US One Address with Zone Geocoding Service
   4 t US One Address with Zone (A) SDE      Address  US One Address with Zone (Alternate Names) Geocoding Service
   5 v US One Range with Zone      SDE      Address  US One Range with Zone Geocoding Service
   6 v US One Range with Zone (A)  SDE      Address  US One Range with Zone (Alternate Names) Geocoding Service
   8 t ZIP+4                       SDE      Address  ZIP+4 Geocoding Service
   9 t ZIP+4 Range                 SDE      Address  ZIP+4 Range Geocoding Service
  10 t ZIP (5-Digit)               SDE      Address  ZIP (5-Digit) Geocoding Service

The list operation can be qualified with the locator type option -T to list only those locators of a certain type.

sdelocator -o list -T v -i esri_80 -u av -p mo

ArcSDE     8.1       Sun Oct  1 22:32:06 PDT 2000
Locator      Administration Utility
-------------------------------------------------------
  ID T Name                        Owner    Category Description
--------------------------------------------------------------------------------------------------
   5 v US One Range with Zone      SDE      Address  US One Range with Zone Geocoding Service
   6 v US One Range with Zone (A)  SDE      Address  US One Range with Zone (Alternate Names) Geocoding Service

The "describe" operation displays the properties of a locator.

sdelocator -o describe -n "US Streets" -i esri_80 -u av -p mo

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Description = "US Streets ESRI Nationwide"
; ID = 139
; Type = SE_LOCATOR_VALIDATED
; Owner = SERGEY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Category = Address

CLSID                      = {04FCADCF-ED3B-11D2-9F48-00C04F8ED1C4}
UICLSID                    = {AE5A3A0E-F756-11D2-9F4F-00C04F8ED1C4}
Fields                     = Street
Fields                     = City
Fields                     = State
Fields                     = Zip
FieldNames.0               = Address
FieldNames.0               = Addr
FieldNames.1               = City
FieldNames.2               = State
FieldNames.2               = State_Abbr
FieldNames.3               = Zip
FieldNames.3               = Zipcode
FieldsRequired             = TRUE
FieldsRequired             = FALSE
FieldsRequired             = FALSE
FieldsRequired             = FALSE
FieldSizes                 = 48
FieldSizes                 = 16
FieldSizes                 = 5
FieldSizes                 = 2
Locator.Library            = libmtchloc
Locator.CLSID              = {D9052385-AB46-11d2-AADA-00C04FA379E3}
Locator.FactoryLibrary     = libmtchloc
Query.Library              = libmtchloc
Query.CLSID                = {C9A0D86C-C1D3-11d2-AAE4-00C04FA379E3}
MKeyField                  = XX
MKeyField                  = CT
MKeyField                  = SA
MKeyField                  = ZP
FileMAT                    = stmap.mat
FileSTN                    = stmap.stn
IntFileMAT                 = stm_int.mat
IntFileSTN                 = stm_int.stn
IntersectionConnectors     = &
MinimumMatchScore          = 60
MinimumCandidateScore      = 10
EndOffset                  = 0.9
SideOffset                 = 0.00001
SpellingSensitivity        = 60
Ref.File                   = \\metro\metro11\BMSource\streets\usa.edg
MKeyAlias.HN               = House Number
MKeyAlias.PD               = Prefix Direction
MKeyAlias.PT               = Prefix Type
MKeyAlias.SN               = Street Name
MKeyAlias.ST               = Suffix Type
MKeyAlias.SD               = Suffix Direction
MKeyAlias.ZN               = Zone
MKeyAlias.P1               = Prefix Direction 1
MKeyAlias.E1               = Prefix Street Type 1
MKeyAlias.S1               = Street Name 1
MKeyAlias.T1               = Suffix Street Type 1
MKeyAlias.D1               = Suffix Direction 1
MKeyAlias.P2               = Prefix Direction 2
MKeyAlias.E2               = Prefix Street Type 2
MKeyAlias.S2               = Street Name 2
MKeyAlias.T2               = Suffix Street Type 2
MKeyAlias.D2               = Suffix Direction 2
CandidateMode              = FALSE
SupportIntersections       = TRUE
Interpolate                = TRUE
InputAddressType           = 0
Mode                       = 0
WriteLatLongFields         = 0
WriteStandardizedAddressField = 0

sdelog

This command administers log files.

Usage syntax

sdelog -?

Usage for sdelog:

-?

-h

-o alter -L <logfile> -k <PERSISTENT,TEMPORARY> [-O <Owner>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

-o clean [-O <Owner>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

[-N] [-A] [-q]

-o delete -L <logfile> [-O <Owner>] [-i <service>]

[-s <server_name>] [-D <database>] -u <DB_User_name>

[-p <DB_User_password>] [-N] [-q]

-o display -L <logfile> [-O <Owner>] [-i <service>]

[-s <server_name>] [-D <database>] -u <DB_User_name>

[-p <DB_User_password>] [-q]

-o grant -U <user> [-O <Owner>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

[-q]

-o list [{-O <Owner> | -l <table,column> | -T <table>}]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

-o revoke -U <user> [-O <Owner>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

[-q]

-o truncate -L <logfile> [-O <Owner>] [-i <service>]

[-s <server_name>] [-D <database>] -u <DB_User_name>

[-p <DB_User_password>] [-N] [-q]

Operations

alter Modify log table's persistence

clean Delete all temporary log tables

delete Delete a single log table

display Print the contents of a log table

grant Grant access to the owner's log table for a user

list List a user's log tables

revoke Revoke access from the owner's log tables for a user

truncate Delete the contents of a log file

Options

-A Deletes all log tables temporary, persistent, and old format log tables

-D Database name

-h Prints usage and options

-i ArcSDE service name

-k Configuration keyword, either TEMPORARY or PERSISTENT

-l Layer table and column names

-L Log table name (not containing user)

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-O Owner of the log table

-p ArcSDE user RDBMS password

-q Quiet; all titles and warnings are suppressed

-s ArcSDE server hostname (default: localhost)

-T Table name

-u ArcSDE user RDBMS username

-U ArcSDE user RDBMS username—the user who will be granted access to a log file or who will have access permissions to a log file revoked

-? Prints usage and options (use "-\?" on C shell)

Discussion

Log tables are stored in the host DBMS. Prior to version 8, they were stored on disk as files. Some of the usage syntax still reflects that old style use.
Both the "delete" and "clean" operations of sdelog will remove log tables. The "clean" operation by default removes a user's temporary log tables.

$ sdelog -o clean -u av

Specify the "-N" option if you don't want to be prompted.

$ sdelog -o clean -u av -N

Specify the "-A" option to delete all of a user's log files: temporary, persistent, and pre-SDE 3.x style.

$ sdelog -o clean -u av -N -A

The "delete" operation of the log table administration command removes a single log table. Again you may enter the "-N" option to suppress the verification prompt.

$ sdelog -o delete -L logBCAa06599 -u av -N

You can list the log tables with the log file utility "list" operation. The list includes the name of the log file, the feature class internal ID, the current state of the log file, the number of shape records referenced, and the date and time the log file was last modified.

$ sdelog -o list -u av

ArcSDE        8.1         Wed Oct 14 14:20:44 2000
Logfile     Administration Utility
-------------------------------------------------------------
Name   Layer    State  Records Time Last  Modified
-------------------------------------------------------------
colog      9    UP          29 1998-10-14 12:42:30
citylog    5    SP          65 1998-10-14 12:42:32
ci_log     5    UT          11 1998-10-14 12:58:34
ci_log     5    ST          11 1998-10-14 12:58:34
-------------------------------------------------------------

The state column whether the log file is unsorted, sorted, temporary, or persistent. The codes are:

UP—unsorted, persistent
SP—sorted, persistent
UT—unsorted, temporary
ST—sorted, temporary

The log file utility "display" operation provides a list of shape IDs contained in the log file. The header of the output displays the log filename and the feature class internal ID number. The shape IDs are displayed in a column below the Feature ID (FID) heading.

$ sdelog -o display -L ci_log -u av

ArcSDE        8.1         Wed Oct 14 14:20:44 2000
Logfile     Administration Utility
-------------------------------------------------------------
Printing the contents of logfile ci_log on layer 5

           FID
--------------
            34
           133
           146
           158
           211
           221
           276
           277
           294
           546
           549

sdemon

This command is used to monitor and manage the ArcSDE service. You can use sdemon to start up, pause, resume, and shut down all connection activity and display current configuration parameters and server task information. Individual server tasks can also be managed.

Security

Current execution privileges are granted to the root or the ArcSDE administrator for the start operation only. All other operations may be executed by any user who knows the password.

Usage syntax

sdemon -o status [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-q]

sdemon -o start [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-p <DB_Admin_password>]

sdemon -o shutdown [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-p <DB_Admin_password>] [-N]

sdemon -o pause [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-p <DB_Admin_password>]

sdemon -o resume [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-p <DB_Admin_password>]

sdemon -o info -I <{users | config | stats | locks | vars }> [-q]

[[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

sdemon -o kill [[-i <service>] [-s <server_name>] | [-H <sde_directory>]]

[-p <DB_Admin_password>] -t <{ all | pid }> [-N]

Operations

status Reports the service status

start Starts the ArcSDE service if it's not running. Only the ArcSDE administrator or root can use this operation.

shutdown Shuts down the ArcSDE service immediately if no server tasks are running. If server tasks are running, you're
prompted to remove the running tasks before the shutdown takes place. If you use the "-N" option when shutting
down, all server tasks stop and the system shuts down immediately.

pause Disallows further client connection requests to be processed. No client tasks are allowed to connect to ArcSDE
servers through this ArcSDE service.

resume Allows client connection requests to be processed again. Client tasks are allowed to connect to ArcSDE servers
through this ArcSDE service.

info Displays information about users, configuration, statistics, locks, or environment variables

kill Kills all or a specified connection to the service

Options

-h Prints usage and options

-H ArcSDE home directory (SDEHOME)

-i ArcSDE service name (not applicable for "start" option)

-I Inquire about configuration, locks, statistics, users, or environment variables

config Displays current configuration variables
locks Displays lock information about processes that are holding locks
stats Displays process statistics for each ArcSDE client/server connection
users Lists users' connections to ArcSDE and associated process identifiers
vars Displays ArcSDE service environment variables

-N No verification is performed the operation begins immediately after being invoked

-o Operation

-p ArcSDE administrator RDBMS password

-q Quiet; all titles and warnings are suppressed

-s ArcSDE server hostname (default: localhost)

-t Kills server tasks:
all Forcefully removes all server tasks
pid Removes the task identified by the process identifier

-? Prints usage and options (use "-\?" in C shell)

sderaster

This command manages ArcSDE raster layers. For general concepts regarding the storage and manipulation of ArcGIS raster data refer to Using ArcGIS Spatial Analyst. For specific information regarding the storage of raster data in a geodatabase refer to ArcSDE Configuration and Tuning Guide for <DBMS>.

Usage syntax

sderaster -h

sderaster -o add -l <table,column > [<-M minimum_id>]
[-G {<projection_ID> | file=<proj_file>}]
[-k <config_keyword>] [-S <description_str>]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o drop {-l < table,column > | -t < table > }
[-i < service > | < port# > ] [-s < server_name > ]
[-D < database > ] [-u < DB_user_name > ]
[-p < password >]

sderaster -o truncate -l < table,column > [-i < service > | < port# >]
[-s < server_name > ] [-D < database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o describe [-l <table,column>] [-V] [-i <service> | <port#>]
[-s <server_name>] [-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o list -l <table,column> [-v <raster_id>] [-V]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o insert -l <table,column>
-f {<image_file> | <ArcSDE raster>} [-c] [-N] [-R]
[-C rgb] [-n <image_name>] [-L <pyramid_level>]
[-I {nearest | bilinear | bicubic}]
[-t <tile_width,tile_height>]
[-G {<projection_ID> | file=<proj_file>}]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o delete -l <table,column> -v <raster_id>
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o update -l <table,column> -v <raster_id>
-f {<image_file> | <ArcSDE raster>} [-c] [-N] [-R]
[-C rgb] [-n <image_name>] [-L <pyramid_level>]
[-I {nearest | bilinear | bicubic}]
[-t <tile_width,tile_height>]
[-G {<projection_ID> | file=<proj_file>}]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o mosaic -l <table,column> -v <raster_id>
-f {<image_file> | <ArcSDE raster>} [-N] [-R]
[-C rgb] [-n <image_name>] [-L <pyramid_level>]
[-I {nearest | bilinear | bicubic}]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o pyramid -l <table,column> -v <raster_id>
[-L <pyramid_level>]
[-I {nearest | bilinear | bicubic}]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o stats -l <table,column> -v <raster_id>
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o colormap -l <table,column> -v <raster_id>
{-d | -f <image_file>} [-i <service> | <port#>]
[-s <server_name>] [-D <database>]
[-u <DB_user_name>] [-p <password>]

sderaster -o import -l <table,column> [-c] [-g] [-N] [-R] [-C rgb]
-f {<image_file> | <ArcSDE raster>}
[-n <image_name>] [-M <minimum_id]
[-G {<projection_ID> | file=<proj_file>}]
[-k <config_keyword>] [-S <description_str>]
[-L <pyramid_level>]
[-I {nearest | bilinear | bicubic}]
[-t <tile_width,tile_height>]
[-i <service> | <port#>] [-s <server_name>]
[-D <database>] [-u <DB_user_name>]
[-p <password>]

sderaster -o export -l <table,column> -v <raster_id>
-f <image_file> [-i <service> | <port#>]
[-s <server_name>] [-D <database>]
[-u <DB_user_name>] [-p <password>]

Operations

add Create a raster layer by adding a raster column to a business table.

drop Drop a raster column or business table.

truncate Truncate a raster layer.

describe Describe one or all raster layers owner by a user.

list List one or all rasters in a raster layer.

insert Insert a raster into a raster layer.

delete Delete a raster from a raster layer.

update Update a raster.

mosaic Perform piece-wise update on a raster.

pyramid Update a raster's image pyramid.

stats Calculate a raster's image statistics & histogram.

colormap Update a raster's colormap.

import Import raster layer.

export Export raster from a layer.

Options

-c Compress a raster upon entry.

-N Ignore the color map and enter a grayscale image.

-R Remove areas surrounding the raster that contain no data.

-C rbg Expand the color map into a true color image.

-D Database or data source name. Not supported by all DBMSs.

-f The name of the image file.

-g Directs the import operation to register the raster layer with the geodatabase.

-G Coordinate system specifier.
<projection_id>: coordinate system ID (see the pedef.h file for the integer codes).
file=<proj_file_name>: file containing coordinate system description string.

-h Prints usage and options.

-i ArcSDE service name or port number.

-I The resampling technique used during the construction of the pyramid.

nearest: The nearest neighbor method selects the closest pixel.
bilinear: The bilinear method interpolates four adjacent pixels.
bicubic: The bicubic method interpolates 16 adjactent pixels.

For more information on pixel resampling refer to Using ArcGIS Spatial Analyst.

-k Configuration keyword present in DBTUNE table. The storage parameters specific to the raster column will be found
under the specified keyword.

-l The raster layer's business table and raster column. If you are not the owner of the table, you must qualify the table name as
"owner.table".

-L The pyramid level.
Set to a number greater than 0, ArcSDE creates the levels specified unless the apex is reached first.
Set to -1, ArcSDE calculates the pyramid level.
Set to 0, the pyramid is deleted.

-M Minimum feature ID. New raster IDs are assigned the larger of the minimum ID or the maximum assigned ID + one.

-n image name

-p ArcSDE user DBMS password

-s ArcSDE server hostname (default: localhost)

-S The raster description (quoted string)

-t The raster tile width and height measured in pixels. Each tile is stored as a separate raster block.

-u ArcSDE user DBMS username

-v The raster ID

-V Enable verbose mode to describe all properties.

Discussion

The sderaster is a command line utility for managing raster layers.

The supported external raster formats are ESRI Band Sequential (BSQ) and TIFF. However, to use TIFF format you will need to install the open source libtiff library. For information on obtaining the open source libtiff library for you platform refer to http://www.libtff.org. For the Solaris platform the libtiff.so is included under /usr/openwin/lib. For the Solaris platform you just need to include /usr/openwin/lib in your LD_LIBRARY_PATH.

The typical scenario for using the sderaster command is to create a raster layer (a business table and associated raster tables) with the import operation followed by subsequent executions of the mosaic operation to input additional image files. Finally, the pyramid operation is applied with the level set to -1, instructing sderaster to create a full pyramid.

Be sure to include the -g option during the import operation if you want the raster to appear in table of contents of either ArcCatalog of ArcMap. Specifying -g creates a raster with an image name of ESRI_SDERASTERDATASET which is detectable by ArcCatalog and ArcMap.

The other operations of the sderaster command are used to make adjustments to the raster layer.

Use the add operation to add a raster column to an empty business table.

In this example the raster column is added to the empty table topo. The dbtune configuration keyword contains the storage configuration for the tables and indexes ArcSDE will create to support the raster column. For more information about dbtune configuration keywords consult the ArcSDE Configuration and Tuning Guide for your DBMS.

$ sderaster -o add -l topo,image -k topo -S "topographic series 11" -u gis1

Connecting to server ultra, port 7000, as user gis1

Creating raster layer: topo.image

Complete...

Use the drop operation to drop a raster layer. Dropping a raster layer drops the supporting raster tables that store the raster data and deletes the raster layer's reference from the sde.raster_columns table.

$ sderaster -o drop -l topo,image -u gis1

Connecting to server ultra, port 7000, as user gis1

Deleting raster layer topo.image...

Complete...

Use the truncate operation to delete the rasters of a raster layer, but leave the raster layer schema intact. This operation is useful if you want to reload the rasters.

$ sderaster -o truncate -l topo,image -u gis1

Connecting to server ultra, port 7000, as user test

Truncating raster layer topo.image...

Complete...

To obtain the properties of the raster layer use the describe operation. With the describe operation if you do not specify a raster layer, the properties of all raster columns are returned.

$ sderaster -o describe -u gis1

Connecting to server ultra, port 7000, as user gis1

Raster Layer Description ....: <None>
Table Name ..................: GIS1.TOPO
Raster Column ...............: IMAGE
Raster Layer ID .............: 2
Minimum Raster ID ...........: 1
Creation Date ...............: Wed Jun 13 12:43:35 2001
User Privileges .............: SELECT, INSERT, DELETE, UPDATE
Raster Layer Configuration ..: DEFAULTS
Coordinate System ...........: <None>

Raster Layer Description ....: <None>
Table Name ..................: GIS1.LANDMARKS
Raster Column ...............: IMAGE
Raster Layer ID .............: 3
Minimum Raster ID ...........: 1
Creation Date ...............: Wed Jun 13 14:01:22 2001
User Privileges .............: SELECT, INSERT, DELETE, UPDATE
Raster Layer Configuration ..: DEFAULTS
Coordinate System ...........: <None<

2 raster layer(s).

Complete...

$ sderaster -o describe -l topo,image -u gis1

Connecting to datasource sde:oracle, as user gis1

Raster Layer Description ....: <None>
Table Name ..................: GIS1.TOPO
Raster Column ...............: IMAGE
Raster Layer ID .............: 2
Minimum Raster ID ...........: 1
Creation Date ...............: Tue Jun 12 16:05:47 2001
User Privileges .............: SELECT, INSERT, DELETE, UPDATE
Raster Layer Configuration ..: DEFAULTS
Coordinate System ...........: <None>

The list operation returns the rows of a raster column. You can specify that the values of a single row should be returned by including the -v option.

$ sderaster -o list -l topo,image -u gis1

Connecting to datasource sde:oracle, as user gis1

Raster ID ...................: 204
Raster Dimension ............: 500, 1108, 1
Raster Tile Dimension .......: 128, 128
Pixel Type ..................: uchar
Compression .................: none
Image Pyramid ...............: 0, false, none

Raster ID ...................: 205
Raster Dimension ............: 500, 1108, 1
Raster Tile Dimension .......: 128, 128
Pixel Type ..................: uchar
Compression .................: none
Image Pyramid ...............: 0, false, none

2 raster(s).

Complete...

$ sderaster -o list -l topo,image -v 205 -u gis1

Connecting to datasource sde:oracle, as user gis1

Raster ID ...................: 205
Raster Dimension ............: 500, 1108, 1
Raster Tile Dimension .......: 128, 128
Pixel Type ..................: uchar
Compression .................: none
Image Pyramid ...............: 0, false, none

1 raster(s).

Complete...

The insert operation allows you to insert an image into a raster layer. Include the -c option to compress the data upon entry.

$ sderaster -o insert -l topo,image -f topo_0192.tif -c -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 104

Total Time: 00:00:02

Complete...

Rasters from other raster layers can be used as the source of the insert by specifying the raster in a quoted string after the -f option. For instance rather than specifying the image file topo_0192.tif in the above example, a raster from another geodatabase is used.

$ sderaster -o insert -l topo,image -f "-l carto,rasters -v 102 -u gis2 -p gis -i esri_sde -s taciturn" -c -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 104

Total Time: 00:00:02

Complete...

The delete operation lets you remove a raster from a raster layer.

$ sderaster -o delete -l topo,image -v 295 -u gis1

Connecting to server ultra, port 7000, as user gis1

Raster ID : 295
Deleted.

Complete...

With the update operation you can replace a raster of a raster layer with an another. This operation is useful for reentering an edited image file into a raster layer.

$ sderaster -o update -l topo,image -v 495 -f topo_982.tif -c -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 495

Total Time: 00:00:03

Complete...

Rasters from other raster layers can be used as the source of the update by specifying the raster in a quoted string after the -f option. For instance, rather than specifying the image file topo_982.tif in the above example, a raster from another geodatabase is used.

$ sderaster -o update -l topo,image -v 495 -f "-l carto,raster -v 102 -i lands -s taciturn -u gis2 -p gis" -c -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 495

Total Time: 00:00:03

Complete...

The mosiac operation allows you to integrate data of an image with the data of an existing raster. The mosaic operation requires that the raster column have a coordinate system, and that the images have the same cell size and alignment.

$ sderaster -o mosiac -l topo,image -v 382 -f topo_137.tif -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Image Extent.................:
minx : 234917.94185799997649
miny : 4198842.21638599969447
maxx : 239987.78185799997300
maxy : 4210089.33638599980623
Raster ID : 382

Total Time: 00:00:04

Complete...

Rasters from other raster layers can be used as the source of the mosaic by specifying the raster in a quoted string after the -f option. For instance, rather than specifying the image file topo_137.tif in the above example, a raster from another geodatabase is used.

$ sderaster -o mosiac -l topo,image -v 382 -f "-l carto,raster -v 102 -i lands -s taciturn -u gis2 -p gis" -u gis1

Connecting to server ultra, port 7000, as user gis1

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Image Extent.................:
minx : 234917.94185799997649
miny : 4198842.21638599969447
maxx : 239987.78185799997300
maxy : 4210089.33638599980623
Raster ID : 382

Total Time: 00:00:04

Complete...

Use the pyramid operation to created or recreated the raster pyramid. If you do not specify a pyramid level, the 0 level is assumed and the pyramid is deleted. Specifying a pyramid level of -1, lets the sderaster create all of the levels required to reach the apex.

$ sderaster -o pyramid -l topo,image -L -1 -v 701 -u gis1

Connecting to server ultra, port 7000, as user gis1

Updating pyramid...
Raster ID : 701

Total Time: 00:00:00

Complete...

The raster statistics and histogram are created with the stats operation.

$ sderaster -o stats -l topo,image -v 847 -f topo_291.tif -u gis1

Connecting to server ultra, port 7000, as user gis1

Calculating statistics...
min : 27.0000000000
max : 248.0000000000
mean : 99.4931516245
std dev : 55.8325332694

Raster ID : 847

Total Time: 00:00:01

Complete...

Update the color map of a raster with the colormap operation. Specifying the -d option deletes the raster's colormap, while the -f option updates the color map with the contents of an image file or another raster.

$ sderaster -o colormap -l topo,image -v 763 -f topo_049.tif -u gis1

A raster can be exported to a file with the export operation.

$ sderaster -o export -l topo,image -v 821 -f topo_938.tif -u gis1

Connecting to server ultra, port 7000, as user gis1

Exporting...
Raster ID : 821

Total Time: 00:00:00

Complete...

Use the import operation to convert an image file into a raster layer. Be sure to include the -c option to compress the data and the -g option if you want to access the data from ArcCatalog or ArcMap.

$ sderaster -o import -l topo,image -c -g -v 232 -f topo_562.tif -u gis1

Connecting to server ultra, port 7000, as user gis1

Creating user table: topo
Creating raster layer: topo.image

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 1

Total Time: 00:00:02

Complete...

Rasters from other raster layers can be used as the source of the import by specifying the raster in a quoted string after the -f option. For instance, rather than specifying the image file topo_137.tif in the above example, a raster from another geodatabase is used.

$ sderaster -o import -l topo,image -c -g -v 562 -f "-l carto,raster -v 102 -i lands -s taciturn -u gis2 -p gis" -u gis1

Connecting to server ultra, port 7000, as user gis1

Creating user table: topo
Creating raster layer: topo.image

Image Dimension..............: 500, 1108, 1
Pixel Type...................: uchar
Raster ID : 1

Total Time: 00:00:02

Complete...

sdeservice (Windows NT only)

This command manages the ArcSDE service on Windows NT.

Usage syntax

sdeservice -h

sdeservice -o create -p <DB_Admin_password>

-l <license server name>

[-q] [-H <sde_directory>]

[-d <ORACLE,SID | ORACLE8I,SID | SQLSERVER | DB2,DB2INSTANCE | INFO

RMIX>]

[-i <service>]

[-u <service_user>] [-P <service_user_password>]

sdeservice -o delete [-i <service>] [-a] [-q]

sdeservice -o register -r <SDEHOME|SDE_DBA_PASSWORD|NLS_LANG> -v <value>

-p <DB_Admin_password> [-i <service>] [-q]

sdeservice -o unregister -r <SDEHOME|SDE_DBA_PASSWORD|NLS_LANG> -p <DB_Admin_pas

sword>

[-i <service>] [-q]

sdeservice -o modify -r <SDEHOME|SDE_DBA_PASSWORD|LICENSE_SERVER|NLS_LANG>

-p <old_DB_Admin_password> -v <new_value> [-i <service>]

[-q]

sdeservice -o list [-i <service>] [-a] [-q]

Operations

create Creates a service

delete Deletes a service

register Registers a service

unregister Unregisters a service

modify Modifies a service

list Displays service information for all or a specified service

Options

-a For the delete operation, delete all services. For the list operation, list the information of all services.

-d An DBMS whose service should start before ArcSDE. Optional if the DBMS is on a remote machine. This must be in uppercase.

-h Prints usage and options

-H ArcSDE home directory (SDEHOME). Only needed if the SDEHOME variable isn't set or multiple services are in use.

-i ArcSDE service name—only required if the service is not called "esri_sde"

-l License server host computer name

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-p ArcSDE administrator DBMS password

-P ArcSDE service user password (Windows NT login password)

-q Quiet; all titles and warnings are suppressed

-r Windows NT registry keyword

-u ArcSDE service account user—must be a Windows NT user who has "administrator" permissions on the server computer. Include the domain name if needed.
For example, if you're logged into the "AVWORLD" domain and your username is `joe', enter "AVWORLD\joe". You should be logged in as this user when
you create the service.

-v Registry value

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sdeservice administration utility manages the ArcSDE services and registry entries on Windows NT platforms. Installing the ArcSDE software adds one service and several related registry entries, which include SDE_DBA_PASSWORD, SDEHOME, LICENSE_SERVER, and NLS_LANG.

The "create" and "delete" operations will add or delete the ArcSDE service entry, respectively . You can modify the registry values of SDEHOME, SDE_DBA_PASSWORD, LICENSE_SERVER, or NLS_LANG with the modify operation. You can also remove or recreate the SDEHOME or SDE_DBA_PASSWORD entries with the "unregister" and "register" operations. Normally, you'll only need to use the register operation after using unregister.

sdesetupmssql, sdesetupora8i, sdesetupora806, sdesetupinfx, sdesetudb2

This database specific command does the initial meta data setup so that the service can start and/or direct connections will work.

sdesetupmssql is for SQL Server installation
sdesetupora8i is for Oracle 815 and 816 installations
sdesetupora80 is only for an Oracle 806 installation. It is important to run the correct sdesetup on the correct version of Oracle that you are using.
sdesetupinfx is only for Informix installation
sdesetupdb2 is only for DB2 installation

To simplify documentation, the usage below is abbreviated to sdesetup. Usage syntax is the same for all flavors of the setup.

Usage syntax

sdesetup -h

sdesetup -?

-o upgrade [-H <sde_directory>] [-p <DB_Admin_password>] [-N] [-q]

-o list [-H <sde_directory>] [-p <DB_Admin_password>] [-q]

-o install [-H <sde_directory>] [-p <DB_Admin_password>] [-N] [-q]

Operations

install Create or update the ArcSDE and Geodatabase system tables and stored procedures

list List the installed ArcSDE version

upgrade Upgrades the ArcSDE and Geodatabase system tables and stored procedures

Options

-h Prints usage and options

-H ArcSDE home directory (SDEHOME). Only needed if the SDEHOME variable isn't set or multiple services are in use.

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-p ArcSDE administrator DBMS password

-q Quiet—all titles and warnings are suppressed

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sdesetup administration utility manages the creation and maintenance of the ArcSDE, Geodatabase and Locator system tables, indexes, stored procedures and some triggers.

The actual name of the command varies according to the implementation of ArcSDE as follows:

ArcSDE for Oracle 8i sdesetupora8i
ArcSDE for Oracle 8 sdesetupora80
ArcSDE for SqlServer sdesetupmssql
ArcSDE for Informix sdesetupinfx
ArcSDE for DB2 sdesetupdb2

The ArcSDE system tables and stored procedures can be created or updated using the install operation. For new installs of ArcSDE the install operation will create the tables and stored procedures for the first time. For subsequent executions of the install operation on an existing database, the system table checked to ensure that it is current. If it is not, the install operation will bring it up-to-date.

sdesetupora8i -o install -p fredericton

Use the update operation to bring an existing database up-to-date with the latest additions or changes to a new ArcSDE installation.

sdesetupmssql -o upgrade -p halifax

The list operation returns the current version of an ArcSDE installation.

sdesetupinfx -o list -p charlottetown

sdetable

This command administers business tables and their data.

Usage syntax

sdetable -o create -t <table> -d <column_definition>

[-k <config_keyword>] [-i <service>]

[-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

sdetable -o delete -t <table>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o truncate -t <table>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o list -t <table> -c <column> -v <column_value>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o describe -t <table> [-i <service>] [-s <server_name>]

[-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

sdetable -o create_index -t <table> -n <index> -c <column> [-k <config_keyword>]

[-Q] [-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

sdetable -o delete_index -n <index> [-t <table>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o rename -t <table> -T <new_name>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o {grant|revoke} -t <table> -U <user>

-A <SELECT,UPDATE,INSERT,DELETE>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-I] [-q]

sdetable -o register -t <table>

[{-c <row_id_column> -C {SDE|USER} } | {-C NONE} ]

[-L {OFF | ON}] [-M <minimum_id>] [-S <table_description

>]

[-V {SINGLE | MULTI}] [-k <config_keyword>]

[-H {VISIBLE | HIDDEN}] [-R {MANY | SINGLE}]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

sdetable -o unregister -t <table> [-F]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o alter_reg -t <table>

[{-c <row_id_column> -C {SDE|USER} } | {-C NONE} ]

[-L {OFF | ON}] [-M <minimum_id>] [-S <table_description

>]

[-V {SINGLE | MULTI}] [-F] [-k <config_keyword>]

[-H {VISIBLE | HIDDEN}] [-R {MANY | SINGLE}]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o describe_reg [{-U <user> | -t <table>}]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-q]

sdetable -o create_view -T <view_name> -t <table1,table2...tablen>

-c <table_col1,table_col2...table_coln>

[-a <view_col1,view_col2...view_coln>] [-w <"where_claus

e">]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o create_mv_view -T <view_name> -t <table_name>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o delete_mv_view -t <table_name>

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -o update_dbms_stats -t <table_name> [-K <keyword>]

-m <{ESTIMATE | COMPUTE}> [-n {ALL | <index_name>}]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

sdetable -h

sdetable -?

sdetable -o update_dbms_stats has database specific usage:

Oracle:

sdetable -o update_dbms_stats -t <table_name> [ -K <keyword>] -m <{estimate | compute}>
[-n <{ALL | <index_name>}>] [-i <service>] [-s <server_name>][-D <database>]
[-u <DB_User_name>] [-p <DB_User_password>] [-N] [-q]

SQL Server:

sdetable -o update_dbms_stats -t <table_name> [ -K <keyword>]
-m <"{with fullscan | with sample %% percent} [index]"> [-i <service>] [-s <server_name>]
[-D <database>] [-u <DB_User_name>] [-p <DB_User_password>] [-N] [-q]

Informix:

sdetable -o update_dbms_stats -t <table_name> [ -K <keyword>] -m <{low | medium | high}>
[-i <service>] [-s <server_name>][-D <database>] [-u <DB_User_name>]
[-p <DB_User_password] [-N] [-q]

DB2:

sdetable -o update_dbms_stats -t <table_name> [-K <keyword>]
[-n {ALL | <index_name>}] [-m <{dbms options}>]
[-i <service>] [-s <server_name>] [-D <database>]
-u <DB_User_name> [-p <DB_User_password>] [-N] [-q]

Operations

alter_reg Modifies a registration entry such as converting the table from single to multi versioned and vice versa

create Creates a new table

create_mv_view Creates an intelligent multiversioned view (only supported with Oracle Enterprise Server)

create_index Creates an index on a table

create_view Creates a DBMS view

delete Deletes a table—can be used to completely delete a layer

delete_mv_view Deletes an intelligent multiversioned view

delete_index Deletes an index on a table

describe Displays a table definition

describe_reg Displays table registration entries

grant Grants access to a table for a user

list Lists column data for a given field value

register Registers a table in the ArcSDE table registry

rename Renames a table

revoke Removes access to a table for a user

truncate Deletes all records from a table

unregister Removes a table from the ArcSDE table registry

update_dbms_stats Updates RDBMS table and/or index statistics

Options

-a A comma-separated list of a view column names—use if you want a view to have different column names

-A Type of access: SELECT, UPDATE, INSERT, or DELETE

-c Row ID column name. This option requires using "-C SDE" or "-C USER". If using the create_view operation, use a comma-separated list of column names.

-C Row ID column type:

SDE—SDE-maintained row_id column.
USER—User-maintained row_id column.
NONE—No row_id column. You can't use the "_c" option with this choice.

-d Column definition

-D Database or data source name. Not supported by all DBMSs.

-h Prints usage and options

-H Registers the table as either visible or hidden

-i ArcSDE service name

-I Inherit grant privilege. The "grant option" is included with the granted privilege. For example, if user A grants user B update privileges on a table, the -I option indicates that user A also wants to grant user B the ability to grant other users update privileges on a particular table.

-k Configuration keyword

-K Schema object keyword:

a—A<registration_ID> table ("adds" )
b—<business table
d—D<Registration_ID> table ("deletes" )
f—F<Layer_id> table ("feature")

-L Enable (on) or disable (off) a ROW_LOCK on a registered table

-m DBMS update statistics mode.

-M Minimum row ID

-n Index name

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-p ArcSDE user RDBMS password

-q Quiet; all titles and warnings are suppressed

-Q Index is unique

-s ArcSDE server hostname (default: localhost)

-S Registration entry description string

-t Table name. If you do not own the table, qualify the table name as "owner.table". If using the create_view operation, use a comma- separated list of table names.

-T New table name

-u ArcSDE user RDBMS username

-U ArcSDE user RDBMS username—the user to grant or revoke table access to OR who owns a table

-v Column value

-V Specify if the table is single or multiversioned

-w SQL where clause

-? Prints usage and options (use "-\?" on C shell)

Discussion

To create a business table, supply the table name and field specifications. The field specification uses standard SQL syntax to specify a field list, so you cannot use any SQL reserved words as field names. The field specification may use any data type defined by ANSI SQL89. The field specification of sdetable accepts ArcSDE standard data types, which it maps to DBMS native data types. The standard ArcSDE data types are:

smallint(n) where: 0 < n <= 4
integer(n) where: 4 < n <= 10
float(n,m) where: 0 < n <= 6, 0 < m <= DBMS limit double(n,m) where: 6 < n <= DBMS limit, 0 < m < DBMS limit
string(n) where: 0 < n <= DBMS limit
blob
date

This command creates an attribute table:

$ sdetable -o create -t victoria -d "name string(20), tot_pop integer(9)" -k vict -u av -p mo -s ultra -i esri_80

The resulting table contains two columns: a string column called "name" and an integer column called "tot_pop".

Tables are created as single versioned. Use the alter_reg operation to reregister them as multiversioned if you wish to edit the table with the ArcGIS desktop. A rowid column that will store the unique object ID, to the edited rows must be either added to the table or an existing one must be named. The rowid column must be managed by the sde user. The table victoria is reregistered as multiversioned. The column objectid is added as the rowid column and is populated by ArcSDE with unique id values.

$ sdetable -o alter_reg -t victoria -c objectid -C sde -V multi -u av -p mo -N

The rename operation can be used to change the name of a table. Not all DBMSs support table renaming.

$ sdetable -o rename -t world -T world2000 -u av -p mo

To delete a business table, use the sdetable "delete" operation. The associated feature class (layer), if one exists, is deleted as well.

$ sdetable -o delete -t victoria -u av -p mo -s ultra -i esri_40

Truncating deletes all the records of the business table and the associated feature class (layer), leaving the definition of the table and feature class (layer) intact.

$ sdetable -o truncate -t victoria -u av -p mo -s ultra -i esri_40

To change a business table's specification, use the ALTER statement from the DBMS's SQL utility.

To list the business table definition, use the "describe" operation. It lists the column name and the related data type and length in bytes for each column in the business table.

$ sdetable -o describe -t victoria -u av -p mo -i esri_40

To list rows of a business table, you must specify the table, a column name, and a value of the specified column. An implicit query is performed on the table to fetch and display the rows that have a column equal to the value.

The command below lists the rows of the business table whose parcels column value equals 10:

$ sdetable -o list -t victoria -c parcels -v 10 -u av p mo -i esri_40

The "create_index" operation creates an index on a business table column. This example creates an index on column "parcel_no".

$ sdetable -o create_index -t victoria -c parcel_no -n index1 -u av -p mo -i esri_40

You can create aggregate indexes by specifying a comma-separated list of columns. The example creates an aggregate index on the parcel_no and zone_no columns.

$ sdetable -o create_index -t victoria -c parcel_no,zone_no -n index2 -u av -p mo

To remove an index from an attribute table, specify the index name.

The following command deletes the index "index1" from the business table:

$ sdetable -o delete_index -n index1 -u av -p mo

Not all DBMSs maintain unique index names, in which case you must qualify the index name with the table name (for example, victoria.index1).

You can also use sdetable to manage registered tables. Tables created with the sdetable create operation are automatically registered as single versioned.

However tables created from the SQL interface must be registered to be accessable from geodatabase.

To register a feature class (layer) called "world":

$ sdetable -o register -t world -u av -p mo

Just as tables are registered they can also be unregistered using the unregister operation.

$ sdetable -o unregister -t world -u av -p mo

However, tables cannot be unregistered if they have been registered as multiversioned, they are part of a geodatabase object, or they have a spatial column. In all cases the dependencies must be removed first.

You must unregister the table from geodatabase using ArcCatalog if it has been registered with the geodatabase.

You must remove its spatial column using the sdelayer -o delete operation, if it has one.

$ sdelayer -o delete -l world,feature -u av -p mo

You must alter the registration with the alter_reg operation to reregister the table as single-version, if it was registered as multiversion, before you can unregister the table.

$ sdetable -o alter_reg -t world -V single -u av -p mo

You can specify a particular column to use for the unique row ID column with "-c". If you do this, you also need to use "-C" to specify whether the row ID column is ArcSDE or user managed. Tables that are registered as multiversioned must be registered with an ArcSDE managed ROWID column.

$ sdetable -o register -t world -c row_id -C SDE -V multi -u av -p mo

The registration information can be described by the ArcSDE administrator. The administrator can describe the registration of one or all of the tables owned by a particular user. In this example the sde administrator described the registration of the world table.

$ sdetable -o describe_reg -t world -u sde -p sde

ArcSDE     8.1           Tue Oct 20 17:00:36 2000
Layer             Administration Utility
------------------------------------------------------

-----------------------------------------------------------------------------
Table Owner            : AV
Table Name             : WORLD
Registration Id        : 109
Row ID Column          : OBJECTID
Row ID Column Type     : SDE Maintained
Row Lock               : Not Enabled
Minimum Row ID         : 1
Dependent Objects      : Layer, Multiversioned Table
Dependent Object Names : F52, S52, A93, D93
Registration Date      : Thu Sep 17 11:32:19 2000
Config. Keyword        : DEFAULTS
User Privileges        : SELECT, UPDATE, INSERT, DELETE
Visibility             : Visible

To describe the registrations of all of the tables owned by the av user the sde administrator substitutes the -U av for the -t world option.

You can unregister or alter the registration entry of a table with the "unregister" and "alter_reg" operations, respectively.

The "alter_reg" operation is used to turn row locking on, reset the minimum ID to 1,000 , and change the table to hidden. Hidden tables do not appear in lists unless they are specifically requested.

$ sdetable -o alter_reg -t world -L on -M 1000 -H hidden -u av -p mo

Views can be created with the "create_view" operation. The views created are stored in your DBMS just like any other view you would create with an SQL editor. You may create views that join several tables together up to the limit imposed by your DBMS. However, just as ArcSDE imposes the limit of one spatial column per table, that limit also applies to views created by the "create_view" operation.

$ sdetable -o create_view -T world_view -t "world,countries" -c "world.population, world.gnp, countries.name, countries.feature" -a "population, gross_national_product, name,
feature" -w "world.cname = countries.name" -u av -p mo

Use the delete operation to delete a view created by the "create_view" operation. In this case the delete operation merely removes the view. The delete operation does not drop the underlying business tables which the view was accessing.

To create views that can be used through ArcGIS desktop applications, you should do the following:

- use sdetable -o create_view to create the view, being sure to include the

OBJECTID field from the feature class in the view's fields

- use sdetable -o alter_reg to set the OBJECTID column as a user maintained

row_id column

$ sdetable -o delete -t world_view -u av -p mo

The "update_dbms_stats" operation can be used to update the DBMS statistics of a business table, the index of a business table, or all the indexes of a business table. All DBMSs supported by ArcSDE maintain statistics about the business tables and indexes. Following a lot of changes to a table or index, the statistics for that data object become stale. As a rule of thumb, if more than 20 percent of the table has changed, you should use the "update_dbms_stats" operation on that table.

The statistics of all a table's indexes are automatically updated whenever you update the statistics of the table.

The mode and index options are specific to each DBMS. Each of the DBMS implementations are listed below.

Oracle:

To update the statistics of a table and all its indexes, do not specify the "-n" option.

$ sdetable -o update_dbms_stats -t world -m compute -u av -p mo

To update the statistics of all the indexes but not the table and its indexes, specify the "-n all" option.

$ sdetable -o update_dbms_stats -t world -m estimate -n all -u av -p mo

To update the statistics of an individual index, specify the -n option with the name of an index.

$ sdetable -o update_dbms_stats -t world -m estimate -n world_ix -u av -p mo

The mode can be set to either compute of estimate. When the statistics are computed all of the rows of the table are analyzed. When the estimate mode is used Oracle analyzes a sample of the rows of the table.

SqlServer:

The mode can be set to either either a full scan which would analyze the entire table or a partial scan. If an index is specified only the statistics for the index are updated.

In this example, all of the rows of the world table are analyzed.

$ sdetable -o update_dbms_stats -t world -m "with fullscan" -u av -p mo

In the following example a partial scan is performed on an index of the world table.

$ sdetable -o update_dbms_stats -t world -m "with sample 30 percent world_ix" -u av -p mo

Informix:

The mode can be set to either low medium or high. By default the mode is set to low.

In this example the statistics of the world table are updated with a mode of high.

$ sdetable -o update_dbms_stats -t world -m high -u av -p mo

All RDBMS:

The "-K" option allows you to specify which ArcSDE schema object to analyze. One or any combination of the keyword values may be used. For example:

$ sdetable -o update_dbms_stats -K ad -u av -p mo

This command updates the DBMS statistics for the A<Registration_id> ("adds") and the D<Registration_ID> ("deletes") tables.

If no keyword value is given, the statistics for the business table and associated support tables will be updated.

The optional multiversioned view is created with the "create_mv_view" operation. This views can also be created by calling the ArcSDE C API function SE_table_create_mv_view.

Once you have created the view you can access the multiversioned business table from within the DBMS SQL interface. These views provide direct SQL access to a multiversioned business table.

$ sdetable -o create_mv_view -T world_imv_view -t world -u av -p mo

Using the DBMS SQL interface set the current version by executing the stored procedure sde.version_util.set_current_version.

For example, if the current version of the database that you wished to access were called 'working' set the database to that version during the SQL session as follows:

SQL execute sde.version_util.set_current_version('working');

After the desired version is set, access the multiversioned view as you would any other business table.

For example, to select records

SQL select * from world_mv_view;

or insert records

SQL insert into world_mv_view (county_name, population) values ('Canada', 30000000);

The delete_mv_view operation drops a multiversioned view.

$ sdetable -o delete_mv_view -t world -u av -p mo

The view can also be dropped using the ArcSDE C API function SE_table_drop_mv_view.

For more information regarding the creation and access of multversioned views consult Native SQL Access.

sde2cov

This command converts ArcSDE feature classes to ArcInfo coverages.

Usage syntax

sde2cov -h

sde2cov [-o create] -l <table,column> [-V <version_name>]

-f <coverage,feature_class>

[-P {double | single}] [-a {none | all | file=<file_name>}]

[-w <"where_clause">] [-i <service>][-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

sde2cov [-o create] -L <log_file> [-V <version_name>]

-f <coverage,feature_class>

[-P {double | single}] [-a {none | all | file=<file_name>}]

[-w <"where_clause">] [-i <service>][-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

Operations

create Creates a new feature class in a coverage. An error is returned if the feature class exists (default).

Options

-a Attribute mode:

none Do not load any attributes
all Load all attribute columns (default)
file=<file_name File containing lines of the form <SDE_column [INFO_item]
The first part selects the SDE column; the second part (optional) allows a new item name to be specified.

-D Database name

-f Output feature class name of coverage

-h Prints usage and options

-i ArcSDE service name

-l Input feature class table and spatial column name

-L The name of the log file to extract from

-o Operation

-p ArcSDE user DBMS password

-P ArcInfo coverage's precision (default: double)

-s ArcSDE server hostname (default: localhost)

-u ArcSDE user RDBMS username

-V Version name. If specified, export only the data that belongs to the version.

-w SQL where clause

-? Prints usage and options (use "-\?" on C shell)

Discussion

You must update the topology of any coverage produced by sde2cov. Run "CLEAN" on polygon and region coverages and "BUILD" or "CLEAN" on other feature classes (layers). You must then run "CREATELABELS" on the output coverage to assign label points to each polygon. You can export annotation to new subclasses of existing coverages. You can't export annotation into an existing subclass of an existing coverage. All other feature types must be exported to new coverages.

As the ArcSDE "multipart area" feature class (layer) equates to an ArcInfo coverage "region" feature, you must preserve the regions (and associated attribute data) in the resulting output coverage. Further reduction to composite polygon features could result in data loss and corruption.

Multipart lines with measures exported into route subclasses will produce coverages with an arc and a section at each vertex. You can reduce the number of arcs if the coverage is cleaned for lines using the "CLEAN" command. All section tables will remain after the "CLEAN" operation.

ArcSDE entity (feature) type to coverage feature class mapping
ArcSDE entity (feature) type | Coverage feature class
point (p) | point, node
simple line, line (sl) | line
area (a) | polygon
multipart area (a+) | region.<subclass
multipart lines with measures (slM+) | route.<subclass
point, line, simple line, ANNO (pslA) | anno.<subclass

Examples

1. Exporting multipart polygons to a region coverage:

$ sde2cov -o create -l world.cntry94,feature -f country,region.cntry -P single -a all -u world -p world

ArcSDE      8.1       Fri Sep 5 10:58:33 2000
Layer to Coverage Loading       Administration Utility
-----------------------------------------------------------------
Exported 165 features from `world.cntry94' into country

SDE2Cov completed.

2. Exporting a subset of features with a where clause:

$ sde2cov -o create -l world.cities,feature -f big,point -w `population 10000000' -a all -u world -p world

ArcSDE      8.1       Fri Sep 5 10:58:33 2000
Layer to Coverage Loading       Administration Utility
-----------------------------------------------------------------
Exported 11 features from `world.cities' into big

SDE2Cov completed.

3. Exporting polygons from a multiversioned feature class (layer).

$ sde2cov -o create -l world.countries,feature -f country,polygon -V version10 -P single -a all -u world -p world

ArcSDE      8.1       Fri Sep 5 10:58:33 2000
Layer to Coverage Loading       Administration Utility
-----------------------------------------------------------------
Exported 273 features from `world.countries' into country

SDE2Cov completed.

sde2shp

This command extracts features from an ArcSDE feature class (layer) or log file and writes them out to an ESRI shapefile.

Usage syntax

sde2shp -h

From a feature class:

sde2shp -o <append> -l <table,column> [-V <version_name>]

-f <shape_file> -t <file_type>

[-a {all | file=<file_name>}]

[-w <"where_clause">] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

sde2shp -o <init> -l <table,column> [-V <version_name>]

-f <shape_file> -t <file_type>

[-a {all | file=<file_name>}]

[-w <"where_clause">] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

From a log file:

sde2shp -o <append> -L <log_file> [-V <version_name>]

-f <shape_file> -t <file_type>

[-a {all | file=<file_name>}]

[-w <"where_clause">] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

sde2shp -o <init> -L <log_file> [-V <version_name>]

-f <shape_file> -t <file_type>

[-a {all | file=<file_name>}]

[-w <"where_clause">] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

Conversion table

ArcSDE entity (feature) to shapefile shape mapping
ArcSDE entity (feature) | output shape
point | point (if the output shapefile is a multipoint type, then each point feature is written out as a multipoint shape with one point)
lines | arc
simple lines | arc
area | polygon
multipart area | multipart polygon (region)

Operations

append Adds the features to existing features in the shapefile—creates the file if it doesn't already exist

init Deletes the shapefile if it exists and then creates a new one

Options

-a Attribute modes:

all Loads all attribute columns. If an attribute table exists, the incoming schema must be union compatible with the shapefile’s dBASE table if using
the append operation.

file=<file_name File containing lines of the form <sde_column [shape_column] [type] [width] [nDec].
The sde_column selects the column to output.
The remaining optional items determine the new attribute column definitions.
You can export feature table columns such as spatial_column.FID and spatial_column.AREA.

-D Database or data source name. Not supported by all DBMSs.

-f Path to and name of the shapefile to create or add to

-h Prints usage and options

-i ArcSDE service name

-l The map layer table and spatial column to extract from. These must exist, and the executing user must have read access.
If you are not the owner of the table, you must qualify the table name as "owner.table".

-L Name of the log file to extract from

-o Operation

-p ArcSDE user RDBMS password

-s ArcSDE server hostname (default: localhost)

-t Shapefile types (names are not case sensitive)

point Accepts only point features
pointZ Accepts points, z-values, and, optionally, measure values
pointM Accepts points and measures
arc Accepts line, simple line, and area features. Area features with donuts are accepted as multipart shapefile arc features.
arcZ Accepts linear features, z-values, and optionally, measure values
arcM Accepts linear features and measures.
polygon Accepts area features.
polygonZ Accepts area features, z- values, and, optionally, measure values
polygonM Accepts area features and measures
multipoint Accepts points and multipart points
multipointZ Accepts points, multipoints, z-values, and, optionally, measure values
multipointM Accepts points, multipoints, and measure values

-u ArcSDE user RDBMS username

-V Version name. If specified, export only the data that belongs to the version.

-w SQL where clause to limit the features retrieved from the business table or log file

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sde2shp command can convert up to 15 digits of precision or the maximum precision imposed by the SE_DOUBLE data type.

The sde2shp command converts ArcSDE feature classes into shapefiles. This example converts a feature class called blocks to a shapefile called census_data.

$ sde2shp -o init -l blocks,shape -f census_data -t polygon -a all -u av

Note

If the sde2shp encounters a feature class column name containing the characters "#" or "-" it returns the error message:

Unable to create shape attribute table: Bad column definition

Use the DBMS SQL editor to rename the columns before converting them to a shapefile.

sde2tbl

This command converts an ArcSDE table format to an ArcSDE, dBASE, or INFO table.

Usage syntax

sde2tbl -h

sde2tbl -o append -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

[-w <"where_clause">]

sde2tbl -o init -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

[-w <"where_clause">]

sde2tbl -o create -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-k <config_keyword>] [-w <"where_clause">]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

Operations

append Adds records to an existing ArcSDE, dBASE, or INFO table (the default)

init Deletes all records in an existing RDBMS table before importing new records

create Creates a new table and imports records into it—an error is returned if the table already exists

Options

-a Attribute modes:

all Loads all columns (the default). If the table exists, the incoming schema must be union compatible with the table if using the append or init option.
file=<file_name> File containing lines of the form <fr_colName> [to_colName] [type] [size] [nDecs] [NOT_NULL]
The <fr_colName> selects the column to export, while the <to_colName> specifies the new column to load to. The allowed type, size, and
nDecs (number of decimal places) values will vary according to each DBMS.

-c Commit rate (default is the AUTOCOMMIT value from giomgr.defs). Only used when the output table type is "SDE".

-D Database or data source name—not supported by all DBMSs

-f Output table name—define the table type with the "-T" option.

-h Prints usage and options

-i ArcSDE service name

-I Disable buffered inserts (default: ON). Only used when the output table type is SDE.

-k Configuration keyword from dbtune table (default: DEFAULTS). Only used when the output table type is SDE.

-o Operation

-p ArcSDE user DBMS password

-s ArcSDE server hostname (default: localhost)

-t Input ArcSDE table name

-T Output table type, either dBASE, INFO, or SDE

-u ArcSDE user DBMS username

-v Verbose option—reports records committed at the commit interval

-w SQL where clause

-? Prints usage and options (use "-\?" in C shell)

Discussion

The sde2tbl command converts ArcSDE tables into INFO and dBASE tables. You can also use sde2tbl to selectively copy columns from an ArcSDE table into a new ArcSDE table. The example below converts an ArcSDE table called block_attr into a dBASE table called census_data.

$ sde2tbl -o create -t block_attr -f census_data -T dBASE -a all -u av -p mo

If the table already exists, you can add more records with the "append" operation. You can also remove the records from an existing table with the "init" operation before loading more records.

sdeversion

This command allows the ArcSDE administrator to manage versions.

Usage syntax

sdeversion -o alter -V <version_name> [-d <description>]

[-A {public | protected | private}] [-N]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -o create -V <version_name> -P <parent_version> [-U]

[-A {public | protected | private}]

[-d <description>]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -o delete -V <version_name> [-N]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -o rename -V <old_version_name> -n <new_version_name> [-N]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -o describe [-V <version_name>] [-w <"where_clause">]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -o compress [-N]

-u <DB_user_name> [-p <DB_User_password>] [-q]

[-i <service>] [-s <server_name>] [-D <database>]

sdeversion -?

sdeversion -h

Operations

alter Modifies a version's definition

create Creates a new version

delete Deletes an existing version

rename Renames an existing version

describe Shows version descriptions

compress Compresses the database's state tree

Options

-A Access. Public, protected, or private

-d Version description

-h Prints usage and options

-i ArcSDE service name

-n New version name

-N No verification is performed—the operation begins immediately after being invoked

-o Operation

-p ArcSDE user RDBMS password

-P Parent version name

-q Quiet; all titles and warnings are suppressed

-s ArcSDE server hostname (default: localhost)

-U Generate unique version name by adding a suffix if necessary

-u ArcSDE user RDBMS username

-V Version name

-w SQL where clause

-? Prints usage and options (use "-\?" on C shell)

Discussion

The sdeversion command manages versions of a geodatabase. For more information on this topic, see Building a Geodatabase.

The "describe" option lists the current definition of an existing version.

$ sdeversion -o describe -V SDE.DEFAULT -u sde -p sde

ArcSDE   8.1      Build 625 Mon Oct  2 22:33:27 PDT 2000
Version          Administration Utility
-----------------------------------------------------
Instance default version.
-----------------------------------------------------
Version Name:         SDE.DEFAULT
Version ID:           1
Parent Version Name:
Parent Version ID:    0
State ID:             3422
Access:               Public
Creation Time:        09/01/99 11:16:28

In the following example, we will create a new private version called "MY_VERSION", based on version "SDE.DEFAULT". As this will be a private version, only the person who creates it will have access to it.

$ sdeversion -o create -V MY_VERSION -P SDE.DEFAULT -A private -d "Overpass Design- Phase II" -u sde -p sde

The "-d" option allows you to add some descriptive text when creating the new version. This provides useful documentation as to the reasons for creating the new version.

The "alter" option allows you to alter the definition of a version. For example, you may wish to make the new version available to some coworkers but with read-only access permissions.

$ sdeversion -o alter -V MY_VERSION -A protected -u sde -p sde

Only the version owner can alter, rename, or delete a version. You cannot delete "parent" versions until any dependent "child" versions have first been removed.

$ sdeversion -o compress -V MY_VERSION -N -u sde -p sde

The database's state tree is compressed by removing all states that are no longer
referenced by a version. Branches not referenced by a version are removed and non-branching
sequences between versions are trimmed.

sdexinfo

This command describes an ArcSDE export file.

Usage syntax

sdexinfo -h

sdexinfo [-o describe] -f <{export_file | -}>

sdexinfo -o stats -f <{export_file | -}>

sdexinfo -o list -f <{export_file | -}> [-s] [-a]

Operations

describe Lists the export file header and attribute column definitions (the default)

stats Performs the describe operation and lists statistical information

list Performs the stats operation and lists partial or complete feature and attribute data values

Options

-a Lists the attribute data values

-f ArcSDE export filename. If "_", read from standard input

-h Prints usage and options

-o Operation

-s Displays a detailed shape feature definition. Displays all fields of the feature definition including the point values.

-? Prints usage and options (use "-\?" on C shell)

shpinfo

This command reports information about a shapefile while preparing to load it into an ArcSDE feature class (layer).

Usage syntax

shpinfo -h

shpinfo [-o describe] -f <shape_file> [-d <{shape | sde | both}>]

shpinfo -o stats -f <shape_file> [-d <{shape | sde | both}>]

Operations

describe Lists the shapefile header and attribute column definitions (the default)

stats Performs the describe operation and lists statistical information

Options

-d Displays attribute column definitions

shape Displays column definitions in shape format (the default)
sde Displays column definitions in ArcSDE format
both Displays column definitions in shape and ArcSDE formats

-f Path to and name of the shapefile

-h Prints usage and options

-o Operation

-? Prints usage and options (use "-\?" on C shell)

Example

$ shpinfo -o stats -f cities -d both

---------------------------------------------

Shape File:         /world/cities

Type:               Point

Number of Shapes:   606

Extent:             minx: -165.2700042724
                    miny: -53.15000152587
                    maxx: 177.1301879882
                    maxy: 78.19999694824

Number of Nil Shapes: 0
Unverified Shapes:    0
Minimum Shape Points: 1
Maximum Shape Points: 1
Total Shape Points:    606
Average Points/Shape: 1.00
Shape Attribute Columns: 4
Name       Type   Width     Decimal Places
------------------------------------------------------------------------------------------------------------------------------------
NAME        C     40             -
COUNTRY     C     12             -
POPULATION  N     11             -
CAPITAL     C      1             -

SDE Attribute Columns: 4

Name        Type     Width Decimal Places   NULL?

-------------------------------------------------
NAME        SE_STRING 40        -
COUNTRY     SE_STRING 12        -
POPULATION  SE_DOUBLE 12        1
CAPITAL     SE_STRING  1        -

SDE column definition string:

NAME string(40), COUNTRY string(12), POPULATION double(12,1), CAPITAL string(1)
-------------------------------------------------

shp2sde

This command converts an ESRI shapefile to an ArcSDE feature class (layer). It will convert both the attributes and the geometry.

Usage syntax

shp2sde -h

shp2sde -o append -l <table,column> [-V <version_name>] -f <shape_file> [-I]

[-a {none | all | file=<file_name>}] [-r <reject_shpfile>]

[-c <commit_interval>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

[-v]

shp2sde -o init -l <table,column> -f <shape_file> [-I] [-v]

[-a {none | all | file=<file_name>}] [-r <reject_shpfile>]

[-c <commit_interval>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

shp2sde -o create -l <table,column> [-V <version_name>] -f <shape_file> [-I]

[Spatial_Index] [{-R <SRID> | [Spatial_Ref_Opts]}]

[-S <layer_description_str>] [-v]

[-e <entity_mask>] [-k <config_keyword>] [-M <minimum_ID>]

[-a {none | all | file=<file_name>}] [-r <reject_shpfile>]

[-c <commit_interval>] [-i <service>] [-s <server_name>]

[-D <database>] -u <DB_User_name> [-p <DB_User_password>]

Where [Spatial_Ref_Opts] := [-x <xoffset,yoffset,xyscale>]

[-z <zoffset,zscale>] [-m <moffset,mscale>]

[-G {<projection_ID> | file=<proj_file_name>}]

[Spatial_Index] := [-g {<grid_sz0>[,<grid_sz1>[,<grid_sz2>]] |

GRID,<grid_sz0>[,<grid_sz1>[,<grid_sz2>]] |

DBTUNE |

NONE |

RTREE |

FIXED,<sdo_level> |

HYBRID,<sdo_level>,<sdo_num_tiles>}]

shape to ArcSDE feature (entity) mapping table
shape | ArcSDE feature (entity)
point | point
multipoint | multipart points
arc | 1:n lines (spaghetti) or simple lines (line strings) Note: If the feature class (layer) allows both lines and simple line features, then all features that pass validation are stored as simple line features, while the rest are stored as lines. If the feature class (layer) supports only lines, then all features are stored as lines. If the feature class (layer) supports only simple line features, then all features not able to pass verification are discarded.
polygon | 1:n area features
nil | nil

Operations

append Adds features to an existing layer (the default)

init Deletes all features of an existing layer before importing new features (not allowed on versioned data)

create Creates a new layer and imports features from the shapefile into it—an error is returned if the layer already exists

Options

-a Attribute modes:

none Does not load any attributes—the default. The business table's layer is populated with the shape records, and the spatial column is populated
with a sequential number. This option allows import of data created with the "-a none" option of the sde2shp command in versions 2.1 or 2.1.1.

all Loads all attribute columns. If an attribute table doesn't exist for the layer, one is created. Otherwise, the incoming schema must be union
compatible with the table if using the append or init option.

file=<file_name> File containing lines of the form <shape_column [sde_column] The shape_column selects the column to be output, while
sde_column specifies the column to load to.

-c Commit rate (default is the AUTOCOMMIT value from giomgr.defs)

-D Database or data source name (not supported by all DBMSs)

-e Entity types allowed (npsla3+M)

n Nil
p Point shapes
s Line (spaghetti) shapes
l Simple line (line string) shapes
a Area shapes
3 Three-dimensional shapes can be added to the entity type mask with the "-o add" operation only.
+ Multipart shapes
M Measures on coordinates. The [-m] option is required if measures on coordinates is a defined shape type.

-f Path to and name of the shapefile

-g Spatial index type and parameters

<grid1,grid2,grid3> or SPIDX_GRID,<grid1,grid2,grid3> -- Create multi-level grid index; grid2, grid3 are optional.
SPIDX_DBTUNE -- Use DBTUNE parameters to index.
SPIDX_NONE -- No spatial index is created.
SPIDX_RTREE -- Create Rtree index.
SPIDX_FIXED,<lvl> -- Create fixed Quadtree index.
SPIDX_HYBRID,<lvl,ntiles> -- Create hybrid Quadtree index.

-G Coordinate system specifier. <projection_id>coordinate system ID (see the pedef.h file for the integer codes) file=<proj_file_name>file containing
coordinate system description string

-h Prints usage and options

-i ArcSDE service name

-I Disable buffered inserts (default: ON)

-k Configuration keyword. Used with the create operation only. If not specified, the default "DEFAULTS" value from the dbtune table is used.

-l Map layer table and spatial column to load. They must exist, and the user must either own the table or have INSERT access to it. If you do not own the table,
qualify the table name as "owner.table".

-m Measure offset and scale, separated by a comma (default values are 0.0, 1.0)

-M Minimum ID. New shape IDs are assigned the larger of the minimum ID or the maximum assigned ID + one (default: 1)

-o Operation

-p ArcSDE user DBMS password

-r Rejects shapefile name for rejected shapes

-R Spatial reference ID (SRID)

-s ArcSDE server hostname (default: localhost)

-S Map layer description string

-u ArcSDE user DBMS username

-v Verbose option—reports records committed at the commit interval

-V ArcSDE version name

-x The x offset, y offset, and x,y scale values (default is 0.0, 0.0, 1.0)

-z The z offset and scale values separated by a comma (default is 0.0, 1.0)

-? Prints usage and options (use "-\?" in C shell)

Discussion

The shp2sde command can convert up to 15 digits of precision or the maximum precision imposed by the SE_DOUBLE data type.

The shp2sde command converts shapefiles into ArcSDE feature classes (layers). This example converts a shapefile called census_data in geographic coordinates to a feature class (layer) called blocks.

$ shp2sde -o create -l blocks,shape -f census_data -a all -x -200,-100,100000 -g 1,4,16 -G 4269
-e a -k block_attr -u av

This example converts the "world" shapefile into a feature class (layer) called "borders". The data is small scale, so the scale (in the "-x" option) is set to 10,000. The example also uses the "-r "option to write any rejected shapes to a new shapefile called rejects.

$ shp2sde -o create -l borders,feature -f world -g 20,0,0 -x -180,-90,10000 -e a -k WORLD -a all -r rejects -s stout -u world

tbl2sde

This command converts a table format to an ArcSDE table.

Usage syntax

tbl2sde -h

tbl2sde -o append -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

[-w <"where_clause">]

tbl2sde -o init -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

[-w <"where_clause">]

tbl2sde -o create -t <table> -f <file_name> -T {dBASE | INFO | SDE} [-I]

[-a {all | file=<file_name>}] [-c <commit_interval>]

[-k <config_keyword>] [-w <"where_clause">]

[-i <service>] [-s <server_name>] [-D <database>]

-u <DB_User_name> [-p <DB_User_password>] [-v]

Operations

append Adds records to an existing DBMS table (the default)

init Deletes all records of an existing DBMS table before importing new records

create Creates a new DBMS table and imports records into it—an error is returned if the table already exists

Options

-a Attribute modes:

all Loads all columns—the default. If the table exists, the incoming schema must be union compatible with the table if using the append or init
option.
file=<file_name>File containing lines of the form <fr_colName>[to_colName] [type] [size] [nDecs] [NOT_NULL] The fr_colName selects the column to load,
while the to_colName specifies the new column to load to. The allowed type, size, and nDecs (number of decimal places) values will vary
according to each DBMS.

-c Commit rate (default is the AUTOCOMMIT value from giomgr.defs)

-D Database or data source name—not supported by all DBMSs

-f Input table name—table type is defined by the -T option

-h Prints usage and options

-i ArcSDE service name

-I Disable buffered inserts (default: ON)

-k Configuration keyword from dbtune table (default: DEFAULTS)

-o Operation

-p ArcSDE user DBMS password

-s ArcSDE server hostname (default: localhost)

-t Output ArcSDE table name

-T Input table type, either dBASE, INFO, or SDE

-u ArcSDE user DBMS username

-v Verbose option—reports records committed at the commit interval

-w SQL where clause—only used if the input table type is SDE

-? Prints usage and options (use "-\?" in C shell)

Discussion

The tbl2sde command converts INFO and dBASE tables into ArcSDE tables. You can also use tbl2sde to selectively copy columns from an ArcSDE table into a new ArcSDE table. The example below converts a dBASE table called census_data into an ArcSDE table called block_attr.

$ tbl2sde -o create -t block_attr -f census_data -T dBASE -a all -k block_attr -u av -p mo

If the ArcSDE table already exists, you can add more records with the append operation. You can also remove the records from an existing table with the init operation before loading more records.

The following section lists the tbl2sde command error codes and associated descriptions.

TBL2SDE error              Code     Descriptions

TBL_Success                0        No error

TBL_UnableToOpen           1        File doesn't exist, it's the wrong type or insufficient access right

TBL_UnableToCreate         2        No write access to directory, bad path, disk full or quota exceeded

TBL_UnableToRename         3        No write access or bad name

TBL_AlreadyOpen            4        Attempting to open attribute table that is already been opened

TBL_NotOpenForWrite        5        Table opened for read-only

TBL_Not8Dot3               6        New file name violates 8.3 rules

TBL_OutOfChannels          7        DBFILE or VFILE channels exhausted

TBL_EndOfRecord            8        Hit end of record on read

TBL_EndOfFile              9        Hit end of file on read, more than one record past EOF on write

TBL_InsufficientMemory    10        Malloc() failure

TBL_OutOfSpace            11        Disk full or quota exceeded

TBL_TableNotOpen          12        Table not open

TBL_TableNotExist         13        Table does not exist

TBL_TableNotDeleted       14        Table not deleted

TBL_TableAlreadyExists    15        Table file new name already exists

TBL_TypeMismatch          16        Type mismatch

TBL_SchemaMismatch        17        Attributes schema doesn't match

TBL_SchemaExist           18        Attributes schema already exist

TBL_RowCountMismatch      19        Number of rows do not match

TBL_BadFileVersion        20        Bad file version

TBL_BadRecord             21        Deleted record found

TBL_BadHeader             22        DBASE file has bad header

TBL_BadColumnDef          23        Bad column definition.

TBL_BadColumnCount        24        Too many columns or < 1 column

TBL_BadColumnWidth        25        Too many columns or < 1 column

TBL_BadCount              26        Negative number of points or parts

TBL_ValueEncodeFailure    27        Problem encoding column value

TBL_ValueDecodeFailure    28        Column value could not be converted into a number or a date

TBL_ValueColumnNotSame    29        Value different type than column

TBL_ValueOverflow         30        Target column value may overflow

TBL_NoSuchColumn          31        Bad column number

TBL_NoAttributes          32        No attribute information

TBL_UnsupportedType       33        Unsupported type

TBL_InvalidPointer        34        Invalid pointer

TBL_InvalidParamValue     35        Invalid parameter value

TBL_InvalidHandle         36        Invalid handle

TBL_InvalidMetaData       37        Invalid metadata

TBL_InvalidColInfo        38        Invalid column info

TBL_InvalidColType        39        Invalid column type

TBL_InvalidTableType      40        Invalid table type

TBL_InvalidConvMap        41        Invalid conversion mapping structure

TBL_InvalidConnection     42        Invalid SDE connection handle

TBL_InvalidStream         43        Invalid SDE stream handle

TBL_InvalidConfigKeyword  44        Invalid SDE config keyword

TBL_InvalidRecord         45        Invalid record

TBL_InvalidAttrMode       46        Invalid Attribute mode

TBL_ConvListNotSupported  47        Conversion list not supported

TBL_FunctionNotSupported  48        Function not supported

TBL_SQLKeyword            49        SQL keyword

TBL_NoPermissions         50        No permissions

TBL_NameMismatch          51        Name mismatch

TBL_RecordReadError       52        Read record error

TBL_RecordDeleted         53        Record deleted

TBL_SetDefault            54        Use default setting

TBL_NotImplemented        55        Function/option not yet implemented

TBL_Failure               56        Operation failed

TBL_ExternalError         57        Some error has been returned to TableIO by another module

TBL_ExternalError_Stream  58        For trapping SDE stream error only

TBL_UnsupportedColType    59        Unsupported column type


ArcSDE Compressed Binary

ArcSDE uses a compressed binary format to store geometry in either an Oracle binary LONG RAW or BLOB data type. ArcSDE stores compressed binary spatial data in the POINTS columns of the feature table. Compressing the geometry offers efficient storage and retrieval of spatial data by reducing the size of the geometry. Compressed binary store in the LONG RAW data type is the default storage format for ArcSDE feature classes.

After the client verifies the geometry, it compresses it and sends it to the server, where it is stored in compressed binary format in a feature table. Compressing the geometry on the client offloads the task from the ArcSDE server and reduces the transmission time to send the geometry to the ArcSDE server. Storing compressed geometry data reduces the space required to store data as much as 40%.

Oracle reads blocks in order to read rows from a table. Compressing the data offers a better row/block ratio over non-compressed formats. Also, Oracle stores the first 4K of binary data in a LONG RAW column in-line, as part of the row in a RDBMS block. In-line LONG RAW data does not require a second hit to the disk to find the remaining portion of the data. By compressing the data, more rows within the 5K to 7K ranges have a better chance of being in-line, reducing read time in the RDBMS.

Compressed Binary Metadata Tables

A compressed binary feature class comprises three tables: the business table, the feature table and the spatial index table.

The business table contains attributes and a spatial column. The spatial column is a key to the feature and spatial index tables.

The relationship between the business table and the feature table is managed through the spatial column and the FID column. This key, which is maintained by ArcSDE, is unique.

NAME | DATA TYPE | NULL?
fid | NUMBER(38) | NOT NULL
numofpts | NUMBER(38) | NOT NULL
entity | NUMBER(38) | NOT NULL
eminx | NUMBER(64) | NOT NULL
eminy | NUMBER(64) | NOT NULL
emaxx | NUMBER(64) | NOT NULL
emaxy | NUMBER(64) | NOT NULL
eminz | NUMBER(64) | NULL
emaxz | NUMBER(64) | NULL
min_measure | NUMBER(64) | NULL
max_measure | NUMBER(64) | NULL
area | NUMBER(64) | NOT NULL
len | NUMBER(64) | NOT NULL
points | LONG RAW | NULL
anno_text | VARCHAR2(256) | NULL

Feature table schema.

The feature table stores the geometry, annotation and CAD in the LONG RAW POINTS column. The internal Oracle datatype is listed in the table above. The ArcSDE datatype for each column is defined below.

· fid (SE_INTEGER_TYPE)—contains the unique ID that joins the feature table to the business table

· entity (SE_INTEGER_TYPE)—the type of geometric feature stored in the shape column (e.g., point, linestring)

· numofpts (SE_INTEGER_TYPE)—the number of points defining the shape

· eminx, eminy, emaxx, emaxy (SE_FLOAT_TYPE)—the envelope of the shape

· eminz (SE_FLOAT_TYPE)—the minimum Z value in the shape

· emaxz (SE_FLOAT_TYPE)—the maximum Z value in the shape

· min_measure (SE_FLOAT_TYPE)—the minimum measure value in the shape

· max_measure (SE_FLOAT_TYPE)—the maximum measure value in the shape

· area (SE_FLOAT_TYPE)—the area of the shape

· len (SE_FLOAT_TYPE)—the length or perimeter of the shape

· points (SE_SHAPE_TYPE)—contains the byte stream of point coordinates that define the shape’s geometry

· anno_text (SE_STRING_TYPE)—contains the feature annotation string.

NAME | DATA TYPE | NULL?
sp_fid | NUMBER(38) | NOT NULL
gx | NUMBER(38) | NOT NULL
gy | NUMBER(38) | NOT NULL
eminx | NUMBER(64) | NOT NULL
eminy | NUMBER(64) | NOT NULL
emaxx | NUMBER(64) | NOT NULL
emaxy | NUMBER(64) | NOT NULL

Spatial index table schema.

The spatial index table defines grid range and extent of all geometry in an ArcSDE feature class.

• sp_fid (NUMBER)—contains the unique ID that joins the feature table to the business table

• gx/gy (NUMBER)—defines the feature’s extent in grid cells)

• eminx/eminy/emaxx/emaxy (NUMBER)—Extent of feature in system units

In this example the FEATURE-ID column from the WELLS business table references features from the feature and spatial index tables:

WELL_ID | DEPTH | ACTIVE | FEATURE-ID
1 | 30029 | Yes | 101
2 | 13939 | No | 102
3 | 92891 | No | 103
&ldots; | &ldots; |  | &ldots;

FID | AREA | LEN | EMINX,EMINY,&ldots; | POINTS
101 |  |  |  | <compressed feature>
102 |  |  |  | <compressed feature>
103 |  |  |  | <compressed feature>
&ldots; |  |  |  | &ldots;

SP_FID | GX | GY | {EMINX,EMINY,EMAXX,EMAXY}
101 | 70 | 100 |
102 | 70 | 100 |
103 | 71 | 100 |
&ldots; |  |  |

A business/feature/spatial index key reference.

The spatial index grid system

The spatial index grid system is a two-dimensional index that spans a feature class, like the reference grid you might find on a common road map. You may assign a feature class’ grid system one, two or three grid levels, each with its own distinct cell size. The first, or lowest, grid level has the smallest cell size. If the feature class needs only one index level, set the second and third level grid cell sizes to zero. Otherwise, set the cell size of each level at least three times larger than the prior level.

The spatial index table, (S<feature class_id>), has seven integer columns that store the grid cell values, feature envelopes and corresponding feature IDs. Adding a feature to a feature class, adds one or more grid cells to the spatial index table. The number of records added to the spatial index table depends on the number of grid cells the feature spans.

The spatial index table contains two indexes. One index is on the SP_FID column which contains the feature ID. The other is a composite index that includes all of the columns of the spatial index table. Since all of the columns of the spatial index table are indexed, the values of the table are read from the leaf blocks of the index and not the table data blocks. The result is less I/O and better performance.

Building the spatial index

Every time a feature class is added to a business table, a persistent spatial index is built for it.

The ArcSDE server manages the spatial index throughout the life of the feature class. As features are inserted, updated, or deleted, the spatial index is automatically updated.

A load-only mode is available to disable spatial index management until after loading is complete. This boosts loading performance substantially and is imperative for bulk loading efforts (no queries are allowed in the load-only mode, except native SQL-based queries).

Once loading has been completed, the spatial index is enabled by returning it to normal I/O mode. The conversion from normal I/O mode to load-only I/O mode reconstructs the spatial index.

Inserting, updating or deleting a feature updates the spatial index when the feature class is in normal I/O mode.

ArcSDE overlays the extent of each feature onto the lowest grid level to obtain the number of grid cells. If the feature exceeds four cells, ArcSDE promotes the feature to the next highest grid level, if one exists. ArcSDE will continue to promote the feature until it fits within four cells or less or until the highest defined grid level is reached. On the highest defined grid level, geometries can be indexed by more than four grid cells.

ArcSDE adds the feature’s grid cells to the spatial index table with their corresponding shape ID and feature envelope. The grid level is encoded with each grid cell.

In the example below, the feature class has two grid levels. Area shape 101 is located in grid cell 4 on level 1. A record is added to the spatial index table because the feature resides within four grid cells (in this case it is one). Area feature 102’s envelope is located in cells 1 through 8 on level 1. Because the feature’s envelope resides in more than four grid cells, the feature is promoted to level 2 where it’s envelope fits within two grid cells. Feature 102 is indexed at level 2, and two records are added to the spatial index table.

Figure 4.4 Shape 101 is indexed on grid level 1, while shape 102 is indexed on grid level 2 where it is in only two grid cells.

Spatial queries and the spatial index

Spatial queries, like finding all the lakes within a state boundary, uses the spatial index. Spatial index is used unless the search order has been set to SE_ATTRIBUTE_FIRST in the SE_stream_set_spatial_constraints function. When the search order is set to SE_ATTRIBUTE_FIRST, ArcSDE ignores the spatial index and the criteria of the attribute where clause determines which records of the feature class the query returns.

Whenever the spatial index is used, the ArcSDE service generally uses the following decision process when performing the query:

1. Define the envelope. The envelope could be defined directly by the application such as the extent defined by the ArcMap zoom in tool. Alternatively the envelope may be defined as the envelope of another feature.

2. Join the spatial index table with the feature table and return all features whose grid cells intersect the envelope.

3. Join the feature table with the business table and apply the criteria of the attribute where clause to further refining features returned.

Grid cell size impacts the size of the spatial index table. Setting up the spatial index means balancing the cell sizes—smaller cell sizes mean more cells per shape, which requires more entries in the spatial index table.

Guidelines for tuning the spatial index

Because client applications and spatial data profiles vary from one system to another, no single solution fits all. Experienced users of ArcSDE often experiment with the spatial index, trying different cell sizes and different grid level configurations.

The sdelayer command has several operations that can help you optimize the spatial index by changing the grid cell sizes and adding new grid levels with the ‘alter’ operation. The ‘stats’ and ‘si_stats’ operations, profile your spatial data and current spatial index.

The following guidelines can help improve the performance of spatial queries.

§ Consider how many grid levels are needed, and remember the ArcSDE server scans the spatial index table once per grid level. Sometimes a single grid level is the best solution for a feature class, despite the notion of distributing geometries evenly across many grid levels to minimize the spatial index entries.

§ Use one grid level for pure point type feature class, and consider making the cell sizes large. Spatial queries generally process point geometries faster than other shape types.

§ Monitor the spatial index. Tuning a spatial index is difficult if the data changes frequently. Tuning depends upon the structure of the spatial data. Periodically assess the spatial index as your spatial data changes.

§ Base the spatial index on the application. Match the spatial index grid cell sizes to the extent of the application window. By doing so, the application is probably viewing exact entries in the spatial index table. This helps to size the spatial index table suitably and reduces the amount of processing because fewer candidate feature IDs must be evaluated against the feature table (see ‘Spatial queries and the spatial index’ above).

§ Design the feature class around spatial data categories like type, shape size, and distribution. Sometimes a carefully designed feature class, using these categories, can substantially boost the performance of spatial queries.

Displaying spatial index statistics

The sdelayer command’s spatial index statistics operation, ‘si_stats’, can help you determine optimum spatial index grid sizes. Optimum grid cell sizes depend on the spatial size of all features, the variation in spatial feature size, and the types of searches to be performed on the map feature class. Below is a sample output generated by si_stats:

$ sdelayer -o si_stats -l victoria,parcels -u av -p mo -i esri_40

SDE Feature class Administration Utility Tue Oct 8 17:48:22 1996
--------------------------------------------------------
Feature class 1 Spatial Index Statistics:
Level 1, Grid Size 200 (Meters)
|-------------------------------------------------------|
| Grid Records: 978341 |
| Shape Records: 627392 |
| Grids/Shape Ratio: 1.56 |
| Avg. Shapes per Grid: 18.26 |
| Max. Shapes per Grid: 166 |
| % of Shapes Wholly Inside 1 Grid: 59.71 |
|-------------------------------------------------------|
| Spatial Index Record Count By Group |
| Grids: <=4 >4 >10 >25 >50 >100 >250 >500 |
|---------- ------ --- ---- ---- ---- ----- ----- ----- |
| Shapes: 627392 0 0 0 0 0 0 0 |
| % Total: 100% 0% 0% 0% 0% 0% 0% 0%|
|-------------------------------------------------------|

Level 2, Grid Size 1600 (Meters)
|-------------------------------------------------------|
| Grid Records: 70532 |
| Shape Records: 36434 |
| Grids/Shape Ratio: 1.94 |
| Avg. Shapes per Grid: 18.21 |
| Max. Shapes per Grid: 82 |
| % of Shapes Wholly Inside 1 Grid: 45.35 |
|-------------------------------------------------------|
| Spatial Index Record Count By Group |
| Grids: <=4 >4 >10 >25 >50 >100 >250 >500 |
|---------- ------ --- ---- ---- ---- ----- ----- ----- |
| shapes: 35682 752 87 17 3 0 0 0 |
| % Total: 97% 2% 0% 0% 0% 0% 0% 0%|
|-------------------------------------------------------|

As the output shows, for each defined spatial index level in the map feature class definition, the following values and statistics are printed:

• Grid level and cell size.

• Total spatial index records for the current grid level.

• Total geometries stored for the current grid level.

• Ratio of spatial index records per shape.

• Shape counts and percentages by group that indicate how geometries are grouped within the spatial index at this grid level. The column headings have the following meaning (where ‘N’ is the number of grid cells):

<=N Number of geometries and percentage of total geometries that fall within <= N grid cells
>N Number of geometries and percentage of total geometries that fall within > N grid cells

Notice that the ‘>’ groupings include count values from the next group. For instance, the ‘>4’ group count represents the number of geometries that require more than four grid records as well as more than ten, and so on.

• Average number of geometries per grid.

• Maximum number of geometries per grid. This is the maximum number of geometries indexed into a single grid.

• Percentage of geometries wholly inside one grid. This is the percentage of all geometries wholly contained by one grid record.

The output sample shows spatial index statistics for a map feature class that uses two grid levels: one that specifies a grid size of 200 meters, the other a grid size of 1600 meters. When a geometry requires more than four spatial index records, it is automatically promoted to the next grid level, if one is defined. That is, in no case will a shape generate more than four grid records, if more than one grid level exists. If a higher grid level doesn’t exist, then a geometry can have more than four grid records.

In the example above, 627392 features are indexed through grid level 1. Because the system automatically promotes geometries that need more than four spatial index records to the next defined grid level, all 627392 geometries for grid level 1 are indexed with four grid records or less. Grid level 2 is the last defined grid level, so geometries indexed at this level are allowed to be indexed with more than four grid records. At grid level 2, there are a total of 36434 geometries and 70532 spatial index records. 35682 geometries are indexed with four grid records or fewer, 752 geometries indexed with more than four grid records, 87 geometries indexed with more than 10, 17 geometries with more than 25, and three geometries with more than 50 grid records. Percentage values below each column show how the geometries are dispersed through the eight groups.

Creating tables with Compressed Binary Schema

The default geometry storage for ArcSDE feature classes is ArcSDE compressed binary. If this is the way you want to store your geometry all the time, then there are no adjustments you need to make.

If you wish to have a mix of geometry types in your schema, populate the DBTUNE table with keywords that have a specific geometry storage types and assign the keywords to the application programs creating the feature class.

The GEOMETRY_STORAGE parameter in the DBTUNE table defines the storage method to be used when loading data using ArcSDE. The GEOMETRY_STORAGE value for the default LONG RAW compressed binary is SDEBINARY. In the following example, we define the PARCELS keyword in a dbtune file to contain a geometry storage definition of SDEBINARY.

##PARCELS

GEOMETRY_STORAGE SDEBINARY

<other parameters>

END

You can add additional parameters for more control on how your data is stored.

##PARCELS

GEOMETRY_STORAGE "SDEBINARY"

F_STORAGE "TABLESPACE ftabsp STORAGE (FREELISTS 4 INITIAL 500M

NEXT 100M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0)

F_INDEX_1 "TABLESPACE findex_tsp STORAGE (FREELISTS 4 INITAIL 100M

NEXT 25M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0)

S_STORAGE "TABLESPACE stabsp STORAGE (FREELISTS 4 INITIAL 300M

NEXT 50M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0)

S_INDEX_1 "TABLESPACE sindex_tsp STORAGE (FREELISTS 4 INITIAL 100M
NEXT 50M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0)

S_INDEX_2 "TABLESPACE sindex_tsp STORAGE (FREELISTS 4 INITIAL 100M
NEXT 50M MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 0)

END

In this example, the storage schema is compressed binary, it defines the storage and location for the feature and spatial index tables. These and several other configuration parameters are specified in the dbtune file and defined in Appendix B of this document.

Referential integrity

Maintaining the referential integrity between the business and feature table is important. You should not edit the records of either the feature table or the spatial index table. Several indexes and constraints have been added to the business, feature and spatial index table to insure that the referential integrity is maintained. However, these indexes and constraints are removed when the feature class is converted to the load only I/O mode, a state that allows data to be quickly inserted into the feature class.

When the feature class is placed back into normal I/O mode, the state that allows users to query the feature class through an ArcSDE client, the indexes are created and the constraints are enabled. The conversion to normal I/O mode will fail if the unique indexes cannot be built on the business table’s spatial column, or the feature table’s FID column. It will also fail if a value exists in the business table’s spatial column that is not in the feature table’s FID column. In this case a reference to the offending business table record is loaded into the SDE_EXCEPTIONS table.


Normalized Geometry Schema

The Normalized Geometry Schema uses well-known SQL numeric types to store the coordinates of a geometry as a collection of rows in a table. The ArcSDE implementation of the Normalized Geometry Schema is based on the OpenGIS Simple Features Specification for SQL, revision 1.1.

ArcSDE utilizes Oracle Spatial indexing and primary search functions to implement the Normalized Geometry Schema. The Oracle product is known as the Spatial Data Option in Oracle 7, the Spatial Cartridge in Oracle 8, and Oracle Spatial (Normalized Schema) in Oracle 8.1.

In the normalized geometry schema, the coordinate values for a shape are stored as individual database management system (DBMS) numeric data types in a separate Geometry Table. Access from a business table to a shape is through a foreign key—the Geometry ID, or GID.

The Geometry Table has at least six columns: GID, ETYPE, ESEQ, SEQ, and two coordinate values. The geometry type (point, line string, or polygon) is stored as an ETYPE value. The ETYPE is either 1 (point), 2 (line string), or 3 (polygon). A normalized representation may not be able to store all of a geometry’s coordinates in a single row in the geometry table. To accommodate geometries with a large number of values, the geometry is represented by multiple rows. The element sequence value, ESEQ, identifies multiple parts within a geometry. Rows that represent a single part are listed by a sequence (SEQ) value so that rows are returned in the proper order.

The tables below illustrate the relationship between a business table and its Geometry Table in the normalized geometry representation. Any number of coordinate pairs are allowed for a given table. In this example, two coordinate pairs are stored for each row in the Geometry Table.

Feature-ID | Column 1 | Column 2 | Geometry ID
101 |  |  | 1
102 |  |  | 2
103 |  |  | 3
... |  |  | ...

A business table with GIDs.

GID | ETYPE | ESEQ | SEQ | X1 | Y1 | X2 | Y2
1 | 3 | 1 | 1 | 10.00 | 10.00 | 10.00 | 15.00
1 | 3 | 1 | 2 | 10.00 | 15.00 | 15.00 | 15.00
1 | 3 | 1 | 3 | 15.00 | 15.00 | 15.00 | 10.00
1 | 3 | 1 | 4 | 15.00 | 10.00 | 10.00 | 10.00
2 | 3 | 1 | 1 | 100.00 | 100.00 | 100.00 | 150.00
2 | 3 | 1 | 2 | 100.00 | 150.00 | 150.00 | 150.00
2 | 3 | 1 | 3 | 150.00 | 150.00 | 150.00 | 100.00
2 | 3 | 1 | 4 | 150.00 | 100.00 | 100.00 | 100.00
2 | 3 | 2 | 1 | 70.00 | 90.00 | 75.00 | 90.00

A Geometry Table with two shapes. The second shape has more than one part.

GID | Index Key
1 | 22
2 | 23
3 | 22

A spatial index table.

If a part is represented by multiple rows, the last coordinate pair are the first coordinate values in the next row. A polygon must close—the first and last coordinates must be the same. Any coordinate pairs that aren’t used are set to null. Null shapes are stored in the geometry table as a point with no coordinate values.

Normalized Layer Metadata tables

There are four DBMS tables to store and index spatial data when a business table is spatially enabled . Collectively, these tables compose a normalized geometyr schema layer.

layer tables

Table Name Description

<business_table_name>_SDOLAYER Contains the application meta data for the layer in a single row.

<business_table_name>_SDODIM Defines the dimension and tolerance of each coordinate value.

<business_table_name>_SDOGEOM Contains the geometric data for the object.

<business_table_name>_SDOINDEX Stores index information about the geometric features in the layer.

· SDO_ORDCNT: The total number of values per row. This is the total number of values, not the total number of coordinate pairs.

· SDO_LEVEL: The number of tessellation levels created during indexing.

· VERIFY_GEOMETRY: TRUE/FALSE. If TRUE, features are verified by the SDE software.

<business_table_name>_SDODIM:

· SDO_DIMNUM: The dimension number of the row. Dimensions start at one (1) and increase.

· SDO_LB: The lower bound of the dimension.

· SDO_UB: The upper bound of the dimension.

· SDO_TOLERANCE: The distance that two points can be separated and still considered at the same location due to rounding errors. The value must be greater than 0. Generally, you will use a small value like 0.000005, where the number of zeroes to the right of the decimal point matches your data’s precision.

· SDO_DIMNAME: The common name applied to the dimension, such as longitude, latitude, easting, or northing.

<business_table_name>_SDOGEOM:

· SDO_GID: The unique identifier for the geometric feature. Each feature in the layer must have a unique ID.

· SDO_ETYPE: The valid Spatial Data Option values for geometry type are point, line string, or polygon (ETYPE values 1, 2, or 3). These correspond to the SDE entity types: ‘p’ point, ‘l’ simple line, ‘s’ line (spaghetti), and ‘a’ area (polygon).

· SDO_ESEQ: A geometry is composed of one or more primitive types called elements or parts. This column enumerates each element in the geometry.

· SDO_SEQ: An internal sequence number for element rows.

· SDO_X1: The X value of the first coordinate.

· SDO_Y1: The Y value of the first coordinate.

· SDO_Xn: The X value of the Nth coordinate.

· SDO_Yn: The Y value of the Nth coordinate.

<business_table_name>_SDOINDEX:

· SDO_GID: The unique geographic identifier for each feature in the layer.

· SDO_CODE: The index tile value for the extent of the feature.

Spatial Index

The Normalized Geometry Schema uses the Oracle Spatial linear quadtree to index spatial data. Using the bounding values from <business_table_name>_SDODIM and the number of levels specified in <business_table_name>_SDOLAYER, the normalized layer is recursively tessellated. The two-dimensional layer is divided into four equal areas, or quadrants, labeled 0, 1, 2, or 3, to create the first tessellation level. To create the next level, each of the four areas is again split into four pieces. Refer to the Oracle Spatial documentation for more information on optimizing the spatial index.

A recursively tessellated normalized layer with three levels.

The figure above has three levels. A tile is identified by concatenating the appropriate digit for each layer. The feature represented by the circle would have an ID of 0 at level one, 00 at level two, and 001 at level three. By adding more levels, you can subdivide your data as finely as you like. The length of the tile ID is a direct reflection of its surface area. The smaller the tile ID, the larger the area it represents.

Using the Normalized Geometry Schema

The GEOMETRY_STORAGE parameter in the DBTUNE table defines the geometry storage method to be use. By setting the GEOMETRY_STORAGE property in the DEFAULTS keyword to NORMALIZED, you can make the Normalized Geometry Schema your default storage method .

## DEFAULTS
GEOMETRY_STORAGE NORMALIZED
<other parameters>
END

You can choose not to make the Normalized Geometry Schema your default geometry storage method, but still define a Normalized layer. To create a layer using the Normalized Geometry Schema, you can use the NORMALIZED dbtune keyword which is defined as:

## NORMALIZED
GEOMETRY_STORAGE NORMALIZED
END

Or, you can create a specific keyword that specifies the GEOMETRY_STORAGE parameter as NORMALIZED. In this example, a configuration named WELLS_NORMALIZED is defined with explicit storage, extent and indexing parameters.

##WELLS_NORMALIZED

GEOMETRY_STORAGE NORAMLIZED

SDO_ORDCNT 2 # Ordinate count

SDO_LEVEL 8 # Layer Tessellation

SDO_VERIFY TRUE # SDE will verify the geometry

SDO_LB_1 -180.0 # SDODIM Lower X

SDO_UB_1 180.0 # SDODIM Upper X

SDO_TOLERANCE_1 0.00005 # SDODIM Tolerance

SDO_LB_2 -90.0 # SDODIM Lower Y

SDO_UB_2 90 # SDODIM Upper Y

SDO_TOLERANCE_2 0.00005 # SDODIM Tolerance

END

As shown in the example above, the Normalized Geometry Storage Method allows you to define the dimension values, index levels, ordinate counts, etc for the Normalized feature class. These parameters are defined in the Oracle Configuration and Tuning Guide.


Oracle Spatial Geometry Type

ArcSDE for Oracle supports Oracle’s Object Relational Model, the Oracle Spatial Geometry Type, as a method to store spatial data. Oracle’s Spatial Geometry Type was introduced in Oracle8i (8.1.5) as an alternative to Oracle’s Spatial normalized schema. The Oracle Spatial Geometry Type uses object-relational types and methods to define, index and perform spatial analysis on spatial data. ArcSDE only supports Oracle Spatial 8.1.6 and higher. For additional information on Oracle Spatial please see Oracle Spatial Users Guide and Reference for the appropriate release.

The Oracle Spatial Geometry Type consists of a set of object data types, an index method type, and operators on these types. These types and methods are only available in Oracle 8i Enterprise Edition.

The Oracle Spatial Geometry Type uses an object type (MDSYS.SDO_GEOMETRY) to store and index spatial data. Spatial data is stored as an object, in a single row, in a column of type MDSYS.SDO_GEOMETRY. The MDSYS.SDO_GEOMETRY type consists of relational and object-relational base types that define single or multipart features. The MDSYS.SDO_GEOMETRY type is available as part of the Oracle’s Spatial Cartridge installation. The type is defined as:

CREATE TYPE SDO_GEOMETRY AS OBJECT (

SDO_GTYPE NUMBER,

SDO_SRID NUMBER,

SDO_POINT SDO_POINT_TYPE,

SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,

SDO_ORDINATES MDSYS.SDO_ORDINATES_ARRAY)

ArcSDE feature classes defined exclusively as single point layers will store point features in the SDO_POINT type. Storing single point features in the SDO_POINT type improves performance when indexing and searching on single point features. All other single and multipart features along with multipart points are stored in the SDO_ORDINATES type.

Please see Chapter 2, “The Object – Relations Schema” in Oracle Spatial Users Guide and Reference for further details.

Oracle Spatial Geometry Type Metadata Table

The Oracle Spatial Type uses it’s own geometry metadata schema to define spatial index properties for data stored in a MDSYS.SDO_GEOMETRY column. Building the spatial index for a MDSYS.SDO_GEOMETRY column requires an entry of the table name, column name and dimension (2d, 3d, measures) information. The SRID column should be set to NULL, ArcSDE does not support Oracle Spatial spatial references. Oracle provides three views that store Oracle Spatial metadata, USER_SDO_GEOM_METADATA, ALL_SDO_GEOM_METADATA and DBA_SDO_GEOM_METADATA. The USER_SDO_GEOM_METADATA view description is:

NAME | NULL? | TYPE
TABLE_NAME |  | VARCHAR2(32)
COLUMN_NAME |  | VARCHAR2(32)
DIMINFO |  | MDSYS.SDO_DIM_ARRAY
SRID |  | NUMBER

These views are based on a global table owned by the MDSYS user. The Oracle Spatial user is only responsible for inserting rows into the USER_SDO_GEOM_METADATA table; Oracle Spatial takes care of updating all the other views.

Note: 3rd Party Oracle Spatial tables created by non-ArcSDE clients and registered to ArcSDE must insert the appropriate entry for their table in the USER_SDO_GEOM_METADATA view and index the table before registering the table to ArcSDE.

ArcSDE inserts a row into the USER_SDO_GEOM_METADATA view when a layer using the Oracle Spatial Type is created using ArcSDE’s data loaders (such as shp2sde, sdeimport, etc.) to load your data. There are two methods to define the parameters used in the USER_SDO_GEOM_METADATA view: user-defined or calculated at insert.

Using ArcSDE data loaders, layers created with a configuration keyword and DBTUNE table information use keyword parameters to insert a row into the USER_SDO_GEOM_METADATA view. See Appendix B in this document for a description of these parameters and the Oracle Spatial Users Guide and Reference (Ch. 2 Section 2.4) for DIMINFO parameter descriptions. In the absence of any required USER_SDO_GEOM_METADATA parameter, ArcSDE calculates the extent; coordinate reference and number of dimensions once all features have been inserted into the MDSYS.SDO_GEOMETRY column.

Oracle Spatial Geometry Type Index

The spatial index is created using the CREATE INDEX command using an indextype option to specify it as a spatial index. Creating an Oracle Spatial Geometry Type index creates a spatial index data table that defines the tessellation properties for indexing geometry. See Chapter 2, The Object-Relational Schema in the Oracle Spatial Users Guide and Reference for more information on the spatial index data table.

Fixed, Hybrid and RTREE Indexing

The Oracle Spatial Geometry Type supports three indexing modes (fixed, hybrid and rtree) to spatially index data. Fixed indexing uses the same linear quadtree index used in the Normalized Storage Schema. See Chapter 3 Oracle Spatial Normalized Schema (Spatial Index) for a description on fixed indexing. Hybrid indexing uses both the fixed sized tiling and a variable sized tiling to index geometry. For information on the Oracle Spatial RTREE implementation please see the Oracle Spatial white paper available on the Oracle Spatial Web site.

Note: Oracle recommends using the FIXED index for indexing geometry.

Choosing the best tiling level for fixed indexing or the best number of tiles per geometry for hybrid indexing can impact performance. Oracle recommends using the SDO ADVISOR application that comes with Oracle Enterprise Manager to calculate the best performing FIXED index tiling setting for your data. See Appendix A in the Oracle Spatial Users Guide and Reference for more information on tuning Oracle Spatial Geometry Type data.

Oracle Spatial Geometry Type Search Method in ArcSDE

Oracle Spatial provides two spatial filter operations to perform spatial search and analysis. ArcSDE uses the primary filter sdo_filter to perform primary filter spatial searches. sdo_filter uses geometry approximations of its index tiling to quickly estimate the location of data. ArcSDE then uses it’s own secondary filter on the results of Oracle Spatial’s sdo_filter to then select the exact geometries your spatial search defines. For more information about the primary filter and other spatial filtering operations, see Chapter 4 Querying Spatial Data in the Oracle Spatial Users Guide and Reference. For more information on ArcSDE’s spatial index filter methods please refer to Chapter 2 of the ArcSDE for Oracle Configuration and Tuning Guide.

Supported Oracle Spatial Geometry Type Schemas

ArcSDE supports the Oracle Spatial Geometry Type two ways: ArcSDE generated feature classes and 3rd party generated tables created by non-ArcSDE client’s containing an SDO_GEOMETRY column.

ArcSDE generated Oracle Spatial Geometry Type Layers

Feature classes created by ArcSDE generate the MDSYS.SDO_GEOMETRY type as a column of the business table schema. When using ArcSDE data loaders such as shp2sde, layers stored using Oracle Spatial Geometry Type do not have a feature table. No spatial index table is created since the spatial index for Oracle Spatial Geometry Type is maintained internally by Oracle.

The following example shows a point layer, cities, loaded using shp2sde.

NAME | DATA TYPE | NULL?
name | VARCHAR2(32) |
country | VARCHAR2(25) |
population | NUMBER(11) |
capital | VARCHAR2(1) |
feature | MDSYS.SDO_GEOMETRY |
objectid | NUMBER(38) | NOT NULL

Business table schema.

The business table contains all attribute columns as well as the MDSYS.SDO_GEOMETRY column. ArcSDE data loaders also add a unique column, OBJECTID to be used in logfile searches.

Non-ArcSDE Client Generated Oracle Spatial Geometry Type Tables

Oracle Spatial Geometry Type allows users to create spatial data as part of any attribute table schema. These tables are ones created by any non-ArcSDE client application. ArcSDE supports this definition of an Oracle Spatial Geometry Type table as an Oracle Spatial Geometry Type layer. These 3rd party tables are registered to ArcSDE using the sdelayer –o register option. The –o register option populates ArcSDE’s system tables so that the 3rd party table appears as a layer (feature class) to ArcSDE client applications.

In this example the GEOMETRY column is a column of the WELLS table:

WELL_ID | DEPTH | ACTIVE | GEOMETRY
1 | 30029 | Yes | <sdo_geometry value
2 | 13939 | No | <sdo_geometry value
3 | 92891 | No | <sdo_geometry value
&ldots; | &ldots; | &ldots; | &ldots;

An attribute table with a SDO_GEOMETRY type.

Registering Non-ArcSDE Client Generated Oracle Spatial Geometry Tables

Non-ArcSDE Client Generated Oracle Spatial tables are registered to the ArcSDE metadata tables using the sdelayer administration command. Registering a 3rd party table allows ArcSDE to display, query, version and edit 3rd party tables containing a single SDO_GEOMETRY column.

ArcSDE uses a unique identifier to perform logfile searches. User defined types (SDO_GEOMETRY) in Oracle do not expose unique identifiers. Registering 3rd party tables requires the user to specify a unique column in the table. If the column exists as a unique or primary key column, only the name of the column is registered to the ArcSDE metadata tables. If no unique key column exists or if the user wants to request ArcSDE to create it, the column is added to the external table, populated with a ROWNUM value and indexed.

In this example, the 3rd party table WELLS is registered to ArcSDE using spatial column GEOMETRY, a entity type of POINT, a non-existing column OBJECTID and a configuration keyword SDO_GEOMETRY.

sdelayer –o register –l wells,geometry –e p –c OBJECTID –k SDO_GEOMETRY –u ken –p demo

Note: Oracle allows you to create tables with any number of SDO_GEOMETRY columns. ArcSDE allows one spatial column per table. Tables with two or more SDO_GEOMETRY columns are not supported.

Specifying the Oracle Spatial Geometry Type Schema

The GEOMETRY_STORAGE parameter in the dbtune.sde file defines the storage method to be used when loading data using ArcSDE. The GEOMETRY_STORAGE setting for the Oracle Spatial Geometry Type is SDO_GEOMETRY. By setting the GEOMETRY_STORAGE in the dbtune DEFAULTS keyword to SDO_GEOMETRY, any layer created without a configuration keyword will use the Oracle Spatial Geometry Type schema without requiring input of a keyword. It becomes the default way to store your spatial data.

##DEFAULTS

GEOMETRY_STORAGE SDO_GEOMETRY

<other parameters>

END

After the above dbtune file has been imported into the DBTUNE table the DEFAULTS keyword setting will create any ArcSDE feature class not using a configuration keyword, as an Oracle Spatial Geometry Type layer. It is also possible to create individual feature classes with the Oracle Spatial Geometry Type without using the DEFAULT setting.

##SDO_GEOMETRY

GEOMETRY_STORAGE SDO_GEOMETRY

<other parameters>

END

Or, you can create a specific configuration keyword that specifies the GEOMETRY_STORAGE parameter as SDO_GEOMETRY. The following example uses the configuration keyword WELLS_SDO_GEOMETRY with explicit indexing and storage parameter settings.

##WELLS_SDO_GEOMETRY

GEOMETRY_STORAGE SDO_GEOMETRY

SDO_LEVEL 6

SDO_NUMTILES 0

SDO_TABLESPACE WELLS_TABLESP

SDO_COMMIT_INTERVAL 1000

END

In this example, the storage schema is Oracle Spatial Geometry Type, it uses a fixed index since SDO_LEVEL is set to 6 and SDO_NUMTILES is set to 0, the tablespace is WELLS_TABSP and the commit interval when creating the spatial index is 1000. These and several other Oracle Spatial Geometry Type parameters are specified in the DBTUNE table and defined in Appendix B of this document.

Working With Non-ArcSDE Generated Oracle Spatial Geometry Type Layers

There are a number of issues related to Non-ArcSDE Generate Oracle Spatial Geometry Type layers that are discussed in the following section. It is important for users who are implementing ArcSDE and Oracle Spatial Geometry Type storage in an Enterprise solution to read this section very carefully before designing your ArcSDE and Oracle Spatial Databases.

Supported/Unsupported Oracle Spatial Geometries

ArcSDE supports OGIS compliant simple feature types provided by Oracle Spatial. This includes SIMPLE POINTS, SIMPLE LINES and SIMPLE POLYGONS. In Oracle Spatial terms, ArcSDE support extends to the following Oracle Spatial GTYPE’s:

x001 = POINT

x002 = LINESTRING

x003 = POLYGON

x005 = MULTIPOINT

x006 = MULTILINESTRING

x007 = MULTIPOLYGON.

Please see Oracle Spatial Users Guide and Reference (Ch. 2, Section 2.2.1 SDO_GTYPE) for details on Oracle Spatial GTYPE.

ArcSDE DOES NOT support Oracle Spatial COLLECTIONS (GTYPE = x004) nor does it support Oracle Spatial OPTOMIZED RECTANGLES, CIRCLES or ARCS (CURVES).

User’s who register Oracle Spatial tables with these unsupported features will have difficulties attempting to use the registered layer in any of ArcSDE’s client applications. In some cases the layer will not draw at all. Other times only parts of the layer will draw. Other errors and or strange behavior may occur as well. Oracle Spatial linestring Arc/Curves may draw but will NOT be represented or treated as Arcs/Curves.

The Oracle Spatial Users Guide and Reference provides excellent examples of all supported and unsupported feature types.

Un-Registering a Layer

User’s may find it necessary to un-register their registered non-ArcSDE Oracle Spatial geometry type layers for any number of reasons. Since these layers now can participate in Versioning and Editing users must make sure they follow the proper procedure of un-registering those layers they have versioned.

The basic steps that must be taken before un-registering a non-ArcSDE Oracle Spatial Geometry Type layer that has participated in versions are as follows:

Compress

Reconcile to base (DEFAULT)

Un-register as versioned

Un-register from ArcSDE

More details can be found in the Versioning Chapter of Building a Geodatabase.

WARNING: The sdelayer –o delete command has been used in this and previous versions of ArcSDE to allow users to un-register these registered layers. The sdelayer –o delete command was altered so as to not set the geometries in the layer to NULL as it does with other storage types. In a future release this will no longer be the case.


sqlapi

SQL API References

The references below are specific to Informix Spatial DataBlade 8.10. However, IBM DB2 references are very similar but do not have the prefix SE_. Functions prefixed with SE_ are not OGC compliant. Instead, they are additional functions provided to enhance usability.
   ST_Area

   ST_AsBinary

   SE_AsShape

   ST_AsText

   ST_Boundary

   ST_Buffer

   ST_Centroid

   ST_Contains

   ST_ConvexHull

   ST_CoordDim

   ST_Crosses

   ST_Difference

   ST_Dimension

   ST_Disjoint

   ST_Distance

   ST_EndPoint

   ST_Envelope

   ST_EnvelopesIntersect

   ST_Equals

   ST_ExteriorRing

   SE_GeomFromShape

   ST_GeomFromText

   ST_GeomFromWKB

   ST_GeometryN

   ST_GeometryType

   ST_InteriorRingN

   ST_Intersection

   ST_Intersects

   SE_Is3D

   ST_IsClosed

   ST_IsEmpty

   SE_IsMeasured

   ST_IsRing

   ST_IsSimple

   ST_Length

   SE_LineFromShape

   ST_LineFromText

   ST_LineFromWKB

   SE_LocateAlong

   SE_LocateBetween

   SE_M

   SE_MlineFromShape

   ST_MlineFromText

   ST_MlineFromWKB

   SE_MpointFromShape

   ST_MpointFromText

   ST_MpointFromWKB

   SE_MpolyFromShape

   ST_MpolyFromText

   ST_MpolyFromWKB

   ST_NumGeometries

   ST_NumInteriorRing

   ST_NumPoints

   ST_OrderingEquals

   ST_Overlaps

   ST_Perimeter

   ST_Point

   SE_PointFromShape

   ST_PointFromText

   ST_PointFromWKB

   ST_PointN

   ST_PointOnSurface

   SE_PolyFromShape

   ST_PolyFromText

   ST_PolyFromWKB

   ST_Polygon

   ST_Relate

   SE_ShapeToSQL

   ST_SRID

   ST_StartPoint

   ST_SymDifference

   ST_Touches

   ST_Transform

   ST_Union

   ST_Within

   ST_WKBToSQL

   ST_WKTToSQL

   ST_X

   ST_Y

   SE_Z

ST_Area

Returns the area of a polygon or multipolygon.

Syntax

ST_Area (pl1 ST_Polygon)
ST_Area (mpl1 ST_MultiPolygon)

Return type

Double precision

Example

The city engineer needs a list of building areas. To create the list, a GIS technician selects the building ID and area of each building's footprint.

The building footprints are stored in the buildingfootprints table created with the following CREATE TABLE statement.

create table buildingfootprints (
       building_id integer,
       lot_id integer,
       footprint ST_MultiPolygon);

To satisfy the city engineer's request the technician selects the unique key, the building_id, and the area of each building footprint from the buildingfootprints table.

select building_id, ST_Area(footprint) "Area"
from buildingfootprints;

building_id Area
----------- ----------------------

506 +1.40768000000000E+003

1208 +2.08679000000000E+003

178 +1.80786000000000E+003

543 +2.15751000000000E+003

.

.

.

Four of the building footprints labeled with their building ID numbers are displayed alongside their adjacent street.

ST_AsBinary

ST_AsBinary takes a geometry object and returns its well-known binary representation.

Syntax

ST_AsBinary (g1 ST_Geometry)

Return type

ST_Geometry

Example

The code fragment below converts the footprint multipolygons of the buildingfootprints table into WKB multipolygons with the ST_AsBinary function. The multipolygons are passed to the application's draw_polygon function for display.

/* Create the SQL expression.*/
strcpy(sqlstmt,"select ST_AsBinary (footprint) from buildingfootprints where SE_EnvelopesIntersect(footprint,ST_PolyFromWKB(?,1))");

/* Prepare the SQL statement. */
SQLPrepare(hstmt,(UCHAR*) sqlstmt, SQL_NTS);

/* Bind the query geometry parameter. */
pcbvalue1 = query_wkb_len;

SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_INFX_UDT_LVARCHAR, query_wkb_len, 0, query_wkb_buf, query_wkb_len, &pcbvalue1);

/* Execute the query.*/
rc =SQLExecute(hstmt);

/* Assign the results of the query (the Zone polygons) to the fetched_binary variable. */
SQLBindCol (hstmt, 1,SQL_C_Binary, fetched_wkb_buf, 100000, &fetch_wkb_len);

/* Fetch each polygon within the display window and display it. */
while(SQL_SUCCESS == (rc = SQLFetch(hstmt)))
   draw_polygon(fetched_wkb_buf);

SE_AsShape

SE_AsShape takes a geometry object and returns it as an ESRI binary shape.

Syntax

SE_AsShape (g1 ST_Geometry)

Return type

ST_Geometry

Example

The code fragment below illustrates how the SE_AsShape function converts the zone polygons of the sensitive_areas table into shape polygons. These shape polygons are passed to the application's draw_polygon function for display.

/* Create the SQL expression. */
strcpy(sqlstmt,"select SE_AsShape(zone) from sensitive_areas where SE_EnvelopesIntersect(zone,SE_PolyFromShape(?,1))");

/* Prepare the SQLstatement. */
SQLPrepare(hstmt,(UCHAR*)sqlstmt, SQL_NTS);

/* Bind the query shape parameter. */
pcbvalue1 = query_shape_len;
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_INFX_UDT_LVARCHAR, query_shape_len, 0, query_shape_buf, query_shape_len, amp;pcbvalue1);

/* Execute the query.*/
rc = SQLExecute(hstmt);

/* Assign the results of the query (the Zone polygons) to the fetched_binary variable. */
SQLBindCol (hstmt, 1,SQL_C_Binary, fetched_shape_buf, 100000, &fetch_shape_len);

/* Fetch each polygon within the display window and display it. */
while(SQL_SUCCESS == (rc = SQLFetch(hstmt)))
    draw_polygon(fetched_shape_buf);

ST_AsText

ST_AsText takes a ST_Geometryobject and returns its well-known text representation.

Syntax

ST_AsText (g1 ST_Geometry)

Return type

varchar (256)

Example

The ST_AsText function converts thehazardous_sites location point into itstext description.

create tablehazardous_sites (site_id integer,
                             name varchar(40),
                             location ST_Point);

insert into hazardous_sites values ( 102,'W. H. KleenareChemical Repository',
                                     ST_PointFromText('point(1020.12 324.02)',1)
                                   );

select site_id, name,ST_AsText(location) Location
from hazardous_sites;

SITE_ID Name                                Location
------- ----------------------------------- -------------------------
    102 W. H. KleenareChemical Repository   ST_POINT (1020.12 3240.2)

ST_Boundary

ST_Boundary takes a geometry object and returns its combined boundary as a geometry object.

Syntax

ST_Boundary (g1 ST_Geometry)

Return type

ST_Geometry

Example

In this example the boundary_test table is created with two columns: geotype defined as a varchar, and g1 defined as the superclass geometry. The INSERT statements that follow insert each one of the subclass geometries. The ST_Boundary function retrieves the boundary of each subclass stored in the g1 geometry column. Note that the dimension of the resulting geometry is always one less than the input geometry. Points and multipoints always result in a boundary that is an empty geometry, dimension -1. Linestrings and multilinestrings return a multipoint boundary, dimension 0. A polygon or multipolygon always returns a multilinestring boundary, dimension 1.

create table boundary_test (geotype varchar(20), g1 ST_Geometry);

insert into boundary_test values ( 'Point',
                                  ST_PointFromText ( 'point (10.02 20.01)' ,1));

insert into boundary_test values ( 'Linestring',
                                  ST_LineFromText ( 'linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1));

insert into boundary_test values ( 'Polygon',
                                  ST_PolyFromText ( 'polygon((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01))',1));

insert into boundary_test values ( 'Multipoint',
                                  ST_MpointFromText ('multipoint(10.02 20.01, 10.32 23.98, 11.92 25.64)', 1));

insert into boundary_test values ( 'Multilinestring',
                                  ST_MlineFromText ('multilinestring((10.02 20.01,10.32 23.98, 11.92 25.64), (9.55 23.75,15.36 30.11))', 1));

insert into boundary_test values ( 'Multipolygon',
                                  ST_mpolyFromText('multipolygon(((10.0220.01,11.92 35.64,25.02 34.15, 19.15 33.94, 10.02 20.01)),((51.71 21.73,73.3627.04,71.52 32.87, 52.43 31.90,51.7121.73)))',1));

select geotype, ST_Boundary (g1) "The boundary"
from boundary_test

GEOTYPE            The boundary
------------------ ----------------------------------------------------------
Point              POINT EMPTY
Linestring         MULTIPOINT(10.02 20.01, 11.92 25.64)
Polygon            MULTILINESTRING ((10.02 20.01, 19.15 33.94,
                   25.02 34.15, 11.92 35.64, 10.02 20.01))
Multipoint         POINT EMPTY
Multilinestring    MULTIPOINT (9.55 23.75, 10.02 20.01,
                   11.92 25.64, 15.36 30.11)
Multipolygon       MULTILINESTRING((51.71 21.73, 73.36 27.04,
                   71.52 32.87, 52.43 31.90, 51.71 21.73),
                   (10.02 20.01, 19.15 33.94, 25.02 34.15,
                   11.92 35.64, 10.02 20.01))

  6 record(s) selected.

ST_Buffer

ST_Buffer takes a geometry object and distance and returns a geometry object that is the buffer surrounding the source object.

Syntax

ST_Buffer (g1 ST_Geometry, distance double_precision)

Return type

ST_Geometry

Example

The County Supervisor needs a list of hazardous sites whose five-mile radius overlaps sensitive areas such as schools, hospitals, and nursing homes. The sensitive areas are stored in the table sensitive_areas that is created with the CREATE TABLE statement below. The zone column, defined as a ST_Polygon, stores the outline of each of the sensitive areas.

create table sensitive_areas (id integer,
                              name varchar (128),
                              size float,
                              type varchar (10),
                              zone ST_Polygon);

The hazardous sites are stored in the hazardous_sites table created below. The location column, defined as a point, stores the geographic center of each hazardous site.

create table hazardous_sites (site_id integer,
                              name varchar(128),
                              location ST_Point);

The sensitive_areas and hazardous_sites tables are joined by the overlap function, which returns t (TRUE) for all sensitive_areas rows whose zone polygons overlap the buffered five-mile radius of the hazardous_sites location point.

select sa.name "Sensitive Areas", hs.name "Hazardous Sites"
from sensitive_areas sa, hazardous_sites hs
where ST_Overlaps (sa.zone, ST_Buffer (hs.location,(5 * 5280))) = 't';

Some of the sensitive areas in this administrative district lie within the five-mile buffer radius of the hazardous site locations. It is clear that both buffers intersect the hospital and one intersects the school. The nursing home lies safely outside both radii.

ST_Centroid

ST_Centroid takes a polygon or multipolygon and returns its geometric center as a point.

Syntax

ST_Centroid (pl1 ST_Polygon)
ST_Centroid (mpl1 ST_MultiPolygon)

Return type

ST_Point

Example

The city GIS technician wants to display the building footprint multipolygons as single points in a building density graphic.

The building footprints are stored in the buildingfootprints table that was created with the following CREATE TABLE statement.

create table buildingfootprints (building_id integer,
                                 lot_id integer,
                                 footprint ST_MultiPolygon);

The centroid function returns the centroid of each building footprint multipolygon. The SE_AsShape function converts each centroid point into a shape, the external representation recognized by the application.

select building_id,
SE_AsShape(ST_Centroid (footprint)) Centroid
from buildingfootprints;

ST_Contains

ST_Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second; otherwise, it returns f (FALSE).

Syntax

ST_Contains (g1 geometry, g2 geometry)

Return type

Boolean

Example

In the example below two tables are created. One, buildingfootprints, contains a city's building footprints, while the other, lots, contains its lots. The city engineer wants to ensure that all building footprints are completely inside their lots.

In both tables the multipolygon datatype stores the geometry of the buildingfootprints and the lots. The database designer selected multipolygons for both features because she realizes lots can be separated by natural features such as a river, and building footprints can comprise several buildings.

create table buildingfootprints (building_id integer,
lot_id integer,
footprint ST_MultiPolygon);

create table lots(lot_id integer,
lot ST_MultiPolygon);

The city engineer first selects the buildings that are not completely contained within one lot.

select building_id
from buildingfootprints, lots
where ST_Contains (lot,footprint)= 'f';

The city engineer realizes that although the first query will provide her with a list of all building IDs that have footprints outside a lot polygon, it won't tell her if the rest have the correct lot_id assigned to them. This second query performs a data integrity check on the lot_id column of the buildingfootprints table.

select bf.building_id "Building id",
bf.lot_id "buildings lot_id",
lots.lot_id "lots lot_id"
from buildingfootprints bf, lots
where ST_Contains(lot,footprint) = 'f'
and lots.lot_id <> bf.lot_id;

The building footprints labeled with their building IDs lie inside their lot lines. The lot lines are illustrated with dotted lines and although not shown extend to the street centerline to completely encompass the lot lines and the building footprints within them.

ST_ConvexHull

Returns the convex hull of a geometry object.

Syntax

ST_ConvexHull (g1 ST_ Geometry)

Return type

ST_Geometry

Example

The example creates the convexhull_test table that has two columns: geotype and g1. Geotype, a varchar(20), stores the name of the geometry subclass that is stored in g1, a geometry.

create table convexhull_test (geotype varchar(20), g1 ST_Geometry);

The INSERT statements insert several geometry subclasses into the convexhull_test table.

insert into convexhull_test values (
'Point',ST_PointFromText('point (10.02 20.01)',1)
)

insert into convexhull_test values(
'Linestring',
ST_LineFromText('linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1)
)

insert into convexhull_test values(
'Polygon',ST_PolyFromText('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))',1)
)

insert into convexhull_test values(
'MultiPoint',ST_MpointFromText('multipoint (10.02 20.01,10.32 23.98,
11.92 25.64)',1)
)

insert into convexhull_test values(
'MultiLineString',ST_MlineFromText('multilinestring ((10.02 20.01,
10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert into convexhull_test values(
'Multipolygon',
ST_MpolyFromText('multipolygon(((10.02 20.01, 11.92 35.64, 25.02 34.15,
19.15 33.94,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,
52.43 31.90,51.71 21.73)))',1)
)

The select statement lists the subclass name stored in the geotype column and the convex hull.

select geotype, ST_ConvexHull(g1)convexhull
from convexhull_test

ST_CoordDim

ST_CoordDim returns the coordinate dimensions of the ST_Geometry value.

Syntax

ST_CoordDim (g ST_Geometry)

Return Type

Integer

Example

The coorddim_test table is created with the columns, geotype and g1. The geotype column stores the name of the geometry subclass stored in the g1 ST_Geometry column.

CREATE TABLE coorddim_test (geotype varchar(20), g1 geometry);

The INSERT statements insert a sample subclass into the coorddim_test table.

INSERT INTO coorddim_test VALUES(
'Point',ST_PointFromText('point (10.02 20.01)',1)
);

INSERT INTO coorddim_test VALUES(
'LineString',
ST_LineFromText('linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1)
);

INSERT INTO coorddim_test VALUES(
'Polygon',
ST_PolyFromText('polygon((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01))',1)
);

INSERT INTO coorddim_test VALUES(
'MultiPoint',
ST_MPointFromText('multipoint(10.02 20.01,10.32 23.98,11.92 25.64)',1)
);

INSERT INTO coorddim_test VALUES(
'MultiLineString',
ST_MLineFromText('multilinestring((10.02 20.01,10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
);

INSERT INTO coorddim_test VALUES(
'MultiPolygon',
ST_MPolyFromText('multipolygon(((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01)),((51.7121.73,73.36 27.04,71.52 32.87,52.43 31.90,51.7121.73))',1)
);

The SELECT statement lists the subclass name stored in the geotype column with the dimension of that geotype.

SELECT geotype,coorddim(g1), coordinate_dimension FROM coorddim_test;

GEOTYPE           coordinate_dimension
----------------- --------------------
Point                                2
LineString                           2
Polygon                              2
MultiPoint                           2
MultiLineString                      2
MultiPolygon                         2

6 record(s) selected.

ST_Crosses

ST_Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects. The intersection object must contain points that are interior to both source geometries and it is not equal to either of the source objects. Otherwise, it returns f (FALSE).

Syntax

ST_Crosses (g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

The county government is considering a new regulation stating that all hazardous waste storage facilities within the county may not be within five miles of any waterway. The county GIS manager has an accurate representation of rivers and streams stored as multilinestrings in the waterways table but he only has a single point location for each of the hazardous waste storage facilities.

create table waterways (id integer,
name varchar(128),
water ST_MultiLineString);

create table hazardous_sites (site_id integer,
name varchar(128),
location ST_Point);

To determine if he must alert the county supervisor to any existing facilities that would violate the proposed regulation, the GIS manager will have to buffer the hazardous_sites locations to see if any rivers or streams cross the buffer polygons. The cross predicate compares the buffered hazardous_sites with waterways, returning only those records where the waterway crosses over the county's proposed regulated radius.

select ww.name "River or stream", hs.name "Hazardous Sites"
from waterways ww, hazardous_sites hs
where ST_Crosses(ST_Buffer(hs.location,(5 * 5280)),ww.water) = 't';

The five-mile buffered radius of the hazardous waste sites crosses the stream network that runs through the county's administrative district. Because the stream network is defined as a multilinestring, all linestring segments that are part of those segments that cross the radius are included in the result set.

ST_Difference

ST_Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.

Syntax

ST_Difference (g1 ST_Geometry,g2 ST_Geometry)

Return type

ST_Geometry

Example

The city engineer needs to know the total area of the city's lot area not covered by buildings. In fact, she wants the sum of the lot area after the building area has been removed.

create table buildingfootprints (building_id integer, lot_id integer, footprint ST_Multipolygon);

create table lots(lot_id integer, lot ST_Multipolygon);

The city engineer equijoins the buildingfootprints and lots table on the lot_id and takes the sum of the area of the difference of the lots less the buildingfootprints.

select sum(ST_Area(ST_Difference(lot,footprint)::st_multipolygon))
from buildingfootprints bf, lots
where bf.lot_id = lots.lot_id;

ST_Dimension

Returns the dimension of a geometry object.

Syntax

ST_Dimension(g1 ST_Geometry)

Returns

Integer

Example

The dimension_test table is created with the columns geotype and g1. The geotype column stores the name of the subclass stored in the g1 geometry column.

create table dimension_test (geotype varchar(20), g1 ST_Geometry)

The INSERT statements insert a sample subclass into the dimension_test table.

insert into dimension_test values(
'Point',ST_PointFromText('point (10.02 20.01)',1)
)

insert into dimension_test values(
'Linestring',
ST_LineFromText('linestring(10.02 20.01, 10.32 23.98, 11.92 25.64)',1)
)

insert into dimension_test values(
'Polygon',ST_PolyFromText('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15,19.15 33.94,10.02 20.01))',1)
)

insert into dimension_test values(
'Multipoint',ST_MpointFromText('multipoint (10.02 20.01,10.32 23.98,
11.92 25.64)',1)
)

insert into dimension_test values(
'Multilinestring',MlineFromText('multilinestring ((10.02 20.01,
10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert into dimension_test values(
'Multipolygon',
MpolyFromText ('multipolygon(((10.02 20.01,11.92 35.64,25.02 34.15,
19.15 33.94,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,
52.43 31.90,51.7121.73)))',1)
)

The select statement lists the subclass name stored in the geotype column with the dimension of that geotype.

Select geotype, ST_Dimension(g1)Dimension
from dimension_test

GEOTYPE                 Dimension
----------------------- ------------
Point                              0
Linestring                         1
Polygon                            2
Multipoint                         0
Multilinestring                    1
Multipolygon                       2

  6 record(s) selected.

ST_Disjoint

ST_Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise, it returns f (FALSE).

Syntax

ST_Disjoint (g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

An insurance company wants to assess the insurance coverage for the town's hospital, nursing homes, and schools. Part of this process includes determining the threat that hazardous waste sites pose to each institution. At this time the insurance company wants to consider only those institutions that are not at risk of contamination. The GIS consultant, hired by the insurance company, has been commissioned to locate all institutions that are outside a five-mile radius of a hazardous waste storage facility.

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' polygon geometries.

create table sensitive_areas (id integer,
                              name varchar(128),
                              size float,
                              type varchar(10),
                              zone ST_Polygon);

The hazardous_sites table stores the identity of the sites in the site_id and name columns, while the actual geographic location of each site is stored in the location point column.

create table hazardous_sites (site_id integer,
                              name varchar(128),
                              location ST_Point);

The select statement lists the names of all sensitive areas that are outside the five-mile radius of a hazardous waste site. You could use the intersects function instead in this query by equating the result of the function to 'f',because intersects and disjoint return the opposite results.

select sa.name
from sensitive_areas sa, hazardous_sites hs
where ST_Disjoint (ST_Buffer(hs.location,(5*5280)),sa.zone) = 't';

The nursing home is the only sensitive area for which the disjoint function will return t (TRUE) when comparing sensitive sites to the five-mile radius of the hazardous waste sites. The ST_Disjoint function returns 't' whenever two geometries do not intersect in any way.

ST_Distance

Returns the closest distance separating two geometries.

Syntax

ST_Distance(g1 ST_Geometry, g2 ST_Geometry)

Return type

Double precision

Example

The city engineer needs a list of all buildings within one foot of any lot line.

The building_id column of the buildingfootprints table uniquely identifies each building. The lot_id column identifies the lot each building belongs to. The footprints multipolygon stores the geometry of each building's footprint.

create table buildingfootprints (building_id integer,
lot_id integer,
footprint ST_Multipolygon);

The lots table stores the lot_id, which uniquely identifies each lot, and the lot ST_MultiPolygon that contains the lot geometry.

create table lots (lot_id integer,
lot ST_Multipolygon);

The query returns a list of building IDs that are within one foot of their lot lines. The distance function performs a spatial join on the footprints and lot ST_MultiPolygons. However, the equijoin between bf.lot_id and lots.lot_id ensures that only the ST_MultiPolygons belonging to the same lot are compared by the ST_Distance function.

select bf.building_id
from buildingfootprints bf, lots
where bf.lot_id = lots.lot_id
and ST_Distance(bf.footprint,ST_Boundary(lots.lot)) <= 1.0;

ST_EndPoint

Returns the last point of a linestring.

Syntax

ST_EndPoint (ln1 ST_LineString)

Return type

ST_Point

Example

The endpoint_test table stores the gid integer column, which uniquely identifies each row and the ln1 ST_LineString column that stores linestrings.

create table endpoint_test (gid integer, ln1 ST_LineString);

The INSERT statements insert linestrings into the endpoint_test table. The first linestring doesn't have Z coordinates or measures, while the second one does.

insert into endpoint_test values(
1,
ST_LineFromText('linestring(10.02 20.01,23.73 21.92,30.10 40.23)',1)
)

insert into endpoint_test values(
2,
ST_LineFromText('linestring zm(10.02 20.01 5.0 7.0,23.73 21.92 6.5 7.1,30.10 40.23 6.9 7.2)',1)
)

The query lists the gid column with the output of the ST_EndPoint function. The ST_EndPoint function generates a ST_Point geometry.

select gid,(ST_EndPoint(ln1) Endpoint
from endpoint_test

GID           Endpoint
---------- -------------------------------------------------------------
         1 ST_POINT (30.10 40.23)
         2 ST_POINT ZM (30.10 40.23 6.9 7.2)

  2 record(s) selected.

ST_Envelope

Returns the bounding box of a geometry object as a polygon.

Syntax

ST_Envelope(g1 ST_Geometry)

Return type

ST_Geometry

Example

The envelope_test table's geotype column stores the name of the geometry subclass stored in the g1 ST_Geometry column.

create table envelope_test (geotype varchar(20), g1 ST_Geometry)

The INSERT statements insert each geometry subclass into the envelope_test table.

insert into envelope_test values(
'Point',
ST_PointFromText('point(10.02 20.01)',1)
)

insert into envelope_test values(
'Linestring',
ST_LineFromText('linestring(10.01 20.01, 10.01 30.01, 10.01 40.01)', 1)
)

insert into envelope_test values(
'Linestring',
ST_LineFromText('linestring(10.02 20.01,10.32 23.98,11.92 25.64)', 1)
)

insert into envelope_test values(
'Polygon',
ST_PolyFromText('polygon((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01))',1)
)

insert into envelope_test values(
'Multipoint',
ST_MpointFromText('multipoint(10.02 20.01,10.32 23.98,11.92 25.64)', 1)
)

insert into envelope_test values(
'Multilinestring',
ST_MlineFromText('multilinestring((10.01 20.01,20.01 20.01,30.01 20.01),(30.01 20.01,40.01 20.01,50.01 20.01))',1)
)

insert into envelope_test values(
'Multilinestring',
ST_MlineFromText('multilinestring((10.02 20.01,10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert into envelope_test values(
'Multipolygon',
ST_MpolyFromText('multipolygon(((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,52.43 31.90,51.71 21.73)))',1)
)

The query lists the subclass name and its envelope. Because the ST_Envelope function returns a point, linestring, or polygon.

select geotype, ST_Envelope(g1)Envelope
from envelope_test
GEOTYPE      Envelope
--------------- --------------------------------------------------------
Point           ST_POINT(10.02 20.01)
Linestring      ST_LINESTRING (10.01 20.01,10.01 40.01)
Linestring      ST_POLYGON((10.02 20.01, 11.92 20.01,11.92 25.64, 10.02 25.64, 10.02 20.01))
Polygon         ST_POLYGON((10.02 20.01, 25.02 20.01, 25.02 35.64, 10.02 35.64,10.02 20.01))
Multipoint      ST_POLYGON((10.02 20.01,11.92 20.01,11.92 25.64,10.02 25.64,10.02 20.01))
Multilinestring ST_LINESTRING (10.01 20.01, 50.01 20.01)
Multilinestring ST_POLYGON ((9.55 20.01, 15.36 20.01, 15.36 30.11, 9.55 30.11, 9.55 20.01))
Multipolygon    ST_POLYGON ((10.02 20.01,73.36 20.01,73.36 35.64,10.02 35.64,10.02 20.01))

8 record(s) selected.

ST_EnvelopesIntersect

ST_EnvelopesIntersect returns t (TRUE) if the envelopes of two geometries intersect; otherwise, it returns f (FALSE).

Syntax

ST_EnvelopesIntersect(g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

The get_window function retrieves the display window's coordinates from the application. The window parameter is actually a polygon shape structure containing a string of coordinates that represent the display polygon. The SE_PolygonFromShape function converts the display window shape into a Spatial DataBlade polygon that the ST_EnvelopesIntersect function uses as its intersection envelope. All sensitive_areas zone polygons that intersect the interior or boundary of the display window are returned. Each polygon is fetched from the result set and passed to the draw_polygon function.

/* Get the display window coordinates as a polygon shape. */
get_window(&window)

/* Create the SQL expression. The envelopesintersect function limits
the result set to only those zone polygons that intersect the envelope
of the display window. */

strcpy(sqlstmt,"select SE_AsShape(zone) from sensitive_areas
where ST_EnvelopesIntersect(zone,SE_PolyFromShape(?,1))");

/* Set blob_len to the byte length of a 5-point shape polygon. */
blob_len = 128;

/* Prepare the SQLstatement. */
SQLPrepare(hstmt,(UCHAR *)sqlstmt, SQL_NTS);

/* Set the pcbvalue1 to the window shape.*/
pcbvalue1 = blob_len;

/* Bind the shape parameter.*/
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BLOB, blob_len, 0, window, blob_len, &pcbvalue1);

/* Execute the query.*/
rc =SQLExecute(hstmt);

/* Assign the results of the query (the Zone polygons) to the fetched_binary variable. */
SQLBindCol (hstmt, 1,SQL_C_Binary, fetched_binary, 100000, &ind_blob);

/* Fetch each polygon within the display window and display it.*/
while (SQL_SUCCESS ==(rc = SQLFetch(hstmt)))
draw_polygon(fetched_binary);

ST_Equals

Compares two geometries and returns t (TRUE) if the geometries are identical; otherwise, it returns f (FALSE).

Syntax

ST_Equals (g1 ST_Geometry, g2ST_Geometry)

Return type

Boolean

Example

The city GIS technician suspects that some of the data in the buildingfootprints table was somehow duplicated. To alleviate his concern, he queries the table to determine if any of the footprints multipolygons are equal.

The buildingfootprints table is created with the following statement. The building_id column uniquely identifies the buildings, the lot_id identifies the building's lot, and the footprint multipolygon stores the building's geometry.

create table buildingfootprints (building_id integer,
lot_id integer,
footprint ST_MultiPolygon);

The buildingfootprints table is spatially joined to itself by the equal predicate, which returns 1 whenever it finds two multipolygons that are equal. The bf1.building_id<>bf2.building_id condition eliminates the comparison of a geometry to itself.

select bf1.building_id, bf2.building_id
from buildingfootprints bf1, buildingfootprints bf2
where ST_Equals(bf1.footprint,bf2.footprint)= 't'
and bf1.building_id <> bf2.building_id;

ST_ExteriorRing

Returns the exterior ring of apolygon as a linestring.

Syntax

ST_ExteriorRing(pl1 ST_Polygon)

Return type

ST_LineString

Example

An ornithologist, wishing to study the bird population on several south sea islands, knows that the feeding zone of the bird species she is interested in is restricted to the shoreline. As part of her calculation of the island's carrying capacity the ornithologist requires the islands' perimeters. Some of the islands are so large they have several ponds on them. However, the shoreline of the ponds are inhabited exclusively by another more aggressive bird species. Therefore, the ornithologist requires the perimeter of the exteriorring only of the islands.

The ID and name columns of the islands table identifies each island, while the land polygon column stores the island's geometry.

create table islands(id integer,
name varchar(32),
land ST_Polygon);

The ST_ExteriorRing function extracts the exterior ring from each island polygon as a linestring. The length of the linestring is calculated by the length function.The linestring lengths are summarized by the sum function.

select sum(ST_length(ST_ExteriorRing(land)))
from islands;

The exterior rings of the islands represent the ecological interface each island shares with the sea.
Some of the islands have lakes, which are represented by the interior rings of the polygons.

SE_GeomFromShape

SE_GeomFromShape takes a shapeand a spatial reference ID to return a geometry object.

Syntax

SE_GeomFromShape(s1 blob(1m),SRID integer)

Return type

ST_Geometry

Example

The following C code fragment contains ODBC functions embedded with Spatial DataBlade SQL functions that insert data into the lots table.

The lots table was created with two columns: the lot_id, which uniquely identifies each lot, and the lot polygon column, which contains the geometry of each lot.

create table lots(lot_id integer,
lot ST_Multipolygon);

The SE_GeomFromShape function converts shapes into Spatial DataBlade geometry. The entire INSERT statement is copied into shp_sql. The INSERT statement contains parameter markers to accept the lot_id and lot data, dynamically.

/* Create the SQL insert statement to populate the lot ID and the
lot ST_MultiPolygon. The question marks are parameter markers that
indicate the lot_id and lot values that will be retrieved at
run time. */
strcpy (shp_sql,"insert into lots (lot_id, lot) values(?, SE_GeomFromShape(?,1))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the
 integerkey value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&lot_id, 0, &pcbvalue1);

/* Bind the
 shape tothe second parameter. */
pcbvalue2 = blob_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, shape_blob, blob_len, &pcbvalue2);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_GeomFromText

ST_GeomFromText takes a well-known text representation and a spatial reference ID and returns a geometry object.

Syntax

ST_GeomFromText (wkt varchar(255),SRID integer)

Return type

ST_Geometry

Example

The geometry_test table contains the integer gid column, which uniquely identifies each row, and the g1 column, which stores the geometry.

create table geometry_test (gid smallint, g1 ST_Geometry)

The INSERT statements insert the data into the gid and g1 columns of the geometry_test table. The ST_GeomFromText function converts the text representation of each geometry into its corresponding Spatial DataBlade instantiable subclass.

insert into geometry_test values(
1, ST_GeomFromText('point(10.02 20.01)',1)
)

insert into geometry_test values(
2,
ST_GeomFromText
('linestring (10.01 20.01, 10.01 30.01,10.01 40.01)',1)
)

insert into geometry_test values(
3,
ST_GeomFromText
('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15,
19.15 33.94, 10.02 20.01))',1)
)

insert into geometry_test values(
4,
ST_GeomFromText
('multipoint (10.02 20.01,10.32 23.98,11.92 25.64)',1)
)

insert into geometry_test values(
5,
ST_GeomFromText
('multilinestring((10.02 20.01, 10.32 23.98,
11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert into geometry_test values(
6,
ST_GeomFromText
('multipolygon(((10.02 20.01, 11.92 35.64,
25.02 34.15, 19.15 33.94, 10.02 20.01)),((51.71 21.73, 73.36 27.04,
71.52 32.87, 52.43 31.90, 51.71 21.73)))',1)
)

ST_GeomFromWKB

ST_GeomFromWKB takes a well-known binary representation and a spatial reference ID to return a geometry object.

Syntax

ST_GeomFromWKB (WKB blob(1m), SRID integer)

Return type

ST_Geometry

Example

The following C code fragment contains ODBC functions embedded with Spatial DataBlade SQL functions that insert data into the lots table.

The lots table was created with two columns: the lot_id, which uniquely identifies each lot, and the lot polygon column, which contains the geometry of each lot.

create table lots(lot_id integer,
lot ST_MultiPolygon);

The ST_GeomFromWKB function converts WKB representations into Spatial DataBlade geometry. The entire INSERT statement is copied into a wkb_sql char string.The INSERT statement contains parameter markers to accept the lot_id and lot data, dynamically.

/* Create the SQL insert statement to populate the lot ID and the
lot ST_MultiPolygon. The question marks are parameter markers that
indicate the lot_id and lot values that will be retrieved at
run time. */
strcpy(wkb_sql,"insert into lots (lot_id, lot) values(?, ST_GeomFromWKB (?,1))");

/* Allocate memory for the SQL statement handle and associate
the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQL statement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind the
 integer key value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&lot_id, 0, &pcbvalue1);

/* Bind the
 shape tothe second parameter. */
pcbvalue2 = blob_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, shape_blob, blob_len, &pcbvalue2);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_GeometryN

ST_GeometryN takes a collection and an integer index and returns the Nth ST_Geometry object in the collection.

Syntax

ST_GeometryN (mpt1 ST_MultiPoint, index integer)
ST_GeometryN (mln1 ST_MultiLineString, index integer)
ST_GeometryN(mpl1 ST_MultiPolygon, index integer)

Return type

ST_Geometry

Example

The city engineer wants to know which building footprints are all inside the first polygon of the lots ST_MultiPolygon.

The building_id column uniquely identifies each row of the buildingfootprints table. The lot_id column identifies the building's lot. The footprints column stores the buildings' geometries.

create table buildingfootprints (building_id integer,
lot_id integer,
footprint ST_MultiPolygon);

create table lots(lot_id integer,
lot ST_MultiPolygon);

The query lists the buildingfootprints' building_id and lot_id for all buildingfootprints that area ll within the first lot polygon. The ST_GeometryN function returns a first lot polygon element in the ST_MultiPolygon.

select bf.building_id, bf.lot_id
from buildingfootprints bf, lots
where ST_Within (footprint, ST_GeometryN(lot,1)) = 't'
and bf.lot_id =lots.lot_id;

ST_GeometryType

ST_GeometryType takes a ST_Geometry object and returns its geometry type as a string.

Syntax

ST_GeometryType (g1 ST_Geometry)

Return type

Varchar(32) containing one of

ST_Point
ST_LineString
ST_Polygon
ST_MultiPoint
ST_MultiLineString
ST_MultiPolygon

Example

The geometrytype_test table contains the g1 geometry column.

create table geometrytype_test(g1 st_geometry)

The INSERT statements insert each geometry subclass into the g1 column.

insert into geometrytype_test values(
ST_GeomFromText('point(10.02 20.01)',1)
)

insert into ST_GeometryType_test values(
ST_GeomFromText('linestring(10.01 20.01, 10.01 30.01, 10.01 40.01)',1)
)

insert into geometrytype_test values(
ST_GeomFromText('polygon((10.02 20.01, 11.92 35.64, 25.02 34.15,
19.15 33.94, 10.02 20.01))',1)
)

insert into geometrytype_test values(
ST_GeomFromText('multipoint(10.02 20.01,10.32 23.98, 11.92 25.64)',1)
)

insert into geometrytype_test values(
ST_GeomFromText('multilinestring((10.02 20.01,10.32 23.98,
11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert into geometrytype_test values(
ST_GeomFromText('multipolygon(((10.02 20.01,11.92 35.64,25.02 34.15,
19.15 33.94,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,52.43 31.90,
51.71 21.73)))',1)
)

The query lists the geometry type of each subclass stored in the g1 geometry column.

select ST_GeometryType(g1)Geometry_type
from geometrytype_test

Geometry_type
-----------------------
ST_Point
ST_LineString
ST_Polygon
ST_MultiPoint
ST_MultiLineString
ST_MultiPolygon

6 record(s) selected.

ST_InteriorRingN

Returns the nth interior ring of a polygon as a ST_ LineString. The order of the rings cannot be predefined since the rings are organized according to the rules defined by the internal geometry verification routines and not by geometric orientation. If the index exceeds the number of interior rings possessed by a polygon a NULL value is returned.

Syntax

ST_InteriorRingN (pl1 ST_Polygon, index integer)

Return type

ST_LineString

Example

An ornithologist, wishing to study the bird population on several south sea islands, knows that the feeding zone of this passive species is restricted to the seashore. Some of the islands are so large they have several lakes on them. The shoreline of the lakes is inhabited exclusively by another more aggressive species. The ornithologist knows that for each island, if the perimeter of the ponds exceeds a certain threshold, the aggressive species will become so numerous it will threaten the passive seashore species. Therefore, the ornithologist requires the aggregated perimeter of the interior rings of the islands.

The exterior rings of the islands represent the ecological interface each island shares with the sea. Some of the islands have lakes which are represented by the interior rings of the polygons.

The ID and name columns of the islands table identifies each island, while the land ST_Polygon column stores the island's geometry.

create table islands (id integer,
name varchar(32),
land ST_Polygon);

This ODBC program uses the ST_InteriorRingN function to extract the interior ring (lake) from each island polygon as a linestring. The perimeter of the linestring returned by the length function is totaled and displayed along with the island's ID.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>

#include"sg.h"
#include"sgerr.h"
#include"sqlcli1.h"

/* Change these constants! */

#define USER
 "sdetest" /* your user name */
#define PASSWD "acid.rain" /* your user password */
#define DBNAME "mydb" /* database to connect to */

static void check_sql_err (SQLHDBC handle,
SQLHSTMT hstmt,
LONG rc,
CHAR *str);

void main(argc, argv)
int argc;
char *argv[];
{
SQLHDBC handle;
SQLHENV henv;
CHAR sql_stmt[256];
LONG rc,
total_perimeter,
num_lakes,
lake_number,
island_id,
lake_perimeter;
SQLHSTMT island_cursor,
lake_cursor;
SDWORD pcbvalue,
id_ind,
lake_ind,
length_ind;

/* Allocate memoryfor the ODBC environment handle henv and initialize
 the application. */
rc = SQLAllocEnv(&henv);
if (rc !=SQL_SUCCESS)
{
printf("SQLAllocEnv failed with %d\n", rc);
exit(0);
}
/* Allocate memory for a connection handle within the henv environment.
 */
rc = SQLAllocConnect(henv, &handle);
if (rc !=SQL_SUCCESS)
{
printf("SQLAllocConnect failed with %d\n", rc);
exit(0);
}
/* Load the INFORMIX ODBC driver and connect to the data source identified
by the database,user, and password.*/
rc = SQLConnect(handle,
(UCHAR *)DBNAME,
SQL_NTS,
(UCHAR *)USER,
SQL_NTS,
(UCHAR *)PASSWD,
SQL_NTS);
check_sql_err(handle, NULL, rc, "SQLConnect");
/* Allocate memory tothe SQL statement handle island_cursor . */
rc = SQLAllocStmt(handle, &island_cursor);
check_sql_err(handle, NULL, rc, "SQLAllocStmt");

/* Prepare and execute the query to get the island IDs and number of
lakes (interiorrings); */
strcpy (sql_stmt,"select id, ST_NumInteriorRing(land) from islands");
rc = SQLExecDirect(island_cursor, (UCHAR *)sql_stmt, SQL_NTS);
check_sql_err (NULL,island_cursor, rc, "SQLExecDirect");

/* Bind the island table's id column to the variable island_id. */
rc = SQLBindCol(island_cursor, 1, SQL_C_SLONG, &island_id, 0, &id_ind);
check_sql_err (NULL,island_cursor, rc, "SQLBindCol");

/* Bind the result ofST_NumInteriorRing(land) to the num_lakes variable.*/
rc = SQLBindCol(island_cursor, 2, SQL_C_SLONG, &num_lakes, 0, &lake_ind);
check_sql_err (NULL,island_cursor, rc, "SQLBindCol");

/* Allocate memory tothe SQL statement handle lake_cursor . */
rc = SQLAllocStmt(handle, &lake_cursor);
check_sql_err(handle, NULL, rc, "SQLAllocStmt");

/* Prepare the queryto get the length of an interior ring. For
efficiency, we only prepare this query once. */
strcpy (sql_stmt,"select ST_Length(ST_InteriorRingN(land, cast
 (? as integer)))
from islands where id = ?");
rc = SQLPrepare(lake_cursor, (UCHAR *)sql_stmt, SQL_NTS);
check_sql_err (NULL, lake_cursor, rc, "SQLPrepare");

/* Bind the
 lake_number variable as the first input parameter. */
pcbvalue = 0;
rc = SQLBindParameter(lake_cursor, 1, SQL_PARAM_INPUT, SQL_C_LONG,
SQL_INTEGER, 0, 0,&lake_number, 0, &pcbvalue);
check_sql_err (NULL,lake_cursor, rc, "SQLBindParameter");

/* Bind the
 island_idas the second input parameter. */
pcbvalue = 0;
rc = SQLBindParameter(lake_cursor, 2, SQL_PARAM_INPUT, SQL_C_LONG,
SQL_INTEGER, 0, 0,&island_id, 0, &pcbvalue);
check_sql_err (NULL,lake_cursor, rc, "SQLBindParameter");
/* Bind the result ofthe ST_Length(ST_InteriorRingN(land, cast
(? as integer)))as to the variable lake_perimeter. */
rc = SQLBindCol(lake_cursor, 1, SQL_C_SLONG, &lake_perimeter, 0,&length_ind);
check_sql_err (NULL,island_cursor, rc, "SQLBindCol");

/* Outer loop, getthe island ids and the number of lakes (interiorrings).*/
while (SQL_SUCCESS ==rc)
{
/* Fetch an island.*/
rc = SQLFetch(island_cursor);
if (rc !=SQL_NO_DATA)
{
check_sql_err (NULL,island_cursor, rc, "SQLFetch");

/* Inner loop, for this island, get the perimeter of all its lakes (interiorrings).*/
for (total_perimeter= 0,lake_number = 1;
lake_number <=num_lakes;
lake_number++)
{
rc = SQLExecute(lake_cursor);
check_sql_err (NULL,lake_cursor, rc, "SQLExecute");
rc = SQLFetch(lake_cursor);
check_sql_err (NULL,lake_cursor, rc, "SQLFetch");
total_perimeter +=lake_perimeter;
SQLFreeStmt(lake_cursor, SQL_CLOSE);
}
}
/* Display the island ID and the total perimeter of its lakes.*/
printf ("Island ID= %d, Total lake perimeter = %d\n",
island_id, total_perimeter);
}
SQLFreeStmt(lake_cursor, SQL_DROP);
SQLFreeStmt(island_cursor, SQL_DROP);
SQLDisconnect(handle);
SQLFreeConnect(handle);
SQLFreeEnv (henv);
printf( "\n TestComplete ...\n" );
}
static void check_sql_err (SQLHDBC handle, SQLHSTMT hstmt, LONG rc, CHAR
 *str)
{
SDWORD dbms_err = 0;
SWORD length;
UCHAR err_msg[SQL_MAX_MESSAGE_LENGTH], state[6];
if (rc !=SQL_SUCCESS)
{
SQLError(SQL_NULL_HENV, handle, hstmt, state, &dbms_err,
err_msg,SQL_MAX_MESSAGE_LENGTH - 1, &length);
printf ("%sERROR (%d): DBMS code:%d, SQL state: %s, message: \n %s\n",
str, rc, dbms_err,state, err_msg);
if (handle)
{
SQLDisconnect(handle);
SQLFreeConnect(handle);
}
exit(1);
}
}

ST_Intersection

ST_Intersection takes two ST_Geometry objects and returns the intersection set as a ST_Geometry object.

Syntax

ST_Intersection(g1 ST_Geometry,g2 ST_Geometry)

Return type

ST_Geometry

Example

The fire marshal must obtain the areas of the hospitals, schools, and nursing homes intersected by the radius of a possible hazardous waste contamination.

The sensitive areas are stored in the sensitive_areas table that is created with the CREATE TABLE statement that follows. The zone column defined as a polygon stores the outline of each of the sensitive areas.

create table sensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

The hazardous sites are stored in the hazardous_sites table created with the CREATE TABLE statement that follows. The location column, defined as a point, stores a location that is the geographic center of each hazardous site.

create table hazardous_sites (site_id integer,
name varchar(128),
location ST_Point);

The ST_Buffer function generates a five-mile buffer surrounding the hazardous waste site locations. The ST_Intersection function generates polygons from the intersection of the buffered hazardous waste sites and the sensitive areas. The ST_Area function returns the intersection polygons' area, which is summarized for all hazardous sites by the sum function. The group by clause directs the query to aggregate the intersection areas by hazardous waste site ID.

select hs.name,sum(ST_Area(ST_Intersection(sa.zone, ST_Buffer(hs.location,(5* 5280)))::st_multipolygon))
from sensitive_areas sa, hazardous_sites hs
group by hs.site_id;

The circles represent the five-mile buffer polygons surrounding the hazardous waste sites. The intersection of these buffer polygons with the sensitive area polygons produces three polygons. The hospital in the upper left-hand corner is intersected twice, while the school in the lower right-hand corner is intersected only once.

ST_Intersects

Returns t (TRUE) if the intersection of two geometries doesn't result in an empty set; otherwise, returns f (FALSE).

Syntax

ST_Intersects (g1 ST_Geometry, g2ST_Geometry)

Return type

Boolean

Example

The fire marshal wants a list of sensitive areas within a five-mile radius of a hazardous waste site.

The sensitive areas are stored in the sensitive_areas table created below. The zone column is defined as a polygon and stores the outline of the sensitive areas.

create table sensitive_areas (
id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

The hazardous sites are stored in the hazardous_sites table created with the CREATE TABLE statement that follows. The location column, defined as a point, stores the geographic center of each hazardous site.

create table hazardous_sites (
site_id integer,
name varchar(128),
location ST_Point);

The query returns a list of sensitive area and hazardous site names for sensitive areas that intersect the five-mile buffer radius of the hazardous sites.

select sa.name,hs.name
from sensitive_areas sa, hazardous_sites hs
where ST_Intersects(ST_Buffer(hs.location,(5 * 5280)),sa.zone) = 't';

SE_Is3D

Returns t (TRUE) if theST_Geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).

Syntax

SE_Is3D(g1 ST_Geometry)

Return type

Boolean

Example

The threed_test table is created with integer gid and g1 ST_Geometry columns.

create table threed_test (gid smallint, g1 ST_Geometry)

The INSERT statements insert two points into the threed_test table. The first point does not contain Z coordinates, while the second does.

insert into threed_test values(
1,
ST_PointFromText('point(10 10)',1)
)

insert into threed_test values(
2,
ST_PointFromText('pointz (10.92 10.12 5)',1)
)

The query lists the contents of the gid column with the results of the SE_Is3d function. The function returns a f for the first row, which doesn't have a Z coordinate, and a t for the second row, which does.

select gid,SE_Is3D(g1) Is_it_3d
from threed_test

gid       Is_it_3d
--------- --------
1         f
2         t

ST_IsClosed

ST_IsClosed takes a ST_Linestring or ST_MultiLineString and returns t (TRUE) if it is closed; otherwise, it returns f (FALSE).

Syntax

ST_IsClosed(ln1 ST_LineString)
ST_IsClosed(mln1 ST_MultiLineString)

Return type

Boolean

Example

The closed_linestring table is created with a single linestring column.

create table closed_linestring (ln1 ST_LineString)

The INSERT statements insert two records into the closed_linestring table. The first record is not a closed linestring, while the second is.

insert into closed_linestring values(
ST_LineFromText('linestring(10.02 20.01, 10.32 23.98, 11.92 25.64)', 1)
)

insert into closed_linestring values(
ST_LineFromText('linestring(10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)',1)
)

The query returns the results of the isclosed function. The first row returns a 0 because the linestring is not closed, while the second row returns a 1 because the linestring is closed.

select ST_IsClosed(ln1)Is_it_closed
from closed_linestring

Is_it_closed

------------
f
t

2 record(s) selected.

The closed_mlinestring table is created with a single ST_MultiLineString column.

create table closed_mlinestring (mln1 ST_MultiLineString)

The INSERT statements insert a ST_MultiLineString record that is not closed and another that is.

insert into closed_mlinestring values(
ST_MlineFromText('multilinestring((10.02 20.01,10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

insert intoclosed_mlinestring values(
ST_MlineFromText('multilinestring((10.02 20.01,11.92 35.64,25.02
34.15,19.15 33.94,10.02 20.01),(51.71 21.73,73.36 27.04,71.52 32.87,52.43 31.90,51.71 21.73))',1)
)

The query lists the results of the ST_IsClosed function. The first row returns 0 because the multilinestring is not closed. The second row returns 1 because the multilinestring stored in them ln1 column is closed. A multilinestring is closed if all of its linestring elements are closed.

select ST_IsClosed(mln1) Is_it_closed
from closed_mlinestring

Is_it_closed
------------
f
t

2 record(s) selected.

ST_IsEmpty

Returns t (TRUE) if the geometry is empty; otherwise, returns f (FALSE).

Syntax

ST_IsEmpty(g1 ST_Geometry)

Return type

Boolean

Example

The CREATE TABLE statement below creates the empty_test table with geotype, which stores the data type of the subclasses that are stored in the g1 ST_Geometry column.

create table empty_test (geotype varchar(20), g1 ST_Geometry)

The INSERT statements insert two records for the geometry subclasses point, linestring, and polygon: one that is empty and one that is not.

insert into empty_test values(
'Point',ST_PointFromText('point (10.02 20.01)',1)
)

insert into empty_test values(
'Point', ST_PointFromText('point empty',1)
)

insert into empty_test values(
'Linestring',
ST_LineFromText('linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1)
)

insert into empty_test values(
'Linestring', ST_LineFromText('linestring empty',1)
)

insert into empty_testvalues(
'Polygon',
ST_PolyFromText('polygon((10.02 20.01,11.92 35.64,25.02 34.15,
19.15 33.94,10.02 20.01))',1)
)

insert into empty_test values(
'Polygon', ST_PolyFromText('polygon empty',1)
)

The query returns the geometry type from the geotype column and the results of the ST_IsEmpty function.

select geotype, ST_IsEmpty(g1) Is_it_empty
from empty_test
GEOTYPE Is_it_empty
-------------------------------
Point f
Point t
Linestring f
Linestring t
Polygon f
Polygon t

6 record(s) selected.

SE_IsMeasured

Returns t (TRUE) if the ST_Geometry object has measures; otherwise, returns f (FALSE).

Syntax

SE_IsMeasured (g1 ST_Geometry)

Return type

Boolean

Example

The measure_test table is created with two columns: a smallint column, gid, uniquely identifies the rows while g1, a ST_Geometry column, stores the ST_Point geometries.

create table measure_test (gid smallint, g1 ST_Geometry)

The INSERT statements insert two records into the measure_test table. The first record stores a point that doesn't have a measure, while the second record does have a measure value.

insert into measure_test values(
1,
ST_PointFromText('point(10 10)',1)
)

insert into measure_test values(
2,
ST_PointFromText('pointm (10.92 10.12 5)',1)
)

The query lists the gid column and the results of the SE_IsMeasured function. The SE_IsMeasured function returns a 0 for the first row because the point does not have a measure, and it returns a1 for the second row because the point does have measures.

select gid,SE_IsMeasured(g1)Has_measures
from measure_test

gid         Has_measures
----------- ----------
1           f
2           t

ST_IsRing

ST_IsRing takes a ST_LineString and returns t (TRUE) if it is a ring (i.e., the ST_LineString is closed and simple); otherwise, it returns f (FALSE).

Syntax

ST_IsRing(ln1 ST_LineString)

Return type

Boolean

Example

The ring_linestring table is created with a single ST_LineString column called ln1.

create table ring_linestring (ln1 ST_LineString)

The INSERT statements insert three linestrings into the ln1 column. The first row contains a linestring that's not closed and isn't a ring. The second row contains a closed and simple linestring that is a ring. The third row contains a linestring that is closed but not simple because it intersects its own interior. It's also not a ring.

insert into ring_linestring values(
ST_LineFromText ('linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1)
)

insert into ring_linestring values(
ST_LineFromText ('linestring(10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.94,10.02 20.01)', 1)
)

insert into ring_linestring values(
ST_LineFromText('linestring(15.47 30.12,20.73 22.12,10.83 14.13,
16.45 17.24,21.56 13.37,11.23 22.56,19.11 26.78,15.47 30.12)', 1)
)

The query returns the results of the isring function. The first and third rows return 0 because the linestrings aren't rings while the second row returns1 because it is a ring.

select ST_IsRing(ln1)Is_it_a_ring
from ring_linestring

Is_it_a_ring
------------
f
t
f

3 record(s) selected.

ST_IsSimple

Returns t (TRUE) if the geometry object is simple; otherwise, it returns f (FALSE).

Syntax

ST_IsSimple (g1 ST_Geometry)

Return type

Boolean

Examples

The table issimple_test is created with two columns. The pid column is a smallint containing the unique identifier for each row. The g1 ST_Geometry column stores the simple and nonsimple geometry samples.

create table issimple_test (pid smallint, g1 ST_Geometry)

The INSERT statements insert two records into the issimple_test table. The first is a simple linestring because it doesn't intersect its interior. The second is nonsimple because it does intersect its interior.

insert into issimple_test values(
1, ST_LineFromText('linestring (10 10, 20 20, 30 30)',1)
)

insert into issimple_test values(
2,ST_LineFromText('linestring (10 10,20 20,20 30,10 30,10 20,
20 10)',1)
)

The query returns the results of the issimple function. The first record returns t because the linestring is simple, while the second record returns f because the linestring is not simple.

select ST_IsSimple(g1) Is_it_simple
from issimple_test

Is_it_simple
------------
t
f

ST_IsValid

ST_IsValid takes an ST_Geometry and returns t (TRUE) if it is valid, otherwise it returns f (FALSE). A geometry inserted into an Informix database with the Informix Spatial DataBlade registered, will always be valid because the Spatial DataBlade always validates spatial data before accepting it. Other DBMS vendors may not validate the input, but require the application to do so.

Syntax

ST_IsValid(g ST_Geometry)

Return Type

Boolean

Example

The valid_test table is created with the columns geotype and g1. The geotype column stores the name of the geometry subclass stored in the g1 geometry column.

CREATE TABLE valid_test (geotype varchar(20), g1 ST_Geometry)

The INSERT statements insert a sample subclass into the valid_test table.

INSERT INTO valid_test VALUES (
'Point', ST_PointFromText ('point (10.02 20.01)',1)
)

INSERT INTO valid_test VALUES (
'LineString',
ST_LineFromText('linestring(10.02 20.01,10.32 23.98,11.92 25.64)',1)
)

INSERT INTO valid_test VALUES (
'Polygon',ST_PolyFromText('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15,19.15 33.94,10.02 20.01))',1)
)

INSERT INTO valid_test VALUES (
'MultiPoint',ST_MPointFromText('multipoint (10.02 20.01,10.32 23.98,11.9225.64)',1)
)

INSERT INTO valid_test VALUES (
'MultiLineString',ST_MLineFromText('multilinestring ((10.02 20.01,10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)
)

INSERT INTO valid_test VALUES (
'MultiPolygon', ST_MPolyFromText ('multipolygon (((10.02 20.01,11.92 35.64,25.02 34.15,19.15 33.64,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,52.43 31.90,51.71 21.73)))',1)
)

The SELECT statement lists the subclass name stored in the geotype column with the dimension of that geotype.

GEOTYPE             Valid
------------------- -------------
Point                           t
Linestring                      t
Polygon                         t
MultiPoint                      t
MultiLineString                 t
MultiPolygon                    t

  6 record(s) selected.

ST_Length

Returns the length of a ST_LineStringor ST_MultiLinestring.

Syntax

length (ln1 ST_LineString)
length (mln1 ST_MultiLineString)

Return type

Double precision

Example

A local ecologist studying the migratory patterns of the salmon population in the county's waterways wants the length of all stream and river systems within the county.

The waterways table is created with the ID and name columns which identify each stream and river system stored in the table. The water column is a multilinestring because the river and stream systems are often an aggregate of several linestrings.

create table waterways (id integer, name varchar(128), water ST_MultiLineString);

The query returns the name of each system along with the length of the system generated by the length function.

select name, ST_Length(water) "Length"
from waterways;

The figure displays the river and stream systems that lie within the county boundary.

SE_LineFromShape

SE_LineFromShape takes a shape of type point and a spatial reference ID to return a ST_Linestring.

Syntax

SE_LineFromShape (s1 blob(1m),SRID integer)

Return type

ST_LineString

Example

This code fragment populates the sewerlines table with the unique ID, class,and geometry of each sewer line.

The sewerlines table is created with three columns. The first column, sewer_id,uniquely identifies each sewer line. The integer class column identifies the type of sewer line, generally associated with the line's capacity. The sewer ST_LineString column stores the sewer line geometry.

create table sewerlines ( sewer_id integer,
class integer,
sewer ST_LineString);

/* Create the SQL insert statement to populate the sewer_id, class, and the sewer ST_LineString. The question marks are parameter markers that indicate the sewer_id, class, and sewer geometry values that will be retrieved at runtime. */

strcpy(shp_sql,"insert into sewerlines (sewer_id,class,sewer) values(?,?,SE_LineFromShape(?,1))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQL statement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the
 integerkey value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&sewer_id, 0, &pcbvalue1);

/* Bind the
 integer class value to the second parameter. */
pcbvalue2 = 0;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&sewer_class, 0, &pcbvalue2);

/* Bind the
 shape tothe third parameter. */
pcbvalue3 = blob_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, sewer_shape, blob_len, &pcbvalue3);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

ST_LineFromText

ST_LineFromText takes a well-known text representation of type ST_LineString and a spatial reference ID and returns a ST_LineString.

Syntax

ST_LineFromText (WKT varchar(256), SRID integer)

Return type

ST_LineString

Example

The linestring_test table is created with a single ln1 ST_LineString column.

create table linestring_test (ln1 ST_LineString)

The INSERT statement inserts a ST_LineString into the ln1 column using the ST_LineFromText function.

insert into linestring_test values(
ST_LineFromText('linestring(10.01 20.03,20.94 21.34,35.93 19.04)',1)
)

ST_LineFromWKB

ST_LineFromWKB takes a well-known binary representation of type ST_LineString and a spatial reference ID, returning a ST_LineString.

Syntax

ST_LineFromWKB (wkb blob(1m), SRID integer)

Return type

ST_LineString

Example

This code fragment populates the sewerlines table with the unique ID, class, and geometry of each sewer line.

The sewerlines table is created with three columns. The first column, sewer_id, uniquely identifies each sewer line. The integer class column identifies the type of sewer line, generally associated with the line's capacity. The sewerline string column stores the sewer lines' geometries.

create table sewerlines (sewer_id integer,
class integer,
sewer ST_LineString);

/* Create the SQLinsert statement to populate the sewer_id, size class and
sewer linestring. The question marks are parameter markers that
indicate the sewer_id, class, and sewer geometry values that will be
retrieved at runtime. */

strcpy(wkb_sql,"insert into sewerlines (sewer_id,class,sewer) values(?,?,ST_LineFromWKB(?,1))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQL statement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind the
 integer sewer_id value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&sewer_id, 0, &pcbvalue1);

/* Bind the
 integer class value to the second parameter. */
pcbvalue2 = 0;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&sewer_class, 0, &pcbvalue2);

/* Bind the
 shape to the third parameter. */
pcbvalue3 = blob_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, sewer_wkb, blob_len, &pcbvalue3);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

SE_LocateAlong

SE_LocateAlong takes a geometry object and a measure to return as a ST_MultiPoint the set of points found at the measure.

Syntax

SE_LocateAlong(g1 ST_Geometry, m1 double precision)

Return type

ST_Geometry

Example

The locatealong_test table is created with two columns: the gid column uniquely identifies each row, and the g1 ST_Geometry column stores sample geometry.

create table locatealong_test (gid integer, g1 ST_Geometry)

The INSERT statements insert two rows. The first is a multilinestring, while the second is a multipoint.

insert into locatealong_test values(
1,
ST_MlineFromText('multilinestring m ((10.29 19.23 5,23.82 20.29 6,30.19 18.47 7,45.98 20.74 8),(23.82 20.29 6,30.98 23.98 7,42.92 25.98 8))', 1)
)

insert intolocatealong_test values(
2,
ST_MpointFromText('multipoint m (10.29 19.23 5,23.82 20.29 6,30.19 18.47 7,45.98 20.74 8,23.82 20.29 6,30.98 23.98 7,42.92 25.98 8)', 1)
)

In this query the SE_LocateAlong function finds points whose measure is 6.5. The first row returns a ST_MultiPoint containing two points. However, the second row returns an empty point. For linear features (geometry with a dimension greater than 0), SE_LocateAlong can interpolate the point, but for multipoints the target measure must match exactly.

select gid, SE_locatealong(g1,6.5)Geometry
from locatealong_test

GID Geometry
--------------------------------------------------------------------------
1 ST_MULTIPOINT M(27.01 19.38 6.5, 27.4 22.14 6.5)
2 ST_POINT EMPTY

2 record(s) selected.

In this query the locatealong function returns a multipoint for both rows. The target measure of 7 matches measures in the multilinestring and multipoint source data.

select gid,SE_LocateAlong(g1,7) Geometry
from locatealong_test

GID Geometry
-------------------------------------------------------------------------
1 ST_MULTIPOINT M (30.19 18.47 7, 30.98 23.98 7)
2 ST_MULTIPOINT M (30.19 18.47 7, 30.98 23.98 7)

2 record(s) selected.

SE_LocateBetween

SE_LocateBetween takes a ST_Geometry object and two measure locations and returns a ST_LineString that represents the set of disconnected paths between the two measure locations.

Syntax

SE_LocateBetween (g1 ST_Geometry, fm double precision, tm double precision)

Return type

ST_Geometry

Example

The locatebetween_test table is created with two columns: the gid integer column uniquely identifies each row, while the g1 ST_MultiLineString stores the sample geometry.

create table locatebetween_test (gid integer, g1 ST_Geometry)

The INSERT statements insert two rows into the locatebetween_test table. The first row is a ST_MultiLineString and the second is a ST_MultiPoint.

insert into locatebetween_test values(
1,
ST_MlineFromText('multilinestringm ((10.29 19.23 5,23.82 20.29 6, 30.19 18.47 7,45.98 20.74 8),(23.82 20.29 6,30.98 23.98 7,42.92 25.98 8))',1)
)

insert into locatebetween_test values(
2,
MpointFromText('multipointm (10.29 19.23 5,23.82 20.29 6,30.19 18.47 7,45.98 20.74 8,23.82 20.29 6,30.98 23.98 7,42.92 25.98 8)', 1)
)

The SE_LocateBetween function below locates measures lying between measures 6.5 and 7.5, inclusively. The first row returns a ST_Multilinestring containing several LineStrings. The second row returns a ST_MultiPoint because the source data was ST_MultiPoint. When the source data has a dimension of 0 (point or multipoint) an exact match is required.

select gid, SE_LocateBetween(g1,6.5,7.5)Geometry
from locatebetween_test

GID   Geometry
---- ------------------------------------------------------------------------
1    ST_ MULTILINESTRING M (27.01 19.38 6.5, 31.19 18.47 7, 38.09 19.61 7.5),
     (27.4 22.14 6.5, 30.98 23.98 7, 36.95 24.98 7.5)
2    ST_MULTIPOINT M(30.19 18.47 7, 30.98 23.98 7)

  2 record(s) selected.

SE_M

Returns the measure value of a point.

Syntax

SE_M (p1 ST_Point)

Return type

Double precision

Example

The m_test table is created with the gid integer column, which uniquely identifies the row, and the pt1 point column that stores the sample geometry.

create table m_test(gid integer, pt1 ST_Point)

The INSERT statements insert a point with measures and a point without measures.

insert into m_test values(
1,
ST_PointFromText('point(10.02 20.01)', 1)
)

insert into m_test values(
2,
ST_PointFromText('pointz m (10.02 20.01 5.0 7.0)', 1)
)

In this query the m function lists the measure values of the points. Because the first point doesn't have measures, the m function returns NULL.

select gid, (pt1) The_measure
from m_test

GID        The_measure
---------- ----------------------
1          -
2          +7.0E+000

  2 record(s) selected.

SE_MlineFromShape

SE_MlineFromShape creates a ST_MultiLineString from a multilinestring shape and a spatial reference ID.

Syntax

SE_MlineFromShape (s1 blob(1m), SRID integer)

Return type

ST_MultiLineString

Example

This code fragment populates the waterways table with a unique ID, a name, and a water multilinestring.

The waterways table is created with the ID and name columns that identify each stream and river system stored in the table. The water column is a ST_MultiLineString because the river and stream systems are often an aggregate of several linestrings.

create tablewaterways (id integer,
name varchar(128),
water ST_MultiLineString);

/* Create the SQLinsert statement to populate the id, name, and water. The question marks are parameter markers that
indicate the ID, name, and water values that will be retrieved at run time.*/

strcpy(shp_sql,"insert into waterways (id,name,water) values(?,?, ST_MlineFromShape(?,1))");
/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the
 integer ID value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&id, 0, &pcbvalue1);

/* Bind the
 varcharname value to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, name_len,0, name, name_len, &pcbvalue2);

/* Bind the
 shape tothe third parameter. */
pcbvalue3 = blob_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, water_shape, blob_len, &pcbvalue3);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

ST_MlineFromText

ST_MlineFromText takes a well-known text representation of type ST_MultiLineString and a spatial reference ID and returns a ST_MultiLineString.

Syntax

ST_MlineFromText(wktvarchar(255), SRID integer)

Return type

ST_MultiLineString

Example

The mlinestring_test is created with the gid smallint column that uniquely identifies the row and the ml1 ST_MultiLineString column.

create table mlinestring_test (gid smallint, ml1 ST_MultiLineString)

The INSERT statement inserts the ST_MultiLineString with the ST_MlineFromText function.

insert intomlinestring_test values(
1,
ST_MlineFromText
('multilinestring((10.01 20.03,10.52 40.11,30.29 41.56,
31.78 10.74),(20.93 20.81, 21.52 40.10))', 1)
)

ST_MlineFromWKB

ST_MLineFromWKB creates a ST_MultiLineString from a well-known binary representation of type ST_MultiLineString and a spatial reference ID.

Syntax

ST_MlineFromWKB(WKB blob(1m),SRID integer)

Return type

ST_MultiLineString

Example

This code fragment populates the waterways table with a unique ID, a name, and a water ST_MultiLineString.

The waterways table is created with the ID and name columns that identify each stream and river system stored in the table. The water column is a ST_MultiLineString because the river and stream systems are often an aggregate of several linestrings.

create table waterways (
id integer,
name varchar(128),
water ST_MultiLineString);

/* Create the SQLinsert statement to populate the integer, varchar, and
ST_Multilinestring. The question marks are parameter markers that
indicate the ID, name, and water values that will be retrieved at
run time. */
strcpy(shp_sql,"insert into waterways (id,name,water) values(?,?,ST_MlineFromWKB(?,1))");

/* Allocate memoryfor the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the
 integerid value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, 0, 0,&id, 0, &pcbvalue1);

/* Bind the
 varchar name value to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, name_len,0, name, name_len, &pcbvalue2);

/* Bind the
 shape to the third parameter. */
pcbvalue3 = blob_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, blob_len,0, water_shape, blob_len, &pcbvalue3);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

SE_MpointFromShape

SE_MpointFromShape takes a shape of type ST_MultiPoint and a spatial reference ID to return a ST_MultiPoint.

Syntax

SE_MpointFromShape (s1 blob(1m), SRID integer)

Return type

ST_MultiPoint

Example

This code fragment populates a biologist's species_sitings table.

The species_sitings table is created with three columns. The species and genus columns uniquely identify each row, while the sitings ST_MultiPoint stores the locations of the species sitings.

create table
 species_sitings (
species varchar(32),
genus varchar(32),
sitingsST_MultiPoint);

/* Create the SQLinsert statement to populate the species, genus, and
sitings. The question marks are parameter markers that indicate the ID,
name, and water values that will be retrieved at run time. */
strcpy(shp_sql,"insert into species_sitings (species,genus,sitings) values(?,?,SE_MpointFromShape(?,1))");

/* Allocate memory for the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the
 varchar species value to the first parameter. */
pcbvalue1 = species_len;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR,species_len, 0, species, species_len, &pcbvalue1);

/* Bind the
 varchar genus value to the second parameter. */
pcbvalue2 =genus_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, genus_len,0, name, genus_len, &pcbvalue2);

/* Bind the
 shape to the third parameter. */
pcbvalue3 = blob_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB,sitings_len, 0, sitings_shape, sitings_len, &pcbvalue3);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_MpointFromText

ST_MpointFromText creates a ST_Multipoint from a well-known text representation of type ST_MultiPoint and a spatial reference ID.

Syntax

ST_MpointFromText(WKT varchar(255), SRID integer)

Return type

ST_MultiPoint

Example

The multipoint_test table is created with the single ST_MultiPoint mpt1 column.

create table multipoint_test (mpt1 ST_MultiPoint)

The INSERT statement inserts a multipoint into the mpt1 column using the ST_MpointFromText function.

insert into multipoint_test values(
1,
ST_MpointFromText('multipoint(10.01 20.03,10.52 40.11,30.29 41.56,
31.78 10.74)',1)
)

ST_MpointFromWKB

ST_MpointFromWKB creates a ST_MultiPoint from a well-known binary representation of type ST_MultiPoint and a spatial reference ID.

Syntax

ST_MpointFromWKB (WKB blob(1m), SRID integer)

Return type

ST_MultiPoint

Example

This code fragment populates a biologist's species_sitings table.

The species_sitings table is created with three columns. The species and genus columns uniquely identify each row, while the sitings ST_MultiPoint stores the locations of the species sitings.

create table
 species_sitings (
species varchar(32),
genus varchar(32),
sitings ST_MultiPoint);

/* Create the SQLinsert statement to populate the species, genus, and
sitings. The question marks are parameter markers that
indicate the species,genus and sitings values that will be retrieved at
run time. */
strcpy(wkb_sql,"insert into species_sitings (species, genus, sitings) values(?,?,ST_MpointFromWKB(?,1))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare (hstmt,(unsigned char *)shp_sql, SQL_NTS);

/* Bind the varchar species value to the first parameter. */
pcbvalue1 =species_len;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR,species_len, 0, species, species_len, &pcbvalue1);

/* Bind the varchargenus value to the second parameter. */
pcbvalue2 =genus_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, genus_len,0, name, genus_len, &pcbvalue2);

/* Bind the shape tothe third parameter. */
pcbvalue3 =sitings_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB,sitings_len, 0, sitings_wkb, sitings_len, &pcbvalue3);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

SE_MpolyFromShape

SE_MpolyFromShape takes a shape of type multipolygon and a spatial reference ID to return a ST_MultiPolygon.

Syntax

SE_MpolyFromShape (s1 blob(1m), SRID integer)

Return type

ST_MultiPolygon

Example

This code fragment populates the lots table.

The lots table stores the lot_id, which uniquely identifies each lot, and the lot multipolygon that contains the lot line geometry.

create table lots (lot_id integer,
lot ST_MultiPolygon);

/* Create the SQLinsert statement to populate the lot_id and lot. The
question marks are parameter markers that indicate the lot_id and lot
values that will be retrieved at run time. */
strcpy(shp_sql,"insert into lots (lot_id,lot) values(?, SE_MpolyFromShape (?,1))");
/* Allocate memory forthe SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind the lot_id integer value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&lot_id, 0, &pcbvalue1);

/* Bind the lot shape to the second parameter. */
pcbvalue2 = lot_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, lot_len, 0,lot_shape, lot_len, &pcbvalue2);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_MpolyFromText

ST_MpolyFromText takes a well-known text representation of type ST_MultiPolygon and a spatial reference ID and returns a ST_MultiPolygon.

Syntax

ST_MpolyFromText (WKTvarchar(255), SRID integer)

Return type

ST_MultiPolygon

Example

The multipolygon_test table is created with the single ST_MultiPolygon mpl1 column.

create table multipolygon_test (mpl1 ST_MultiPolygon)

The INSERT statement inserts a ST_MultiPolygon into the mp11 column using the ST_MpolyFromText function.

insert into multipolygon_test values(
ST_MpolyFromText('multipolygon(((10.01 20.03,10.52 40.11,30.29 41.56,
31.78 10.74,10.01 20.03),(21.23 15.74,21.34 35.21,28.94 35.35,
29.02 16.83,21.23 15.74)),((40.91 10.92,40.56 20.19,50.01 21.12,
51.34 9.81,40.91 10.92)))',1)
)

ST_MpolyFromWKB

ST_MpolyFromWKB takes a well-known binary representation of type ST_MultiPolygon and a spatial reference ID to return a ST_MultiPolygon.

Syntax

ST_MpolyFromWKB (WKB blob(1m), SRID integer)

Return type

ST_MultiPolygon

Example

This code fragment populates the lots table.

The lots table stores the lot_id, which uniquely identifies each lot, and the lot multipolygon that contains the lot line geometry.

create table lots (
lot_id integer,
lot ST_MultiPolygon);

/* Create the SQL insert statement to populate the lot_id and lot. The
question marks are parameter markers that indicate the lot_id and lot
values that will be retrieved at run time. */
strcpy(wkb_sql,"insert into lots (lot_id,lot) values(?, ST_MpolyFromWKB (?,1))");

/* Allocate memory for the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind the
 lot_id integer value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&lot_id, 0, &pcbvalue1);

/* Bind the
 lot shape to the second parameter. */
pcbvalue2 = lot_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, lot_len, 0,lot_wkb, lot_len, &pcbvalue2);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_NumGeometries

ST_NumGeometries takes a collection and returns the number of geometries in the collection.

Syntax

ST_NumGeometries (mpt1 ST_MultiPoint)
ST_NumGeometries (mln1 ST_MultiLineString)
ST_NumGeometries (mpl1 ST_MultiPolygon)

Return type

Integer

Example

The city engineer needs to know the number of distinct buildings associated with each building footprint.

The building footprints are stored in the buildingfootprints table that was created with the following CREATE TABLE statement.

create table buildingfootprints (
building_id integer,
lot_id integer,
footprint ST_MultiPolygon);

The query lists the building_id that uniquely identifies each building and the number of buildings in each footprint with the ST_NumGeometries function.

select building_id, ST_NumGeometries(footprint)"Number of buildings"
from buildingfootprints;

ST_NumInteriorRing

ST_NumInteriorRing takes a ST_Polygon and returns the number of its interior rings.

Syntax

ST_NumInteriorRing (pl1 ST_Polygon)

Return type

Integer

Example

An ornithologist wishes to study a bird population on several south sea islands. She wants to identify which islands contain one or more lakes because the bird species she is interested in feeds only in freshwater lakes.

The ID and name columns of the islands table identifies each island while the land ST_Polygon column stores the island's geometry.

create table islands(
id integer,
name varchar(32),
land ST_Polygon);

Because interior rings represent the lakes, the ST_NumInteriorRing function will list only those islands that have at least one interior ring.

select name
from islands
where ST_NumInteriorRing(land)> 0;

ST_NumPoints

Returns the number of points in a ST_Geometry.

Syntax

ST_NumPoints(g1 ST_Geometry)

Return type

Integer

Example

The numpoints_test table is created with the geotype column, which contains the ST_Geometry type stored in the g1 geometry column.

create table numpoints_test (geotype varchar(12), g1 ST_Geometry)

The INSERT statements insert a point, a linestring, and a polygon.

insert into numpoints_test values(
'point',ST_PointFromText('point (10.02 20.01)',1)
)

insert into numpoints_test values(
'linestring',
ST_LineFromText('linestring(10.02 20.01, 23.73 21.92)',1)
)

insert into numpoints_test values(
'polygon',
ST_PolyFromText('polygon((10.02 20.01,23.73 21.92,24.51 12.98,
11.64 13.42,10.02 20.01))',1)
)

The query lists the geometry type and the number of points in each.

select geotype, ST_NumPoints(g1) Number_of_points
from numpoints_test

GEOTYPE     Number_of_points
----------- -----------------
point                       1
linestring                  2
polygon                     5

  3 record(s) selected.

ST_OrderingEquals

ST_OrderingEquals compares two geometries and t (TRUE) if the geometries are equal and the coordinates are in the same order; otherwise it returns f (FALSE).

Syntax

ST_OrderingEquals(g1 ST_Geometry, g2 ST_Geometry)

Return Type

Integer

Examples

The following CREATE TABLE statement creates the LINESTRING_TEST table, which has two ST_LineString columns L1 and L2.

CREATE TABLE LINESTRING_TEST (
lid integer,
ln1 ST_LineString,
ln2 ST_LineString);

The following INSERT statement inserts two ST_LineString into ln1 and ln2 that are equal and have the same coordinate ordering.

INSERT INTO LINESTRING_TEST VALUES (
1,
ST_LineFromText ('linestring(10.01 20.02, 21.50 12.10)',1),
ST_LineFromText ('linestring(10.01 20.02, 21.50 12.10)',1)
);

The following INSERT statement inserts two ST_LineStrings into ln1 and ln2 that are equal but do not have the same coordinate ordering.

INSERT INTO LINESTRING_TEST VALUES (
2,
ST_LineFromText ('linestring (10.01 20.02, 21.50 12.10)',1),
ST_LineFromText ('linestring (21.50 12.10, 10.01 20.02)',1)
);

The following SELECT statement and corresponding result set shows how the ST_Equals function returns t (TRUE) regardless of the order of the coordinates. The ST_OrderEquals function returns f (FALSE) if the geometries are not both equal and have the same coordinate ordering.

SELECT lid, ST_Equals(ln1, ln2) Equals, ST_OrderEquals(ln1,ln2) OrderEquals
FROM linestring_test;
lid Equals     OrderEquals
--- ---------- -----------
1   t          t
2   t          f

ST_Overlaps

ST_Overlaps takes two ST_Geometry objects and returns t (TRUE) if the intersection of the objects results in a ST_Geometry object of the same dimension but not equal to either source object; otherwise,it returns f (FALSE).

Syntax

ST_Overlaps (g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

The county supervisor needs a list of hazardous waste sites whose five-mile radius overlaps sensitive areas.

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' ST_Polygon geometries.

create table sensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

The hazardous_sites table stores the identity of the sites in the site_id and name columns, while the actual geographic location of each site is stored in the location point column.

create table hazardous_sites (
site_id integer,
name varchar(128),
location ST_Point);

The sensitive_areas and hazardous_sites tables are joined by the overlap function, which returns t (TRUE) for all sensitive_areas rows whose zone polygons overlap the buffered five-mile radius of the hazardous_sites location points.

select hs.name
from hazardous_sites hs, sensitive_areas sa
where ST_Overlaps(buffer(hs.location,(5* 5280)),sa.zone) = 't';

The hospital and the school overlap the five-mile radius of the county's two hazardous waste sites, while the nursing home does not.

ST_Perimeter

ST_Perimeter returns the perimeter of an ST_Surface or ST_MultiSurface.

Syntax

ST_Perimeter (s ST_Surface)
ST_Perimeter (ms ST_MultiSurface)

Return type

Double Precision

Examples

An ecologist studying shoreline birds needs to determine the shoreline for the lakes within a particular area. The lakes as stored as ST_Multipolygon in the WATERBODIES table was created with the following CREATE TABLE statement.

CREATE TABLE WATERBODIES (wbid integer, waterbody ST_MultiPolygon);

In the following SELECT statement, the ST_Perimeter function returns the perimeter surrounding each body of water, while the SUM function aggregates the perimeters to return their total.

SELECT SUM(ST_Perimeter(waterbody)) FROM waterbodies;

ST_Point

ST_Point returns an ST_Point, given an x-coordinate, y-coordinate, and spatial reference ID.

Syntax

ST_Point (X double Precision, Y Double Precision, SRID)

Return type

ST_Point

Examples

The following CREATE TABLE statement creates the POINT_TEST table, which has a single point column, PT1.

CREATE TABLE POINT_TEST (pt1 ST_Point)

The ST_Point function converts the point coordinates into a ST_Point geometry before the INSERT statement insert sit into the PT1 column.

INSERT INTO point_test VALUES (
ST_Point(10.01,20.03,1)
)

SE_PointFromShape

SE_PointFromShape creates a ST_Point from a shape of type point and a spatial reference ID.

Syntax

SE_PointFromShape(s1 blob(1m),SRID integer)

Return type

ST_Point

Example

The program fragment populates the hazardous_sites table.

The hazardous sites are stored in the hazardous_sites table created with the CREATE TABLE statement that follows. The location column, defined as a point, stores a location that is the geographic center of each hazardous site.

create table hazardous_sites (site_id integer,
name varchar(128),
location ST_Point);

/* Create the SQLinsert statement to populate the site_id, name, and
location. The question marks are parameter markers that indicate the
site_id, name, and location values that will be retrieved at run time. */
strcpy (shp_sql,"insertinto hazardous_sites (site_id, name, location) values(?,?, SE_PointFromShape(?,1))");

/* Allocate memory for the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind
 the site_idinteger value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&site_id, 0, &pcbvalue1);

/* Bind
 the namevarchar value to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, 0, 0, name,0, &pcbvalue2);

/* Bind
 the location shapeto the third parameter. */
pcbvalue3 =location_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB,location_len, 0, location_shape, location_len, &pcbvalue3);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

ST_PointFromText

ST_PointFromText takes a well-known text representation of type point and a spatial reference ID and returns a point.

Syntax

ST_PointFromText(WKTvarchar(255), SRID integer)

Return type

ST_Point

Example

The point_test table is created with the single ST_Point column pt1.

create table point_test (pt1 ST_Point)

The ST_PointFromText function converts the point text coordinates to the point format before the INSERT statement inserts the point into the pt1 column.

insert into point_test values(
ST_PointFromText('point(10.0120.03)', 1)
)

ST_PointFromWKB

ST_PointFromWKB takes a well-known binary representation of type ST_Point and a spatial reference ID to return a ST_Point.

Syntax

ST_PointFromWKB (WKB blob(1m), SRID integer)

Return type

ST_Point

Example

The program fragment populates the hazardous_sites table.

The hazardous sites are stored in the hazardous_sites table created with the CREATE TABLE statement that follows. The location column, defined as a point, stores a location that is the geographic center of each hazardous site.

create table hazardous_sites (site_id integer,
name varchar(128),
location ST_Point);

/* Create the SQLinsert statement to populate the site_id, name, and
location. The question marks are parameter markers that indicate the
site_id, name and location values that will be retrieved at run time. */
strcpy(wkb_sql,"insert into hazardous_sites (site_id, name, location)values(?,?,ST_PointFromWKB(?, 1))");

/* Allocate memory for the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind
 the site_idinteger value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&site_id, 0, &pcbvalue1);

/* Bind
 the name varcharvalue to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, 0, 0, name,0, &pcbvalue2);

/* Bind
 the locationshape to the third parameter. */
pcbvalue3 =location_len;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB,location_len, 0, location_wkb, location_len, &pcbvalue3);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_PointN

ST_PointN takes a ST_LineString and an integer index and returns a point that is the nth vertex in the ST_LineString's path.

Syntax

ST_PointN (ln1 ST_LineString,index integer)

Return type

ST_Point

Example

The pointn_test table is created with the gid column, which uniquely identifies each row, and the ln1 ST_LineString column.

create table pointn_test (gid integer, ln1 ST_LineString)

The INSERT statements insert two linestring values. The first linestring doesn't have Z coordinates or measures, while the second linestring has both.

insert into pointn_test values(
1,
ST_LineFromText('linestring(10.02 20.01,23.73 21.92,30.10 40.23)',1)
)

insert intopointn_test values(
2,
ST_LineFromText('linestringzm (10.02 20.01 5.0 7.0,23.73 21.92 6.5 7.1,30.10 40.23 6.9 7.2)',1)
)

The query lists the gid column and the second vertex of each linestring. The first row results in a ST_Point without a Z coordinate or measure, while the second row results in a ST_Point with a Z coordinate and a measure. The ST_PointN function will also include a Z coordinate or measure value if they exist in the source linestring.

select gid, pointn(ln1,2)The_2ndvertex
from pointn_test

GID The_2ndvertex
--- -------------------------------------------------------------------
1   ST_POINT (23.73 21.92)
2   ST_POINT ZM (23.73 21.92 7 7.1)

  2 record(s) selected.

ST_PointOnSurface

ST_PointOnSurface takes a ST_Polygon or ST_MultiPolygon and returns a ST_Point guaranteed to lie on its surface.

Syntax

ST_PointOnSurface (pl1 ST_Polygon)
ST_PointOnSurface (mpl1 ST_Multipolygon)

Return type

ST_Point

Example

The city engineer wishes to create a label point for each building's footprint.

The building footprints are stored in the buildingfootprints table that was created with the following CREATE TABLE statement.

create table buildingfootprints (
building_id integer,
lot_id integer,
footprint ST_MultiPolygon);

The ST_PointOnSurface function generates a point that is guaranteed to be on the surface of the buildingfootprints. The ST_PointOnSurface function returns a point that the SE_AsShape function converts to a shape for use by the application.

select SE_AsShape(ST_PointOnSurface(footprint))
from buildingfootprints;

SE_PolyFromShape

SE_PolyFromShape returns a ST_Polygon from a shape of type polygon and a spatial reference ID.

Syntax

SE_PolyFromShape(s1 blob(1m), SRID integer)

Return type

ST_Polygon

Example

The program fragment populates the sensitive_areas table. The question marks represent parameter markers for the ID, name, size, type, and zone values that will be retrieved at run time.

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' polygon geometries.

create tablesensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

/* Create the SQLinsert statement to populate the ID, name, size, type, and
zone. The question marks are parameter markers that indicate the
ID, name, size, type, and zone values that will be retrieved at run
time.*/

strcpy(shp_sql,"insert into sensitive_areas (id, name, size, type, zone)values(?,?,?,?,SE_PolyFromShape(?, 1))");

/* Allocate memory for the SQL statement handle and associate
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)shp_sql, SQL_NTS);

/* Bind
 the idinteger value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&site_id, 0, &pcbvalue1);

/* Bind
 the name varchar value to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, 0, 0, name,0, &pcbvalue2);

/* Bind
 the size float to the third parameter. */
pcbvalue3 = 0;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_FLOAT,
SQL_REAL, 0, 0,&size, 0, &pcbvalue3);

/* Bind
 the type varchar to the fourth parameter. */
pcbvalue4 = type_len;
rc = SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_VARCHAR,type_len, 0, type, type_len, &pcbvalue4);

/* Bind
 the zone polygon to the fifth parameter. */
pcbvalue5 = zone_len;
rc = SQLBindParameter(hstmt, 5, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, zone_len,0, zone_shp, zone_len, &pcbvalue5);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_PolyFromText

ST_PolyFromText takes a well-known text representation of type ST_Polygon and a spatial reference ID and returns a ST_Polygon.

Syntax

ST_PolyFromText(wkt varchar(255), SRID integer)

Return type

ST_Polygon

Example

The polygon_test table is created with the single polygon column.

create table polygon_test (pl1 ST_Polygon)

The INSERT statement inserts a polygon into the polygon column using the polyfromtext function.

insert into polygon_test values(
1,ST_PolyFromText('polygon((10.01 20.03,10.52 40.11,30.29 41.56,
31.78 10.74,10.01 20.03))',1)
)

ST_PolyFromWKB

ST_PolyFromWKB takes a well-known binary representation of type ST_Polygon and a spatial reference ID to return a ST_Polygon.

Syntax

ST_PolyFromWKB(wkb blob(1m), SRID integer)

Return type

ST_Polygon

Example

The program fragment populates the sensitive_areas table.

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' ST_Polygon geometries.

create tablesensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

/* Create the SQLinsert statement to populate the ID, name, size, type, and
zone. The question marks are parameter markers that indicate the id, name,
size, type, and zone values that will be retrieved at run time. */
strcpy(shp_wkb,"insert into sensitive_areas (id, name, size, type, zone)values(?,?,?,?,ST_PolyFromWKB(?, 1))");

/* Allocate memory for the SQL statement handle and associate the
statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind
 the id integer value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_INTEGER,
SQL_INTEGER, 0, 0,&id, 0, &pcbvalue1);

/* Bind
 the name varchar value to the second parameter. */
pcbvalue2 = name_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_CHAR, 0, 0, name,0, &pcbvalue2);

/* Bind
 the size float to the third parameter. */
pcbvalue3 = 0;
rc = SQLBindParameter(hstmt, 3, SQL_PARAM_INPUT, SQL_C_FLOAT,
SQL_REAL, 0, 0,&size, 0, &pcbvalue3);

/* Bind
 the type varchar to the fourth parameter. */
pcbvalue4 = type_len;
rc = SQLBindParameter(hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_VARCHAR,type_len, 0, type, type_len, &pcbvalue4);

/* Bind
 the zone polygon to the fifth parameter. */
pcbvalue5 = zone_len;
rc = SQLBindParameter(hstmt, 5, SQL_PARAM_INPUT, SQL_C_BINARY,
SQL_BLOB, zone_len,0, zone_wkb, zone_len, &pcbvalue5);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

ST_Polygon

ST_Polygon generates a ST_Polygon from a ring (a ST_linestring that is both simple and closed).

Syntax

ST_Polygon (ln ST_LineString)

Return Type

ST_Polygon

Examples

The following CREATE TABLE statement creates the POLYGON_TEST tables, which has a single column, P1.

CREATE TABLE POLYGON_TEST (p1 ST_polygon)

The INSERT statement converts a ring(a ST_LineString that is both closed and simple) into a ST_Polygon and inserts it into the P1 column using the ST_LineFromText function within the ST_Polygon function.

INSERT INTO POLYGON_TEST VALUES (
ST_Polygon(ST_LineFromText('linestring(10.01 20.03, 20.94 21.34, 35.93 10.04,10.01 20.03)'))
)

ST_Relate

ST_Relate compares two geometries and returns t (TRUE) if the geometries meet the conditions specified by the DE-9IM pattern matrix string; otherwise, f(FALSE) is returned.

Syntax

ST_Relate(g1 ST_Geometry, g2 ST_Geometry, patternMatrix String)

Return type

Boolean

Examples

A DE-9IM pattern matrix is a device for comparing geometries. These are serveral types of such matrices. There are several types of such matrices. For example, the equals pattern matrix will tell you if any two geometries are equal.

In this example, an equals pattern matrix, shown below is read left to right, and top to bottom into the string("T*F**FFF*").

 | b |
Interior | Boundary | Exterior

Next, the table RELATE_TEST is created with the following CREATE TABLE statement.

CREATE TABLE RELATE_TEST (g1 ST_Geometry, g2 ST_Geometry, g3 ST_Geometry);

The following INSERT statements insert a sample subclass into the RELATE_TEST table.

INSERT INTO RELATE_TEST VALUES (
ST_PointFromText('point(10.02 20.01)',1),
ST_PointFromText('point(10.02 20.01)',1),
ST_PointFromText('point(30.01 20.01)',1)
)

The following SELECT statement and the cooresponding result set lists the subclass name stored in the GEOTYPE column with the dimension of that geotype.

SELECT ST_relate(g1,g2) equals, st_relate(g1,g3) not_equals
FROM relate_test;

equals     not_equals
---------- -----------
t          t

  1 record(s) selected.

SE_ShapeToSQL

SE_ShapeToSQL constructs an ST_Geometry value given it's well-known binary representation and an SRID value of 0.

Syntax

SE_ShapeToSQL(ShapeGeometryString)

Return Type

ST_Geometry

Examples

The following C code fragment contains ODBC functions embedded with Informix Spatial DataBlade SQL functions that insert data into the LOTS table. The LOTS table was created with two columns: the lot_id, which uniquely identifies each lot, and the lot polygon column, which contains the geometry of each lot.

CREATE TABLE lots(lot_id integer,
                  lot ST_Multipolygon);

The ShapeToSQL function converts shapes into Informix SpatialBlade geometry. The entire INSERT statement is copied into shp_sql. The INSERT statement contains parameter markers to accept the LOT_ID and the lot data, dynamically.

Note: When the Informix Spatial DataBlade is installed the default 0 SRID was inserted into the sde.spatial_references table. The DBA can edit the values the 0 SRID if theywish to do so.

/* Create the SQLinsert statement to populate the lot id and the lot multipolygon. The question marks are parameter markers that indicate the lot_id and lot values that will be retrieved at run time. */

strcpy(shp_sql,"insert into lots (lot_id, lot) values(?, ShapeToSQL(?))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle,&hstmt);

/* Prepare the SQLstatement for execution. */
rc = SQLPrepare(hstmt, (unsigned char *) shp_sql, SQL_NTS);

/* Bind the
 integerkey value to the first parameter. */
pcbvalue = 0;
rc = SQLBindParameter(hstmt, 1 SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER,0,
 0, &lot_id, 0,&pcbvalue1);

/* Bind the
 shape thesecond parameter. */
pcbvalue2 = blob_len;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BLOB,blob_len,0,
 shape_blob,blob_len, &pcbvalue2);

/* Execute the insertstatement. */
rc = SQLExecute(hstmt);

ST_SRID

ST_SRID takes a geometry object and returns its spatial reference ID.

Syntax

ST_SRID(g1 ST_Geometry)

Return type

Integer

Example

During the installation of the Spatial DataBlade module the following spatial_references table is created by this CREATE TABLE statement.

create table sde.spatial_references(
srid         integer     not null,
description  varchar(64),
auth_name    varchar(255),
auth_srid    integer,
falsex       float       not null,
falsey       float       not null,
xyunits      float       not null,
falsez       float       not null,
zunits       float       not null,
falsem       float       not null,
munits       float       not null,
srtext       char(2048)  not null,
primary key (srid)constraint sde.sp_ref_pk
);

Before you can create geometry and insert it into a table you must enter the SRID of that geometry into the spatial_references table. This is a sample insert of a spatial reference system. The spatial reference system has an SRID value of 1, a false X,Y of(0,0), and its system units are 100. The Z coordinate and measure offsets are 0, while the Z coordinate and measure units are 1.

insert into spatial_references values(
1,
NULL,
NULL,
NULL,
0,
0,
100,
0,
1,
0,
1,
'UNKNOWN'
)

The following table is created:

create table srid_test(g1 geometry)

In the next statement a ST_Point geometry located at coordinate (10.01,50.76) is inserted into the geometry column g1. When the ST_Point geometry was created by the ST_PointFromText function it was assigned the SRID value of 1.

insert into srid_testvalues(
ST_PointFromText('point(10.01 50.76)',1)
)

The ST_SRID function returns the spatial reference ID of the geometry just entered.

select ST_SRID(g1) from srid_test

g1
--------------
1

ST_StartPoint

Returns the first point of a linestring.

Syntax

ST_StartPoint(ln1 ST_LineString)

Return type

ST_Point

Example

The startpoint_test table is created with the gid integer column, which uniquely identifies the rows of the table, and the ln1 ST_LineString column.

create table startpoint_test (gid integer, ln1 ST_LineString)

The INSERT statements insert the ST_LineStrings into the ln1 column. The first ST_LineString does not have Z coordinates or measures, while the second ST_LineString has both.

insert into start point_test values(
1,
ST_LineFromText('linestring(10.02 20.01,23.73 21.92,30.10 40.23)', 1)
)

insert into startpoint_test values(
2,
ST_LineFromText('linestring zm (10.02 20.01 5 7,23.73 21.92 6.5 7.1,30.10 40.23 6.9 7.2)', 1)
)

The ST_StartPoint function extracts the first point of each ST_LineString. The first point in the list doesn't have a Z coordinate or a measure, while the second point has both because the source linestring does.

select gid, ST_StartPoint(ln1)Startpoint
from startpoint_test

GID  Startpoint
---  ------------------------------------------------------------------
1    ST_POINT(10.02 20.01)
2    ST_POINT ZM(10.02 20.01 5 7)

2 record(s) selected.

ST_SymDifference

ST_SymDifference takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that aren't common to both.

Syntax

ST_SymDifference (g1 ST_Geometry,g2 ST_Geometry)

Return type

ST_Geometry

Example

For a special report, the county supervisor must determine the area of sensitive areas and five-mile hazardous site radii that aren't intersected.

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' ST_Polygon geometries.

create table sensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

The hazardous_sites table stores the identity of the sites in the site_id and name columns, while the actual geographic location of each site is stored in the location point column.

create table hazardous_sites (site_id integer,
name varchar(128),
location ST_Point);

The ST_Buffer function generates a five-mile buffer surrounding the hazardous waste site locations. The ST_SymDifference function returns the polygons of the buffered hazardous waste site polygons and the sensitive areas that don't intersect.

select sa.name,hs.name,
ST_Area(ST_SymmetricDiff(ST_buffer(hs.location,(5* 5280)), sa.zone)::st_multipolygon)
from hazardous_sites hs, sensitive_areas sa

The symmetric difference of the hazardous waste sites and the sensitive areas results in the subtraction of the intersected areas.

ST_Touches

ST_Touches returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise, it returns f (FALSE). At least one geometry must be a ST_Linestring, ST_Polygon, ST_Multilinestring, or ST_Multipolygon.

Syntax

ST_Touches (g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

The GIS technician has been asked by his boss to provide a list of all sewerlines whose endpoints intersect another sewer line.

The sewerlines table is created with three columns. The first column, sewer_id, uniquely identifies each sewer line. The integer class column identifies the type of sewer line, generally associated with the line's capacity. The sewer ST_Linestring column stores the sewerline's geometry.

create table sewerlines (sewer_id integer,
class integer,
sewer ST_LineString);

The query returns an ordered list of sewer_ids that touch one another.

select s1.sewer_id,s2.sewer_id
from sewerlines s1,sewerlines s2
where ST_Touches(s1.sewer,s2.sewer) = 't',
order by 1,2;

ST_Transform

ST_Transform transforms the ST_Geometry into the spatial reference specified by the Spatial Reference ID.

Syntax

ST_Transform(g ST_Geometry, SRID integer)

Return type

ST_Geometry

Example

The following CREATE TABLE statement creates the TRANSFORM_TEST table, which has two ST_LineString columns, ln1 and ln2.

CREATE TABLE TRANSFORM_TEST (ln1 ST_LineString, ln2 ST_LineString);

The following INSERT statement inserts a ST_LineString into ln1 with an SRID of 102.

INSERT INTO TRANSFORM_TEST VALUES (ST_LineFromText('linestring(10.01 40.03,92.32 29.39)',102),NULL);

The ST_Transform function converts the ST_LineString of ln1 from the coordinate reference assigned to SRID 102 to the coordinate reference assigned to SRID 105. The following UPDATE statement stores the transformed ST_LineString in column ln2.

UPDATE TRANSFORM_TEST SET ln2 = ST_Transform(ln1,105);

ST_Union

ST_Union returns a ST_Geometry object that is the union of two source objects.

Syntax

ST_Union(g1 ST_Geometry, g2 ST_Geometry)

Return type

ST_Geometry

Example

The sensitive_areas table contains several columns that describe the threatened institutions in addition to the zone column, which stores the institutions' ST_Polygon geometries.

create table sensitive_areas (id integer,
name varchar(128),
size float,
type varchar(10),
zone ST_Polygon);

The hazardous_sites table stores the identity of the sites in the site_id and name columns, while the actual geographic location of each site is stored in the location point column.

create table hazardous_sites (
site_id integer,
name varchar(128),
location ST_Point);

The ST_Buffer function generates a five-mile buffer surrounding the hazardous waste site locations. The ST_Union function generates polygons from the union of the buffered hazardous waste site polygons and the sensitive areas. The ST_Area function returns the unioned polygon's area.

select sa.name,hs.name,
ST_Area(ST_Union(ST_Buffer(hs.location,(5* 5280)), sa.zone)::st_multipolygon)
from hazardous_sites hs, sensitive_areas sa;

ST_Within

Returns t (TRUE) if the first object is completely within the second; otherwise, it returns f (FALSE).

Syntax

ST_Within(g1 ST_Geometry, g2 ST_Geometry)

Return type

Boolean

Example

In the example below two tables are created: one, buildingfootprints, contains a city's building footprints while the other, lots, contains its lots. The city engineer wants to make sure that all the building footprints are completely inside their lots.

In both tables the multipolygon datatype stores the ST_Geometry of the buildingfootprints and the lots. The database designer selected ST_Multipolygons for both features because she realizes a lot can be separated by a natural feature such as a river, and a building footprint can be made up of several buildings.

create table buildingfootprints (
building_id integer,
lot_id integer,
footprint ST_Multipolygon);

create table lots(lot_id integer,
lot ST_Multipolygon);

The city engineer first selects the buildings that are not completely within a lot.

select building_id
from buildingfootprints, lots
where ST_Within(footprint,lot)= 'f';

The city engineer realizes that although the first query will provide her with a list of all building_id that have footprints outside of a lot polygon, it won't tell her if the rest have the correct lot_id assigned to them. This second query performs a data integrity check on the lot_id column of the buildingfootprints table.

select bf.building_id "building id",
bf.lot_id "buildings lot_id",
lots.lot_id "lots lot_id"
from buildingfootprints bf, lots
where ST_Within(footprint,lot)= 't'
and lots.lot_id<>bf.lot_id;

ST_WKBToSQL

ST_WKBToSQL constructs a ST_Geometry value given its well-known binary representation and an SRID value of 0.

Syntax

ST_WKBToSQL(WKBGeometry Binary)

Return type

ST_Geometry

Examples

The following CREATE TABLE statement creates the LOTS table, which has two columns: the LOT_ID column which uniquely identifies each lot, and the LOT polygon column which contains the geometry of each lot.

CREATE TABLE lots(lot_id integer, lot ST_MultiPolygon);

The following C code fragment contains ODBC functions embedded with Informix Spatial DataBlade SQL functions that insert data into the LOTS table.

The ST_WKBToSQL function converts WKB representations into Informix Spatial DataBlade geometry using the 0 SRID. The entire INSERT statement is copied into the wkb_sql CHAR string. The INSERT statement contains parameter markers to accept the LOT_ID data and the LOT data, dynamically.

Note: When the Informix Spatial DataBlade is installed the default 0 SRID was inserted into the sde.spatial_references table. The DBA can edit the values the 0 SRID if they wish to do so.

/* Create the SQLinsert statement to populate the lot id and the lot multipolygon. The questionmarks (?) are parameter markers that indicate the lot_id and lot values that will retrieved at run time. */
strcpy (wkb_sql,"insert into lots (lot_id, lot)
values (?,ST_WKBToSQL(?))");

/* Allocate memory for the SQL statement handle and associate the statement handle with the connection handle. */
rc = SQLAllocStmt(handle, &hstmt);

/* Prepare the SQLstatement for execution */
rc = SQLPrepare(hstmt, (unsigned char *)wkb_sql, SQL_NTS);

/* Bind the integerkey value to the first parameter. */
pcbvalue1 = 0;
rc = SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER,0,
 0, &lot_id, 0,&pcbvalue1);

/* Bind the shape to the second parameter. */
pcbvalue2 = bloblen;
rc = SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_BLOB,blob_len,0,
 shape_blob,blob_len, &pcbvalue2);

/* Execute the insert statement. */
rc = SQLExecute(hstmt);

ST_WKTToSQL

ST_WKTToSQL constructs a ST_Geometry value given its well-known text representation and an SRID value of 0.

Syntax

ST_WKTToSQL (WKT Varchar(255))

Return type

ST_Geometry

Examples

The following CREATE TABLE statement creates the GEOMETRY_TEST table, which contains two columns: the GID column of type integer, which uniquely identifies each row, and the G1 column, which stores the geometry.

CREATE TABLE GEOMETRY_TEST (gid integer, g1 ST_Geometry)

The following INSERT statements insert the data into the GID and G1 columns of the GEOMETRY_TEST table. The ST_WKTToSQL function converts the text representation of each geometry into its corresponding Informix Spatial DataBlade instantiable subclass.

Note: When the Informix Spatial DataBlade is installed the default 0 SRID was inserted into the sde.spatial_references table. The DBA can edit the values the 0 SRID if they wish to do so.

INSERT INTO GEOMETRY_TEST VALUES(
1, ST_WKTToSQL('point(10.02 20.01)')
);

INSERT INTO GEOMETRY_TEST VALUES(
2,ST_WKTToSQL('linestring (10.02 20.01, 10.01 30.01, 10.01 40.01)')
);

INSERT INTO GEOMETRY_TESTVALUES(
3,ST_WKTToSQL('polygon ((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01))')
);

INSERT INTO GEOMETRY_TEST VALUES(
4,ST_WKTToSQL('multipoint (10.02 20.01, 10.32 23.98, 11.92 35.64)')
);

INSERT INTO GEOMETRY_TEST VALUES(
5, ST_WKTToSQL('multilinesting((10.02 20.01, 10.32 23.98, 11.92 25.64),(9.55 23.75, 15.36 30.11))')
);

INSERT INTO GEOMETRY_TEST VALUES(
6,ST_WKTToSQL('multipolygon (((10.02 20.01, 11.92 35.64, 25.02 34.15, 19.15 33.94, 10.02 20.01)),((51.71 21.73,73.36 27.04, 71.52 32.87, 52.43 31.90, 51.71 21.73)))')
);

ST_X

Returns the X coordinate of a point.

Syntax

ST_X(pt1 ST_Point)

Return type

Double precision

Example

The x_test table is created with two columns: the gid column, which uniquely identifies the row, and the pt1 point column.

create table x_test(gid integer, pt1 ST_Point)

The INSERT statements insert two rows. One is a point without a Z coordinate or a measure. The other column has both a Z coordinate and a measure.

insert into x_test values(
1,
ST_PointFromText('point(10.02 20.01)', 1)
)

insert into x_test values(
2,
ST_PointFromText('pointzm (10.02 20.01 5 7)', 1)
)

The query lists the gid column and the double-precision X coordinate of the points.
select gid, ST_X(pt1)"The X coordinate"
from x_test

GID  The X coordinate
---  --------------------------------
1    +1.00200000000000E+001
2    +1.00200000000000E+001

 2 record(s) selected.

ST_Y

Returns the Y coordinate of a point.

Syntax

ST_Y(p1 ST_Point)

Return type

Double precision

Example

The y_test table is created with two columns: the gid column, which uniquely identifies the row, and the pt1 point column.

create table y_test(gid integer, pt1 ST_Point)

The INSERT statements insert two rows. One is a point without a Z coordinate or a measure. The other has both a Z coordinate and a measure.

insert into y_test values(
1,
ST_PointFromText('point(10.02 20.01)', 1)
)
insert into y_testvalues(
2,
ST_PointFromText('pointzm (10.02 20.01 5.0 7.0)',1)
)

The query lists the gid column and the double-precision Y coordinate of the points.

select gid, ST_Y(pt1)"The Y coordinate"
from y_test

GID  The Y coordinate
---  --------------------------------
1    +2.00100000000000E+001
2    +2.00100000000000E+001

 2 record(s) selected.

SE_Z

Returns the Z coordinate of a point.

Syntax

SE_Z(p1 ST_Point)

Return type

Double precision

Example

The z_test table is created with two columns: the gid column, which uniquely identifies the row, and the pt1 point column.

create table z_test(gid integer, pt1 ST_Point)

The INSERT statements insert two rows. One is a point without a Z coordinate or a measure. The other has both a Z coordinate and a measure.

insert into z_test values(
1,
ST_PointFromText('point(10.02 20.01)', 1)
)

insert into z_test values(
2,
ST_PointFromText('pointzm (10.02 20.01 5.0 7.0)', 1)
)

The query lists the gid column and the double-precision Z coordinate of the points. The first row is NULL because the point does not have a Z coordinate.

select gid, SE_Z(pt1)"The Z coordinate"
from z_test

GID  The Z coordinate
---- -------------------------------
1    -
2    +5.00000000000000E+000

 2 record(s) selected.


Storage choices

ArcSDE manages the physical storage of geometry for features using standard data types provided by the host DBMS. Some DBMSs have spatial data types, while others provide standard binary or binary large object (BLOB) storage types. ArcSDE geometry storage is dependent on the DBMS you use. The following is a description of the options for each DBMS.

• ArcSDE compressed binary. This is stored as “long raw” in Oracle and as type “image” in SQL Server.

• Oracle Spatial normalized schema (relational model). In the normalized geometry schema, the coordinate values for a geometry are stored as DBMS numeric data types in a separate geometry table. Access to a geometry is through a foreign key—the Geometry ID, or GID. Only available if using Oracle, this data storage schema can result in multiple rows of data for a single geometry, depending on how many x,y points define the geometry (for example, the coast of Norway might occupy many rows). This implementation conforms to the normalized geometry model defined by the OpenGIS® Simple Features Specification for SQL.

Oracle Spatial geometry type. In this object-relational model, Oracle 8i extends the database model to include an SDO_GEOMETRY object in the Oracle DBMS.

• Oracle LOB data. LOB data is stored as type BLOB and is supported primarily to to support Oracle Replication Services.

• Spatial types. A spatial type embeds support for GIS feature geometry into the DBMS kernel. Some DBMS’s that support spatial types comply with the OpenGIS SQL specification for user defined types (UDT’s) and the ISO SQL Multimedia Spatial Standard. These standards define columns capable of storing spatial data such as the location of a landmark, a street, or a parcel of land. Use of these spatial types integrates geometry and nonspatial attributes providing a single point of access inside the DBMS through a SQL api. Informix and IBM DB2 support spatial types.

No matter what geometry storage type you use, an ArcSDE client application does not need to know what the geometry storage type is. In the case of Oracle, you can use any combination of available storage methods. You may choose to store a point layer as Oracle Spatial geometry types and a polygon layer as ArcSDE compressed binary. The decision on how to store your geometry will be based on the DBMS you use and other requirements specific to your implementation.

Details on these geometry storage types and how you can define the storage type before loading data can be found in the respective Configuation and Tuning Guides for each DBMS. Please check in your documentation folder for a pdf file of the form config_tuning_guide_<your dbms>.pdf.

This table summarizes the DBMS and geometry storage options available.

DBMS | GEOMETRY STORAGE | COLUMN TYPE
Oracle | ArcSDE Compressed Binary | Long Raw
 | LOB | Blob
 | Oracle Spatial - Geometry Type | SDO_GEOMETRY
 | Oracle Spatial - Normalized Schema | number
Microsoft SQL Server | ArcSDE Compressed Binary | Image
Informix | Spatial DataBlade - Geometry Object | ST_Geometry*
IBM DB2 | Spatial Extender - Geometry Object | ST_Geometry*

*ST_GEOMETRY is a super class of several subclasses (e.g.: ST_polygon)


Architecture

The impetus for the Projection Engine was to create a core engine to manage coordinate system creation and transformation. It’s designed to be integrated into applications. The API exposes all of the necessary data structures.

The core mathematics accepts points only, so feature managers are needed to manipulate the features. Solutions to problems such as closing features which have been ‘broken’ by crossing a projection horizon are maintained by the feature managers rather than the core engine.

Back to Projection Engine


Calculating geodetic distances

The nature of geographic and projected data makes it difficult to calculate accurate distances. If the data is in a geographic coordinate system, you have to work with spherical geometry. If the data is projected, the map projection has distorted the data. When you calculate distances on the globe, you’re interested in a geodesic—the shorted path between two points on a globe.

You can now calculate the geodetic distance between two points with pe_geodesic_distance. The function wants the ellipsoid parameters and the two points. It returns the distance and the azimuths between the two points. You can also find a point at a certain azimuth and within a certain distance with pe_geodesic_coordinate. Supply the original point, the azimuth and the distance. You can use pe_geodesic_coordinate to build buffers.

Back to Projection Engine


Changing coordinate systems

There are currently four functions for converting between coordinate systems:

pe_geog_to_proj
pe_proj_to_geog
pe_geog1_to_geog2
pe_geog2_to_geog1

The first two convert between a projected coordinate system and the geographic coordinate system upon which the projected coordinate system is based. For example, you can convert between a UTM zone based on WGS 1984 and the geographic coordinate system, WGS 1984.

PE_PROJCS utm17 = pe_factory(PE_PCS_WGS_1984_UTM_17N);

double pnt[2][2] = {{-82.75,40.92},{-82.12,41.82}};

int out = pe_geog_to_proj(utm17,2,pnt);

You don’t need to create the WGS84 geographic coordinate system because it’s inherent within the function. Because PE_PCS_WGS_1984_UTM_17N is based on the GCS WGS84, the input coordinates are assumed to be defined on WGS84. Let’s say you need to convert from UTM zone 14 on WGS84 to UTM zone 14 on NAD27. This requires three conversions: from UTM to geographic on WGS84, from WGS84 to NAD27 in geographic coordinates, and finally back to UTM on NAD27. Here’s an example using the user-defined geographic transformation from the previous section.

/* The datum parameters were defined earlier. */

PE_GEOGTRAN nad2wgs84_gl = pe_geogtran_new("NAD27_to_WGS84_GLakes", pe_factory(PE_GCS_NAD_1927), pe_factory(PE_GCS_WGS_1984), pe_factory(PE_MTH_COORDINATE_FRAME), gt_par);

PE_GEOGCS wgs84 = pe_factory(PE_GCS_WGS_1984);

PE_PROJCS utm14 = pe_factory(PE_PCS_NAD_1927_BLM_14N);

/* Spheroid heights are in meters. */

double h[2] = {351,378};

double pnt[2][2] = {{532819.1,5389211.4},{533920.6,5387755.9}};

int geog_84 = pe_proj_to_geog(wgs84,2,pnt);

/* Because the geogtran is defined from nad27 to wgs84, we need to use the function that changes the parameters appropriately to go from wgs84 to nad27. */

int geog_27 = pe_geog2_to_geog1(nad2wgs84_gl,2,pnt,h);

int out = pe_geog_to_proj(utm14,2,pnt);

Back to Projection Engine


Data model

The Projection Engine uses a model developed by POSC (Petrotechnical Open Software Corporation), a consortium of oil and gas companies, which simplifies the various pieces that compose a coordinate system. A related organization, EPGS (European Petroleum Survey Group), has compiled a large set of coordinate systems and the objects needed to define them. Each object has a unique integer code. For example, the code for international meters is 9001 while the WGS84 datum is 6326, and so on. A coordinate system will have a single ID. The Projection Engine uses the code to create a coordinate system object.

To ensure that the most recent version of the EPSG files are always available, the European Petroleum Survey Group has requested that only one site carry the files. The files are available in three different formats at

http://www.petroconsultants.com/products/geodetic.html

A coordinate system is an object composed of objects which are opaque pointers. A data set will be in either a geographic or a projected coordinate system. A geographic coordinate system (GCS) is in latitude–longitude coordinates. A GCS consists of a datum, a prime meridian and an angular unit of measure. The datum is in turn defined by the spheroid of the system. A projected coordinate system (PCS) is in XY coordinates. A PCS is defined by a GCS, a map projection, a linear unit of measure, and the map projection’s parameters. All predefined objects supported by the Projection Engine are located in the /include directory in the pedef.h file.

The Projection Engine’s data model where an object may include other objects.

Back to Projection Engine


Defining a geographic (datum) transformation

The Projection Engine has many predefined geographic transformations. If you need to convert between two datums with a predefined transformation, the easiest way is to use the predefined macro.

PE_GEOGTRAN nad27_to_wgs84 = pe_factory(PE_GT_NAD_1927_TO_WGS_1984_1);

You can also define your own transformation using a predefined method. Let’s say you have a very accurate set of parameters that convert between NAD 1927 and WGS 1984 in the Great Lakes region of the United States and Canada. The parameters (three translations, three rotations, and a scale difference) are

(-9.2, 158.7, 183.1, 0.382, -1.451, -0.720, 2.482)

The translations are always specified in meters, while the rotations are in decimal seconds. The scale difference is in parts per million (ppm).

The rotation values are defined for the Coordinate Frame method (see Chapter 2, ‘Coordinate system concepts’, for more information).

PE_PARAMETER gt_par[PE_PARM_MAX];

for (i=0; i < PE_PARM_MAX; i++)

{

 gt_par[i] = NULL;

}

gt_par[PE_PARM_DX] = pe_parameter_new("X_Axis_Translation", -9.2);

gt_par[PE_PARM_DY] = pe_parameter_new("Y_Axis_Translation", 158.7);

gt_par[PE_PARM_DZ] = pe_parameter_new("Z_Axis_Translation", 183.1);

gt_par[PE_PARM_RX] = pe_parameter_new("X_Axis_Rotation", 0.382);

gt_par[PE_PARM_RY] = pe_parameter_new("Y_Axis_Rotation", -1.451);

gt_par[PE_PARM_RZ] = pe_parameter_new("Z_Axis_Rotation", -0.720);

gt_par[PE_PARM_DS] = pe_parameter_new("Scale_Difference", 2.482);

PE_GEOGTRAN nad2wgs84_gl = pe_geogtran_new("NAD27_to_WGS84_GLakes", pe_factory(PE_GCS_NAD_1927), pe_factory(PE_GCS_WGS_1984), pe_factory(PE_MTH_COORDINATE_FRAME), gt_par);

Back to Projection Engine


Examples

Here you can see two examples of how to use the projection engine.

factory.c - The code in this example prints hte string representations of the Projection Engine's predefined objects. You can print all objects or a particular object such as units of measure.

pe_lcc.c - This example implements a map projection. It uses predefined macros and mathematical functions and shows how to deal with spherical and spheroid cases.

Back to Projection Engine


factory.c

The code in this example prints the string representations of the Projection Engine's predefined objects. You can print all objects or a particular object such as units of measure. The usage is

factory.c

The code in this example prints the string representations of the Projection Engine's predefined objects. You can print all objects or a particular object such as units of measure. The usage is

factory {-all|-u|-s|-d|-pm|-gcs|-prj|-mth|-par|-pcs|-gt}

/* -------------------------------------------------------------------------*/

/* Projection Engine Version 1.10                                           */

/* Copyright (C) 1996-1999 Environmental Systems Research Institute, Inc.   */

/* All rights reserved.                                                     */

/*                                                                          */

/*    factory.c prints the string representations of a predefined object.   */

/*                                                                          */

/*    The usage is                                                          */

/*                                                                          */

/*    factory {-all|-u|-s|-d|-pm|-gcs|-prj|-mth|-par|-pcs|-gt}              */

/*                                                                          */

/*    where                                                                 */

/*                                                                          */

/*    -all    print all predefined objects                                  */

/*    -u      units of measure                                              */

/*    -s      spheroids                                                     */

/*    -d      datums                                                        */

/*    -pm     prime meridians                                               */

/*    -gcs    geographic coordinate systems                                 */

/*    -prj    map projections                                               */

/*    -mth    methods                                                       */

/*    -par    parameters                                                    */

/*    -pcs    projected coordinate systems                                  */

/*    -gt     geographic (datum) transformations                            */

/*                                                                          */

/*                                                                          */

/*                                                                          */

/* -------------------------------------------------------------------------*/

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include "pe.h"

#include "pef.h"

#include "pedef.h"

#define NIL  ((void*)0)

int main(int argc, char *argv[])

{

   struct pe_struct_t *p = NIL;

   char   buffer[4096];

   int    i;

   int    u,s,d,pm,gcs,prj,mth,par,pcs,gt;

   char  *usage =

   "Usage: factory {-all|-u|-s|-d|-pm|-gcs|-prj|-mth|-par|-pcs|-gt}";

   fprintf(stderr,"%s\n",pe_version());

   if (argc != 2)

   {

      fprintf(stderr,"%s\n",usage);

      exit(EXIT_FAILURE);

   }

   /* Check the argument from the command line. */

   u = s = d = pm = gcs = prj = mth = par = pcs = gt = 0;

   if (0 == strcmp("-all",argv[1]))

   {

      u = s = d = pm = gcs = prj = mth = par = pcs = gt = 1;

   }

   else if (0 == strcmp("-u",argv[1]))

   {

      u = 1;

   }

   else if (0 == strcmp("-s",argv[1]))

   {

      s = 1;

   }

   else if (0 == strcmp("-d",argv[1]))

   {

      d = 1;

   }

   else if (0 == strcmp("-pm",argv[1]))

   {

      pm = 1;

   }

   else if (0 == strcmp("-gcs",argv[1]))

   {

      gcs = 1;

   }

   else if (0 == strcmp("-prj",argv[1]))

   {

      prj = 1;

   }

   else if (0 == strcmp("-mth",argv[1]))

   {

      mth = 1;

   }

   else if (0 == strcmp("-par",argv[1]))

   {

      par = 1;

   }

   else if (0 == strcmp("-pcs",argv[1]))

   {

      pcs = 1;

   }

   else if (0 == strcmp("-gt",argv[1]))

   {

      gt = 1;

   }

   else

   {

      fprintf(stderr,"%s\n",usage);

      exit(EXIT_FAILURE);

   }

   /* Generate the predefined objects with pe_factory. Check to see if the

      object should be printed with pe_<object>_p, and if TRUE, use

      pe_<object>_to_string to create the string representation. After the

      string is printed, delete the object with pe_<object>_del. */

   for (i = 1; i <= 209200; i++)

   {

      p = pe_factory(i);

      if (u && pe_unit_p(p))

      {

         pe_unit_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_unit_del(p);

         p = NIL;

         continue;

      }

      if (s && pe_spheroid_p(p))

      {

         pe_spheroid_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_spheroid_del(p);

         p = NIL;

         continue;

      }

      if (d && pe_datum_p(p))

      {

         pe_datum_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_datum_del(p);

         p = NIL;

         continue;

      }

      if (pm && pe_primem_p(p))

      {

         pe_primem_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_primem_del(p);

         p = NIL;

         continue;

      }

      if (gcs && pe_geogcs_p(p))

      {

         pe_geogcs_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_geogcs_del(p);

         p = NIL;

         continue;

      }

      if (prj && pe_projection_p(p))

      {

         pe_projection_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_projection_del(p);

         p = NIL;

         continue;

      }

      if (mth && pe_method_p(p))

      {

         pe_method_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_method_del(p);

         p = NIL;

         continue;

      }

      if (par && pe_parameter_p(p))

      {

         pe_parameter_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_parameter_del(p);

         p = NIL;

         continue;

      }

      if (pcs && pe_projcs_p(p))

      {

         pe_projcs_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_projcs_del(p);

         p = NIL;

         continue;

      }

      if (gt && pe_geogtran_p(p))

      {

         pe_geogtran_to_string(p,buffer);

         printf("%6d %s\n",i,buffer);

         pe_geogtran_del(p);

         p = NIL;

         continue;

      }

   }

   exit(EXIT_SUCCESS);

}

Back


Functions

The API generally uses the format pe_<object>_<action or object>. All objects have the same set of functions. You create a new object with the pe_<object>_new function. The pe_<object>_del function frees the memory held by an object. Many Projection Engine objects are composed of other objects. For example, a geographic coordinate system has a unit of measure. You can retrieve objects which are referenced by an object with pe_<object>_<object> (e.g., pe_geogcs_unit). To retrieve a string representation of an object, use pe_<object>_to_string. Conversely, the pe_<object>_from_string function can re-create an object from its string.

Available functions

Back to Projection Engine


Geometry Storage Options
ArcSDE manages the physical storage of geometry for features using standard data types provided by the host DBMS. Some DBMSs have spatial data types, while others provide standard binary or binary large object (BLOB) storage types. ArcSDE geometry storage is dependent on the DBMS you use. The following is a description of the options for each DBMS.

• ArcSDE compressed binary. This is stored as "long raw" in Oracle and as type "image" in SQL Server.

• Oracle Spatial geometry type. In this object-relational model, Oracle 8i extends the database model to include an SDO_GEOMETRY object in the Oracle DBMS.

• Oracle LOB data. LOB data is stored as type BLOB and is supported primarily to to support Oracle Replication Services.

• Oracle Spatial normalized schema (relational model). In the normalized geometry schema, the coordinate values for a geometry are stored as DBMS numeric data types in a separate geometry table. Access to a geometry is through a foreign key—the Geometry ID, or GID. Only available if using Oracle, this data storage schema can result in multiple rows of data for a single geometry, depending on how many x,y points define the geometry (for example, the coast of Norway might occupy many rows). This implementation conforms to the normalized geometry model defined by the OpenGIS® Simple Features Specification for SQL.

• Spatial types. A spatial type embeds support for GIS feature geometry into the DBMS kernel. Some DBMS's that support spatial types comply with the OpenGIS SQL specification for user defined types (UDT's) and the ISO SQL Multimedia Spatial Standard. These standards define columns capable of storing spatial data such as the location of a landmark, a street, or a parcel of land. Use of these spatial types integrates geometry and nonspatial attributes providing a single point of access inside the DBMS through a SQL api. Informix and IBM DB2 support spatial types.

No matter what geometry storage type you use, an ArcSDE client application does not need to know what the geometry storage type is. In the case of Oracle, you can use any combination of available storage methods. You may choose to store a point layer as Oracle Spatial geometry types and a polygon layer as long raw. The decision on how to store your geometry will be based on the DBMS you use and other requirements specific to your implementation.

DBMS | GEOMETRY STORAGE | COLUMN TYPE
ORACLE | ArcSDE Compressed Binary | Long Raw
 | LOB | BLOB
 | Oracle Spatial - Normalized | Number
 | Oracle Spatial - Geometry type | SDO_Geometry
Microsoft SQL Server | ArcSDE Compressed Binary | Image
IBM DB2 | Spatial Extender - Geometry Object | ST_Geometry*
Informix | Spatial DataBlade - Geometry Object | ST_Geometry*
This table summarizes the DBMS and geometry storage options available. *ST_GEOMETRY is a super class of several subclasses (e.g.: ST_polygon)


Locators

For information on locators, please see ArcSDE Online and browse through the C API concepts.


Macros

Besides the macros available for the many predefined objects, the Projection Engine provides several other macros for developers. Always use macros rather than actual array positions.

These are macros located in the pe.h and pedef.h files in the include directory:

PE_NAME_MAX Object names are limited to 64 characters.
PE_PARM_MAX Projection parameters are limited to 16.

Coordinates

PE_COORD_LAM Use this macro to access the longitude coordinate.
PE_COORD_LON Use this macro to access the longitude coordinate.
PE_COORD_PHI Use this macro to access the latitude coordinate.
PE_COORD_LAT Use this macro to access the latitude coordinate.

PE_COORD_X Use this macro to access the X coordinate.
PE_COORD_Y Use this macro to access the Y coordinate.

PE_COORD_H Use this macro to access the Z (height or depth) coordinate.

Spheroids

PE_SPH_A The semimajor axis of a spheroid.
PE_SPH_E2 The ellipticity of a spheroid.

Projection parameters

PE_PARM_X0 False easting.
PE_PARM_Y0 False northing.

PE_PARM_LAM0 Central meridian or longitude of origin.
PE_PARM_LON0 Longitude of origin or central meridian.
PE_PARM_LAMC Longitude of center.
PE_PARM_PHI0 Latitude of origin or central latitude.
PE_PARM_LAT0 Latitude of origin or central latitude.
PE_PARM_PHIC Latitude of center.

PE_PARM_LAM1 Longitude of first point.
PE_PARM_LON1 Longitude of first point.
PE_PARM_LAM2 Longitude of second point.
PE_PARM_LON2 Longitude of second point.

PE_PARM_PHI1 First standard parallel or latitude of first point.
PE_PARM_LAT1 First standard parallel or latitude of first point.
PE_PARM_PHI2 Second standard parallel or latitude of second point.
PE_PARM_LAT2 Second standard parallel or latitude of second point.

PE_PARM_K0 Scale factor.
PE_PARM_ALPHA Azimuth.

Geographic (datum) transformation parameters

PE_PARM_DX A translation along the X axis.
PE_PARM_DY A translation along the Y axis.
PE_PARM_DZ A translation along the Z axis.
PE_PARM_RX A rotation around the X axis.
PE_PARM_RY A rotation around the Y axis.
PE_PARM_RZ A rotation around the Z axis.
PE_PARM_DS A scale difference.
PE_PARM_ND Name of a dataset. Used for grid-based transformations.

Back to Projection Engine


Metadata

For information on metadata, please see ArcSDE Online and browse through the C API concepts.


Overview of coordinate systems

A part of what defines a data set is its coordinate system. A coordinate system includes such information as the unit of measure, the Earth model used, and sometimes, how the data was flattened.

A datum helps to define locations on the Earth’s surface in a three-dimensional coordinate system called a geographic coordinate system. A geographic coordinate system is defined by a datum, an angular unit of measure (usually either degrees or grads), and a prime meridian.

However, many analysis techniques and data are designed for two-dimensional or planar coordinates. Three-dimensional geographic data is converted to planar coordinates via a map projection. A map projection is a set of mathematical equations to convert from longitude and latitude (l,j) to planar coordinates (x,y). Converting from three to two dimensions causes distortions. A map projection is designed to minimize the distortion caused by flattening the Earth’s surface. A projected coordinate system consists of a linear unit of measure (usually meters or feet), a map projection, the specific parameters used by the map projection, and a geographic coordinate system.

Back to Projection Engine


pe_lcc.c

This example implements a map projection. It uses predefined macros and mathematical functions and shows how to deal with spherical and spheroidal cases.

/* -------------------------------------------------------------------------*/

/* Projection Engine Version 1.10                                           */

/* Copyright (C) 1996-1999 Environmental Systems Research Institute, Inc.   */

/* All rights reserved.                                                     */

/*                                                                          */

/* Illustrates developing a map projection including                        */

/*                                                                          */

/*        1. using the available macros                                     */

/*        2. defining the forward and inverse functions                     */

/*        3. making use of the available mathematical functions             */

/*                                                                          */

/* Lambert Conformal Conic is a widely used map projection suitable for     */

/* large scale mapping in the mid-latitudes.                                */

/*                                                                          */

/* Lambert actually has 2 cases--1 standard parallel and a scale factor     */

/*                               2 standard parallels                       */

/* -------------------------------------------------------------------------*/

#include <math.h>

#include "pe.h"

#include "pe_math.h"

#define EPS  3.55271367880050092935562E-15  /* 2^(-48) */

#define PI2  1.57079632679489661923132      /* pi/2    */

#define PI4  0.785398163397448309615661     /* pi/4    */

#define SGN(a,b)  (((b) >= 0) ? fabs(a) : -fabs(a))

#define SPHERE(e2) ((e2) < EPS)

/*

----------------------------------

LAMBERT CONFORMAL CONIC Projection

----------------------------------

Snyder, Voxland // An Album of Map Projections // pp. 95-98, 224.

Snyder // Map Projections -- a Working Manual // pp. 104-110.

*/

/*   Forward transformation function (geographic -> planar)     */

int pe_lambert_conformal_conic_fwd(double sph[2],

                                   double parm[PE_PARM_MAX],

                                   double coord[2])

{

   double a,e2;

   double lam0,phi1,phi2,phi0,k0;

   double phi,lam,x,y;

   double tt,t0,t1,t2,m1,m2,cphi1,cphi2,n,ff,rho0,rho,theta;

   /*   Spheroid: a  = semimajor axis

                  e2 = eccentricity squared   */

   a    = sph[PE_SPH_A];

   e2   = sph[PE_SPH_E2];

   /*   Parameters: lam0 = central meridian

                    phi1 = 1st standard parallel

                    phi2 = 2nd standard parallel

                    phi0 = latitude of origin

                    k0   = scale factor               */

   lam0 = parm[PE_PARM_LAM0];

   phi1 = parm[PE_PARM_PHI1];

   phi2 = parm[PE_PARM_PHI2];

   phi0 = parm[PE_PARM_PHI0];

   k0   = parm[PE_PARM_K0];

   /*   Coordinates: phi = latitude

                     lam = longitude relative to central meridian   */

   phi  = coord[PE_COORD_PHI];

   lam  = pe_delta(coord[PE_COORD_LAM] - lam0);

   if (SPHERE(e2))   /*   Forward: Spherical version   */

   {

      /*      Test for singularities at the poles      */

      if (pe_eq(fabs(phi),PI2))

      {

         /*         Adjust latitude near the poles     */

         phi = SGN(PI2*(1-EPS),phi);

      }

      cphi1 = cos(phi1);

      cphi2 = cos(phi2);

      t0 = tan(PI4 - phi0/2);

      t1 = tan(PI4 - phi1/2);

      t2 = tan(PI4 - phi2/2);

      tt = tan(PI4 - phi /2);

      if (pe_eq(phi1,phi2))      /*  One standard parallel case   */

      {

         n = sin(phi1);

      }

      else      /*  Two standard parallels case  */

      {

         n = (log(cphi1) - log(cphi2)) / (log(t1) - log(t2));

      }

      ff    = cphi1/(n*pow(t1,n));

      rho0  = a*ff*pow(t0,n);

      rho   = a*ff*pow(tt,n);

      theta = n*lam;

      /*      Planar coordinates      */

      x     = rho*sin(theta);

      y     = rho0 - rho*cos(theta);

   }

   else   /*   Forward: Spheroidal version   */

   {

      cphi1 = cos(phi1);

      cphi2 = cos(phi2);

      /*      Use conformal latitudes      */

      t0 = tan(PI4 - pe_phi_to_chi(e2,phi0)/2);

      t1 = tan(PI4 - pe_phi_to_chi(e2,phi1)/2);

      t2 = tan(PI4 - pe_phi_to_chi(e2,phi2)/2);

      tt = tan(PI4 - pe_phi_to_chi(e2,phi )/2);

      m1 = cphi1/pe_w(e2,phi1);

      m2 = cphi2/pe_w(e2,phi2);

      if (pe_eq(phi1,phi2))      /*  One standard parallel case  */

      {

         n = sin(phi1);

      }

      else         /*  Two standard parallels case  */

      {

         n = (log(m1) - log(m2)) / (log(t1) - log(t2));

      }

      ff    = m1/(n*pow(t1,n));

      rho0  = a*ff*pow(t0,n);

      rho   = a*ff*pow(tt,n);

      theta = n*lam;

      /*      Planar coordinates      */

      x     = rho*sin(theta);

      y     = rho0 - rho*cos(theta);

   }

   /*   Scale output planar coordinates   */

   coord[PE_COORD_X] = k0*x;

   coord[PE_COORD_Y] = k0*y;

   return 1;

}

/*      Inverse transformation function (planar -> geographic)     */

int pe_lambert_conformal_conic_inv(double sph[2],

                                   double parm[PE_PARM_MAX],

                                   double coord[2])

{

   double a,e2;

   double lam0,phi1,phi2,phi0,k0;

   double phi,lam,x,y;

   double tt,t0,t1,t2,m1,m2,cphi1,cphi2,n,ff,rho0,rho,theta,chi;

   /*   Spheroid: a  = semimajor axis

                  e2 = eccentricity squared   */

   a    = sph[PE_SPH_A];

   e2   = sph[PE_SPH_E2];

   /*   Parameters: lam0 = central meridian

               phi1 = 1st standard parallel

               phi2 = 2nd standard parallel

               phi0 = latitude of origin

               k0   = scale factor            */

   lam0 = parm[PE_PARM_LAM0];

   phi1 = parm[PE_PARM_PHI1];

   phi2 = parm[PE_PARM_PHI2];

   phi0 = parm[PE_PARM_PHI0];

   k0   = parm[PE_PARM_K0];

   /*   Scale input planar coordinates   */

   x    = coord[PE_COORD_X]/k0;

   y    = coord[PE_COORD_Y]/k0;

   if (SPHERE(e2))      /*   Inverse: Spherical version   */

   {

      cphi1 = cos(phi1);

      cphi2 = cos(phi2);

      t0 = tan(PI4 - phi0/2);

      t1 = tan(PI4 - phi1/2);

      t2 = tan(PI4 - phi2/2);

      if (pe_eq(phi1,phi2))      /*   One standard parallel case   */

      {

         n = sin(phi1);

      }

      else      /*   Two standard parallels case   */

      {

         n = (log(cphi1) - log(cphi2)) / (log(t1) - log(t2));

      }

      ff    = cphi1/(n*pow(t1,n));

      rho0  = a*ff*pow(t0,n);

      rho   = sqrt(x*x + (rho0-y)*(rho0-y));

      rho   = SGN(rho,n);

      theta = (n > 0) ? atan2(x,rho0-y) : atan2(-x,-rho0+y);

      tt    = pow(rho/(a*ff),1/n);

      /*      Geographic coordinates      */

      phi   = PI2 - 2*atan(tt);

      lam   = theta/n;

   }

   else   /*   Inverse: Spheroidal version   */

   {

      cphi1 = cos(phi1);

      cphi2 = cos(phi2);

      /*      Use conformal latitudes      */

      t0 = tan(PI4 - pe_phi_to_chi(e2,phi0)/2);

      t1 = tan(PI4 - pe_phi_to_chi(e2,phi1)/2);

      t2 = tan(PI4 - pe_phi_to_chi(e2,phi2)/2);

      m1 = cphi1/pe_w(e2,phi1);

      m2 = cphi2/pe_w(e2,phi2);

      if (pe_eq(phi1,phi2))

      /*     One standard parallel     */

      {

         n = sin(phi1);

      }

      else

      /*     Two standard parallels     */

      {

         n = (log(m1) - log(m2)) / (log(t1) - log(t2));

      }

      ff    = m1/(n*pow(t1,n));

      rho0  = a*ff*pow(t0,n);

      rho   = sqrt(x*x + (rho0-y)*(rho0-y));

      rho   = SGN(rho,n);

      theta = (n > 0) ? atan2(x,rho0-y) : atan2(-x,-rho0+y);

      tt    = pow(rho/(a*ff),1/n);

      chi   = PI2 - 2*atan(tt);

      /*  Geographic coordinates  (Use inverse conformal latitude)  */

      phi   = pe_chi_to_phi(e2,chi);

      lam   = theta/n;

   }

   /*  Adjust output geographic longitude relative to central meridian  */

   coord[PE_COORD_PHI] = phi;

   coord[PE_COORD_LAM] = pe_delta(lam + lam0);

   return 1;

}

Back


Using grid-based geographic transformations

Some countries like the United States and Canada use a grid-based geographic (datum) transformation method. A grid contains the differences (often in seconds) between two geographic coordinate systems. Grid-based methods can be very accurate because a grid can model small changes in the fit between the two geographic coordinate systems (GCS).

The grids can be quite large. To allow a platform- and software-independent implementation, we have defined a system environment variable, PEDATAHOME, for the grids’ location.

On UNIX:

setenv PEDATAHOME /path/to/the/grids(C shell) PEDATAHOME = /path/to/the/grids; export PEDATAHOME(Bourne shell)

On Windows NT:

set PEDATAHOME \path\to\the\grids

MapObjects 2.0 and ArcView Projection Utility in ArcView GIS 3.2 set PEDATAHOME to ‘C:\Program Files\Common Files\ESRI\PE_GRIDS’. If you've installed either software, check your environment to see if PEDATAHOME is already set.

Within the PEDATAHOME directory, we will add subdirectories to store the grid data as we add support. Currently, we support one grid type and method—the United States National Geodetic Survey (NGS) format. All NGS grids are available for download at ftp://ftp.ngs.noaa.gov/pub/pcsoft/nadcon/. NGS has grids to convert from NAD 1927 and other old datums to NAD 1983. We’ve grouped these into the ‘nadcon’ subdirectory. Any transformation actually needs two grids: one for latitude shifts and one for longitude shifts. Each has a ‘.las’ or a ‘.los’ extension. The nadcon files are

alaska   /* NAD27 - NAD83 shifts for Alaska */

conus    /* NAD27 - NAD83 shifts for the contiguous US (lower 48) */

hawaii   /* Old Hawaiian to NAD83 shifts */

prvi     /* NAD27 - NAD83 shift for Puerto Rico and Virgin Islands */

stgeorge /* Alaskan island datum to NAD83 shifts for St. George Island */

stlrnc   /* Alaskan island datum to NAD83 shifts for St. Lawrence Island */

stpaul   /* Alaskan island datum to NAD83 shifts for St. Paul Island */

Note Currently ArcSDE doesn't automatically install these grids.

NGS also provides high accuracy regional network (HARN) or high precision geodetic network (HPGN) grids. These are a more accurate redefinition of the NAD 1983 datum. Store these in the ‘harn’ subdirectory in PEDATAHOME. Here are a few examples.

alhpgn  /* HARN shifts for Alabama */

nehpgn  /* HARN shifts for New England states: Connecticut, Massachusetts, New Hampshire, Rhode Island, and Vermont */

ohhpgn  /* HARN shifts for Ohio */

Check pedef.h for the supported HARN states. Here’s an example that initializes the predefined HARN grid for Ohio.

PE_GEOGTRAN ohio_harn; ohio_harn = pe_factory_geogtran(PE_GT_NAD_1983_HARN_OH);

Canada has a similar method to NADCON called NTv2. Grid shift files contain the shifts between NAD 1927 and NAD 1983. One grid contains data for the entire country. Several main grids cover the entire country. These grids and higher density data for urban areas are integrated into one grid file. Australia and New Zealand have also released grids based on NTv2.

Within the ntv2 directory create directories called ‘australia‘, ‘canada‘, and ‘newzealand‘.

The grid for New Zealand converts between NZGD 1949 and NZGD 2000. More information and the grid is available at http://www.linz.govt.nz/services/surveysystem/osgpublications/nzgd2000_trans.html. The grid name is nzgd2kgrid0005.gsb.

The Australian grids convert between either AGD 1966 or AGD 1984 and GDA 1994. See http://www.anzlic.org.au/icsm/gdatm/chapter7.htm#high for more information and links to the grid files. Currently, the available grids include

nt_0599.gsb /* Northern Territory */

QLD0900.gsb /* Queensland */

SEAust_21_06_00.gsb /* Southeast Australia (New South Wales, Victoria, and ACT */

Tas_1098.gsb /* Tasmania*/

Vic_0799.gsb /* Victoria (released prior to the combined, Southeast grid */

WA_0700.gsb /* Western Australia */

Be careful to match the case exactly or use all lower-case letters in the grid names.

The Canadian grids convert between NAD 1927 or NAD 1927 (Definition 1976) and NAD 1983. The NAD 1927 (Definition 1976) coordinate system is a readjustment of NAD 1927 for Ontario. The grids are

Ntv2_0.gsb /* NAD 1927 to NAD 1983 */

May76v20.gsb /* NAD 1927 (Definition 1976) to NAD 1983 for Ontario */

If you do not already have these grids, you may purchase them from Natural Resources Canada. More information is at http://cgis.geod.nrcan.gc.ca/ with The English language fact sheet at http://cgis.geod.nrcan.gc.ca/products/html-public/GSDapps/English/NTv2_Fact_Sheet.html.

Using a new grid

You can use new state HARN grids. Add the two grids (.las and .los extensions) to the harn directory in PEDATAHOME. Let’s say the Ohio HARN data doesn’t have a predefined macro. Define the method, the from and to GCS, a parameter array, and a geographic transformation. Use pe_parameter_new to define the HARN grid. When defining a dataset location, use the prefix ‘dataset_’ and add the base grid name. If the grid name is ‘ohhpgn’, the full parameter name is ‘dataset_ohhpgn’. The location of the grid is defined by PEDATAHOME and the filename extensions are added automatically. Here’s an example.

int i;

PE_GEOGTRAN ohio_harn;

PE_GEOGCS nad83,nad83_harn;

PE_PARAMETER oh_par[PE_PARM_MAX];

PE_METHOD harnmeth;

harnmeth = pe_factory_method(PE_MTH_HARN);

nad83 = pe_factory_geogcs(PE_GCS_NAD_1983);

nad83_harn = pe_factory_geogcs(PE_GCS_NAD_1983_HARN);

for (i = 0; i < PE_PARM_MAX; i++)

{

 oh_par[i] = (PE_PARAMETER)0;

}

oh_par[PE_PARM_ND] = pe_parameter_new("dataset_ohhpgn",0.0);

ohio_harn = pe_geogtran_new("OHHARN",nad83,nad83_harn,harnmeth,oh_par);

To differentiate between data on NAD 1983 and data using a HARN definition, we added a GCS for HARN, PE_GCS_NAD_1983_HARN. You can create your own NADCON or HARN grid. You can convert any NGS grid to an ascii format with the NADGRD executable on the NGS website. Use that to define your own pair of grid shifts, use NADGRD to convert the files back to binary, and place them in the appropriate PEDATAHOME subdirectory.

Improving performance

Currently, the grids are accessed from disk. You can usually substantially improve performance by loading a grid into memory. After creating a geographic transformation object, use the pe_geogtran_load_constants function to attach the in-memory grid to the object. Grid sizes range from 2 kb for the smallest HARN grids to 12 mb for the Canada NTv2 grid. You can unload the grid from memory with pe_geogtran_unload_constants or check whether the grid is loaded with pe_geogtran_isconstloaded. When you destroy the geographic transformation, the grid is unloaded automatically.

PE_GEOGTRAN ohio_harn;

/* Create the geographic transformation object. */

ohio_harn = pe_factory_geogtran(PE_GT_NAD_1983_TO_HARN_OH);

/* Load the Ohio HARN grid into memory. */

pe_geogtran_load_constants(ohio_harn);

/* Do the transformation here. */

/* Delete the geogtran object. */

pe_geogtran_del(ohio_harn);

Back to Projection Engine


Using persistent user-defined objects

You can define persistent object definitions with the Projection Engine software without storing the string definitions after defining the coordinate system. You can also use this to updated or edit existing predefined objects. To allow a platform- and software-independent implementation, we have defined a system environment variable, PEOBJEDITHOME, to store the object definitions.

On UNIX:

setenv PEOBJEDITHOME /path/to/the/data (C shell) PEOBJEDITHOME = /path/to/the/data; export PEOBJEDITHOME (Bourne shell)

On Windows NT:

set PEOBJEDITHOME \path\to\the\data

Within the PEOBJEDITHOME directory, the object definitions are within a subdirectory called object_edits. Not all files must exist. If you don’t need to define or edit an object, don’t include the file. Use the file names

datum /* DATUM,code,"name",<spheroid_code> */

geogcs /* GEOGCS,code,"name",<datum_code>,<primem_code>,<unit_code> */

geogtran /* GEOGTRAN,code,"name",<gcs1_code>,<gcs2_code>,<method_code>, <parameter_code1>,<parameter_value1>,..., <parameter_codeN>,<parameter_valueN> */

primem /* PRIMEM,code,"name",<value> */

projcs /* PROJCS,code,"name",<gcs_code>,<projection_code>, <parameter_code1>,<parameter_value1,..., <parameter_codeN>,<parameter_valueN>,<unit_code> */

spheroid /* SPHEROID,code,"name",<semimajor axis>,<1/f> */

unit /* UNIT,code,"name",<value> */

Each file has a particular comma-delimited format. Don’t use commas in any numerical values. Just as when you define a coordinate system definition, you need to define any objects used by a higher level object. For example, if you want to define a geographic coordinate system, you may need to define the spheroid or datum if they aren’t predefined.

Because you define a code for each new object, you can use that code in your programs. Use codes in the 200000-299999 (or higher) range. EPGS reserves 1-32766. ESRI-defined objects are in the 32670-50000 and the 100000-199999 ranges. You must add 200000 to a standard code value when defining a new object. For example, predefined spheroids use 7001-7999. You must use 207001-207999 for enterprise-defined spheroids. If you use an existing code, your new definition will override the internal one. User-defined ranges are

Linear units 209000-209099

Angular units 209100-209199

Spheroids 207000-207999

Datums 206000-206999

Prime meridians 208900-208999

Geogcs 204000-204999

Projcs 202000-202999

Geogtran 208000-208399

Here are some examples. They would each be located in the appropriate file in the object_edits directory under PEOBJEDITHOME.

UNIT,209100,"my_feet",3.2808

UNIT,9003,"Survey_feet_modified",3.2808

UNIT,PE_U_FOOT_US,"Survey_foot_mod",3.2808

SPHEROID,207260,"my_spheroid",6378000,298.1

DATUM,206260,"my_datum",207260

DATUM,206261,"my_datum2",PE_S_BESSEL_NAMIBIA

PRIMEM,208901,"my_primem",-117.0

PRIMEM,PE_PM_STOCKHOLM,"Stockholm_new",18.0582

GEOGCS,204000,"my_gcs",206261,208901,9102

GEOGCS,204000,"my_gcs",206261,208901,PE_U_DEGREE

For any predefined object, you can use the code or the macro.

PROJCS,202000,”my_pcs”,204000,43004,3082,500000,3088,-112.0,9001

PROJCS,202000,”my_pcs”,204000,PE_PRJ_MERCATOR,PE_PAR_FALSE_NORTHING,500000,

      PE_PAR_FALSE_EASTING,200000,PE_PAR_CENTRAL_MERIDIAN,-112.0,PE_U_METER

GEOGTRAN,208004,”my_gt”,4267,4268,PE_MTH_COORDINATE_FRAME,PE_PAR_X_AXIS_TRANSLATION,328.4,PE_PAR_Y_AXIS_TRANSLATION,75.9,PE_PAR_Y_AXIS_TRANSLATION,31.6,PE_PAR_X_AXIS_ROTATION,3.6,PE_PAR_Y_AXIS_ROTATION,2.3,PE_PAR_Z_AXIS_ROTATION,4.7,PE_PAR_SCALE_FACTOR,1.4

Changing a low-level object like a unit of measure will affect any other objects that use the unit. For example, if you change the definition of a US survey foot (shown above), all NAD 1927 State Plane coordinate systems will be affected.

Note Although it’s easier to use the integer numbers for a predefined object, you should instead use the macros. Occasionally, the codes will change because of a conflict or an update by EPSG. The macros won’t change.

Back to Projection Engine


sde.version_user_ddl.create_version (Oracle 8i only)

Oracle: sde.version_user_ddl.create_version
SQL Server 2000: Not available

Create a new version as the child of another.

Usage syntax

CREATE PROCEDURE create_version ( parent_name IN version_util.version_name_t,

name IN OUT version_util.version_name_t,
name_rule IN PLS_INTEGER,
access IN PLS_INTEGER,
description IN VARCHAR2);

Parameters
parent_name | The name of an existing version to be the parent of the one created; if no owner name is prefixed, the current user is assumed to be the owner.
name | On input, the name of version to be created, on output, the name of the version as actually created. These will be different when a version that name already exists, and a name rule of C_generate_unique_name is specified.
name_rule | The rule used to determine the name to use, one of: sde.sde_user_ddl.C_generate_unique_name (1) sde.sde_user_ddl.C_take_name_as_given (2) If C_generate_unique_name is specified and a version with the specified name already exists, then a suffix will be added to make the version name unique.
access | If C_take_name_as_given is specified and a version with the specified name already exists, then an exception will be raised. sde.version_util.C_version_private (0) sde.version_util.C_version_public (1) sde.version_util.C_version_protected (2) Private versions can only be accessed by their owners, protected versions can only be written to by their owners, public versions are wide open.
description | The new version's description string.

Description

This procedure creates a new version as a child of an existing version. The initial state for the new version is that of the parent version at the time of creation.

Exceptions

Oracle Exceptions
-20025 | sde.sde_util.SE_NO_PERMISSIONS
-20049 | sde.sde_util.SE_LOCK_CONFLICT
-20066 | sde.sde_util.SE_INVALID_PARAM_VALUE
-20126 | sde.sde_util.SE_VERSION_NOEXIST
-20171 | sde.sde_util.SE_INVALID_VERSION_NAME
-20172 | sde.sde_util.SE_STATE_NOEXIST
-20298 | sde.sde_util.SE_INVALID_VERSION_ID

Notes

A shared auto-lock is placed on the parent version's state until the new version is created, to prevent a race condition where the parent version is read, then is deleted or has its state changed, and the state is deleted, then the new version is created pointing at a nonexistent state.


sde.version_user_ddl.delete_version (Oracle 8i only)

Oracle: sde.version_user_ddl.delete_version
SQL Server 2000: Not Available
Delete a version entry in the VERSIONS table.

Usage syntax

CREATE PROCEDURE delete_version (name IN version_util.version_name_t);

Parameters
name
The name of the version to be deleted. The name may be qualified by owner, and if not, default to the current user.

Description

This procedure deletes an existing version's definition, assuming that the current user is either the SDE user or the version's owner.

Exceptions
-20025
sde.sde_util.SE_NO_PERMISSIONS
-20126
sde.sde_util.SE_VERSION_NOEXIST
-20171
sde.sde_util.SE_INVALID_VERSION_NAME
-20175
sde.sde_util.SE_VERSION_HAS_CHILDREN

Notes

A shared auto-lock is placed on the parent version's state until the new version is created, to prevent a race condition where the parent version is read, then is deleted or has its state changed, and the state is deleted, then the new version is created pointing at a nonexistent state.


sde.version_user_ddl.edit_version (Oracle 8i only)

Oracle: sde.version_user_ddl.edit_version
SQL Server 2000: Not Available
Open or close a version for editing.

Usage syntax

CREATE PROCEDURE edit_version (name IN version_util.version_name_t,

edit_action IN PLS_INTEGER);

Parameters
name | The name of the version to be edited. The name may qualified by owner, and if not, default to the current user.
edit_action | Whether the specified version is to be opened for editing, or closed: sde.version_user_ddl.C_edit_action_open (1) sde.version_user_ddl.C_edit_action_close (2)

Description

This procedure takes a version, and either opens or closes it for editing. To open a version for editing, its underlying state is closed (if not already), a new child state is created, and the version is moved to that state. To close a version, its underlying state is closed.

Exceptions
-20025
sde.sde_util.SE_NO_PERMISSIONS
-20049
sde.sde_util.SE_LOCK_CONFLICT
-20066
sde.sde_util.SE_INVALID_PARAM_VALUE
-20126
sde.sde_util.SE_VERSION_NOEXIST
-20172
sde.sde_util.SE_STATE_NOEXIST
-20174
sde.sde_util.SE_VERSION_HAS_MOVED
-20176
sde.sde_util.SE_PARENT_NOT_CLOSED

Notes

Unless the current user is the SDE user, they may only edit a version that they own or that is public.


sde.version_util.set_current_version

Oracle: sde.version_util.set_current_version
SQL Server 2000: sde.sde.set_current_version

Set current multiversion view state by version name.

Usage syntax

CREATE PROCEDURE set_current_version (version_name IN version_name_t);

Parameters
version_name
The name of the version to use for querying and modifying multiversion tables via multiversion views. Names may qualified by owner, and if not, default to the current user.

Description

This procedure sets the current state used by multiversion views, using the supplied version's current state. If the version specified is protected, and the current user is neither the owner nor the SDE user, then multiversion views may be selected, but not modified.

Oracle Exceptions
-20025
sde.sde_util.SE_LOCK_CONFLICT
-20066
sde.sde_util.SE_NO_PERMISSIONS
-20172
sde.sde_util.SE_STATE_NOEXIST
-20126
sde.sde_util.SE_VERSION_NOEXIST
-20171
sde.sde_util.SE_INVALID_VERSION_NAME

SQL Server 2000 Exceptions
50025
sde.sde_util.SE_LOCK_CONFLICT
50066
sde.sde_util.SE_NO_PERMISSIONS
50172
sde.sde_util.SE_STATE_NOEXIST
50126
sde.sde_util.SE_VERSION_NOEXIST
50171
sde.sde_util.SE_INVALID_VERSION_NAME

Notes

If this procedure is not executed, then multiversion views will be set to the current state of the sde.DEFAULT version as of the time that the first view in the session is queried or modified. Once a state is set, either by default or with this procedure, it will not change during the current session unless this procedure is executed again, even if the state changes for the version set.


C and Java Function Tables

SQL construct functions

C | Java | Function Description
SE_sql_construct_alloc | SeSqlConstruct constructors | Allocates an SE_SQL_CONSTRUCT structure.
SE_sql_construct_free | NA | Frees an SE_SQL_CONSTRUCT structure.

Connection functions for Transactions

C | Java | Function Description
SE_connection_commit_transaction | SeConnection.commitTransaction | Commits a user transaction
SE_connection_rollback_transaction | SeConnection.rollbackTransaction | Rolls back a user transaction.
SE_connection_set_transaction_autocommit | SeConnection.setTransactionAutocommit | Sets the autocommit frequency.
SE_connection_start_transaction | SeConnection.startTransaction | Starts a user transaction.

Loginfo functions

C | Java | Function Description
SE_loginfo_create | SeLog constructor | Creates an SE_LOGINFO object
SE_loginfo_duplicate | SeLog.clone | Creates a copy of the SE_LOGINFO object
SE_loginfo_free | NA | Frees an SE_LOGINFO object.
SE_loginfo_free_list | NA | Frees a list of SE_LOGINFO objects.
SE_loginfo_get_id | SeLog.getId | Returns the ID of a logfile.
SE_loginfo_get_name | SeLog.getName | Returns the name of a logfile.
SE_loginfo_get_target_object | SeLog.getTargetInfo | Returns the layer or table that a logfile is based on.
SE_loginfo_is_persistent | SeLog.isPersistent | Returns TRUE if the logfile is persistent.
SE_loginfo_set_name | SeLog.setName | Sets the name of a logfile.
SE_loginfo_set_persistence | SeLog.setPersistence | Sets the persistence of a logfile.
SE_loginfo_set_target_object | SeLog.setTargetAsTable, SeLog.setTargetAsLayer | Sets the layer or table that a logfile is based on.

Logfile functions

C | Java | Function Description
SE_log_add_id | SeLog.addId | Adds a given row ID to a logfile.
SE_log_add_id_list | SeLog.addIds | Adds a list of row IDs to a logfile.
SE_log_alter | SeLog.alter | Changes a logfile’s attributes.
SE_log_calculate_extent | SeLog.calculateExtent | Gets the extent of all features referenced in a logfile.
SE_log_close | SeLog.close | Closes the specified logfile.
SE_log_combine | SeLog.combine | Combines two logfiles with a Boolean operation.
SE_log_copy | SeLog.copy | Copies one logfile to another.
SE_log_count | SeLog.count | Counts the number of rows referenced in a logfile.
SE_log_count_ids | SeLog.count | Counts the number of rows referenced in a logfile.
SE_log_create | SeLog.create | Creates the specified logfile.
SE_log_delete | SeLog.delete | Deletes the specified logfile.
SE_log_delete_id_list | SeLog.deleteIds | Deletes a list of row IDs from a logfile.
SE_log_get_by_name | SeLog constructor 2 | Returns information about a logfile.
SE_log_get_by_owner | SeConnection.getLogfileList | Returns a list of logfiles owned by a user.
SE_log_get_by_table | SeConnection.getLogfileList | Returns a list of logfiles based on a table.
SE_log_get_id_list | SeLog.getRowIds | Returns a list of row IDs from a logfile.
SE_log_get_open_log_info | SeLog constructor 3 | Returns a loginfo structure for an open logfile.
SE_log_grant_access | SeLog.grantAccess | Grants a user access to the owner's logfiles.
SE_log_make_name | SeLog.makeName | Generates a unique logfile name.
SE_log_open | Not Implemented | Obsolete. Opens a logfile for processing.
SE_log_open_log | SeLog.openLog | Opens a logfile for processing.
SE_log_revoke_access | SeLog.revokeAccess | Removes a user’s access to the owner’s logfiles.
SE_log_set_type | Not Implemented | Obsolete. Sets a logfile to persistent or temporary.
SE_log_sort | SeLog.sort | Sorts the specified logfile.

Stream Logfile functions

C | Java | Function Description
SE_stream_set_logfile | SeQuery.setLogfile | Enable autolog of IDs to logfile for a stream.
SE_stream_query_logfile | SeQuery.prepareQueryLogfile | Initiate a query using a logfile as a constraint.

Metadatainfo functions

C | Java | Function Description
SE_metadatainfo_create | SeMetadata constructors | Creates a metadata object.
SE_ metadatainfo_duplicate | SeMetadata.clone | Makes a copy of a metadata object.
SE_ metadatainfo_free | NA | Frees an allocated metadata object.
SE_metadatainfo_get_classname | SeMetadata.getClassName | Returns the class name for the supplied metadata object.
SE_ metadatainfo_get_date | SeMetadata.getDate | Returns the data for the supplied metadata object.
SE_metadatainfo_get_description | SeMetadata.getDescription | Returns the description of the metadata object.
SE_ metadatainfo_get_id | SeMetadata.getId | Returns the ID for the supplied metadata object.
SE_ metadatainfo_get_object_name | SeMetadata.getObjectName | Returns the object name for the supplied metadata object.
SE_ metadatainfo_get_object_owner | SeMetadata.getObjectOwner | Returns the description for the supplied metadata object.
SE_ metadatainfo_get_object_type | SeMetadata.getObjectType | Returns the object type for a metadata object.
SE_ metadatainfo_get_property | SeMetadata.getProperty | Returns the property of the supplied metadata object.
SE_ metadatainfo_get_value | SeMetadata.getValue | Returns the value for a metadata object.
SE_ metadatainfo_set_classname | SeMetadata.setClassName | Sets the class name for a meta data object.
SE_ metadatainfo_set_description | SeMetadata.setDescription | Sets the description of the meta data object.
SE_ metadatainfo_set_object_name | SeMetadata.setObjectName | Sets the object name for the supplied meta data object.
SE_ metadatainfo_set_object_type | SeMetadata.setObjectType | Sets the object type for a meta data object.
SE_ metadatainfo_set_property | SeMetadata.setProperty | Sets the property of the supplied meta data object.
SE_ metadatainfo_set_value | SeMetadata.setValue | Sets the value for a meta data object.

Meta-data functions

C | Java | Function Description
SE_metadata_free_info_list | NA | Frees a pointer to a list of metadata objects.
SE_metadata_get_info | SeMetaData constructor 3 | Returns a meta data entry.
SE_metadata_get_info_list | SeConnection.getMetaDataList | Returns a pointer to a list of meta data objects.
SE_table_metadata_add | SeTable.addMetaData | Adds meta-data to a table.
SE_table_metadata_alter | SeTable.alterMetaData | Changes the meta-data associated with a table.
SE_table_metadata_delete | SeTable.deleteMetaData | Removes meta-data from a table.
SE_table_metadata_delete_where | SeTable.deleteMetaDataByWhere | Removes meta-data from a table using a where clause.
SE_table_metadata_free_info_list | NA | Frees a list of meta-data.
SE_table_metadata_get_info_list | SeTable.getMetaDataInfoList | Returns a list of meta-data from a table.

Lock-related functions

C | Java | Function Description
SE_layer_free_lock | SeLayer.freeLock | Releases a lock placed on a layer.
SE_layer_free_locks | NA | Releases memory allocated for the list of locks returned by SE_layer_get_locks.
SE_layer_get_locks | SeLayer.getLocks | Retrieves information on the locks set on a layer.
SE_layer_lock | SeLayer.lock | Locks an entire layer.
SE_layer_lock_area | SeLayer.lockArea | Locks the specified area for a given layer.
SE_layer_modify_lock | SeLayer.modifyLock | Modifies an already established lock.

Locking Table Schema

C | Java | Function Description
SE_table_free_lock | SeTable.freeLock | Frees the locks on a table.
SE_table_free_locks | NA | Frees an array of SE_TABLE_LOCK objects.
SE_table_get_locks | SeTable.getLocks | Returns a list of locks on a table.
SE_table_lock | SeTable.lock | Locks a table.

Objectlockinfo functions

C | Java | Function Description
SE_objectlockinfo_create | SeObjectLock constructor | Creates an object lock definition.
SE_objectlockinfo_duplicate | SeObjectLock.clone | Copies a object lock definition.
SE_objectlockinfo_free | NA | Frees memory allocates for a object lock definition.
SE_objectlockinfo_get_lock_mode | SeObjectLock.getLockType | Retrieves the object lock mode.
SE_objectlockinfo_get_object_id | SeObjectLock.getObjectId | Retrieves the ID of an object lock.
SE_objectlockinfo_get_object_type | SeObjectLock.getObjectType | Retrieves the type of an object lock.
SE_objectlockinfo_get_owner | SeObjectLock.getOwner | Retrieves the owner.
SE_objectlockinfo_set_object_id | SeObjectLock.setObjectId | Sets the ID of an object lock.
SE_objectlockinfo_set_object_type | SeObjectLock.setObjectType | Sets the type of an object lock.

Objectlock functions

C | Java | Function Description
SE_objectlock_free_list | NA | Releases memory allocated for a list of object lock structures.
SE_objectlock_free_lock | NA | Releases memory allocated for a list of object lock structures.
SE_objectlock_get_list | SeObjectLock.getObjectLocksList | Retrieves an array of SE_OBJECTLOCKINFO structures for all accessible object locks.
SE_objectlock_lock | SeObjectLock.lock | Locks a object.

Functions for enabling rowlocks on registered table

C | Java | Function Description
SE_reginfo_allow_rowlocks | SeRegistration.allowRowlocks | See if a registered table is rowlock enabled.
SE_reginfo_set_rowid_column | SeRegistration.setRowIdColumnName | Sets registered table's row_id column name.
SE_reginfo_set_rowlocks | SeRegistration.setRowlocks | To enable or disable rowlocking on a registered table.

Table functions that manage rowlocking

C | Java | Function Description
SE_table_add_rowlocks | SeTable.addRowLocks | Adds an array of locks to the lock table.
SE_table_get_rowlocks | SeTable.getRowLocks | Return locks for a registered table as arrays of row_id and user_name.
SE_table_get_rowlocks_by_user | SeTable.getRowLocksByUser | Given user name, return locks for a registetered table as an array of row_id.
SE_table_free_rowlocks_list | NA | Free row_id and user_name arrays from SE_table_get_rowlocks_by_user or SE_table_get_rowlocks.
SE_table_remove_rowlocks | SeTable.removeRowLocks | Removes an array of locks from the lock table.

Stream function to initiates rowlocking

C | Java | Function Description
SE_stream_set_rowlocking | SeQuery.setRowLocking (SeInsert.setRowLocking, SeUpdate.setRowLocking, SeDelete.setRowLocking) | Sets the rowlocking environment as a constraint on an ArcSDE stream.

Table functions

C | Java | Function Description
SE_table_add_column | SeTable.addColumn | Adds a new column to a table.
SE_table_add_locator | Not Implemented | Adds a locator to a table.
SE_table_add_rowlocks | SeTable.addRowLocks | Adds row locks to a table.
SE_table_calculate_stats | SeTable.calculateStats | Generates statistics for a table.
SE_table_create | SeTable.create | Creates a DBMS table.
SE_table_create_index | SeTable.createIndex | Creates a DBMS index.
SE_table_create_indexes | SeTable.createIndexes | Creates DBMS indexes.
SE_table_create_mw_view | SeTable.createMultiVersionView | Creates a multiversion table view.
SE_table_create_view | SeTable.createView | Creates a table view.
SE_table_delete | SeTable.delete | Drops a DBMS table.
SE_table_delete_constraint | SeTable.deleteConstraint | Deletes the named constraint from the specified table.
SE_table_delete_index | SeTable.deleteIndex | Drops a DBMS index.
SE_table_delete_mv_view | SeTable.deleteMultiVersionView | Deletes a multiversion table view.
SE_table_delete_locator | Not Implemented | Deletes a locator from a table.
SE_table_describe | SeTable.describe | Returns the column definitions of a DBMS table.
SE_table_describe_indexes | SeTable.describeIndexes | Returns the index definitions of a DBMS table.
SE_table_drop_column | SeTable.dropColumn | Deletes a column from a table.
SE_table_free_descriptions | NA | Frees column description resources allocated by SE_table_describe.
SE_table_free_index_descriptions | NA | Frees index descriptions allocated by SE_table_describe_indexes.
SE_table_free_list | NA | Frees an array of table names allocated from SE_table_list.
SE_table_free_lock | SeTable.freeLock | Frees the locks on a table.
SE_table_free_locks | NA | Frees an array of locks.
SE_table_free_rowlocks_list | NA | Frees an array of rowlock IDs.
SE_table_free_stats | NA | Releases the memory used by an SE_STATS structure.
SE_table_get_locator | Not Implemented | Returns the locator IDs for a table.
SE_table_get_locks | SeTable.getLocks | Returns a list of locks on a table.
SE_table_get_permissions | SeTable.getPermissions | Returns the permissions for a given table.
SE_table_get_rowlocks | SeTable.getRowLocks | Returns the row locks on a table.
SE_table_get_rowlocks_by_user | SeTable.getRowLocksByUser | Returns the row locks on a table set by a user.
SE_table_grant_access | SeTable.grantAccess | Grants a user access to a given table.
SE_table_list | SeConnection.getTables, SeConnection.getList(SeTable.class) | Generates a list of tables with the given permissions.
SE_table_lock | SeTable.lock | Locks a table.
SE_table_make_qualified_name | SeTable constructors, SeTable.getQualifiedName | Constructs a qualified name for a specific RDBMS.
SE_table_metadata_add | SeTable.addMetaData | Adds meta-data to a table.
SE_table_metadata_alter | SeTable.alterMetaData | Changes the meta-data associated with a table.
SE_table_metadata_delete | SeTable.deleteMetaData | Removes meta-data from a table.
SE_table_metadata_delete_where | SeTable.deleteMetaDataByWhere | Removes meta-data from a table using a where clause.
SE_table_metadata_free_info_list | NA | Frees a list of meta-data.
SE_table_metadata_get_info_list | SeTable.getMetaDataInfoList | Returns a list of meta-data from a table.
SE_table_parse_qualified_name | SeTable constructors, SeTable.getDatabase, SeTable.getOwner, SeTable.getName | Parses a qualified name for a DBMS.
SE_table_remove_rowlocks | SeTable.removeRowLocks | Removes row locks from a table.
SE_table_rename | SeTable.rename | Changes the name of a table.
SE_table_revoke_access | SeTable.revokeAccess | Removes a user's access to a given table.
SE_table_truncate | SeTable.truncate | Deletes the data from a table but keeps the table definition.
SE_table_update_dbms_stats | SeTable.updateDBMSStats | Updates the DBMS statistics for a given table.

Layerinfo functions

C | Java | Function Description
SE_layerinfo_create | SeLayer constructors | Creates an SE_LAYERINFO structure.
SE_layerinfo_duplicate | SeLayer.clone | Copies an SE_LAYERINFO structure.
SE_layerinfo_free | NA | Releases memory allocated for an SE_LAYERINFO structure.
SE_layerinfo_get_access | SeLayer.getAccess | Retrieves the privileges for the specified layer.
SE_layerinfo_get_array_size | SeLayer.getArraySize | Retrieves the optimal array size for the specified layer.
SE_layerinfo_get_coordref | SeLayer.getCoordRef | Retrieves the coordinate reference for the specified layer.
SE_layerinfo_get_creation_date | SeLayer.getCreationDate | Retrieves the layer creation date.
SE_layerinfo_get_creation_keyword | SeLayer.getCreationKeyword | Retrieves the configuration keyword.
SE_layerinfo_get_description | SeLayer.getDescription | Retrieves the layer’s description.
SE_layerinfo_get_envelope | SeLayer.getExtent | Retrieves the layer’s envelope.
SE_layerinfo_get_grid_sizes | SeLayer.getGridSizes | Retrieves the spatial index grid sizes of the layer.
SE_layerinfo_get_id | SeLayer.getID | Retrieves the layer ID.
SE_layerinfo_get_minimum_id | SeLayer.getMinID | Retrieves the minimum FID value.
SE_layerinfo_get_shape_types | SeLayer.getShapeTypes | Retrieves the allowed shape types.
SE_layerinfo_get_spatial_column | SeLayer.getSpatialColumn | Retrieves the table and column name of the layer.
SE_layerinfo_get_spatial_index | SeLayer.getSpatialIndex | Returns the layer’s spatial index type and it’s index parameters setting.
SE_layerinfo_get_storage_type | SeLayer.getStorageType | Returns the layer's storage type.
SE_layerinfo_has_anno | SeLayer.hasAnno | Returns TRUE if the layer allows annotations.
SE_layerinfo_has_cad | SeLayer.hasCAD | Returns TRUE if the layer allows CAD entities.
SE_layerinfo_has_spatial_index | SeLayer.hasSpatialIndex | Returns TRUE if the layer has a spatial index.
SE_layerinfo_is_in_load_mode | SeLayer.isLoadOnly | Returns TRUE if the layer is in load-only mode.
SE_layerinfo_is_measured | SeLayer.isMeasured | Returns TRUE if the layer allows measures.
SE_layerinfo_is_storage_normalized | SeLayer.isStorageNormalized | Returns TRUE if the layer's storage type is normalized.
SE_layerinfo_is_storage_sdebinary | SeLayer.isStorageSdeBinary | Returns TRUE if the layer's storage type is the ArcSDE binary format.
SE_layerinfo_is_storage_sql | SeLayer.isStorageSQL | Returns TRUE if the layer's storage type is SQL or well-known text.
SE_layerinfo_is_storage_wkb | SeLayer.isStorageWKB | Returns TRUE if the layer's storage type is well-known binary.
SE_layerinfo_is_3D | SeLayer.is3D | Returns TRUE if the layer allows z-coordinates.
SE_layerinfo_set_anno | SeLayer.setAnno | Sets whether the layer allows annotations.
SE_layerinfo_set_array_size | SeLayer.setArraySize | Sets the optimal array size for the specified layer.
SE_layerinfo_set_cad | SeLayer.setCAD | Sets whether the layer allows CAD entities.
SE_layerinfo_set_coordref | SeLayer.setCoordRef | Sets the coordinate reference for the specified layer.
SE_layerinfo_set_creation_keyword | SeLayer.setCreationKeyword | Sets the configuration keyword.
SE_layerinfo_set_description | SeLayer.setDescription | Sets the layer’s description.
SE_layerinfo_set_envelope | SeLayer.setExtent | Sets the layer’s envelope.
SE_layerinfo_set_grid_sizes | SeLayer.setGridSizes | Sets the spatial index grid sizes of the layer.
SE_layerinfo_set_load_mode | SeLayer.setLoadMode | Sets the layer to either load-only or normal I/O mode.
SE_layerinfo_set_measured | SeLayer.setMeasured | Updates whether the layer allows measures.
SE_layerinfo_set_minimum_id | SeLayer.setMinID | Sets the minimum FID value.
SE_layerinfo_set_shape_types | SeLayer.setShapeTypes | Sets the allowed shape types.
SE_layerinfo_set_spatial_column | SeLayer.setSpatialColumnName | Sets the spatial column name of the layer.
SE_layerinfo_set_spatial_index | SeLayer.setSpatialIndex | Sets the spatial index type.
SE_layerinfo_set_storage_type | SeLayer.setStorageTypes | Sets the layer's storage type.
SE_layerinfo_set_3D | SeLayer.set3D | Updates whether the layer allows z-coordinates.

Layer functions

C | Java | Function Description
SE_layer_alter | SeLayer.alter | Changes a layer's characteristics.
SE_layer_calculate_extent | SeLayer.calculateExtent | Returns the extent of the features in the layer.
SE_layer_create | SeLayer.create | Spatially enables an existing table.
SE_layer_delete | SeLayer.delete | Deletes a layer.
SE_layer_free_info_list | NA | Releases memory allocated for a list of layer structures.
SE_layer_free_lock | SeLayer.freeLock | Releases the locks placed on a layer.
SE_layer_free_locks | NA | Releases memory allocated for the list of locks returned by SE_layer_get_locks.
SE_layer_get_info | SeLayer.getInfo | Retrieves information about the specified table and column.
SE_layer_get_info_by_id | SeLayer constructor 2 | Retrieves information about the specified layer by ID.
SE_layer_get_info_list | SeConnection.getList(SeLayer.class), SeConnection.getLayers | Returns an array of SE_LAYERINFO pointers for all layers.
SE_layer_get_locks | SeLayer.getLocks | Retrieves information on the locks set on a layer.
SE_layer_get_si_statistics | SeLayer.getSpatialIndexStats | Retrieves information on the spatial index grids.
SE_layer_get_statistics | SeLayer.getStatistics | Retrieves statistical information on a layer.
SE_layer_grant_access | SeLayer.grantAccess | Allows layer owner to grant privileges to other users.
SE_layer_lock | SeLayer.lock | Locks an entire layer.
SE_layer_lock_area | SeLayer.lockArea | Locks the specified area for a given layer.
SE_layer_modify_lock | SeLayer.modifyLock | Modifies an already established lock.
SE_layer_revoke_access | SeLayer.revokeAccess | Allows layer owner to revoke privileges for other users.
SE_layer_shape_attribute_name | SeLayer.getShapeAttributeName | Returns a column name for a specified shape attribute.
SE_layer_truncate | SeLayer.truncate | Removes spatial data from a table.

Registration functions

C | Java | Function Description
SE_registration_alter | SeRegistration.alter | Changes a registration entry.
SE_registration_create | SeRegistration.create | Creates a new registration entry.
SE_registration_delete | SeRegistration.delete | Deletes a registration entry.
SE_registration_free_info_list | NA | Releases memory allocated for a list of registrations.
SE_registration_get_difference_list | SeRegistration.getDifferenceList | Retrieves an array of SE_REGINFO structures for all accessible versions.
SE_registration_get_info | SeRegistration.getInfo | Retrieves a registration definition.
SE_registration_get_info_by_id | SeRegistration constructor 2 | Retrieves a registration entry by ID.
SE_registration_get_info_list | SeConnection.getList(SeRegistration.class), SeConnection.getRegisteredTables | Retrieves an array of SE_REGINFO structures for all accessible versions.

Reginfo functions

C | Java | Function Description
SE_reginfo_allow_rowlocks | SeRegistration.allowRowLocks | Returns TRUE if rowlocking is enabled.
SE_reginfo_create | SeRegistration constructors | Creates a new SE_REGINFO object.
SE_reginfo_duplicate | SeRegistration.clone | Copies a SE_REGINFO entry.
SE_reginfo_free | NA | Releases memory allocated for an SE_REGINFO structure.
SE_reginfo_get_access | SeRegistration.getAccess | Retrieves the privilege bitmask for a registered table.
SE_reginfo_get_creation_keyword | SeRegistration.getCreationKeyword | Retrieves the registered table's configuration keyword.
SE_reginfo_get_description | SeRegistration.getDescription | Retrieves the registered table's description.
SE_reginfo_get_id | SeRegistration.getId | Retrieves the ID of a registered table.
SE_reginfo_get_mv_view | SeRegistration.getMvViewName | Retrieves the multiversion view of a registered table.
SE_reginfo_get_minimum_id | SeRegistration.getMininumId | Retrieves the minimum ID allowed for the registered table.
SE_reginfo_get_reg_date | SeRegistration.getRegistrationDate | Retrieves the registration date of a table.
SE_reginfo_get_rowid_allocation | SeRegistration.getRowIdAllocation | Retrieves the SDE-maintained rowed allocation method
SE_reginfo_get_rowid_column | SeRegistration.getRowIdColumnName | Retrieves the row ID column name for a registered table.
SE_reginfo_get_table_name | SeRegistration.getTableName | Retrieves the table name for a registered table.
SE_reginfo_has_layer | SeRegistration.hasLayer | Returns TRUE if the registered table has a spatial column.
SE_reginfo_has_locator | SeRegistration.hasLocator | Returns TRUE if the registered table has a locator.
SE_reginfo_is_hidden | SeRegistration.isHidden | Returns TRUE if the registered table is hidden.
SE_reginfo_is_multiversion | SeRegistration.isMultiVersion | Returns TRUE if the registered table is a multiversioned table.
SE_reginfo_is_view | SeRegistration.isView | Returns TRUE if the registered table is a view.
SE_reginfo_set_creation_keyword | SeRegistration.setCreationKeyword | Sets the registered table's configuration keyword.
SE_reginfo_set_description | SeRegistration.setDescription | Sets the registered table's description.
SE_reginfo_set_hidden | SeRegistration.setHidden | Sets the hidden flag for a registered table.
SE_reginfo_set_locator | SeRegistration.setLocator | Sets the locator flag for a registered table.
SE_reginfo_set_minimum_id | SeRegistration.setMinimumId | Sets the minimum ID allowed for the registered table.
SE_reginfo_set_multiversion | SeRegistration.setMultiVersion | Sets the multiversion flag for a registered table.
SE_reginfo_set_rowlocks | SeRegistration.setRowLocks | Sets row locking to enabled or not enabled on a registered table.
SE_reginfo_set_rowed_allocation | SeRegistration.setRowIdAllocation | Sets how to allocate row Ids.
SE_reginfo_set_rowid_column | SeRegistration.setRowIdColumnName | Sets the row ID column name for a registered table.
SE_reginfo_set_table_name | SeRegistration.setTableName | Sets the table name for a registered table.
SE_reginfo_set_view | SeRegistration.setView | Sets the view flag for a registered table.

Trace functions

C | Java | Function Description
SE_trace_off | Not Implemented | Turns tracing off.
SE_trace_on | Not Implemented | Turns tracing on.

Shape table functions

C | Java | Function Description
SE_stable_add_shape | Not Implemented | Adds a shape to an stable.
SE_stable_create | Not Implemented | Creates an empty stable.
SE_stable_delete_shape | Not Implemented | Deletes a shape from an stable.
SE_stable_free | Not Implemented | Frees all resources associated with an stable.
SE_stable_get_extent | Not Implemented | Returns the extent of the specified stable.
SE_stable_get_num_shapes | Not Implemented | Returns the number of shapes currently in the table.
SE_stable_get_shape | Not Implemented | Returns a single shape from an stable.
SE_stable_search | Not Implemented | Spatially searches for shapes in an stable.
SE_stable_set_concurrency | Not Implemented | Establishes concurrency control for threaded client applications.
SE_stable_size | Not Implemented | Returns the amount of memory allocated to an stable in bytes.

Point table Functions

C | Java | Function Description
SE_ptable_add_shape | Not Implemented | Adds the points in a shape to a point table.
SE_ptable_add_point | Not Implemented | Inserts one or more points into a point table.

Points are deleted from a point table with the following functions:

C | Java | Function Description
SE_ptable_delete_point | Not Implemented | Deletes a point from a point table.
SE_ptable_delete_shape | Not Implemented | Deletes all of a shape’s points from a point table.

Point table functions

C | Java | Function Description
SE_ptable_create | Not Implemented | Creates an empty point table.
SE_ptable_free | Not Implemented | Deallocates memory used by a point table.
SE_ptable_get | Not Implemented | Retrieves all points within an envelope from the point table.
SE_ptable_set_concurrency | Not Implemented | Establishes point table concurrency control for threaded client applications.
SE_ptable_snap | Not Implemented | Snaps to the closest point in the point table.

Locator Functions

C | Java | Function Description
SE_locator_alter | SeLocator.alter | Alters a locator’s characteristics.
SE_locator_create | SeLocator.create | Creates a locator.
SE_locator_delete | SeLocator.delete | Deletes a locator.
SE_locator_get_info | SeLocator.getInfo | Retrieves information about a locator.
SE_locator_get_info_by_id | SeLocator constructor 2 | Retrieves information about a locator by its ID.
SE_locator_free_info_list | NA | Releases memory allocated for a list of locator structures.
SE_locator_get_info_list | SeConnection.getLocatorList | Retrieves an array of SE_LOCATORINFO structures for all accessible locators.
SE_locator_describe_output | SeLocator.describeOutput | Describe the outputs of a locator.
SE_locator_free_descriptions | NA | Releases memory allocated for locator output.

Locator Properties

C | Java | Function Description
SE_locatorinfo_create | SeLocator constructors | Creates an SE_LOCATORINFO object.
SE_locatorinfo_free | NA | Releases memory allocated for an SE_LOCATORINFO structure.
SE_locatorinfo_duplicate | SeLocator.clone | Copies a locator definition.
SE_locatorinfo_get_description | SeLocator.getDescription | Retrieves the locator description.
SE_locatorinfo_get_category | SeLocator.getCategory | Retrieves the locator category.
SE_locatorinfo_get_id | SeLocator.getId | Returns the ID for a locator.
SE_locatorinfo_get_type | SeLocator.getType | Returns the type for a locator.
SE_locatorinfo_get_name | SeLocator.getName | Retrieves the locator name.
SE_locatorinfo_get_owner | SeLocator.getOwner | Retrieves the locator owner.
SE_locatorinfo_get_property_values | SeLocator.getValues | Sets the locator property and value pairs.
SE_locatorinfo_free_property_values | NA | Releases memory allocated by SE_locatorinfo_get_property_values .
SE_locatorinfo_set_description | SeLocator.setDescription | Sets the locator description.
SE_locatorinfo_set_category | SeLocator.setCategory | Sets the locator category.
SE_locatorinfo_set_name | SeLocator.setName | Sets the locator name.
SE_locatorinfo_set_property_values | SeLocator.setPropertiesValues | Sets the locator property and value pairs.
SE_locatorinfo_set_type | SeLocator.setType | Sets the type for a locator.

Functions that define Coordinate Systems and Spatial References

Coordref functions

C | Java | Function Description
SE_coordref_create | SeCoordinateReference constructor | Creates a coordinate reference object.
SE_coordref_duplicate | SeCoordinateReference.duplicate | Makes a copy of a coordinate reference object.
SE_coordref_free | NA | Frees an allocated coordinate reference object.
SE_coordref_get_coordsys | Not implemented | Returns a pointer to the coordinate system of the supplied coordinate reference object.
SE_coordref_get_description | SeCoordinateReference.getCoordSysDescription | Returns the coordinate system description for the supplied coordinate reference object.
SE_coordref_get_id | SeCoordinateReference.getSrid | Returns the coordinate system code for the supplied coordinate reference object.
SE_coordref_get_m | SeCoordinateReference.getFalseM SeCoordinateReference.getMUnits | Returns the m false origin and scale factor of the supplied coordinate reference object.
SE_coordref_get_m_range | SeCoordinateReference.getMaxMValue SeCoordinateReference.getMinMValue | Returns the minimum and maximum measure values of the supplied coordinate reference object.
SE_coordref_get_xy | SeCoordinateReference.getFalseX SeCoordinateReference.getFalseY SeCoordinateReference.getXYUnits | Returns the x,y false origin and scale factor of the supplied coordinate reference object.
SE_coordref_get_xy_envelope | SeCoordinateReference.getXYEnvelope | Returns xy extent of the supplied coordinate reference object.
SE_coordref_get_z | SeCoordinateReference.getFalseZ SeCoordinateReference.getZUnits | Returns the z false origin and scale factor of the supplied coordinate reference object.
SE_coordref_get_z_range | SeCoordinateReference.getMinZRange SeCoordinateReference.getMaxZRange | Returns the minimum and maximum z-values of the supplied coordinate reference object.
SE_coordref_set_by_description | SeCoordinateReference.setCoordSysByDescription | Sets the coordinate system for the supplied coordinate reference object by a text string.
SE_coordref_set_by_id | SeCoordinateReference.setCoordSysByID | Sets the coordinate system for the supplied coordinate reference object by an EPSG/GeoTIFF ID.
SE_coordref_set_coordsys | Not Implemented | Sets the coordinate system for the supplied coordinate reference object.
SE_coordref_set_m | SeCoordinateReference.setM | Sets the measure false origin and scale factor for the supplied coordinate reference object.
SE_coordref_set_m_by_range | SeCoordinateReference.setMByRange | Calculates and sets the measure false origin and scale factor of a coordinate reference object from the given range.
SE_coordref_set_xy | SeCoordinateReference.setXY | Sets the x,y false origin and scale factor for the supplied coordinate reference object.
SE_coordref_set_xy_by_envelope | SeCoordinateReference.setXYByEnvelope | Calculates and sets the x,y false origin and scale factor of a coordinate reference object from the given envelope.
SE_coordref_set_z | SeCoordinateReference.setZ | Sets the z false origin and scale factor for the supplied coordinate reference object.
SE_coordref_set_z_by_range | SeCoordinateReference.setZByRange | Calculates and sets the z false origin and scale factor of a coordinate reference object from the given range.

Spatialref functions

C | Java | Function Description
SE_spatialref_alter | SeSpatialReference.alter | Changes a spatial reference entry.
SE_spatialref_create | SeSpatialReference.create | Creates a spatial reference entry.
SE_spatialref_delete | SeSpatialReference.delete | Deletes a spatial reference entry.
SE_spatialref_free_info_list | NA | Frees a pointer to a list of spatial reference objects.
SE_spatialref_get_info | SeSpatialReference constructor 2 | Returns a spatial reference entry.
SE_spatialref_get_info_list | SeConnection.getList(SeSpatialReference.class), SeConnection.getSpatialRef | Returns a pointer to a list of spatial reference entries.

Spatialrefinfo functions

C | Java | Function Description
SE_spatialrefinfo_create | SeSpatialReference constructors | Creates a spatial reference object.
SE_ spatialrefinfo_duplicate | SeSpatialReference.clone | Makes a copy of a spatial reference object.
SE_ spatialrefinfo_free | NA | Frees an allocated spatial reference object.
SE_ spatialrefinfo_get_auth_name | SeSpatialReference.getAuthName | Returns the authority name for the supplied spatial reference object.
SE_ spatialrefinfo_get_auth_srid | SeSpatialReference.getAuthId | Returns the authority ID for the supplied spatial reference object.
SE_ spatialrefinfo_get_coordref | SeSpatialReference.getCoordRef | Returns a pointer to the coordinate reference of the supplied spatial reference object.
SE_ spatialrefinfo_get_description | SeSpatialReference.getDescription | Returns the description for the supplied spatial reference object.
SE_ spatialrefinfo_get_srid | SeSpatialReference.getSrId | Returns the ID for the supplied spatial reference object.
SE_ spatialrefinfo_set_auth_name | SeSpatialReference.setAuthName | Sets the authority name for a spatial reference object.
SE_ spatialrefinfo_set_auth_srid | SeSpatialReference.setAuthId | Sets the authority ID for a spatial reference object.
SE_ spatialrefinfo_set_coordref | SeSpatialReference.setCoordRef | Sets the coordinate reference for a spatial reference object.
SE_ spatialrefinfo_set_description | SeSpatialReference.setDescription | Sets the description for a spatial reference object.

Functions that manage streams

C | Java | Function Description
SE_stream_close | SeQuery.close (SeInsert.close, SeUpdate.close, SeDelete.close) | Shuts down a stream without freeing resources.
SE_stream_create | NA | Creates a stream handle for a given connection.
SE_stream_free | SeQuery.cancel (SeInsert.cancel, SeUpdate.cancel, SeDelete.cancel) | Shuts down a stream, freeing resources.
SE_stream_get_connection | NA | Returns a stream’s connection handle.
SE_stream_in_progress | SeQuery.inProgress (SeInsert.inProgress, SeUpdate.inProgress, SeDelete.inProgress) | Returns the status of the specified stream.


SE_anno_create

Creates an SE_ANNO object.

Usage syntax

LONG SE_anno_create (SE_ANNO *anno);

Parameters

anno

A pointer to the annotation structure.

Description

SE_anno_create allocates and initializes an SE_ANNO object that contains information about an annotation. SE_ANNO is accessed through an opaque pointer. Initially, an SE_ANNO object has these values:

justification SE_ANNO_LOWER_LEFT

leader line NULL

level 0

x_offset 0.0

y_offset 0.0

placement NULL

symbol 0

text empty string

height 0.0

gap_ratio 0.0

The height and gap ratio values must be equal to or greater than zero.

Returns


SE_anno_duplicate

Creates a copy of an SE_ANNO object.

Usage syntax

LONG SE_anno_duplicate
(const SE_ANNO src_anno,
SE_ANNO tgt_anno);

Parameters

src_anno | A pointer to the source annotation object.
tgt_anno | A pointer to the new annotation object.

Description

SE_anno_duplicate creates a copy of an existing SE_ANNO object.

Returns


SE_anno_free

Releases memory allocated for an SE_ANNO structure.

Usage syntax

void SE_anno_free (SE_ANNO anno);

Parameters

anno

The pointer to an SE_ANNO object.

Description

SE_anno_free frees the memory allocated for an SE_ANNO object returned by SE_anno_create.


SE_anno_get_alignment

Retrieves the annotation’s alignment.

Usage syntax

LONG SE_anno_get_alignment
(const SE_ANNO anno,
LONG *alignment);

Parameters

anno | The anno handle.
alignment | A pointer to the alignment of the annotation.

Description

SE_anno_get_alignment returns the alignment of a specific annotation. The alignment values are:

SE_ANNO_ALIGN_DEFAULT

SE_ANNO_ALIGN_LEFT

SE_ANNO_ALIGN_RIGHT

SE_ANNO_ALIGN_CENTER

SE_ANNO_ALIGN_AUTOMATIC

Returns


SE_anno_get_justification

Retrieves the annotation’s justification.

Usage syntax

LONG SE_anno_get_justification
(const SE_ANNO anno,
LONG *justification);

Parameters

anno | The anno handle.
justification | A pointer to the justification of the annotation.

Description

SE_anno_get_justification returns the justification of a specific annotation. The justification is one of:

SE_ANNO_UPPER_LEFT SE_ANNO_UPPER_CENTER SE_ANNO_UPPER_RIGHT

SE_ANNO_CENTER_LEFT SE_ANNO_CENTER_CENTER SE_ANNO_CENTER_RIGTH

SE_ANNO_LOWER_LEFT SE_ANNO_LOWER_CENTER SE_ANNO_LOWER_RIGHT

Returns


SE_anno_get_leader

Retrieves the leader for the specified annotation.

Usage syntax

LONG SE_anno_get_leader
(const SE_ANNO anno,
SE_SHAPE leader);

Parameters

anno | The SE_ANNO handle.
leader | A valid shape object.

Description

SE_anno_get_leader retrieves the leader line shape of an annotation. If the annotation has no leader line, a nil shape is returned.

Returns


SE_anno_get_level

Retrieves the annotation level.

Usage syntax

LONG SE_anno_get_level
(const SE_ANNO anno,
LONG *level);

Parameters

anno | The anno handle.
level | A pointer to the level of the annotation.

Description

SE_anno_get_level retrieves the annotation level.

Returns


SE_anno_get_offset

Retrieves the offset of the annotation.

Usage syntax

LONG SE_anno_get_offset
(const SE_ANNO anno,
LFLOAT *x_offset,
LFLOAT *y_offset);

Parameters

anno | The SE_ANNO handle.
x_offset | The x-offset of the annotation.
y_offset | The y-offset of the annotation.

Description

SE_anno_get_offset retrieves the x- and y-offsets of an annotation’s first point.

Returns


SE_anno_get_placement

Retrieves the annotation’s placement.

Usage syntax

LONG SE_anno_get_placement
(const SE_ANNO anno,
SE_SHAPE placement);

Parameters

anno | The SE_ANNO handle.
placement | The placement of the annotation.

Description

SE_anno_get_placement retrieves the placement shape of an annotation. If the annotation has no placement, a nil shape is returned.

Returns


SE_anno_get_symbol

Retrieves the annotation symbol.

Usage syntax

LONG SE_anno_get_symbol
(const SE_ANNO anno,
LONG *symbol);

Parameters

anno | The SE_ANNO handle.
symbol | The annotation symbol.

Description

SE_anno_get_symbol retrieves the annotation’s symbol value.

Returns


SE_anno_get_text

Retrieves the annotation’s text.

Usage syntax

LONG SE_anno_get_text
(const SE_ANNO anno,
CHAR *text);

Parameters

anno | The SE_ANNO handle.
text | A pointer to the text string.

Description

SE_anno_get_text returns the annotation’s text string. You must supply a text string buffer of at least SE_MAX_ANNO_TEXT_LEN bytes.

Returns


SE_anno_get_text_size

Retrieves the height and gap ratio for an annotation.

Usage syntax

LONG SE_anno_get_text_size
(const SE_ANNO anno,
LFLOAT *height
LFLOAT *gap_ratio);

Parameters

anno | The SE_ANNO handle.
height | A pointer to the annotation height.
gap_ratio | A pointer to the gap ratio of the annotation.

Description

SE_anno_get_text_size returns the text height and intercharacter spacing for a specific annotation.

Returns


SE_anno_set_alignment

Sets the annotation’s alignment.

Usage syntax

LONG SE_anno_set_alignment
(SE_ANNO anno,
const LONG alignment);

Parameters

anno | The anno handle.
alignment | A pointer to the alignment of the annotation.

Description

SE_anno_set_alignment sets the alignment of a specific annotation. The alignment values are:

SE_ANNO_ALIGN_DEFAULT

SE_ANNO_ALIGN_LEFT

SE_ANNO_ALIGN_RIGHT

SE_ANNO_ALIGN_CENTER

SE_ANNO_ALIGN_AUTOMATIC

Returns


SE_anno_set_justification

Sets the annotation’s justification.

Usage syntax

LONG SE_anno_set_justification
(SE_ANNO anno,
LONG justification);

Parameters

anno | The anno handle.
justification | The justification of the annotation.

Description

SE_anno_set_justification sets the justification of a specific annotation. The justification is one of:

SE_ANNO_UPPER_LEFT | SE_ANNO_UPPER_CENTER | SE_ANNO_UPPER_RIGHT
SE_ANNO_CENTER_LEFT | SE_ANNO_CENTER_CENTER | SE_ANNO_CENTER_RIGHT
SE_ANNO_LOWER_LEFT | SE_ANNO_LOWER_CENTER | SE_ANNO_LOWER_RIGHT

Returns


SE_anno_set_leader

Sets the leader for the specified annotation.

Usage syntax

LONG SE_anno_set_leader
(SE_ANNO anno,
const SE_SHAPE leader);

Parameters

anno | The SE_ANNO handle.
leader | A valid shape object.

Description

SE_anno_set_leader sets the leader line shape of an annotation. If a nil shape is passed, the leader line is removed. The SE_COORDREF of the placement shape must have the same coordinate reference as the shape to which the annotation will be attached.

Returns


SE_anno_set_level

Sets the annotation level.

Usage syntax

LONG SE_anno_set_level
(SE_ANNO anno,
LONG level);

Parameters

anno | The anno handle.
level | The level of the annotation.

Description

SE_anno_set_level sets the annotation level. The level value must be greater than or equal to zero.

Returns


SE_anno_set_offset

Sets the offset of the annotation.

Usage syntax

LONG SE_anno_set_offset
(SE_ANNO anno,
LFLOAT x_offset,
LFLOAT y_offset);

Parameters

anno | The SE_ANNO handle.
x_offset | The x-offset of the annotation.
y_offset | The y-offset of the annotation.

Description

SE_anno_set_offset sets the x- and y-offsets to the first point of an annotation.

Returns


SE_anno_set_placement

Sets the annotation’s placement.

Usage syntax

LONG SE_anno_set_placement
(SE_ANNO anno,
const SE_SHAPE placement);

Parameters

anno | The SE_ANNO handle.
placement | The placement of the annotation.

Description

SE_anno_set_placement sets the placement shape of an annotation. If a nil shape is passed, the placement shape is removed. The SE_COORDREF of the placement shape must have the same coordinate reference as the shape to which the annotation will be attached.

Returns


SE_anno_set_symbol

Sets the annotation symbol.

Usage syntax

LONG SE_anno_set_symbol
(SE_ANNO anno,
LONG symbol);

Parameters

anno | The SE_ANNO handle.
symbol | The annotation symbol.

Description

SE_anno_set_symbol sets the annotation’s symbol value.

Returns


SE_anno_set_text

Sets the annotation’s text.

Usage syntax

LONG SE_anno_set_text
(SE_ANNO anno,
const CHAR *text);

Parameters

anno | The SE_ANNO handle.
text | A pointer to a text string.

Description

SE_anno_set_text sets the annotation’s text string. The text string length must be less than SE_MAX_ANNO_TEXT_LEN.

Returns


SE_anno_set_text_size

Sets the text height and gap ratio for an annotation.

Usage syntax

LONG SE_anno_set_text_size
(SE_ANNO anno,
LFLOAT height,
LFLOAT gap_ratio);

Parameters

anno | The SE_ANNO handle.
height | The annotation height.
gap_ratio | The gap ratio of the annotation.

Description

SE_anno_set_text_size sets the text height and intercharacter spacing for a specific annotation. The height must be greater than zero while the gap_ratio must be greater or equal to zero.

Returns


SE_blob_free

Frees a blob’s memory.

Usage syntax

void SE_blob_free (SE_BLOB_INFO *blob);

Parameters

blob

The blob pointer.

Description

SE_blob_free frees a blob’s associated memory, and resets the blob_length to zero. This is the memory allocated by the last call to SE_stream_fetch or SE_stream_get_blob when a blob column was selected in a query.


SE_connection_commit_transaction

Commits all pending transactions on this connection.

Usage syntax

LONG SE_connection_commit_transaction (SE_CONNECTION connection);

Parameters

connection

The connection handle.

Description

SE_connection_commit_transaction commits all modifications made since the last SE_connection_start_transaction call. Once this function returns successfully, SE_connection_rollback_transaction cannot undo modifications.

Returns

SE_SUCCESS
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_DB_IO_ERROR
SE_FAILURE
SE_FILE_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM_TYPE
SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TEMP_IO_ERROR

Notes

• If the automatic commit threshold is enabled (see the AUTOCOMMIT parameter in the giomgr.defs file), only those modifications made since the last autocommit are explicitly committed by a call to SE_connection_commit_transaction .


SE_connection_create

Connects the application to the ArcSDE server.

Usage syntax

LONG SE_connection_create
(const CHAR *server,
const CHAR *instance,
const CHAR *database,
const CHAR *username,
const CHAR *password,
SE_ERROR *error,
SE_CONNECTION *connection);

Parameters

server | Host name of the server running ArcSDE.
instance | The ArcSDE instance name.
database | The database or data source name. Not applicable for some DBMS.
username | DBMS user’s login name.
password | DBMS user’s login password.
error | Any error code is returned here.
connection | Returned connection handle.

Description

This function establishes a connection between a client application and the ArcSDE server. You must establish a connection before performing any other operation. An ArcSDE server task, gsrvr, is created for each successful call to SE_connection_create function. If you pass a database or data source name to a DBMS that doesn’t support them, SE_DBMS_DOES_NOT_SUPPORT is returned. However, if your DBMS supports named databases or data sources and you do not specify one, the connection will connect to the default ‘sde’ database or data source.

You can also use operating system environment variables to define the server, instance, database, user name, and password. While supported, using the password variable isn't recommended because it can compromise your security. Pass NULL for any argument for which the variable is set. The variables are

SDESERVER—the name of the ArcSDE server

SDEINSTANCE—the name of the ArcSDE instance

SDEDATABASE—the name of the ArcSDE database (if required by the underlying DBMS)

SDEUSER—the user name

SDEPASSWORD—the user's password

If an O/S level or DBMS level error occurs, the SE_ERROR structure will contain the extended error code and two error message strings that describe the nature of the error.

typedef struct {

LONG sde_error; /* ArcSDE error code */

LONG ext_error; /* DBMS or OS errno code */

CHAR err_msg1[SE_MAX_MESSAGE_LENGTH]; /* DBMS or SE_ERROR_get_string msg */

CHAR err_msg2[SE_MAX_MESSAGE_LENGTH]; /* Second DBMS error, if applicable */

} SE_ERROR;

Returns

SE_SUCCESS
SE_FAILURE
SE_NO_ACCESS
SE_SDE_NOT_STARTED
SE_IOMGR_NOT_AVAILABLE
SE_INVALID_SERVER
SE_INVALID_POINTER
SE_INVALID_USER
SE_LOGIN_NOT_ALLOWED
SE_DBMS_DOES_NOT_SUPPORT
SE_NET_FAILURE
SE_NET_TIMEOUT
SE_TASKS_EXCEEDED

Notes

• SE_FAILURE is returned if the server host is unknown.


SE_connection_export_dbtune

Exports data to a file from the DBTUNE table.

Usage syntax

LONG SE_connection_export_dbtune
(SE_CONNECTION connection,
const CHAR *dbtune_file);

Parameters

connection | The connection handle.
dbtune_file | Name of the file to export data to.

Description

SE_connection_export_dbtune exports data to a file from the DBTUNE table (which is already present in the ADMIN_USER SDE). The new file is created in the directory $SDEHOME/etc.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_NET_FAILURE
SE_INVALID_RELEASE
SE_OUT_OF_CLMEM
SE_DB_IO_ERROR
SE_SDE_NOT_STARTED
SE_OUT_OF_SVMEM
SE_INVALID_PARAM_VALUE


SE_connection_free

Disconnects the application from the ArcSDE server.

Usage syntax

void SE_connection_free (SE_CONNECTION connection);

Parameters

connection

The connection handle.

Description

SE_connection_free disconnects the application from the ArcSDE server. The ArcSDE server task is shut down, and all resources associated with the connection are released.

Notes

• An ArcSDE application should always call SE_connection_free prior to shutting down the application. If it does not, the ArcSDE server process for the connection will eventually detect the break in communication, and execute the equivalent clean-up procedure. Open transactions are committed during the clean-up procedure.


SE_connection_free_all_locks

Releases all locks held by the specified connection.

Usage syntax

LONG SE_connection_free_all_locks (SE_CONNECTION connection);

Parameters

connection

The connection handle.

Description

SE_connection_free_all_locks releases all the area locks for all layers associated with the connection.

Returns


SE_connection_free_keyword_info

Releases the DBMS keyword list.

Usage syntax

LONG SE_connection_free_keyword_info (LONG keyword_count,
CHAR **keyword_list);

Parameters

keyword_list

keyword_count

A pointer to the keyword list.

The number of keywords in the list.

Description

SE_connection_free_keyword_info releases the DBMS keyword list .

Returns

SE_SUCCESS


SE_connection_get_admin_database

Returns the name of the administration database for this connection.

Usage syntax

LONG SE_connection_get_admin_database ( SE_CONNECTION connection,
CHAR *admin_databases );

Parameters

connection

admin_databases

The current connection.

Returns the name of the administration database.

Description

SE_connection_get_admin_database returns the name of the administration database for this connection. For those DBMS that do not support this function then a NULL terminated string is returned.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_DBMS_DOES_NOT_SUPPORT
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED


SE_connection_get_database

Returns the name of the database that the user is connected to.

Usage syntax

LONG SE_connection_get_database ( SE_CONNECTION connection,
CHAR *databases );

Parameters

connection

databases

The current connection.

Returns the current database name

Description

SE_connection_get_database returns the name of the database that the user is connected to. For those DBMS that do not support this function then a NULL terminated string is return.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_DBMS_DOES_NOT_SUPPORT
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED


SE_connection_get_dbms_info

Retrieves DBMS information.

Usage syntax

LONG SE_connection_get_dbms_info
(SE_CONNECTION connection,
LONG *dbms_id
LONG *dbms_properties);

Parameters

connection

dbms_id

dbms_properties

The connection handle.

A pointer to the DBMS ID.

A pointer to the DBMS properties.

Description

SE_connection_get_dbms_info returns the DBMS ID and properties for the connection. The DBMS ID values are

SE_DBMS_IS_UNKNOWN -1

SE_DBMS_IS_OTHER 0

SE_DBMS_IS_ORACLE 1

SE_DBMS_IS_INFORMIX 2

SE_DBMS_IS_SYBASE 3

SE_DBMS_IS_DB2 4

SE_DBMS_IS_SQLSERVER 5

SE_DBMS_IS_ARCINFO 6

SE_DBMS_IS_IUS 7

SE_DBMS_IS_DB2_EXT 8

SE_DBMS_IS_ARCSERVER 9

SE_DBMS_IS_JET 10

The DBMS properties are

SE_DBMS_CAN_RENAME

SE_DBMS_CAN_ADD_COL

SE_DBMS_CAN_DROP_COL

SE_DBMS_OWNER_PREFIXES_TABLE

SE_DBMS_IS_CASE_SENSITIVE

SE_DBMS_SUPPORT_DELIMITED_IDENTIFIER

SE_DBMS_IS_CASE_SENSITIVE_IN_COMPARISON

SE_DBMS_IS_USER_CASE_SENSITIVE

SE_DBMS_IS_PASSWORD_CASE_SENSITIVE

Returns


SE_connection_get_error_string

Returns a localized string for an error code.

Usage syntax

LONG SE_connection_get_error_string
(SE_CONNECTION connection,
LONG error_code,
CHAR *error_string);

Parameters

connection

error_code

error_string

The connection handle.

The error code.

A point to the character string for the error.

Description

SE_connection_get_error_string returns the localized character string of an error code for the specified connection. Allocate at least SE_MAX_MESSAGE_LEN bytes to the error_string argument.

Returns


SE_connection_get_ext_error

Retrieves extended error information.

Usage syntax

LONG SE_connection_get_ext_error
(SE_CONNECTION connection,
SE_ERROR *error);

Parameters

connection

error

The connection handle.

A pointer to an SE_ERROR structure.

Description

SE_connection_get_ext_error reports the low-level error code that was returned from an abnormal termination of the last function call on the specified connection handle. This call returns either OS level ‘errno’ values or low-level database error codes.

typedef struct {

LONG sde_error; /* ArcSDE error code */

LONG ext_error; /* DBMS or OS errno code */

CHAR err_msg1[SE_MAX_MESSAGE_LENGTH]; /* DBMS or SE_ERROR_get_string msg */

CHAR err_msg2[SE_MAX_SQL_MESSAGE_LENGTH];
/* Second DBMS error, if applicable */

} SE_ERROR;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• SE_connection_get_ext_error does not return stream level errors that are returned by SE_stream_get_ext_error .


SE_connection_get_instance_name

Returns the instance of the connection.

Usage syntax

LONG SE_connection_get_instance_name
(SE_CONNECTION connection,
CHAR *instance_name);

Parameters

connection

instance_name

The connection handle.

The instance name.

Description

SE_connection_get_instance_name returns the name of the instance for the specified connection. Allocate at least SE_MAX_INSTANCE_LEN bytes to the instance_name argument.

Returns


SE_connection_get_keyword_info

Retrieves a list of DBMS-specific keywords.

Usage syntax

LONG SE_connection_get_keyword_info
(SE_CONNECTION connection,
LONG *keyword_count,
CHAR ***keyword_list);

Parameters

connection

keyword_count

keyword_list

The connection handle.

The number of keywords.

A point to the array of keywords.

Description

SE_connection_get_keyword_info returns a list of DBMS-specific keywords for the specified connection. Allocate at least SE_MAX_KEYWORD_LEN for the keyword names. You should free the keyword list after finishing with the reserved keyword.

Returns


SE_connection_get_release

Returns the ArcSDE release version number for this connection.

Usage syntax

LONG SE_connection_get_release
(SE_CONNECTION connection,
SE_RELEASE *rls_version);

Parameters

connection

rls_version

The connection handle.

The pointer to an SE_RELEASE structure.

Description

SE_connection_get_release returns version information for the connected ArcSDE server process. This information includes major and minor release information, as well as the DBMS system running under the ArcSDE server. Replaced SE_connection_get_version.

typedef struct

{

LONG major; /* Major release */

LONG minor; /* Minor release */

LONG bug; /* Bug version */

CHAR desc[64]; /* Description */

LONG release; /* Release Number */

} SE_RELEASE;

Returns


SE_connection_get_dbms_info

SE_connection_get_sdedba_name

Returns the name of the SDE DBA that owns the system tables.

Usage syntax

LONG SDEAPI SE_connection_get_sdedba_name
(SE_CONNECTION handle,
CHAR *user_name);

Parameters

connection

*user_name

The connection handle.

A pointer to the SDE DBA user name.

Description

SE_connection_get_sdedba_name returns the name of the SDE DBA that owns the SDE system tables. It assumes the caller has atleast SE_MAX_OWNER_LEN bytes in the user_name arguement.

Returns


SE_connection_get_server_name

Retrieves the name of the server.

Usage syntax

LONG SE_connection_get_server_name
(SE_CONNECTION connection,
CHAR *server_name);

Parameters

connection

server_name

The connection handle.

The server name.

Description

SE_connection_get_server_name returns the name of the server for the specified connection. Allocate at least SE_MAX_SERVER_LEN bytes to the server_name argument.

Returns


SE_connection_get_server_time

Returns the clock time of the server associated with this connection.

Usage syntax

LONG SE_connection_get_server_time (SE_CONNECTION connection);

Parameters

connection The connection handle.

Description

SE_connection_get_server_time returns the time on the ArcSDE server platform for the connection. The time represents the number of seconds since 00:00 Universal Coordinated Time (UTC) on January 1, 1970. The value complies with POSIX time functions. This information may be necessary to synchronize operations that use time as a flag for change. The time on the client and server platforms may not match.

Returns


SE_connection_get_sql_info

Retrieves a DBMS–specific function name.

Usage syntax

LONG SE_connection_get_sql_info
(SE_CONNECTION connection,
LONG sql_id
CHAR *sql_name);

Parameters

connection

sql_id

sql_name

The connection handle.

The function ID.

A pointer to the function name.

Description

SE_connection_get_dbms_function returns a DBMS–specific function name. Sometimes DBMS use different names for the same function. This function allows you to write DBMS-independent code and allow the SDE server to call the correct DBMS function. For example, if the function_id is SE_DBMS_FUNCTION_UPPERCASE, Oracle and Sybase servers will return ‘UPPER’ while DB2 server will return ‘UCASE’. Allocate at least SE_MAX_FUNCTION_LEN bytes to the function_name argument. The function values are

typedef enum {

SE_DBMS_FUNCTION_UPPERCASE, /* Returns char in upper case */

SE_DBMS_FUNCTION_LOWERCASE, /* Returns char in lower case */

SE_DBMS_FUNCTION_CONCAT, /* Returns char1 concatenated with char2 */

SE_DBMS_FUNCTION_ASCII, /* Returns decimal representation of char c */

SE_DBMS_FUNCTION_LENGTH, /* Returns length in CHAR */

SE_DBMS_FUNCTION_LENGTHB, /* Returns length in bytes */

SE_DBMS_FUNCTION_CHR, /* Returns the character of the binary equivalent */

SE_DBMS_FUNCTION_LTRIM, /* Removes spaces from the left */

SE_DBMS_FUNCTION_RTRIM, /* Removes trailing from the right */

SE_DBMS_FUNCTION_SUBSTR, /* Returns a portion of char at M and N c long */

SE_DBMS_FUNCTION_SUBSTRB, /* Returns a portion of bytes at

m and n bytes long */

SE_DBMS_FUNCTION_SOUNDEX, /* Returns a char containing the phonetic

representation of char2 */

SE_DBMS_FUNCTION_TRANSLATE, /* Returns char with each ‘from’ char

replaced by its corresponding ‘to’ char */

SE_DMBS_FUNCTION_TRIM /* Strips the leading, trailing, *, or both

From the string. */

/* The Numerical functions */

SE_DBMS_FUNCTION_CEIL, /* Returns smallest integer >= n */

SE_DBMS_FUNCTION_FLOOR, /* Returns largest integer <= n */

SE_DBMS_FUNCTION_ROUND, /* Returns n rounded to m place of n */

SE_DBMS_FUNCTION_LN, /* Returns natural logarithm of n */

SE_DBMS_FUNCTION_LOG10, /* Returns logarithm of base 10 */

SE_DBMS_FUNCTION_LOG, /* Returns logarithm of base n */

SE_DBMS_FUNCTION_MOD, /* Returns the reminder of m divided by n */

SE_DBMS_FUNCTION_POWER, /* Returns the n power of m */

SE_DBMS_FUNCTION_SIGN, /* Returns -1 for negative, 0 for zero and

1 for positive */

SE_DBMS_FUNCTION_TRUNC, /* Returns n truncated to m decimal places */

SE_DBMS_FUNCTION_SINH, /* Returns hyperbolic sine of x */

SE_DBMS_FUNCTION_COSH, /* Returns hyperbolic cosine of x */

SE_DBMS_FUNCTION_TANH, /* Returns hyperbolic tangent of x */

SE_DBMS_FUNCTION_ASIN, /* Returns the arcsine of x */

SE_DBMS_FUNCTION_ACOS, /* Returns the arccosine of x */

SE_DBMS_FUNCTION_ATAN, /* Returns the arctangent of x */

SE_DBMS_FUNCTION_HEX, /* Returns the hexadecimal representation */

SE_DBMS_FUNCTION_SIN, /* Returns sine of x */

SE_DBMS_FUNCTION_COS, /* Returns cosine of x */

SE_DBMS_FUNCTION_TAN, /* Returns tangent of x */

SE_DBMS_FUNCTION_EXTRACT /* Returns the numeric value of a date */

SE_DBMS_FUNCTION_BITLENGTH /* Returns the string length in bits */

SE_DBMS_FUNCTION_POSITION /* Returns the numeric value that indicates

the position of a search string within the

source string */

SE_DBMS_FUNCTION_VARIANCE, /* Returns the variance of x */

SE_DBMS_FUNCTION_STDDEV, /* Returns the standard deviation */

SE_DBMS_FUNCTION_AVG, /* Returns the average value of n */

SE_DBMS_FUNCTION_COUNT, /* Returns the number of rows in the query */

SE_DBMS_FUNCTION_MAX, /* Returns the maxnimum value of expression */

SE_DBMS_FUNCTION_MIN, /* Returns the minimum value of expression */

SE_DBMS_FUNCTION_SUM, /* Returns the sum of values of n */

SE_DBMS_FUNCTION_COALSCE, /* Returns the first NOT_NULL value */

SE_DBMS_FUNCTION_CONVERT, /* The convert function */

SE_DBMS_FUNCTION_CAST, /* Converts one data type to another one */

SE_DBMS_FUNCTION_USER /* Returns the current user name */

} SE_SQL_FUNCTION;

typedef enum {

SE_SQL_WILDCARD_MANYMATCH_CHAR, /* always start from the total number of

the function constants */

SE_SQL_WILDCARD_SINGLEMATCH_CHAR,

SE_SQL_DELIMITED_CHAR_PREFIX,

SE_SQL_DELIMITED_CHAR_SUFFIX,

SE_SQL_DEFAULT_ESCAPE_CHAR_PREFIX,

SE_SQL_DEFAULT_ESCAPE_CHAR_SUFFIX,

SE_SQL_ESCAPE_CLAUSE_PREFIX,

SE_SQL_ESCAPE_CLAUSE_SUFFIX

} SE_SQL_SPECIAL_CHARACTER;

Here’s an example.

LONG test_dbms_get_sql_info(SE_CONNECTION handle)

{

SE_STREAM stream;

long rc;

char func_name[SE_MAX_FUNCTION_LEN];

char sql_stmt[255];

long numoftables=1;

char table[SE_MAX_TABLE_LEN], column[SE_MAX_COLUMN_LEN];

strcpy(table, “KENTUCKY5BOUNDARIES”);

strcpy(column, “NAME”);

rc = SE_connection_get_sql_info (SE_DBMS_FUNCTION_UPPERCASE,

func_name);

QA_returncode_check(NULL, stream, rc, “SE_connection_get_dbms_function”);

sprintf(sql_stmt, “select * from %s where %s(%s) like ‘CLAY%’ ”, table,

func_name, column);

rc = SE_stream_create (handle, &stream);

QA_returncode_check(NULL, stream, rc, “ SE_stream_create ”);

rc = SE_stream_prepare_sql (stream, sql_stmt);

QA_returncode_check(NULL, stream, rc, “ SE_stream_prepare_sql ”);

rc = SE_stream_execute (stream);

QA_returncode_check(NULL, stream, rc, “ SE_stream_execute ”);

/* . . . */

return (rc);

}

Returns


SE_connection_get_stream_spec

Returns buffering properties for future streams.

Usage syntax

LONG SE_connection_get_stream_spec
(SE_CONNECTION connection,
SE_STREAM_SPEC *spec);

Parameters

connection

spec

The connection handle.

A pointer to an SE_STREAM_SPEC structure.

Description

SE_connection_get_stream_spec returns the advanced properties for subsequent stream creation. The properties deal with the stream pool size on the client, buffer management on the server and the transmission buffers between client and server.

The SE_STREAM_SPEC structure contains the properties. Zero values do not affect buffer sizes.

typedef struct {

LONG min_size; /* minimum size of buffer */

LONG max_size; /* total size of buffer */

LONG min_objects; /* minimum number of objects to put on buffer */

LONG max_array_size; /* maximum number of elements per array */

LONG attribute_bytes; /* attribute array buffer size */

LONG shape_point_bytes; /* shape geometry array buffer size */

LONG blob_bytes; /* blob array buffer size */

LONG max_bytes_per_blob; /* max individual blob size in array fetch */

LONG stream_pool_size; /* minimum number of streams to keep in the pool */

LONG raster_buf_size; /* raster buffer size */

} SE_STREAM_SPEC;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE_BUF_SIZE
SE_INVALID_STREAM_SPEC
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_connection_get_user_name

Returns the user of the connection.

Usage syntax

LONG SE_connection_get_user_name
(SE_CONNECTION connection,
CHAR *user_name);

Parameters

connection

user_name

The connection handle.

The user name.

Description

SE_connection_get_user_name returns the name of the user for the specified connection. Allocate at least SE_MAX_OWNER_LEN bytes to the user_name argument.

Returns


SE_connection_import_dbtune

Imports data to the DBTUNE table.

Usage syntax

LONG SE_connection_import_dbtune
(SE_CONNECTION connection,
const CHAR *dbtune_file
SE_DBTUNE *dbtune_err_data);

Parameters

connection | The connection handle.
dbtune_file | Name of the file to import data from.
dbtune_err_data | The dbtune error data if there is an error.

Description

SE_connection_import_dbtune imports data to the DBTUNE table (which is already created in the ADMIN_USER SDE). The DBTUNE table is truncated before importing data into it.

Returns


SE_connection_rollback_transaction

Performs a rollback of a transaction.

Usage syntax

LONG SE_connection_rollback_transaction (SE_CONNECTION connection);

Parameters

connection The connection handle.

Description

The SE_connection_rollback_transaction function aborts all modifications since the last SE_connection_start_transaction call, or any intermediate commits on a transaction resulting from a call to SE_connection_commit_transaction , or an automatic commit (See the AUTOCOMMIT parameter in the giomgr.defs file).

Returns

SE_SUCCESS
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• Functions that create, delete, or truncate, such as SE_layer_create , operate independently of ArcSDE transactions. The SE_connection_rollback_transaction function cannot roll back such operations.


SE_connection_set_concurrency

Establishes concurrency control for threaded client applications.

Usage syntax

LONG SE_connection_set_concurrency
(SE_CONNECTION connection,
LONG policy);

Parameters

connection

policy

The connection handle.

The concurrency policy.

Description

SE_connection_set_concurrency sets the concurrency policy for the specified connection. The concurrency policy affects how calls to the API for this connection behave in a multithreaded environment. The policies for concurrency are:

SE_UNPROTECTED_POLICY No protection. There is no overhead, but calls by multiple threads to the same handle may result in major problems.

SE_ONE_THREAD_POLICY The handle is now ‘owned’ by the calling thread, and any other thread trying to use it immediately returns with an error code of SE_CONNECTION_LOCKED. The owning thread must yield ownership by calling this function with an argument other than SE_ONE_THREAD_POLICY before any other thread can use this handle. If the owning thread terminates, then it automatically releases its ownership.

SE_TRYLOCK_POLICY Whenever an ArcSDE function with a connection or stream argument is entered, the entering thread tries to lock. If it succeeds, it proceeds; if it fails, it immediately returns with an error code of SE_CONNECTION_IN_USE.

SE_LOCK_POLICY Similar to SE_TRYLOCK_POLICY, but instead of failing if the connection is currently in use, the call hangs until the thread which has the connection currently locked returns from its ArcSDE function call. If multiple threads are waiting on the connection, it is impossible to predict which thread will get the lock next.

Returns

SE_SUCCESS
SE_FAILURE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_OUT_OF_MUTEXES
SE_SDE_NOT_STARTED

Notes

• The environment set by SE_connection_set_concurrency applies to subsequent calls to this function. For safety in a multithread environment, call SE_connection_set_concurrency on a connection before it is passed to any thread other than the one that opened the connection.


SE_connection_set_stream_spec

Sets buffering properties for future streams.

Usage syntax

LONG SE_connection_set_stream_spec
(SE_CONNECTION connection,
const SE_STREAM_SPEC *spec);

Parameters

connection

spec

The connection handle.

A pointer to an SE_STREAM_SPEC structure.

Description

This function sets some advanced properties for subsequent stream creation. The properties deal with buffer management on the server and the transmission buffers between client and server.

The SE_STREAM_SPEC structure sets the buffering properties. Zero values do not affect buffer sizes.

typedef struct {

LONG min_size; /* minimum size of buffer */

LONG max_size; /* total size of buffer */

LONG min_objects; /* minimum number of objects to put on buffer */

LONG max_array_size; /* maximum number of elements per array */

LONG attribute_bytes; /* attribute array buffer size */

LONG shape_point_bytes; /* shape geometry array buffer size */

LONG blob_bytes; /* blob array buffer size */

LONG max_bytes_per_blob; /* max individual blob size in array fetch */

LONG stream_pool_size; /* minimum number of streams to keep in the pool */

LONG raster_buf_size; /* raster buffer size */

} SE_STREAM_SPEC;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE_BUF_SIZE
SE_INVALID_STREAM_SPEC
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_connection_set_transaction_autocommit

Sets the transaction autocommit interval.

Usage syntax

LONG SE_connection_set_transaction_autocommit
(SE_CONNECTION connection,
LONG interval);

Parameters

connection

interval

The connection handle.

Number of modification operations to do before an autocommit.

Description

SE_connection_set_transaction_autocommit sets the transaction autocommit interval for the specified connection. The autocommit interval is the number of database write operations (inserts, deletes, and updates) to allow before forcing the underlying database to commit changes.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• If the autocommit interval is set to 0, autocommits are not performed.

• If this function is not called, the autocommit interval defaults to the value of the AUTOCOMMIT parameter in the giomgr.defs file.

• A return code >= 0 indicates SUCCESS.


SE_connection_start_transaction

Starts a transaction on a connection.

Usage syntax

LONG SE_connection_start_transaction (SE_CONNECTION connection);

Parameters

connection The connection handle.

Description

This function begins a transaction on the specified connection. The transaction is terminated by SE_connection_commit_transaction and SE_connection_rollback_transaction .

You can establish an autocommit threshold for the connection with either the SE_connection_set_transaction_autocommit function or with the AUTOCOMMIT parameter in the giomgr.defs file. The autocommit threshold establishes how many database write operations are allowed before the transaction is automatically committed.

Returns


SE_coordref_create

Creates a coordinate reference object.

Usage syntax

LONG SE_coordref_create (SE_COORDREF *coordref);

Parameters

coordref

A pointer to a coordinate reference object.

Description

Creates a coordinate reference object with offsets of 0, scale factors of 1, and a null coordinate system.

Returns


SE_coordref_duplicate

Makes a copy of a coordinate reference object.

Usage syntax

LONG SE_coordref_duplicate
(SE_COORDREF src_ref,
SE_COORDREF tgt_ref);

Parameters

src_ref

tgt_ref

A pointer to the source coordinate reference object.

A pointer to the target coordinate reference object.

Description

Make a duplicate copy of a coordinate reference object.

Returns


SE_coordref_free

Frees an allocated coordinate reference object.

Usage syntax

void SE_coordref_free (SE_COORDREF coordref);

Parameters

coordref

A pointer to the coordinate reference.

Description

Frees an allocated coordinate reference object.

Returns


SE_coordref_get_coordsys

Returns a pointer to the coordinate system of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_coordsys
(SE_COORDREF coordref,
PE_COORDSYS *cs);

Parameters

coordref

cs

A pointer to the coordinate reference.

A pointer to the coordinate system.

Description

Returns a pointer to the coordinate system of the supplied coordinate reference object. The coordinate system is managed by the Projection Engine.

Returns


SE_coordref_get_description

Returns a description of the coordinate system for the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_description
(SE_COORDREF coordref,
CHAR *description);

Parameters

coordref

description

A pointer to the coordinate reference.

A pointer to a character string representation of the coordinate system.

Description

Returns the description of the coordinate system for the supplied coordinate reference object. The coordinate system is defined as a character string description suitable for use by the ArcSDE function SE_coordref_set_by_description or the Projection Engine function pe_coordsys_from_string.

Returns


SE_coordref_get_id

Returns the coordinate system ID for the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_id
(SE_COORDREF coordref,
LONG *coordsys_id);

Parameters

coordref

coordsys_id

A pointer to the coordinate reference.

The predefined Projection Engine ID.

Description

Returns the coordinate system for the supplied coordinate reference object. The coordinate system is identified by the predefined Projection Engine object ID. There are over 800 predefined coordinate systems; see the pef.h file for a complete list. If the coordinate system is of type ‘unknown’, the returned coordsys_id is zero. If the coordinate system is not formally defined, the coordsys_id is returned as -1.

Returns


SE_coordref_get_m

Returns the m-offset and scale factors of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_m
(SE_COORDREF coordref,
LFLOAT *falsem,
LFLOAT *munits);

Parameters

coordref

falsem

munits

A pointer to the coordinate reference.

A pointer to the measure false origin value.

A pointer to the number of system units per measure unit type.

Description

Returns the measure offset and scale factors of the supplied coordinate reference object.

Returns


SE_coordref_get_m_range

Returns the minimum and maximum measure values of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_m_range
(SE_COORDREF coordref,
LFLOAT *min_value,
LFLOAT *max_value);

Parameters

coordref

min_value

max_value

A pointer to the coordinate reference.

A pointer to the minimum measure value.

A pointer to the maximum measure value.

Description

Returns the minimum and maximum measure values of the supplied coordinate reference object.

Returns


SE_coordref_get_srid

Returns the spatial refrence ID from the supplied coordinate system object.

Usage syntax

LONG SE_coordref_get_srid
(SE_COORDREF coordref,
LONG *srid);

Parameters

coordref

srid

A pointer to the coordinate reference.

The spatial refrence ID.

Description

Returns the spatial refrence ID from the supplied coordinate system object.

Returns


SE_coordref_get_xy

Returns the false x,y offset and scale factors of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_xy
(SE_COORDREF coordref,
LFLOAT *falsex,
LFLOAT *falsey,
LFLOAT *xyunits);

Parameters

coordref | A pointer to the coordinate reference.
falsex | A pointer to the false origin x-value.
falsey | A pointer to the false origin y-value.
xyunits | A pointer to the number of system units per x,y unit type.

Description

Returns the false x,y offset and scale factors of the supplied coordinate reference object.

Returns


SE_coordref_get_xy_envelope

Returns the xy extent of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_xy_envelope
(SE_COORDREF coordref,
SE_ENVELOPE *extent);

Parameters

coordref

extent

A pointer to the coordinate reference.

A pointer to an SE_ENVELOPE structure.

Description

Returns the xy extent of the supplied coordinate reference object.

Returns


SE_coordref_get_z

Returns the z-offset and scale factors of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_z
(SE_COORDREF coordref,
LFLOAT *falsez,
LFLOAT *zunits);

Parameters

coordref

falsez

zunits

A pointer to the coordinate reference.

A pointer to the false origin z-value.

A pointer to the number of system units per z-unit type.

Description

Returns the z-offset and scale factors of the supplied coordinate reference object.

Returns


SE_coordref_get_z_range

Returns the minimum and maximum z-values of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_get_z_range
(SE_COORDREF coordref,
LFLOAT *min_value,
LFLOAT *max_value);

Parameters

coordref

min_value

max_value

A pointer to the coordinate reference.

A pointer to the minimum z-value.

A pointer to the maximum z-value.

Description

Returns the minimum and maximum z-values of the supplied coordinate reference object.

Returns


SE_coordref_set_by_description

Sets the coordinate system for the supplied coordinate reference object with a description.

Usage syntax

LONG SE_coordref_set_by_description
(SE_COORDREF coordref,
const CHAR *description);

Parameters

coordref

description

A pointer to the coordinate reference.

A pointer to a character string representation of the coordinate system.

Description

Sets the coordinate system for the supplied coordinate reference object by a character string description. The coordinate system is defined as a character string description suitable for use by the ArcSDE function SE_coordref_set_by_description or the Projection Engine functions pe_projcs_from_string or pe_geogcs_from_string.

Returns


SE_coordref_set_by_id

Sets the coordinate system by ID for the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_set_by_id
(SE_COORDREF coordref,
LONG coordsys_id);

Parameters

coordref

coordsys_id

A pointer to the coordinate reference.

The predefined Projection Engine ID.

Description

Sets the coordinate system for the supplied coordinate reference object. The coordinate system is identified by the predefined Projection Engine object ID. There are over 800 predefined coordinate systems listed in the pef.h file. Setting the coordsys_id to 0 will define a coordinate system of type ‘unknown’.

Returns


SE_coordref_set_coordsys

Sets the coordinate system of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_set_coordsys
(SE_COORDREF coordref,
PE_COORDSYS cs);

Parameters

coordref

cs

A pointer to the coordinate reference.

A pointer to the coordinate system.

Description

Sets the coordinate system for the supplied coordinate reference object. The coordinate system is managed by the Projection Engine, and created with the Projection Engine functions pe_factory, pe_coordsys_new, pe_geogcs_new or pe_projcs_new.

Returns


SE_coordref_set_m

Sets the measure false origin and scale factor of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_set_m
(SE_COORDREF coordref,
LFLOAT falsem,
LFLOAT munits);

Parameters

coordref

falsem

munits

A pointer to the coordinate reference.

The measure false origin value.

The number of system units per measure unit.

Description

Sets the measure false origin and scale factor (‘munits’) of the supplied coordinate reference object. Specify the falsem and munits parameters in the coordinate system units.

Returns


SE_coordref_set_m_by_range

Calculates and sets the m false origin and scale factors of a coordinate reference object from the given range.

Usage syntax

LONG SE_coordref_set_m_by_range
(SE_COORDREF coordref,
LFLOAT min_mvalue,
LFLOAT max_mvalue);

Parameters

coordref

min_mvalue

max_mvalue

A pointer to the coordinate reference.

The minimum measure value.

The maximum measure value.

Description

Calculates and sets the measure offset and scale factor for the supplied coordinate reference object. Specify the measure values in the units of the coordinate system.

Returns


SE_coordref_set_xy

Sets the x,y false origin and scale factor of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_set_xy
(SE_COORDREF coordref,
LFLOAT falsex,
LFLOAT falsey,
LFLOAT xyunits);

Parameters

coordref | A pointer to the coordinate reference.
falsex | The false origin x-value.
falsey | The false origin y-value.
xyunits | The number of system units per x,y unit.

Description

Sets the x,y false origin and scale factor (‘xyunits’) of the supplied coordinate reference object. Specify the values in the units of the coordinate system.

Returns


SE_coordref_set_xy_by_envelope

Calculates and sets the x,y false origin and scale factor of the supplied coordinate reference object from the given envelope.

Usage syntax

LONG SE_coordref_set_xy_by_envelope
(SE_COORDREF coordref,
SE_ENVELOPE *extent);

Parameters

coordref

extent

A pointer to the coordinate reference.

A pointer to an SE_ENVELOPE structure.

Description

Calculates and sets the x,y false origin and scale factor (‘xyunits’) of the supplied coordinate reference object from the given envelope. Specify the values in the units of the coordinate system.

Returns


SE_coordref_set_z

Sets the z false origin and scale factor of the supplied coordinate reference object.

Usage syntax

LONG SE_coordref_set_z
(SE_COORDREF coordref,
LFLOAT falsez,
LFLOAT zunits);

Parameters

coordref

falsez

zunits

A pointer to the coordinate reference.

The false origin z-value.

The number of system units per z-unit.

Description

Sets the z false origin and scale factor of the supplied coordinate reference object. Specify the values in the units of the coordinate reference.

Returns


SE_coordref_set_z_by_range

Sets the z false origin and scale factor of the supplied coordinate reference object from the given range.

Usage syntax

LONG SE_coordref_set_z_by_range
(SE_COORDREF coordref,
LFLOAT min_zvalue,
LFLOAT max_zvalue);

Parameters

coordref

min_zvalue

max_zvalue

A pointer to the coordinate reference.

The minimum z-value.

The maximum z-value.

Description

Calculates and sets the z false origin and scale factor of the supplied coordinate reference object from the given range of z-values. Specify the values in the units of the coordinate reference.

Returns


SE_database_free_list

Frees a list of databases.

Usage syntax

void SE_database_free_list
(LONG num_databases,
CHAR **databases);

Parameters

num_databases

databases

The number of databases in the list.

A pointer to the address of a list of databases.

Description

SE_database_free_list frees a list of databases created by SE_database_list .


SE_database_list

Returns a list of databases or data sources for a DBMS instance.

Usage syntax

LONG SE_database_list
(SE_CONNECTION connection,
LONG *num_databases,
CHAR ***databases);

Parameters

connection

num_databases

databases

The current connection.

The number of databases in the current instance.

A pointer to the address of a list of databases.

Description

SE_database_list returns a list of available databases or data sources in a DBMS instance. Not all DBMS manufactures support this functionality, and the function will return num_databases=0 and databases=(CHAR **)NULL

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_DBMS_DOES_NOT_SUPPORT
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED


SE_database_use

Changes the database or data source being used by a connection.

Usage syntax

LONG SE_database_use
(SE_CONNECTION connection,
CHAR *database);

Parameters

connection

database

The current connection.

The database or data source to change to.

Description

SE_database_use changes the database or data source that a connection is using. You can get a list of available databases with SE_database_list . Not all DBMS manufacturers support this functionality.

Returns


SE_error_get_string

Returns a text string representation of an ArcSDE error code.

Usage syntax

LONG SE_error_get_string
(LONG error_code
CHAR *error_string);

Parameters

error_code | The integer error code.
error_string | The text string that describes the error.

Description

SE_error_get_string returns a text string representation of an ArcSDE error or warning code. The error_string should be at least SE_MAX_MESSAGE_LENGTH.

Returns


SE_file_close

Closes the specified file.

Usage syntax

LONG SE_file_close (SE_FILEINFO fileinfo);

Parameters

fileinfo

A pointer to an SE_FILEINFO object.

Description

Closes a specified file that was opened on a previous call to SE_file_open .

Returns


SE_file_create

Creates an external file for export.

Usage syntax

LONG SE_file_create
(SE_FILEINFO fileinfo,
SHORT num_columns,
const SE_COLUMN_DEF *column_defs);

Parameters

fileinfo | The fileinfo entry handle.
num_columns | The number of columns.
column_defs | An array of column definitions.

Description

SE_file_create creates the specified file.

Returns


SE_file_describe

Describes a file.

Usage syntax

LONG SE_file_describe
(SE_FILEINFO fileinfo,
SHORT *num_columns,
SE_COLUMN_DEF **column_defs);

Parameters

fileinfo | The connection handle.
num_columns | The number of columns.
column_defs | A pointer to an array of column definitions.

Description

SE_file_describe returns the column definitions for the specified external file.

Returns


SE_file_exist

Returns TRUE if the external file exists.

Usage syntax

BOOL SE_file_sort
(SE_FILEINFO fileinfo,
LONG *status);

Parameters

fileinfo | The SE_FILEINFO handle.
file | The file name.

Description

SE_file_exist returns TRUE if the specified external file exists.

Returns


SE_file_free_descriptions

Frees an array of column definitions allocated from SE_file_describe.

Usage syntax

Void SE_file_free_descriptions
(SE_COLUMN_DEF *column_defs);

Parameters

column_defs

A pointer to an array of SE_COLUMN_DEF structures to deallocate.

Description

SE_file_free_descriptions frees an array of SE_COLUMN_DEF structures that were allocated by the SE_file_describe function.


SE_file_open

Opens a file for import or updates.

Usage syntax

LONG SE_file_open (SE_FILEINFO fileinfo);

Parameters

connection

The SE_FILEINFO handle.

Description

SE_file_open opens the specified external file for import or update. You can update shapefiles only.

Returns


SE_fileinfo_create

Creates an SE_FILEINFO object.

Usage syntax

LONG SE_fileinfo_create (SE_FILEINFO *fileinfo);

Parameters

fileinfo

The SE_FILEINFO handle.

Description

SE_fileinfo_create creates an SE_FILEINFO object. You must call this function before working with a external file.

Returns


SE_fileinfo_duplicate

copies an SE_FILEINFO structure.

Usage syntax

LONG SE_fileinfo_duplicate
( const SE_FILEINFO src_fileinfo,
SE_FILEINFO tgt_fileinfo);

Parameters

src_fileinfo | A pointer to the source fileinfo structure.
tgt_fileinfo | A pointer to the target fileinfo structure.

Description

SE_fileinfo_dupicate copies an SE_FILEINFO structure which contains information about a external file object.

Returns


SE_fileinfo_free

Frees an SE_FILEINFO object.

Usage syntax

void SE_fileinfo_free (SE_FILEINFO fileinfo);

Parameters

fileinfo

The SE_FILEINFO handle.

Description

SE_fileinfo_free frees an SE_FILEINFO object.


SE_fileinfo_get_layerinfo

Returns the external file SE_LAYERINFO.

Usage syntax

LONG SE_fileinfo_get_layerinfo
(const SE_FILEINFO fileinfo,
SE_LAYERINFO layer);

Parameters

fileinfo | The SE_FILEINFO handle.
layer | A pointer to an SE_LAYERINFO object.

Description

SE_fileinfo_get_layerinfo returns the SE_LAYERINFO object associated with an external file.

Returns


SE_fileinfo_get_name

Returns the external file path and name.

Usage syntax

LONG SE_fileinfo_get_name
(const SE_FILEINFO fileinfo,
CHAR *name);

Parameters

fileinfo | The SE_FILEINFO handle.
name | A pointer to the external file path and name.

Description

SE_fileinfo_get_name returns the external file path and name. Set name to at least SE_MAX_PATH_LEN.

Returns


SE_fileinfo_get_type

Returns the external file's type.

Usage syntax

LONG SE_fileinfo_get_type
(const SE_FILEINFO fileinfo,
LONG *file_type,
CHAR *feat_class);

Parameters

fileinfo | The SE_FILEINFO handle.
file_type | Whether the external file is a coverage, shapefile, or export file.
feat_class | The feature type. Optional.

Description

SE_fileinfo_get_type returns the type of an external file. An external file can be a coverage, shapefile, or ArcSDE export format. The file_type parameter values are

SE_FILEINFO_OBJECT_TYPE_EXPORT_FMT

SE_FILEINFO_OBJECT_TYPE_SHAPEFILE

SE_FILEINFO_OBJECT_TYPE_COVERAGE

The feat_class parameter values depend on the external file type. If the file is a coverage, the values are

n Nil shape

p Point shape

s Line shape (spaghetti)

l Simple line shape

a Area shape

A Annotation

c CAD

3 3-D

+ multipart

M Measures

N Normalized

If the file is a shapefile, the values are

Arc

arcZ

arcM

point

pointZ

pointM

polygon

polygonZ

polygonM

multipoint

multipointZ

multipointM

If the file is a coverage, the values are

point

arc

polygon

node

annotation

route

region

The feature class type might have a subclass if needed, for example, route.bus71.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_FILEINFO_OBJECT
SE_INVALID_FILEINFO_OBJECT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_fileinfo_set_layerinfo

Sets the external file SE_LAYERINFO.

Usage syntax

LONG SE_fileinfo_set_layerinfo
(SE_FILEINFO fileinfo,
const SE_LAYERINFO layer);

Parameters

fileinfo | The SE_FILEINFO handle.
layer | A SE_LAYERINFO object.

Description

SE_fileinfo_set_layerinfo sets the SE_LAYERINFO object for an external file. If you’ve already set the entity type with SE_fileinfo_set_type , that value will take precedence.

Returns


SE_fileinfo_set_name

Sets the external file path and name.

Usage syntax

LONG SE_fileinfo_set_name
(SE_FILEINFO fileinfo,
const CHAR *name);

Parameters

fileinfo | The SE_FILEINFO handle.
name | The external file path and name.

Description

SE_fileinfo_set_name sets the external file path and name. Set name to SE_MAX_PATH_LEN.

Returns


SE_fileinfo_set_type

Sets the external file type.

Usage syntax

LONG SE_fileinfo_set_type
(SE_FILEINFO fileinfo,
LONG file_type,
CHAR *feat_class);

Parameters

fileinfo | The SE_FILEINFO handle.
file_type | The external file type.
feat_class | The spatial column name if the target is a layer.

Description

SE_fileinfo_set_type sets the external file type. The file_type parameter values are

SE_FILEINFO_OBJECT_TYPE_EXPORT_FMT

SE_FILEINFO_OBJECT_TYPE_SHAPEFILE

SE_FILEINFO_OBJECT_TYPE_COVERAGE

The feat_class parameter values depend on the external file type. If the file is a export file, the values are

n Nil shape

p Point shape

s Line shape (spaghetti)

l Simple line shape

a Area shape

A Annotation

c CAD

3 3-D

+ multipart

M Measures

N Normalized

If the file is a shapefile, the values are

Arc

arcZ

arcM

point

pointZ

pointM

polygon

polygonZ

polygonM

multipoint

multipointZ

multipointM

If the file is a coverage, the values are

point

arc

polygon

node

annotation

route

region

You can add a subclass if needed, for example, route.bus71.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_ALTER_OPERATION
SE_INVALID_FILEINFO_OBJECT
SE_INVALID_FILEINFO_OBJECT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_instance_configuration

Returns an ArcSDE instance configuration.

Usage syntax

LONG SE_instance_configuration
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_CONFIG *configuration);

Parameters

server

instance

configuration

The name of the server ArcSDE is running on.

The specific ArcSDE instance.

Pointer to the returned SE_INSTANCE_CONFIG structure.

Description

SE_instance_configuration returns the configuration of the specified instance on the specified server node.

typedef struct {

LONG max_connections;

LONG max_locks;

LONG max_state_locks;

LONG max_table_locks;

LONG max_object_locks;

LONG child_timeout;

LONG min_net_block_size;

LONG max_net_block_size;

LONG min_net_obj_count;

LONG max_mem_dissolve;

LONG max_blob_size;

LONG max_mem_blob;

LONG auto_commit_freq;

LONG max_init_feats;

LONG max_distinct;

LONG max_streams;

LONG stream_pool_size;

LONG max_layers;

LONG max_registrations;

LONG max_rastercolumns;

LONG shape_point_buf_size;

LONG attribute_buf_size;

LONG blob_buf_size;

LONG raster_buf_size;

LONG max_array_size;

LONG max_array_bytes;

LONG max_time_diff;

CHAR home_path[SE_MAX_PATH_LEN]; /* Path to SDE home dir */

CHAR log_path[SE_MAX_PATH_LEN]; /* Path to SDE log file dir */

CHAR tmp_path[SE_MAX_PATH_LEN]; /* Path to SDE temp file dir */

LONG dbms_id;

LONG dbms_properties;

LONG client_count; /* Connection count */

BOOL state_caching;

BOOL tcp_keepalive;

} SE_INSTANCE_CONFIG;

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_IOMGR_NOT_AVAILABLE
SE_INVALID_POINTER
SE_INVALID_SERVER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SERVICE_NOT_FOUND


SE_instance_control

Controls the state of the connected instance.

Usage syntax

LONG SE_instance_control
(const CHAR *server,
const CHAR *instance,
const CHAR *password,
LONG option,
LONG pid);

Parameters

server | The server name.
instance | The ArcSDE instance name.
password | The ArcSDE user password for this instance.
option | The control option.
pid | The server process ID.

Description

SE_instance_control controls the operation of an ArcSDE instance. You can shut down, pause, or restart an ArcSDE instance. You can also delete individual server processes or all currently connected servers.

The following control options are available:

SE_CONTROL_INSTANCE_START /* Starts the connection */

SE_CONTROL_INSTANCE_SHUTDOWN /* Shuts the connection down */

SE_CONTROL_INSTANCE_PAUSE /* Disallows further connections */

SE_CONTROL_INSTANCE_RESUME /* Allows connections again

(after pausing the instance) */

SE_CONTROL_INSTANCE_KILL /* Kills a specified server task */

SE_CONTROL_INSTANCE_KILL_ALL /* Kills all currently connected servers */

You need to specify the pid only when using the SE_CONTROL_INSTANCE_KILL control option.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_DBA_PASSWORD
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SERVER
SE_IOMGR_NOT_AVAILABLE
SE_INSTANCE_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND

Notes

• After a shutdown operation, the only valid operation on that handle is an SE_connection_free call.


SE_instance_free_locks

Frees memory allocated for a list of instance locks.

Usage syntax

void SE_instance_free_locks
(SE_INSTANCE_LOCK *lock_list,
LONG lock_count);

Parameters

lock_list

lock_count

Pointer to an array of SE_INSTANCE_LOCK structures.

The number of SE_INSTANCE_LOCK structures.

Description

A helper function to free locks allocated by SE_instance_get_locks .


SE_instance_free_state_locks

Frees memory allocated for a list of instance state locks.

Usage syntax

void SE_instance_free_state_locks
(SE_INSTANCE_STATE_LOCK *lock_list,
LONG lock_count);

Parameters

lock_list | Pointer to an array of SE_INSTANCE_STATE_LOCK structures.
lock_count | The number of SE_INSTANCE_STATE_LOCK structures.

Description

A helper function to free locks allocated by SE_instance_get_state_locks.


SE_instance_free_statistics

Frees memory allocated for a list of instance statistics.

Usage syntax

void SE_instance_free_statistics
(SE_INSTANCE_STATS *stats_list,
LONG stats_count);

Parameters

stats_list

stats_count

Pointer to an array of SE_INSTANCE_STATS structures.

The number of SE_INSTANCE_STATS structures.

Description

A helper function to free stats allocated by SE_instance_get_statistics.


SE_instance_free_table_locks

Frees memory allocated for a list of instance table locks.

Usage syntax

void SE_instance_free_table_locks
(SE_INSTANCE_TABLE_LOCK *lock_list,
LONG lock_count);

Parameters

lock_list Pointer to an array of SE_INSTANCE_TABLE_LOCK structures.

lock_count The number of SE_INSTANCE_TABLE_LOCK structures.

Description

A helper function to free locks allocated by SE_instance_get_table_locks.


SE_instance_free_users

Frees memory allocated for a list of instance users.

Usage syntax

void SE_instance_free_users
(SE_INSTANCE_USER *user_list,
LONG user_count);

Parameters

user_list Pointer to an array of SE_INSTANCE_USER structures.

user_count The number of SE_INSTANCE_USER structures.

Description

A helper function to free users allocated by SE_instance_get_users.


SE_instance_free_variables

Frees memory allocated for a list of environment variables.

Usage syntax

void SE_instance_free_variables
(CHAR **variables,
LONG var_count);

Parameters

variables Pointer to an array of environment variables.

var_count The number of environment variables.

Description

A helper function to free environment variables allocated by SE_instance_get_variables.


SE_instance_free_version_locks

Frees memory allocated for a list of instance version locks.

Usage syntax

void SE_instance_free_version_locks
(SE_INSTANCE_VERSION_LOCK *lock_list,
LONG lock_count);

Parameters

lock_list Pointer to an array of SE_INSTANCE_VERSION_LOCK structures.

lock_count The number of SE_INSTANCE_VERSION_LOCK structures.

Description

A helper function to free locks allocated by SE_instance_get_version_locks.


SE_instance_get_locks

Returns a list of layer locks in use on a specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_locks
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_LOCK **lock_list_addr,
LONG *lock_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
lock_list_addr | Pointer to an array of returned SE_INSTANCE_LOCK structures.
lock_count_addr | The number of SE_INSTANCE_LOCK structures returned.

Description

SE_instance_get_locks returns an array of SE_INSTANCE_LOCK structures, one for each layer lock currently in place on the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_instance_free_locks.

The following information is returned in the SE_INSTANCE_LOCK structure:

typedef struct {

LONG pid;

SHORT layer_id;

LONG lock_type;

} SE_INSTANCE_LOCK;

The lock types are

SE_INSTANCE_LAYER_READ_LOCK

SE_INSTANCE_LAYER_WRITE_LOCK

SE_INSTANCE_AREA_READ_LOCK

SE_INSTANCE_AREA_WRITE_LOCK

SE_INSTANCE_AUTO_LOCK

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_INVALID_SERVER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_objectlocks

Returns a list of object locks in use on a specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_objectlocks
(const CHAR *server,
const CHAR *instance,
SE_OBJECTLOCKINFO **lock_list_addr,
LONG *lock_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
lock_list_addr | Pointer to an array of returned SE_OBJECTLOCKINFO structures.
lock_count_addr | The number of SE_OBJECTLOCKINFO structures returned.

Description

SE_instance_get_objectlocks returns an array of SE_OBJECTLOCKINFO structures, one for each lock currently in place on the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_objectlock_free_list.

The following information is returned in the SE_INSTANCE_OBJECT_LOCK structure:

Application ID
Object ID

Object type
Lock mode
Owner

The lock types are

SE_OBJECTLOCK_NO_LOCK_SET

SE_OBJECTLOCK_SHARED_LOCK

SE_OBJECTLOCK_EXCLUSIVE_LOCK

SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_state_locks

Returns a list of state locks in use on a specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_state_locks
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_STATE_LOCK **lock_list_addr,
LONG *lock_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
lock_list_addr | Pointer to an array of returned SE_INSTANCE_STATE_LOCK structures.
lock_count_addr | The number of SE_INSTANCE_STATE_LOCK structures returned.

Description

SE_instance_get_state_locks returns an array of SE_INSTANCE_STATE_LOCK structures, one for each lock currently in place on the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_instance_free_state_locks.

The following information is returned in the SE_INSTANCE_STATE_LOCK structure:

typedef struct _SE_InstanceStateLock {

LONG pid; /* Gsrvr process id that holds this lock. */

LONG state_id; /* State being locked. */

SHORT lock_type; /* Shared, exclusive or table. */

} SE_INSTANCE_STATE_LOCK;

The lock types are

SE_STATE_TREE_SHARED_LOCK

SE_STATE_TREE_EXCLUSIVE_LOCK

SE_STATE_SHARED_LOCK

SE_STATE_EXCLUSIVE_LOCK

SE_STATE_SHARED_AUTOLOCK

SE_STATE_EXCLUSIVE_AUTOLOCK

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_statistics

Gets statistics on the specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_statistics
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_STATS **stats_list_addr,
LONG *stats_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
stats_list_addr | Pointer to an array of SE_INSTANCE_STATS structures.
stats_count_addr | The number of SE_INSTANCE_STATS structures returned.

Description

SE_instance_get_statistics returns an array of SE_INSTANCE_STATS structures, one for each user currently connected to the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_instance_free_statistics.

The following information is returned in the SE_INSTANCE_STATS structure for each user:

typedef struct {

LONG pid;

LONG rcount; /* Total # of reads by process */

LONG wcount; /* Total # of writes by process */

LONG opcount; /* Total # of operations by process */

LONG numlocks; /* Total # of locks held by this pid */

LONG fb_partial; /* Total # of partial features shipped by this process */

LONG fb_count; /* Total # of buffers loaded by this process */

LONG fb_fcount; /* Total # of features buffered by this process */

LONG fb_kbytes; /* Total 1K bytes of buffered data by this process */

} SE_INSTANCE_STATS;

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_INVALID_SERVER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_table_locks

Returns a list of table locks in use on a specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_table_locks
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_TABLE_LOCK **lock_list_addr,
LONG *lock_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
lock_list_addr | Pointer to an array of returned SE_INSTANCE_TABLE_LOCK structures.
lock_count_addr | The number of SE_INSTANCE_TABLE_LOCK structures returned.

Description

SE_instance_get_table_locks returns an array of SE_INSTANCE_TABLE_LOCK structures, one for each lock currently in place on the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_instance_free_table_locks.

The following information is returned in the SE_INSTANCE_TABLE_LOCK structure:

typedef struct _SE_InstanceTableLock {

LONG pid; /* Gsrvr process id that holds this lock. */

LONG registration_id; /* Table being locked. */

SHORT lock_type; /* Shared, exclusive or table. */

} SE_INSTANCE_TABLE_LOCK;

The lock types are

SE_TABLE_SHARED_SCHEMA_LOCK

SE_TABLE_EXCLUSIVE_SCHEMA_LOCK

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_users

Gets the users of the specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_users
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_USER **user_list_addr,
LONG *user_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
user_list_addr | Pointer to an array of SE_INSTANCE_USER structures.
user_count_addr | The number of SE_INSTANCE_USER structures returned.

Description

SE_instance_get_users returns an array of SE_INSTANCE_USER structures, one for each user currently connected to the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done with it by a call to SE_instance_free_users. The following information is returned in the SE_INSTANCE_USER structure for each user:

typedef struct {

LONG svrpid; /* Forked server task pid */

LONG cstime; /* Connection start time */

BOOL xdr_needed; /* Use XDR Boolean */

CHAR sysname[SE_MAX_OWNER_LEN + 1]; /* Client operating system name */

CHAR nodename[SE_MAX_OWNER_LEN + 1]; /* Client host node name */

CHAR username[SE_MAX_OWNER_LEN + 1]; /* User name */

} SE_INSTANCE_USER;

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_INVALID_SERVER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_variables

Returns a list of I/O manager environment variables.

Usage syntax

LONG SE_instance_get_variables
(const CHAR *server,
const CHAR *instance,
CHAR ***variables,
LONG *var_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
variables | Pointer to an array of environment variables.
var_count_addr | The number of variables returned.

Description

SE_instance_get_variables returns a pointer to a list of the I/O manager’s environment variables. The variables are in the form ‘<variable>=<value>’. The application should free the list when it is done by calling SE_instance_free_variables.

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INVALID_POINTER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_get_version_locks

Returns a list of version locks in use on a specified ArcSDE instance.

Usage syntax

LONG SE_instance_get_version_locks
(const CHAR *server,
const CHAR *instance,
SE_INSTANCE_VERSION_LOCK **lock_list_addr,
LONG *lock_count_addr);

Parameters

server | The server name.
instance | The ArcSDE instance name.
lock_list_addr | Pointer to an array of returned SE_INSTANCE_VERSION_LOCK structures.
lock_count_addr | The number of SE_INSTANCE_VERSION_LOCK structures returned.

Description

SE_instance_get_version_locks returns an array of SE_INSTANCE_VERSION_LOCK structures, one for each lock currently in place on the specified ArcSDE instance on the specified node. The default instance name is ‘esri_sde’. The application should free the list when it is done by calling SE_instance_free_version_locks.

The following information is returned in the SE_INSTANCE_VERSION_LOCK structure:

typedef struct _SE_InstanceVersionLock {

LONG pid; /* Gsrvr process id that holds this lock. */

LONG version_id; /* Version being locked. */

SHORT lock_mode; /* Shared or exclusive. */

} SE_INSTANCE_VERSION_LOCK;

The lock types are

SE_VERSION_SHARED_LOCK

SE_VERSION_EXCLUSIVE_LOCK

SE_VERSION_EXCLUSIVE_AUTOLOCK

Returns

SE_SUCCESS
SE_FAILURE
SE_INSTANCE_NOT_AVAILABLE
SE_INSTANCE_TOO_EARLY
SE_INVALID_POINTER
SE_IOMGR_NOT_AVAILABLE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SERVICE_NOT_FOUND


SE_instance_start

Starts an ArcSDE instance on the current node.

Usage syntax

LONG SE_instance_start
(const CHAR *sdehome,
const CHAR *password);

Parameters

sdehome | The location of the SDEHOME directory.
password | The ArcSDE user password for this instance.

Description

Starts an ArcSDE instance on the current node.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_SDEHOME
SE_INVALID_USER
SE_IOMGR_NOT_FOUND
SE_OUT_OF_CLMEM
SE_SDEHOME_NOT_SET
SE_SYSTEM_IS_CLIENT_ONLY

Notes

• The password is for the connection to the SDE DBMS account. ArcSDE uses the sdehome parameter if it is not NULL; otherwise, it requires a valid SDEHOME system variable.

• The instance may write to standard error. You can catch this by redirecting that stream.


SE_instance_status

Gets status information on an ArcSDE instance.

Usage syntax

LONG SE_instance_status
(const CHAR *server,
const CHAR *instance,
SE_instance_status *istatus);

Parameters

server | The server name.
instance | The ArcSDE instance name.
istatus | Pointer to the SE_INSTANCE_STATUS structure.

Description

SE_instance_status returns the current status of the specified instance running on the specified server node. The default instance name is ‘esri_sde’.

typedef struct {

SE_VERSION version; /* Release version of specified instance */

LONG connections; /* Number of current connections to SDE on node */

LONG system_mode; /* Accepting connections or blocking */

} SE_INSTANCE_STATUS;

The system_mode parameter option are

SE_INSTANCE_ACCEPTING

SE_INSTANCE_BLOCKING

Returns


SE_layer_alter

Alters a layer’s characteristics.

Usage syntax

LONG SE_layer_alter
(SE_CONNECTION connection,
const SE_LAYERINFO layer);

Parameters

connection | The connection handle.
layer | An SE_LAYERINFO structure to define the new characteristics of the layer.

Description

SE_layer_alter changes those characteristics of a layer that can be modified after layer creation. The layer to modify is specified by the layer_id in the SE_LAYERINFO structure.

You can change the following characteristics:

• Shape types

• Layer description

• Grid sizes

• Coordinate system

• Load mode

You can alter a layer to allow the storage of annotations or CAD elements, but you can’t remove them from the layer. If you try to do so, the SE_INVALID_ALTER_OPERATION function is returned.

A convenient method to change a particular characteristic of a layer is to retrieve the existing layer definition into the SE_LAYERINFO pointer with SE_layer_get_info or SE_layer_get_info_by_id. Modify the characteristic with one of the SE_layerinfo_set_* functions.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_LAYER_NUMBER
SE_INVALID_ALTER_OPERATION
SE_LAYER_NOEXIST
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_NO_ACCESS
SE_OUT_OF_LOCKS
SE_STREAM_IN_PROGRESS

Notes

• If any of the grid sizes are modified, the spatial index is deleted and re-created.

• Only the coordinate system string of the layer’s coordinate reference can be changed. Changing the coordinate system string will change the meta-data but won’t change the actual data values. To reproject data, see SE_shape_change_coordref in the ‘Shape functions’ chapter.

• Shapes are deleted if their shape type is not allowed after the change.


SE_layer_calculate_extent

Gets the extent of all features in the layer matching the where clause.

Usage syntax

LONG SE_layer_calculate_extent
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
BOOL use_index,
SE_ENVELOPE *e,
LFLOAT *minz,
LFLOAT *maxz,
const SE_SQL_CONSTRUCT *construct);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
use_index | Use the spatial index cells to compute an approximate extent if TRUE.
e | The address of the SE_ENVELOPE structure that will receive the features’ extent.
minz | The address of the minimum z-value of the feature’s envelope.
maxz | The address of the maximum z-value of the feature’s envelope.
construct | An optional SE_SQL_CONSTRUCT structure.

Description

SE_layer_calculate_extent returns the extent (the minimum bounding box) of the features in a layer. If a where clause is specified, only those shapes satisfying the query are used to calculate the extent. The SE_SQL_CONSTRUCT where clause can include related tables.

typedef struct {

LONG num_tables; /* Number of tables */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT

If use_index is TRUE, an approximate envelope for the layer is computed by scanning the spatial index cells, instead of the actual feature extents. This is much faster but results in an envelope which is slightly larger than the actual minimum bounding rectangle for the collection of features.

The SE_SQL_CONSTRUCT may be used to calculate the extent constrained by a where clause, with or without joining to related tables.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_ROW_NOEXIST
SE_INVALID_POINTER
SE_INVALID_SQL
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

If the layer does not contain any records or if the where clause does not return any records any empty envelope will be returned.


SE_layer_create

Spatially enables a DBMS table.

Usage syntax

LONG SE_layer_create
(SE_CONNECTION connection,
const SE_LAYERINFO layer,
LONG initialf,
LONG avg_points);

Parameters

connection | The connection handle.
layer | A pointer to the layer.
initialf | A positive integer estimating the initial requirement for the number of features to store in this layer. Used for database allocation purposes.
avg_points | The estimated average number of points per feature for this map layer. Used for database allocation purposes.

Description

SE_layer_create spatially enables an existing DBMS table. The term spatially enables means adding spatial information to any DBMS table. SE_layer_create designates a column as the spatial column. If the column set in the spatial_column field of the SE_LAYERINFO object does not exist, ArcSDE will add it. If it does exist, all rows must have a NULL value. The spatial column must be the appropriate type for the database and storage type being used:

Database Storage Spatial column type

Oracle Binary Integer

Oracle Normalized Integer

Oracle spatial type SDO_GEOMETRY

DB2 spatial type ST_Geometry

Informix spatial type ST_Geometry

SQL Server Binary Integer

SE_layer_create also builds a spatial index and any geometry schema required by the storage method employed. Spatial information includes the type of spatial feature such as area or line, projection information, false origins, units of measure, and geographic extent.

Returns

SE_SUCCESS
SE_FAILURE
SE_ATT_NOEXIST
SE_DB_IO_ERROR
SE_INVALID_GRIDSIZE
SE_INVALID_ETYPE_MASK
SE_INVALID_LAYER_NUMBER
SE_INVALID_NOT_NULL
SE_INVALID_POINTER
SE_LAYER_EXISTS
SE_NET_FAILURE
SE_NOT_TABLE_OWNER
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• The required parameters of the SE_LAYERINFO structure to set when creating a layer are:

table and spatial column
shape types
grid sizes

• The optional parameters that you can set in SE_LAYERINFO are:

description
envelope
optimal array size
coordinate reference
configuration keyword

• If the configuration keyword in set in the SE_LAYERINFO object, then set the initialf and avg_pts arguments to zero. If either of these are nonzero, the configuration keyword is ignored.

• Initially, only the user SDE and the owner of the layer have access to the layer. Grant access to other users with SE_layer_grant_access .


SE_layer_delete

Deletes a layer.

Usage syntax

LONG SE_layer_delete
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.

Description

SE_layer_delete deletes the spatial components from a spatially enabled table. This operation does the following:

• Deletes the layer record from the layers table.

• Deletes the feature and spatial index tables for the layer.

• Drops the trigger on the spatial column in the user’s spatially enabled table.

• Sets the value of the spatial column to NULL for all rows in the spatially enabled table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_LAYER_NOEXIST
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_LOCKS
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TRANS_IN_PROGRESS

Notes

• If the caller of this function is neither the owner of the table nor the ArcSDE administrator, an error is returned.

• If an ArcSDE layer has become corrupted for some reason (e.g., the user has dropped one of the internal ArcSDE tables or deleted the layer definition record accidentally), SE_layer_delete still attempts to delete the layer.

• Use SE_layer_truncate to delete features but retain the layer definition.


SE_layer_free_info_list

Releases memory allocated for a list of layer structures.

Usage syntax

void SE_layer_free_info_list
(LONG count,
SE_LAYERINFO *layer_list);

Parameters

count | The number of layers in the list.
layer_list | Address of an SE_LAYERINFO pointer set to a dynamically allocated space which contains an array of SE_LAYERINFO structures.

Description

SE_layer_free_info_list frees the memory allocated for the list of layer structures returned by SE_layer_get_info_list .


SE_layer_free_lock

Releases a layer lock.

Usage syntax

LONG SE_layer_free_lock
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.

Description

This function removes any lock held by the caller for the specified layer.

Returns


SE_layer_free_locks

Releases memory allocated for the list of locks returned by SE_layer_get_locks .

Usage syntax

void SE_layer_free_locks
( SE_LAYER_LOCKS *locks);

Parameters

locks

A pointer to an SE_LAYER_LOCKS structure.

Description

Releases the list of locks returned by SE_layer_get_locks . Use SE_layer_free_lock to release a layer lock.

Returns


SE_layer_get_info

Retrieves information about a layer.

Usage syntax

LONG SE_layer_get_info
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
SE_LAYERINFO layer);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
layer | Pointer to a location to receive the SE_LAYERINFO definition.

Description

SE_layer_get_info obtains the definition of a specific layer. Information about the layer is maintained in an SE_LAYERINFO structure. The SE_LAYERINFO object must be a valid object created by SE_layerinfo_create .

Returns


SE_layer_get_info_by_id

Retrieves information about a layer by the ID.

Usage syntax

LONG SE_layer_get_info_by_id
(SE_CONNECTION connection,
LONG layer_id,
SE_LAYERINFO layer);

Parameters

connection | The connection handle.
layer_id | The layer ID.
layer | Pointer to a location to receive the SE_LAYERINFO definition.

Description

SE_layer_get_info_by_id obtains the definition of a specific layer. Information about the layer is maintained in an SE_LAYERINFO structure. The SE_LAYERINFO object must be a valid object created by SE_layerinfo_create .

Returns


SE_layer_get_info_list

Retrieves an array of SE_LAYERINFO structures for all accessible layers.

Usage syntax

LONG SE_layer_get_info_list
(SE_CONNECTION connection,
SE_LAYERINFO **layer_list,
LONG *count_addr);

Parameters

connection | The connection handle.
layer_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_LAYERINFO structures.
count_addr | The number of layers in the SE_LAYERINFO list.

Description

SE_layer_get_info_list returns an array of SE_LAYERINFO pointers that are defined. The total number of layer structures is returned in the count_addr parameter. The application must free the layer_list to reclaim the memory allocated by this function. Only layers for which the caller has at least SELECT permissions are returned.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_layer_free_info_list .


SE_layer_get_locks

Retrieves information about the locks on a layer.

Usage syntax

LONG SE_layer_get_locks
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG *num_locks
SE_LAYER_LOCKS **locks);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
num_locks | The number of locks returned.
locks | Pointer to a location to receive the lock information structures.

Description

SE_layer_get_locks retrieves information about the locks for a specific layer. The information is returned in an array of SE_LAYER_LOCKS structures.

typedef struct {

CHAR username[SE_MAX_OWNER_LEN + 4];

LONG lock_type; /* The lock type */

SE_ENVELOPE bounds; /* The lock extrema */

} SE_LAYER_LOCKS;

Returns


SE_layer_get_si_statistics

Retrieves statistical information about a layer’s spatial indexes.

Usage syntax

LONG SE_layer_get_si_statistics
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
SE_SI_STATS *stats);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
stats | Pointer to a location to receive the SE_SI_STATS.

Description

SE_layer_get_si_statistics returns the spatial index statistics for a specific layer. Statistical information about the layer is maintained in an SE_SI_STATS structure.

typedef struct {

CHAR table[SE_QUALIFIED_TABLE_NAME]; /* Spatial table */

CHAR column[SE_MAX_COLUMN_LEN]; /* Spatial column */

LONG nGrids; /* # of spatial index grids */

SE_GRID_STATS grids[3]; /* Individual grid statistics */

} SE_SI_STATS;

The individual spatial index grid statistics are maintained in an SE_GRID_STATS structure.

typedef struct {

LONG features; /* Features indexed by this grid level */

LONG indexRecords; /* Index records in this grid level */

LONG groupCounts[8]; /* Index rec count by group: <=4, >4, >10, >25,

>50, >100, >250, >500 */

LONG maxFPG; /* Maximum number of features per grid cell */

LONG gridCells; /* # of grid cells in this level */

LONG featuresInside1; /* # of features wholly inside one grid cell */

} SE_GRID_STATS;

Returns


SE_layer_get_statistics

Obsolete. Retrieves statistical information about a layer.

Usage syntax

LONG SE_layer_get_statistics
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
SE_LAYER_STATS *stats);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
stats | Pointer to a location to receive the statistics.

Description

SE_layer_get_statistics obtains the statistics for a specific layer. Statistical information about the layer is maintained in an SE_LAYER_STATS structure.

typedef struct { /*** Layer statistics structure ***/

LONG layer_id; /* Layer ID. */

LONG NILs; /* # of nil shapes in layer */

LONG POINTs,MultiPOINTs; /* # of points and multipoints in layer */

LONG LINEs,MultiLINEs; /* # of lines and multilines in layer */

LONG SIMPLE_LINEs,MultiSIMPLE_LINEs; /* # of simples lines and

simple multilines */

LONG AREAs,MultiAREAs; /* # of areas and multiareas in layer */

LONG TotalFeatures; /* Total # of shapes in layer */

SE_ENVELOPE bounds; /* Layer extrema */

LONG lastModified; /* POSIX time_t date last modified */

LONG minFid,maxFid; /* Minimum and maximum IDs in layer */

LONG minPoints,maxPoints;/* Min/max # of points in layer shapes */

LFLOAT minArea,maxArea; /* Min and max areas of area shapes */

LFLOAT minLength,maxLength;/* Min and max linear shape lengths */

LFLOAT averagePoints; /* Average number of points/shapes */

LFLOAT averageArea; /* Average area/shape */

LFLOAT averageLength; /* Average length/shape */

} SE_LAYER_STATS;

Returns


SE_layer_grant_access

Sets access privileges for a layer.

Usage syntax

LONG SE_layer_grant_access
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG privilege,
BOOL grant,
const CHAR *user);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
privilege | The access privilege to grant.
grant | If TRUE, the user may grant access privileges to other users.
user | The user name.

Description

SE_layer_grant_access gives a user the specified level of privileges to the specified layer. If grant is TRUE, then the user in turn can pass the privileges on to another user. The access privileges that can be granted are:

SE_SELECT_PRIVILEGE /* User can view the layer table contents */

SE_UPDATE_PRIVILEGE /* User can modify the layer table contents */

SE_INSERT_PRIVILEGE /* User can insert new records in the layer table */

SE_DELETE_PRIVILEGE /* User can delete records from the layer table */

Grant multiple privileges to a user with the OR operator and the appropriate privilege masks.

Returns


SE_layer_lock

Locks the specified layer.

Usage syntax

LONG SE_layer_lock
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG lock_mode);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
lock_mode | Type of lock (SE_WRITE_LOCK or SE_READ_LOCK).

Description

SE_layer_lock locks an entire map layer. SE_WRITE_LOCK allows only the caller to modify the data. Other clients can retrieve but not modify the data within the layer. Only one SE_WRITE_LOCK lock at a time may exist on a layer. SE_READ_LOCK locks the layer against modifications. Multiple SE_READ_LOCK locks are possible on the same layer. If the table doesn’t exist or isn’t a registered table, SE_TABLE_NOREGISTERED is returned.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_LOCK_MODE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_LOCKS
SE_SDE_NOT_STARTED
SE_TABLE_NOREGISTERED

Notes

• This function removes any lock for the specified layer held by the caller, regardless of successful completion. The current existing lock is removed before trying to add the new lock. If a conflict exists, the new lock won't be added, but the previous lock has still been removed.


SE_layer_lock_area

Lock a specific area in the layer.

Usage syntax

LONG SE_layer_lock_area
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG lock_mode,
const SE_ENVELOPE *area);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
lock_mode | Type of lock (SE_WRITE_LOCK or SE_READ_LOCK).
area | Pointer to an SE_ENVELOPE that specifies the location of the lock.

Description

SE_layer_lock_area locks a layer within a rectangular geographic area. If an SE_WRITE_LOCK is obtained successfully, other users can retrieve but not modify spatial data within the area. SE_READ_LOCK locks may overlap each other. SE_WRITE_LOCK locks may not overlap.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_ENVELOPE
SE_INVALID_LOCK_MODE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_LOCKS
SE_SDE_NOT_STARTED

Notes

• This function removes any lock for the specified layer held by the caller, regardless of successful completion. The current existing lock is removed before trying to add the new lock. If a conflict exists, the new lock won't be added, but the previous lock has still been removed.


SE_layer_modify_lock

Changes the area or type of an existing lock.

Usage syntax

LONG SE_layer_modify_lock
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG new_lock_mode,
const SE_ENVELOPE *area);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
new_lock_mode | The new lock type (SE_WRITE_LOCK or SE_READ_LOCK).
area | Pointer to an SE_ENVELOPE structure that specifies either the window to lock or NULL.

Description

SE_layer_modify_lock modifies an existing lock on an area or the entire layer. It attempts to change the lock to ‘new_lock_mode’ and to make the lock area equal to the area specified. You can modify both the lock mode and the lock area. If area is NULL, the new lock is for the entire map layer. If an area is specified, the new lock is an area lock.

If modifying the lock would result in an SE_LOCK_CONFLICT, the existing lock remains unchanged. If no lock currently exists, the function returns SE_NO_LOCKS without creating the new lock.

Returns

SE_SUCCESS
SE_INVALID_ENVELOPE
SE_INVALID_LOCK_MODE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_NO_LOCKS
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED

Notes

• If the expansion of an area lock’s envelope causes an SE_LOCK_CONFLICT, the current area lock for the layer is left unchanged.


SE_layer_revoke_access

Removes access privileges from a layer.

Usage syntax

LONG SE_layer_revoke_access
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG privilege,
const CHAR *user);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
privilege | The access privilege to revoke.
user | The user name.

Description

SE_layer_revoke_access removes the specified privileges from a user for the specified layer. The access privileges are:

SE_SELECT_PRIVILEGE /* User can view the layer table contents */

SE_UPDATE_PRIVILEGE /* User can modify the layer table contents */

SE_INSERT_PRIVILEGE /* User can insert new records in the layer table */

SE_DELETE_PRIVILEGE /* User can delete records from the layer table */

Revoke multiple privileges for a user with the OR operator and the appropriate privilege masks.

Returns


SE_layer_shape_attribute_name

Returns the column name for a specified shape attribute for a connection and table.

Usage syntax

LONG SE_layer_shape_attribute_name
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
LONG attr_code,
CHAR *attr_name);

Parameters

connection | The connection handle.
table | The table name.
column | The column name.
attr_code | The macro code for the attribute.
attr_name | The attribute name.

Description

SE_layer_shape_attribute_name returns the column name for a specified shape attribute for a connection and table for use in an SQL statement. Some examples are shape_col.area or area(shape_col). Currently, you can access shape attributes using the <spatial_column>.<attribute> format. Some DBMSs in the future may not support this convention. To access the shape’s attributes, use SE_layer_shape_attribute_name . Set the length of the attr_name argument to SE_QUALIFIED_COLUMN_NAME.

The attr_code argument accepts the following values:

SE_SHAPE_ATTRIBUTE_NUMOFPTS 0

SE_SHAPE_ATTRIBUTE_ENTITY 1

SE_SHAPE_ATTRIBUTE_XMIN 2

SE_SHAPE_ATTRIBUTE_XMAX 3

SE_SHAPE_ATTRIBUTE_YMIN 4

SE_SHAPE_ATTRIBUTE_YMAX 5

SE_SHAPE_ATTRIBUTE_ZMIN 6

SE_SHAPE_ATTRIBUTE_ZMAX 7

SE_SHAPE_ATTRIBUTE_MMIN 8

SE_SHAPE_ATTRIBUTE_MMAX 9

SE_SHAPE_ATTRIBUTE_AREA 10

SE_SHAPE_ATTRIBUTE_LENGTH 11

SE_SHAPE_ATTRIBUTE_TEXT 12

Returns


SE_layer_truncate

Deletes all records from a layer.

Usage syntax

LONG SE_layer_truncate
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column);

Parameters

connection | The connection handle.
table | The table name.
column | The spatial column name.

Description

SE_layer_truncate deletes the shapes of a spatially enabled table’s spatial column. It does not remove the layer definition. This function can be significantly faster than issuing a delete statement with SE_stream_prepare_sql .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_LOCK_CONFLICT
SE_NO_PERMISSIONS
SE_OUT_OF_LOCKS
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TRANS_IN_PROGRESS


SE_layerinfo_create

Creates an SE_LAYERINFO structure.

Usage syntax

LONG SE_layerinfo_create
(const SE_COORDREF coordref,
SE_LAYERINFO *layer);

Parameters

coordref

layer

A pointer to an SE_COORDREF structure.

A pointer to the layer structure.

Description

SE_layerinfo_create allocates and initializes an SE_LAYERINFO structure which contains information about a layer. If the SE_COORDREF is NULL, a default coordinate reference is initialized.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_LAYERINFO object before using any other function that requires an SE_LAYERINFO pointer.


SE_layerinfo_duplicate

Copies an SE_LAYERINFO structure.

Usage syntax

LONG SE_layerinfo_duplicate
(const SE_LAYERINFO src_layer,
SE_LAYERINFO tgt_layer);

Parameters

src_layer

tgt_layer

A pointer to the source layer structure.

A pointer to the target layer structure.

Description

SE_layerinfo_duplicate copies an SE_LAYERINFO structure which contains information about a layer.

Returns


SE_layerinfo_free

Releases memory allocated for an SE_LAYERINFO structure.

Usage syntax

void SE_layerinfo_free (SE_LAYERINFO layer);

Parameters

layer

The pointer to a layer structure.

Description

SE_layerinfo_free frees the memory allocated for an SE_LAYERINFO structure returned by SE_layerinfo_create .


SE_layerinfo_get_access

Retrieves the privilege bitmask for a layer.

Usage syntax

LONG SE_layerinfo_get_access
(const SE_LAYERINFO layer,
LONG *privileges);

Parameters

layer | The layerinfo handle.
privileges | A pointer to the privileges.

Description

SE_layerinfo_get_access obtains the privileges allowed for a specific layer. This function returns meaningful information for an SE_LAYERINFO object that describes an existing layer only. The privileges are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

Returns


SE_layerinfo_get_array_size

Retrieves the optimal array size for the specified layer.

Usage syntax

LONG SE_layerinfo_get_array_size
(const SE_LAYERINFO layer,
LONG *optimal_array_size,
struct tm *last_calculated_date);

Parameters

layer | The layerinfo handle.
optimal_array_size | A pointer to the optimal array size value.
last_calculated_date | A pointer to the date when the optimal array size was calculated.

Description

SE_layerinfo_get_array_size retrieves the optimal array size and when it was last calculated for a specific layer. If the LAYERINFO is not the result of fetching a layer definition operation, then the date is not set yet and the struct tm is set to zero.

Returns


SE_layerinfo_get_coordref

Retrieves the coordinate reference for a layer.

Usage syntax

LONG SE_layerinfo_get_coordref
(const SE_LAYERINFO layer,
SE_COORDREF coordref);

Parameters

layer

coordref

The layerinfo handle.

A pointer to the coordinate reference of the layer.

Description

SE_layerinfo_get_coordref retrieves the coordinate reference for a specific layer. The coordinate reference object must be a valid SE_COORDREF object created by SE_coordref_create .

Returns


SE_layerinfo_get_creation_date

Retrieves the creation date of a layer.

Usage syntax

LONG SE_layerinfo_get_creation_date
(const SE_LAYERINFO layer,
struct tm *date);

Parameters

layer

date

The layerinfo handle.

A creation date of the layer.

Description

SE_layerinfo_get_creation_date retrieves the creation date of a specific layer. This function returns meaningful information for an SE_LAYERINFO object that describes an existing layer only.

Returns


SE_layerinfo_get_creation_keyword

Retrieves the layer’s configuration keyword.

Usage syntax

LONG SE_layerinfo_get_creation_keyword
(const SE_LAYERINFO layer,
CHAR *config_keyword);

Parameters

layer

config_keyword

The layerinfo handle.

The configuration keyword of a layer.

Description

SE_layerinfo_get_creation_keyword retrieves the configuration keyword for a specific layer. The config_keyword parameter should be at least SE_MAX_CONFIG_KEYWORD_LEN bytes long.

Returns


SE_layerinfo_get_description

Retrieves the layer description.

Usage syntax

LONG SE_layerinfo_get_description
(const SE_LAYERINFO layer,
CHAR *description);

Parameters

layer

description

The layerinfo handle.

The layer description.

Description

SE_layerinfo_get_description retrieves the description for a specific layer. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_layerinfo_get_envelope

Retrieves the layer envelope.

Usage syntax

LONG SE_layerinfo_get_envelope
(const SE_LAYERINFO layer,
SE_ENVELOPE *envelope);

Parameters

layer

envelope

The layerinfo handle.

A pointer to an SE_ENVELOPE structure.

Description

SE_layerinfo_get_envelope returns the user-defined envelope of a specific layer. This envelope is not necessarily the ‘true’ calculated envelope of the layer’s features.

Returns


SE_layerinfo_get_grid_sizes

Retrieves the spatial index grid sizes for a layer.

Usage syntax

LONG SE_layerinfo_get_grid_sizes
(const SE_LAYERINFO layer,
LFLOAT *grid_size,
LFLOAT *grid_size2,
LFLOAT *grid_size3);

Parameters

layer | The layerinfo handle.
grid_size | A pointer to the grid size of a layer.
grid_size2 | A pointer to the second level grid size of a layer.
grid_size3 | A pointer to the third level grid size of a layer.

Description

SE_layerinfo_get_grid_sizes returns the spatial index grid sizes for a specific layer.

Returns


SE_layerinfo_get_id

Retrieves the layer ID.

Usage syntax

LONG SE_layerinfo_get_id
(const SE_LAYERINFO layer,
LONG *layer_id);

Parameters

layer

layer_id

The layerinfo handle.

A pointer to the layer ID.

Description

SE_layerinfo_get_id retrieves the ID of a layer. This function returns meaningful information for an SE_LAYERINFO object that describes an existing layer only.

Returns


SE_layerinfo_get_minimum_id

Retrieves the minimum FID allowed for the layer.

Usage syntax

LONG SE_layerinfo_get_minimum_id
(const SE_LAYERINFO layer,
ULONG *minimum_id);

Parameters

layer

minimum_id

The layerinfo handle.

A pointer to the minimum FID value.

Description

SE_layerinfo_get_minimum_id retrieves the minimum FID allowed in the layer. This function returns meaningful information for an SE_LAYERINFO object that describes an existing layer only.

Returns


SE_layerinfo_get_shape_types

Retrieves the allowed shape types.

Usage syntax

LONG SE_layerinfo_get_shape_types
(const SE_LAYERINFO layer,
LONG *shape_types);

Parameters

layer

shape_types

The layerinfo handle.

A pointer to the shape type mask.

Description

SE_layerinfo_get_shape_types retrieves the allowed shape types for a specific layer. The allowed shape types are contained in a bit-mask of the following values:

SE_NIL_TYPE_MASK
SE_POINT_TYPE_MASK
SE_LINE_TYPE_MASK
SE_SIMPLE_LINE_TYPE_MASK
SE_AREA_TYPE_MASK
SE_MULTIPART_TYPE_MASK

Returns


SE_layerinfo_get_spatial_column

Retrieves the table and column for a layer.

Usage syntax

LONG SE_layerinfo_get_spatial_column
(const SE_LAYERINFO layer,
CHAR *table,
CHAR *column);

Parameters

layer | The layerinfo handle.
table | The table associated with the layer.
column | The spatial column of the layer.

Description

SE_layerinfo_get_spatial_column retrieves the table and column for a specific layer. The table name may include the database and owner name depending on the DBMS. The caller should have at least SE_QUALIFIED_TABLE_NAME bytes available for the table argument, while the column argument should have SE_MAX_COLUMN_LEN bytes.

Returns


SE_layerinfo_get_storage_type

Returns the layer’s storage type.

Usage syntax

LONG SE_layerinfo_get_storage_type
(const SE_LAYERINFO layer,
LONG *storage_type);

Parameters

layer

storage_type

The connection handle.

The storage type mask for the layer.

Description

SE_layerinfo_get_storage_type returns the storage type from an SE_LAYERINFO structure. The storage_type argument returns one of the following values:

SE_STORAGE_SDEBINARY_TYPE /* Standard ArcSDE storage format. */

SE_STORAGE_WKB_TYPE /* Well-known binary format. */

SE_STORAGE_SQL_TYPE /* SQL or well-known text format. */

SE_STORAGE_NORMALIZED_TYPE /* Normalized format (used for Spatial Data

Option or Spatial Cartridge layers. */

Returns


SE_layerinfo_has_anno

Returns TRUE if the layer allows annotations.

Interface

BOOL SE_layerinfo_has_anno (const SE_LAYERINFO layer);

Parameters

layer

A handle to an active layerinfo object.

Description

Returns TRUE if the SE_LAYERINFO object is configured to allow annotations. All other conditions, including an invalid SE_LAYERINFO object, returns FALSE.


SE_layerinfo_has_cad

Returns TRUE if the layer allows CAD entities.

Interface

BOOL SE_layerinfo_has_cad (const SE_LAYERINFO layer);

Parameters

layer

A handle to an active layerinfo object.

Description

Returns TRUE if the SE_LAYERINFO object is configured to allow CAD data. All other conditions, including an invalid SE_LAYERINFO object, returns FALSE.


SE_layerinfo_has_spatial_index

Returns TRUE if the layerinfo structure has spatial Index.

Usage Syntax

BOOL SE_layerinfo_has_spatial_index (const SE_LAYERINFO layer);

Parameters

layer

A pointer to an active layerinfo object.

Description

Returns TRUE if the SE_LAYERINFO object has spatial Index. All other conditions, including an invalid SE_LAYERINFO object,returns FALSE.


SE_layerinfo_is_3D

Returns TRUE if the layer allows z-coordinates.

Usage syntax

BOOL SE_layerinfo_is_3D (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_3D returns TRUE if the layer allows z-coordinates. All other conditions, including an invalid SE_LAYERINFO object, returns FALSE.


SE_layerinfo_is_in_load_mode

Returns TRUE if the layer is in load-only mode.

Usage syntax

BOOL SE_layerinfo_is_in_load_mode (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_in_load_mode returns TRUE if the layer is in load-only mode. All other conditions, including an invalid SE_LAYERINFO object, returns FALSE.


SE_layerinfo_is_measured

Returns TRUE if the layer allows measures.

Usage syntax

BOOL SE_layerinfo_is_measured (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_measured returns TRUE if the layer allows measures. All other conditions, including an invalid SE_LAYERINFO object, returns FALSE.


SE_layerinfo_is_storage_external

Returns TRUE if the layer’s storage type is external.

Usage syntax

BOOL SE_layerinfo_is_storage_external (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_storage_external returns TRUE if the storage type for a layer is external.


SE_layerinfo_is_storage_lob

Returns TRUE if the layerinfo structure is in storage LOB type.

Usage Syntax

BOOL SE_layerinfo_is_storage_lob(const SE_LAYERINFO layer);

Parameters

layer

A pointer to an active layerinfo object.

Description

Returns TRUE if the SE_LAYERINFO object is in storage LOB type. All other conditions, including an invalid SE_LAYERINFO object,returns FALSE.


SE_layerinfo_is_storage_normalized

Returns TRUE if the layer’s storage type is normalized.

Usage syntax

BOOL SE_layerinfo_is_storage_normalized (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_storage_normalized returns TRUE if the storage type for a layer is normalized.


SE_layerinfo_is_storage_sdebinary

Returns TRUE if the layer’s storage type is ArcSDE binary format.

Usage syntax

BOOL SE_layerinfo_is_storage_sdebinary (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_storage_sdebinary returns TRUE if the storage type for a layer is in ArcSDE binary format (the default).


SE_layerinfo_is_storage_sql

Returns TRUE if the layer’s storage type is SQL or well-known text.

Usage syntax

BOOL SE_layerinfo_is_storage_sql (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_storage_normalized returns TRUE if the storage type for a layer is SQL or well-known text.


SE_layerinfo_is_storage_wkb

Returns TRUE if the layer’s storage type is well-known binary.

Usage syntax

BOOL SE_layerinfo_is_storage_wkb (const SE_LAYERINFO layer);

Parameters

layer

The SE_LAYERINFO handle.

Description

SE_layerinfo_is_storage_wkb returns TRUE if the storage type for a layer is well-known binary.


SE_layerinfo_set_3D

Updates whether the layer allows z-coordinates.

Usage syntax

LONG SE_layerinfo_set_3D
(SE_LAYERINFO layer,
BOOL is_3D);

Parameters

layer | The SE_LAYERINFO handle.
is_3D | Set to TRUE if layer should allow z-coordinates; otherwise FALSE.

Description

SE_layerinfo_set_3D sets whether the layer allows z-coordinates.

Returns


SE_layerinfo_set_anno

Updates whether the layer allows annotations.

Usage syntax

LONG SE_layerinfo_set_anno
(SE_LAYERINFO layer,
BOOL has_anno);

Parameters

layer | The SE_LAYERINFO handle.
has_anno | Set to TRUE if the layer should allow annotations, otherwise set to FALSE.

Description

SE_layerinfo_set_anno sets whether the layer allows annotations.

Returns


SE_layerinfo_set_array_size

Sets the optimal array size for the specified layer.

Usage syntax

LONG SE_layerinfo_set_array_size
(SE_LAYERINFO layer,
LONG optimal_array_size);

Parameters

layer | The layerinfo handle.
optimal_array_size | A pointer to the optimal array size value.

Description

SE_layerinfo_set_array_size sets the optimal array size for a specific layer.

Returns


SE_layerinfo_set_cad

Updates whether the layer allows CAD entities.

Usage syntax

LONG SE_layerinfo_set_cad
(SE_LAYERINFO layer,
BOOL has_cad);

Parameters

layer | The SE_LAYERINFO handle.
has_cad | Set to TRUE if the layer should allow CAD data; otherwise, set to FALSE.

Description

SE_layerinfo_set_cad sets whether the layer allows CAD data.

Returns


SE_layerinfo_set_coordref

Sets the coordinate reference for a layer.

Usage syntax

LONG SE_layerinfo_set_coordref
(SE_LAYERINFO layer,
SE_COORDREF coordref);

Parameters

layer

coordref

The layerinfo handle.

A pointer to the coordinate reference of the layer.

Description

SE_layerinfo_set_coordref sets the coordinate reference for a specific layer. If any of the grid sizes have been set in the SE_LAYERINFO object, ArcSDE ensures that the new coordinate reference does not invalidate them.

Returns


SE_layerinfo_set_creation_keyword

Sets the layer’s configuration keyword.

Usage syntax

LONG SE_layerinfo_set_creation_keyword
(SE_LAYERINFO layer,
const CHAR *config_keyword);

Parameters

layer

config_keyword

The layerinfo handle.

The configuration keyword of a layer.

Description

SE_layerinfo_set_creation_keyword sets the configuration keyword for a specific layer. The function does not check to see if the keyword exists in the dbtune table. If the config_keyword length is greater than SE_MAX_CONFIG_KEYWORD_LEN, SE_INVALID_LAYER_KEYWORD is returned.

Returns


SE_layerinfo_set_description

Sets the layer description.

Usage syntax

LONG SE_layerinfo_set_description
(SE_LAYERINFO layer,
const CHAR *description);

Parameters

layer

description

The layerinfo handle.

The layer description.

Description

SE_layerinfo_set_description sets the description for a specific layer. If the description length is greater than SE_MAX_DESCRIPTION_LEN, SE_INVALID_PARAM_VALUE is returned.

Returns


SE_layerinfo_set_envelope

Sets the layer envelope.

Usage syntax

LONG SE_layerinfo_set_envelope
(SE_LAYERINFO layer,
const SE_ENVELOPE *envelope);

Parameters

layer

envelope

The layerinfo handle.

A pointer to an SE_ENVELOPE structure.

Description

SE_layerinfo_set_envelope sets the user-defined envelope of a specific layer.

Returns


SE_layerinfo_set_grid_sizes

Sets the spatial index grid sizes for a layer.

Usage syntax

LONG SE_layerinfo_set_grid_sizes
(SE_LAYERINFO layer,
LFLOAT grid_size,
LFLOAT grid_size2,
LFLOAT grid_size3);

Parameters

layer | The layerinfo handle.
grid_size | A pointer to the grid size of a layer.
grid_size2 | A pointer to the second level grid size of a layer.
grid_size3 | A pointer to the third level grid size of a layer.

Description

SE_layerinfo_set_grid_sizes sets the grid sizes for a specific layer. The grid sizes are validated against the current coordinate reference. Grid sizes must be >250 integer system units (converted with SE_COORDREF). Each new level grid size must be at least three times larger than the previous level. You do not need to specify all of the grid sizes; omit an upper level grid size by specifying a size of 0.0.

Returns


SE_layerinfo_set_load_mode

Updates whether a layer is in load-only or normal I/O mode.

Usage syntax

LONG SE_layerinfo_set_load_mode
(SE_LAYERINFO layer,
BOOL is_in_load_mode);

Parameters

layer | The SE_LAYERINFO handle.
is_in_load_mode | Set to TRUE if the layer should be in load-only mode, otherwise set to FALSE.

Description

SE_layerinfo_set_load_mode sets whether the layer is in load-only or normal I/O mode. Setting a layer to load-only I/O mode drops the spatial indexes and the spatial column index to increase performance when inserting or updating data. While the layer is in load-only mode, the spatial column is not checked for unique FID values so it may be possible to corrupt the layer.

Returns


SE_layerinfo_set_measured

Updates whether the layer allows measures.

Usage syntax

LONG SE_layerinfo_set_measured
(SE_LAYERINFO layer,
BOOL is_measured);

Parameters

layer | The SE_LAYERINFO handle.
is_measured | Set to TRUE if the layer should allow measures; otherwise set to FALSE.

Description

SE_layerinfo_set_measured sets whether the layer allows measures.

Returns


SE_layerinfo_set_minimum_id

Sets the minimum FID allowed for the layer.

Usage syntax

LONG SE_layerinfo_set_minimum_id
(SE_LAYERINFO layer,
ULONG minimum_id);

Parameters

layer | The layerinfo handle.
minimum_id | The minimum FID value.

Description

SE_layerinfo_set_minimum_id sets the minimum FID allowed in the layer. When a new shape is added to a layer, the FID is set to the larger of: the minimum_id value or the maximum assigned FID + 1.

Returns


SE_layerinfo_set_shape_types

Sets the allowed shape types.

Usage syntax

LONG SE_layerinfo_set_shape_types
(SE_LAYERINFO layer,
LONG shape_types);

Parameters

layer | The layerinfo handle.
shape_types | The shape type mask.

Description

SE_layerinfo_set_shape_types sets the allowed shape types for a specific layer. The allowed shape types are:

SE_NIL_TYPE_MASK
SE_POINT_TYPE_MASK
SE_LINE_TYPE_MASK
SE_SIMPLE_LINE_TYPE_MASK
SE_AREA_TYPE_MASK
SE_MULTIPART_TYPE_MASK

Returns


SE_layerinfo_set_spatial_column

Sets the spatial column for a layer.

Usage syntax

LONG SE_layerinfo_set_spatial_column
(SE_LAYERINFO layer,
const CHAR *table,
const CHAR *column);

Parameters

layer | The layerinfo handle.
table | The table associated with the layer.
column | The spatial column of the layer.

Description

SE_layerinfo_set_spatial_column sets the spatial column for a specific layer. The table must exist and the caller must be the owner. These conditions are not checked until the database layer is actually created.

Returns


SE_layerinfo_set_storage_type

Sets the layer’s storage type.

Usage syntax

LONG SE_layerinfo_set_storage_type
(SE_LAYERINFO layer,
LONG storage_type);

Parameters

layer | The SE_LAYERINFO handle.
storage_type | The storage type mask for the layer.

Description

SE_layerinfo_set_storage_type sets the storage type for a layer. Use SE_STORAGE_NORMALIZED_TYPE to set the storage type for SDO layers.

The storage_type argument accepts the following value:

SE_STORAGE_SDEBINARY_TYPE /* Standard ArcSDE storage format. */

SE_STORAGE_WKB_TYPE /* Well-known binary format. */

SE_STORAGE_SQL_TYPE /* SQL or well-known text format. */

SE_STORAGE_NORMALIZED_TYPE /* Normalized format (used for Spatial Data

Option or Spatial Cartridge layers. */

Returns


SE_locator_alter

Alters a locator’s characteristics.

Usage syntax

LONG SE_locator_alter
(SE_CONNECTION connection,
const SE_LOCATORINFO locator);

Parameters

connection | The connection handle.
locator | An SE_LOCATORINFO structure to define the new characteristics of the locator.

Description

SE_locator_alter changes those characteristics of a locator that can be modified after creation. The locator to modify is specified by the locator name in the SE_LOCATORINFO structure.

You can change the following characteristics:

• Description

• Public

A convenient method to change a particular characteristic of a locator is to retrieve the existing locator definition into the SE_LOCATORINFO pointer with SE_locator_get_info or SE_locator_get_info_by_id . Modify the characteristic with one of the SE_locatorinfo_set_* functions.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_ALTER_OPERATION
SE_INVALID_LOCATOR_DOMAIN
SE_INVALID_LOCATOR_NAME
SE_INVALID_LOCATOR_OBJECT_TYPE
SE_NET_FAILURE


SE_locator_create

Creates a locator.

Usage syntax

LONG SE_locator_create
(SE_CONNECTION connection,
const SE_LOCATORINFO locator);

Parameters

connection | The connection handle.
locator | A pointer to the SE_LOCATORINFO object.

Description

SE_locator_create creates a locator.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_LOCATOR_NAME
SE_INVALID_LOCATOR_OBJECT_TYPE
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The required parameters of the SE_LOCATORINFO structure to set when creating a locator are:

name

domain


SE_locator_delete

Deletes a locator.

Usage syntax

LONG SE_locator_delete
(SE_CONNECTION connection,
const CHAR *locator_name);

Parameters

connection | The connection handle.
locator_name | The locator name.

Description

SE_locator_delete deletes a locator. The entry is removed from the SDELOCATORS and SDEMETADATA tables.

Returns


SE_locator_describe_ouput

Creates a locator.

Usage syntax

LONG SE_locator_describe_output
(SE_CONNECTION connection,
SE_LOCATORINFO locator,
SHORT *num_columns,
SE_COLUMN_DEF **column_defs);

Parameters

connection | The connection handle.
locator | A pointer to the SE_LOCATORINFO object.
num_columns | A pointer to the number of columns.
column_defs | A pointer to an array of SE_COLUMN_DEF structures.

Description

SE_locator_describe_output describe the outputs of a locator. They are returned in an array of SE_COLUMN_DEF structures. The SE_COLUMN_DEF structure is:

typedef struct {

CHAR column_name[SE_MAX_COLUMN_LEN]; /* the column name */

LONG sde_type; /* the SDE data type */

LONG size; /* the size of the column values */

SHORT decimal_digits; /* number of digits after decimal */

BOOL nulls_allowed; /* allow NULL values ? */

SHORT row_id_type; /* column's use as table's row id */

} SE_COLUMN_DEF;

Returns


SE_locator_free_descriptions

Releases memory allocated for locator output.

Usage syntax

void SE_locator_free_descriptions (SE_COLUMN_DEFS *column_defs);

Parameters

column_defs

Address of an SE_COLUMN_DEFS structure.

Description

SE_locator_free_descriptions frees the memory allocated for the list of column definitions returned by SE_locator_describe_output .


SE_locator_free_info_list

Releases memory allocated for a list of locator structures.

Usage syntax

void SE_locator_free_info_list
(LONG count,
SE_LOCATORINFO *locator_list);

Parameters

count | The number of locators in the list.
locator_list | Address of an SE_LOCATORINFO pointer set to a dynamically allocated space which contains an array of SE_LOCATORINFO structures.

Description

SE_locator_free_info_list frees the memory allocated for the list of locator structures returned by SE_locator_get_info_list .


SE_locator_get_info

Retrieves information about a locator.

Usage syntax

LONG SE_locator_get_info
(SE_CONNECTION connection,
const CHAR *locator_name,
SE_LOCATORINFO locator);

Parameters

connection | The connection handle.
locator_name | The name of the locator.
locator | Pointer to a location to receive the SE_LOCATORINFO definition.

Description

SE_locator_get_info obtains the definition of a specific locator as identified by its name. Information about the locator is maintained in an SE_LOCATORINFO structure. The SE_LOCATORINFO object must be a valid object created by SE_locatorinfo_create .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_REGINFO_OBJECT
SE_INVALID_REGISTRATION_ID
SE_LOCATOR_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_locator_get_info_by_id

Retrieves information about a locator by its ID.

Usage syntax

LONG SE_locator_get_info_by_id
(SE_CONNECTION connection,
LONG id,
SE_LOCATORINFO locator);

Parameters

connection | The connection handle.
id | The ID of the locator.
locator | Pointer to a location to receive the SE_LOCATORINFO definition.

Description

SE_locator_get_info_by_id uses a locator ID to obtain the definition of a specific locator. Information about the locator is maintained in an SE_LOCATORINFO structure. The SE_LOCATORINFO object must be a valid object created by SE_locatorinfo_create .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_REGINFO_OBJECT
SE_INVALID_REGISTRATION_ID
SE_LOCATOR_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_locator_get_info_list

Retrieves an array of SE_LOCATORINFO structures for all accessible locators.

Usage syntax

LONG SE_locator_get_info_list
(SE_CONNECTION connection,
const CHAR *where,
SE_LOCATORINFO **locator_list,
LONG *count_addr);

Parameters

connection | The connection handle.
where | Specifies values of desired locator properties. If NULL, all locators are returned.
locator_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_LOCATORINFO structures.
count_addr | The number of locators in the SE_LOCATORINFO list.

Description

SE_locator_get_info_list returns an array of SE_LOCATORINFO pointers that are defined. The total number of locator structures is returned in the count parameter. The application must free the locator_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_locator_free_info_list .


SE_locatorinfo_create

Creates a locator definition.

Usage syntax

LONG SE_locatorinfo_create (SE_LOCATORINFO *locator);

Parameters

locator

A pointer to the locator structure.

Description

SE_locatorinfo_create allocates and initializes an SE_LOCATORINFO structure which contains information about a locator.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_LOCATORINFO object before using any other function that requires an SE_LOCATORINFO pointer.


SE_locatorinfo_duplicate

Copies a locator definition.

Usage syntax

LONG SE_locatorinfo_duplicate
(const SE_LOCATORINFO src_locator,
SE_LOCATORINFO tgt_locator);

Parameters

src_locator | The source SE_LOCATORINFO handle.
tgt_locator | The target SE_LOCATORINFO handle.

Description

SE_locatorinfo_duplicate creates a copy of an SE_LOCATORINFO structure.

Returns


SE_locatorinfo_free

Releases memory allocated for an SE_LOCATORINFO structure.

Usage syntax

void SE_locatorinfo_free (SE_LOCATORINFO locator);

Parameters

locator

The pointer to a locator structure.

Description

SE_locatorinfo_free frees the memory allocated for an SE_LOCATORINFO structure returned by SE_locatorinfo_create .


SE_locatorinfo_free_property_values

Releases memory allocated by SE_locatorinfo_get_property_values .

Usage syntax

void SE_locatorinfo_free_property_values
(LONG num_props,
CHAR *properties,
CHAR *values);

Parameters

num_props | The number of property and value pairs.
properties | A pointer to an array of properties.
values | A pointer to an array of values.

Description

SE_locatorinfo_free frees the memory allocated by SE_locatorinfo_get_property_values .


SE_locatorinfo_get_category

Retrieves the locator category.

Usage syntax

LONG SE_locatorinfo_get_category
(const SE_LOCATORINFO locator,
CHAR *category);

Parameters

locator | The locatorinfo handle.
category | The locator category.

Description

SE_locatorinfo_get_category retrieves the category of the locator. Allocate at least SE_MAX_COLUMN_LEN bytes for the category parameter.

Returns


SE_locatorinfo_get_description

Retrieves the locator description.

Usage syntax

LONG SE_locatorinfo_get_description
(const SE_LOCATORINFO locator,
CHAR *description);

Parameters

locator | The locatorinfo handle.
description | The locator description.

Description

SE_locatorinfo_get_description retrieves the description for a specific locator. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_locatorinfo_get_id

Returns the ID for a locator.

Usage syntax

LONG SE_locatorinfo_get_id
(const SE_LOCATORINFO locator,
LONG *id);

Parameters

locator | The locatorinfo handle.
id | A pointer to the ID.

Description

SE_locatorinfo_get_id returns the ID for a locator.

Returns


SE_locatorinfo_get_name

Retrieves the locator name.

Usage syntax

LONG SE_locatorinfo_get_name
(const SE_LOCATORINFO locator,
CHAR *name);

Parameters

locator | The locatorinfo handle.
name | The locator name.

Description

SE_locatorinfo_get_name retrieves the name of the locator. Allocate at least SE_MAX_COLUMN_LEN bytes for the name parameter.

Returns


SE_locatorinfo_get_owner

Retrieves the locator owner.

Usage syntax

LONG SE_locatorinfo_get_owner
(const SE_LOCATORINFO locator,
CHAR *owner);

Parameters

locator | The locatorinfo handle.
owner | The locator owner.

Description

SE_locatorinfo_get_owner retrieves the owner of the locator. Allocate at least SE_MAX_OWNER_LEN bytes for the owner parameter.

Returns


SE_locatorinfo_get_property_values

Retrieves the locator property and value pairs.

Usage syntax

LONG SE_locatorinfo_get_property_values
(const SE_LOCATORINFO locator,
LONG *num_props,
CHAR ***properties
CHAR ***values);

Parameters

locator | The locatorinfo handle.
num_props | The number of property and value pairs.
properties | A pointer to an array of properties.
values | A pointer to an array of values.

Description

SE_locatorinfo_get_property_values retrieves the property and value pairs of the locator.

Returns


SE_locatorinfo_get_type

Returns the type for a locator.

Usage syntax

LONG SE_locatorinfo_get_type
(const SE_LOCATORINFO locator,
LONG *type);

Parameters

locator | The locatorinfo handle.
type | A pointer to the type.

Description

SE_locatorinfo_set_type returns the type for a locator. The types are

SE_LOCATOR_TEMPLATE

SE_LOCATOR_VALIDATED

SE_LOCATOR_DEFINED

Returns


SE_locatorinfo_set_category

Sets the locator category.

Usage syntax

LONG SE_locatorinfo_set_category
(SE_LOCATORINFO locator,
const CHAR *category);

Parameters

locator | The locatorinfo handle.
category | A pointer to the locator category.

Description

SE_locatorinfo_set_category sets the category for a locator.

Returns


SE_locatorinfo_set_description

Sets the locator description.

Usage syntax

LONG SE_locatorinfo_set_description
(SE_LOCATORINFO locator,
const CHAR *description);

Parameters

locator | The locatorinfo handle.
description | The locator description.

Description

SE_locatorinfo_set_description sets the description for a specific locator. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_locatorinfo_set_name

Sets the locator name.

Usage syntax

LONG SE_locatorinfo_set_name
(SE_LOCATORINFO locator,
const CHAR *name);

Parameters

locator | The locatorinfo handle.
name | The locator name.

Description

SE_locatorinfo_set_name sets the name for a locator.

Returns


SE_locatorinfo_set_property_values

Sets the locator property and value pairs.

Usage syntax

LONG SE_locatorinfo_set_property_values
(SE_LOCATORINFO locator,
LONG num_props,
const CHAR **properties,
const CHAR **values);

Parameters

locator | The locatorinfo handle.
num_props | The number of property and value pairs.
properties | A pointer to an array of properties.
values | A pointer to an array of values.

Description

SE_locatorinfo_set_property_values sets the property and value pairs for a locator.

Returns


SE_locatorinfo_set_type

Sets the type for a locator.

Usage syntax

LONG SE_locatorinfo_set_type
(SE_LOCATORINFO locator,
LONG type);

Parameters

locator | The locatorinfo handle.
type | The type.

Description

SE_locatorinfo_set_type sets the type for a locator. The types are

SE_LOCATOR_TEMPLATE

SE_LOCATOR_VALIDATED

SE_LOCATOR_DEFINED

Returns


SE_log_add_id

Adds a row ID to the logfile.

Usage syntax

LONG SE_log_add_id
(SE_CONNECTION connection,
SE_LOG log,
LONG id);

Parameters

connection | The connection handle.
log | The file descriptor of an open logfile.
id | The row ID reference to add to the logfile.

Description

SE_log_add_id adds a single row ID to an open logfile. The logfile must have been previously opened by SE_log_open.

Returns


SE_log_add_id_list

Adds a list of row IDs to a logfile.

Usage syntax

LONG SE_log_add_id_list
(SE_CONNECTION connection,
SE_LOG log,
LONG num_ids,
const LONG *idbuf);

Parameters

connection | The connection handle.
log | The file descriptor of an open logfile.
num_ids | The number of row IDs in idbuf.
idbuf | Pointer to an array of row IDs to add to the logfile.

Description

SE_log_add_id_list adds a list of row IDs to an open logfile. The logfile must have been previously opened by SE_log_open.

Returns


SE_log_alter

Changes a logfile’s attributes.

Usage syntax

LONG SE_log_alter
(SE_CONNECTION connection,
SE_LOGINFO loginfo);

Parameters

connection | The connection handle.
loginfo | The SE_LOGINFO object.

Description

SE_log_alter changes a logfile’s attributes. Currently, only the persistence attribute can be changed. The current user must own the target logfile. The logfile must have been previously opened by SE_log_open.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_log_calculate_extent

Gets the extent of all features referenced in a logfile.

Usage syntax

LONG SE_log_calculate_extent
(SE_CONNECTION connection,
const CHAR *logname,
SE_ENVELOPE *e,
LFLOAT *minz,
LFLOAT *maxz,
const SE_SQL_CONSTRUCT *construct);

Parameters

connection | The connection handle.
logname | The logfile name. Can be a username filename.
e | The address of the SE_ENVELOPE structure that will receive the common envelope.
minz | The address of an LFLOAT that will receive the minimum z-value of the common envelope.
maxz | The address of an LFLOAT that will receive the maximum z-value of the common envelope.
construct | A pointer to an SE_SQL_CONSTRUCT structure containing a ‘where’ clause.

Description

SE_log_calculate_extent retrieves the extent of all features in the specified logfile. The logfile must be based on a layer. Optionally, an SQL where clause may further refine the features. If no features meet the criteria, EMPTY_ENVELOPE is returned.

The SE_SQL_CONSTRUCT structure has the following definition:

typedef struct {

LONG num_tables; /* Number of tables */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

Returns


SE_log_close

Closes the specified logfile.

Usage syntax

LONG SE_log_close
(SE_CONNECTION connection,
SE_LOG log);

Parameters

connection | The connection handle.
log | The file descriptor of an open logfile.

Description

Closes a specified logfile that was opened on a previous call to SE_log_open_log.

Returns

SE_SUCCESS
SE_LOG_NOTOPEN
SE_LOG_IO_ERROR
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The extended error code is set to the value of errno when SE_LOG_NOTOPEN or SE_LOG_IO_ERROR is returned.


SE_log_combine

Combines two logfiles with a Boolean operation.

Usage syntax

LONG SE_log_combine
(SE_CONNECTION connection,
const CHAR *logfile1,
const CHAR *logfile2,
const CHAR *logfile12,
LONG operation);

Parameters

connection | The connection handle.
logfile1 | The name of the first input logfile. May be a username filename.
logfile2 | The name of the second input logfile. May be a username filename.
logfile12 | The name of the output logfile. The name must be a simple logfile name that cannot include a username.
operation | The Boolean operation to perform.

Description

SE_log_combine performs a Boolean set operation on a pair of input logfiles, producing a third output logfile. If the output logfile already exists, it will be overwritten; otherwise, it will be created. If successful, returns the number of rows in the new logfile.

The four operations supported between logfiles are:

SE_LOG_INTERSECT | All row IDs present in both input logfiles are copied to the output logfile. Those row IDs present in only one logfile are discarded. This is a Boolean AND operation.
SE_LOG_UNION | All row IDs present in either input logfiles are copied to the output logfile. Duplicate rows appear only once in the output logfile. This is a Boolean OR operation.
SE_LOG_DIFFERENCE | All rows present in the first logfile but not in the second logfile are copied to the output logfile. This is a Boolean INHIBITION operation.
SE_LOG_SYMDIFF | All rows present in either of the input logfiles, but not present in both, are copied to the output logfile. This is a Boolean XOR operation.

Returns

If successful, the number of rows in the new logfile is returned. If unsuccessful one of the following is returned:

SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOG_IO_ERROR
SE_LOG_NOEXIST
SE_LOG_NOACCESS
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TEMP_IO_ERROR

Notes

• The output logfile is a temporary logfile sorted in ascending order. Change it to a persistent logfile with SE_log_set_type . The input logfiles must not be opened.


SE_log_copy

Copies one logfile to another.

Usage syntax

LONG SE_log_copy
(SE_CONNECTION connection,
const CHAR *oldlogfile,
const CHAR *newlogfile);

Parameters

connection | The connection handle.
oldlogfile | The name of the existing logfile. May be a username filename.
newlogfile | The name of the logfile to create. Must be a simple logfile name.

Description

SE_log_copy copies an existing logfile to a new logfile. The copy occurs on the server. Any entries in the new logfile are replaced by the contents of the old logfile.

Returns

SE_SUCCESS
SE_LOG_IO_ERROR
SE_LOG_NOACCESS
SE_LOG_NOEXIST
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• The output logfile is the same type, persistent or temporary, as the original. You may change its type with the SE_log_set_type . The logfile must not be opened.


SE_log_count

Returns the number of rows referenced in the logfile.

Usage syntax

LONG SE_log_count
(SE_CONNECTION connection,
SE_LOG log);

Parameters

connection | The connection handle.
log | The file descriptor of an open logfile.

Description

SE_log_count returns the number of rows referenced in a logfile.

Returns

Total number of rows referenced in the logfile (> = 0). It returns an error code (if negative) or a count (if positive or 0).

SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• This function does not affect any other logfile operations and can be called while rows are being logged to a logfile.


SE_log_count_ids

Returns the number of rows referenced in the logfile.

Usage syntax

LONG SE_log_count_ids
(SE_CONNECTION connection,
SE_LOGINFO loginfo);

Parameters

connection | The connection handle.
loginfo | The SE_LOGINFO handle.

Description

SE_log_count_ids returns the number of rows referenced in a logfile.

Returns

Total number of rows referenced in the logfile (> = 0).

SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• This function does not affect any other logfile operations and can be called while rows are being logged to a logfile.


SE_log_create

Creates a logfile.

Usage syntax

LONG SE_log_create
(SE_CONNECTION connection,
SE_LOGINFO loginfo);

Parameters

connection | The connection handle.
loginfo | The SE_LOGINFO handle of the logfile to create.

Description

SE_log_create creates the specified logfile.

Returns


SE_log_delete

Deletes a logfile.

Usage syntax

LONG SE_log_delete
(SE_CONNECTION connection,
const CHAR *logfile);

Parameters

connection | The connection handle.
logfile | The name of the logfile to delete. Must be a simple logfile name.

Description

SE_log_delete deletes the specified logfile.

Returns

SE_SUCCESS
SE_FAILURE
SE_LOG_IO_ERROR
SE_LOG_NOEXIST
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• Callers may only delete logfiles created using their own login. FAILURE is returned if ArcSDE is unable to obtain the user’s login name. This name is tied to the logfile directory for the user. The logfile must not be opened.


SE_log_delete_id_list

Deletes a list of IDs from the specified logfile.

Usage syntax

LONG SE_log_delete_id_list
(SE_CONNECTION connection,
SE_LOG log,
LONG num_ids,
const LONG *idbuf);

Parameters

connection | The connection handle.
log | The SE_LOG handle of an open logfile.
num_ids | The number of IDs.
idbuf | The array of IDs.

Description

SE_log_delete_id_list deletes a list of IDs from the specified logfile.

Returns


SE_log_get_by_name

Returns an SE_LOGINFO object based on a logfile name.

Usage syntax

LONG SE_log_get_by_name
(SE_CONNECTION connection,
const CHAR *logfile,
SE_LOGINFO loginfo);

Parameters

connection | The connection handle.
logfile | The name of the logfile.
loginfo | The SE_LOGINFO object for the logfile.

Description

SE_log_get_by_name returns an SE_LOGINFO object based on the specified logfile name. A qualified (username combined with logfile name) name is allowed.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_log_get_by_owner

Returns a list of SE_LOGINFO objects owned by the specified user.

Usage syntax

LONG SE_log_get_by_owner
(SE_CONNECTION connection,
const CHAR *owner,
SE_LOGINFO **loginfo_list_addr,
LONG *count_addr);

Parameters

connection | The connection handle.
owner | The owner of the logfiles.
loginfo_list_addr | The pointer to a list of SE_LOGINFO objects.
count_addr | The number of SE_LOGINFO objects.

Description

SE_log_get_by_owner returns a list of SE_LOGINFO objects owned by the specified user. If the owner parameter is NULL, the current user's logfiles are returned.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_log_get_by_table

Returns a list of SE_LOGINFO objects based on the specified table and owner.

Usage syntax

LONG SE_log_get_by_table
(SE_CONNECTION connection,
const CHAR *log_owner,
const CHAR *table,
SE_LOGINFO **loginfo_list_addr,
LONG *count_addr);

Parameters

connection | The connection handle.
log_owner | The owner of the logfile. If NULL, the current owner.
table | The table name.
loginfo_list_addr | The pointer to a list SE_LOGINFO objects.
count_addr | The number of SE_LOGINFO objects.

Description

SE_log_get_by_table returns a list of SE_LOGINFO objects based on the specified table and owner.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_log_get_id_list

Returns a list of IDs from the specified logfile.

Usage syntax

LONG SE_log_get_id_list
(SE_CONNECTION connection,
SE_LOG log,
const LONG max_num_ids,
LONG *num_ids,
LONG *idbuf);

Parameters

connection | The connection handle.
log | The SE_LOG handle of an open logfile.
max_num_ids | The maximum number of IDs to return.
num_ids | The number of IDs returned.
idbuf | The array of IDs.

Description

SE_log_get_id_list returns a list of IDs from the specified logfile.

Returns


SE_log_get_open_log_info

Returns an SE_LOGINFO object for the specified open logfile.

Usage syntax

LONG SE_log_get_open_log_info
(SE_CONNECTION connection,
const SE_LOG log,
SE_LOGINFO loginfo);

Parameters

connection | The connection handle.
log | The SE_LOG handle of an open logfile.
loginfo | The SE_LOGINFO object.

Description

SE_log_get_open_log_info returns the SE_LOGINFO object for the specified logfile.

Returns


SE_log_grant_access

Grants a user access to the owner ’s logfiles.

Usage syntax

LONG SE_log_grant_access
(SE_CONNECTION connection,
const CHAR *logfiles_owner,
const CHAR *dbms_user);

Parameters

connection | The connection handle.
logfiles_owner | The owner of the logfiles.
dbms_user | The name of the user to grant access to.

Description

SE_log_grant_access gives a DBMS user access to the owner’s logfiles.

Returns


SE_log_make_name

Generates a unique logfile name.

Usage syntax

LONG SE_log_make_name
(SE_CONNECTION connection,
CHAR *logfile);

Parameters

connection | The connection handle.
logfile | The unique logfile name.

Description

SE_log_make_name generates a unique logfile name. Applications that build logfiles should use this routine to avoid name conflicts with existing logfiles.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_LOG_NOEXIST
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• For complete safety, the logfile arguments should be at least 32 bytes in length.


SE_log_open

Obsolete. Opens a logfile for processing on the given table.

Usage syntax

LONG SE_log_open
(SE_CONNECTION connection,
const CHAR *logfile,
CHAR *table,
LONG mode,
LONG type,
SE_LOG *log);

Parameters

connection | The connection handle.
logfile | The logfile name. The name must be a simple logfile name.
table | The table name.
mode | The mode to use when the file is opened.
type | The logfile type (SE_LOG_PERSISTENT or SE_LOG_TEMPORARY).
log | The file handle to use when referencing this logfile.

Description

SE_log_open opens the named logfile in the specified mode on the ArcSDE server. This call is required to get a valid logfile handle for subsequent logfile operations. The following logfile MODES are supported:

SE_INPUT_MODE Opens an existing log file for READ ONLY access. If the logfile does not exists, returns an SE_LOG_NOEXIST error.

SE_OUTPUT_MODE Creates and opens a new logfile if one does not exist; otherwise, opens the existing logfile. Any entries in an existing logfile are deleted.

SE_EXTEND_MODE Opens an existing logfile and appends to it. The logfile must exist. Pass in NULL or a null pointer for the table argument because SE_log_open will return the table name.

SE_OUTPUT_NO_DELETE_MODE Creates and opens a new logfile. If the logfile already exists, returns an SE_LOG_IO_ERROR error.

The following logfile TYPES are supported:

SE_LOG_PERSISTENT The logfile remains on disk after the ArcSDE server process is terminated.

SE_LOG_TEMPORARY The logfile is deleted when the ArcSDE server process is terminated.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_LOG_IO_ERROR
SE_LOG_NOACCESS
SE_LOG_NOEXIST
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• Due to operating system limitations, it may be possible for two ArcSDE sessions of the same username to simultaneously open the same logfile. Therefore, it is possible that the edits of one session may overwrite those of another. You can avoid this by using SE_log_make_name .


SE_log_open_log

Opens a logfile for processing.

Usage syntax

LONG SE_log_open_log
(SE_CONNECTION connection,
const SE_LOGINFO loginfo,
LONG mode,
SE_LOG *log);

Parameters

connection | The connection handle.
loginfo | The SE_LOGINFO object.
mode | The mode to use when the file is opened.
log | The file handle to use when referencing this logfile.

Description

SE_log_open_log opens a logfile in the specified mode on the ArcSDE server. This call is required to get a valid logfile handle for subsequent logfile operations. This function can create or open a logfile on a layer or a registered table. The obsolete function SE_log_open can create logfile on layers only. The following logfile modes are supported:

SE_INPUT_MODE Opens a logfile in read-only mode. The logfile can be owned by any user.

SE_OUTPUT_MODE Creates and opens a new logfile if one does not exist; otherwise, opens the existing logfile. Any entries in an existing logfile are deleted. The logfile must be owned by the current user.

SE_EXTEND_MODE Opens an existing logfile and appends to it. The logfile must exist and be owned by the current user.

SE_OUTPUT_NO_DELETE_MODE Creates and opens a new logfile. If the logfile already exists, returns an SE_LOG_IO_ERROR error.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOG_IO_ERROR
SE_LOG_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• Due to operating system limitations, it may be possible for two ArcSDE sessions of the same username to simultaneously open the same logfile. Therefore, it is possible that the edits of one session may overwrite those of another. You can avoid this by using SE_log_make_name .


SE_log_revoke_access

Removes a user’s access to the owner’s logfiles.

Usage syntax

LONG SE_log_revoke_access
(SE_CONNECTION connection,
const CHAR *logfiles_owner,
const CHAR *dbms_user);

Parameters

connection | The connection handle.
logfiles_owner | The owner of the logfiles.
dbms_user | The name of the user to grant access to.

Description

SE_log_revoke_access removes a DBMS user’s access to the owner’s logfiles.

Returns


SE_log_set_type

Obsolete. Sets the logfile type to persistent or temporary.

Usage syntax

LONG SE_log_set_type
(SE_CONNECTION connection,
const CHAR *logfile,
LONG type);

Parameters

connection | The connection handle.
logfile | The name of the logfile. The name must be a simple logfile name.
type | The type is either SE_LOG_PERSISTENT or SE_LOG_TEMPORARY.

Description

SE_log_set_type changes the persistence of an existing logfile to either temporary or persistent. Persistent logfiles remain after an ArcSDE session ends; temporary ones are deleted.

Returns


SE_log_sort

Sorts the specified logfile.

Usage syntax

LONG SE_log_sort
(SE_CONNECTION connection,
const CHAR *logfile);

Parameters

connection | The connection handle.
logfile | The logfile name. Must be a simple logfile name.

Description

SE_log_sort sorts the logfile in ascending order and removes duplicate row ID references. Row ID references are ordered similar to their storage order because they are sorted by row identifier. As a result, this function can improve efficiency when rows are retrieved via a logfile.

Returns

On success, the number of rows remaining in the logfile after sorting.

SE_LOG_IO_ERROR
SE_LOG_NOEXIST
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TEMP_IO_ERROR

Notes

• The logfile must be closed before calling SE_log_sort .


SE_loginfo_create

Creates an SE_LOGINFO object.

Usage syntax

LONG SE_loginfo_create (SE_LOGINFO *loginfo);

Parameters

loginfo

The SE_LOGINFO handle.

Description

SE_loginfo_create creates an SE_LOGINFO object. You must call this function before working with a logfile.

Returns


SE_loginfo_create

SE_loginfo_duplicate

copies an SE_LOGINFO structure.

Usage syntax

LONG SE_loginfo_duplicate ( const SE_LOGINFO src_loginfo,
SE_LOGINFO tgt_loginfo);

Parameters

src_loginfo | A pointer to the source logfile structure.
tgt_loginfo | A pointer to the target logfile structure.

Description

SE_loginfo_duplicate copies an SE_LOGINFO structure which contains information about a logfile object.

Returns


SE_loginfo_free

Frees an SE_LOGINFO object.

Usage syntax

void SE_loginfo_free (SE_LOGINFO loginfo);

Parameters

loginfo

The SE_LOGINFO handle.

Description

SE_loginfo_free frees an SE_LOGINFO object.


SE_loginfo_free_list

Frees a list of SE_LOGINFO objects.

Usage syntax

void SE_loginfo_free_list
(SE_LOGINFO *loginfo_list,
LONG count);

Parameters

loginfo_list | A pointer to the list of SE_LOGINFO handles.
count | The number of SE_LOGINFO objects in the list.

Description

SE_loginfo_free_list frees a list of SE_LOGINFO objects.


SE_loginfo_get_id

Returns the logfile ID from an SE_LOGINFO object.

Usage syntax

LONG SE_loginfo_get_id
(const SE_LOGINFO loginfo,
LONG *log_id);

Parameters

loginfo | The SE_LOGINFO handle.
log_id | The logfile ID.

Description

SE_loginfo_get_id returns the logfile ID.

Returns


SE_loginfo_get_name

Returns the logfile name from an SE_LOGINFO object.

Usage syntax

LONG SE_loginfo_get_name
(const SE_LOGINFO loginfo,
CHAR *name);

Parameters

loginfo | The SE_LOGINFO handle.
name | The logfile name.

Description

SE_loginfo_get_name returns the logfile name.

Returns


SE_loginfo_get_target_object

Returns the logfile's layer or table information.

Usage syntax

LONG SE_loginfo_get_target_object
(const SE_LOGINFO loginfo,
LONG *target_type,
CHAR *table,
CHAR *spatial_column);

Parameters

loginfo | The SE_LOGINFO handle.
target_type | Whether the logfile is based on a table or layer.
table | The registered table name.
spatial_column | The spatial column name if the target is a layer.

Description

SE_loginfo_get_target_object returns the information on the layer or table upon which logfile is based. The target_type parameter values are

SE_LOG_FOR_TABLE
SE_LOG_FOR_LAYER

Returns


SE_loginfo_is_persistent

Returns the logfile persistence from an SE_LOGINFO object.

Usage syntax

BOOL SE_loginfo_is_persistent (const SE_LOGINFO loginfo);

Parameters

loginfo

The SE_LOGINFO handle.

Description

SE_loginfo_is_persistent returns TRUE if the logfile is persistent.

Returns


SE_loginfo_set_name

Sets the logfile name for an SE_LOGINFO object.

Usage syntax

LONG SE_loginfo_set_name
(SE_LOGINFO loginfo,
CHAR *name);

Parameters

loginfo | The SE_LOGINFO handle.
name | The logfile name.

Description

SE_loginfo_set_name sets the logfile name.

Returns


SE_loginfo_set_persistence

Sets the logfile persistence.

Usage syntax

LONG SE_loginfo_set_persistence
(SE_LOGINFO loginfo,
BOOL is_persistent);

Parameters

loginfo | The SE_LOGINFO handle.
is_persistent | True to make a logfile persistent.

Description

This function sets the persistence attribute of a loginfo object. Persistence controls whether or not a logfile will exist past the end of an SDE user session. Temporary logfiles will be deleted at the end of a session. Persistent logfiles will be saved.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER

SE_INVALID_LOGINFO_OBJECT


SE_loginfo_set_target_object

Sets the logfile's layer or table information.

Usage syntax

LONG SE_loginfo_set_target_object
(SE_LOGINFO loginfo,
LONG target_type,
CHAR *table,
CHAR *spatial_column);

Parameters

loginfo | The SE_LOGINFO handle.
target_type | Whether the logfile is based on a table or layer.
table | The registered table name.
spatial_column | The spatial column name if the target is a layer.

Description

SE_loginfo_set_target_object sets whether the logfile is based on a layer or table. The target_type parameter values are

SE_LOG_FOR_TABLE
SE_LOG_FOR_LAYER

Returns


SE_metadata_free_info_list

Frees a list of meta-data objects.

Usage syntax

void SE_metadata_free_info_list
(LONG record_count,
SE_METADATAINFO *metadata_list);

Parameters

record_count | The number of entries in the list of metadata objects.
metadata_list | A pointer to the list of metadata objects.

Description

Frees a list of meta-data objects.


SE_metadata_get_info_by_id

Returns a pointer to a meta-data object by using its ID.

Usage syntax

LONG SE_metadata_get_info_by_id
(SE_CONNECTION connection,
LONG record_id,
SE_METADATAINFO metadata_record);

Parameters

connection | A connection.
record_id | A meta-data ID.
metadata_record | A pointer to the meta-data record.

Description

Returns a pointer to a meta-data object by using its ID.

Returns


SE_metadata_get_info_list

Returns a pointer to a list of the meta-data entries.

Usage syntax

LONG SE_metadata_get_info_list
(SE_CONNECTION connection,
const CHAR *where_clause,
SE_METADATAINFO **metadata_list,
LONG *record_count);

Parameters

connection | A connection.
where_clause | A pointer to an optional where clause.
metadata_list | A pointer to the array of meta-data objects.
record_count | The number of meta-data objects.

Description

Returns a pointer to an array of meta-data records. You can define a where clause to filter the records or pass a NULL pointer. Use SE_metadata_free_info_list to free the memory allocated by this function.

Returns


SE_metadatainfo_create

Creates a meta-data object.

Usage syntax

LONG SE_metadatainfo_create (SE_METADATAINFO *metadata_record);

Parameters

metadata_record

A pointer to a metadata object.

Description

Creates a meta-data object.

Returns


SE_metadatainfo_duplicate

Makes a copy of a meta-data object.

Usage syntax

LONG SE_metadatainfo_duplicate
(const SE_METADATAINFO src_metadata_record,
SE_ METADATAINFO tgt_metadata_record);

Parameters

src_metadata_record | A pointer to the source metadata object.
tgt_metadata_record | A pointer to the target metadata object.

Description

Makes a copy of a meta-data object.

Returns


SE_metadatainfo_free

Frees an allocated meta-data object.

Usage syntax

void SE_metadatainfo_free (SE_METADATAINFO metadata_record);

Parameters

metadata_record

A pointer to the metadata.

Description

Frees an allocated meta-data object.


SE_metadatainfo_get_classname

Returns the class name from the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_classname
(const SE_METADATAINFO metadata_record,
CHAR *classname);

Parameters

metadata_record | A pointer to the meta-data.
classname | A pointer to the class name.

Description

Returns the class name for a meta-data object. Declare classname as SE_MAX_METADATA_CLASS_LEN.

Returns

SE_SUCCESS
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_FAILURE


SE_metadatainfo_get_date

Returns the date from the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_date
(const SE_METADATAINFO metadata_record,
struct tm *date);

Parameters

metadata_record | A pointer to the meta-data.
date | A pointer to the date in POSIX format.

Description

Returns the last inserted or updated date for a meta-data object. The date is returned in a POSIX time_t format.

Returns

SE_SUCCESS
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_FAILURE


SE_metadatainfo_get_description

Retrieves the description of the meta-data object.

Usage syntax

LONG SE_metadatainfo_get_description
(const SE_METADATAINFO metadata_record,
CHAR *descripion);

Parameters

metadata_record | A pointer to the metadata.
description | A pointer to the description of the metadata.

Description

Retrieves the description of the meta-data object. Use SE_MAX_DESCRIPTION_LEN when declaring the description parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_get_id

Returns the record ID from the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_id
(const SE_METADATAINFO metadata_record,
LONG *id);

Parameters

metadata_record | A pointer to the meta-data.
id | A pointer to the record ID.

Description

Returns the record ID for a meta-data object.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER


SE_metadatainfo_get_object_name

Returns the object name of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_object_name
(const SE_METADATAINFO metadata_record,
CHAR *object_name);

Parameters

metadata_record | A pointer to the metadata.
object_name | A pointer to the name of the owner of the metadata.

Description

Returns the name of the object to which this meta-data object belongs. Use SE_MAX_OBJECT_NAME_LEN when declaring the object_name parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_get_object_owner

Returns the object owner of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_object_owner
(const SE_METADATAINFO metadata_record,
CHAR *object_owner);

Parameters

metadata_record | A pointer to the metadata.
object_owner | A pointer to the name of the owner of the metadata.

Description

Returns the owner of the supplied meta-data object. Use SE_MAX_OWNER_LEN when declaring the object_owner parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_get_object_type

Returns the object type for the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_object_type
(const SE_METADATAINFO metadata_record,
LONG *object_type);

Parameters

metadata_record | A pointer to the metadata.
object_type | The object type of the metadata.

Description

Returns the object type for the supplied meta-data object.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER


SE_metadatainfo_get_property

Returns the property name of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_property
(const SE_METADATAINFO metadata_record,
CHAR *property);

Parameters

metadata_record | A pointer to the metadata.
property | A pointer to the property name of the metadata.

Description

Returns the property name of the supplied meta-data object. Use SE_MAX_METADATA_PROPERTY_LEN when declaring the property parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_get_value

Returns the value of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_get_value
(const SE_METADATAINFO metadata_record,
CHAR *value);

Parameters

metadata_record | A pointer to the metadata.
value | A pointer to the value of the metadata.

Description

Returns the value of the supplied meta-data object. Use SE_MAX_METADATA_VALUE_LEN when declaring the value parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_set_classname

Sets the name of the class for a meta-data object.

Usage syntax

LONG SE_metadatainfo_set_classname
(SE_METADATAINFO metadata_record,
const CHAR *class_name);

Parameters

metadata_record | A pointer to the metadata.
classname | A pointer to a character string class name of the metadata.

Description

Sets the name of the class for a meta-data object. Declare classname with SE_MAX_METADATA_CLASS_LEN.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER


SE_metadatainfo_set_description

Sets the description of the meta-data object.

Usage syntax

LONG SE_metadatainfo_set_description
(SE_METADATAINFO metadata_record,
const CHAR *descripion);

Parameters

metadata_record | A pointer to the metadata.
description | A pointer to the description of the metadata.

Description

Sets the description of the meta-data object. Use SE_MAX_DESCRIPTION_LEN when declaring the description parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_set_object_name

Sets the object name for a meta-data object.

Usage syntax

LONG SE_metadatainfo_set_object_name
(SE_METADATAINFO metadata_record,
const CHAR *object_name);

Parameters

metadata_record | A pointer to the metadata.
object_name | A pointer to a character string description of the metadata.

Description

Sets the object name to which this meta-data object belongs. Use SE_MAX_OBJECT_NAME_LEN when declaring the object name parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER


SE_metadatainfo_set_object_type

SE_metadatainfo_set_object_

Sets the object type for the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_set_object_type
(SE_METADATAINFO metadata_record,
const LONG object_type);

Parameters

metadata_record | A pointer to the metadata.
object_type | The object type of the metadata.

Description

Sets the object type for the supplied meta-data object. Supported types include

SE_METADATA_OBJECT_TYPE_TABLE

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER


SE_metadatainfo_set_property

Sets the property name of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_set_property
(SE_METADATAINFO metadata_record,
const CHAR *property);

Parameters

metadata_record | A pointer to the metadata.
property | A pointer to the property name of the metadata.

Description

Sets the property name of the supplied meta-data object. Use SE_MAX_METADATA_PROPERTY_LEN when declaring the property parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_metadatainfo_set_value

Sets the value of the supplied meta-data object.

Usage syntax

LONG SE_metadatainfo_set_value
(SE_METADATAINFO metadata_record,
const CHAR *value);

Parameters

metadata_record | A pointer to the metadata.
value | A pointer to the value of the metadata.

Description

Sets the value of the supplied meta-data object. Use SE_MAX_METADATA_VALUE_LEN when declaring the value parameter.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_METADATA_OBJECT
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_SDE_NOT_STARTED


SE_objectlock_free_list

Releases memory allocated for a list of object lock structures.

Usage syntax

void SE_objectlock_free_list
(LONG lock_count,
SE_OBJECTLOCKINFO *lock_list);

Parameters

lock_count | The number of object locks in the list.
lock_list | Address of an SE_OBJECTLOCKINFO pointer set to a dynamically allocated space which contains an array of SE_OBJECTLOCKINFO structures.

Description

SE_objectlock_free_list frees the memory allocated for the list of object lock structures returned by SE_objectlock_get_list .


SE_objectlock_free_lock

Releases a locked object lock.

Usage syntax

LONG SE_objectlock_free_lock
(LONG SE_CONNECTION connection,
const SE_OBJECTLOCKINFO objectlock);

Parameters

connection | The connection handle.
objectlock | The object lock structure.

Description

SE_objectlock_free_lock frees a locked object.

Returns


SE_objectlock_get_list

Retrieves an array of SE_OBJECTLOCKINFO structures for all accessible object locks.

Usage syntax

LONG SE_objectlock_get_list
(SE_CONNECTION connection,
const SE_OBJECTLOCKINFO example,
SE_OBJECTLOCKINFO **lock_list,
LONG *lock_count);

Parameters

connection | The connection handle.
example | Specifies values of desired object lock properties. If NULL, all object locks are returned.
lock_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_OBJECTLOCKINFO structures.
lock_count | The number of object locks in the SE_OBJECTLOCKINFO list.

Description

SE_objectlock_get_list returns an array of SE_OBJECTLOCKINFO pointers that are defined. You can filter the returned object locks by setting some of the attributes of the SE_OBJECTLOCKINFO structure in the example parameter. The total number of object lock structures is returned in the lock_count parameter. The application must free the object lock_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_OBJECTLOCKINFO_OBJECT
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_objectlock_free_list .


SE_objectlock_lock

Locks a object.

Usage syntax

LONG SE_objectlock_lock
(SE_CONNECTION connection,
const SE_OBJECTLOCKINFO objectlock,
LONG lock_mode);

Parameters

connection | The connection handle.
objectlock | The SE_OBJECTLOCKINFO structure.
lock_mode | The lock mode.

Description

SE_objectlock_lock locks a object lock. The lock modes are

SE_OBJECTLOCK_SHARED_LOCK
SE_OBJECTLOCK_EXCLUSIVE_LOCK

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_OBJECTLOCK_OBJECT
SE_INVALID_PARAM_VALUE
SE_LOCK_CONFLICT
SE_NET_FAILURE
SE_OUT_OF_LOCKS
SE_SDE_NOT_STARTED


SE_objectlockinfo_create

Creates a object lock definition.

Usage syntax

LONG SE_objectlockinfo_create (SE_OBJECTLOCKINFO *objectlock);

Parameters

objectlock

A pointer to a SE_OBJECTLOCKINFO structure.

Description

SE_objectlockinfo_create allocates and initializes an SE_OBJECTLOCKINFO structure which contains information about a object lock.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_OBJECTLOCKINFO object before using any other function that requires an SE_OBJECTLOCKINFO pointer.


SE_objectlockinfo_duplicate

Copies a object lock definition.

Usage syntax

LONG SE_objectlockinfo_duplicate
(const SE_OBJECTLOCKINFO src_lock,
SE_OBJECTLOCKINFO tgt_lock);

Parameters

src_lock | The source SE_OBJECTLOCKINFO handle.
tgt_lock | The target SE_OBJECTLOCKINFO handle.

Description

SE_objectlockinfo_duplicate creates a copy of an SE_OBJECTLOCKINFO structure.

Returns


SE_objectlockinfo_free

Releases memory allocated for an SE_OBJECTLOCKINFO structure.

Usage syntax

void SE_objectlockinfo_free (SE_OBJECTLOCKINFO objectlock);

Parameters

objectlock

The pointer to a state structure.

Description

SE_objectlockinfo_free frees the memory allocated for an SE_OBJECTLOCKINFO structure returned by SE_objectlockinfo_create .


SE_objectlockinfo_get_lock_mode

Retrieves the object lock’s mode.

Usage syntax

LONG SE_objectlockinfo_get_lock_mode
(const SE_OBJECTLOCKINFO objectlock,
LONG *lock_mode);

Parameters

objectlock | The objectlockinfo handle.
lock_mode | A pointer to the object lock’s mode.

Description

SE_objectlockinfo_get_lock_mode retrieves the mode of an object lock. This function returns meaningful information for an SE_OBJECTLOCKINFO object that describes an existing object lock only.

Returns


SE_objectlockinfo_get_object_id

Retrieves the object ID.

Usage syntax

LONG SE_objectlockinfo_get_object_id
(const SE_OBJECTLOCKINFO objectlock,
LONG *object_id);

Parameters

objectlock | The objectlockinfo handle.
object_id | A pointer to the object ID.

Description

SE_objectlockinfo_get_object_id retrieves the ID of a object. This function returns meaningful information for an SE_OBJECTLOCKINFO object that describes an existing object lock only.

Returns


SE_objectlockinfo_get_object_type

Retrieves the object type.

Usage syntax

LONG SE_objectlockinfo_get_object_type
(const SE_OBJECTLOCKINFO objectlock,
LONG *object_type);

Parameters

objectlock | The objectlockinfo handle.
object_type | A pointer to the object type.

Description

SE_objectlockinfo_get_object_type retrieves the type of a object. This function returns meaningful information for an SE_OBJECTLOCKINFO object that describes an existing object lock only.

Returns


SE_objectlockinfo_get_owner

Retrieves the object lock's owner.

Usage syntax

LONG SE_objectlockinfo_get_owner
(const SE_OBJECTLOCKINFO objectlock,
CHAR *owner,
LONG *svrpid);

Parameters

objectlock | The objectlockinfo handle.
owner | The object lock owner.
svrpid | The server process ID.

Description

SE_objectlockinfo_get_owner retrieves the owner for a specific object lock. Allocate at least SE_MAX_OWNER_LEN bytes for the owner parameter.

Returns


SE_objectlockinfo_set_object_id

Sets the object ID.

Usage syntax

LONG SE_objectlockinfo_set_object_id
(SE_OBJECTLOCKINFO objectlock,
LONG *object_id);

Parameters

objectlock | The objectlockinfo handle.
object_id | A pointer to the object ID.

Description

SE_objectlockinfo_set_object_id sets the ID of a object.

Returns


SE_objectlockinfo_set_object_type

Sets the object type.

Usage syntax

LONG SE_objectlockinfo_set_object_type
(SE_OBJECTLOCKINFO objectlock,
LONG *object_type);

Parameters

objectlock | The objectlockinfo handle.
object_type | A pointer to the object type.

Description

SE_objectlockinfo_set_object_type sets the type of a object.

Returns


SE_ptable_add_point

Adds one or more points to the point table.

Usage syntax

LONG SE_ptable_add_point
(SE_PTABLE ptable,
SE_POINT *pt,
LFLOAT *z,
LONG count,
ULONG mask);

Parameters

ptable | The handle to a point table.
pt | The pointer to an array of one or more SE_POINT structures.
z | The pointer to an array of z-values associated with the two-dimensional SE_POINT array. Use a null pointer or a 0 filled array for 2-D points.
count | The number of points in the point array and z-array.
mask | The type mask for the points to add.

Description

The SE_ptable_add_point function adds the supplied points that reside inside the clip window to the point table. Points outside the point table’s envelope are discarded.

Use mask values to select the types of points for snapping and to differentiate point types after a snap. If a point already exists in the table, the routine performs a logical OR operation on the point mask with the value of the passed type mask.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_OUT_OF_CLMEM

Notes

• If inserting 2-D points, the z-array can be either a null pointer, or an array of elevations set to 0 for each point. If inserting 3-D points, each point in the two-dimensional SE_POINT array (pt) must have a valid z-value in the z-array.

• Mask bits differentiate point types. Do not use a zero mask. Snapping a point requires a mask to perform a logical AND operation with the mask of each candidate’s point. If the result of the logical AND operation is zero, the point is ignored for snapping purposes.


SE_ptable_add_shape

Adds the points in a shape to the point table.

Usage syntax

LONG SE_ptable_add_shape
(SE_PTABLE ptable,
const SE_SHAPE shape,
ULONG mask);

Parameters

ptable | The handle to a point table.
shape | The pointer to an SE_SHAPE structure.
mask | A type mask for the points to add.

Description

The SE_ptable_add_shape function adds to the point table all of the supplied shape’s points that fall within the clip window of the point table.

Mask values can help select the types of points for snapping and to differentiate point types after a snap. If a point already exists in the table, the routine performs a logical OR operation on the point mask with the value of the passed type mask.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_OUT_OF_CLMEM

Notes

• Points are inserted as 2-D or 3-D points based on the presence of z-values.

• Mask bits differentiate point types. Do not use a zero mask. Point snap calls use a mask to perform a logical AND operation with each candidate point’s mask. If the result of the logical AND operation is zero, the point is ignored for snapping purposes.


SE_ptable_create

Creates an empty point table.

Usage syntax

LONG SE_ptable_create
(SE_ENVELOPE *window,
SE_COORDREF coordref
SE_PTABLE *ptable);

Parameters

window | A pointer to an SE_ENVELOPE structure.
coordref | A pointer to an SE_COORDREF structure.
ptable | The handle to a point table.

Description

The SE_ptable_create function initializes a point table and must be called before using any of the other point table routines. Memory allocation for the point table is automatic. When a point table is no longer being used, call SE_ptable_free to free the memory associated with the point table.

An SE_ENVELOPE structure is required for point table creation. The envelope defines the region where all points will reside and all point snapping will occur. Any point not located within the envelope is discarded.

Returns

SE_SUCCESS
SE_INVALID_COORDREF_OBJECT
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• Call this function before using any other point table routines.

• Multiple point tables can be active concurrently. Each point table has a unique point table handle.


SE_ptable_delete_point

Deletes one or more points from the point table.

Usage syntax

LONG SE_ptable_delete_point
(SE_PTABLE ptable,
SE_POINT *pt,
LFLOAT *z,
LONG count,
ULONG mask);

Parameters

ptable | The handle to a point table.
pt | The pointer to an array of one or more SE_POINT structures.
z | The pointer to an array of z-values associated with the 2-D SE_POINT array. This is a null pointer, or 0 filled array for 2-D points.
count | The number of points in the point array and z-array.
mask | The type mask for the points to delete.

Description

The SE_ptable_delete_point function finds all the supplied points in the point table, and deletes them based on the evaluation of the mask.

This function evaluates the mask by performing a logical NOT OR operation on the candidate point mask and supplied mask for each point to delete. If the resulting point mask is zero, the point is deleted from the table; otherwise, it remains in the table with the selected mask bits turned off, indicating that its type is not that of the supplied mask.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER

Notes

• If all the bits in the supplied mask are turned on, the points are deleted from the table, regardless of type.


SE_ptable_delete_shape

Deletes the points in a shape from the point table.

Usage syntax

LONG SE_ptable_delete_shape
(SE_PTABLE ptable,
const SE_SHAPE shape,
ULONG mask);

Parameters

ptable | The handle to a point table.
shape | The pointer to an SE_SHAPE structure.
mask | A type mask for the points to delete.

Description

The SE_ptable_delete_shape function finds all the shape’s points in the point table, and deletes them based on the evaluation of the mask.

This function evaluates the mask by performing a logical NOT OR operation on the candidate point mask and supplied mask for each point to delete. If the resulting point mask is zero, the point is deleted from the table; otherwise, it remains in the table with the selected mask bits turned off, indicating that its type is not the same as the supplied mask.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER

Notes

• If all the bits in the supplied mask are turned on, the points are deleted from the table, regardless of type.


SE_ptable_free

Deallocates memory used by a point table.

Usage syntax

void SE_ptable_free (SE_PTABLE ptable);

Parameters

ptable

The handle to a point table.

Description

SE_ptable_free destroys a point table created by the SE_ptable_create function, releasing all resources allocated to the specified point table.


SE_ptable_get

Retrieves all points in the point table within the supplied envelope.

Usage syntax

LONG SE_ptable_get
(SE_PTABLE ptable,
SE_ENVELOPE *userwin,
ULONG mask,
void (*user_function) (void *argument,
SE_SNAPPED_POINT *points,
LONG count),
void *argument);

Parameters

ptable | The handle to a point table.
userwin | An SE_ENVELOPE structure. Points inside this rectangle are returned via calls to a user-defined function.
mask | The type mask for the points to retrieve. A value of zero retrieves all point types.
user_function | A pointer to a user function returning void.
argument | Argument to pass to the user-supplied function.
points | An array of SE_SNAPPED_POINT structures.
count | The number of SE_SNAPPED_POINT structures returned.

Description

SE_ptable_get retrieves all points within the supplied envelope that satisfy the mask test. A point in the table satisfies the mask test only if a logical AND between the candidate’s point mask and the supplied mask is nonzero.

A user function is called to return points that satisfy the search. For efficiency, the user function returns a number of SE_SNAPPED_POINT structures each time it is called. The user function may be called more than once if a large number of SE_SNAPPED_POINT structures are to be returned.

The SE_SNAPPED_POINT structure is defined as follows:

typedef struct{

LFLOAT x,y,z;

ULONG mask;

} SE_SNAPPED_POINT;

Returns

The number of SNAPPED_POINT structures passed via calls to the user function.

SE_FAILURE
SE_INVALID_POINTER

Notes

• A useful display technique is to draw shapes concurrently with the point table loading, and to subsequently retrieve and draw the point polymarkers with a call to SE_ptable_get . Each polymarker is drawn only once, even if a point is present in different shapes and different layers. The color of each polymarker is based on the composite mask in the SE_SNAPPED_POINT structure.


SE_ptable_set_concurrency

Establishes point table concurrency control for threaded client applications.

Usage syntax

LONG SE_ptable_set_concurrency
(SE_PTABLE ptable,
LONG policy);

Parameters

ptable | The handle to a point table.
policy | The concurrency policy.

Description

SE_ptable_set_concurrency sets the concurrency policy for a particular point table. The concurrency policy affects how calls to the API for this point table behave in a multithreaded environment.

The policies for concurrency are:

SE_UNPROTECTED_POLICY ArcSDE provides no protection. Calls by multiple threads to the same handle could cause problems, but there is no overhead.

SE_ONE_THREAD_POLICY The handle is owned by the calling thread, and a call by another thread immediately returns with an error code of SE_CONNECTION_LOCKED. The owning thread must yield ownership by calling this function with an argument other than SE_ONE_THREAD_POLICY before another thread can use this handle. If the owning thread terminates, then it automatically releases its ownership.

SE_TRYLOCK_POLICY Whenever an ArcSDE function with a connection or stream argument is entered, the entering thread tries to lock. If it succeeds, it proceeds; if it fails, it immediately returns with an error code of SE_CONNECTION_IN_USE.

SE_LOCK_POLICY Similar to SE_TRYLOCK_POLICY, but instead of failing if the connection is currently in use, the call hangs until the thread that has the connection currently locked returns from its ArcSDE function call. If multiple threads are waiting on the connection, it is impossible to determine which thread will get the lock next.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_OUT_OF_MUTEXES

Notes

• The environment set by SE_ptable_set_concurrency applies to subsequent calls to SE_ptable_set_concurrency. For safety in a multithreaded environment, call SE_ptable_set_concurrency on the point table before passing it to any other thread than the one that created the point table.


SE_ptable_snap

Snaps to the closest point in the point table.

Usage syntax

LONG SE_ptable_snap
(SE_PTABLE ptable,
SE_POINT *pt,
LFLOAT z,
LFLOAT radius,
ULONG mask,
SE_SNAPPED_POINT *spt
LONG snapmode);

Parameters

ptable | The handle to a point table.
pt | The pointer to the SE_POINT structure of the search point.
z | The z-value associated with the search point pt.
radius | The search radius to use to find the closest point.
mask | A type mask for the points to search.
spt | A pointer to the SE_SNAPPED_POINT structure that will receive the results of the search.
snapmode | The snap method (SE_SNAP2D, SE_SNAP3D).

Description

SE_ptable_snap conducts a search of the point table to find the point closest to the supplied point value within the specified search radius. A point in the table remains in the search only if a logical AND between the candidate’s point mask and the supplied mask is nonzero. Returns 1 if the point was successfully snapped. Returns 0 if the point couldn’t be snapped.

The snapmode determines how to conduct the search for the closest snap point:

SE_SNAP2D If two points are found at the same distance, the z-value is used as a tiebreaker if it is nonzero.

SE_SNAP3D True three-dimensional distances are calculated.

Returns

TRUE
FALSE
SE_FAILURE
SE_INVALID_POINTER

Notes

• Mask bits differentiate point types. For snapping purposes, a zero mask means not to use a mask test; in other words, return the closest point of any type.


SE_queryinfo_create

Creates an SE_QUERYINFO object.

Usage syntax

LONG SE_queryinfo_create (SE_QUERYINFO *query_info);

Parameters

query_info

The SE_QUERYINFO handle.

Description

SE_queryinfo_create creates an SE_QUERYINFO object. You must call this function before working with a query.

Returns


SE_queryinfo_duplicate

Duplicates an SE_QUERYINFO structure.

Usage syntax

LONG SE_queryinfo_duplicate
( const SE_QUERYINFO src_queryinfo,
SE_QUERYINFO tgt_queryinfo);

Parameters

src_queryinfo | A pointer to the source queryinfo structure.
tgt_queryinfo | A pointer to the target queryinfo structure.

Description

SE_queryinfo_duplicate copies an SE_QUERYINFO structure which includes parameters to define tables, columns, where clause, query type, ORDER BY clauses and DBMS hints.

Returns


SE_queryinfo_free

Frees an SE_QUERYINFO object.

Usage syntax

void SE_queryinfo_free (SE_QUERYINFO query_info);

Parameters

query_info

The SE_QUERYINFO handle.

Description

SE_queryinfo_free frees an SE_QUERYINFO object.


SE_queryinfo_free_columns

Frees a string array.

Usage syntax

void SE_queryinfo_free_columns
(const CHAR **columns);

Parameters

columns

The string array to free.

Description

This routine frees the memory that was allocated by SE_queryinfo_get_columns.


SE_queryinfo_free_tables

Frees a string array.

Usage syntax

void SE_queryinfo_free_tables
(const CHAR **tables);

Parameters

tables

The string array to free.

Description

This routine frees the memory that was allocated by SE_queryinfo_get_tables.


SE_queryinfo_get_by_clause

Retrieves the order by clause for a query.

Usage syntax

LONG SE_queryinfo_get_by_clause
(const SE_QUERYINFO query_info,
CHAR *order_by);

Parameters

query_info | The SE_QUERYINFO handle.
order_by | A pointer to an order by clause.

Description

SE_queryinfo_get_by_clause retrieves the order by clause for a query.

Returns


SE_queryinfo_get_columns

Retrieves the columns for a query.

Usage syntax

LONG SE_queryinfo_get_columns
(const SE_QUERYINFO query_info,
LONG *num_columns,
CHAR ***columns);

Parameters

query_info | The SE_QUERYINFO handle.
num_columns | The number of columns
columns | A pointer to a list of column names.

Description

SE_queryinfo_get_columns retrieves the number of columns and the column names for a query.

Returns


SE_queryinfo_get_entity_type

Retrieves the entity type.

Usage syntax

LONG SE_queryinfo_get_entity_type
(const SE_QUERYINFO query_info,
LONG *entity_type);

Parameters

query_info | The SE_QUERYINFO handle.
entity_type | The entity type.

Description

SE_queryinfo_get_entity_type retrieves the entity type. The entity types are

SE_NIL_TYPE_MASK

SE_POINT_TYPE_MASK

SE_LINE_TYPE_MASK

SE_SIMPLE_LINE_TYPE_MASK

SE_AREA_TYPE_MASK

You can OR the entity types together.

Returns


SE_queryinfo_get_logfile

Retrieves the logfile for a query.

Usage syntax

LONG SE_queryinfo_get_logfile
(const SE_QUERYINFO query_info,
CHAR *logfile);

Parameters

query_info | The SE_QUERYINFO handle.
logfile | A pointer to a logfile name.

Description

SE_queryinfo_get_logfile retrieves the logfile for a query.

Returns


SE_queryinfo_get_query_type

Retrieves the query type.

Usage syntax

LONG SE_queryinfo_get_query_type
(const SE_QUERYINFO query_info,
LONG *query_type);

Parameters

query_info | The SE_QUERYINFO handle.
query_type | The query type.

Description

SE_queryinfo_get_query_type retrieves the query type. The query types are

SE_QUERYTYPE_ATTRIBUTE_FIRST /* Join the business tables first, then the

spatial and/or feature table */

SE_QUERYTYPE_JFA /* Join the feature and attribute (business)

tables */

SE_QUERYTYPE_JSF /* Join the spatial and feature tables */

SE_QUERYTYPE_JSFA /* Join the spatial/feature/business/tables */

SE_QUERYTYPE_V3 /* Uses the SDE Version 3.x query method where

all tables are queried individually */

Returns


SE_queryinfo_get_tables

Retrieves the tables for a query.

Usage syntax

LONG SE_queryinfo_get_tables
(const SE_QUERYINFO query_info,
LONG num_tables,
CHAR ***tables);

Parameters

query_info | The SE_QUERYINFO handle.
num_tables | The number of tables.
tables | A pointer to a list of table names.

Description

SE_queryinfo_get_tables retrieves the tables for a query. Table aliases are appended to the table names.

Returns


SE_queryinfo_get_where_clause

Retrieves the where clause for a query.

Usage syntax

LONG SE_queryinfo_get_where_clause
(const SE_QUERYINFO query_info,
CHAR *where_clause);

Parameters

query_info | The SE_QUERYINFO handle.
where_clause | A pointer to a where clause.

Description

SE_queryinfo_get_where_clause retrieves the where clause for a query.

Returns


SE_queryinfo_set_by_clause

Sets the order by clause for a query.

Usage syntax

LONG SE_queryinfo_set_by_clause
(SE_QUERYINFO query_info,
const CHAR *order_by);

Parameters

query_info | The SE_QUERYINFO handle.
order_by | A pointer to an order by clause.

Description

SE_queryinfo_set_by_clause sets the order by clause for a query. The order by clause is added to the end of the where clause in the SE_QUERYINFO structure and defined by SE_queryinfo_set_where_clause .

Returns


SE_queryinfo_set_columns

Sets the columns for a query.

Usage syntax

LONG SE_queryinfo_set_columns
(SE_QUERYINFO query_info,
const LONG num_columns,
const CHAR **columns);

Parameters

query_info | The SE_QUERYINFO handle.
num_columns | The number of columns
columns | A pointer to a list of column names.

Description

SE_queryinfo_set_columns sets the column names for a query. You can qualify column names with <<owner>.table>.column or use aliases. Aliased column names must match the aliases list defined in the SE_QUERYINFO structure.

Returns


SE_queryinfo_set_entity_type

Sets the entity type.

Usage syntax

LONG SE_queryinfo_set_entity_type
(SE_QUERYINFO query_info,
const LONG entity_type);

Parameters

query_info | The SE_QUERYINFO handle.
entity_type | The entity type.

Description

SE_queryinfo_set_entity_type sets the entity type. The entity types are

SE_NIL_TYPE_MASK

SE_POINT_TYPE_MASK

SE_LINE_TYPE_MASK

SE_SIMPLE_LINE_TYPE_MASK

SE_AREA_TYPE_MASK

You can OR the entity types together.

Returns


SE_queryinfo_set_logfile

Sets the logfile for a query.

Usage syntax

LONG SE_queryinfo_set_logfile
(SE_QUERYINFO query_info,
const CHAR *logfile);

Parameters

query_info | The SE_QUERYINFO handle.
logfile | A pointer to a logfile name.

Description

SE_queryinfo_set_logfile sets the logfile for a query.

Returns


SE_queryinfo_set_query_type

Sets the query type.

Usage syntax

LONG SE_queryinfo_set_query_type
(SE_QUERYINFO query_info,
const LONG query_type);

Parameters

query_info | The SE_QUERYINFO handle.
query_type | The query type.

Description

SE_queryinfo_set_query_type sets the query type. The query types are

SE_QUERYTYPE_ATTRIBUTE_FIRST /* Join the business tables first, then the

spatial and/or feature table */

SE_QUERYTYPE_JFA /* Join the feature and attribute (business)

tables */

SE_QUERYTYPE_JSF /* Join the spatial and feature tables */

SE_QUERYTYPE_JSFA /* Join the spatial/feature/business/tables */

SE_QUERYTYPE_V3 /* Uses the SDE Version 3.x query method where

all tables are queried individually */

Returns


SE_queryinfo_set_tables

Sets the tables for a query.

Usage syntax

LONG SE_queryinfo_set_tables
(SE_QUERYINFO query_info,
const LONG num_tables,
const CHAR **tables,
const CHAR **aliases);

Parameters

query_info | The SE_QUERYINFO handle.
num_tables | The number of tables.
tables | A pointer to a list of table names.
aliases | A pointer to a list of aliases for the tables.

Description

SE_queryinfo_set_tables sets the tables for a query. The order in the tables parameter define the order that the tables will appear in the FROM portion of the table join. You can qualify the table names with <owner>.table. You can also set table aliases for table joins to resolve ambiquities in the SELECT columns and where clause of the join. Table aliases are optional and are only applied to the FROM clause of the SQL query expression.

Returns


SE_queryinfo_set_where_clause

Sets the where clause for a query.

Usage syntax

LONG SE_queryinfo_set_where_clause
(SE_QUERYINFO query_info,
const CHAR *where_clause);

Parameters

query_info | The SE_QUERYINFO handle.
where_clause | A pointer to a where clause.

Description

SE_queryinfo_set_where_clause sets the where clause for a query. The where_clause parameter must contain valid SQL expressions supported by the underlying DBMS. The SDE function doesn’t parse or rewrite the where clause. You can include or omit the ‘where’ keyword. A where clause for a multitable join must use the same table alias names in the ‘aliases’ parameter of the SE_QUERYINFO structure and defined with SE_queryinfo_set_tables .

Returns


SE_rasbandinfo_create

Creates an SE_RASBANDINFO structure.

Usage syntax

LONG SE_rasbandinfo_create (SE_RASBANDINFO *rasterband);

Parameters

rasterband

A pointer to the raster band structure.

Description

SE_rasbandinfo_create allocates and initializes an SE_RASBANDINFO structure which contains information about a raster band.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASBANDINFO object before using any other function that requires an SE_RASBANDINFO pointer.


SE_rasbandinfo_duplicate

Copies an SE_RASBANDINFO structure.

Usage syntax

LONG SE_rasbandinfo_duplicate
(const SE_RASBANDINFO src_rasterband,
SE_RASBANDINFO tgt_rasterband);

Parameters

src_rasterband | A pointer to the source raster band structure.
tgt_rasterband | A pointer to the target raster band structure.

Description

SE_rasbandinfo_duplicate copies an SE_RASBANDINFO structure which contains information about a raster band.

Returns


SE_rasbandinfo_free

Releases memory allocated for an SE_RASBANDINFO structure.

Usage syntax

void SE_rasbandinfo_free (SE_RASBANDINFO rasterband);

Parameters

rasterband

The pointer to a raster band structure.

Description

SE_rasbandinfo_free frees the memory allocated for an SE_RASBANDINFO structure returned by SE_rasbandinfo_create .


SE_rasbandinfo_free_colormap

Releases memory allocated for colormap.

Usage syntax

void SE_rasbandinfo_free_colormap (void *data);

Parameters

data

A pointer to the colormap data.

Description

SE_rasbandinfo_free_colormap releases the memory allocated for colormap in SE_rasbandinfo_get_colormap.


SE_rasbandinfo_free_stats_histogram

Releases memory allocated for histogram.

Usage syntax

void SE_rasbandinfo_free_stats_histogram
(LFLOAT *bin_table,
LFLOAT *histogram);

Parameters

bin_table | A pointer to the bin table.
histogram | A pointer to the histogram.

Description

SE_rasbandinfo_free_stats_histogram releases memory allocated for the bin table and histogram.


SE_rasbandinfo_get_band_name

Retrieves the band name for a raster band.

Usage syntax

LONG SE_rasbandinfo_get_band_name
(const SE_RASBANDINFO rasterband,
CHAR *band_name);

Parameters

rasterband | The raster band handle.
band_name | A pointer to the name of the band.

Description

SE_rasbandinfo_get_band_name returns the name of a raster band. Set band_name to at least SE_MAX_DESCRIPTION_LENGTH.

Returns


SE_rasbandinfo_get_band_number

Retrieves the sequence number for a raster band.

Usage syntax

LONG SE_rasbandinfo_get_band_number
(const SE_RASBANDINFO rasterband,
LONG *sequence_nbr);

Parameters

rasterband | The rasterband handle.
sequence_nbr | A pointer to the sequence number.

Description

SE_rasbandinfo_get_band_number retrieves the sequence number of the raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_band_size

Retrieves the band size for a raster band.

Usage syntax

LONG SE_rasbandinfo_get_band_size
(const SE_RASBANDINFO rasterband,
LONG *band_width,
LONG *band_height);

Parameters

rasterband | The raster band handle.
band_width | A pointer to the band width.
band_height | A pointer to the block height.

Description

SE_rasbandinfo_get_band_size returns the tile width and height for a raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_colormap

Retrieves the colormap information in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_colormap (const SE_RASBANDINFO rasterband,
SE_COLORMAP_TYPE *colormap_type,
SE_COLORMAP_DATA_TYPE *data_type,
LONG *num_entries,
void **data);

Parameters

rasterband | The SE_RASBANDINFO handle.
colormap_type | A pointer to the colormap type.
data_type | A pointer to the data type.
num_entries | A pointer to the number of entries.
data | The address of the pointer to the colormap data.

Description

SE_rasbandinfo_get_colormap retrieves the colormap information in raster band. The colormap data returned will be a one-dimensional array. For example, if the colormap type is SE_COLORMAP_RGB, it should have the following structure: r0, g0, b0, r1, g1, b1, ...

typedef enum

{

SE_COLORMAP_NONE= 0,
SE_COLORMAP_RGB,
SE_COLORMAP_RGBA,
SE_COLORMAP_TYPE;

}

typedef enum

{

SE_COLORMAP_DATA_BYTE,
SE_COLORMAP_DATA_SHORT,
SE_COLORMAP_DATA_TYPE;

}

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_OPERATION_NOT_ALLOWED

SE_RASTERBAND_NO_COLORMAP

SE_OUT_OF_CLMEM

NOTES:

Use SE_rasbandinfo_free_colormap to free the memory for colormap data.


SE_rasbandinfo_get_compression_type

Retrieves the compression type for the rasterband.

Usage syntax

LONG SE_rasbandinfo_get_compression_type(const SE_RASBANDINFO rasterband, SE_COMPRESSION_TYPE *type);

Parameters

rasterband

The rasterband handle.

type

A pointer to an SE_COMPRESSION_TYPE object.

Description

SE_rasbandinfo_get_compression_type retrieves the compression type of the raster band into an SE_COMPRESSION_TYPE object.

Returns


SE_rasbandinfo_get_extent

Retrieves the raster band extent.

Usage syntax

LONG SE_rasbandinfo_get_extent
(const SE_RASBANDINFO rasterband,
SE_ENVELOPE *envelope);

Parameters

rasterband | The rasterband handle.
envelope | A pointer to an SE_ENVELOPE object.

Description

SE_rasbandinfo_get_extent retrieves the width and height of the raster band into an SE_ENVELOPE object. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_id

Retrieves the raster band ID.

Usage syntax

LONG SE_rasbandinfo_get_id
(const SE_RASBANDINFO rasterband,
LONG *rasterband_id);

Parameters

rasterband | The rasterband handle.
rasterband_id | A pointer to the raster band ID value.

Description

SE_rasbandinfo_get_id retrieves the ID of the raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_max_level

Retrieves the maximum level of the image pyramid for the raster band.

Usage syntax

LONG SE_rasbandinfo_get_max_level
(const SE_RASBANDINFO rasterband,
LONG *max_level,
BOOL *skip_level1);

Parameters

rasterband | The rasterband handle.
max_level | A pointer to the maximum level.
skip_level1 | If TRUE, does not count the first level.

Description

SE_rasbandinfo_get_max_level retrieves the maximum level for the image pyramid of the raster band.

Returns


SE_rasbandinfo_get_pixel_type

Retrieves the pixel type for the raster band.

Usage syntax

LONG SE_rasbandinfo_get_pixel_type
(const SE_RASBANDINFO rasterband,
LONG *pixel_type);

Parameters

rasterband | The rasterband handle.
pixel_type | A pointer to the pixel type.

Description

SE_rasbandinfo_get_pixel_type retrieves the pixel type of the raster band. The pixel type values are:

SE_PIXEL_TYPE_1BIT

SE_PIXEL_TYPE_4BIT

SE_PIXEL_TYPE_8BIT_U

SE_PIXEL_TYPE_8BIT_S

SE_PIXEL_TYPE_16BIT_U

SE_PIXEL_TYPE_16BIT_S

SE_PIXEL_TYPE_32BIT_U

SE_PIXEL_TYPE_32BIT_S

SE_PIXEL_TYPE_32BIT_REAL

SE_PIXEL_TYPE_64BIT_REAL

SE_PIXEL_TYPE_64BIT_COMPLEX

SE_PIXEL_TYPE_128BIT_COMPLEX

This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_rascol_id

Retrieves the raster column ID for the raster band.

Usage syntax

LONG SE_rasbandinfo_get_rascol_id
(const SE_RASBANDINFO rasterband,
LONG *rascol_id);

Parameters

rasterband | The rasterband handle.
rascol_id | A pointer to the raster column ID value.

Description

SE_rasbandinfo_get_rascol_id retrieves the raster column ID associated with the raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_raster_id

Retrieves the raster ID for the raster band.

Usage syntax

LONG SE_rasbandinfo_get_raster_id
(const SE_RASBANDINFO rasterband,
LONG *raster_id);

Parameters

rasterband | The rasterband handle.
raster_id | A pointer to the raster ID value.

Description

SE_rasbandinfo_get_raster_id retrieves the raster ID associated with the raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_statistics

Retrieves the maximum level of the image pyramid for the raster band.

Usage syntax

LONG SE_rasbandinfo_get_statistics
(const SE_RASBANDINFO rasterband,
SE_RASTERBAND_STATS *stats);

Parameters

rasterband | The rasterband handle.
stats | A pointer to an SE_RASTERBAND_STATS object.

Description

SE_rasbandinfo_get_statistics retrieves the statistics for the raster band using an SE_RASTERBAND_STATS object. The structure is:

typedef struct {

LFLOAT mean; /* Average pixel value. */

LFLOAT median; /* Median pixel value. */

LFLOAT mode; /* Pixel value occurs with greatest freq. */

LFLOAT min; /* Minimum pixel value. */

LFLOAT max; /* Maximum pixel value. */

LFLOAT std_dev; /* Standard deviation. */

} SE_RASTERBAND_STATS;

Returns


SE_rasbandinfo_get_stats_histogram

Retrieves the histogram in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_stats_histogram
(const SE_RASBANDINFO rasterband,
SE_BIN_FUNCTION_TYPE *type,
LONG *num_bins,
LFLOAT **bin_table,
LFLOAT **histogram);

Parameters

rasterband | The SE_RASBANDINFO handle.
type | A pointer to the bin function type.
num_bins | A pointer to the number of bins.
bin_table | A pointer to the bin function table.
histogram | The histogram.

Description

SE_rasbandinfo_get_stats_histogram retrieves the histogram on pixels in a raster band. The memory required for bin table and histogram will be allocated. Use SE_rasbandinfo_free_stats _histogram to release the memory.

Returns


SE_rasbandinfo_get_stats_max

Retrieves the maximum pixel value in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_stats_max (const SE_RASBANDINFO rasterband,
LFLOAT *max);

Parameters

rasterband | The SE_RASBANDINFO handle.
max | A pointer to the maximum pixel value.

Description

SE_rasbandinfo_get_stats_max retrieves the maximum pixel value in a raster band.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_OPERATION_NOT_ALLOWED

SE_RASTERBAND_NO_STATS


SE_rasbandinfo_get_stats_mean

Retrieves the average pixel value in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_stats_mean
(const SE_RASBANDINFO rasterband,
LFLOAT *mean);

Parameters

rasterband | The SE_RASBANDINFO handle.
mean | A pointer to the average pixel value.

Description

SE_rasbandinfo_get_stats_mean retrieves the average pixel value in a raster band.

Returns


SE_rasbandinfo_get_stats_min

Retrieves the minimum pixel value in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_stats_min (const SE_RASBANDINFO rasterband,
LFLOAT *min);

Parameters

rasterband | The SE_RASBANDINFO handle.
min | A pointer to the minimum pixel value.

Description

SE_rasbandinfo_get_stats_min retrieves the minimum pixel value in a raster band.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_OPERATION_NOT_ALLOWED

SE_RASTERBAND_NO_STATS


SE_rasbandinfo_get_stats_stddev

Retrieves the standard deviation of pixel value in a raster band.

Usage syntax

LONG SE_rasbandinfo_get_stats_stddev (const SE_RASBANDINFO rasterband,
LFLOAT *stddev);

Parameters

rasterband | The SE_RASBANDINFO handle.
stddev | A pointer to the standard deviation of pixel value.

Description

SE_rasbandinfo_get_stats_stddev retrieves the standard deviation of pixel value in a raster band.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_OPERATION_NOT_ALLOWED

SE_RASTERBAND_NO_STATS


SE_rasbandinfo_get_tile_origin

Retrieves the block origin for a raster band.

Usage syntax

LONG SE_rasbandinfo_get_tile_origin
(const SE_RASBANDINFO rasterband,
LFLOAT *x,
LFLOAT *y);

Parameters

rasterband | The raster band handle.
x | A pointer to the x value of the origin.
y | A pointer to the y value of the origin.

Description

SE_rasbandinfo_get_tile_origin returns the tile origin for a raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_tile_size

Retrieves the block size for a raster band.

Usage syntax

LONG SE_rasbandinfo_get_tile_size
(const SE_RASBANDINFO rasterband,
LONG *block_width,
LONG *block_depth);

Parameters

rasterband | The raster band handle.
block_width | A pointer to the block width.
block_depth | A pointer to the block depth.

Description

SE_rasbandinfo_get_tile_size returns the tile width and depth for a raster band. This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_get_time

Retrieves the creation date of a raster band.

Usage syntax

LONG SE_rasbandinfo_get_time
(const SE_RASBANDINFO rasterband,
LONG which_time,
struct tm *time);

Parameters

rasterband | The rasterband handle.
which_time | A macro representing either the creation or modification time
time | The creation or modification date and time of a raster band.

Description

SE_rasbandinfo_get_time retrieves a specific time associated with a raster band. Use the which_time parameter to retrieve the creation or last modified date and time for the raster band. The which_time parameter can be

SE_RASTERBAND_CREATED
SE_RASTERBAND_MODIFIED

This function returns meaningful information for an SE_RASBANDINFO object that describes an existing raster band only.

Returns


SE_rasbandinfo_has_colormap

Returns TRUE if there's a colormap for the raster band.

Usage syntax

BOOL SE_rasbandinfo_has_colormap (const SE_RASBANDINFO rasterband);

Parameters

rasterband

The SE_RASBANDINFO handle.

Description

SE_rasbandinfo_has_colormap returns TRUE if there's a colormap for the raster band.

Returns

TRUE
FALSE


SE_rasbandinfo_has_stats

Returns TRUE if the statistics information is available in a raster band.

Usage syntax

BOOL SE_rasbandinfo_has_stats (const SE_RASBANDINFO rasterband);

Parameters

rasterband

The SE_RASBANDINFO handle.

Description

SE_rasbandinfo_has_stats returns TRUE if the statistics information is available in a raster band.

Returns

TRUE
FALSE


SE_rasbandinfo_set_band_name

Sets the band name for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_band_name
(SE_RASBANDINFO rasterband,
const CHAR *band_name);

Parameters

rasterband | The raster band handle.
band_name | A pointer to the name of the band.

Description

SE_rasbandinfo_get_band_name sets the name of a raster band. Set band_name to at least SE_MAX_DESCRIPTION_LENGTH.

Returns


SE_rasbandinfo_set_band_number

Sets the sequence number for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_band_number
(const SE_RASBANDINFO rasterband,
LONG sequence_nbr);

Parameters

rasterband | The rasterband handle.
sequence_nbr | The sequence number.

Description

SE_rasbandinfo_set_band_number sets the sequence number of the raster band.

Returns


SE_rasbandinfo_set_band_size

Sets the band size for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_band_size
(const SE_RASBANDINFO rasterband,
LONG band_width,
LONG band_height);

Parameters

rasterband | The raster band handle.
band_width | The block width.
band_height | The block height.

Description

SE_rasbandinfo_set_band_size sets the band width and height for a raster band.

Returns


SE_rasbandinfo_set_bin_function

Sets the bin function for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_bin_function (SE_RASBANDINFO rasterband,
SE_BIN_FUNCTION_TYPE type,
LONG num_bins,,
LFLOAT *bin_table);

Parameters

rasterband | The SE_RASBANDINFO handle.
bin | The bin function type.
num_bins | The number of bins.
num_entries | Number of entries in the colormap.
bin_table | The bin table.

Description

SE_rasbandinfo_set_bin_function sets the bin function for a raster band

1) If the bin function type is SE_BIN_FUNCTION_NONE, this will remove the current bin function.

2) If the bin function type is SE_BIN_FUNCTION_AUTO, num_bins is 0 and bin_table is NULL, the actual bin function will be selected by server according to pixel type.

3) If the bin function type is SE_BIN_FUNCTION_DIRECT, num_bins should be set to 0. The actual number of bins will be decided based on the dataset.

typedef enum

{

SE_BIN_FUNCTION_NONE = 0,
SE_BIN_FUNCTION_AUTO,
SE_BIN_FUNCTION_DIRECT,
SE_BIN_FUNCTION_LINEAR,
SE_BIN_FUNCTION_LOGARITHM,
SE_BIN_FUNCTION_EXPLICIT,
SE_BIN_FUNCTION_TYPE;

}

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_OUT_OF_CLMEM
SE_INVALID_PARAM_VALUE

NOTES:

SE_rasbandinfo_set_bin_function should be used in combination with SE_rasterband_alter. It has no effect when used with SE_rasterband_create, in this case, the bin function will be ignored.


SE_rasbandinfo_set_colormap

Sets the colormap for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_colormap (SE_RASBANDINFO rasterband,
SE_COLORMAP_TYPE colormap_type,
SE_COLORMAP_DATA_TYPE data_type,
LONG num_entries,
void *data);

Parameters

rasterband | The SE_RASBANDINFO handle.
colormap_type | The colormap type, i.e. the color model..
data_type | Data type for individual color.
num_entries | Number of entries in the colormap.
data | A pointer to the colormap data..

Description

SE_rasbandinfo_set_colormap sets the colormap, or also known as the color lookup table (LUT) in a raster band. The colormap data should be a one-dimensional array. For example, if the colormap type is SE_COLORMAP_RGB, it should have the following structure: r0, g0, b0, r1, g1, b1, ...

typedef enum

{

SE_COLORMAP_NONE= 0,
SE_COLORMAP_RGB,
SE_COLORMAP_RGBA,
SE_COLORMAP_TYPE;

}

typedef enum

{

SE_COLORMAP_DATA_BYTE,
SE_COLORMAP_DATA_SHORT,
SE_COLORMAP_DATA_TYPE;

}

Returns


SE_rasbandinfo_set_compression_type

Sets the compression type for the rasterband.

Usage syntax

LONG SE_rasbandinfo_set_compression_type ( SE_RASBANDINFO rasterband, SE_COMPRESSION_TYPE type);

Parameters

rasterband | The rasterband handle.
type | The compression type

Description

SE_rasbandinfo_set_compression_type sets the compression type of the raster band. The compresion types are SE_COMPRESSION_NONE and SE_COMPRESSION_LZ77.

Returns


SE_rasbandinfo_set_extent

Sets the raster band extent.

Usage syntax

LONG SE_rasbandinfo_set_extent
(SE_RASBANDINFO rasterband,
const SE_ENVELOPE *envelope);

Parameters

rasterband | The rasterband handle.
envelope | A pointer to an SE_ENVELOPE object.

Description

SE_rasbandinfo_set_extent sets the width and height of the raster band through an SE_ENVELOPE object.

Returns


SE_rasbandinfo_set_max_level

Sets the maximum level of the image pyramid for the raster band.

Usage syntax

LONG SE_rasbandinfo_set_max_level
(SE_RASBANDINFO rasterband,
LONG max_level,
BOOL skip_level1);

Parameters

rasterband | The rasterband handle.
max_level | The maximum level.
skip_level1 | If TRUE, does not count the first level.

Description

SE_rasbandinfo_set_max_level sets the maximum level for the image pyramid of the raster band.

Returns


SE_rasbandinfo_set_pixel_type

Sets the pixel type for the raster band.

Usage syntax

LONG SE_rasbandinfo_set_pixel_type
(const SE_RASBANDINFO rasterband,
LONG pixel_type);

Parameters

rasterband | The rasterband handle.
pixel_type | The pixel type.

Description

SE_rasbandinfo_set_pixel_type sets the pixel type of the raster band. The pixel type values are

SE_PIXEL_TYPE_1BIT

SE_PIXEL_TYPE_4BIT

SE_PIXEL_TYPE_8BIT_U

SE_PIXEL_TYPE_8BIT_S

SE_PIXEL_TYPE_16BIT_U

SE_PIXEL_TYPE_16BIT_S

SE_PIXEL_TYPE_32BIT_U

SE_PIXEL_TYPE_32BIT_S

SE_PIXEL_TYPE_32BIT_REAL

SE_PIXEL_TYPE_64BIT_REAL

SE_PIXEL_TYPE_64BIT_COMPLEX

SE_PIXEL_TYPE_128BIT_COMPLEX

Returns


SE_rasbandinfo_set_rascol_id

Sets the raster column ID for the raster band.

Usage syntax

LONG SE_rasbandinfo_set_rascol_id
(const SE_RASBANDINFO rasterband,
LONG rascol_id);

Parameters

rasterband | The rasterband handle.
rascol_id | The raster column ID value.

Description

SE_rasbandinfo_set_rascol_id sets the raster column ID associated with the raster band.

Returns


SE_rasbandinfo_set_statistics

Sets the maximum level of the image pyramid for the raster band.

Usage syntax

LONG SE_rasbandinfo_set_statistics
(SE_RASBANDINFO rasterband,
const SE_RASTERBAND_STATS *stats);

Parameters

rasterband | The rasterband handle.
stats | A pointer to an SE_RASTERBAND_STATS object.

Description

SE_rasbandinfo_set_statistics sets the statistics for the raster band using an SE_RASTERBAND_STATS object. The structure is:

typedef struct {

LFLOAT mean; /* Average pixel value. */

LFLOAT median; /* Median pixel value. */

LFLOAT mode; /* Pixel value occurs with greatest freq. */

LFLOAT min; /* Minimum pixel value. */

LFLOAT max; /* Maximum pixel value. */

LFLOAT std_dev; /* Standard deviation. */

LFLOAT histogram[256]; /* Histogram */

} SE_RASTERBAND_STATS;

Returns


SE_rasbandinfo_set_tile_size

Sets the tile size for a raster band.

Usage syntax

LONG SE_rasbandinfo_set_tile_size
(const SE_RASBANDINFO rasterband,
LONG block_width,
LONG block_depth);

Parameters

rasterband | The raster band handle.
block_width | The block width.
block_depth | The block depth.

Description

SE_rasbandinfo_set_tile_size sets the tile width and depth for a raster band.

Returns


SE_rascolinfo_create

Creates an SE_RASCOLINFO structure.

Usage syntax

LONG SE_rascolinfo_create (SE_RASCOLINFO *rastercolumn);

Parameters

rastercolumn

A pointer to the raster column structure.

Description

SE_rascolinfo_create allocates and initializes an SE_RASCOLINFO structure which contains information about a raster column.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASCOLINFO object before using any other function that requires an SE_RASCOLINFO pointer.


SE_rascolinfo_free

Releases memory allocated for an SE_RASCOLINFO structure.

Usage syntax

void SE_rascolinfo_free (SE_RASCOLINFO rastercolumn);

Parameters

rastercolumn

The pointer to a raster column structure.

Description

SE_rascolinfo_free frees the memory allocated for an SE_RASCOLINFO structure returned by SE_rascolinfo_create .


SE_rascolinfo_get_access

Retrieves the privilege bitmask for a raster column.

Usage syntax

LONG SE_rascolinfo_get_access
(const SE_RASCOLINFO rastercolumn,
LONG *privileges);

Parameters

rastercolumn | The raster column handle.
privileges | A pointer to the privileges.

Description

SE_rascolinfo_get_access obtains the privileges allowed for a specific raster column. This function returns meaningful information for an SE_RASCOLINFO object that describes an existing raster column only. The privileges are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

Returns


SE_rascolinfo_get_coordref

Retrieves the raster column’s coordinate reference.

Usage syntax

LONG SE_rascolinfo_get_coordref
(const SE_RASCOLINFO rastercolumn,
SE_COORDREF coordref);

Parameters

rastercolumn | The rastercolumn handle.
coordref | The coordinate reference of a raster column.

Description

SE_rascolinfo_get_coordref retrieves the coordinate reference for a specific raster column. If no coordinate reference exists, SE_NO_COORDREF is returned.

Returns


SE_rascolinfo_get_creation_date

Retrieves the creation date of a raster column.

Usage syntax

LONG SE_rascolinfo_get_creation_date
(const SE_RASCOLINFO rastercolumn,
struct tm *date);

Parameters

rastercolumn | The rastercolumn handle.
date | The creation date of a raster column.

Description

SE_rascolinfo_get_creation_date retrieves the creation date of a specific raster column. This function returns meaningful information for an SE_RASCOLINFO object that describes an existing raster column only.

Returns


SE_rascolinfo_get_creation_keyword

Retrieves the raster column’s configuration keyword.

Usage syntax

LONG SE_rascolinfo_get_creation_keyword
(const SE_RASCOLINFO rastercolumn,
CHAR *config_keyword);

Parameters

rastercolumn | The rastercolumn handle.
config_keyword | The configuration keyword of a raster column.

Description

SE_rascolinfo_get_creation_keyword retrieves the configuration keyword for a specific raster column. The config_keyword parameter should be at least SE_MAX_CONFIG_KEYWORD_LEN bytes long.

Returns


SE_rascolinfo_get_description

Retrieves the raster column description.

Usage syntax

LONG SE_rascolinfo_get_description
(const SE_RASCOLINFO rastercolumn,
CHAR *description);

Parameters

rastercolumn | The rastercolumn handle.
description | The raster column description.

Description

SE_rascolinfo_get_description retrieves the description for a specific raster column. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_rascolinfo_get_gdbtype

Retrieves the geodatabase type associated with the raster column.

Usage syntax

LONG SDEAPI SE_rascolinfo_get_gdbtype
(const SE_RASCOLINFO handle,
UCHAR *gdbtype);

Parameters

rastercolumn | The SE_RASCOLINFO handle.
gdbtype | A pointer to which the result geodatabase type will be.

Description

SE_rascolinfo_get_gdbtype retrieves the geodatabase type associated with the raster column. Currently the valid gdbtype values are: SE_GDBTYPE_NONE or SE_GDBTYPE_RASTERMAP.

Returns


SE_rascolinfo_get_id

Retrieves the raster column ID.

Usage syntax

LONG SE_rascolinfo_get_id
(const SE_RASCOLINFO rastercolumn,
LONG *rastercolumn_id);

Parameters

rastercolumn | The rastercolumn handle.
rastercolumn_id | A pointer to the raster column ID.

Description

SE_rascolinfo_get_id retrieves the ID of a raster column. This function returns meaningful information for an SE_RASCOLINFO object that describes an existing raster column only.

Returns


SE_rascolinfo_get_minimum_id

Retrieves the minimum ID allowed for the raster column.

Usage syntax

LONG SE_rascolinfo_get_minimum_id
(const SE_RASCOLINFO rastercolumn,
ULONG *minimum_id);

Parameters

rastercolumn | The rastercolumn handle.
minimum_id | A pointer to the minimum ID value.

Description

SE_rascolinfo_get_minimum_id returns the minimum ID allowed in the raster column. This function returns meaningful information for an SE_RASCOLINFO object that describes an existing raster column only.

Returns


SE_rascolinfo_get_raster_column

Retrieves the table and column for a raster column.

Usage syntax

LONG SE_rascolinfo_get_raster_column
(const SE_RASCOLINFO rastercolumn,
CHAR *table,
CHAR *raster_column);

Parameters

rastercolumn | The rastercolumn handle.
table | The table associated with the raster column.
column | The column name of the raster column.

Description

SE_rascolinfo_get_raster_column retrieves the table and column names for a specific raster column. The table name may include the database and owner name depending on the DBMS. The caller should have at least SE_QUALIFIED_TABLE_NAME bytes available for the table argument, while the column argument should have SE_MAX_COLUMN_LEN bytes.

Returns


SE_rascolinfo_has_gdbtype

Returns TRUE if the raster column is registered as geodatabase raster dataset.

Usage syntax

BOOL SDEAPI SE_rascolinfo_has_gdbtype (const SE_RASCOLINFO rastercolumn)

Parameters

rastercolumn

The SE_RASCOLINFO handle.

Description

SE_rascolinfo_has_gdbtype returns TRUE if the raster column is registered as geodatabase raster dataset. This function is used as an convenient way to check condition without actually calling SE_rascolinfo_get_gdbtype.

Returns

TRUE
FALSE


SE_rascolinfo_is_in_load_mode

Returns TRUE if the raster column is in load-only mode.

Usage syntax

BOOL SE_rascolinfo_is_in_load_mode (SE_RASCOLINFO rastercolumn);

Parameters

rastercolumn

The rastercolumn handle.

Description

SE_rascolinfo_is_in_load_mode returns TRUE if the raster column is in load-only mode. If any error occurs, FALSE is returned.


SE_rascolinfo_set_band_name

Sets the raster column’s band name.

Usage syntax

LONG SE_rascolinfo_set_band_name
(SE_RASCOLINFO rastercolumn,
const CHAR *band_name);

Parameters

rastercolumn | The rastercolumn handle.
band_name | The band name of a raster column.

Description

SE_rascolinfo_set_band_name sets the band name for a specific raster column.

Returns


SE_rascolinfo_set_coordref

Sets the raster column’s coordinate reference.

Usage syntax

LONG SE_rascolinfo_set_coordref
(SE_RASCOLINFO rastercolumn,
const SE_COORDREF coordref);

Parameters

rastercolumn | The rastercolumn handle.
coordref | The coordinate reference of a raster column.

Description

SE_rascolinfo_set_coordref sets the coordinate reference for a specific raster column.

Returns


SE_rascolinfo_set_creation_keyword

Sets the raster column’s configuration keyword.

Usage syntax

LONG SE_rascolinfo_set_creation_keyword
(SE_RASCOLINFO rastercolumn,
const CHAR *config_keyword);

Parameters

rastercolumn | The rastercolumn handle.
config_keyword | The configuration keyword of a raster column.

Description

SE_rascolinfo_set_creation_keyword sets the configuration keyword for a specific raster column. The function does not check to see if the keyword exists in the dbtune file. If the config_keyword length is greater than SE_MAX_CONFIG_KEYWORD_LEN, SE_INVALID_PARAM_VALUE is returned.

Returns


SE_rascolinfo_set_description

Sets the raster column description.

Usage syntax

LONG SE_rascolinfo_set_description
(SE_RASCOLINFO rastercolumn,
const CHAR *description);

Parameters

rastercolumn | The rastercolumn handle.
description | The raster column description.

Description

SE_rascolinfo_set_description sets the description for a specific raster column. If the description length is greater than SE_MAX_DESCRIPTION_LEN, SE_INVALID_PARAM_VALUE is returned.

Returns


SE_rascolinfo_set_gdb_type

sets the geodatabase type for the raster column.

Usage syntax

LONG SDEAPI SE_rascolinfo_set_gdbtype (SE_RASCOLINFO rastercolumn,
UCHAR gdbtype);

Parameters

rastercolumn | The SE_RASCOLINFO handle.
gdbtype | The geodatabase type to set.

Description

SE_rascolinfo_set_gdbtype sets the geodatabase type in the raster column. The valid geodatabase types are: SE_GDBTYPE_NONE or SE_GDBTYPE_RASTERMAP.

Returns


SE_rascolinfo_set_load_mode

Sets the loading mode for the raster column.

Usage syntax

LONG SE_rascolinfo_set_load_mode
(SE_RASCOLINFO rastercolumn,
BOOL load_mode);

Parameters

rastercolumn | The rastercolumn handle.
load_mode | The loading mode.

Description

SE_rascolinfo_set_load_mode sets the loading mode for the raster column. Set to TRUE to put the raster column into load-only mode.

Returns


SE_rascolinfo_set_minimum_id

Sets the minimum ID allowed for the raster column.

Usage syntax

LONG SE_rascolinfo_set_minimum_id
(SE_RASCOLINFO rastercolumn,
ULONG minimum_id);

Parameters

rastercolumn | The rastercolumn handle.
minimum_id | The minimum ID value.

Description

SE_rascolinfo_set_minimum_id sets the minimum ID allowed in the raster column. When a new raster column is added, the ID is set to the larger of: the minimum_id value or the maximum assigned ID + 1.

Returns


SE_rascolinfo_set_raster_column

Sets the raster column.

Usage syntax

LONG SE_rascolinfo_set_raster_column
(SE_RASCOLINFO rastercolumn,
const CHAR *table,
const CHAR *raster_column);

Parameters

rastercolumn | The rastercolumn handle.
table | The table associated with the raster column.
raster_column | The raster column name.

Description

SE_rascolinfo_set_raster_column sets the raster column column. The table must exist and the caller must be the owner. These conditions are not checked until the database raster column is actually created.

Returns


SE_rasconstraint_create

Creates an SE_RASCONSTRAINT structure.

Usage syntax

LONG SE_rasconstraint_create (SE_RASCONSTRAINT *constraint);

Parameters

constraint

A pointer to the raster constraint structure.

Description

SE_rasconstraint_create allocates and initializes an SE_RASCONSTRAINT structure which contains information about a raster constraint.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASCONSTRAINT object before using any other function that requires an SE_RASCONSTRAINT pointer.


SE_rasconstraint_free

Releases memory allocated for an SE_RASCONSTRAINT structure.

Usage syntax

void SE_rasconstraint_free (SE_RASCONSTRAINT constraint);

Parameters

constraint

The pointer to a raster constraint structure.

Description

SE_rasconstraint_free frees the memory allocated for an SE_RASCONSTRAINT structure returned by SE_rasconstraint_create .


SE_rasconstraint_set_bands

Sets the bands.

Usage syntax

LONG SE_rasconstraint_set_bands
(SE_RASCONSTRAINT constraint,
LONG num_bands,
LONG *band_nbr);

Parameters

constraint | The constraint handle.
num_bands | The number of bands.
band_nbr | The list of band numbers.

Description

SE_rasconstraint_set_bands sets the bands.

Returns


SE_rasconstraint_set_envelope

Sets the envelope.

Usage syntax

LONG SE_rasconstraint_set_envelope
(SE_RASCONSTRAINT constraint,
LONG minx,
LONG miny,
LONG maxx,
LONG maxy);

Parameters

constraint | The constraint handle.
minx | The minimum X value.
miny | The minimum Y value.
maxx | The maximum X value.
maxy | The maximum Y value.

Description

SE_rasconstraint_set_envelope sets the envelope for a raster constraint. The envelope should be specified in the tile coordinate, similar to the pixel coordinate, with an upper-left origin and x, y >= 0.

Returns


SE_rasconstraint_set_interleave

Sets the band interleave type.

Usage syntax

LONG SE_rasconstraint_set_interleave
(SE_RASCONSTRAINT constraint,
SE_RASTER_INTERLEAVE_TYPE interleave);

Parameters

constraint | The constraint handle.
interleave | The interleave object.

Description

SE_rasconstraint_set_interleave sets the band interleave type for a raster constraint.

Returns


SE_rasconstraint_set_level

Sets the level.

Usage syntax

LONG SE_rasconstraint_set_level
(SE_RASCONSTRAINT constraint,
LONG level);

Parameters

constraint | The constraint handle.
level | The level.

Description

SE_rasconstraint_set_level sets the level for a raster constraint.

Returns


SE_raster_add_band

Adds a band to a raster.

Usage syntax

LONG SE_raster_add_band
(SE_CONNECTION connection,
SE_RASTERINFO raster,
const SE_RASBANDINFO rasterband);

Parameters

connection | The connection handle.
raster | Pointer to an SE_RASTERINFO object.
rasterband | Pointer to an SE_RASBANDINFO object.

Description

SE_raster_add_band adds a band to a raster. Information about the band is maintained in an SE_RASBANDINFO structure. The SE_RASBANDINFO object must be a valid object created by SE_rasbandinfo_create .

Returns


SE_raster_create

Creates a raster entry in the raster datastore.

Usage syntax

LONG SE_raster_create
(SE_CONNECTION connection,
const SE_RASTERINFO raster,
LONG *raster_id);

Parameters

connection | The connection handle.
raster | A pointer to the raster.
raster_id | A pointer to the raster ID.

Description

SE_raster_create creates a raster entry in the raster datastore. SE_raster_create builds the other tables that ArcSDE requires to store raster information.

Returns


SE_raster_delete

Deletes a raster entry in the datastore.

Usage syntax

LONG SE_raster_delete
(SE_CONNECTION connection,
const SE_RASTERINFO raster);

Parameters

connection | The connection handle.
raster | A pointer to a SE_RASTERINFO object.

Description

SE_raster_delete deletes the raster entry from the raster datastore.

Returns


SE_raster_drop_band

Drops a band from a raster.

Usage syntax

LONG SE_raster_drop_band
(SE_CONNECTION connection,
SE_RASTERINFO raster,
const SE_RASBANDINFO rasterband);

Parameters

connection | The connection handle.
raster | Pointer to an SE_RASTERINFO object.
rasterband | Pointer to an SE_RASBANDINFO object.

Description

SE_raster_drop_band drops a band from a raster. Information about the band is maintained in an SE_RASBANDINFO structure. The SE_RASBANDINFO object must be a valid object created by SE_rasbandinfo_create .

Returns


SE_raster_get_bands

Retrieves an array of SE_RASBANDINFO structures for a raster.

Usage syntax

LONG SE_raster_get_bands
(SE_CONNECTION connection,
const SE_RASTERINFO raster,
SE_RASBANDINFO **rasterband_list,
LONG *count_addr);

Parameters

connection | The connection handle.
raster | Pointer to an SE_RASTERINFO structure.
rasterband_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_RASBANDINFO structures.
count_addr | The number of bands in the SE_RASBANDINFO list.

Description

SE_raster_get_bands returns an array of SE_RASBANDINFO pointers that are defined. The total number of raster band info structures is returned in the count_addr parameter. The application must free the rasterband_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_rasterband_free_info_list .


SE_raster_get_info_by_id

Retrieves information about a raster by the ID.

Usage syntax

LONG SE_raster_get_info_by_id
(SE_CONNECTION connection,
LONG rastercolumn_id,
LONG raster_id,
SE_RASTERINFO raster);

Parameters

connection | The connection handle.
rastercolumn_id | The raster column ID.
raster_id | The raster band ID.
raster | Pointer to a location to receive the SE_RASBANDINFO definition.

Description

SE_raster_get_info_by_id obtains the definition of a specific raster. Information about the raster is maintained in an SE_RASTERINFO structure. The SE_RASTERINFO object must be a valid object created by SE_rasterinfo_create .

Returns


SE_rasterattr_create

Creates an SE_RASTERATTR structure.

Usage syntax

LONG SE_rasterattr_create
(SE_RASTERATTR *handle,
BOOL input_mode);

Parameters

handle | A pointer to the raster attribute structure.
input_mode | If TRUE, set for input. If FALSE, set of output.

Description

SE_rasterattr_create allocates and initializes an SE_RASTERATTR structure which contains information about raster attributes.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASTERATTR object before using any other function that requires an SE_RASTERATTR pointer.


SE_rasterattr_duplicate

Copies an SE_RASTERATTR structure.

Usage syntax

LONG SE_rasterattr_duplicate
(const SE_RASTERATTR source,
SE_RASTERATTR target);

Parameters

source | A pointer to the original raster attribute structure.
target | A pointer to the new raster attribute structure.

Description

SE_rasterattr_duplicate copies an SE_RASTERATTR structure which contains information about raster attributes.

Returns


SE_rasterattr_free

Releases memory allocated for an SE_RASTERATTR structure.

Usage syntax

void SE_rasterattr_free (SE_RASTERATTR handle);

Parameters

handle

The pointer to a raster attribute structure.

Description

SE_rasterattr_free frees the memory allocated for an SE_RASTERATTR structure returned by SE_rasterattr_create.


SE_rasterattr_get_extent

SE_rasterattr_get_compression_type

Retrieves the compression type.

Usage syntax

LONG SE_rasterattr_get_compression_type
(SE_RASTERATTR handle,
SE_COMPRESSION_TYPE *type);

Parameters

handle | The raster attribute handle.
type | A pointer to an SE_COMPRESSION_TYPE object.

Description

SE_rasterattr_get_compression_type returns the compression type.

Returns


SE_rasterattr_get_extent

Retrieves the extent of the raster.

Usage syntax

LONG SE_rasterattr_get_extent
(SE_RASTERATTR handle,
SE_ENVELOPE *envelope);

Parameters

handle | The SE_RASTERATTR handle.
envelope | The SE_ENVELOPE object.

Description

SE_rasterattr_get_extent returns the extent of a raster object.

Returns


SE_rasterattr_get_extent_by_level

Retrieves the extent of the raster by level.

Usage syntax

LONG SE_rasterattr_get_extent_by_level
(SE_RASTERATTR handle,
SE_ENVELOPE *envelope,
LFLOAT *offset_x,
LFLOAT *offset_y,
LONG level);

Parameters

handle | The SE_RASTERATTR handle.
envelope | The SE_ENVELOPE object.
offset_x | The x offset.
offset_y | The y offset.
level | The level.

Description

SE_rasterattr_get_extent_by_level returns the extent of a raster object by the level of the tile.

Returns


SE_rasterattr_get_image_size

Retrieves the image size.

Usage syntax

LONG SE_rasterattr_get_image_size
(SE_RASTERATTR handle,
LONG *band_width,
LONG *band_height,
LONG *num_bands);

Parameters

handle | The SE_RASTERATTR handle.
band_width | The raster band width.
band_height | The raster band height.
num_band | The number of raster bands.

Description

SE_rasterattr_get_image_size returns the number and size of the raster bands.

Returns


SE_rasterattr_get_image_size_by_level

Retrieves the image size of the raster by level.

Usage syntax

LONG SE_rasterattr_get_image_size_by_level
(SE_RASTERATTR handle,
LONG *width,
LONG *height,
LONG *offset_x,
LONG *offset_y,
LONG level);

Parameters

handle | The SE_RASTERATTR handle.
width | The width.
height | The height.
offset_x | The x offset.
offset_y | The y offset.
num_bands | The number of bands.
level | The level.

Description

SE_rasterattr_get_image_size_by_level returns the image size of a raster object by the level of the tile.

Returns

SE_SUCCESS
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_RASTERATTR_OBJECT
SE_NET_FAILURE
SE_NO_COORDREF
SE_OPERATION_NOT_ALLOWED
SE_SDE_NOT_STARTED


SE_rasterattr_get_max_level

Retrieves the maximum level.

Usage syntax

LONG SE_rasterattr_get_max_level
(SE_RASTERATTR handle,
LONG *max_level,
BOOL *skip_level1);

Parameters

handle | The SE_RASTERATTR handle.
max_level | The maximum level.
skip_level1 | If TRUE, the first level is not counted.

Description

SE_rasterattr_get_max_level returns the maximum level.

Returns


SE_rasterattr_get_num_bands

Retrieves the number of bands.

Usage syntax

LONG SE_rasterattr_get_num_bands
(SE_RASTERATTR handle,
LONG *num_bands);

Parameters

handle | The SE_RASTERATTR handle.
num_bands | The number of bands.

Description

SE_rasterattr_get_num_bands returns the number of bands.

Returns


SE_rasterattr_get_pixel_type

Retrieves the pixel type.

Usage syntax

LONG SE_rasterattr_get_pixel_type
(SE_RASTERATTR handle,
LONG *pixel_type);

Parameters

handle | The SE_RASTERATTR handle.
pixel_type | The pixel type.

Description

SE_rasterattr_get_pixel_type returns the pixel type. The pixel types are

SE_PIXEL_TYPE_1BIT

SE_PIXEL_TYPE_4BIT

SE_PIXEL_TYPE_8BIT_U

SE_PIXEL_TYPE_8BIT_S

SE_PIXEL_TYPE_16BIT_U

SE_PIXEL_TYPE_16BIT_S

SE_PIXEL_TYPE_32BIT_U

SE_PIXEL_TYPE_32BIT_S

SE_PIXEL_TYPE_32BIT_REAL

SE_PIXEL_TYPE_64BIT_REAL

SE_PIXEL_TYPE_64BIT_COMPLEX

SE_PIXEL_TYPE_128BIT_COMPLEX

Returns


SE_rasterattr_get_pyramid_info

Retrieves the pyramid information.

Usage syntax

LONG SE_rasterattr_get_pyramid_info
(SE_RASTERATTR handle,
LONG *max_level,
BOOL *skip_level1,
SE_INTERPOLATION_TYPE *interpolation);

Parameters

handle | The SE_RASTERATTR handle.
max_level | The maximum level.
skip_level1 | If TRUE, the first level is not counted.
interpolation | A pointer to the interpolation type.

Description

SE_rasterattr_get_pyramid_info returns the pyramid information. The interpolation types are

typedef enum { SE_INTERPOLATION_NONE, /* no interpolation */ SE_INTERPOLATION_NEAREST, /* nearest-neighbor interpolation */ SE_INTERPOLATION_BILINEAR, /* bilinear interpolation */ SE_INTERPOLATION_BICUBIC, /* bicubic interpolation */ } SE_INTERPOLATION_TYPE;

Returns


SE_rasterattr_get_rascol_id

Retrieves the raster column ID.

Usage syntax

LONG SE_rasterattr_get_rascol_id
(SE_RASTERATTR handle,
LONG *rascol_id);

Parameters

handle | The SE_RASTERATTR handle.
rascol_id | The raster column ID.

Description

SE_rasterattr_get_rascol_id returns the ID of the raster column.

Returns


SE_rasterattr_get_raster_id

Retrieves the raster ID.

Usage syntax

LONG SE_rasterattr_get_raster_id
(SE_RASTERATTR handle,
LONG *raster_id);

Parameters

handle | The SE_RASTERATTR handle.
raster_id | The raster ID.

Description

SE_rasterattr_get_raster_id returns the ID of the raster.

Returns


SE_rasterattr_get_raster_info

Retrieves the raster.

Usage syntax

LONG SE_rasterattr_get_raster_info
(SE_RASTERATTR handle,
SE_RASTERINFO *raster);

Parameters

handle | The SE_RASTERATTR handle.
raster | The raster object.

Description

SE_rasterattr_get_raster_info returns the raster object.

Returns


SE_rasterattr_get_rasterband_info

Retrieves the raster band.

Usage syntax

LONG SE_rasterattr_get_rasterband_info
(SE_RASTERATTR handle,
SE_RASBANDINFO *rasterband,
LONG index);

Parameters

handle | The SE_RASTERATTR handle.
rasterband | The raster band object.
index | The index number.

Description

SE_rasterattr_get_rasterband_info returns the raster band object. It's a reference to the internal data structure and should be treated as a read-only object. The memory will be released when calling SE_rasterattr_free.

Returns


SE_rasterattr_get_rasterband_info_list

Retrieves a list of raster bands.

Usage syntax

LONG SE_rasterattr_get_rasterband_info_list
(SE_RASTERATTR handle,
SE_RASBANDINFO **rasbnd_list,
LONG index);

Parameters

handle | The SE_RASTERATTR handle.
rasterband | A pointer to a list of raster band objects.
count | The number of raster bands.

Description

SE_rasterattr_get_rasterband_info_list returns a list of raster band objects. It's a reference to the internal data structure and should not be modified. The memory will be released by calling SE_rasterattr_free.

Returns


SE_rasterattr_get_tile_origin

Retrieves the tile origin.

Usage syntax

LONG SE_rasterattr_get_tile_origin
(SE_RASTERATTR handle,
LFLOAT *x,
LFLOAT *y);

Parameters

handle | The SE_RASTERATTR handle.
x | The x value of the tile origin.
y | The y value of the tile origin.

Description

SE_rasterattr_get_tile_origin returns origin of the tile.

Returns


SE_rasterattr_get_tile_size

Retrieves the row and column numbers.

Usage syntax

LONG SE_rasterattr_get_tile_size
(SE_RASTERATTR tile,
LONG *tile_width,
LONG *tile_height);

Parameters

tile | The SE_RASTERATTR handle.
tile_width | The tile width.
tile_height | The tile height.

Description

SE_rasterattr_get_tile_size returns the tile height and width.

Returns


SE_rasterattr_set_callback

Sets the callback.

Usage syntax

LONG SE_rasterattr_set_callback
(SE_RASTERATTR handle,
SE_RASTER_PROC callback,
void *context);

Parameters

handle | The SE_RASTERATTR handle.
callback | The pointer to an SE_RASTER_PROC structure.
context | The context.

Description

SE_rasterattr_set_callback sets the raster callback. The SE_RASTER_PROC structure is

typedef LONG (* SE_RASTER_PROC) (

void *user_data,

void **pixels,

LONG *pixels_length,

void **bitmask,

LONG *bitmask_length.);

Returns


SE_rasterattr_set_colormap

Sets the colormap for the raster.

Usage syntax

LONG SE_rasterattr_set_colormap
(SE_RASTERATTR handle,
SE_COLORMAP_TYPE colormap_type,
SE_COLORMAP_DATA_TYPE data_type,
LONG num_entries,
const void *data);

Parameters

handle | The SE_RASTERATTR handle.
colormap_type | The colormap type, i.e the color model.
data_type | Data Type for individual color.
num_entries | Number of entries in the colormap.
data | A pointer to hte colormap data.

Description

SE_rasterattr_set_colormap sets the colormap, or also known as the color lookup table (LUT) in a raster. The colormap data should be a one-dimensional array. For example, if the colormap type is SE_COLORMAP_RGB, it should have the following structure: r0, g0, b0, r1, g1, b1, ...

typedef enum

{

SE_COLORMAP_NONE= 0,
SE_COLORMAP_RGB,
SE_COLORMAP_RGBA,
SE_COLORMAP_TYPE;

}

typedef enum

{

SE_COLORMAP_DATA_BYTE,
SE_COLORMAP_DATA_SHORT,
SE_COLORMAP_DATA_TYPE;

}

Returns


SE_rasterattr_get_extent

SE_rasterattr_set_compression_type

sets the compression type.

Usage syntax

LONG SE_rasterattr_set_compression_type
(SE_RASTERATTR handle,
SE_COMPRESSION_TYPE type);

Parameters

handle | The raster attribute handle.
type | The compression type.

Description

SE_rasterattr_set_compression_type sets the compression type. The compression types are SE_COMPRESSION_NONE and SE_COMPRESSION_LZ77

Returns


SE_rasterattr_set_delete_area

Sets an area to delete for a raster.

Usage syntax

LONG SE_rasterattr_set_delete_area
(SE_RASTERATTR handle,
const SE_ENVELOPE *area);

Parameters

handle | The SE_RASTERATTR handle.
area | The SE_ENVELOPE object that defines an area to delete.

Description

SE_rasterattr_set_delete_area sets an area to delete for a raster object.

Returns


SE_rasterattr_set_extent

Sets the extent of the raster.

Usage syntax

LONG SE_rasterattr_set_extent
(SE_RASTERATTR handle,
const SE_ENVELOPE *envelope);

Parameters

handle | The SE_RASTERATTR handle.
envelope | The SE_ENVELOPE object.

Description

SE_rasterattr_set_extent sets the extent of a raster object.

Returns


SE_rasterattr_set_image_size

Sets the image size.

Usage syntax

LONG SE_rasterattr_set_image_size
(SE_RASTERATTR handle,
LONG band_width,
LONG band_height,
LONG num_bands);

Parameters

handle | The SE_RASTERATTR handle.
band_width | The raster band width.
band_height | The raster band height.
num_band | The number of raster bands.

Description

SE_rasterattr_set_image_size sets the number and size of the raster bands.

Returns


SE_rasterattr_set_mask_mode

Sets the mask mode.

Usage syntax

LONG SE_rasterattr_set_mask_mode
(SE_RASTERATTR handle,
BOOL mode);

Parameters

handlen | The SE_RASTERATTR handle.
BOOL | If TRUE, the mode is set.

Description

SE_rasterattr_set_mask_mode sets the mask mode. When it's set, the callback function specified in SE_rasterattr_set_callback is required to provide bitmask information along with the pixel data. The bitmask data is used to mask off no-data pixels

Returns


SE_rasterattr_set_mosaic_mode

Sets the mosaic mode.

Usage syntax

LONG SE_rasterattr_set_mosaic_mode
(SE_RASTERATTR handle,
BOOL mode);

Parameters

handle | The SE_RASTERATTR handle.
mode | If TRUE, the mode is set.

Description

SE_rasterattr_set_mosaic_mode sets the mosaic mode.

Returns


SE_rasterattr_set_pixel_type

Sets the pixel type.

Usage syntax

LONG SE_rasterattr_set_pixel_type
(SE_RASTERATTR handle,
LONG pixel_type);

Parameters

handle | The SE_RASTERATTR handle.
pixel_type | The pixel type.

Description

SE_rasterattr_set_pixel_type sets the pixel type. The pixel types are

SE_PIXEL_TYPE_1BIT

SE_PIXEL_TYPE_4BIT

SE_PIXEL_TYPE_8BIT_U

SE_PIXEL_TYPE_8BIT_S

SE_PIXEL_TYPE_16BIT_U

SE_PIXEL_TYPE_16BIT_S

SE_PIXEL_TYPE_32BIT_U

SE_PIXEL_TYPE_32BIT_S

SE_PIXEL_TYPE_32BIT_REAL

SE_PIXEL_TYPE_64BIT_REAL

SE_PIXEL_TYPE_64BIT_COMPLEX

SE_PIXEL_TYPE_128BIT_COMPLEX

Returns


SE_rasterattr_set_pyramid_info

Sets the pyramid information.

Usage syntax

LONG SE_rasterattr_set_pyramid_info
(SE_RASTERATTR handle,
LONG max_level,
BOOL skip_level1,
SE_INTERPOLATION_TYPE interpolation);

Parameters

handle | The SE_RASTERATTR handle.
max_level | The maximum level.
skip_level1 | If TRUE, the first level is not counted.
interpolation | A pointer to the interpolation type.

Description

SE_rasterattr_set_pyramid_info sets the pyramid information. The interpolation types are

typedef enum { SE_INTERPOLATION_NONE, /* no interpolation */ SE_INTERPOLATION_NEAREST, /* nearest-neighbor interpolation */ SE_INTERPOLATION_BILINEAR, /* bilinear interpolation */ SE_INTERPOLATION_BICUBIC, /* bicubic interpolation */ } SE_INTERPOLATION_TYPE;

Returns


SE_rasterattr_set_tile_size

Sets the row and column numbers.

Usage syntax

LONG SE_rasterattr_set_tile_size
(SE_RASTERATTR tile,
LONG tile_width,
LONG tile_height);

Parameters

tile | The SE_RASTERATTR handle.
tile_width | The tile width.
tile_height | The tile height.

Description

SE_rasterattr_set_tile_size sets the tile height and width.

Returns


SE_rasterband_alter

Alters a raster band’s characteristics.

Usage syntax

LONG SE_rasterband_alter
(SE_CONNECTION connection,
const SE_RASBANDINFO rasterband);

Parameters

connection | The connection handle.
rasterband | An SE_RASBANDINFO structure to define the new characteristics of the raster band.

Description

SE_rasterband_alter changes those characteristics of a raster band that can be modified after raster band creation. The raster band to modify is specified by the rasband_id in the SE_RASBANDINFO structure.

You can change the following characteristics:

• ID

• Raster column ID

• Raster ID

• Pixel depth

• Block width and height

• Sequence number

• Creation time

A convenient method to change a particular characteristic of a raster band is to retrieve the existing raster band definition into the SE_RASBANDINFO pointer with SE_rasterband_get_info or SE_rasterband_get_info_by_id . Modify the characteristic with one of the SE_rasbandinfo_set_* functions.

Returns


SE_rasterband_create

Creates a raster band entry in the raster datastore.

Usage syntax

LONG SE_rasterband_create
(SE_CONNECTION connection,
const SE_RASBANDINFO rasterband,
LONG *band_id);

Parameters

connection | The connection handle.
rasterband | A pointer to the raster band.
band_id | The raster band ID.

Description

SE_rasterband_create creates a raster band entry in the raster datastore.

Returns


SE_rasterband_delete

Deletes a raster band entry in the datastore.

Usage syntax

LONG SE_rasterband_delete
(SE_CONNECTION connection,
const SE_RASBANDINFO rasterband);

Parameters

connection | The connection handle.
rasterband | A pointer to a SE_RASBANDINFO object.

Description

SE_rasterband_delete deletes the raster band entry from the raster datastore.

Returns


SE_rasterband_free_info_list

Releases memory allocated for a list of raster band structures.

Usage syntax

void SE_rasterband_free_info_list
(LONG count,
SE_RASBANDINFO rasband_list);

Parameters

count | The number of raster bands in the list.
rasband_list | Address of a pointer set to a dynamically allocated space which contains an array of SE_RASBANDINFO structures.

Description

SE_rasterband_free_info_list frees the memory allocated for the list of raster band structures returned by SE_rasterband_get_info_list .


SE_rasterband_get_info_by_id

Retrieves information about a raster band by the ID.

Usage syntax

LONG SE_rasterband_get_info_by_id
(SE_CONNECTION connection,
LONG rastercolumn_id,
LONG rasterband_id,
SE_RASBANDINFO rasterband);

Parameters

connection | The connection handle.
rastercolumn_id | The raster column ID.
rasterband_id | The raster band ID.
rasterband | Pointer to a location to receive the SE_RASBANDINFO definition.

Description

SE_rasterband_get_info_by_id obtains the definition of a specific raster band. Information about the raster band is maintained in an SE_RASBANDINFO structure. The SE_RASBANDINFO object must be a valid object created by SE_rasbandinfo_create .

Returns


SE_rasterband_get_info_list

Retrieves an array of SE_RASBANDINFO structures for all accessible raster bands.

Usage syntax

LONG SE_rasterband_get_info_list
(SE_CONNECTION connection,
LONG rastercolumn_id,
SE_RASBANDINFO **rasband_list,
LONG *count_addr);

Parameters

connection | The connection handle.
rastercolumn_id | The raster column ID.
rasband_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_RASBANDINFO structures.
count_addr | The number of raster bands in the SE_RASBANDINFO list.

Description

SE_rasterband_get_info_list returns an array of SE_RASBANDINFO pointers that are defined. The total number of raster band structures is returned in the count_addr parameter. The application must free the rasterband_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_rasterband_free_info_list .


SE_rastercolumn_alter

Alters a raster column’s characteristics.

Usage syntax

LONG SE_rastercolumn_alter
(SE_CONNECTION connection,
const SE_RASCOLINFO rastercolumn);

Parameters

connection | The connection handle.
rastercolumn | An SE_RASCOLINFO structure to define the new characteristics of the raster column.

Description

SE_rastercolumn_alter changes those characteristics of a raster column that can be modified after raster column creation. The raster column to modify is specified by the rascol_id in the SE_RASCOLINFO structure.

You can change the following characteristics:

• Description

• User access privileges

A convenient method to change a particular characteristic of a raster column is to retrieve the existing raster column definition into the SE_RASCOLINFO pointer with SE_rastercolumn_get_info_by_name or SE_rastercolumn_get_info_by_id . Modify the characteristic with one of the SE_rascolinfo_set_* functions.

Returns


SE_rastercolumn_create

Creates a raster column entry in the raster datastore.

Usage syntax

LONG SE_rastercolumn_create
(SE_CONNECTION connection,
const SE_RASCOLINFO rastercolumn);

Parameters

connection | The connection handle.
rastercolumn | A pointer to the raster column.

Description

SE_rastercolumn_create creates a raster column entry in the raster datastore. An SE_RASCOLINFO objects has the following properties:

• ID

• Table name

• Raster column name

• Owner

• Description

• Creation time

• Creation configuration keyword

• User access privileges

• Minimum ID

Returns


SE_rastercolumn_delete

Deletes a raster column entry in the datastore.

Usage syntax

LONG SE_rastercolumn_delete
(SE_CONNECTION connection,
const CHAR *table_name,
const SE_RASCOLINFO *raster_column);

Parameters

connection | The connection handle.
table_name | The table name.
raster_column | A pointer to a SE_RASCOLINFO object.

Description

SE_rastercolumn_delete deletes the raster column entry from the raster datastore.

Returns


SE_rastercolumn_free_info_list

Releases memory allocated for a list of raster column structures.

Usage syntax

void SE_rastercolumn_free_info_list
(LONG count,
SE_RASCOLINFO rascol_list);

Parameters

count | The number of raster columns in the list.
rascol_list | Address of a pointer set to a dynamically allocated space which contains an array of SE_RASCOLINFO structures.

Description

SE_rastercolumn_free_info_list frees the memory allocated for the list of raster column structures returned by SE_rastercolumn_get_info_list .


SE_rastercolumn_get_info_by_id

Retrieves information about a raster column by the ID.

Usage syntax

LONG SE_rastercolumn_get_info_by_id
(SE_CONNECTION connection,
LONG rastercolumn_id,
SE_RASCOLINFO rastercolumn);

Parameters

connection | The connection handle.
rastercolumn_id | The raster column ID.
rastercolumn | Pointer to a location to receive the SE_RASCOLINFO definition.

Description

SE_rastercolumn_get_info_by_id obtains the definition of a specific raster column. Information about the raster column is maintained in an SE_RASCOLINFO structure. The SE_RASCOLINFO object must be a valid object created by SE_rascolinfo_create .

Returns


SE_rastercolumn_get_info_by_name

Retrieves information about a raster column by the name.

Usage syntax

LONG SE_rastercolumn_get_info_by_name
(SE_CONNECTION connection,
const CHAR *table_name,
const CHAR raster_column,
SE_RASCOLINFO rastercolumn);

Parameters

connection | The connection handle.
table_name | The table name.
raster_column | The raster column name.
rastercolumn | Pointer to a location to receive the SE_RASCOLINFO definition.

Description

SE_rastercolumn_get_info_by_name obtains the definition of a specific raster column by the name. Information about the raster column is maintained in an SE_RASCOLINFO structure. The SE_RASCOLINFO object must be a valid object created by SE_rascolinfo_create .

Returns


SE_rastercolumn_get_info_list

Retrieves an array of SE_RASCOLINFO structures for all accessible raster columns.

Usage syntax

LONG SE_rastercolumn_get_info_list
(SE_CONNECTION connection,
SE_RASCOLINFO **rascol_list,
LONG *count_addr);

Parameters

connection | The connection handle.
rascol_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_RASCOLINFO structures.
count_addr | The number of raster columns in the SE_RASCOLINFO list.

Description

SE_rastercolumn_get_info_list returns an array of SE_RASCOLINFO pointers that are defined. The total number of raster column structures is returned in the count_addr parameter. The application must free the rastercolumn_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_rastercolumn_free_info_list .


SE_rastercolumn_grant_access

Sets access privileges for a raster column.

Usage syntax

LONG SE_rastercolumn_grant_access
(SE_CONNECTION connection,
const CHAR *table_name,
const CHAR *raster_column,
LONG privilege,
BOOL grant,
const CHAR *user);

Parameters

connection | The connection handle.
table_name | The table name.
raster_column | The raster column name.
privilege | The access privilege to grant.
grant | If TRUE, the user may grant access privileges to other users.
user | The user name.

Description

SE_rastercolumn_grant_access gives a user the specified level of privileges to the specified raster column. If grant is TRUE, then the user in turn can pass the privileges on to another user. The access privileges that can be granted are:

SE_SELECT_PRIVILEGE /* User can view the layer table contents */

SE_UPDATE_PRIVILEGE /* User can modify the layer table contents */

SE_INSERT_PRIVILEGE /* User can insert new records in the layer table */

SE_DELETE_PRIVILEGE /* User can delete records from the layer table */

Grant multiple privileges to a user with the OR operator and the appropriate privilege masks.

Returns


SE_rastercolumn_revoke_access

Removes access privileges for a raster column.

Usage syntax

LONG SE_rastercolumn_revoke_access
(SE_CONNECTION connection,
const CHAR *table_name,
const CHAR *raster_column,
LONG privilege,
const CHAR *user);

Parameters

connection | The connection handle.
table_name | The table name.
raster_column | The raster column name.
privilege | The access privilege to grant.
user | The user name.

Description

SE_rastercolumn_revoke_access removes the specified level of privileges for the specified raster column from a user. The access privileges that can be revoked are:

SE_SELECT_PRIVILEGE /* User can view the layer table contents */

SE_UPDATE_PRIVILEGE /* User can modify the layer table contents */

SE_INSERT_PRIVILEGE /* User can insert new records in the layer table */

SE_DELETE_PRIVILEGE /* User can delete records from the layer table */

Revoke multiple privileges to a user with the OR operator and the appropriate privilege masks.

Returns


SE_rastercolumn_truncate

Deletes all images from a raster column.

Usage syntax

LONG SDEAPI SE_rastercolumn_truncate
(SE_CONNECTION handle,
const CHAR *table_name
const CHAR *raster_column);

Parameters

handle | The connection handle.
table_name | The table name.
raster_column | The raster column name.

Description

SE_rastercolumn_truncate deletes all images from a raster column. It does not remove the raster column definition. This function can be significantly faster than the regular delete.

Returns:


SE_rasterinfo_create

Creates an SE_RASTERINFO structure.

Usage syntax

LONG SE_rasterinfo_create (SE_RASTERINFO *raster);

Parameters

raster

A pointer to the raster structure.

Description

SE_rasterinfo_create allocates and initializes an SE_RASTERINFO structure which contains information about a raster.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASTERINFO object before using any other function that requires an SE_RASTERINFO pointer.


SE_rasterinfo_duplicate

Copies an SE_RASTERINFO structure.

Usage syntax

LONG SE_rasterinfo_duplicate
(const SE_RASTERINFO src_raster,
SE_RASTERINFO tgt_raster);

Parameters

src_raster | A pointer to the original raster structure.
tgt_raster | A pointer to the new raster structure.

Description

SE_rasterinfo_duplicate copies an SE_RASTERINFO structure which contains information about a raster.

Returns


SE_rasterinfo_free

Releases memory allocated for an SE_RASTERINFO structure.

Usage syntax

void SE_rasterinfo_free (SE_RASTERINFO raster);

Parameters

raster

The pointer to a raster structure.

Description

SE_rasterinfo_free frees the memory allocated for an SE_RASTERINFO structure returned by SE_rasterinfo_create.


SE_rasterinfo_get_description

Retrieves the raster description.

Usage syntax

LONG SE_rasterinfo_get_description
(const SE_RASTERINFO raster,
CHAR *description);

Parameters

raster | The raster handle.
description | The raster description.

Description

SE_rasterinfo_get_description retrieves the description for a specific raster. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_rasterinfo_get_rascolid

Retrieves the raster column ID.

Usage syntax

LONG SE_rasterinfo_get_rascolid
(const SE_RASTERINFO raster,
LONG *rascol_id);

Parameters

raster | The raster handle.
rascol_id | The raster column ID.

Description

SE_rasterinfo_get_rascolid retrieves the raster column ID of a raster. This function returns meaningful information for an SE_RASTERINFO object that describes an existing raster only.

Returns


SE_rasterinfo_get_raster_id

Retrieves the raster ID.

Usage syntax

LONG SE_rasterinfo_get_raster_id
(const SE_RASTERINFO raster,
LONG *raster_id);

Parameters

raster | The SE_RASTERINFO handle.
raster_id | The raster ID.

Description

SE_rasterinfo_get_raster_id returns the ID of the raster.

Returns


SE_rasterinfo_set_description

Sets the raster description.

Usage syntax

LONG SE_rasterinfo_set_description
(SE_RASTERINFO raster,
const CHAR *description);

Parameters

raster | The raster handle.
description | The raster description.

Description

SE_rasterinfo_set_description sets the description for a specific raster. If the description length is greater than SE_MAX_DESCRIPTION_LEN, SE_INVALID_PARAM_VALUE is returned.

Returns


SE_rasterinfo_set_rascolid

Sets the raster column ID for the raster.

Usage syntax

LONG SE_rasterinfo_set_rascolid
(SE_RASTERINFO raster,
LONG rascol_id);

Parameters

raster | The raster handle.
rascol_id | The raster column ID.

Description

SE_rasterinfo_set_rascolid sets the raster column ID for the raster.

Returns


SE_rastileinfo_create

Creates an SE_RASTILEINFO structure.

Usage syntax

LONG SE_rastileinfo_create (SE_RASTILEINFO *tile);

Parameters

tile

A pointer to the raster tile structure.

Description

SE_rastileinfo_create allocates and initializes an SE_RASTILEINFO structure which contains information about a raster tile.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_RASTILEINFO object before using any other function that requires an SE_RASTILEINFO pointer.


SE_rastileinfo_free

Releases memory allocated for an SE_RASTILEINFO structure.

Usage syntax

void SE_rastileinfo_free (SE_RASTILEINFO tile);

Parameters

tile

The pointer to a raster tile structure.

Description

SE_rastileinfo_free frees the memory allocated for an SE_RASTILEINFO structure returned by SE_rastileinfo_create.


SE_rastileinfo_get_band_id

Retrieves the raster band ID.

Usage syntax

LONG SE_rastileinfo_get_band_id
(const SE_RASTILEINFO tile,
LONG *band_id);

Parameters

tile | The tile handle.
band_id | A pointer to the raster band ID.

Description

SE_rastileinfo_get_band_id retrieves the raster band ID. This function returns meaningful information for an SE_RASTILEINFO object that describes an existing raster tile only.

Returns


SE_rastileinfo_get_level

Retrieves the level.

Usage syntax

LONG SE_rastileinfo_get_level
(const SE_RASTILEINFO tile,
LONG *level);

Parameters

tile | The tile handle.
level | A pointer to the level value.

Description

SE_rastileinfo_get_level retrieves the level value. This function returns meaningful information for an SE_RASTILEINFO object that describes an existing raster tile only.

Returns


SE_rastileinfo_get_pixel_data

Retrieves the pixel data.

Usage syntax

LONG SE_rastileinfo_get_pixel_data
(SE_RASTILEINFO tile,
void *pixels,
LONG *length);

Parameters

tile | The tile handle.
pixels | A pointer to a list of pixels.
length | The length.

Description

SE_rastileinfo_get_pixel_data retrieves the pixel data in a raster tile. If the pixel buffer is not set by user through SE_rastileinfo_set_pixel_data, it'll be managed by the client library. In this case, user should treat it as read-only memory, and the content will be valid until the next call to the same function.

Returns


SE_rastileinfo_get_rowcol_number

SE_rastileinfo_get_rowcol

Retrieves the row and column ID.

Usage syntax

LONG SE_rastileinfo_get_rowcol
(const SE_RASTILEINFO tile,
LONG *row,
LONG *column);

Parameters

tile | The tile handle.
row | A pointer to the row number.
column | A pointer to the column number.

Description

SE_rastileinfo_get_rowcol retrieves the row and column number. This function returns meaningful information for an SE_RASTILEINFO object that describes an existing raster tile only.

Returns


SE_rastileinfo_set_band_id

Sets the raster band ID.

Usage syntax

LONG SE_rastileinfo_set_band_id
(SE_RASTILEINFO tile,
LONG band_id);

Parameters

tile | The tile handle.
band_id | The raster band ID.

Description

SE_rastileinfo_set_band_id sets the raster band ID.

Returns


SE_rastileinfo_set_level

Sets the level.

Usage syntax

LONG SE_rastileinfo_set_level
(SE_RASTILEINFO tile,
LONG level);

Parameters

tile | The tile handle.
level | The level value.

Description

SE_rastileinfo_set_level sets the level value.

Returns


SE_rastileinfo_set_pixel_data

Sets the pixel data.

Usage syntax

LONG SE_rastileinfo_set_pixel_data
(SE_RASTILEINFO tile,
void *pixels,
LONG length);

Parameters

tile | The tile handle.
pixels | A pointer to a list of pixels.
length | The length.

Description

SE_rastileinfo_set_pixel_data sets the pixel data.

Returns


SE_rastileinfo_set_rowcol_number

SE_rastileinfo_set_rowcol

Sets the row and column numbers.

Usage syntax

LONG SE_rastileinfo_set_rowcol
(SE_RASTILEINFO tile,
LONG row,
LONG column);

Parameters

tile | The tile handle.
row | A pointer to the row number.
column | A pointer to the column number.

Description

SE_rastileinfo_set_rowcol sets the row and column numbers.

Returns


SE_reginfo_allow_rowlocks

Returns TRUE if row locking is enabled.

Usage syntax

BOOL SE_reginfo_allow_rowlocks (SE_REGINFO registration);

Parameters

registration

A pointer to the SE_REGINFO object.

Description

SE_reginfo_allow_rowlocks returns TRUE is row locking is enabled for the registered table referenced by the SE_REGINFO object. Returns FALSE if row locking is not enabled or if the SE_REGINFO object is invalid.


SE_reginfo_create

Creates an SE_REGINFO structure.

Usage syntax

LONG SE_reginfo_create (SE_REGINFO *registration);

Parameters

registration

A pointer to the SE_REGINFO object.

Description

SE_reginfo_create allocates and initializes an SE_REGINFO structure which contains information about a registered table.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_REGINFO object before using any other function that requires an SE_REGINFO pointer.


SE_reginfo_duplicate

Copies an SE_REGINFO structure.

Usage syntax

LONG SE_reginfo_duplicate
(const SE_REGINFO src_reginfo,
SE_REGINFO tgt_reginfo);

Parameters

src_reginfo | The source SE_REGINFO handle.
tgt_reginfo | The target SE_REGINFO handle.

Description

SE_reginfo_duplicate creates a copy of an SE_REGINFO structure.

Returns


SE_reginfo_free

Releases memory allocated for an SE_REGINFO structure.

Usage syntax

void SE_reginfo_free (SE_REGINFO registration);

Parameters

registration

The pointer to an SE_REGINFO structure.

Description

SE_reginfo_free frees the memory allocated for an SE_REGINFO structure returned by SE_reginfo_create .


SE_reginfo_get_access

Retrieves the privilege bitmask for a registered table.

Usage syntax

LONG SE_reginfo_get_access
(const SE_REGINFO registration,
LONG *privileges);

Parameters

registration | The SE_REGINFO handle.
privileges | A pointer to the privileges.

Description

SE_reginfo_get_access obtains the privileges allowed for a specific registered table. This function returns meaningful information for an SE_REGINFO object that describes an existing registered table only. The privileges are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

Returns


SE_reginfo_get_creation_keyword

Retrieves the registered table's configuration keyword.

Usage syntax

LONG SE_reginfo_get_creation_keyword
(const SE_REGINFO registration,
CHAR *config_keyword);

Parameters

registration | The reginfo handle.
config_keyword | The configuration keyword of a registered table.

Description

SE_reginfo_get_creation_keyword retrieves the configuration keyword for a specific registered table. The config_keyword parameter should be at least SE_MAX_CONFIG_KEYWORD_LEN bytes long.

Returns


SE_reginfo_get_description

Retrieves the registered table's description.

Usage syntax

LONG SE_reginfo_get_description
(const SE_REGINFO registration,
CHAR *description);

Parameters

registration | The SE_REGINFO handle.
description | The registered table's description.

Description

SE_reginfo_get_description retrieves the description for a specific registered table. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_reginfo_get_id

Retrieves the ID of a registered table.

Usage syntax

LONG SE_reginfo_get_id
(const SE_REGINFO registration,
LONG *reg_id);

Parameters

registration | The reginfo handle.
reg_id | A pointer to the registered table's ID.

Description

SE_reginfo_get_id retrieves the ID of a registered table. This function returns meaningful information for an SE_REGINFO object that describes an existing registration only.

Returns


SE_reginfo_get_minimum_id

Retrieves the minimum ID allowed for the registered table.

Usage syntax

LONG SE_reginfo_get_minimum_id
(const SE_REGINFO registration,
ULONG *minimum_id);

Parameters

registration | The reginfo handle.
minimum_id | A pointer to the minimum ID value.

Description

SE_reginfo_get_minimum_id retrieves the minimum ID allowed in the registered table. If an ArcSDE-maintained row ID column doesn’t exist, the function returns zero. This function returns meaningful information for an SE_REGINFO object that describes an existing registered table only.

Returns


SE_reginfo_get_mv_view_name

Retrieves the multiversion view name of a registered table.

Usage syntax

LONG SE_reginfo_get_mv_view_name
(const SE_REGINFO registration,
CHAR *mv_view_name);

Parameters

registration | The reginfo handle.
mv_view_name | A pointer to the multiversion view.

Description

SE_reginfo_get_mv_view_name retrieves the name of a multiversion view on a registered table. Allocate at least SE_MAX_TABLE_LEN bytes to the mv_view_name parameter. This function returns meaningful information for an SE_REGINFO object that describes an existing registration only.

Returns


SE_reginfo_get_reg_date

Retrieves the registration date of a table.

Usage syntax

LONG SE_reginfo_get_reg_date
(const SE_REGINFO registration,
struct tm *reg_date);

Parameters

registration | The reginfo handle.
reg_date | The registration date of the table in POSIX format.

Description

SE_reginfo_get_reg_date retrieves the registration date and time of a specific table in POSIX time_t format. This function returns meaningful information for an SE_REGINFO object that describes an existing registered table only.

Returns


SE_reginfo_get_rowid_allocation

Gets how SDE rowids are allocated for a regestered table.

Usage syntax

extern LONG SDEAPI SE_reginfo_get_rowid_allocation
(const SE_REGINFO registration,
LONG *method);

Parameters

registration | The registration entry handle for the registered table.
method | The rowid alllocation method for the registered table, one of: SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE, SE_REGISTRATION_ROW_ID_ALLOCATION_MANY.

Description

This function obtains the value of the row id allocation method attribute from a registered table's reginfo object. This attribute is only defined for tables with an SDE-maintained row id column. A row id allocation method of single indicates that row ids are doled out one at a time, while many implies that they are given out in blocks; however, the exact meaning of this attribute is DBMS-dependent.

Returns


SE_reginfo_get_rowid_column

Retrieves the row ID column name for a registered table.

Usage syntax

LONG SE_reginfo_get_rowid_column
(const SE_REGINFO registration,
CHAR *rowid_column,
LONG *type);

Parameters

registration | The reginfo handle.
rowid_column | The row ID column associated with the table.
type | The column type.

Description

SE_reginfo_get_rowid_column retrieves the row ID column for a registered table. The column argument should have SE_MAX_COLUMN_LEN bytes. If no row ID column exists, zero length string is returned. The column type uses

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE

Returns


SE_reginfo_get_table_name

Retrieves the table name for a registered table.

Usage syntax

LONG SE_reginfo_get_table_name
(const SE_REGINFO registration,
CHAR *table_name);

Parameters

registration | The reginfo handle.
table | The table associated with the registered table.

Description

SE_reginfo_get_table_name retrieves the table name for a specific registration. The table name may include the database and owner name depending on the DBMS. The caller should have at least SE_QUALIFIED_TABLE_NAME bytes available for the table argument.

Returns


SE_reginfo_has_layer

Returns TRUE if the registered table has a spatial column.

Interface

BOOL SE_reginfo_has_layer (SE_REGINFO registration);

Parameters

registration

A handle to an active reginfo object.

Description

Returns TRUE if the SE_REGINFO object has a spatial column. All other conditions, including an invalid SE_REGINFO object, return FALSE.


SE_reginfo_has_locator

Returns TRUE if the registered table has a locator.

Interface

BOOL SE_reginfo_has_locator (SE_REGINFO registration);

Parameters

registration

A handle to an active reginfo object.

Description

Returns TRUE if the SE_REGINFO object has a locator. All other conditions, including an invalid SE_REGINFO object, return FALSE.


SE_reginfo_is_hidden

Returns TRUE if the registered table is hidden.

Interface

BOOL SE_reginfo_is_hidden (SE_REGINFO registration);

Parameters

registration

A handle to an active reginfo object.

Description

Returns TRUE if the SE_REGINFO object is hidden. All other conditions, including an invalid SE_REGINFO object, return FALSE.


SE_reginfo_is_multiversion

Returns TRUE if the registered table is a multiversioned table.

Interface

BOOL SE_reginfo_is_multiversion (SE_REGINFO registration);

Parameters

registration

A handle to an active reginfo object.

Description

Returns TRUE if the SE_REGINFO object is a multiversioned table. All other conditions, including an invalid SE_REGINFO object, return FALSE.


SE_reginfo_is_view

Returns TRUE if the registered table is a view.

Interface

BOOL SE_reginfo_is_view (SE_REGINFO registration);

Parameters

registration

A handle to an active reginfo object.

Description

Returns TRUE if the SE_REGINFO object is a view. All other conditions, including an invalid SE_REGINFO object, return FALSE.


SE_reginfo_set_creation_keyword

Sets the registered table's configuration keyword.

Usage syntax

LONG SE_reginfo_set_creation_keyword
(SE_REGINFO registration,
const CHAR *config_keyword);

Parameters

registration | The reginfo handle.
config_keyword | The configuration keyword of a registered table.

Description

SE_reginfo_set_creation_keyword sets the configuration keyword for a specific registered table. The creation keyword identifies which table and index creation parameters to use in the dbtune.sde file. The config_keyword parameter should be at least SE_MAX_CONFIG_KEYWORD_LEN bytes long.

Returns


SE_reginfo_set_description

Sets the registered table's description.

Usage syntax

LONG SE_reginfo_set_description
(SE_REGINFO registration,
const CHAR *description);

Parameters

registration | The SE_REGINFO handle.
description | The registered table's description.

Description

SE_reginfo_set_description sets the description for a specific registered table. If the description length is greater than SE_MAX_DESCRIPTION_LEN, SE_INVALID_PARAM_VALUE is returned.

Returns


SE_reginfo_set_hidden

Sets the hidden flag for a registered table.

Interface

LONG SE_reginfo_set_hidden
(SE_REGINFO registration,
BOOL hidden);

Parameters

registration | A handle to an active reginfo object.
hidden | Set to TRUE if the table is hidden, otherwise set to FALSE.

Description

SE_reginfo_set_hidden sets the hidden flag for a registered table.

Returns


SE_reginfo_set_locator

Sets the locator flag for a registered table.

Interface

LONG SE_reginfo_set_locator
(SE_REGINFO registration,
BOOL has_locator);

Parameters

registration | A handle to an active reginfo object.
has_locator | Set to TRUE if the table has a locator, otherwise set to FALSE.

Description

SE_reginfo_set_locator sets the locator flag for a registered table.

Returns


SE_reginfo_set_minimum_id

Sets the minimum ID allowed for the registered table.

Usage syntax

LONG SE_reginfo_set_minimum_id
(SE_REGINFO registration,
ULONG minimum_id);

Parameters

registration | The reginfo handle.
minimum_id | A pointer to the minimum ID value.

Description

SE_reginfo_set_minimum_id sets the minimum row ID allowed in the registered table. This function returns meaningful information for an SE_REGINFO object that describes an existing registered table only.

Returns


SE_reginfo_set_multiversion

Sets the multiversion flag for a registered table.

Interface

LONG SE_reginfo_set_multiversion
(SE_REGINFO registration,
BOOL is_multiversion);

Parameters

registration | A handle to an active reginfo object.
is_multiversion | Set to TRUE if the table is multiversion, otherwise set to FALSE.

Description

SE_reginfo_set_multiversion sets the multiversion flag for a registered table.

Returns


SE_reginfo_set_rowid_allocation

sets the row id allocation method for an sde-maintained row id column.

Usage syntax

extern LONG SDEAPI SE_reginfo_set_rowid_allocation
( SE_REGINFO registration,
LONG *method);

Parameters

registration | The registration entry handle for the registered table.
method | The rowid allocation method for the registered table, one of: SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE, SE_REGISTRATION_ROW_ID_ALLOCATION_MANY.

Description

This function sets a registered table's method of allocating SDE-maintained row ids -- passed to SE_registration_create() or SE_registration_alter(), it will result in a table(assuming it has an SDE-maintained row id column) that allocates row ids one or many at a time. The exact affect of this attribute is DBMS-dependent, but in general, single row id allocation is appropriate for tables that relatively rarely add new rows, while many row id allocation is more efficient for tables where rows are added frequently and in groups. DBMS-dependent.

Returns

SE_SUCCESS
SE_INVALID_PARAM_VALUE
SE_INVALID_REGINFO_OBJECT
SE_NO_SDE_ROWID_COLUMN
SE_SDE_NOT_STARTED

NOTES

This function may be called to set the row id allocation attribute for a table that does not have an SDE-maintained row id, but such a call will have no effect and the attribute will not be stored for the registered table.


SE_reginfo_set_rowid_column

Sets the row ID column name for a registered table.

Usage syntax

LONG SE_reginfo_set_rowid_column
(SE_REGINFO registration,
const CHAR *rowid_column,
LONG type);

Parameters

registration | The reginfo handle.
rowid_column | The row ID column associated with the table.
type | The column type.

Description

SE_reginfo_set_rowid_column sets the row ID column for a registered table. The rowid_column parameter is ignored, if not present in the table. The column argument should have SE_MAX_COLUMN_LEN bytes. The column type uses

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE

If type is SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE, the rowid_column parameter can be NULL.

Returns


SE_reginfo_set_rowlocks

Sets row locking to enabled or not enabled on a registered table.

Usage syntax

LONG SE_reginfo_set_rowlocks
(SE_REGINFO registration,
BOOL allow_row_lock);

Parameters

registration | A pointer to the SE_REGINFO object.
allow_row_lock | Set to TRUE to enable row locking; otherwise, set to FALSE.

Description

SE_reginfo_set_rowlocks allows you to enable or disable row locking for the registered table referenced by the SE_REGINFO object.

Returns


SE_reginfo_set_table_name

Sets the table name for a registered table.

Usage syntax

LONG SE_reginfo_set_table_name
(SE_REGINFO registration,
const CHAR *table_name);

Parameters

registration | The reginfo handle.
table | The table associated with the registered table.

Description

SE_reginfo_set_table_name retrieves the table name for a specific registration. The table name may include the database and owner name depending on the DBMS. The table parameter should have at least SE_MAX_TABLE_NAME bytes available.

Returns


SE_reginfo_set_view

Sets the view flag for a registered table.

Interface

LONG SE_reginfo_set_view
(SE_REGINFO registration,
BOOL is_view);

Parameters

registration | A handle to an active reginfo object.
is_view | Set to TRUE if the table is a view, otherwise set to FALSE.

Description

SE_reginfo_set_view sets the view flag for a registered table.

Returns


SE_registration_alter

Alters the properties of a registered table.

Usage syntax

LONG SE_registration_alter
(SE_CONNECTION connection,
SE_REGINFO reginfo);

Parameters

connection | The connection handle.
reginfo | The SE_REGINFO object.

Description

SE_registration_alter alters the properties of a registered table. You can change the registration entry's description, minimum_id, and row_id column type. However, only integer columns can be made ArcSDE–maintained. A registration entry for an multiversion table may not have a row_id column type of SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE. Only the owner of the table may alter its properties.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_COLUMN_TYPE
SE_INVALID_REGINFO_OBJECT
SE_INVALID_REGISTRATION_ID
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_TABLE_NOEXIST
SE_TABLE_NOREGISTERED


SE_registration_create

Creates an instance of a registered table.

Usage syntax

LONG SE_registration_create
(SE_CONNECTION connection,
SE_REGINFO reginfo);

Parameters

connection | The current connection.
reginfo | A SE_REGINFO object.

Description

SE_registration_create creates an instance of a registered table using the information in the SE_REGINFO object. The table must exist not registered previously. If a user-maintained row ID column is specified, it must exist. Only the owner of the table may create a registered table entry.

Returns


SE_registration_delete

Unregisters a table.

Usage syntax

LONG SE_registration_delete
(SE_CONNECTION connection,
const CHAR *name);

Parameters

connection | The current connection.
name | The name of the registered table.

Description

SE_registration_delete deletes an instance of a registered table using the table name as the key. Only the owner of the table may delete the registered table entry. Tables with mangos, multiversion tables, or layers can't be unregistered.

Returns


SE_registration_free_dependent_tables

Frees the list of table names allocated by SE_registration_get_dependent_tables.

Usage syntax

(CHAR **table_list,
LONG **table_count);

Parameters

table_list | List of tables to free
table_count | The number of tables in the list

Description

SE_registration_free_dependent_tables frees the list of table names allocated by SE_registration_free_dependent_tables.

Returns


SE_registration_free_info_list

Releases memory allocated for an array of SE_REGINFO objects.

Usage syntax

void SE_registration_free_info_list
(LONG count,
SE_REGINFO *reg_list);

Parameters

count | The number of registered tables in the list.
reg_list | Address of an SE_REGINFO pointer set to a dynamically allocated space that will contain an array of SE_REGINFO objects.

Description

SE_registration_free_info_list frees the memory allocated for the array of SE_REGINFO objects returned by SE_registration_get_info_list .


SE_registration_get_dependent_tables

Returns a dynamically allocated list of all dependent tables for a given table.

Usage syntax

(SE_CONNECTION handle,
const CHAR *table,
CHAR **table_list,
LONG *table_count);

Parameters

handle | The connection handle.
table | The name of the registered table.
table_list | List of dependent tables returned.
table_count | Number of tables returned.

Description

SE_registration_get_dependent_tables returns a dynamically allocated list of all dependent tables for a given table. The returned list contains layer releated table names like feature,index etc. and multi-version table names like adds,deletes,equivalence etc.

Returns


SE_registration_get_difference_list

Retrieves an array of SE_REGINFO objects.

Usage syntax

LONG SE_registration_get_difference_list
(SE_CONNECTION connection,
LONG state1_id,
LONG state2_id,
SE_REGINFO **reg_list_addr,
LONG *count_addr);

Parameters

connection | The current connection.
state1_id | The ID of the first state.
state2_id | The ID of the second state.
reg_list_addr | Address of a pointer in dynamically allocated space that will contain an array of SE_REGINFO objects.
count_addr | The number of SE_REGINFO objects.

Description

SE_registration_get_difference_list returns an array of SE_REGINFO objects for an ArcSDE instance.The application must free the reg_info_addr to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_STATE_NOEXIST

Notes

• The application must free the memory used by this call. See SE_registration_free_info_list .

• The caller must have at least some access rights.


SE_registration_get_info

Returns the SE_REGINFO object using a registered table name.

Usage syntax

LONG SE_registration_get_info
(SE_CONNECTION connection,
const CHAR *table,
SE_REGINFO reginfo);

Parameters

connection | The current connection.
table | The name of the registered table.
reginfo | The SE_REGINFO object.

Description

SE_registration_get_info returns the SE_REGINFO object for a registered table using the table name as a key.

Returns


SE_registration_get_info_by_id

Returns the SE_REGINFO object using a registered table ID.

Usage syntax

LONG SE_registration_get_info_by_id
(SE_CONNECTION connection,
LONG reg_id,
SE_REGINFO reginfo);

Parameters

connection | The current connection.
reg_id | The registered table ID.
reginfo | The SE_REGINFO object.

Description

SE_registration_get_info_by_id returns the SE_REGINFO object for a registered table using the table ID as a key.

Returns


SE_registration_get_info_list

Retrieves an array of SE_REGINFO objects.

Usage syntax

LONG SE_registration_get_info_list
(SE_CONNECTION connection,
SE_REGINFO **reg_list_addr,
LONG *count_addr);

Parameters

connection | The current connection.
reg_list_addr | Address of a pointer in dynamically allocated space that will contain an array of SE_REGINFO objects.
count_addr | The number of SE_REGINFO objects.

Description

SE_registration_get_info_list returns an array of SE_REGINFO objects for an ArcSDE instance. The application must free the reg_info_addr to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM

Notes

• The application must free the memory used by this call. See SE_registration_free_info_list .


SE_shape_add_island

Adds an island ring (donut hole) to an area shape.

Usage syntax

LONG SE_shape_add_island (SE_SHAPE shape,
SE_SDEPOINT *pointlist,
LONG num_pts);

Parameters

shape | A handle to an active shape object.
pointlist | Address of a list of points that define the boundary of the island.
num_pts | The number of points in the new island boundary.

Description

SE_shape_add_island adds a new island (or ‘donut hole’) to a polygon shape if it can do so without violating any entity rules. The order of the points doesn’t matter as long as the start and endpoints are the same. This function can also change a regular island into an exverted island.

This function returns SE_SHAPE_INTEGRITY_ERROR if an invalid shape would result and leaves the source shape unchanged. The source shape must have enough memory allocated for its point buffers to hold the new island. If the island is not inside an existing outer shell, SE_FAILURE is returned. The z- and m-values are ignored unless the input shape has a z and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to 'shape', the SE_READ_ONLY_SHAPE error is returned. See 'Shape table functions' for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_add_part

Adds a new part to a given shape.

Interface

LONG SE_shape_add_part
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object that contains the parts to add to tgt_shape.
tgt_shape | A handle to an active shape object to which the parts were added.

Description

Adds a new part to a given shape. The new part is supplied as a shape, and is appended to the target shape. If the target shape has one or more existing parts, and the source and target shapes are not of the same type, the operation fails. If the source shape has multiple parts, all parts are added in the same order.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to 'shape', the SE_READ_ONLY_SHAPE error is returned. See 'Shape table functions' for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_as_binary

Returns the ESRI binary representation of a shape.

Interface

LONG SE_shape_as_binary
(const SE_SHAPE shape,
LONG alloc_size,
LONG *binary_size,
CHAR *binary_type);

Parameters

shape | A handle to an active shape object.
alloc_size | The amount of memory to allocate in bytes.
*binary_size | The actual length in bytes.
*binary_type | A pointer to the shape in the ESRI binary representation.

Description

Returns the ESRI ArcView® GIS binary representation of a shape.

Returns

SE_SUCCESS
SE_BINARY_TOO_SMALL
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_line

Returns a shape of type line, given a shape of any type.

Interface

LONG SE_shape_as_line
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to convert to a line shape.
tgt_shape | A handle to an active line type shape object.

Description

Given a shape of any type, returns it as a shape of type line. If the input shape consists of a single point, this function returns a nil shape. If the resulting shape fails any of the verification rules for requested shape type, an error is returned and the tgt_shape is a nil shape.

Returns

SE_SUCCESS
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_point

Returns a shape of type point, given a shape of any type.

Interface

LONG SE_shape_as_point
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to convert to a multipoint shape.
tgt_shape | A handle to an active multipoint shape.

Description

Given a shape of any type, returns it as a shape of type point. If the resulting shape fails any of the verification rules for requested shape type, an error is returned and the tgt_shape is a nil shape.

Returns

SE_SUCCESS
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_polygon

Returns a shape of type polygon, given a shape of any type.

Interface

LONG SE_shape_as_polygon
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to convert to a polygon shape.
tgt_shape | A handle to an active area shape object.

Description

Given a shape of any type, returns it as a shape of type polygon. If the input shape is not a legal polygon shape, a nil shape is returned. If the resulting shape fails any of the verification rules for requested shape type, an error is returned and the tgt_shape is a nil shape.

Returns

SE_SUCCESS
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_simple_line

Returns a shape of simple line type, given a shape of any type.

Interface

LONG SE_shape_as_simple_line
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to convert to a simple line shape.
tgt_shape | A handle to an active simple line shape object.

Description

Given a shape of any type, returns it as a shape of simple line (linestring) type. If the input shape consists of a single point, this function returns a nil shape. If the resulting shape fails any of the verification rules for requested shape type, an error is returned and the tgt_shape is a nil shape.

Returns

SE_SUCCESS
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_text

Returns a text representation of a shape.

Interface

LONG SE_shape_as_text
(const SE_SHAPE shape,
LONG alloc_size,
CHAR *text_shape);

Parameters

shape | A handle to an active shape object.
alloc_size | The amount of memory to allocate in bytes.
*text_shape | A pointer to the shape as a text string.

Description

Returns the text representation of a shape. If you pass a NIL shape, an error message is returned.

Returns

SE_SUCCESS
SE_AMBIGUOUS_NIL_SHAPE
SE_INVALID_ENTITY_TYPE
SE_INVALID_GEOMETRY_TYPE
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_SHAPE_TEXT_TOO_LONG

Notes

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_as_WKB

Returns the well-known binary representation of a shape.

Interface

LONG SE_shape_as_WKB
(const SE_SHAPE shape,
LONG alloc_size,
LONG *binary_size,
CHAR *WKB_type);

Parameters

shape | A handle to an active shape object.
alloc_size | The amount of memory to allocate in bytes.
*binary_size | The actual length in bytes.
*WKB_type | A pointer to the shape in the well-known binary representation.

Description

Returns the well-known binary representation of a shape.

Returns

SE_SUCCESS
SE_BINARY_TOO_SMALL
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_build

Assembles a set of line segments into polygons or linestrings using the specified mode.

Interface

LONG SE_shape_build
(SE_SHAPE src_shape,
SE_BUILD_MODE mode,
BOOL dissolve,
LONG match_mask,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active line shape object.
mode | Determines the type of output shapes.
dissolve | Determines whether to remove duplicate line segments.
match_mask | If set, z-coordinates are used to check for duplicates.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

This function takes a line (spaghetti) shape (the raw shape) and assembles it into polygons or simple lines according to the mode. The mode is specified with:

typedef enum {
SE_Build_Polygons_From_All_Rings,
SE_Build_Polygons_From_Clockwise_Rings,
SE_Build_Polygons_From_CounterClockwise_Rings,
SE_Build_SimpleLines
} SE_BUILD_MODE;

The first enumeration, SE_Build_Polygons_From_All_Rings, will use all segments in the shape to create a polygon. SE_Build_From_Clockwise_Rings will use the clockwise lines only to build the polygon shape. SE_Build_From_CounterClockwise_Rings will use the counterclockwise lines only to build the polygon shape. SE_Build_SimpleLines will convert a set of lines (spaghetti) into a multipart simple line shape.

If the dissolve flag is TRUE, then all duplicate line segments are eliminated. The match_mask determines whether to use z values in addition to x,y to check for duplicates, when
z values are present. The match_mask is valid when building simple lines only. A simple line can cross itself if the z values are different at the point of intersection. The match_mask definition is in sg.h and is:

SG_MATCH_ZEDS

You can use both definitions with

LONG match_mask;

match_mask = SG_MATCH_ZEDS

Returns

SE_SUCCESS
SE_INVALID_ENTITY_TYPE
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_calculate_distance

Returns the closest distance between two shapes.

Interface

LONG SE_shape_calculate_distance
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
LFLOAT *distance,
BOOL inside_test);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
distance | The distance.
inside_test | If FALSE, returns the closest boundary-to-boundary distance. If TRUE and any part of one of the shapes is inside the other, distance is set to zero.

Description

Returns the closest distance between two shapes. If inside_test is FALSE, inside tests are not performed on the two shapes, and the closest boundary-to-boundary distance is returned. If inside_test is TRUE and any part of one of the shapes is inside the other area shape, the minimum distance is set to zero.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• Ignores any CAD data.


SE_shape_change_coordref

Projects a shape to a new coordinate system.

Interface

LONG SE_shape_change_coordref
(const SE_SHAPE src_shape,
SE_COORDREF coordref,
PE_GEOGTRAN geogtran,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object.
coordref | A pointer to a coordinate reference structure that defines the new coordinate system for the shape.
geogtran | A pointer to a Projection Engine geographic (datum) transformation object. Can be a null pointer.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Projects a shape to a new coordinate system. If geogtran is null, the two coordinate systems are assumed to be based on the same datum. If they aren’t and geogtran is null, the error SE_PROJECTION_ERROR is returned. If the two coordinate systems are on different datums, you must create a geographic transformation object which specifies how to convert the datums. Consider using the predefined transformations with the pe_factory functions. For example,

PE_GEOGTRAN gt = pe_factory(PE_GT_NAD_1927_TO_WGS_1984_4);

creates a geographic transformation object that converts between NAD27 and WGS84 in the contiguous United States.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_COORDREF_OBJECT
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PROJECTION_ERROR
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_change_path

Replaces a path in the source shape with a new path.

Usage syntax

LONG SE_shape_change_path
(SE_SHAPE shape,
SE_SDEPOINT *firstpt,
SE_SDEPOINT *midpt,
SE_SDEPOINT *lastpt,
SE_SDEPOINT *pointlist,
LONG num_pts);

Parameters

shape | The source shape to change.
firstpt | An SE_SDEPOINT structure containing the path’s start-point coordinates.
midpt | An SE_SDEPOINT structure containing the coordinates of any point along the path. If there is no midpoint, set this value to NULL.
lastpt | An SE_SDEPOINT structure containing the coordinate values of the endpoint of the path.
pointlist | The list of coordinates that will replace the path. May be NULL.
num_pts | The number of points in the ‘pointlist’ array. May be zero.

Description

SE_shape_change_path replaces any specified sequence of points in the source shape with a new path, but retains its start and endpoints. The points supplied by ‘pointlist’ replace the points between the specified start and endpoints. If the ‘pointlist’ pointer is NULL or the ‘num_pts’ value is zero, no points are inserted between the start and endpoints, and any points that previously lay between them are eliminated.

The midpt parameter is important when working with area shapes. The midpoint identifies which section of the polygon to change. In the drawing below, the firstpt and lastpt are 5 and 7, while 6 is the midpt.

The z- and m-values of the SE_SDEPOINT structures are ignored unless the input shape has a z and/or a measures array.

The path 5-6-7 is removed. The pointlist was null, so no points were added.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PATH_NOT_FOUND
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function does not return successfully, the source shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_clip

Returns the intersection (logical AND of space) of a shape and a supplied rectangular envelope.

Interface

LONG SE_shape_clip
(SE_SHAPE src_shape,
SE_ENVELOPE *window,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to clip to the supplied envelope.
window | A pointer to an ENVELOPE structure that defines the clipping window.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Returns the intersection (logical AND of space) of a shape and a supplied rectangular envelope, returning the resulting intersection as tgt_shape. The resulting clipped shape has the same dimension as the source shape, or it may be a nil shape if the source shape does not intersect the clipping window.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_create

Initializes a shape structure.

Interface

LONG SE_shape_create
(SE_COORDREF coordref,
SE_SHAPE *shape);

Parameters

coordref | A handle to an active coordinate reference object to use as the default coordinate reference for the new shape.
shape | A pointer to an unallocated shape object. If the result is SUCCESS, shape contains a handle to an active shape object.

Description

Creates a shape with no geometry. The coordinate reference parameter defines the coordinate reference system for the new shape object. You can pass a NULL pointer to indicate an unknown coordinate reference system with default values.

Returns


SE_shape_delete_island

Deletes an island ring from a polygon shape.

Usage syntax

LONG SE_shape_delete_island
(SE_SHAPE shape,
SE_POINT *pt );

Parameters

shape | A handle to an active shape object.
pt | Address of any coordinate point on the island to delete.

Description

SE_shape_delete_island deletes the island ring that contains the specified point from the source shape. Upon successful completion, the new shape is copied and returned in the source shape structure pointed to by shape.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PT_NO_EXIST
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function fails, the source shape is unchanged.

• See also SE_shape_add_island .

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_delete_part

Deletes the specified part of a multipart shape.

Interface

LONG SE_shape_delete_part
(SE_SHAPE shape,
LONG part_num);

Parameters

shape | A handle to an active shape object to delete a part from.
part_num | The number of the part to delete.

Description

Given a shape with one or more parts, deletes the specified part. Any remaining parts in the shape are shifted to replace the deleted part. If the shape contains a single part that was deleted, the shape becomes a nil shape.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INVALID_PARTNUM
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’, for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_delete_path

Deletes a path from the specified shape.

Usage syntax

LONG SE_shape_delete_path
(SE_SHAPE shape,
SE_SDEPOINT *firstpt,
SE_SDEPOINT *midpt,
SE_SDEPOINT *lastpt);

Parameters

shape | A handle to an active shape object from which to delete the path.
firstpt | An SE_SDEPOINT structure containing the coordinates of the path’s start point.
midpt | An SE_SDEPOINT structure containing the coordinate values of any point along the path.
lastpt | An SE_SDEPOINT structure containing the coordinate values of the endpoint in the path.

Description

SE_shape_delete_path removes a path (sequence of points) from the source shape, not including the firstpt and lastpt. The path is specified by a start point, endpoint, and any point along the path. The resulting shape is automatically verified to catch illegal shapes.

The z- and m-values of the SE_SDEPOINT structures are ignored unless the input shape has a z-coordinate array and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PATH_NOT_FOUND
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• Only points lying between the first and last points in the path are removed.

• If this function fails, the source shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.

• See also SE_shape_delete_point .


SE_shape_delete_point

Deletes all occurrences of the specified point in the shape.

Usage syntax

LONG SE_shape_delete_point
(SE_SHAPE shape,
SE_SDEPOINT *pt);

Parameters

shape | A handle to an active shape object.
pt | Address of an SE_SDEPOINT structure containing the coordinate values of the point to remove.

Description

SE_shape_delete_point deletes all occurrences of the specified point from the source shape. If removing the points creates an invalid shape, SE_SHAPE_INTEGRITY_ERROR is returned.

The z- and m-values of the SE_SDEPOINT structures are ignored unless the input shape has a z array and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PT_NO_EXIST
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function fails, the original shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_difference

Returns the difference (logical AND NOT of space) of two shapes.

Interface

LONG SE_shape_difference
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
SE_SHAPE tgt_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
tgt_shape | A handle to an active shape object.

Description

Returns the difference (logical AND NOT of space) of two shapes as tgt_shape.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_ENTITY_TYPE
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• This function works in 2-D space. The resulting shape won’t have z- or m-values.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.

• This function is not implemented yet for line-line and line-area combinations. Area-area combinations will return only area shapes at this time.


SE_shape_duplicate

Copies a source shape to a target shape.

Interface

LONG SE_shape_duplicate
(const SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object to copy.
tgt_shape | A handle to an active shape object, returned as a copy of src_shape.

Description

Copies the source shape object to the target shape object.

Returns

SE_SUCCESS
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Copies the CAD data if the source shape has CAD data.


SE_shape_evaluate_CBM

Checks a relationship expression against a SE_CBM_INFO structure.

Interface

LONG SE_shape_evaluate_CBM
(SE_CBM_INFO *info,
char *scltext,
BOOL *testresult);

Parameters

info | Contains the relationship of two shapes.
scltext | A character string defining a relationship.
testresult | TRUE or FALSE.

Description

Compares a text-based relationship string against an SE_CBM_INFO structure that defines the relationship between two shapes. You must call SE_shape_find_CBM_relation before calling SE_shape_evaluate_CBM . SE_CBM_INFO is

typedef struct {

LONG primary_entity_type;

LONG secondary_entity_type;

LONG mask;

LONG sectdims[3][3];

} SE_CBM_INFO;

The mask has a flag for each of the relation types that is satisfied: identical, touch, cross, in or contain, disjoint, and overlap. The scltext parameter is a text string that describes a relationship between two shapes. It supports very complex relationships. The shape comparison language (SCL) supports a wide array of keywords and operators.

SCL Keywords and Operators

AND

AREA

BOUNDARY

CONTAIN CONTAINS

CROSS CROSSES

DIM

DISJOINT

EQUAL EQUALS

EXTERIOR

FALSE

G1 or g1 The primary shape

G2 or g2 The secondary shape

IDENTICAL

IN INSIDE

INTERIOR

LINEAR

NIL NULL

NOT

OR

OVERLAPS OVERLAP

POINT

TOPOFORM If TRUE, two shapes touch or intersect at vertices.

TOUCHES TOUCH

TRUE

XOR

= Equality operator, also IDENTICAL operator for shapes

== Equality operator, also IDENTICAL operator for shapes

!= Inequality operator, also NON-IDENTICAL operator for shapes

=! DISJOINT operator

=& OVERLAP operator

=@ IN operator

=* TOUCH operator

=/ CROSS operator

The base building block of the SCL language is g1 and g2 which represent the primary and secondary shapes that you wish to compare. You can work with the dimensionality of the shapes with the dim keyword and adding either boundary, interior, or exterior.

dim(g1.interior) >= dim(g2.boundary)

If the dim keyword is used with one argument, the dimension of the shape is returned. You can also pass dim two arguments which will return the dimension of the intersection of the two arguments.

dim(g1.boundary,g2.interior)

Points have a dimension of 0, lines are 1, and areas (polygons) are 2. The dimension of a boundary of a shape is one less than the shape’s dimension. A point has no boundary so the dimension of the boundary is -1 or nil. The boundary of a line has dimension 0 and are the end points of the line. An area shape’s boundary consists of the lines that compose it and the boundary’s dimension is 1.

The dimension of a shape’s interior is the same as the shape itself. The interior of a shape is the shape minus its boundary so a line’s interior doesn’t include the end points. The exterior of any shape type is 2.

SCL supports six spatial relationships: contain or in, cross, touch, overlap, identical, and topoform. You can check whether two shapes cross with either of the following statements.

g1 cross g2

cross(g1,g2) = true

The topoform keyword is an extension to SCL. Topoform is TRUE when two shapes intersect at vertices. A line whose end point touches another line between two vertices has a false topoform value.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.

• You must call SE_shape_find_CBM_relation before calling this function.


SE_shape_extend_line

Extends a linear shape by adding a specified string of points to the beginning or end of the shape.

Usage syntax

LONG SE_shape_extend_line
(SE_SHAPE shape,
SE_SDEPOINT *endpoint,
SE_SDEPOINT *pointlist,
LONG num_pts);

Parameters

shape | A handle to an active SE_SHAPE object that is any type of valid linear shape.
endpoint | Address of an SE_SDEPOINT structure that holds the coordinate location of the endpoint to extend from. Must be equal to the first or last point in a component of the shape.
pointlist | Address of the list of new coordinate points.
num_pts | Number of points in the pointlist list.

Description

SE_shape_extend_line adds a set of new points to the beginning or end of the shape’s point array. If endpoint does not equal either the first or last point in the string, then SE_INVALID_END_PT is returned and the shape is left unchanged.

The z- and m-values of the SE_SDEPOINT structures are ignored unless the input shape has a z-coordinate array and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_END_PT
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PT_NO_EXIST
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function fails, the source shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See Chapter 14, ‘Shape table functions’, for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.

• See also SE_shape_change_path .


SE_shape_filter_coordinates

Applies a Douglas–Poiker line generalization to a shape.

Interface

LONG SE_shape_filter_coordinates
(const SE_SHAPE src_shape,
LFLOAT distance,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object.
distance | Points within this distance are removed from the source shape.
tgt_shape | A handle to an active shape object, returned as the result of filtering the src_shape object using the specified distance.

Description

Applies a Douglas–Poiker line generalization to the supplied shape src_shape.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See Chapter 14, ‘Shape table functions’, for more information.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.


SE_shape_find_along

Returns the points or lines along a shape as defined by the shape’s measures and the supplied measure value.

Interface

LONG SE_shape_find_along
(SE_SHAPE shape,
LFLOAT measure,
LONG *num_shapes,
SE_SHAPE **new_shapes);

Parameters

shape | A handle to an active shape object.
measure | The measure value along the supplied shape to locate.
num_shapes | The number of shapes returned.
new_shapes | An address of a pointer to a shape object handle, which is returned as an array of active shape object handles containing the results.

Description

Returns the points or lines along a shape as defined by the shape’s measures and the supplied distance value. The resulting point or line shapes are returned as shapes in the array new_shapes. If the shape is a point or multipoint type, the point or points with an exact matching measure are returned. For other shape types, the measure value is interpolated before the results are returned.

This function allocates memory for the array of shape objects and should be deallocated with the SE_shape_free_array function.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• Ignores any CAD data.


SE_shape_find_between

Returns the points or lines along a shape as defined by the shape’s measures between the given from- and to-values.

Interface

LONG SE_shape_find_between
(SE_SHAPE shape,
LFLOAT from_measure,
LFLOAT to_measure,
LONG *num_shapes,
SE_SHAPE **new_shapes);

Parameters

shape | A handle to an active shape object.
from_measure | The from-measure value along the supplied shape.
to_measure | The to-measure value along the supplied shape.
num_shapes | The number of shapes returned.
new_shapes | An address of a pointer to a shape object handle, which is returned as an array of active shape object handles containing the results.

Description

Returns the points or lines that have measure values equal to or between two specified measure values. SE_shape_find_between will return a point shape if the source shape is a point type. For other shape types, a multipart line is returned if a path can be interpolated; otherwise a multipoint shape containing the point locations is returned.

An empty point is returned when a path or location can't be interpolated. The resulting point or line shapes are returned as shapes in the array new_shapes. This function allocates memory for the array of shape objects and should be deallocated by using the SE_shape_free_array function.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• Ignores any CAD data.


SE_shape_find_CBM_relation

Returns a SE_CBM_INFO structure defining all the relationships between the supplied shapes.

Interface

LONG SE_shape_find_CBM_relation
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
SE_CBM_INFO *info);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
info | Contains the relationships of the supplied shapes.

Description

Returns an SE_CBM_INFO structure defining all the relationships between the supplied shapes. SE_CBM_INFO is

typedef struct {

LONG primary_entity_type;

LONG secondary_entity_type;

LONG mask;

LONG sectdims[3][3];

} SE_CBM_INFO;

The mask returns a flag for each of the relation types that is satisfied: equal, touch, cross, intersect, disjoint, and overlap.

RM_LINE_CROSS | Line intersection. The boundaries of shapes intersect. The point of intersection is not a contained vertex for at least one of the shapes.
RM_COMMON_PT | The primary and secondary shapes have at least one point in common.
RM_EMBEDDED_PT | A vertex is embedded in a line.
RM_CBOUND_SAME | A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is the same in both shapes.
RM_CBOUND_DIFF | A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is opposite in the shapes.
RM_PARALLEL_OVERLAPPING | Similar to the common boundary masks but one of the shapes has a common boundary with the interior of the other shape.
RM_IDENTICAL | The primary and secondary shapes are identical in terms of shape type and coordinate description.
RM_AREA_INTERSECT | An area intersection exists. At least one of the shapes is an area shape and the other shape is at least partially inside it. Adjacency is not an area intersect.
RM_INTERIOR_INTERSECT | Same as RM_AREA_INTERSECT but applicable to all entity types. The interiors of both shapes must intersect.
RM_BOUNDARY_INTERSECT | The endpoint of a linestring intersects the endpoint of another linestring or the boundary of an area feature.
RM_PRIM_LEP_INTERIOR | The endpoint of the primary feature intersects the interior of the secondary feature. Occurs when a linear feature’s endpoint (primary) intersects a point feature.
RM_SEC_LEP_INTERIOR | The primary feature intersects the endpoint of the secondary feature. Occurs when a point feature (primary) intersects a linear feature’s endpoint.
RM_PRIM_CONTAINED | The primary shape is wholly contained by the secondary shape. If the secondary shape is an area shape, the primary shape is wholly inside the secondary shape’s boundary. If both shapes are linear, the primary shape’s path is wholly included in the secondary shape’s path. If the primary shape is a point shape, the primary shape is one of the secondary shape’s vertices.
RM_SEC_CONTAINED | The secondary shape is wholly contained by the primary shape. If the primary shape is an area shape, the secondary shape is wholly inside the primary shape’s boundary. If both shapes are linear, the secondary shape’s path is wholly included in the primary shape’s path. If the secondary shape is a point shape, the secondary shape is one of the primary shape’s vertices.

Returns

SE_SUCCESS
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.

• You must call this function before SE_shape_evaluate_CBM .


SE_shape_find_relation

Returns a mask defining all the relationships between the supplied shapes.

Interface

LONG SE_shape_find_relation
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
LONG *mask);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
mask | Contains the relationships of the supplied shapes.

Description

Returns a mask defining all the relationships between the supplied shapes. The mask returns a flag for each of the relation types that is satisfied: equal, touch, cross, intersect, disjoint, and overlap.

RM_LINE_CROSS | Line intersection. The boundaries of shapes intersect. The point of intersection is not a contained vertex for at least one of the shapes.
RM_COMMON_PT | The primary and secondary shapes have at least one point in common.
RM_EMBEDDED_PT | A vertex is embedded in a line.
RM_CBOUND_SAME | A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is the same in both shapes.
RM_CBOUND_DIFF | A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is opposite in the shapes.
RM_PARALLEL_OVERLAPPING | Similar to the common boundary masks but one of the shapes has a common boundary with the interior of the other shape.
RM_IDENTICAL | The primary and secondary shapes are identical in terms of shape type and coordinate description.
RM_AREA_INTERSECT | An area intersection exists. At least one of the shapes is an area shape and the other shape is at least partially inside it. Adjacency is not an area intersect.
RM_INTERIOR_INTERSECT | Same as RM_AREA_INTERSECT but applicable to all entity types. The interiors of both shapes must intersect.
RM_BOUNDARY_INTERSECT | The endpoint of a linestring intersects the endpoint of another linestring or the boundary of an area feature.
RM_PRIM_LEP_INTERIOR | The endpoint of the primary feature intersects the interior of the secondary feature. Occurs when a linear feature’s endpoint (primary) intersects a point feature.
RM_SEC_LEP_INTERIOR | The primary feature intersects the endpoint of the secondary feature. Occurs when a point feature (primary) intersects a linear feature’s endpoint.
RM_PRIM_CONTAINED | The primary shape is wholly contained by the secondary shape. If the secondary shape is an area shape, the primary shape is wholly inside the secondary shape’s boundary. If both shapes are linear, the primary shape’s path is wholly included in the secondary shape’s path. If the primary shape is a point shape, the primary shape is one of the secondary shape’s vertices.
RM_SEC_CONTAINED | The secondary shape is wholly contained by the primary shape. If the primary shape is an area shape, the secondary shape is wholly inside the primary shape’s boundary. If both shapes are linear, the secondary shape’s path is wholly included in the primary shape’s path. If the secondary shape is a point shape, the secondary shape is one of the primary shape’s vertices.

Returns

SE_SUCCESS
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_free

Frees the memory allocated for a shape object.

Interface

void SE_shape_free (SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Frees the memory allocated for a shape object.

Returns

SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See Chapter 14 for more information.


SE_shape_free_array

Frees the memory allocated for an array.

Interface

void SE_shape_free_array
(LONG num_shapes,
SE_SHAPE *shapelist);

Parameters

num_shapes | The number of shape objects in the array.
shapelist | A handle to an array of shape objects.

Description

Frees the memory allocated for an array.


SE_shape_generate_buffer

Generates a buffer around the source shape, and returns the resulting new shape.

Interface

LONG SE_shape_generate_buffer
(const SE_SHAPE src_shape,
LFLOAT distance,
LONG max_pts,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object.
distance | The buffer distance.
max_pts | The maximum number of points allowed in the new shape.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Generates a buffer around the source shape, returning the resulting new shape as tgt_shape. Negative buffer distances are supported for area shapes only. If the source shape is not an area shape, the absolute value of the buffer distance is used. An SE_INVALID_NUMBER_OF_POINTS error will occur if the target shape is not large enough to hold the resulting buffer. In this case, increase the allocated size of the target shape.

Returns

SE_SUCCESS
SE_CORRIDOR_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE
SE_INVALID_NUMBER_OF_POINTS
SE_SHAPE_INTEGRITY_ERROR

Notes

• This function works in 2-D space. Resulting shapes won’t have z- or m-values.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.

• If the max_pts arguement isn't large enough to accomodate the resulting shape, it will return SE_INVALID_NUMBER_OF_POINTS .


SE_shape_generate_circle

Generates a polygon shape in the form of a circle based on the supplied center, radius, and number of points.

Interface

LONG SE_shape_generate_circle
(SE_POINT center,
LFLOAT radius,
LONG num_pts,
SE_SHAPE tgt_shape);

Parameters

center | An SE_POINT structure that contains the center coordinate of the circle.
radius | The radius of the circle.
num_pts | The number of points to use in the resulting circular shape.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Generates a polygon shape in the form of a circle based on the supplied center, radius, and number of points. The parameters have some restrictions:

num_pts >= 9 /* 8 points to define the shape; the 9th, to close it. */

radius > 0.0

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.


SE_shape_generate_convex_hull

Computes the convex hull polygon for a shape’s points.

Usage syntax

LONG SE_shape_generate_convex_hull
(SE_SHAPE src_shape,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object that contains the points to use.
tgt_shape | Pointer to an allocated shape that will contain the convex hull polygon upon successful completion.

Description

For any set of three or more points, only one polygon can comprise (some or all of) the point set that is convex and contains all the unused points. The calculation of this convex hull is often the first step in operations like the development of ARC TIN networks from a set of points. This routine is provided as a convenience for such operations.

Returns

SE_SUCCESS
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_ellipse

Generates a polygon shape in the form of an ellipse.

Interface

LONG SE_shape_generate_ellipse
(SE_POINT center,
LFLOAT semi_major_axis,
LFLOAT semi_minor_axis,
LFLOAT angle,
LONG num_pts,
SE_SHAPE tgt_shape);

Parameters

center | An SE_POINT structure that contains the center coordinate of the ellipse.
semi_major_axis | The semimajor axis of the ellipse.
semi_minor_axis | The semiminor axis of the ellipse.
angle | The angle of the ellipse.
num_pts | The number of points to use in the resulting elliptical shape.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Generates a polygon shape in the form of a ellipse based on the supplied center, radii, angle, and number of points. The parameters have some restrictions:

num_pts >= 9 /* 8 points to define the shape; the 9th, to close it. */
semi_major_axis > 0.0
semi_minor_axis > 0.0
0.0 <= angle <= 360.0

The semimajor axis must be greater or equal to the semiminor axis. The angle of the ellipse is given in degrees.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_from_binary

Creates a shape from its ESRI binary represenation.

Interface

LONG SE_shape_generate_from_binary
(const CHAR *binary_type,
SE_SHAPE shape);

Parameters

binary_type | A handle to a binary representation of a shape.
shape | A handle to an active shape object, returned as the new shape.

Description

Returns an ArcSDE shape from its ESRI binary representation.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_ENTITY_TYPE
SE_INVALID_NUM_MEASURES
SE_INVALID_NUM_PARTS
SE_INVALID_OUTER_SHELL
SE_INVALID_PART_OFFSET
SE_INVALID_PART_SEPARATOR
SE_INVALID_SYSTEM_UNITS
SE_INVALID_POINTER
SE_INVALID_POLYGON_CLOSURE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_OUTER_SHELLS_OVERLAP
SE_POLY_SHELLS_OVERLAP
SE_POLYGON_HAS_VERTICAL_LINE
SE_READ_ONLY_SHAPE
SE_SDE_NOT_STARTED
SE_SELF_INTERSECTING
SE_SHAPE_INTEGRITY_ERROR
SE_TOO_FEW_POINTS
SE_ZERO_AREA_POLYGON


SE_shape_generate_from_part

Generates a new shape from the specified part of a shape.

Interface

LONG SE_shape_generate_from_part
(const SE_SHAPE src_shape,
LONG part_num,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object containing the part to generate the target shape from.
part_num | The number of the part in src_shape to generate tgt_shape from.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Given a shape that contains one or more parts, generates a new shape (tgt_shape) from the specified part number.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_from_text

Creates a shape from its well-known text represenation.

Interface

LONG SE_shape_generate_from_text
(const CHAR *text_shape,
SE_SHAPE shape);

Parameters

text_shape | A handle to a text representation of a shape.
shape | A handle to an active shape object, returned as the new shape.

Description

Returns an ArcSDE shape from its well-known text representation.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_COORDREF_OBJECT
SE_INVALID_GEOMETRY_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_PART_OFFSET
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_SHAPE_TEXT_ERROR
SE_TOO_MANY_PARTS
SE_TYPE_MISMATCH


SE_shape_generate_from_WKB

Creates a shape from its well-known binary represenation.

Interface

LONG SE_shape_generate_from_binary
(const CHAR *WKB_type,
SE_SHAPE shape);

Parameters

WKB_type | A handle to a well-known binary representation of a shape.
shape | A handle to an active shape object, returned as the new shape.

Description

Returns an ArcSDE shape from its well-known binary representation.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_BYTE_ORDER
SE_INVALID_ENTITY_TYPE
SE_INVALID_OUTER_SHELL
SE_INVALID_PART_OFFSET
SE_INVALID_PART_SEPARATOR
SE_INVALID_SYSTEM_UNITS
SE_INVALID_POINTER
SE_INVALID_POLYGON_CLOSURE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_OUTER_SHELLS_OVERLAP
SE_POLYGON_HAS_VERTICAL_LINE
SE_READ_ONLY_SHAPE
SE_SDE_NOT_STARTED
SE_SELF_INTERSECTING
SE_SHAPE_INTEGRITY_ERROR
SE_TOO_FEW_POINTS
SE_ZERO_AREA_POLYGON


SE_shape_generate_label_point

Generates a label point for a shape.

Interface

LONG SE_shape_generate_label_point
(const SE_SHAPE shape,
SE_POINT *pt);

Parameters

shape | A handle to an active shape object.
pt | A pointer to an SE_POINT structure containing a label point for the shape.

Description

Generates a label point for a shape.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_generate_line

Generates a line shape from an array of points.

Interface

LONG SE_shape_generate_line
(LONG num_pts,
LONG num_parts,
LONG *part_offsets,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure,
SE_SHAPE tgt_shape);

Parameters

num_pts | The number of points to generate the line shape from.
num_parts | The number of parts in the point array to generate the line shape from.
part_offsets | An array of indices into the point_array delineating each shape part. This may be NULL if num_parts is 1.
point_array | The array of x,y coordinates.
z | The array of z-coordinates, if needed.
measure | A pointer to the measures, if needed.
tgt_shape | A handle to an active shape object, returned as the new line shape.

Description

Generates a line shape from an array of points. If the z or measure array values are null, the resulting shape won’t contain elevations or measures.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_PART_OFFSET
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_point

Generates a point shape from an array of points.

Interface

LONG SE_shape_generate_point
(LONG num_pts,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure,
SE_SHAPE tgt_shape);

Parameters

num_pts | The number of points to generate the point shape from.
point_array | The array of x,y coordinates.
z | The array of z-coordinates, if needed.
measure | A pointer to the measures, if needed.
tgt_shape | A handle to an active shape object, returned as the new point shape.

Description

Generates a point shape from an array of points. If the z or measure array values are null, the resulting shape won’t contain elevations or measures.

typedef struct {

LFLOAT x;

LFLOAT y;

} SE_POINT;

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM

Notes

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_polygon

Generates a polygon shape from an array of points.

Interface

LONG SE_shape_generate_polygon
(LONG num_pts,
LONG num_parts,
LONG *part_offsets,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure,
SE_SHAPE tgt_shape);

Parameters

num_pts | The total number of points of the polygon shape.
num_parts | The number of parts contained in the point array.
part_offsets | An array of indices into the point_array delineating each shape part. This may be NULL if num_parts is 1.
point_array | The array of x,y coordinates.
z | The array of z-coordinates, if needed.
measure | A pointer to the measures, if needed.
tgt_shape | A handle to an active shape object, returned as the new polygon shape.

Description

Generates a polygon shape from an array of points. If the z or measure array values are null, the resulting shape won’t contain elevations or measures.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_PART_OFFSET
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_rectangle

Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.

Interface

LONG SE_shape_generate_rectangle
(SE_ENVELOPE *rect,
SE_SHAPE tgt_shape);

Parameters

rect | A pointer to an SE_ENVELOPE structure defining the rectangle for the new shape.
tgt_shape | A handle to an active shape object, returned as the new shape.

Description

Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.

typedef struct {

LFLOAT minx;

LFLOAT miny;

LFLOAT maxx;

LFLOAT maxy;

} SE_ENVELOPE;

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM

Notes

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_generate_simple_line

Generates a simple line shape from an array of points.

Interface

LONG SE_shape_generate_simple_line
(LONG num_pts,
LONG num_parts,
LONG *part_offsets,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure,
SE_SHAPE tgt_shape);

Parameters

num_pts | The total number of points in the line shape.
num_parts | The number of parts contained in the point array.
part_offsets | An array of indices into the point_array delineating each shape part. This may be NULL if num_parts is 1.
point_array | The array of x,y coordinates.
z | The array of z-coordinates, if needed.
measure | A pointer to the measures, if needed.
tgt_shape | A handle to an active shape object, returned as the new simple line shape.

Description

Generates a simple line shape from an array of points. If the z or measure array values are null, the resulting shape won’t contain elevations or measures.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_PARAM_VALUE
SE_INVALID_PART_OFFSET
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_get_3D_length

Returns the three-dimensional length of a shape or a shape part.

Interface

LONG SE_get_3D_length
(const SE_SHAPE shape,
LONG part_num,
LFLOAT *length);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the length for.
length | A pointer to the 3-D length of the shape part or shape.

Description

Returns the three-dimensional length of the supplied shape. If part_num is 0, the three-dimensional length of the entire shape is returned. If part_num is nonzero, the 3-D length of the specified part is returned.

Returns

SE_SUCCESS
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.

• The x,y units and the z-units must be equal for length to be correctly calculated.


SE_shape_get_all_points

Returns the point array of a shape.

Interface

LONG SE_shape_get_all_points
(const SE_SHAPE shape,
SE_ROTATION_TYPE rotation,
LONG *part_offsets,
LONG *subpart_offsets,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure);

Parameters

shape | A handle to an active shape object.
rotation | The winding rule to follow when returning points. Only valid for polygons.
part_offsets | The part offsets. May be null.
subpart_offsets | The subpart offsets. If null, the part_offsets array will contain indexes directly into the point_array.
point_array | A pointer to an allocated array of SE_POINT structures containing the requested points.
z | A pointer to an allocated array containing the z-values. May be null.
measure | A pointer to an allocated array containing the measure values. May be null.

Description

Returns the point array of the entire shape including all its parts. The part_offsets, subpart_offsets, point_array, z, and measure pointers must be allocated to a size large enough to contain the points for the specified shape. If the z or measure parameters are NULL, then no z- or m-values are returned.

By default, ArcSDE stores points in a left-hand winding rule (e.g., the polygon interior is always to the left of the rings which comprise it). You can choose which rotation mode the points should be returned in by using the following:

typedef enum {
SE_DEFAULT_ROTATION,
SE_LEFT_HAND_ROTATION,
SE_RIGHT_HAND_ROTATION
} SE_ROTATION_TYPE

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_POINTER
SE_INVALID_PARAM_VALUE
SE_INVALID_PART_OFFSET
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM

Notes

• For more information on the part_offsets and subpart_offsets arrays, see ‘Querying shapes’ in the beginning of this chapter.

• Ignores any CAD data.


SE_shape_get_anno

Returns the annotation of a shape.

Interface

LONG SE_shape_get_anno
(const SE_SHAPE shape,
SE_ANNO anno);

Parameters

shape | A handle to an active shape object.
anno | A pointer to an active annotation object.

Description

Returns the annotation of a shape. Use the SE_anno_* functions to work with an SE_ANNO object.

Returns


SE_shape_get_area

Returns the area of a shape or a shape part.

Interface

LONG SE_shape_get_area
(const SE_SHAPE shape,
LONG part_num,
LFLOAT *area);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the area for.
area | A pointer to an LFLOAT, returned as the area of the shape part or shape.

Description

Returns the area of the supplied shape. If part_num is 0, the area of the entire shape is returned. If part_num is nonzero, the area of the specified part is returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_binary_size

Returns the memory requirements for an ESRI representation of a shape.

Interface

LONG SE_shape_get_binary_size
(const SE_SHAPE shape,
LONG *size);

Parameters

shape | A handle to an active shape object.
size | A pointer to the size of the shape.

Description

Returns the memory requirements in bytes for an ESRI representation of a shape.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_SDE_NOT_STARTED

Notes

• Ignores any CAD data.


SE_shape_get_coordref

Returns the coordinate system of a shape.

Interface

LONG SE_shape_get_coordref
(const SE_SHAPE shape,
SE_COORDREF coordref);

Parameters

shape | A handle to an active shape object.
coordref | A pointer to an active coordinate reference object that defines the coordinate system.

Description

Returns the coordinate system reference of a shape.

Returns

SE_SUCCESS
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_extent

Returns the extent of a shape or a shape part.

Interface

LONG SE_shape_get_extent
(const SE_SHAPE shape,
LONG part_num,
SE_ENVELOPE *extent);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the extent for.
extent | A pointer to an SE_ENVELOPE structure, returned as the extent of the shape part or shape.

Description

Returns the extent of the shape. If part_num is 0, the extent of the entire shape is returned. If part_num is nonzero, the extent of the specified part is returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_length

Returns the length of a shape or a shape part.

Interface

LONG SE_shape_get_length
(const SE_SHAPE shape,
LONG part_num,
LFLOAT *length);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the length for.
length | A pointer to the length of the shape part or shape.

Description

Returns the length of the supplied shape. If part_num is 0, the area of the entire shape is returned. If part_num is nonzero, the length of the specified part is returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_Mrange

Returns the range of measure values for a shape or a shape part.

Interface

LONG SE_shape_get_Mrange
(const SE_SHAPE shape,
LONG part_num,
LFLOAT *mmin,
LFLOAT *mmax);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the measure range for.
mmin | A pointer to the minimum measure value of the shape part or shape.
mmax | A pointer to the maximum measure value of the shape part or shape.

Description

Returns the range of a shape’s measure values. If part_num is 0, the measure range of the entire shape is returned. If part_num is nonzero, the measure range of the specified part is returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_num_parts

Returns the number of parts and subparts in a shape.

Interface

LONG SE_shape_get_num_parts
(const SE_SHAPE shape,
LONG *num_parts
LONG *num_subparts);

Parameters

shape | A handle to an active shape object.
num_parts | The number of parts
num_subparts | .The number of subparts. May be null.

Description

Returns the number of parts and, optionally, subparts in a shape.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_num_points

Returns the number of points in a shape or a shape part.

Interface

LONG SE_shape_get_num_points
(const SE_SHAPE shape,
LONG part_num,
LONG subpart_num,
LONG *num_pts);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part.
subpart_num | The number of the subpart.
num_pts | The number of points in the shape part or shape.

Description

Returns the number of points in a shape. If part_num is 0, the number of points in the entire shape is returned. If part_num is nonzero and subpart_num is 0, the number of points in the specified part including any subparts is returned. If part_num and subpart_num are nonzero, the number of points in the subpart is returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_num_subparts

Returns the number of subparts in a shape.

Interface

LONG SE_shape_get_num_subparts
(const SE_SHAPE shape,
LONG part_num
LONG *num_subparts);

Parameters

shape | A handle to an active shape object.
part_num | The part number.
num_subparts | The number of subparts.

Description

Returns the number of subparts in the specified part in a shape.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_points

Returns the point array of the specified part.

Interface

LONG SE_shape_get_points
(const SE_SHAPE shape,
LONG part_num,
SE_ROTATION_TYPE rotation,
LONG *subpart_offsets,
SE_POINT *point_array,
LFLOAT *z,
LFLOAT *measure);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part.
rotation | The winding rule used when returning the points.
subpart_offsets | The subpart offsets. May be null.
point_array | A pointer to an allocated array of SE_POINT structures that contain the requested points.
z | A pointer to an allocated array of LFLOATS that contains the requested z-values.
measure | A pointer to an allocated array of LFLOATS that contains the requested measure values.

Description

Returns the point array of the specified part. part_num must be a valid part number of the supplied shape object. You must allocate enough space to contain the points, z, and measure values for the specified part. The SE_shape_get_num_points function can be called to return the number of points for a shape part. If the z and/or measure parameters are NULL, then no z and/or measure values are returned.

Returns

SE_SUCCESS
SE_INVALID_PARTNUM
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_SHAPE_INTEGRITY_ERROR

Notes

• For more information on the subpart_offsets array, see ‘Querying shapes’.

• Ignores any CAD data.


SE_shape_get_text_size

Returns the memory requirements for a well-known text representation of a shape.

Interface

LONG SE_shape_get_text_size
(const SE_SHAPE shape,
LONG *size);

Parameters

shape | A handle to an active shape object.
size | A pointer to the size of the shape.

Description

Returns the memory requirements in bytes for a well-known text representation of a shape.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_SDE_NOT_STARTED

Notes

• Ignores any CAD data.


SE_shape_get_type

Returns the type of a shape.

Interface

LONG SE_shape_get_type
(const SE_SHAPE shape,
LONG *shape_type);

Parameters

shape | A handle to an active shape object.
shape_type | The type of the shape.

Description

Returns the type of a shape. This function returns the enumerated shape type.

SG_NIL_SHAPE 0
SG_POINT_SHAPE 1
SG_LINE_SHAPE 2
SG_SIMPLE_LINE_SHAPE 4
SG_AREA_SHAPE 8
SG_SHAPE_CLASS_MASK 255
SG_SHAPE_MULTI_PART_MASK 256
SG_MULTI_POINT_SHAPE 257
SG_MULTI_LINE_SHAPE 258
SG_MULTI_SIMPLE_LINE_SHAPE 260
SG_MULTI_AREA_SHAPE 264

You can check to see if a shape allows measure or z-coordinates with SE_shape_is_3D and SE_shape_is_measured .

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_get_WKB_size

Returns the memory requirements for a well-known binary representation of a shape.

Interface

LONG SE_shape_get_WKB_size
(const SE_SHAPE shape,
LONG *size);

Parameters

shape | A handle to an active shape object.
size | A pointer to the size of the shape.

Description

Returns the memory requirements in bytes for a well-known binary representation of a shape.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_SDE_NOT_STARTED

Notes

• Ignores any CAD data.


SE_shape_get_Zrange

Returns the range of Z values of a shape or a shape part.

Interface

LONG SE_shape_get_Zrange
(const SE_SHAPE shape,
LONG part_num,
LFLOAT *zmin,
LFLOAT *zmax);

Parameters

shape | A handle to an active shape object.
part_num | The number of the part to return the elevation range for.
zmin | A pointer to the minimum elevation value of the shape part or shape.
zmax | A pointer to the maximum elevation value of the shape part or shape.

Description

Returns the range of a shape’s elevation values. If part_num is 0, the range of elevation values is returned. If part_num is nonzero, the range of elevation values of the specified part is returned.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_PARTNUM
SE_INVALID_SHAPE_OBJECT

Notes

• Ignores any CAD data.


SE_shape_has_anno

Returns TRUE if the supplied shape has annotation.

Interface

BOOL SE_shape_has_anno (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if a shape has an associated annotation. All other conditions, including an invalid SE_SHAPE object, return FALSE.


SE_shape_insert_part

Inserts a new part into a shape.

Interface

LONG SE_shape_insert_part
(const SE_SHAPE src_shape,
LONG part_num,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object containing the new part.
part_num | The position in the target shape to insert the new parts.
tgt_shape | A handle to an active shape object.

Description

Inserts a new part into a supplied target shape. The new part is supplied as a shape, and is inserted into the position defined by part_num in the target shape. Any existing parts in the target shape are shifted up to accommodate the newly inserted part. If the target shape contains one or more parts and the source and target shapes are not of the same type, the operation fails. If the source shape has multiple parts, all parts of the source shape are added in the same order to the target shape.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_PARTNUM
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_interpolate_by_measures

Returns a shape that is densified by a supplied measure value.

Interface

LONG SE_shape_interpolate_by_measures
(SE_SHAPE src_shape,
LFLOAT delta,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object.
delta | The measure distance with which to densify the shape.
tgt_shape | A handle to an active shape object.

Description

This function densifies a shape by a distance as defined by measure coordinates. The source shape must have lines or areas and measures.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_SHAPE
SE_INVALID_PARAM_VALUE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• Ignores any CAD data in the source shape, and removes any CAD data in the target shape.


SE_shape_intersect

Returns the intersection (logical AND of space) of two shapes.

Interface

LONG SE_shape_intersect
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
LONG *num_shapes,
SE_SHAPE **new_shapes);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
num_shapes | The number of shapes returned.
new_shapes | The address of a pointer to a shape object, which is returned as an array of active shape object handles containing the results.

Description

Returns the intersection (logical AND of space) of primary_shape and secondary_shape, returning the resulting intersection as an array of handles to shape objects in new_shapes. The resulting clipped pieces are returned as a list of zero, one, or more shapes. This function allocates memory for the array of shape objects, and it should be deallocated by using the SE_shape_free_array function.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_ENTITY_TYPE
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• This function works in 2-D space. Resulting shapes won’t have z- or m-values.

• Ignores any CAD data.


SE_shape_is_3D

Returns TRUE if the supplied shape has an elevation array.

Interface

BOOL SE_shape_is_3D (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape has a z-array. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_containing

Returns TRUE if the primary shape wholly contains the secondary shape.

Interface

BOOL SE_shape_is_containing
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the primary_shape wholly contains the secondary_shape. The opposite of this function is SE_shape_is_within . All other conditions, including an invalid SE_SHAPE object, returns FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_crossing

Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.

Interface

BOOL SE_shape_is_crossing
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes. All other conditions, including an invalid SE_SHAPE object, return FALSE. See Chapter 2, ‘ArcSDE geometric model’, for more information and examples.

Notes

• Ignores any CAD data.


SE_shape_is_disjoint

Returns TRUE if the intersection of two shapes is empty.

Interface

BOOL SE_shape_is_disjoint
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the intersection of primary_shape and secondary_shape is empty. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_equal

Returns TRUE if the two supplied shapes are identical.

Interface

BOOL SE_shape_is_equal
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the two supplied shapes (primary_shape and secondary_shape) are identical. All other conditions, including an invalid SE_SHAPE object, return FALSE. Two shapes are equal if they have

• The same coordinate reference

• The same type

• The same number of points

• The identical points in the same order (x, y, z, and measures)

Notes

• Ignores any CAD data.


SE_shape_is_line

Returns TRUE if the supplied shape is type line.

Interface

BOOL SE_shape_is_line (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape is type line (spaghetti). All other conditions, including an invalid SE_SHAPE object, return FALSE.


SE_shape_is_measured

Returns TRUE if the supplied shape has a measure array.

Interface

BOOL SE_shape_is_measured (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape has a measure array. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_multipart

Returns TRUE if the supplied shape has multiple parts.

Interface

BOOL SE_shape_is_multipart (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape has multiple parts. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_nil

Returns TRUE if the supplied shape is nil (empty).

Interface

BOOL SE_shape_is_nil (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape is nil (empty). All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_overlapping

Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.

Interface

BOOL SE_shape_is_overlapping
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the intersection of two shapes, primary_shape and secondary_shape, results in an object of the same geometric dimension. Any other result, including an invalid shape object returns FALSE. See ‘ArcSDE geometric model’ for more information and examples.

Notes

• Ignores any CAD data.


SE_shape_is_point

Returns TRUE if the supplied shape is type point.

Interface

BOOL SE_shape_is_point (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape is type point. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_polygon

Returns TRUE if the supplied shape is type polygon.

Interface

BOOL SE_shape_is_polygon (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape is type polygon. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_simple_line

Returns TRUE if the supplied shape is type simple line.

Interface

BOOL SE_shape_is_simple_line (const SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns TRUE if the supplied shape is composed of simple lines (linestrings). All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_is_touching

Returns TRUE if the two supplied shapes share a common boundary.

Interface

BOOL SE_shape_is_touching
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if the two supplied shapes, primary_shape and secondary_shape, share a common boundary. All other conditions, including an invalid SE_SHAPE object, return FALSE. The two shapes cannot have any interior/interior intersections. See ‘Computing spatial relationships’ earlier in the chapter for more information.

Notes

• Ignores any CAD data.


SE_shape_is_within

Returns TRUE if primary_shape is wholly contained within secondary_shape.

Interface

BOOL SE_shape_is_within
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.

Description

Returns TRUE if primary_shape is completely contained within secondary_shape. All other conditions, including an invalid SE_SHAPE object, return FALSE.

Notes

• Ignores any CAD data.


SE_shape_make_nil

Returns a nil shape.

Interface

LONG SE_shape_make_nil (SE_SHAPE shape);

Parameters

shape

A handle to an active shape object.

Description

Returns a nil shape.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INVALID_SHAPE_OBJECT
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_move_point

Moves all occurrences of a single point to a new location.

Usage syntax

LONG SE_shape_move_point
(SE_SHAPE shape,
SE_SDEPOINT *from_pt,
SE_SDEPOINT *to_pt);

Parameters

shape | A handle to an active shape object.
from_pt | Pointer to an SE_SDEPOINT structure that contains the coordinate values of the point to move.
to_pt | Pointer to an SE_SDEPOINT structure that contains the new coordinate values.

Description

SE_shape_move_point changes all occurrences of the user-supplied point values to new coordinate values. This function verifies that the new point location does not cause the shape to violate any entity integrity rules.

The z- and m-values of the SE_SDEPOINT structures are ignored unless the input shape has a z-array and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PT_NO_EXIST
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function fails, the original shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_overlay

Overlays two shapes.

Interface

LONG SE_shape_overlay
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
LONG *num_common_shapes,
SE_SHAPE primary_remainder,
SE_SHAPE **common_shapes,
SE_SHAPE secondary_remainder);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
num_common_shapes | The number of shapes common to both shapes, returned in common_shapes.
primary_remainder | A handle to an active shape object, returned as the portions of the primary shape that don’t intersect the secondary shape.
common_shapes | A list of shapes that intersect both primary shape and secondary shape.
secondary_remainder | A handle to an active shape object, returned as the portions of the secondary shape that don’t intersect the primary shape.

Description

Overlays two shapes, and returns the resulting overlay as three ‘pieces’. Shapes that are common to both the primary and secondary shapes are returned as an array of shapes, each one of a different entity type (e.g., point, line, etc.). The pieces of the primary and secondary shapes that are not common to both are returned as two shapes: primary_remainder and secondary_remainder. SE_shape_overlay takes all shape types as input.

Returns

SE_SUCCESS
SE_FAILURE
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• This function works in 2-D space. Resulting shapes won’t have z- or m-values.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.

• This function is not implemented yet for line-line and line-area combinations. This also affects SE_shape_difference, SE_shape_intersect , SE_shape_symmetrical_difference , and SE_shape_union .


SE_shape_replace_part

Replaces a specified part of a shape.

Interface

LONG SE_shape_replace_part
(const SE_SHAPE src_shape,
LONG part_num,
SE_SHAPE tgt_shape);

Parameters

src_shape | A handle to an active shape object containing the new parts to use.
part_num | The number of the part to replace in the target shape.
tgt_shape | A handle to an active shape object, returned as the target shape after replacing the specified part with the source shape.

Description

Replaces a specified part of the target shape with a new part. The new part is supplied in the form of the source shape, and replaces the part in the target shape defined by part_num. The part identified by part_num must exist in the target shape. If the target shape has two or more parts and the source and target shapes are not of the same type, the operation fails. If the source shape has multiple parts, the parts of the source shape replace the part of the target beginning with the part number specified in part_num. The specified part is deleted, and the parts of the source shape are inserted into the target shape. Target shape parts that fall after part_num are shifted for the new parts. For example, if the source shape and target shape both have three parts and the target part number is 2, the target shape has five parts (original part 1, parts 2 through 4 which were the parts from the source shape, and part 5 which was the old part 2 of the target shape).

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_PARTNUM
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_replace_path_with_arc

Replaces a line or path with a circular arc represented as a series of vectors.

Usage syntax

LONG SE_shape_replace_path_with_arc
(SE_SHAPE shape,
SE_SDEPOINT *firstpt,
SE_SDEPOINT *midpt,
SE_SDEPOINT *lastpt,
LFLOAT radius,
LONG arc_segs);

Parameters

shape | A handle to an active shape object to change.
firstpt | Address of an SDEPOINT structure containing the coordinate values of the line’s starting point.
midpt | Address of an SDEPOINT structure containing the coordinate values of any point along the path between firstpt and lastpt. Set this value to NULL if specifying a 2-point line.
lastpt | Address of an SDEPOINT structure containing the coordinate values of the last point in the line.
radius | The radius of the arc from the center to the first and last points on the path.
arc_segs | The number of segments in a full circle. May be positive or negative to designate a clockwise or counterclockwise arc.

Description

SE_shape_replace_path_with_arc replaces one or more line segments of a shape with a circular arc whose radius you specify. The arc begins at the firstpt of the line or path to be replaced and ends at the lastpt. The arc_segs parameter specifies the number of line segments in a full circle. An arc_segs value of 360 makes lines a ‘degree’ long.

The center of the circle made by the radius can be on either side of the line you’re replacing (see below). The two sides of the line are called left and right, determined by the direction of the line. For a line defined as (firstpt, lastpt), right and left are defined from firstpt looking toward lastpt.

If the radius value is positive, the center point of the circle is to the left of a line drawn from the firstpt to the lastpt (circle A); if negative, the center point is to the right of the line (circle B). The absolute value of the radius must be more than one-half the distance between firstpt and lastpt.

Once you’ve chosen a radius, you still have two arcs to choose from. Imagine a line originating at the center of the circle and sweeping from firstpt to the lastpt. There are actually two arcs. One travels clockwise from firstpt to lastpt, while the other travels counterclockwise. A positive arc_segs value rotates counterclockwise from the firstpt. A negative arc_segs value travels clockwise from the firstpt.

The z- and m-values of the SDEPOINT structures are ignored unless the input shape has a z-array and/or a measures array.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_COORD_OUT_OF_BOUNDS
SE_INVALID_RADIUS
SE_FAILURE
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_PATH_NOT_FOUND
SE_READ_ONLY_SHAPE
SE_SHAPE_INTEGRITY_ERROR

Notes

• If this function does not return successfully, the source shape is unchanged.

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_set_anno

Sets the annotation of a shape.

Interface

LONG SE_shape_set_anno
(SE_SHAPE shape,
const SE_ANNO anno);

Parameters

shape | A handle to an active shape object.
anno | A pointer to an active annotation object.

Description

Sets the annotation of a shape. Use the SE_anno_* functions to work with an SE_ANNO object. If the SE_ANNO object is NULL, then the shape’s current annotation is removed.

Returns

SE_SUCCESS
SE_INVALID_ANNO_OBJECT
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_READ_ONLY_SHAPE
SE_SDE_NOT_STARTED

Notes

• If you pass a shape returned from SE_stable_search or SE_stable_get_shape to ‘tgt_shape’, the SE_READ_ONLY_SHAPE error is returned. See ‘Shape table functions’ for more information.


SE_shape_set_coordref

Sets the coordinate system of a shape.

Interface

LONG SE_shape_set_coordref
(SE_SHAPE shape,
SE_COORDREF coordref);

Parameters

shape | A handle to an active shape object.
coordref | A pointer to a coordinate reference structure that defines the coordinate system.

Description

Sets the coordinate system reference of a shape without altering the shape itself.

Returns

SE_SUCCESS
SE_CAD_EXISTS
SE_INVALID_COORDREF_OBJECT
SE_INVALID_SHAPE_OBJECT

Notes

• If the source shape has a CAD entity, the SE_CAD_EXISTS error is returned.


SE_shape_symmetrical_difference

Returns the symmetrical difference (logical XOR of space) of two shapes.

Interface

LONG SE_shape_symmetrical_difference
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
SE_SHAPE tgt_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
tgt_shape | A handle to a shape object handle.

Description

Returns the symmetrical difference (logical XOR of space) of two shapes as tgt_shape.

Returns

SE_SUCCESS
SE_COORD_OUT_OF_BOUNDS
SE_FAILURE
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_ENTITY_TYPE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM
SE_SHAPE_INTEGRITY_ERROR

Notes

• This function works in 2-D space. Resulting shapes won’t have z- or m-values.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.

• Lines which self-intersect may result in anomalous results. Use with line-line combinations that don’t self-intersect.


SE_shape_union

Returns the union (logical OR of space) of two shapes.

Interface

LONG SE_shape_union
(const SE_SHAPE primary_shape,
const SE_SHAPE secondary_shape,
SE_SHAPE result_shape);

Parameters

primary_shape | A handle to an active shape object.
secondary_shape | A handle to an active shape object.
result_shape | A pointer to a shape object handle that contains the result.

Description

Returns the union (logical OR of space) of primary_shape and secondary_shape, returning the resulting union as a handle to a shape object in result_shape.

Returns

SE_SUCCESS
SE_INCOMPATIBLE_COORDREFS
SE_INCOMPATIBLE_SHAPES
SE_INVALID_SHAPE
SE_INVALID_SHAPE_OBJECT
SE_OUT_OF_CLMEM

Notes

• This function works in 2-D space. Resulting shapes won’t have z- or m-values.

• Ignores any CAD data in the source shape and removes any CAD data in the target shape.

• This function is not implemented yet for a combination of two simple line type shapes.


SE_spatialref_alter

Changes a spatial reference entry.

Usage syntax

LONG SE_spatialref_alter
(SE_CONNECTION connection,
SE_SPATIALREFINFO spatialref);

Parameters

connection | A connection.
spatialref | A pointer to a modified spatial reference object.

Description

Changes a spatial reference entry.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SPATIALREFINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SPATIALREF_IN_USE
SE_SPATIALREF_NOEXIST


SE_spatialref_create

Creates a spatial reference entry.

Usage syntax

LONG SE_spatialref_create
(SE_CONNECTION connection,
SE_SPATIALREFINFO spatialref);

Parameters

connection | A connection.
spatialref | A pointer to a spatial reference object.

Description

Creates a spatial reference entry in the spatial_references table. The srid (spatial reference ID) is assigned when the entry is added to the spatial_references table. If an exact duplicate of the spatial reference exists, the srid for the existing entry is returned, a new entry isn’t inserted, and the warning SE_SPATIALREF_EXISTS is returned.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SPATIALREFINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SPATIALREF_EXISTS


SE_spatialref_delete

Deletes a spatial reference.

Usage syntax

LONG SE_spatialref_delete
(SE_CONNECTION connection,
LONG srid);

Parameters

connection | A connection.
srid | A spatial reference ID.

Description

Deletes a spatial reference entry from the spatial_references table. If the entry is referenced by any layers, SE_SPATIALREF_IN_USE is returned and the entry isn’t deleted.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SPATIALREFINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SPATIALREF_NOEXIST


SE_spatialref_free_info_list

Frees a list of spatial reference objects.

Usage syntax

void SE_spatialref_free_info_list
(LONG count,
SE_SPATIALREFINFO *sref_list_addr);

Parameters

count | The number of entries in the list of spatial references.
sref_list_addr | A pointer to the list of spatial references.

Description

Frees a list of spatial reference objects.


SE_spatialref_get_info

Returns a pointer to a spatial reference object.

Usage syntax

LONG SE_spatialref_get_info
(SE_CONNECTION connection,
LONG srid,
SE_SPATIALREFINFO spatialref);

Parameters

connection | A connection.
srid | A spatial reference ID.
spatialref | A pointer to the spatial reference.

Description

Returns a pointer to a spatial reference object.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SPATIALREFINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_SPATIALREF_NOEXIST


SE_spatialref_get_info_list

Returns a pointer to a list of the spatial reference entries.

Usage syntax

LONG SE_spatialref_get_info_list
(SE_CONNECTION connection,
SE_SPATIALREFINFO **sref_list_addr,
LONG *count_addr);

Parameters

connection | A connection.
sref_list_addr | A pointer to the array of spatial references.
count_addr | The number of spatial references.

Description

Returns a pointer to an array of the currently defined spatial reference entries. Use SE_spatialref_free_info_list to free the memory allocated by this function.

Returns


SE_spatialrefinfo_create

Creates a spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_create
(SE_CONNECTION connection,
SE_SPATIALREFINFO *spatialref);

Parameters

connection | A connection.
spatialref | A pointer to a spatial reference object.

Description

Creates a spatial reference object.

Returns


SE_spatialrefinfo_duplicate

Makes a copy of a spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_duplicate
(const SE_SPATIALREFINFO src_sref,
SE_ SPATIALREFINFO tgt_sref);

Parameters

src_sref | A pointer to the source spatial reference object.
tgt_sref | A pointer to the target spatial reference object.

Description

Makes a copy of a spatial reference object.

Returns


SE_spatialrefinfo_free

Frees an allocated spatial reference object.

Usage syntax

void SE_spatialrefinfo_free (SE_SPATIALREFINFO spatialref);

Parameters

spatialref

A pointer to the spatial reference.

Description

Frees an allocated spatial reference object.


SE_spatialrefinfo_get_auth_name

Returns the authority name from the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_get_auth_name
(const SE_SPATIALREFINFO spatialref,
CHAR *auth_name);

Parameters

spatialref | A pointer to the spatial reference.
auth_name | A pointer to the authority name.

Description

Returns the authority name for a spatial reference object. The authority name property is the name of the standards authority for which the spatial reference is valid. Declare auth_name as SE_MAX_SPATIALREF_AUTHNAME_LEN. The authority name is defined for informational purposes only.

Returns


SE_spatialrefinfo_get_auth_srid

Returns the authority ID from the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_get_auth_srid
(const SE_SPATIALREFINFO spatialref,
LONG *auth_srid);

Parameters

spatialref | A pointer to the spatial reference.
auth_srid | A pointer to the authority ID.

Description

Returns the authority ID for a spatial reference object. The authority ID property is the ID value of the standards authority for which the spatial reference is valid. The authority ID is defined for informational purposes only.

Returns


SE_spatialrefinfo_get_coordref

Returns a pointer to the coordinate reference of the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_get_coordref
(const SE_SPATIALREFINFO spatialref,
SE_COORDREF coordref);

Parameters

spatialref | A pointer to the spatial reference.
coordref | A pointer to the coordinate reference object.

Description

Returns a pointer to the coordinate reference of the supplied spatial reference object.

Returns


SE_spatialrefinfo_get_description

Returns a description of the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_get_description
(SE_SPATIALREFINFO spatialref,
CHAR *description);

Parameters

spatialref | A pointer to the spatial reference.
description | A pointer to a character string representation of the spatial reference.

Description

Returns the description of the supplied spatial reference object. Use SE_MAX_DESCRIPTION_LEN when declaring the description.

Returns


SE_spatialrefinfo_get_srid

Returns the ID for the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_get_srid
(SE_SPATIALREFINFO spatialref,
LONG *srid);

Parameters

spatialref | A pointer to the spatial reference.
srid | The spatial reference ID.

Description

Returns the ID for the supplied spatial reference object.

Returns


SE_spatialrefinfo_set_auth_name

Sets the name of the authority for a spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_set_auth_name
(SE_SPATIALREFINFO spatialref,
const CHAR *auth_name);

Parameters

spatialref | A pointer to the spatial reference.
auth_name | A pointer to a character string authority name of the spatial reference.

Description

Sets the name of the authority for a spatial reference object. Declare auth_name with SE_MAX_SPATIALREF_AUTHNAME_LEN. The auth_name property is defined for informational purposes only.

Returns


SE_spatialrefinfo_set_auth_srid

Sets the authority ID of a spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_set_auth_srid
(SE_SPATIALREFINFO spatialref,
LONG auth_srid);

Parameters

spatialref | A pointer to the spatial reference.
auth_srid | The authority ID.

Description

Sets the authority ID for a spatial reference object.

Returns


SE_spatialrefinfo_set_coordref

Sets the coordinate reference of the supplied spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_set_coordref
(SE_SPATIALREFINFO spatialref,
SE_COORDREF coordref);

Parameters

spatialref | A pointer to the spatial reference.
coordref | A pointer to the coordinate reference.

Description

Sets the coordinate reference for the spatial reference object.

Returns


SE_spatialrefinfo_set_description

Sets the description for a spatial reference object.

Usage syntax

LONG SE_spatialrefinfo_set_description
(SE_SPATIALREFINFO spatialref,
const CHAR *description);

Parameters

spatialref | A pointer to the spatial reference.
description | A pointer to a character string description of the spatial reference.

Description

Sets the description for a spatial reference object. Use SE_MAX_DESCRIPTION_LEN when declaring the description parameter.

Returns


SE_sql_construct_alloc

Allocates an SE_SQL_CONSTRUCT structure.

Usage syntax

LONG SE_sql_construct_alloc
(LONG num_tables,
SE_SQL_CONSTRUCT **constructor);

Parameters

num_tables | The number of tables in the join.
constructor | A pointer to the address of an SE_SQL_CONSTRUCT structure.

Description

SE_sql_construct_alloc allocates an SE_SQL_CONSTRUCT establishing the SQL query inside the ArcSDE server. The num_tables is passed to the SE_SQL_CONSTRUCT structure. If greater than zero, an array of tables is allocated.

Returns


SE_sql_construct_free

Frees an SE_SQL_CONSTRUCT structure.

Usage syntax

void SE_sql_construct_free (SE_SQL_CONSTRUCT *constructor);

Parameters

constructor

A pointer to an SE_SQL_CONSTRUCT structure.

Description

This function frees memory for an SE_SQL_CONSTRUCT structure allocated by SE_sql_construct_alloc .


SE_stable_add_shape

Adds a shape to an stable.

Usage syntax

LONG SE_stable_add_shape
(SE_STABLE stable,
SE_SHAPE shape,
LONG user_id,
const void *associated);

Parameters

stable | The handle of the stable to add the shape to.
shape | The shape to copy into the stable.
user_id | A user-defined ID for the shape.
associated | Optional associated data pointer.

Description

SE_stable_add_shape adds a copy of a shape to an existing shape table. You can also associate additional data with the shape. When you do, only a pointer to the data is stored in the stable, not the data itself. If the shape has CAD or annotation associated with it, they are copied to the shape table.

Returns

SE_SUCCESS
SE_INVALID_ENVELOPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE
SE_OUT_OF_CLMEM

Notes

• This function executes on the client only.

• If the envelope of the shape extends beyond the extent of the stable as established by SE_stable_create , an SE_INVALID_ENVELOPE error is returned, and the shape is not added to the stable.

• If the fid of a shape is 0, an SE_INVALID_SHAPE error is returned, and the shape is not added to the stable.

• If the pointer to the shape is evaluated as NULL, an SE_INVALID_POINTER error is returned, and the shape is not added to the stable.

• If a new position in the stable cannot be allocated for the supplied shape, an SE_OUT_OF_CLMEM error is returned, and the shape is not added to the stable. This occurs when the available virtual memory is exhausted on the client machine.


SE_stable_create

Creates an empty stable.

Usage syntax

LONG SE_stable_create
(const SE_ENVELOPE *extent,
SE_COORDREF coordref,
SE_STABLE *stable);

Parameters

extent | The maximum extent of the shapes in the stable. Any shape that is not fully contained within the boundary is rejected.
coordref | A pointer to the coordinate system structure for the shape table.
stable | Variable to receive the handle to the newly created stable.

Description

SE_stable_create creates an empty shape table, ready to receive shapes using SE_stable_add_shape .

Returns

SE_SUCCESS
SE_INVALID_ENVELOPE
SE_INVALID_POINTER
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• This function executes on the client only.

• An SE_INVALID_ENVELOPE error is returned if the minimum x- or y-extents are greater than or equal to the maximum x- or y-extents.

• An SE_INVALID_POINTER error is returned if either the envelope or stable handle are passed as null pointers to the function.

• An SE_OUT_OF_CLMEM error is returned if insufficient memory is available to allocate space for the new stable.

• An SE_SDE_NOT_STARTED error is returned if SE_connection_create has not been executed successfully.


SE_stable_delete_shape

Removes a shape from an stable.

Usage syntax

LONG SE_stable_delete_shape
(SE_STABLE stable,
LONG user_id);

Parameters

stable | The handle of the stable from which to delete the shape.
user_id | The user-defined ID of the shape to delete.

Description

SE_stable_delete_shape removes a shape from an stable. You can specify the shape by its fid or by the current search with SE_DELETE_CURRENT. When a search is in progress, and SE_DELETE_CURRENT is passed as the fid, the current search shape is deleted. More than one shape with the same fid may exist in the stable; only the first shape found is deleted.

Returns

SE_SUCCESS
SE_ROW_NOEXIST
SE_INVALID_POINTER
SE_OUT_OF_CONTEXT

Notes

• This function executes on the client only.

• An SE_ROW_NOEXIST error is returned if the supplied fid is less than 0, or the specified fid is not found in the stable.

• An SE_INVALID_POINTER error is returned if the stable handle is null or does not reference a valid stable.

• An SE_OUT_OF_CONTEXT error is returned if the fid is set to SE_DELETE_CURRENT, and no current search is associated with the specified stable.


SE_stable_free

Frees all resources associated with an stable.

Usage syntax

void SE_stable_free (SE_STABLE stable);

Parameters

stable The handle of the stable to destroy.

Description

SE_stable_free destroys an existing stable, reclaiming any resources it is using.

Notes

• This function executes on the client only.


SE_stable_get_extent

Returns the defined extent of the stable.

Usage syntax

LONG SE_stable_get_extent
(SE_STABLE stable,
SE_ENVELOPE *extent);

Parameters

stable | The handle of the stable to query.
extent | The spatial extent of the stable.

Description

SE_stable_get_extent returns the defined extent of the stable, which may not be the actual extent of shapes added to the table. The defined extent is established when the table is created with SE_stable_create .

Returns

SE_SUCCESS
SE_INVALID_POINTER

Notes

• This function executes on the client only.

• An SE_INVALID_POINTER error is returned if the stable handle or envelope pointer is NULL or if the stable handle does not reference a valid stable.


SE_stable_get_num_shapes

Returns the number of shapes in an stable.

Usage syntax

LONG SE_stable_get_num_shapes (SE_STABLE stable);

Parameters

stable

The handle of the stable whose shape count is to be returned.

Description

SE_stable_get_num_shapes returns the number of shapes present in the specified stable. A positive return indicates the number of shapes in the stable.

Returns

SE_INVALID_POINTER

Notes

• This function executes on the client only.

• An SE_INVALID_POINTER error is returned if the stable handle is evaluated as NULL or as an invalid stable.


SE_stable_get_shape

Returns a shape from an stable by fid.

Usage syntax

LONG SE_stable_get_shape
(SE_STABLE stable,
LONG user_id,
SE_SHAPE *shape_ptr,
const void **associatedptr);

Parameters

stable | The handle of the stable to search.
user_id | The user-defined ID of the shape to search for.
shape_ptr | A pointer to the location of the pointer to the found shape.
associatedptr | A pointer to the location of the pointer to the shape’s associated data.

Description

SE_stable_get_shape finds a shape in the stable by fid. If there is more than one shape in the stable with the same fid, only the first shape found is returned. The pointer to the associated data is NULL if no associated data was inserted into the stable.

Returns

SE_SUCCESS
SE_ROW_NOEXIST
SE_INVALID_POINTER

Notes

• This function executes on the client only.

• An SE_ROW_NOEXIST error is returned if the fid value is less than 0.

• An SE_INVALID_POINTER error is returned if the stable handle or pointer to the shape is evaluated as NULL or if the stable handle references an invalid stable.

• The returned shape is read-only and can’t be used for certain arguments of thirty-four shape functions. See 'Shape table functions' for a complete list.


SE_stable_search

Searches an stable using a set of spatial filters.

Usage syntax

LONG SE_stable_search
(SE_STABLE stable,
SHORT num_filters,
const SE_FILTER *filters,
BOOL (*func)
(void *argument,
SE_SHAPE shape,
const LONG user_id
const void *associated,
SHORT num_filters,
ULONG *search_masks),
void *argument);

Parameters

stable | The stable handle.
num_filters | The number of filters to apply to the search.
filters | An array of pointers to SE_FILTER structures.
func | A user-defined function called for each shape that satisfies the search.

User function parameters:

argument The user-supplied argument.

shape A pointer to a shape that satisfies the search.

user_id The user-defined ID of the shape.

associated A pointer to additional data associated with the shape.

num_filters The number of filters satisfied by the search.

search_masks The search mask for each filter’s comparison against the found shape.

argument Argument to be passed to the user-supplied function.

Description

SE_stable_search searches an stable with a set of spatial filters. The spatial filters determine the type and order of search operations to apply to the shape table. Search constraints are supplied to the SE_stable_search function as an array of pointers to SE_FILTER structures.

For each shape that passes all the tests, a pointer is passed to a user-supplied function along with its associated data pointer, a user-supplied argument, and a vector of search masks. The search continues until all shapes meeting the criteria are found or the user function returns FALSE. If you specify no filters, all shapes in the stable are returned.

Structure definitions

typedef struct {

CHAR table[SE_QUALIFIED_TABLE_NAME]; /* The spatial table name */

CHAR column[SE_MAX_COLUMN_LEN]; /* The spatial column name */

LONG filter_type; /* The type of spatial filter */

union {

SE_SHAPE shape; /* A shape object */

struct {

LONG id; /* An fid for a filter feature */

CHAR table[SE_QUALIFIED_TABLE_NAME];/* The feature's spatial table */

} id;

} filter;

LONG method; /* The search method to satisfy */

CHAR *cbm_source; /* Set only if the method is SM_CBM */

UCHAR *cbm_object_code; /* Internal system use only */

BOOL truth; /* TRUE to pass method, FALSE if it must NOT pass */

} SE_FILTER;

filter_type:

SE_SHAPE_FILTER

SE_ID_FILTER

Search method:

SM_ENVP /* Envelopes overlap */

SM_ENVP_BY_GRID /* Envelopes overlap */

SM_CP /* Common point */

SM_LCROSS /* Line cross */

SM_COMMON /* Common edge/line */

SM_CP_OR_LCROSS /* Common point or line cross */

SM_LCROSS_OR_CP /* Common point or line cross */

SM_ET_OR_AI /* Edge touch or area intersect */

SM_AI_OR_ET /* Edge touch or area intersect */

SM_AI /* Area intersect */

SM_AI_NO_ET /* Area intersect and no edge touch */

SM_PC /* Primary contained in secondary */

SM_SC /* Secondary contained in primary */

SM_PC_NO_ET /* Primary contained and no edge touch */

SM_SC_NO_ET /* Secondary contained and no edge touch */

SM_PIP /* First point in primary in sec */

SM_CIP /* Secondary centroid inside prim */

SM_IDENTICAL /* Identical */

Returns

SE_SUCCESS
SE_INVALID_ENVELOPE
SE_INVALID_FILTER_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SEARCH_METHOD
SE_INVALID_SHAPE

Notes

• The returned shapes are read-only and can’t be used for certain arguments of thirty-four shape functions. See 'Shape table functions' for the complete list.


SE_stable_set_concurrency

Establishes concurrency control for threaded client applications.

Usage syntax

LONG SE_stable_set_concurrency
(SE_STABLE stable,
LONG policy);

Parameters

stable | The stable handle.
policy | The concurrency policy.

Description

SE_stable_set_concurrency sets the concurrency policy for the specified shape table. The concurrency policy affects how calls to the API for this shape table behave in a multithreaded environment. The policies for concurrency are:

SE_UNPROTECTED_POLICY No concurrency control is provided. Calls by multiple threads on the same stable can cause unexpected errors.

SE_ONE_THREAD_POLICY The stable is now ‘owned’ by the calling thread, and any other thread trying to use it immediately returns with an error code of SE_STABLE_LOCKED. The owning thread must yield ownership by calling this function with an argument other than SE_ONE_THREAD_POLICY before any other thread can use this stable. If the owning thread terminates, then ownership is released automatically.

SE_TRYLOCK_POLICY Whenever an stable connection is called, the entering thread tries to lock. If it succeeds, it proceeds. If it fails, it immediately returns with an error code of SE_STABLE_IN_USE.

SE_LOCK_POLICY Similar to SE_TRYLOCK_POLICY, but instead of failing if the stable is currently in use, the call hangs until the thread that has the stable currently locked returns from its ArcSDE function call. If multiple threads are waiting on the shape table, it is unknown which thread will get the lock next.

Returns

SE_SUCCESS
SE_CONNECTION_LOCKED
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_OUT_OF_MUTEXES
SE_SDE_NOT_STARTED

Notes

• The environment set by SE_stable_set_concurrency applies to subsequent calls to SE_stable_set_concurrency . For safety in a multithreaded environment, call SE_stable_set_concurrency on an stable handle before passing it to any thread other than the one that created it.


SE_stable_size

Returns the size of an stable in bytes.

Usage syntax

LONG SE_stable_size (SE_STABLE stable);

Parameters

stable

The handle of the stable whose size is to be returned.

Description

SE_stable_size returns the number of bytes allocated for the specified stable. A positive return indicates the size of the stable in bytes.

Returns

SE_INVALID_POINTER

Notes

• An SE_INVALID_POINTER error is returned if the stable handle is evaluated as NULL or as an invalid stable.


SE_state_close

Closes a state.

Usage syntax

LONG SE_state_close
(SE_CONNECTION connection,
LONG state_id);

Parameters

connection | The connection handle.
state_id | The state ID.

Description

SE_state_close closes the specified state. Only the owner or the ArcSDE DBA may close a state.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_STATE_ID
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_STATE_HAS_CHILDREN
SE_STATE_INUSE


SE_state_compress_tree

Compresses the instance's state tree.

Usage syntax

LONG SE_state_compress_tree (SE_CONNECTION connection);

Parameters

connection

The connection handle.

Description

SE_state_compress_tree compresses an instance’s state tree by removing all states that aren’t referenced by a version. Branches not referenced by a version are removed and non-branching sequences between versions are trimmed.

Before compression, this state tree has two versions, S2 and S7.

After compression, only the two versions are left.

States S1, S3 and S5 were removed because they aren’t referenced by versions. States S4 and S6 are trimmed because they are are on unbranching sequences between versions.

Only the owner or the ArcSDE DBA may trim states.

Returns

SE_SUCCESS
SE_FAILURE
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_NOT_TABLE_OWNER
SE_SDE_NOT_STARTED
SE_STATE_INUSE
SE_STATE_TREE_INUSE
SE_TABLE_NOEXIST
SE_TOO_MANY_STATES


SE_state_create

Creates a child state from an existing state.

Usage syntax

LONG SE_state_create
(SE_CONNECTION connection,
const SE_STATEINFO state,
LONG parent_state_id,
SE_STATEINFO result_state);

Parameters

connection | The connection handle.
state | A pointer to the state to create.
parent_state_id | The state ID of the parent.
result_state | A pointer to the actual resulting state.

Description

SE_state_create creates a child state from an existing state. The parent state must be closed and owned by the current user or public, or the current user is the ArcSDE DBA.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_STATE_ID
SE_INVALID_STATEINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_NOT_TABLE_OWNER
SE_OUT_OF_SVMEM
SE_PARENT_NOT_CLOSED
SE_SDE_NOT_STARTED
SE_STATE_NOEXIST
SE_TABLE_NOEXIST


SE_state_delete

Deletes a state.

Usage syntax

LONG SE_state_delete
(SE_CONNECTION connection,
LONG state_id);

Parameters

connection | The connection handle.
state_id | The state ID.

Description

SE_state_delete deletes a state. The state must be a leaf node and can't be a parent to another state. The current user must be the owner of the state or the ArcSDE DBA. All entries in the instance’s adds and deletes tables for the state will be deleted.

Returns


SE_state_delete_range

Deletes a range of states.

Usage syntax

LONG SE_state_delete_range
(SE_CONNECTION connection,

LONG low_state_id,

LONG high_state_id);

Parameters

connection | The connection handle.
low_state_id | The ID of the first state to delete.
high_state_id | The ID of the last state to delete.

Description

SE_state_delete_range deletes a connected range of states. The high_state_id must be a leaf node and can't be a parent to another state. The low_state, high_state and all the states in the state tree that connects these two states are deleted. All the states that are to be deleted should not have more than one child state each and should not be associated with a version. The current user must be the owner of the states or the ArcSDE DBA. All entries in the instance’s adds and deletes tables for all the states will be deleted.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_STATE_ID
SE_NO_PERMISSIONS
SE_NET_FAILURE
SE_NO_COMMON_LINEAGE
SE_STATE_INUSE
SE_STATE_NOEXIST
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_state_free_info_list

Releases memory allocated for a list of state structures.

Usage syntax

void SE_state_free_info_list
(LONG count,
SE_STATEINFO *state_list);

Parameters

count | The number of states in the list.
state_list | Address of an SE_STATEINFO pointer set to a dynamically allocated space which contains an array of SE_STATEINFO structures.

Description

SE_state_free_info_list frees the memory allocated for the list of state structures returned by SE_state_get_info_list .


SE_state_free_lock

Releases a locked state.

Usage syntax

void SE_state_free_lock
(LONG SE_CONNECTION connection,
LONG state_id);

Parameters

connection | The connection handle.
state_id | The state ID.

Description

SE_state_free_lock frees a locked state. Only the owner or ArcSDE DBA can unlock a state.

Returns


SE_state_get_info

Retrieves information about a state by ID.

Usage syntax

LONG SE_state_get_info
(SE_CONNECTION connection,
LONG state_id,
SE_STATEINFO state);

Parameters

connection | The connection handle.
state_id | The ID of the state.
state | Pointer to a location to receive the SE_STATEINFO definition.

Description

SE_state_get_info obtains the definition of a specific state as identified by its ID. Use SE_BASE_STATE_ID in the state_id parameter to retrieve the root of the state tree. Information about the state is maintained in an SE_STATEINFO structure. The SE_STATEINFO object must be a valid object created by SE_stateinfo_create .

Returns


SE_state_get_info_list

Retrieves an array of SE_STATEINFO structures for all accessible states.

Usage syntax

LONG SE_state_get_info_list
(SE_CONNECTION connection,
const CHAR *where_clause,
SE_STATEINFO **state_list,
LONG *count);

Parameters

connection | The connection handle.
where_clause | Specifies values of desired state properties. If NULL, all states are returned.
state_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_STATEINFO structures.
count | The number of states in the SE_STATEINFO list.

Description

SE_state_get_info_list returns an array of SE_STATEINFO pointers that are defined. The total number of state structures is returned in the count parameter. The application must free the state_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The application must free the memory used by this call. See SE_state_free_info_list .


SE_state_lock

Locks a state.

Usage syntax

LONG SE_state_lock
(SE_CONNECTION connection,
LONG state_id);

Parameters

connection | The connection handle.
new_state_id | The new state ID.

Description

SE_state_lock locks a state. Only the owner or ArcSDE DBA can lock a state.

Returns


SE_state_merge

Merges two states to form a new state.

Usage syntax

LONG SE_state_merge
(SE_CONNECTION connection,
LONG parent_state_id,
LONG changes_state_id,
SE_STATEINFO merged_state);

Parameters

connection | The connection handle.
parent_state | A pointer to the parent state.
changes_state | A pointer to the state with changes.
merged_state | A pointer to the new merged state.

Description

SE_state_merge applies changes to a parent state to create a new merged state. The new state is the child of the parent state with the changes of the second state. Both input states must have the same parent state. When a row has been changed in both parent and second states, the row from the changes state is used. The parent and changes states must be open or owned by the current user unless the current user is the ArcSDE DBA.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_INVALID_STATEINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_NOT_TABLE_OWNER
SE_OUT_OF_SVMEM
SE_PARENT_NOT_CLOSED
SE_STATE_INUSE
SE_STATE_NOEXIST
SE_STATES_ARE_SAME
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_state_open

Opens a state.

Usage syntax

LONG SE_state_open
(SE_CONNECTION connection,
LONG state_id);

Parameters

connection | The connection handle.
state_id | The state ID.

Description

SE_state_open opens the specified state. The state cannot have any children. Only the owner or the ArcSDE DBA may open a state.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_STATE_ID
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_STATE_HAS_CHILDREN
SE_STATE_INUSE


SE_state_trim_tree

Trims the instance's state tree between two specified states.

Usage syntax

LONG SE_state_trim_tree
(SE_CONNECTION connection,
SE_STATEINFO low_state_id,
SE_STATEINFO high_state_id);

Parameters

connection | The connection handle.
low_state | A pointer to the low or older state.
high_state | A pointer to the high or newer state.

Description

SE_state_trim_tree compresses changes between two states so that all changes in the range belong to the more recent state. Both low and high states must be in a consistent state. Only the owner or the ArcSDE DBA may trim states.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_NO_PERMISSIONS
SE_NOT_TABLE_OWNER
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_STATE_INUSE
SE_STATE_TREE_INUSE
SE_STATES_ARE_SAME
SE_STATE_NOEXIST
SE_TABLE_NOEXIST
SE_TOO_MANY_STATES


SE_stateinfo_create

Creates a state definition.

Usage syntax

LONG SE_stateinfo_create (SE_STATEINFO *state);

Parameters

state

A pointer to a state structure.

Description

SE_stateinfo_create allocates and initializes an SE_STATEINFO structure which contains information about a state.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_STATEINFO object before using any other function that requires an SE_STATEINFO pointer.


SE_stateinfo_duplicate

Copies a state definition.

Usage syntax

LONG SE_stateinfo_duplicate
(const SE_STATEINFO src_state,
SE_STATEINFO tgt_state);

Parameters

src_state | The source SE_STATEINFO handle.
tgt_state | The target SE_STATEINFO handle.

Description

SE_stateinfo_duplicate creates a copy of an SE_STATEINFO structure.

Returns


SE_stateinfo_free

Releases memory allocated for an SE_STATEINFO structure.

Usage syntax

void SE_stateinfo_free (SE_STATEINFO state);

Parameters

state

The pointer to a state structure.

Description

SE_stateinfo_free frees the memory allocated for an SE_STATEINFO structure returned by SE_stateinfo_create .


SE_stateinfo_free_lineage

Frees a lineage array.

Usage syntax

void SE_stateinfo_free_lineage
(LONG count,
LONG *lineage);

Parameters

count | The number of entries in the lineage array.
lineage | The pointer to a lineage array.

Description

SE_stateinfo_free_lineage frees the memory allocated for a lineage string returned by SE_stateinfo_get_lineage.


SE_stateinfo_get_closing_time

Retrieves the closing date and time of a state.

Usage syntax

LONG SE_stateinfo_get_closing_time
(const SE_STATEINFO state,
struct tm *closing_time);

Parameters

state | The versioninfo handle.
closing_time | Closing date and time of the state.

Description

SE_stateinfo_get_closing_time retrieves the date and time in POSIX time_t format that a state was closed to further modifications. If the state is open, the time structure is returned with all fields set to zero. This function returns meaningful information for an SE_STATEINFO object that describes an existing state only.

Returns


SE_stateinfo_get_creation_time

Retrieves the creation date and time of a state.

Usage syntax

LONG SE_stateinfo_get_creation_time
(const SE_STATEINFO state,
struct tm *created_time);

Parameters

state | The stateinfo handle.
created_time | A creation date of the state.

Description

SE_stateinfo_get_creation_time retrieves the creation date and time in POSIX time_t format of a specific state. This function returns meaningful information for an SE_STATEINFO object that describes an existing state only.

Returns


SE_stateinfo_get_id

Retrieves the state ID.

Usage syntax

LONG SE_stateinfo_get_id
(const SE_STATEINFO state,
LONG *id);

Parameters

state | The stateinfo handle.
id | A pointer to the state ID.

Description

SE_stateinfo_get_id retrieves the ID of a state. This function returns meaningful information for an SE_STATEINFO object that describes an existing state only.

Returns


SE_stateinfo_get_lineage

Retrieves the lineage of a state as an array.

Usage syntax

LONG SE_stateinfo_get_lineage
(const SE_STATEINFO state,
LONG **lineage,
LONG *count);

Parameters

state | The state handle.
lineage | Address of a pointer in a dynamically allocated space that will contain an variable length array of state IDs.
count | The number of state IDs in the lineage.

Description

SE_stateinfo_get_lineage returns a variable length array of state IDs that comprise a state's lineage. The lineage includes an ordered list of the state IDs. The total number of IDs is returned in the count parameter. The application must free the lineage to reclaim the memory allocated by this function with SE_stateinfo_free _array.

Returns

SE_SUCCESS
SE_INVALID_POINTER
SE_INVALID_STATEINFO_OBJECT
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• The application must free the memory used by this call. See SE_state_free_lineage.


SE_stateinfo_get_owner

Retrieves the state's owner.

Usage syntax

LONG SE_stateinfo_get_owner
(const SE_STATEINFO state,
CHAR *owner);

Parameters

state | The stateinfo handle.
owner | The state owner.

Description

SE_stateinfo_get_owner retrieves the owner for a specific state. Allocate at least SE_MAX_OWNER_LEN bytes for the owner parameter.

Returns


SE_stateinfo_get_parent

Retrieves the parent state’s ID.

Usage syntax

LONG SE_stateinfo_get_parent
(const SE_STATEINFO state,
LONG *parent_id);

Parameters

state | The stateinfo handle.
parent_id | A pointer to the state ID of the parent.

Description

SE_stateinfo_get_parent retrieves the ID of a state’s parent.

Returns


SE_stateinfo_is_open

Returns TRUE is the state is open.

Usage syntax

BOOL SE_stateinfo_is_open (const SE_STATEINFO state);

Parameters

state

The pointer to a state definition structure.

Description

SE_stateinfo_is_open returns TRUE if the state is open and FALSE if the state is closed.


SE_stream_bind_input_column

Binds a column to an input data location for inserting a row.

Usage syntax

LONG SE_stream_bind_input_column
(SE_STREAM stream,
SHORT column,
void *data,
SHORT *indicator);

Parameters

stream | The stream handle.
column | The column number to bind. Columns numbers start with the number 1.
data | Pointer to the bind variable to use as input data for the column when the stream is executed.
indicator | Pointer to the variable that indicates whether the column value is NULL or not NULL.

Description

SE_stream_bind_input_column identifies the input bind variable and indicator values for inserting or updating a row into a table or layer. This function simply records the address of the pointers. The actual values (contents) of the pointers are read when the SE_stream_execute function is called. Remember that SE_SHAPE is a pointer, so you’re binding an SE_SHAPE variable, not an ‘SE_SHAPE *’ variable.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED

Notes

• This function executes on the client only.

• You must pass valid data and indicator pointers. To insert a NULL value, set the indicator to the constant SE_IS_NULL_VALUE before calling SE_stream_execute . Otherwise, set the indicator to SE_IS_NOT_NULL_VALUE.

• Once you call SE_stream_bind_input_column for a specified column, you cannot call any of the SE_stream_set_* functions for that column.

• SE_stream_bind_input_column can be called only after initializing a stream with an insert or update operation, and before calling to SE_stream_execute .

• If an SE_stream_set_* function or SE_stream_execute was called before calling SE_stream_bind_input_column (on the same column), an SE_BIND_CONFLICT error is returned.

• When SE_stream_execute is called, the value (contents) of the indicator pointer must be either SE_IS_NULL_VALUE or SE_IS_NOT_NULL_VALUE; otherwise, the SE_INVALID_INDICATOR_VALUE error is returned.


SE_stream_bind_output_column

Binds a column to an output data location for fetching a row.

Usage syntax

LONG SE_stream_bind_output_column
(SE_STREAM stream,
SHORT column,
void *data,
SHORT *indicator);

Parameters

stream | The stream handle.
column | The column number to bind. Columns numbers start with the number 1.
data | Pointer to the bind variable to use as output data for the column when the stream is executed.
indicator | Pointer to the variable that indicates whether the column value is NULL or not NULL.

Description

SE_stream_bind_output_column identifies data pointers that are used as the output bind variable and indicator value for data retrieved from a table or layer. This function simply records the address of the pointers; the actual values (contents) of the pointers are set when SE_stream_fetch is called. Remember that SE_SHAPE is a pointer, so you’re binding an SE_SHAPE variable, not an ‘SE_SHAPE *’ variable.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED

Notes

• Once you call SE_stream_bind_output_column for a specified column, you cannot call any of the SE_stream_get_* functions for that column.

• An SE_INVALID_POINTER error is returned if the data or indicator pointers are NULL.

• Once a fetch is done, if the column for the retrieved row is NULL, the indicator value is SE_IS_NULL_VALUE; otherwise, it is SE_IS_NOT_NULL_VALUE.

• SE_stream_bind_output_column can only be called after initializing a stream with a query operation and before calling SE_stream_fetch.


SE_stream_calculate_layer_extent

Returns the envelope of a layer query.

Usage syntax

LONG SE_stream_calculate_layer_extent
(SE_STREAM stream,
const SE_QUERYINFO query_info,
const SE_ENVELOPE *e,
LFLOAT *minz,
LFLOAT *maxz);

Parameters

stream | The stream handle.
query_info | A pointer to an SE_QUERYINFO structure.
envelope | A pointer to the layer’s envelope.
minz | A pointer to the minimum Z value.
maxz | A pointer to the maximum Z value.

Description

SE_stream_calculate_layer_extent returns the envelope for all features within the layer that pass any SQL construct, state, or spatial constraints for the stream. If no features pass these tests, the envelope is set to SE_INVALID_ENVELOPE.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_ENVELOPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_QUERYINFO_OBJECT
SE_INVALID_SQL
SE_INVALID_STREAM_TYPE
SE_INVALID_WHERE
SE_LAYER_MISMATCH
SE_LAYER_NOEXIST
SE_LOAD_ONLY_LAYER
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_ACCESS
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST


SE_stream_calculate_layer_statistics

Returns statistics for a layer.

Usage syntax

LONG SE_stream_calculate_layer_statistics
(SE_STREAM stream,
const SE_QUERYINFO query_info,
SE_LAYER_STATS *stats);

Parameters

stream | The stream handle.
query_info | A pointer to an SE_QUERYINFO structure.
stats | A pointer to SE_LAYER_STATS structure.

Description

SE_stream_calculate_layer_statistics returns a set of statistics for a layer. You must have query access to the layer. This function reads the entire feature table and can be very expensive on a large layer. The query info object should contain the layer’s spatial column and the layer’s table name as construct’s first table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_ENVELOPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_QUERYINFO_OBJECT
SE_INVALID_SQL
SE_INVALID_STREAM_TYPE
SE_INVALID_WHERE
SE_LAYER_MISMATCH
SE_LOAD_ONLY_LAYER
SE_LAYER_NOEXIST
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_ACCESS
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST


SE_stream_calculate_table_statistics

Returns statistics for a table and column.

Usage syntax

LONG SE_stream_calculate_table_statistics
(SE_STREAM stream,
const CHAR *column,
LONG mask,
const SE_QUERYINFO query_info,
LONG max_distinct,
SE_STATS *stats);

Parameters

stream | The stream handle.
column | A pointer to the column name.
mask | The statistics bit mask.
query_info | A pointer to an SE_QUERYINFO structure.
max_distinct | The maximum number of distinct classes.
stats | A pointer to SE_STATS structure.

Description

SE_stream_calculate_table_statistics returns a set of statistics for a table and column. You can use a simple column name or a complex expression for the column parameter. Use the query info structure to specify the table and any optional where clause. You can join to other tables. Any state or spatial constraints set for the stream are used. The stats structure is allocated by the function but you must free it with SE_table_free_stats . If the max_distinct parameter is zero, the MAXDISTINCT value from the giomgr.defs file is used to limit the number of classes. If that value is also zero, the number of distinct classes is unlimited.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_DISTINCT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_QUERYINFO_OBJECT
SE_INVALID_STATS_TYPE
SE_INVALID_STREAM_TYPE
SE_INVALID_WHERE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST
SE_TOO_MANY_DISTINCTS


SE_stream_close

Cancels the current stream operation.

Usage syntax

LONG SE_stream_close
(SE_STREAM stream,
BOOL reset);

Parameters

stream | The stream to close.
reset | A flag indicating whether to reset the stream.

Description

SE_stream_close stops an actively running stream. If reset is TRUE, the whole stream is reset as if it had just been created. If reset is FALSE, the stream retains the following properties:

• The list of spatial constraints

• The destination logfile set by SE_stream_set_logfile

• The buffered write mode previously set by SE_stream_set_write_mode

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• SE_stream_close is a convenience function for an application that is done with a particular operation, and needs to start a second operation. Rather than freeing the stream and creating a new one, the application can close the current stream and initialize it for the next operation.

• It is not necessary to close a stream before freeing it with SE_stream_free . The SE_stream_free function shuts down the stream before freeing its resources.


SE_stream_copy_state_rows

Copies rows from a differences state to the source state.

Usage syntax

LONG SE_stream_copy_state_rows
(SE_STREAM stream,
const CHAR *table,
const LONG *row_id_list,
LONG row_id_count);

Parameters

stream | The stream handle.
table | The table that contains the differences.
row_id_list | The list of row IDs to copy from the differences state to the source state.
row_id_count | The number of rows to copy from the differences state to the source state.

Description

SE_stream_copy_state_rows copies rows from a differences state to a source state. Define the differences and source states with SE_stream_set_state before calling this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_NO_PERMISSIONS
SE_NO_STATE_SET
SE_ROW_NOEXIST
SE_SDE_NOT_STARTED
SE_STATE_NOEXIST
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST
SE_TABLE_NOT_MULTIVERSION


SE_stream_create

Creates a stream between the client and server.

Usage syntax

LONG SE_stream_create
(SE_CONNECTION connection,
SE_STREAM *stream);

Parameters

connection | The ArcSDE connection handle.
stream | The handle to the newly created stream.

Description

SE_stream_create creates a stream between the client and server, which transmits feature and/or attribute data. The stream handle created by SE_stream_create is necessary for all other stream functions.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED

Notes

• By default, streams are created with the buffered write mode turned off for inserts. See SE_stream_set_write_mode .


SE_stream_delete_by_id_list

Deletes rows from a table using a list of IDs.

Usage syntax

LONG SE_stream_delete_by_id_list
(SE_STREAM stream,
const CHAR *table,
LONG *id_list,
LONG id_count);

Parameters

stream | The stream handle.
table | The table name.
id_list | The list of IDs to delete.
id_count | The number of IDs.

Description

SE_stream_delete_by_id_list deletes rows using a list of row IDs. The rows are immediately deleted; you don't have to call SE_stream_execute . If no rows are deleted, the warning SE_NO_ROWS_DELETED is returned.

Returns

SE_SUCCESS
SE_ATTR_NO_EXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_ROW_NOEXIST
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_NO_ROWID_COLUMN
SE_NO_ROWS_DELETED
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST


SE_stream_delete_from_table

Deletes rows from a table using an SQL where clause.

Usage syntax

LONG SE_stream_delete_from_table
(SE_STREAM stream,
const CHAR *table,
const CHAR *where_clause);

Parameters

stream | The stream handle.
table | The table name from which to delete the row.
where_clause | The SQL where clause. If NULL, delete all rows.

Description

SE_stream_delete_from_table deletes rows using an SQL where clause from the specified table. The rows are immediately deleted; you don't have to call SE_stream_execute . If no rows are deleted, the warning SE_NO_ROWS_DELETED is returned.

Returns

SE_SUCCESS
SE_INVALID_STREAM
SE_FAILURE
SE_NET_FAILURE
SE_ATTR_NO_EXIST
SE_NO_PERMISSIONS
SE_CONNECTION_IN_USE
SE_NO_ROWID_COLUMN
SE_CONNECTION_LOCKED
SE_NO_ROWS_DELETED
SE_DB_IO_ERROR
SE_OUT_OF_SVMEM
SE_ROW_NOEXIST
SE_SDE_NOT_STARTED
SE_INVALID_PARAM_VALUE
SE_STREAM_IN_PROGRESS
SE_INVALID_POINTER
SE_TABLE_NO_EXIST


SE_stream_delete_row

Deletes the specified row from a spatially enabled table based on the layer and feature identifiers.

Usage syntax

LONG SE_stream_delete_row
(SE_STREAM stream,
const CHAR *table,
LONG sde_row_id);

Parameters

stream | The stream handle.
table | The table name from which to delete the row.
sde_row_id | The row ID to delete.

Description

SE_stream_delete_row deletes the row with the specified identifier from a spatially enabled table.

Returns

SE_SUCCESS
SE_FAILURE
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_LAYER_NUMBER
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_describe_column

Describes a specified column for the given stream.

Usage syntax

LONG SE_stream_describe_column
(SE_STREAM stream,
SHORT column,
SE_COLUMN_DEF *column_def);

Parameters

stream | The stream handle.
column | The column to describe.
column_def | A structure containing the requested column definition.

Description

SE_stream_describe_column describes a specified column for a given stream. Column numbers reference the column list from a given query or insert/update, not the table order. Column numbers are sequential, starting from one.

The resulting column definition is returned in an SE_COLUMN_DEF structure.

typedef struct {

CHAR column_name[SE_MAX_COLUMN_LEN]; /* The column name */

LONG sde_type; /* The ArcSDE data type */

LONG size; /* The size of the column values */

SHORT decimal_digits; /* Number of digits after decimal */

BOOL nulls_allowed; /* Allows NULL values */

} SE_COLUMN_DEF;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NOT_A_SELECT_STATEMENT
SE_SDE_NOT_STARTED

Notes

• The SE_stream_describe_column function assumes that the application has allocated enough space for the SE_COLUMN_DEF structure.

• SE_stream_describe_column can be called only after initializing a stream with a query or insert/update and before closing the stream.

• SE_stream_describe_column is especially useful when an application is processing an end-user’s query without knowing the target table’s schema. After initializing the query, the application can determine the number of result columns with SE_stream_num_result_columns . The application calls SE_stream_describe_column for each result column. The information in the SE_COLUMN_DEF structure is used then to either bind output variables (using SE_stream_bind_output_column ) or to determine which SE_stream_get_* function to call after SE_stream_fetch.


SE_stream_execute

Executes an initialized stream.

Usage syntax

LONG SE_stream_execute (SE_STREAM stream);

Parameters

stream

The stream handle.

Description

SE_stream_execute instructs the ArcSDE server to execute a previously defined operation on the specified stream. In the case of an insert or update, SE_stream_execute performs the insertion or update (unless the application has set buffered writes with SE_stream_set_write_mode ). In the case of a query, the server executes the underlying DBMS query. The application can iterate through the resulting rows of data with SE_stream_fetch.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_BLOB_SIZE_TOO_LARGE
SE_COLUMN_NOT_BOUND
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_ETYPE_NOT_ALLOWED
SE_SHAPE_INTEGRITY_ERROR
SE_FILE_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_GSIZE_TOO_SMALL
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_ENTITY_TYPE
SE__INVALID_COLUMN_VALUE
SE_INVALID_SHAPE
SE_INVALID_INDICATOR_VALUE
SE_INVALID_PARAM_VALUE
SE_INVALID_SHAPE_OBJECT
SE_INVALID_SQL
SE_LOCK_CONFLICT
SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_NO_ROWS_UPDATED
SE_OUT_OF_CLMEM
SE_OUT_OF_LOCKS
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TEMP_IO_ERROR

Notes

• For inserts or updates, the value of columns that were bound with any of the SE_stream_set_* functions are set to NULL after calling SE_stream_execute .

• For inserts that are in buffered write mode, if SE_stream_execute returns an error, there is no guarantee that previously executed rows were inserted into the DBMS.

• For inserts or updates, any columns that weren’t bound by one of the SE_stream_set_* or SE_stream_bind_input_column functions causes SE_stream_execute to return the SE_COLUMN_NOT_BOUND error.


SE_stream_fetch

Fetches the next row on the specified stream.

Usage syntax

LONG SE_stream_fetch (SE_STREAM stream);

Parameters

stream

The stream handle.

Description

SE_stream_fetch fetches a row of data for the specified stream. SE_stream_fetch retrieves the results from either SE_stream_query, SE_stream_query_logfile , or SE_stream_prepare_sql after SE_stream_execute is called. SE_stream_fetch can access each retrieved row sequentially.

SE_stream_fetch populates the data and indicator pointers for all columns that were bound with SE_stream_bind_output_column . The application can retrieve individual values with the SE_stream_get_* functions for any columns that were not bound.

After fetching all rows of a given query, the next call to SE_stream_fetch returns the code SE_FINISHED. SE_stream_fetch will return a -22 code when used with SE_stream_delete_row deleting multiple rows.

Returns

SE_SUCCESS
SE_FINISHED
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_SQL
SE_INVALID_STREAM
SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_NOT_A_SELECT_STATEMENT
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED


SE_stream_fetch_row

Retrieves a single row from a specific layer.

Usage syntax

LONG SE_stream_fetch_row
(SE_STREAM stream,
const CHAR *table,
LONG sde_row_id,
SHORT num_columns,
const CHAR **columns);

Parameters

stream | The stream handle.
table | The table name.
sde_row_id | The row ID.
num_columns | The number of columns to fetch.
columns | The names of the columns to fetch.

Description

SE_stream_fetch_row retrieves the row with the specified row identifier from the specified table and column. This function initiates, executes, and fetches the data. It does not use the client/server buffering mechanism.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATT_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FINISHED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_ROW_ID_LAYER
SE_LAYER_MISMATCH
SE_LOAD_ONLY_LAYER
SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• The columns argument is an array of pointers to column names.


SE_stream_flush_buffered_writes

Forces any buffered writes to post on the server.

Usage syntax

LONG SE_stream_flush_buffered_writes (SE_STREAM stream);

Parameters

stream

The stream handle.

Description

SE_stream_flush_buffered_writes immediately posts any buffered writes to the ArcSDE server for the specified stream.

Returns

SE_SUCCESS
SE_FAILURE
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FILE_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM_TYPE
SE_LOG_IO_ERROR
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TEMP_IO_ERROR

Notes

• If buffered writes are enabled, call this function before SE_stream_close , SE_stream_free or SE_connection_free to get errors returned. These functions flush the buffers automatically, but won’t return any errors caused by failed inserts.


SE_stream_free

Deletes a stream.

Usage syntax

LONG SE_stream_free (SE_STREAM stream);

Parameters

stream

The stream handle.

Description

SE_stream_free deletes a stream and frees its associated memory. The stream handle is no longer valid. This function performs the same shutdown operations as SE_stream_close , and then frees all resources associated with the stream.

Returns


SE_stream_get_blob

Gets a Binary Large Object (BLOB) column from the current row.

Usage syntax

LONG SE_stream_get_blob
(SE_STREAM stream,
SHORT column,
SE_BLOB_INFO *blob_val);

Parameters

stream | The stream handle.
column | The column number for the blob. Columns numbers start with the number 1.
blob_val | The returned blob.

Description

SE_stream_get_blob extracts the data from a blob column from the current record on the specified stream. Information necessary to access the blob data is returned in the SE_BLOB_INFO structure:

typedef struct {

LONG blob_length; /* Length in bytes of the blob */

CHAR *blob_buffer; /* Linear buffer of blob data */

} SE_BLOB_INFO

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NET_FAILURE
SE_NULL_VALUE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.

• When fetching blob columns, the application may set the blob buffer pointer (of the SE_BLOB_INFO structure) to NULL. In this case, SE_stream_get_blob allocates sufficient memory for the fetched blob. It is the application’s responsibility to free the memory using SE_blob_free. If the blob_buffer pointer is not null when SE_stream_get_blob is called, ArcSDE assumes that the application has already allocated sufficient memory and writes the entire blob into the blob_buffer pointer.

• SE_stream_get_blob sets the blob_length field of the SE_BLOB_INFO structure upon successful return.

• Due to the potentially very large size of blobs, the ArcSDE client does not locally cache the blob. Therefore, SE_stream_get_blob may be called only once per blob column for a given row. If a second call is made for the same column before making another call to SE_stream_fetch, SE_stream_get_blob returns the error SE_FUNCTION_SEQUENCE_ERROR.


SE_stream_get_connection

Returns a stream’s connection handle.

Usage syntax

LONG SE_stream_get_connection
(SE_STREAM stream,
SE_CONNECTION *connection);

Parameters

stream | The stream handle.
connection | The connection handle associated with the stream.

Description

SE_stream_get_connection returns a stream’s connection handle. The stream’s connection handle was established when the stream was created.

Returns


SE_stream_get_date

Gets a date column from the row.

Usage syntax

LONG SE_stream_get_date
(SE_STREAM stream,
SHORT column,
struct tm *date_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
date_val | The returned date value.

Description

SE_stream_get_date extracts a date column from the current record of the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_double

Gets a double-precision column from the row.

Usage syntax

LONG SE_stream_get_double
(SE_STREAM stream,
SHORT column,
LFLOAT *double_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
double_val | The returned double-precision value.

Description

SE_stream_get_double extracts a double-precision column from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_ext_error

Retrieves extended error information.

Usage syntax

LONG SE_stream_get_ext_error
(SE_STREAM stream,
SE_ERROR *error);

Parameters

stream | The stream handle.
error | A pointer to an SE_ERROR structure.

Description

SE_stream_get_ext_error returns the low-level error code that was returned from an abnormal termination of the last function call on the specified stream. This call returns either OS level ‘errno’ values or low-level database error codes.

typedef struct {

LONG sde_error; /* ArcSDE error code */

LONG ext_error; /* DBMS or OS errno code */

 CHAR err_msg1[SE_MAX_MESSAGE_LENGTH];
/* DBMS or SE_ERROR_get_string msg.
*/

CHAR err_msg2[SE_MAX_SQL_MESSAGE_LENGTH];
/* Second DBMS error, if applicable */

} SE_ERROR;

Returns


SE_stream_get_float

Gets a single-precision float column from the row.

Usage syntax

LONG SE_stream_get_float
(SE_STREAM stream,
SHORT column,
FLOAT *float_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
float_val | The returned single-precision value.

Description

SE_stream_get_float extracts a single-precision float column from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_integer

Gets an integer column from the row.

Usage syntax

LONG SE_stream_get_integer
(SE_STREAM stream,
SHORT column,
LONG *int_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
int_val | The returned integer value.

Description

SE_stream_get_integer extracts an integer column from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_raster

Gets raster column from the current row.

Usage syntax

LONG SE_stream_get_raster
(SE_STREAM stream,
SHORT column,
SE_RASTERATTR raster);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
raster | A pointer to the returned raster.

Description

SE_stream_get_raster retrieves a raster column from the current record on the specified stream in the form of a SE_RASTERATTR structure. You must have executed a query and fetched a row with SE_stream_fetch.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_raster_tile

Gets raster tile from the row.

Usage syntax

LONG SE_stream_get_rastere_tile
(SE_STREAM stream,
SE_RASTILEINFO tile_ptr);

Parameters

stream | The stream handle.
tile_ptr | A pointer to the returned tile.

Description

SE_stream_get_rastere_tile retrieves a raster tile from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_shape

Gets a shape column from the row.

Usage syntax

LONG SE_stream_get_shape
(SE_STREAM stream,
SHORT column,
SE_SHAPE shape_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
shape_val | The returned shape.

Description

SE_stream_get_shape extracts a shape column from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SHAPE_OBJECT
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.

• You must pass in a valid shape object (see SE_shape_create).


SE_stream_get_smallint

Gets a small integer column from the row.

Usage syntax

LONG SE_stream_get_smallint
(SE_STREAM stream,
SHORT column,
SHORT *short_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
short_val | The returned short integer value.

Description

SE_stream_get_smallint extracts a small integer column from the current record on the specified stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for this column, the function returns the warning SE_NULL_VALUE.


SE_stream_get_spatial_masks

Returns the spatial filter masks for the current row.

Usage syntax

LONG SE_stream_get_spatial_masks
(SE_STREAM stream,
LONG *masks);

Parameters

stream | The stream handle.
masks | An array of spatial filter masks.

Description

SE_stream_get_spatial_masks returns the spatial filter masks for the current row of the current query layer. There is one mask per spatial filter as specified in the call to SE_stream_set_spatial_constraints . If the calc_masks argument of SE_stream_set_spatial_constraints is TRUE, all spatial masks are retrieved.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_POINTER
SE_INVALID_PARAM_VALUE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_STREAM_TYPE
SE_NO_SPATIAL_MASKS
SE_SDE_NOT_STARTED

Notes

• The spatial masks give the application the relationships between the current row’s shape and each of the spatial filters in the stream’s query. To get the full relationships between a filter and the current row’s feature, set calc_masks to TRUE for SE_stream_set_spatial_constraints .

• See SE_shape_find_relation for a list of possible spatial mask values.

• You can call SE_stream_get_spatial_masks only after a call to SE_stream_fetch.

• If the calc_masks argument of SE_stream_set_spatial_constraints is set to FALSE, SE_stream_get_spatial_masks returns an SE_NO_SPATIAL_MASKS error.


SE_stream_get_string

Gets a string column from the current row.

Usage syntax

LONG SE_stream_get_string
(SE_STREAM stream,
SHORT column,
CHAR *string_val);

Parameters

stream | The stream handle.
column | The column number. Columns numbers start with the number 1.
string_val | The returned string.

Description

SE_stream_get_string extracts a string column from the current record on the stream.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_INVALID_POINTER
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM
SE_NULL_VALUE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If there is no data for the column, the function returns the warning SE_NULL_VALUE.

• It is the caller’s responsibility to allocate enough space for the returned string. The string is null terminated, so the application must allocate one byte more than the size of the given character column. Use SE_stream_describe_column to determine the column size.


SE_stream_in_progress

Returns the status of the specified stream.

Usage syntax

LONG SE_stream_in_progress
(SE_STREAM stream,
BOOL *in_progress);

Parameters

stream | The stream handle.
in_progress | TRUE if the stream is not closed.

Description

SE_stream_in_progress returns the status of the specified stream. TRUE indicates that the referenced stream is initialized and not closed. FALSE indicates that the stream referenced by the supplied handle is not open currently.

Returns


SE_stream_insert_into_file

Prepares to insert a row into an external file.

Usage syntax

LONG SE_stream_insert_into_file
(SE_STREAM stream,
const SE_FILEINFO fileinfo,
SHORT num_attributes,
const CHAR **columns);

Parameters

stream | The stream handle.
query_info | A pointer to an SE_FILEINFO structure.
num_attributes | The number of columns to use.
columns | A pointer to an array of column names.

Description

SE_stream_insert_into_file prepares to insert a row into an external file. The external file can be an external format file, shapefile, or coverage. This is a client-only stream operation.

Returns

SE_SUCCESS
SE_ATT_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FAILURE
SE_FILE_OBJECT_NOEXIST
SE_INVALID_FILEINFO_OBJECT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM_TYPE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_insert_table

Identifies columns to populate when inserting data into a DBMS table.

Usage syntax

LONG SE_stream_insert_table
(SE_STREAM stream,
const CHAR *table,
SHORT num_columns,
const CHAR **columns);

Parameters

stream | The stream handle.
table | The name of the table to insert rows into.
num_columns | The number of attribute columns to use when inserting data.
columns | The array of column names to use when inserting data.

Description

SE_stream_insert_table inserts data into spatial and nonspatial tables. The function identifies which columns to update when inserting new records into a DBMS table, and must be called before ArcSDE inserts new data into a DBMS table. When SE_stream_execute is called for each new row, the table columns defined in SE_stream_insert_table are inserted in nonbuffered mode.

Returns

SE_SUCCESS
SE_ATT_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• After calling SE_stream_insert_table to identify which of the columns to insert, the application must set an explicit value for each named column with either SE_stream_bind_input_column or one of the SE_stream_set_* functions. Each named column must have a value (which is NULL by default) before the application calls SE_stream_execute .


SE_stream_invoke_ssa

Starts and configures a server-side application.

Usage syntax

LONG SE_stream_invoke_ssa
(SE_STREAM stream,
BOOL query_stream,
SHORT num_inputs,
SE_INPUT_DESC *input_desc,
void **data,
CHAR *ssaName);

Parameters

stream | The stream handle.
query_stream | Create a query stream if TRUE and an insert stream if FALSE.
num_inputs | The number of input parameters the client will send to the SSA.
input_desc | The description of the input data in a SE_INPUT_DESC structure.
data | The pointer to an array of input data.
ssaName | The name of the server-side application.

Description

SE_stream_invoke_ssa configures a server-side application (SSA). After this function is called, SE_stream_execute , SE_stream_fetch, and other API functions will use the server-side application versions. For more information and examples, see the ‘Server-side applications’.

Returns

SE_SUCCESS
SE_ATTR_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST


SE_stream_last_inserted_raster_id

Retrieves the raster ID in the row most recently inserted.

Usage syntax

LONG SE_stream_last_inserted_raster_id
(SE_STREAM stream,
LONG * last_raster_id);

Parameters

stream | The stream handle.
last_raster_id | A pointer to the raster ID.

Description

SE_stream_last_inserted_raster_id retrieves the raster ID in the row that's most recently inserted on this stream.

Returns


SE_stream_last_inserted_row_id

Gets the row ID of the last inserted data.

Usage syntax

LONG SE_stream_last_inserted_row_id
(SE_STREAM stream,
*LONG last_row_id);

Parameters

stream | The stream handle.
last_row_id | A pointer to the last inserted row ID.

Description

SE_stream_last_inserted_row_id retrieves the row ID of the last insert.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_NO_SDE_ROWID_COLUMN
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOREGISTERED


SE_stream_locate_table

Locates (georeferences) a table.

Usage syntax

LONG SE_stream_locate_table
(SE_STREAM stream,
const CHAR *table,
const CHAR *where,
SE_LOCATORINFO locator);

Parameters

stream | The stream handle.
table | The table name from which to delete the row.
where | The SQL where clause. If NULL, locate all rows.
locator | A pointer to an SE_LOCATORINFO structure.

Description

SE_stream_locate_table locates (georeferences) data in a table. The results are either inserted into an output table or the output table is updated. Use the SE_LOCATORINFO object to specify the output table.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_LOCATOR_OBJECT_TYPE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_num_result_columns

Returns the number of columns for the current operation of the specified stream.

Usage syntax

LONG SE_stream_num_result_columns
(SE_STREAM stream,
SHORT *num_columns);

Parameters

stream | The stream handle.
num_columns | The number of columns for the current operation.

Description

SE_stream_num_result_columns returns the number of columns that are involved in the current stream operation (e.g., the number of columns returned by a query).

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NOT_A_SELECT_STATEMENT
SE_SDE_NOT_STARTED

Notes

• This function is especially useful when an arbitrary SQL query initiated the stream from SE_stream_prepare_sql .

• An application may call SE_stream_num_result_columns only after a stream has been initialized and before it is closed.


SE_stream_prepare_sql

Prepares an SQL statement for execution.

Usage syntax

LONG SE_stream_prepare_sql
(SE_STREAM stream,
const CHAR *sql_stmt);

Parameters

stream | The stream handle.
sql_stmt | The SQL statement.

Description

SE_stream_prepare_sql takes an SQL string or query and passes it to the ArcSDE server so that the DBMS can prepare the request for execution. Preparation of the SQL string or query includes the DBMS parsing of the statement.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_SQL
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NOT_A_SELECT_STATEMENT
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS

Notes

  • You must prepare an SQL statement with the SE_stream_prepare_sql function before SE_stream_execute can execute the statement on the DBMS.

  • SE_stream_prepare_sql accepts any SQL statement supported by the underlying DBMS.


SE_stream_query

Initiates a layer query.

Usage syntax

LONG SE_stream_query
(SE_STREAM stream,
SHORT num_columns,
const CHAR **columns,
const SE_SQL_CONSTRUCT *construct);

Parameters

stream | The stream handle.
num_columns | The number of table columns in the array.
columns | An array of column names.
construct | The SQL constructor.

Description

SE_stream_query initializes a stream with a query using a selected set of columns and an SE_SQL_CONSTRUCT structure for the where clause. The SE_SQL_CONSTRUCT structure is:

typedef struct {

LONG num_tables; /* Number of tables in join */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

The where clause can’t contain any ORDER BY or GROUP BY clauses. See the ‘SQL construct functions’ chapter for more details.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATT_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_ROW_ID_LAYER
SE_INVALID_SQL
SE_LAYER_MISMATCH
SE_LOAD_ONLY_LAYER
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

  • You can use an asterisk, ‘*’, as a column name to select all columns in the table.


SE_stream_query_from_file

Initiates a query on an external file.

Usage syntax

LONG SE_stream_query_from_file
(SE_STREAM stream,
const SE_FILEINFO *fileinfo,
SHORT num_attributes,
const CHAR **columns);

Parameters

stream | The stream handle.
fileinfo | A pointer to an SE_FILEINFO structure.
num_attributes | The number of columns in the array.
columns | An array of column names.

Description

SE_stream_query_from_file initializes a stream with a query using an external file list and a list of columns. The external file can be a shapefile, coverage, or an export format file. This function doesn't support SE_SQL_CONSTRUCT, nor any filter on spatial or nonspatial data.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATTR_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FILE_OBJECT_NOEXIST
SE_INVALID_FILEINFO_OBJECT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_ROW_ID_LAYER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_query_logfile

Initiates a query on a logfile.

Usage syntax

LONG SE_stream_query_logfile
(SE_STREAM stream,
const CHAR *logfile,
SHORT num_columns,
const CHAR **columns,
const SE_SQL_CONSTRUCT *construct);

Parameters

stream | The stream handle.
logfile | The logfile name.
num_columns | The number of table columns in the array.
columns | An array of column names.
construct | The SQL constructor.

Description

SE_stream_query_logfile initiates a logfile query using a selected set of columns, and an SE_SQL_CONSTRUCT structure for the where clause. The logfile identifies which features the selection will process. The SE_SQL_CONSTRUCT structure is:

typedef struct {

LONG num_tables; /* Number of tables in join */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

The where clause can’t contain any ORDER BY or GROUP BY clauses. See ‘SQL construct functions’ for more details.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATTR_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_ROW_ID_LAYER
SE_LOAD_ONLY_LAYER
SE_INVALID_SQL
SE_LAYER_MISMATCH
SE_LAYER_NOEXIST
SE_LOG_IO_ERROR
SE_LOG_NOACCESS
SE_LOG_NOEXIST
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• This function is similar to SE_stream_query except that the data source is a logfile.


SE_stream_query_raster_tile

Initiates a query on a raster tile.

Usage syntax

LONG SE_stream_query_raster_tile
(SE_STREAM stream,
const SE_RASCONSTRAINT constraint);

Parameters

stream | The stream handle.
constraint | The raster constraint.

Description

SE_stream_query_raster_tile initiates a raster query using an SE_RASCONSTRAINT structure.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATTR_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_ROW_ID_LAYER
SE_INVALID_SQL
SE_LAYER_MISMATCH
SE_LAYER_NOEXIST
SE_LOAD_ONLY_LAYER
SE_LOG_IO_ERROR
SE_LOG_NOACCESS
SE_LOG_NOEXIST
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• This function is similar to SE_stream_query except that the data source is a logfile.


SE_stream_query_with_info

Initiates a query using an SE_QUERYINFO structure.

Usage syntax

LONG SE_stream_query
(SE_STREAM stream,
const SE_QUERYINFO query_info);

Parameters

stream | The stream handle.
query_info | A pointer to an SE_QUERYINFO structure.

Description

SE_stream_query_with_info initializes a stream query using an SE_QUERYINFO structure. The SE_QUERYINFO structure includes parameters to define tables, columns, where clause, query type, ORDER BY clauses and DBMS hints. See ‘Queryinfo functions' for more details.

Returns

SE_SUCCESS
SE_ATTR_CONV_ERROR
SE_ATT_NOEXIST
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_QUERYINFO_OBJECT
SE_INVALID_ROW_ID_LAYER
SE_INVALID_SQL
SE_INVALID_WHERE
SE_LAYER_MISMATCH
SE_LOAD_ONLY_LAYER
SE_MULTIPLE_SPATIAL_COLS
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_QUERYINFO_NOT_PREPARED
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• This function is similar to SE_stream_query except that the query parameters are in an opaque SE_QUERYINFO structure.


SE_stream_restore_rows

Restores rows in a multiversion table to its original state.

Usage syntax

LONG SE_stream_restore_rows
(SE_STREAM stream,
const LONG *row_id_list,
LONG row_id_count);

Parameters

stream | The stream handle.
table | A pointer to the table name.
row_id_list | A pointer to a list of row IDs.
row_id_count | The number of row IDs.

Description

SE_stream_restore_rows restores rows in a multiversion table to their original state at the creation of the currently set version.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOREGISTERED


SE_stream_set_blob

Sets the value for a blob column.

Usage syntax

LONG SE_stream_set_blob
(SE_STREAM stream,
SHORT column,
const SE_BLOB_INFO *blob_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
blob_val | Pointer to a blob structure.

Description

SE_stream_set_blob sets the value of a blob column, which is used when inserting or updating a row in a table or ArcSDE layer. The information necessary to insert the blob data is supplied in the SE_BLOB_INFO structure.

typedef struct {

LONG blob_length; /* Length in bytes of the blob */

CHAR *blob_buffer; /* Linear buffer of blob data */

} SE_BLOB_INFO

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE__INVALID_COLUMN_VALUE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If the pointer to the SE_BLOB_INFO structure is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was called earlier for the specified column.

• This function makes a duplicate of the given blob buffer and allocates additional memory to contain the blob. This can be inefficient when used with large blobs. For this situation, you may prefer to use SE_stream_bind_input_column because it does not create a copy of the blob.


SE_stream_set_date

Sets the value for a date column.

Usage syntax

LONG SE_stream_set_date
(SE_STREAM stream,
SHORT column,
const struct tm *date_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
date_val | Pointer to the date structure.

Description

SE_stream_set_date sets the value of a date column, which is used to update or insert a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If date_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_double

Sets the value for a double-precision column.

Usage syntax

LONG SE_stream_set_double
(SE_STREAM stream,
SHORT column,
const LFLOAT *double_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
double_val | Pointer to the double-precision value to set.

Description

SE_stream_set_double sets the value of a double-precision column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If double_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_float

Sets the value for a single-precision float column.

Usage syntax

LONG SE_stream_set_float
(SE_STREAM stream,
SHORT column,
const FLOAT *float_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
float_val | Pointer to the float value to set.

Description

SE_stream_set_float sets the value of a single-precision float column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If float_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_integer

Sets the value for an integer column.

Usage syntax

LONG SE_stream_set_integer
(SE_STREAM stream,
SHORT column,
const LONG *int_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
int_val | Pointer to the integer value to set.

Description

SE_stream_set_integer sets the value of an integer column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If int_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_logfile

Sets the destination of stream operations to a logfile.

Usage syntax

LONG SE_stream_set_logfile
(SE_STREAM stream,
SE_LOG log,
BOOL logfile_only);

Parameters

stream | The stream handle.
log | The handle to a logfile opened by SE_log_open.
logfile_only | TRUE if results are to be written to the logfile only.

Description

SE_stream_set_logfile sets a logfile as the destination for a stream operation. Examples include sending the results of a query to a logfile or to the client and a logfile at the same time. If the argument logfile_only is TRUE, the entire query is executed at SE_stream_execute time. The application does not need to call SE_stream_fetch.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM_TYPE
SE_LAYER_MISMATCH
SE_LOG_NOTOPEN
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS

Notes

• A logfile can contain SE_ROW_IDs from one layer only.

• The argument logfile_only can be set to TRUE for queries only, not for updates or inserts.

• During inserts and updates, only shapes that are added or modified are logged. Deleted shapes are not logged.

• Closing a stream with reset equal to FALSE retains the logfile information.

• You can set a logfile on an uninitialized stream, but not after executing the stream.

• It is not necessary to select the spatial column when querying a layer if a logfile is set.


SE_stream_set_output_coordref

Sets the output coordinate reference of a stream operation.

Usage syntax

LONG SE_stream_set_output_coordref
(SE_STREAM stream,
const SE_COORDREF coordref,
const PE_GEOGTRAN geogtran);

Parameters

stream | The stream handle.
coordref | The SE_COORDREF object.
geogtran | The geographic transformation object.

Description

SE_stream_set_output_coordref sets an output coordinate reference for a stream operation. You can use this function to change the coordinate system (project) when retrieving shapes.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_INVALID_COORDREF_OBJECT
SE_INVALID_GEOGTRAN_OBJECT
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_set_raster_constraint

Sets raster constraints.

Usage syntax

LONG SE_stream_set_raster_constraint
(SE_STREAM stream,
const SE_RASCONSTRAINT *constraint);

Parameters

stream | The stream handle.
filter | A pointer to a raster constraint.

Description

SE_stream_set_raster_constraint sets the raster constraint on the current query. On execution, the constraint is applied to the raster data, and only those rasters meeting the supplied constraint are returned to the client application.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_FILTER_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SEARCH_METHOD
SE_INVALID_STREAM_TYPE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS

Notes

• Call SE_stream_set_raster_constraint with zero filters to cancel previously set filters.

• You can call this function only after initializing the stream with a layer or logfile query and before calling SE_stream_execute .


SE_stream_set_row

Updates a single row based on the ID from the specified table.

Usage syntax

LONG SE_stream_set_row
(SE_STREAM stream,
const CHAR *table,
LONG sde_row_id,
SHORT num_columns,
const CHAR **columns);

Parameters

stream | The stream handle.
table | The table.
sde_row_id | The ID of the row.
num_columns | The number of columns to use when inserting data.
columns | The array of column names to use.

Description

SE_stream_set_row updates a single row in a layer. The layer and SE_ROW_ID identify the table and row to update. The columns argument specifies which columns to update.

Returns

SE_SUCCESS
SE_FAILURE
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_LAYER_NUMBER
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_set_rowlocking

Sets the row locking environment for a stream.

Usage syntax

LONG SE_stream_set_rowlocking
(SE_STREAM stream,
LONG rowlock_action);

Parameters

stream | The stream handle.
rowlock_action | The row ID.

Description

SE_stream_set_rowlocking sets the row locking environment for a stream. The row locking environment remains in effect until the stream is closed with reset TRUE or the stream is freed. The row lock types are:

SE_ROWLOCKING_LOCK_ON_QUERY /* Rows selected by a query are locked. */

SE_ROWLOCKING_LOCK_ON_INSERT /* New rows are locked when inserted. */

SE_ROWLOCKING_LOCK_ON_UPDATE /* Updated rows are locked. */

SE_ROWLOCKING_UNLOCK_ON_QUERY /* Locks are removed upon query. */

SE_ROWLOCKING_UNLOCK_ON_UPDATE /* Modified rows are unlocked. */

SE_ROWLOCKING_FILTER_MY_LOCKS /* Only rows locked by the user are

returned on query. */

SE_ROWLOCKING_FILTER_OTHER_LOCKS /* Only rows locked by other users

are returned on query. */

SE_ROWLOCKING_FILTER_UNLOCKED /* Only unlocked rows are returned. */

SE_ROWLOCKING_LOCK_ONLY /* Query operations lock but don't return

rows. */

More complete explanations are in the table below.

SE_ROWLOCKING_LOCK_ON_QUERY Rows selected by SE_stream_get_row, SE_stream_query, or SE_stream_query_logfile are locked. If any of the rows are already locked, the entire operation fails. Rows already locked by the caller won't cause the operation to fail. At the start of the query the lock table is locked with a DBMS lock. When the query finishes, a commit is performed to preserve the row locks.

SE_ROWLOCKING_LOCK_ON_INSERT New rows inserted with SE_stream_insert_table are locked.

SE_ROWLOCKING_LOCK_ON_UPDATE Rows updated with SE_stream_set_row, SE_stream_update_row or SE_stream_update_table are locked.

SE_ROWLOCKING_UNLOCK_ON_QUERY Rows selected by SE_stream_get_row, SE_stream_query, or SE_stream_query_logfile have locks by the current user removed. When the query finishes, a commit is performed to preserve the row lock changes.

SE_ROWLOCKING_UNLOCK_ON_UPDATE Rows updated with SE_stream_set_row, SE_stream_update_row or SE_stream_update_table have locks by the current user removed.

SE_ROWLOCKING_FILTER_MY_LOCKS Only rows locked by the current user are returned on query.

SE_ROWLOCKING_FILTER_OTHER_LOCKS Only rows locked by other users are returned on query.

SE_ROWLOCKING_FILTER_UNLOCKED Only unlocked rows are returned.

SE_ROWLOCKING_LOCK_ONLY Query operations lock but don't return rows unless SE_stream_set_logfile is set.

Returns


SE_stream_set_shape

Sets the value for a shape column.

Usage syntax

LONG SE_stream_set_shape (SE_STREAM stream,
SHORT column,
const SE_SHAPE shape_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
shape_val | The pointer to the feature structure to set.

Description

SE_stream_set_shape sets the value of a shape column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_ETYPE_NOT_ALLOWED
SE_FAILURE
SE_SHAPE_INTEGRITY_ERROR
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_ENTITY_TYPE
SE_INVALID_SHAPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If shape_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_smallint

Sets the value for a small integer column.

Usage syntax

LONG SE_stream_set_smallint
(SE_STREAM stream,
SHORT column,
const SHORT *short_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
short_val | Pointer to the small integer value to set.

Description

SE_stream_set_smallint sets the value of a small integer column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_LOCKED
SE_CONNECTION_IN_USE
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If short_val is NULL, a NULL value is set for this column.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_spatial_constraints

Sets spatial constraints.

Usage syntax

LONG SE_stream_set_spatial_constraints
(SE_STREAM stream,
SHORT search_order,
BOOL calc_masks,
SHORT num_filters,
const SE_FILTER *filters);

Parameters

stream | The stream handle.
search_order | How to search the data.
calc_masks | If TRUE, returns the spatial masks when fetching data.
num_filters | The number of spatial filters in the array.
filters | An array of spatial filters.

Description

SE_stream_set_spatial_constraints sets spatial constraints on the current query. It takes a search order and a set of spatial filters as input. On execution, the search constraints are applied to the spatial data, and only those features meeting all of the supplied constraints are returned to the client application.

The search order tells the server whether to process the spatial or attribute portions of the query first. The options are:

SE_ATTRIBUTE_FIRST | Process any SQL where clause prior to applying spatial constraints.
SE_SPATIAL_FIRST | Process any spatial query prior to processing an SQL where clause.
SE_OPTIMIZE | The ArcSDE server will determine whether to process spatial or attribute components of a query first. If a spatial constraint must be TRUE to select a feature, the spatial component is processed first; otherwise, the attribute component is processed first.

The spatial filters are supplied to the function using an SE_FILTER structure

typedef struct {

CHAR table[SE_QUALIFIED_TABLE_NAME]; /* The spatial table name */

CHAR column[SE_MAX_COLUMN_LEN]; /* The spatial column name */

LONG filter_type; /* The type of spatial filter */

union {

SE_SHAPE shape; /* A shape object */

struct {

LONG id; /* An ID for a shape’s SDE_ROW_ID */

CHAR table[SE_QUALIFIED_TABLE_NAME]; /* The shape’s spatial table */

} id;

} filter;

LONG method; /* The search method to satisfy */

BOOL truth; /* TRUE to pass method, FALSE if it must NOT pass */

CHAR *cbm_source; /* Set only if the method is SM_CBM */

UCHAR *cbm_object_code; /* Internal system use only */

} SE_FILTER;

filter_type:

SE_SHAPE_FILTER

SE_ID_FILTER

Search method (in sg.h):

SM_ENVP /* Envelopes overlap */

SM_ENVP_BY_GRID /* Envelopes overlap (returns shapes in spatial index

storage order) */

SM_CP /* Common point */

SM_LCROSS /* Line cross */

SM_COMMON /* Common edge/line */

SM_CP_OR_LCROSS /* Common point or line cross */

SM_LCROSS_OR_CP /* Common point or line cross */

SM_ET_OR_AI /* Edge touch or area intersect */

SM_AI_OR_ET /* Edge touch or area intersect */

SM_ET_OR_II /* Edge touch or interior intersect */

SM_II_OR_ET /* Edge touch or interior intersect */

SM_AI /* Area intersect */

SM_II /* Interior intersect */

SM_AI_NO_ET /* Area intersect and no edge touch */

SM_II_NO_ET /* Interior intersect and no edge touch */

SM_PC /* Primary contained in secondary */

SM_SC /* Secondary contained in primary */

SM_PC_NO_ET /* Primary contained and no edge touch */

SM_SC_NO_ET /* Secondary contained and no edge touch */

SM_PIP /* First point in primary in sec */

SM_IDENTICAL /* Identical */

See ‘Data access model’ for a discussion of spatial search options in ArcSDE.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_ROW_NOEXIST
SE_FUNCTION_SEQUENCE_ERROR
SE_INCOMPATIBLE_COORDREFS
SE_INVALID_FILTER_TYPE
SE_INVALID_SHAPE_OBJECT
SE_INVALID_LAYER_NUMBER
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_SPATIAL_CONSTRAINT
SE_LAYER_MISMATCH
SE_LOAD_ONLY_LAYER
SE_MULTIPLE_SPATIAL_COLS
SE_NO_LAYER_SPECIFIED
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_INVALID_SEARCH_METHOD

Notes

• Call SE_stream_set_spatial_constraints with zero filters to cancel previously set filters.

• An error occurs if the application specifies an SE_SPATIAL_FIRST search order and none of the filters is set to TRUE.

• You can call this function only after initializing the stream with a layer or logfile query and before calling SE_stream_execute .

• If calc_masks is FALSE, a call to SE_stream_get_spatial_masks returns an SE_NO_SPATIAL_MASKS error.

• If calc_masks is TRUE, all spatial masks are returned.

• It is much more efficient to set calc_masks to FALSE. Do not set it to TRUE unless your application truly needs the spatial mask information.

• If you have an SM_ENVP search method on a spatial filter, setting calc_masks to TRUE causes ArcSDE to examine the full feature geometry which loses any performance benefits of the SM_ENVP search method.


SE_stream_set_ssa_filter

Sets a server-side application filter on a stream.

Usage syntax

LONG SE_stream_set_ssa_filter
(SE_STREAM stream,
const CHAR *ssaName,
const CHAR *init_str);

Parameters

stream | The stream handle.
ssaName | The name of the server-side application.
init_str | The SSA initialization string.

Description

SE_stream_set_ssa_filter sets a server-side application filter on a stream. Once this function is called, subsequent calls to function like SE_stream_execute and SE_stream_fetch will filter data through the SSA functions.

Returns


SE_stream_set_state

Sets state constraints for a stream.

Usage syntax

LONG SE_stream_set_state
(SE_STREAM stream,
LONG source_id,
LONG differences_id,
LONG difference_type);

Parameters

stream | The stream handle.
source_id | The source state ID.
differences_id | The differences state ID.
difference_type | The difference type.

Description

SE_stream_set_state sets the state constraints for input and output for a stream. If a difference type is specified, only those features which fit the difference type are returned. Difference types are

SE_STATE_DIFF_NOCHECK

Don't check the differences between source state and differences state. Return all features in the source state.

SE_STATE_DIFF_NOCHANGE_UPDATE

Return all the features that haven't changed in the source state, but have been updated in the differences state.

SE_STATE_DIFF_NOCHANGE_DELETE

Return all the features that haven't changed in the source state, but have been deleted in the differences state.

SE_STATE_DIFF_UPDATE_NOCHANGE

Return all the features that have been updated in the source state, but unchanged in the differences state.

SE_STATE_DIFF_UPDATE_UPDATE

Return all the features that have been updated in both the source and differences state.

SE_STATE_DIFF_UPDATE_DELETE

Return all the features that have been updated in the source state but deleted in the differences state.

SE_STATE_DIFF_INSERT

Return all the features that were inserted into the source state and that never existed in the differences state.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STATE_ID
SE_INVALID_STREAM
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STATE_NOEXIST
SE_STATES_ARE_SAME
SE_STREAM_IN_PROGRESS


SE_stream_set_string

Sets the value for a string column.

Usage syntax

LONG SE_stream_set_string
(SE_STREAM stream,
SHORT column,
const CHAR *string_val);

Parameters

stream | The stream handle.
column | The column number to set. Columns numbers start with the number 1.
string_val | Pointer to the string value to set.

Description

SE_stream_set_string sets the value of a string column, which is used to insert or update a row in a table or layer.

Returns

SE_SUCCESS
SE_BIND_CONFLICT
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FAILURE
SE_FUNCTION_SEQUENCE_ERROR
SE__INVALID_COLUMN_VALUE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_INVALID_STREAM_TYPE
SE_SDE_NOT_STARTED
SE_WRONG_COLUMN_TYPE

Notes

• If string_val is NULL, a NULL value is set for this column.

• The string must end with a NULL character.

• An SE_BIND_CONFLICT error is returned if SE_stream_bind_input_column was already called for the specified column.


SE_stream_set_write_mode

Enables buffered inserts.

Usage syntax

LONG SE_stream_set_write_mode
(SE_STREAM stream,
BOOL buffered);

Parameters

stream | The stream handle.
buffered | TRUE if buffering between the client and server is enabled for write operations; FALSE if disabled.

Description

SE_stream_set_write_mode enables or disables buffered writes on the ArcSDE server, which affects the insertion of rows in tables and layers. Buffering allows ArcSDE to optimize the transmission of data between the client and the server. It also optimizes the interaction between the ArcSDE server and the underlying database management system.

When buffered writes are turned off (the default), a call to SE_stream_execute causes an insert to the DBMS to occur immediately. If the application enables buffered writes, data is written to the DBMS only when the internal buffers fill up.

To force the internal buffer to be sent to the ArcSDE server and inserted into the DBMS, call SE_stream_flush_buffered_writes . Other functions that send any existing buffers to the ArcSDE server and insert them into the DBMS are:

SE_stream_close SE_connection_commit_transaction
SE_stream_free SE_connection_free

However, these functions won’t report any errors that occur during the inserts. Therefore, it’s a good idea to call SE_stream_flush_buffered_writes before calling any of these functions.

When buffered writes are turned on, errors on insert (such as a filled extent or violated constraint) may not be reported when SE_stream_execute processes the row. Instead, it is reported when the buffer containing the row is transmitted to the server, and the server attempts to store the row. Use SE_stream_get_ext_error to retrieve error returns for buffered writes.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_FUNCTION_SEQUENCE_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_STREAM_TYPE
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_stream_update_ordered

Prepares to update a set of rows.

Usage syntax

LONG SE_stream_update_ordered
(SE_STREAM stream,
const CHAR *table,
LONG *sde_row_id,
const LONG *id_list,
LONG id_count,
SHORT num_columns,
const CHAR **columns);

Parameters

stream | The stream handle.
table | The table.
sde_row_id | The identifier of the feature used to identify which row in the table to update.
id_list | The IDs of the rows.
id_count | The number of row IDs.
num_columns | The number of columns to use when inserting data.
columns | The array of column names to use.

Description

SE_stream_update_ordered prepares to update a set of rows. Unlike SE_stream_update_row, you have to specify the IDs of all the rows to update, and you must pass the information in ascending row ID order. The table and id_list identify the table and rows that you plan to update. The columns argument specifies which columns to update. Use sde_row_id to set the current row that you’re updating. If sde_row_id doesn’t match the id_list, SE_ROW_OUT_OF_SEQUENCE is returned by SE_stream_flush_buffered_writes or SE_stream_execute.

Returns

SE_SUCCESS
SE_FAILURE
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_LAYER_NUMBER
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_update_row

Prepares to update a row in a registered table.

Usage syntax

LONG SE_stream_update_row
(SE_STREAM stream,
const CHAR *table,
LONG *sde_row_id,
SHORT num_columns,
const CHAR **columns);

Parameters

stream | The stream handle.
table | A pointer to the row’s table.
sde_row_id | A pointer to the row to update.
num_columns | The number of columns to update.
columns | A pointer to a array of column names.

Description

SE_stream_update_row prepares to update a row in a registered table.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_LAYER_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS


SE_stream_update_sdodim_table

Updates the lower and upper bounds of the SDODIM table.

Usage syntax

LONG SE_stream_update_sdodim_table
(SE_STREAM stream,
const CHAR *table);

Parameters

stream | The stream handle.
table | A pointer to the table.

Description

SE_stream_update_sdodim_table updates the lower and upper bounds of the SDODIM table if necessary.

Returns


SE_stream_update_table

Prepares to update rows in a table.

Usage syntax

LONG SE_stream_update_table
(SE_STREAM stream,
const CHAR *table,
SHORT num_columns,
const CHAR **columns,
const CHAR *where);

Parameters

stream | The stream handle.
table | The table name.
num_columns | The number of columns to update.
columns | The array of column names to update.
where | SQL where clause.

Description

SE_stream_update_table sets up the constraints for updating existing records in any DBMS table including spatially enabled tables. The where clause parameter specifies which rows to update. The SE_stream_execute function performs the actual update.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STREAM
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST

Notes

• WARNING If the where clause argument is NULL or an empty string, then every row in the table is updated to the specified values.

• After calling SE_stream_update_table to initialize a stream, the application must set a value for each named column using SE_stream_bind_input_column or one of the SE_stream_set_* functions. Each named column must have a value (which is NULL by default) before the application can call SE_stream_execute .


SE_table_add_column

Adds a column to a DBMS table.

Usage syntax

LONG SE_table_add_column
(SE_CONNECTION connection,
const CHAR *table,
const SE_COLUMN_DEF *column_def);

Parameters

connection | The connection handle.
table | The name of the table.
column_def | An SE_COLUMN_DEF structure defining the column.

Description

SE_table_add_column adds a column to a DBMS table. The column is defined by an SE_COLUMN_DEF structure. A column definition is defined by:

typedef struct {

CHAR column_name[SE_MAX_COLUMN_LEN]; /* The column name */

LONG sde_type; /* The SDE data type */

LONG size; /* The size of the column values */

SHORT decimal_digits; /* Number of digits after decimal */

BOOL nulls_allowed; /* Allow NULL values */

} SE_COLUMN_DEF;

The allowed column types (sde_type) are:

SE_SMALLINT_TYPE /* 2-byte integer */

SE_INTEGER_TYPE /* 4-byte integer */

SE_FLOAT_TYPE /* 4-byte float */

SE_DOUBLE_TYPE /* 8-byte float */

SE_STRING_TYPE /* Null term. Character array */

SE_BLOB_TYPE /* Variable length data */

SE_DATE_TYPE /* Struct tm date */

You cannot create a column of type SE_SHAPE_TYPE with this function. If you wish to create a shape column, create it as an SE_INTEGER_TYPE and use SE_layer_create to spatially enable it.

Several restrictions exist on the size and decimal_digits variables. The small integer and integer types require that decimal_digits value is equal to zero, while float and double need a decimal_digits value of greater than zero. The size also has required ranges. The following definitions are Oracle-specific but are similar for other DBMSs. See the ArcSDE Version 4.0 Configuration and Tuning Guide for your DBMS for the actual definitions.

SE_SMALLINT_TYPE NUMBER(4,0)

SE_INTEGER_TYPE NUMBER(9,0)

SE_FLOAT_TYPE NUMBER(6,2)

SE_DOUBLE_TYPE NUMBER(15,4)

SE_STRING_TYPE VARCHAR2(255)

SE_BLOB_TYPE LONG RAW

The SE_INTEGER_TYPE is defined as less than 10, rather than 11, because otherwise we cannot guarantee that we can retrieve a LONG value. If an integer value is greater than 999,999,999, then you must store it in as an SE_FLOAT_TYPE or an SE_DOUBLE_TYPE.

If you set the size and decimal_digits parameters of the SE_COLUMN_DEF structure as zeroes, the default values for the data type are used.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_COLUMN_DEF
SE_INVALID_COLUMN_TYPE
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_table_add_locator

Adds a locator to a DBMS table.

Usage syntax

LONG SE_table_add_locator
(SE_CONNECTION connection,
const CHAR *table,
const SE_LOCATORINFO locator);

Parameters

connection | The connection handle.
table | The name of the table.
locator | The locator.

Description

SE_table_add_locator adds a locator to a DBMS table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_LOCATOR
SE_INVALID_LOCATOR_NAME
SE_INVALID_LOCATOR_OBJECT_TYPE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_add_rowlocks

Adds row locks to a DBMS table.

Usage syntax

LONG SE_table_add_rowlocks
(SE_CONNECTION connection,
const CHAR *table,
LONG num_locks,
LONG *row_ID,
LONG state_ID,
LONG *failed_rowID);

Parameters

connection | The connection handle.
table | The name of the table.
num_locks | The number of locks.
row_ID | The array of row IDs to lock.
state_ID | The state ID to use. Set to SE_NULL_STATE_ID if the table isn't multiversioned.
failed_rowID | The first row that couldn't be locked. Zero if the operation succeeded.

Description

SE_table_add_rowlocks adds one or more row locks to a DBMS table. If a row doesn't exist in the specified state or is already locked, the operation will fail. This function automatically executes a commit.

Returns


SE_table_calculate_stats

Obsolete. Generates statistics for a table.

Usage syntax

LONG SE_table_calculate_stats
(SE_CONNECTION connection,
const CHAR *column,
LONG mask,
const SE_SQL_CONSTRUCT *construct,
LONG max_distinct,
SE_STATS **stats);

Parameters

connection | The connection handle.
column | The DBMS column name.
mask | Which statistics to calculate.
construct | A pointer to an SE_SQL_CONSTRUCT structure.
max_distinct | The maximum number of distinct values allowed.
stats | The SE_STATS structure that will contain the statistics.

Description

SE_table_calculate_stats returns a set of statistics for a column. You can also use an SQL column expression as the column name (e.g., "COLUMN_1 + COLUMN_2 * 10"). The expression must be supported by the underlying DBMS.

The SE_SQL_CONSTRUCT structure is defined as follows:

typedef struct {
LONG     num_tables;
 /* Number of tables */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

The mask parameter uses a bit-mask to determine which statistics to calculate. The possibilities are:

SE_MIN_STATS /* The minimum value */

SE_AVERAGE_STATS /* The average value */

SE_MAX_STATS /* The maximum value */

SE_STD_DEV_STATS /* The standard deviation */

SE_COUNT_STATS /* The number of rows */

SE_DISTINCT_STATS /* The distinct information */

SE_BASIC_STATS /* Returns minimum, average, maximum,

standard deviation, and count */

SE_ALL_STATS /* Returns the basic plus distinct statistics */

The statistics are returned in an SE_STATS structure.

typedef struct { /* Statistics structure */

LONG count; /* Number of rows */

LFLOAT min; /* Minimum value */

LFLOAT average; /* Average value */

LFLOAT max; /* Maximum value */

LFLOAT std_dev; /* Standard deviation */

SE_DISTINCT *distinct; /* Distinct info */

} SE_STATS;

typedef struct {

LONG num_distinct; /* Number of distinct values */

LONG type; /* Value type */

SE_VALUE *values; /* Array of counts and union’ed values */

} SE_DISTINCT;

typedef struct {

LONG freq; /* Frequency of value */

union {

CHAR *str_val; /* SE_STRING_TYPE value */

LONG int_val; /* SE_INTEGER_TYPE value */

LFLOAT double_val; /* SE_DOUBLE_TYPE value */

struct tm date_val; /* SE_DATE_TYPE value */

} uval;

} SE_VALUE;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_DISTINCT_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_STATS_TYPE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TOO_MANY_DISTINCTS


SE_table_create

Creates a DBMS table.

Usage syntax

LONG SE_table_create
(SE_CONNECTION connection,
const CHAR *table,
SHORT num_columns,
const SE_COLUMN_DEF *column_defs,
const CHAR *config_keyword);

Parameters

connection | The connection handle.
table | The name of the table to create.
num_columns | The number of columns in the table.
column_defs | An array of SE_COLUMN_DEF structures defining the columns of the table.
config_keyword | A configuration keyword entry from the dbtune table. Each keyword corresponds to a set of DBMS specific tuning parameters. Please refer the ArcSDE Configuration and Tuning guide for more information on setting up the dbtune parameters.

Description

SE_table_create creates a DBMS table that is not spatially enabled. The columns are defined by an array of SE_COLUMN_DEF structures. Column definitions are defined as:

typedef struct {

CHAR column_name[SE_MAX_COLUMN_LEN]; /* The column name */

LONG sde_type; /* The SDE data type */

LONG size; /* The size of the column values */

SHORT decimal_digits; /* Number of digits after decimal */

BOOL nulls_allowed; /* Allow NULL values */

} SE_COLUMN_DEF;

The allowed column types (sde_type) are:

SE_SMALLINT_TYPE /* 2-byte integer */

SE_INTEGER_TYPE /* 4-byte integer */

SE_FLOAT_TYPE /* 4-byte float */

SE_DOUBLE_TYPE /* 8-byte float */

SE_STRING_TYPE /* Null term. Character array */

SE_BLOB_TYPE /* Variable length data */

SE_DATE_TYPE /* Struct tm date */

You cannot create a column of type SE_SHAPE_TYPE with this function. If you wish to create a shape column, create it as an SE_INTEGER_TYPE and use SE_layer_create to spatially enable it.

Several restrictions exist on the size and decimal_digits variables. The small integer and integer types require that decimal_digits value is equal to zero, while float and double need a decimal_digits value of greater than zero. The size also has required ranges. The following definitions are Oracle-specific. See the ArcSDE Configuration and Tuning Guide for your DBMS for the actual definitions.

SE_SMALLINT_TYPE NUMBER(4,0)

SE_INTEGER_TYPE NUMBER(9,0)

SE_FLOAT_TYPE NUMBER(6,2)

SE_DOUBLE_TYPE NUMBER(15,4)

SE_STRING_TYPE VARCHAR2(255)

SE_BLOB_TYPE LONG RAW

If you set the size and decimal_digits parameters of the SE_COLUMN_DEF structure as zeroes, the default values for the data type are used.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_COLUMN_DEF
SE_INVALID_COLUMN_TYPE
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_EXISTS

Notes

• Use the configuration keyword to control the disk layout of the table such as the initial extents.


SE_table_create_index

Creates a DBMS index on a table.

Usage syntax

LONG SE_table_create_index
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column,
BOOL unique,
BOOL ascending,
const CHAR *index_name,
const CHAR *config_keyword);

Parameters

connection | The connection handle.
table | The DBMS table name.
column | The DBMS column name.
unique | Set to TRUE if index is unique.
ascending | Set to TRUE if index is ascending.
index_name | The index name.
config_keyword | Keyword indicating alternate default configurations. The keyword is found in the dbtune.sde file.

Description

SE_table_create_index creates a DBMS index on the specified table. You can also use SE_table_create_indexes .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_create_indexes

Creates DBMS indexes on a table.

Usage syntax

LONG SE_table_create_indexes
(SE_CONNECTION connection,
const CHAR *table,
SHORT num_indexes,
SE_INDEX_DEF *index_defs,
const CHAR *config_keyword);

Parameters

connection | The connection handle.
table | The DBMS table name.
num_indexes | The number of indexes to create.
index_defs | A pointer to an SE_INDEX_DEF structure.
config_keyword | Keyword indicating alternate default configurations. The keyword is found in the dbtune.sde file.

Description

SE_table_create_indexes creates one or more DBMS indexes on the specified table. Use SE_INDEX_DEF whose structure is

typedef struct {

SHORT num_columns; /* number of columns */

CHAR **column_name; /* the column name */

CHAR index_name[SE_MAX_COLUMN_LEN]; /* the index name */

BOOL unique; /* unique index */

BOOL ascending; /* ascending order */

} SE_INDEX_DEF;

Returns


SE_table_create_mv_view

Creates a multiversion DBMS view on a multiversion table.

Usage syntax

LONG SE_table_create_mv_view
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *mv_view);

Parameters

connection | The connection handle.
table | The DBMS table name.
mv_view | The name of the view.

Description

SE_table_create_mv_view creates an multiversion DBMS view on the specified multiversion table. A multiversion table may have only one multiversion view at a time.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NOT_TABLE_OWNER
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_TABLE_NOREGISTERED
SE_TABLE_NOT_MULTIVERSION
SE_VIEW_EXISTS


SE_table_create_primarykey_constraint

Creates a PRIMARY KEY constraint for a table.

Usage syntax

LONG SE_table_create
(SE_CONNECTION connection,
const CHAR *table,
SHORT num_columns,
const CHAR **columns,
const CHAR *constraint_name,
const CHAR *config_keyword);

Parameters

connection | The connection handle.
table | The DBMS table name.
num_columns | The number of columns on which index is created.
columns | The DBMS column names on which the index is created.
constraint_name | The constraint name.
config_keyword | Keyword indicating alternate configuration. The keywords are found in the SDE.DBTUNE table.

Description

SE_table_create_primarykey_constraint creates a DBMS PRIMARY KEY constraint on the specified table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_create_unique_constraint

Creates a UNIQUE constraint for a table.

Usage syntax

LONG SE_table_create_unique_constraint(
SE_CONNECTION connection,
const CHAR *table,
SHORT num_columns,
const CHAR **columns,
const CHAR *constraint_name,
const CHAR *config_keyword);

Parameters

connection | The connection handle.
table | The DBMS table name.
num_columns | The number of columns on which index is created.
columns | The DBMS column names on which the index is created.
constraint_name | The constraint name.
config_keyword | Keyword indicating alternate configuration. The keywords are found in the SDE.DBTUNE table.

Description

SE_table_create_unique_constraint creates a DBMS UNIQUE constraint on the specified table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_create_view

Creates a DBMS view on a table.

Usage syntax

LONG SE_table_create_view
(SE_CONNECTION connection,
const CHAR *view,
SHORT num_view_columns,
SHORT num_table_columns,
const CHAR **view_columns,
const CHAR **table_columns,
const SE_SQL_CONSTRUCT *construct);

Parameters

connection | The connection handle.
table | The DBMS table name.
num_view_columns | The number of view columns.
num_table_columns | The number of table columns.
view_columns | The names of the columns in the view.
table_columns | The names of the columns in the table.
construct | The SQL constructor.

Description

SE_table_create_view creates a DBMS view on the specified table. The view is registered after creation. The SE_SQL_CONSTRUCT structure is:

typedef struct {

LONG num_tables; /* Number of tables in join */

CHAR **tables; /* Table names */

CHAR *where; /* Where clause */

} SE_SQL_CONSTRUCT;

Returns


SE_table_delete

Drops a DBMS table.

Usage syntax

LONG SE_table_delete
(SE_CONNECTION connection,
const CHAR *table);

Parameters

connection | The connection handle.
table | The name of the DBMS table to delete.

Description

SE_table_delete deletes the specified DBMS table including the table definition. If the table is spatially enabled, all of its associated spatial information for the layer is also deleted.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The user must have appropriate DBMS privileges to delete a table and associated spatial information.


SE_table_delete_constraint

Deletes the named constraint form a table.

Usage syntax

LONG SE_table_delete_constraint(
SE_CONNECTION connection,
const CHAR *table,
const CHAR *constraint_name);

Parameters

connection | The connection handle.
table | The DBMS table name.
constraint_name | The constraint name.

Description

SE_table_delete_constraint deletes the named constraint from the specified table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_delete_index

Drops a DBMS index.

Usage syntax

SE_table_delete_index
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *index_name);

Parameters

connection | The connection handle.
table | The name of the DBMS table on which the index is created.
index_name | The name of the DBMS index to delete.

Description

SE_table_delete_index deletes a DBMS index for the specified table. Some DBMSs require unique index names within a namespace. Therefore, they do not require a table name to uniquely identify an index. For these DBMSs, you can pass an empty string as the table parameter. Depending on the DBMS, you may need to prefix the index or table name with the owner’s name (e.g., ‘owner.table’ or ‘owner.index’).

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INDEX_NOEXIST
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED


SE_table_delete_locator

Deletes a locator from a DBMS table.

Usage syntax

LONG SE_table_delete_locator
(SE_CONNECTION connection,
const CHAR *table,
LONG locator_name);

Parameters

connection | The connection handle.
table | The name of the table.
locator_name | The locator ID.

Description

SE_table_delete_locator deletes a locator from a DBMS table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_LOCATOR_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_HAS_NO_LOCATOR
SE_TABLE_NOEXIST


SE_table_delete_mv_view

Deletes a multiversion DBMS view on a multiversion table.

Usage syntax

LONG SE_table_delete_mv_view
(SE_CONNECTION connection,
const CHAR *table);

Parameters

connection | The connection handle.
table | The DBMS table name.

Description

SE_table_delete_mv_view deletes an multiversion DBMS view on the specified multiversion table.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NOT_TABLE_OWNER
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_TABLE_NOREGISTERED
SE_TABLE_NOT_MULTIVERSION
SE_VIEW_NOEXIST


SE_table_describe

Returns column definitions for the specified table.

Usage syntax

LONG SE_table_describe
(SE_CONNECTION connection,
const CHAR *table,
SHORT *num_columns,
SE_COLUMN_DEF **column_defs);

Parameters

connection | The connection handle.
table | The name of the DBMS table to describe.
num_columns | The number of columns in the table.
column_defs | The address of an unallocated SE_COLUMN_DEF pointer in which to return the column definitions.

Description

SE_table_describe returns the definitions of all columns in the specified DBMS table. This function maps the underlying DBMS data types to ArcSDE data types. Column definitions are defined in an SE_COLUMN_DEF structure as:

typedef struct {

CHAR column_name[SE_MAX_COLUMN_LEN]; /* The column name */

LONG sde_type; /* The SDE data type */

LONG size; /* The size of the column values */

SHORT decimal_digits; /* Number of digits after decimal */

BOOL nulls_allowed; /* Allow NULL values */

} SE_COLUMN_DEF;

The column types (sde_type) are:

SE_SMALLINT_TYPE /* 2-byte integer */

SE_INTEGER_TYPE /* 4-byte integer */

SE_FLOAT_TYPE /* 4-byte float */

SE_DOUBLE_TYPE /* 8-byte float */

SE_STRING_TYPE /* Null term. Character array */

SE_BLOB_TYPE /* Variable length data */

SE_DATE_TYPE /* Struct tm date */

SE_SHAPE_TYPE /* Feature structure */

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The columns argument allocates an array of SE_COLUMN_DEF structures. Deallocate them by calling SE_table_free_descriptions .


SE_table_describe_indexes

Returns index definitions for the specified table.

Usage syntax

LONG SE_table_describe_indexes
(SE_CONNECTION connection,
const CHAR *table,
SHORT *num_indexes,
SE_INDEX_DEF **index_defs);

Parameters

connection | The connection handle.
table | The name of the DBMS table.
num_indexes | The number of indexes in the table.
index_defs | The address of an unallocated SE_INDEX_DEF pointer in which to return the index definitions.

Description

SE_table_describe_indexes returns the definitions of all indexes in the specified DBMS table. Index definitions are defined in an SE_INDEX_DEF structure as:

typedef struct {

SHORT num_columns; /* number of columns */

CHAR **column_name; /* the column name */

CHAR index_name[SE_MAX_COLUMN_LEN]; /* the index name */

BOOL unique; /* unique index */

BOOL ascending; /* ascending order */

} SE_INDEX_DEF;

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The columns argument allocates an array of SE_INDEX_DEF structures. Deallocate them by calling SE_table_free_index_descriptions .


SE_table_drop_column

Deletes a column from a DBMS table.

Usage syntax

LONG SE_table_drop_column
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *column);

Parameters

connection | The connection handle.
table | The name of the table.
column | The DBMS column name.

Description

SE_table_drop_column deletes a column from a DBMS table. You can't delete spatial columns with this function. Use SE_layer_delete to remove a spatial column.

Returns


SE_table_free_descriptions

Frees an array of column definitions allocated from SE_table_describe.

Usage syntax

void SE_table_free_descriptions (SE_COLUMN_DEF *column_defs);

Parameters

column_defs

A pointer to an array of SE_COLUMN_DEF structures to deallocate.

Description

SE_table_free_descriptions frees an array of SE_COLUMN_DEF structures that were allocated by the SE_table_describe function.


SE_table_free_index_descriptions

Frees an array of index definitions allocated from SE_table_describe_indexes .

Usage syntax

void SE_table_free_index_descriptions (SE_INDEX_DEF *index_defs);

Parameters

index_defs

A pointer to an array of SE_INDEX_DEF structures to deallocate.

Description

SE_table_free_index_descriptions frees an array of SE_INDEX_DEF structures that were allocated by the SE_table_describe_indexes function.


SE_table_free_list

Frees an array of table names allocated from SE_table_list.

Usage syntax

void SE_table_free_list
(LONG num_tables,
CHAR **tables);

Parameters

num_tables | The number of tables.
tables | A pointer to an array to deallocate.

Description

SE_table_free_list frees an array of table names that was allocated by the SE_table_list function.


SE_table_free_locator_list

Frees the memory allocated by SE_table_get_locator_list .

Usage syntax

void SE_table_free_locator_list
(LONG num_locators,
SE_LOCATORINFO *locator_list);

Parameters

num_locators | The number of locator IDs.
locator_list | A pointer to an SE_LOCATORINFO object.

Description

SE_table_free_locator_list the memory allocated by SE_table_get_locator_list .


SE_table_free_lock

Frees the locks on a table.

Usage syntax

LONG SE_table_free_lock
(SE_CONNECTION connection,
const CHAR *table);

Parameters

connection | The connection handle.
table | The table name.

Description

SE_table_free_lock frees the locks on a table.

Returns


SE_table_free_locks

Frees an array of locks.

Usage syntax

void SE_table_free_locks
(SE_TABLE_LOCK *lock_list,
LONG lock_count);

Parameters

lock_count | The number of locks.
lock_list | A pointer to an array to deallocate.

Description

SE_table_free_locks frees an array of locks retrieved with SE_table_get_locks .


SE_table_free_rowlocks_list

Frees an array of row lock IDs.

Usage syntax

void SE_table_free_rowlocks_list
(LONG num_locks,
LONG *row_ID,
CHAR **user_name);

Parameters

num_locks | The number of row locks.
row_ID | A pointer to an array of row IDs.
user_name | A pointer to an array of user names.

Description

SE_table_free_rowlocks_list frees an array of row lock IDs and user names that was allocated by the SE_table_get_rowlocks or SE_table_get_rowlocks_by_user functions.


SE_table_free_stats

Releases the memory used by an SE_STATS structure.

Usage syntax

void SE_table_free_stats (SE_STATS *stats);

Parameters

stats

The SE_STATS structure.

Description

SE_table_free_stats frees the memory used by the SE_STATS structure created by SE_table_calculate_stats .


SE_table_get_ids

Returns a range of row id values for a specified table.

Usage syntax

LONG SE_table_get_ids
(SE_CONNECTION connection,
const CHAR *table,
LONG num_ids,
LONG *start_id,
LONG *id_count);

Parameters

connection | The connection handle.
table | A pointer to a table name.
num_ids | The caller specifies the desired number of id values as num_ids.
start_id | A pointer to the list of start ids.
id_count | A pointer to the number of row ids returned.

Description

SE_table_get_ids returns a range of row id values for a specified table.

Returns

SE_SUCCESS
SE_INVALID_REGISTRATION_ID
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOT_REGISTERED
SE_TABLE_NOEXIST


SE_table_get_locator

Retrieves the locator IDs associated with a table.

Usage syntax

LONG SE_table_get_locator
(SE_CONNECTION connection,
const CHAR *table,
LONG **locator_ids,
LONG *num_locators);

Parameters

connection | The connection handle.
table | A pointer to a table name.
locator_ids | A pointer to the list of locator IDs.
record_count | The number of locator IDs.

Description

SE_table_get_locator returns a list of locator IDs associated with a table.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOCATOR_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_HAS_NO_LOCATOR
SE_TABLE_NOEXIST


SE_table_get_locator_list

Retrieves the locator IDs associated with a table.

Usage syntax

LONG SE_table_get_locator_list
(SE_CONNECTION connection,
const CHAR *table,
SE_LOCATORINFO **locator_list,
LONG *num_locators);

Parameters

connection | The connection handle.
table | A pointer to a table name.
locator_list | A pointer to an SE_LOCATORINFO object.
num_locators | The number of locator IDs.

Description

SE_table_get_locator_list returns a list of locator IDs associated with a table.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_LOCATOR_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_HAS_NO_LOCATOR
SE_TABLE_NOEXIST


SE_table_get_locks

Returns the locks on a DBMS table.

Usage syntax

LONG SE_table_get_locks
(SE_CONNECTION connection,
const CHAR *table,
LONG *num_locks,
SE_TABLE_LOCK. **locks);

Parameters

connection | The connection handle.
table | The name of the table.
num_locks | The number of locks.
locks | The array of locks.

Description

SE_table_get_locks returns the locks on a DBMS table. The SE_TABLE_LOCK structure is

typedef struct {

CHAR username[SE_MAX_OWNER_LEN + 4];

LONG lock_type;

} SE_TABLE_LOCK ;

Returns


SE_table_get_mvedit_states

Get all the states a multiversion table was modified in.

Usage syntax

extern LONG SDEAPI SE_table_get_mvedit_states
(SE_CONNECTION handle,
const CHAR *table,
SE_STATEINFO **state_list,
LONG *count)

Parameters

handle | The SDE connection handle.
table | Multiversion table to fetch edit states for.
state_list | Pointer to the variable to receive the pointer to the allocated state list.
count | The number of state entries in state_list.

Description

This function returns a list of states in which the multiversion table has been edited. The state list should be freed by a call to SE_state_free_info_list() when no longer needed

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_TABLE_NOT_MULTIVERSION
SE_TABLE_NOEXIST

Notes:

This function joins the SDE MVTABLES_MODIFIED metadata table against the STATES metadata table to produce this list.


SE_table_get_permissions

Returns the permissions for a given table.

Usage syntax

LONG SE_table_get_permissions
(SE_CONNECTION connection,
const CHAR *table
LONG *permissions);

Parameters

connection | The connection handle.
table | A pointer to a table name.
permissions | Pointer to a permission bit-mask.

Description

SE_table_get_permissions returns the permissions for a given table. Permissions are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

The table name is in the format <owner>.<table>. If <owner> is omitted, ArcSDE assumes that the current user is the owner.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_get_rowlocks

Returns the row locks on a DBMS table.

Usage syntax

LONG SE_table_get_rowlocks
(SE_CONNECTION connection,
const CHAR *table,
LONG *num_locks,
LONG **row_ID,
CHAR ***user_names);

Parameters

connection | The connection handle.
table | The name of the table.
num_locks | The number of locks.
row_ID | The array of row IDs.
user_names | The array of user names.

Description

SE_table_get_rowlocks returns the row locks on a DBMS table as arrays of row IDs, state IDs, and user names. You are responsible for freeing the row_ID and user_names arrays.

Returns


SE_table_get_rowlocks_by_user

Returns the row locks set by a particular user on a DBMS table.

Usage syntax

LONG SE_table_get_rowlocks_by_user
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *user_name,
LONG *num_locks,
LONG **row_ID);

Parameters

connection | The connection handle.
table | The name of the table.
user_name | The user name.
num_locks | The number of locks.
row_ID | The array of row IDs.

Description

SE_table_get_rowlocks_by_user returns the row locks set by a particular user on a DBMS table as arrays of row IDs and state IDs. You must set the user_name parameter. To return all row locks on a table, use SE_table_get_rowlocks. You are responsible for freeing the row_ID array.

Returns


SE_table_grant_access

Grants a user access to a given table.

Usage syntax

LONG SE_table_grant_access
(SE_CONNECTION connection,
const CHAR *table,
LONG privilege,
BOOL grant,
const CHAR *user);

Parameters

connection | The connection handle.
table | A pointer to a table name.
privilege | Pointer to a permission bit-mask.
grant | TRUE to allow the new user to grant rights.
user | The DBMS user name.

Description

SE_table_grant_access gives a user access to a given table. The table name is in the format <owner>.<table>. If <owner> is omitted, ArcSDE assumes that the current user is the owner. Privileges are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

You can grant multiple privileges by ORing the bitmasks. Set grant to TRUE if the specified user can grant and revoke privileges to other users.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_USER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The user must have appropriate DBMS privileges to grant access to a table.


SE_table_list

Generates a list of tables with the given permissions.

Usage syntax

LONG SE_table_list
(SE_CONNECTION connection,
LONG permissions,
LONG *num_tables,
CHAR **tables);

Parameters

connection | The connection handle.
permissions | Permission bit-mask.
num_tables | The number of tables.
tables | A pointer to an array of table names.

Description

SE_table_list allocates an array of pointers to one or more tables. The array lists all tables that have at least the permissions specified in the bit-mask. Permissions are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

You can form a compound permission mask by using the OR operator to combine several permissions. Table names have the notation <owner>.<table> for ORACLE databases and the <database>.<owner>.<table> notation for Sqlserver, Informix and DB2 UDB databases. Table names returned are sorted by database name, if applicable, and then sorted by owner, then by table.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• A call to the SE_table_free_list function must be made to free the array of table names allocated by the SE_table_list function.


SE_table_lock

Locks a table.

Usage syntax

LONG SE_table_lock
(SE_CONNECTION connection,
const CHAR *table,
LONG lock_mode);

Parameters

connection | The connection handle.
table | A pointer to a table name.
lock_mode | The lock type.

Description

SE_table_lock locks a table. Lock modes are:

SE_TABLE_SHARED_SCHEMA_LOCK

SE_TABLE_EXCLUSIVE_SCHEMA_LOCK

A shared schema lock will prevent others from changing the table schema until the lock is released. A shared schema lock will also prevent someone from deleting a table or changing its permissions. Multiple users can establish shared schema locks. If a shared schema lock exists on a table, other users can’t establish an exclusive schema lock until all shared schema locks are released.

Use an exclusive schema lock to change a table’s schema. An exclusive schema lock will prevent other users from setting exclusive or shared schema locks until the exclusive schema lock is freed. If a user has already placed a schema lock on a table, the lock mode is updated to reflect the most recent call.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• A call to the SE_table_free_list function must be made to free the array of table names allocated by the SE_table_list function.


SE_table_make_qualified_name

Constructs a qualified name for a specific DBMS.

Usage syntax

LONG SE_table_make_qualified_name
(SE_CONNECTION connection,
const CHAR *database,
const CHAR *owner,
const CHAR *table,
const CHAR *column,
CHAR *qualified_name);

Parameters

connection | The connection handle.
database | The database name. This can be NULL.
owner | The table owner. This can be NULL.
table | The name of the table. This can be NULL.
column | The DBMS column name. This can be NULL.
qualified_name | The qualified DBMS name.

Description

SE_table_make_qualified_name makes a qualified table or column name for a specific DBMS. Each DBMS constructs a qualified or complete name differently.

Oracle® or DB2® Universal Database | owner.table.column
Sybase® or Microsoft SQL Server™ | database.owner.table.column
Informix® Dynamic Server | database:owner.table.column
ArcInfo® | table or column
Jet™ | table.column

Here’s an example.

LONG test_qualified_name(SE_CONNECTION handle)

{

CHAR qualified_name[SE_QUALIFIED_COLUMN_LEN];

CHAR database[SE_MAX_DATABASE_LEN];

CHAR owner[SE_MAX_OWNER_LEN];

CHAR table[SE_MAX_TABLE_LEN];

CHAR column[SE_MAX_COLUMN_LEN];

LONG rc=SE_SUCCESS;

strcpy(database, " sde40");

strcpy(owner, "sdetest ");

strcpy(table, " borders ");

strcpy(column, " feature ");

fprintf(stdout, "TEST1: make a qualified column name with the database,

owner, table and column names \n");

rc = SE_table_make_qualified_name ( handle, database, owner, table,

column, qualified_name);

QA_returncode_check( handle, NULL, rc, " SE_table_make_qualified_name ");

fprintf(stdout, "The qualified_name = %s \n", qualified_name);

fprintf(stdout, "TEST2: make a qualified column name with the owner,

table and column names. \n");

/* . . . */

}

Returns


SE_table_metadata_add

Adds meta-data to a table.

Usage syntax

LONG SE_table_metadata_add
(SE_CONNECTION connection,
const CHAR *table,
LONG record_count,
const SE_METADATAINFO *metadata_records);

Parameters

connection | The connection handle.
table | A pointer to a table name.
record_count | The number of meta-data records.
metadata_records | A pointer to the meta-data records.

Description

SE_table_metadata_add adds meta-data entries. A particular entry is identified by its record ID value. Use SE_metadatainfo_create to create the meta-data records.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_metadata_alter

Changes the meta-data associated with a table.

Usage syntax

LONG SE_table_metadata_alter
(SE_CONNECTION connection,
const CHAR *table,
LONG record_count,
const SE_METADATAINFO *metadata_records);

Parameters

connection | The connection handle.
table | A pointer to a table name.
record_count | The number of meta-data records.
metadata_records | A pointer to the meta-data records.

Description

SE_table_metadata_alter changes the meta-data associated with a table. A particular entry is identified by its record ID value. You can use SE_table_metadata_alter to update the class name, object name, object type, property, and value of the meta-data.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_metadata_delete

Deletes the meta-data records from a table.

Usage syntax

LONG SE_table_metadata_delete
(SE_CONNECTION connection,
const CHAR *table,
LONG record_count,
LONG *record_id_list);

Parameters

connection | The connection handle.
table | A pointer to a table name.
record_count | The number of meta-data records.
record_id_list | A pointer to a list of meta-data records.

Description

SE_table_metadata_delete deletes meta-data records from a table. A particular entry is identified by its record ID value.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_metadata_delete_where

Deletes meta-data records from a table with a where clause.

Usage syntax

LONG SE_table_metadata_delete_where
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *where_clause);

Parameters

connection | The connection handle.
table | A pointer to a table name.
where_clause | A pointer to a where_clause.

Description

SE_table_metadata_delete_where deletes meta-data records from a table using a where clause. The object owner and name are added automatically to the where clause.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_metadata_free_info_list

Frees the meta-data associated with a table.

Usage syntax

void SE_table_metadata_free_info_list
(LONG record_count,
SE_METADATAINFO *metadata_records);

Parameters

record_count | The number of metadata records.
metadata_list | A pointer to a list of metadata records.

Description

SE_table_metadata_free_info_list frees the memory allocated to a list of meta-data record structures that were allocated by SE_table_metadata_get_info_list .


SE_table_metadata_get_info_list

Retrieves the meta-data associated with a table.

Usage syntax

LONG SE_table_metadata_get_info_list
(SE_CONNECTION connection,
const CHAR *table,
SE_METADATAINFO **metadata_list,
LONG *record_count);

Parameters

connection | The connection handle.
table | A pointer to a table name.
metadata_list | A pointer to the meta-data records.
record_count | The number of meta-data records.

Description

SE_table_metadata_get_info_list returns a list of meta-data objects associated with a table. Use SE_table_metadata_free_info_list to free the list of objects.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_parse_qualified_name

Parses a qualified name for a specific DBMS.

Usage syntax

LONG SE_table_parse_qualified_name
(SE_CONNECTION connection,
const CHAR *qualified_name,
CHAR *database,
CHAR *owner,
CHAR *table,
CHAR *column,
BOOL iscolumn);

Parameters

connection | The connection handle.
qualified_name | The qualified DBMS name.
database | The database name. This can be NULL.
owner | The table owner. This can be NULL.
table | The name of the table. This can be NULL.
column | The DBMS column name. This can be NULL.
iscolumn | TRUE if the qualified name string represents a column name.

Description

SE_table_parse_qualified_name parses a qualified table or column name for a specific DBMS. Each DBMS constructs a qualified or complete name differently.

Oracle® or DB2® Universal Database owner.table.column

Sybase® or Microsoft SQL Server™ database.owner.table.column

Informix® Dynamic Server database:owner.table.column

ArcInfo® table or column

Jet™ table.column

Returns


SE_table_remove_rowlocks

Removes row locks from a DBMS table.

Usage syntax

LONG SE_table_remove_rowlocks
(SE_CONNECTION connection,
const CHAR *table,
LONG num_locks,
LONG *row_ID,
LONG state_ID,
LONG *failed_rowID);

Parameters

connection | The connection handle.
table | The name of the table.
num_locks | The number of locks.
row_ID | The array of row IDs to lock.
state_ID | The state ID to use. Set to SE_NULL_STATE_ID if the table isn't multiversioned.
failed_rowID | The first row that couldn't be unlocked. Zero if the operation succeeded.

Description

SE_table_remove_rowlocks deletes one or more row locks from a DBMS table. If a row doesn't exist in the specified state or is locked by another user, the operation will fail. This function automatically executes a commit.

Returns


SE_table_rename

Renames a table.

Usage syntax

LONG SE_table_rename
(SE_CONNECTION connection,
const CHAR *old_name,
const CHAR *new_name);

Parameters

connection | The connection handle.
old_name | The current name of the DBMS table.
new_name | The new name of the DBMS table.

Description

SE_table_rename changes the name of the specified DBMS table. If the table is registered, the registration entry is updated to reflect the new name. If the table is spatially enabled, the layer definition is updated. Any associated mango definitions are also updated.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_POINTER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_EXISTS
SE_TABLE_NOEXIST

Notes

• The user must have appropriate DBMS privileges to rename a table.


SE_table_return_ids

sends a set of unused id values back to the server for a specified table.

Usage syntax

LONG SE_table_return_ids
(SE_CONNECTION connection,
const CHAR *table,
LONG *start_id,
LONG *ids_returned);

Parameters

connection | The connection handle.
table | A pointer to a table name.
start_id | The caller specifies the start_id for the range to be returned.
ids_returned | The number of ids returned.

Description

SE_table_return_ids sends a set of unused id values back to the server for a specified table.

Returns

SE_SUCCESS
SE_INVALID_REGISTRATION_ID
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_TABLE_NOT_REGISTERED
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_table_revoke_access

Removes a user's privileges to a given table.

Usage syntax

LONG SE_table_revoke_access
(SE_CONNECTION connection,
const CHAR *table,
LONG privilege,
const CHAR *user);

Parameters

connection | The connection handle.
table | A pointer to a table name.
privilege | Pointer to a permission bit-mask.
user | The DBMS user name.

Description

SE_table_revoke_access removes a user's access to a given table. The table name is in the format <owner>.<table>. If <owner> is omitted, ArcSDE assumes that the current user is the owner. Privileges are:

SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

You can revoke multiple privileges by ORing the bitmasks.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_INVALID_USER
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The user must have appropriate DBMS privileges to remove access to a table.


SE_table_truncate

Deletes the data from a table but keeps the table definition.

Usage syntax

LONG SE_table_truncate
(SE_CONNECTION connection,
const CHAR *table);

Parameters

connection | The connection handle.
table | The name of the DBMS table to truncate.

Description

SE_table_truncate removes the information from the specified DBMS table. The table definition is maintained. If the table is spatially enabled, all of its associated spatial information for the layer is also truncated. The layer definition remains intact.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The user must have appropriate DBMS privileges to truncate a table and the associated information.


SE_table_update_dbms_stats

Updates the DBMS statistics on a table.

Usage syntax

LONG SE_table_update_dbms_stats
(SE_CONNECTION connection,
const CHAR *table,
const CHAR *index,
const CHAR *mode,
const LONG keyword);

Parameters

connection | The connection handle.
table | The DBMS table name.
index | The DBMS index name.
mode | The statistics mode.
keyword | The keyword is entered as a bit-mask specifing the table or tables whose statistics are to be updated. The keyword bit-mask can be entered as single bit-mask or an 'ORed'combination of bit-masks from the following list: SE_UPDATE_ADDS_TABLE_STATS SE_UPDATE_DELETES_TABLE_STATS SE_UPDATE_FEATURE_TABLE_STATS SE_UPDATE_BUSINESS_TABLE_STATS SE_UPDATE_RASTER_TABLE_STATS SE_UPDATE_ALL_TABLE_STATS

Description

SE_table_update_dbms_stats updates the DBMS statistics on the specified table. If the table is a layer, statistics are generated for all related layer objects including indexes unless a table keyword is specifed. When a table keyword is provided, statistics is calculated for that table and its indexes.

The mode values for Oracle are:

COMPUTE
ESTIMATE

The mode values for Informix are:

LOW
MEDIUM
HIGH
DISTRIBUTIONS
DROP
RESOLUTION
SPECIFIC
ROUTINE
FUNCTION
PROCEDURE

The mode values for SQLServer are:

with fullscan [index]
with sample %% percent [index]

The mode values for DB2 are:

NULL (The DB2 mode implementation has been fixed at
"with distributions and detailed indexes all" for all tables)

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_INDVALID_PARAM_VALUE
SE_INDEX_NOEXIST
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST


SE_trace_off

Turns tracing off.

Usage syntax

LONG SE_trace_off ( );

Parameters

None.

Description

Disables the tracing.

Returns


SE_trace_on

Turns tracing on.

Usage syntax

LONG SE_trace_on
(const CHAR *trace_log_name,
LONG trace_mode);

Parameters

trace_log_name | The name of the logging file.
trace_mode | A bitmask setting the trace mode.

Description

SE_trace_on enables tracing. When on, any I/O parameters and return values of the C API functions are logged to the trace log file. The trace modes are

SE_TRACE_API_BRIEF | Prints function names only.
SE_TRACE_API_VERBOSE | Prints names, input, output and return values.
SE_TRACE_API_MINSEC | Prints the time in [min:sec] format between function calls.
SE_TRACE_API_HRMINSEC | Prints the time in [hour:minute:second] format.
SE_TRACE_API_FLUSH | Forces data to be written to the trace file.

You can OR the trace modes together although the more complete one will be used. If you use

SE_TRACE_API_BRIEF | SE_TRACE_API_VERBOSE

the verbose mode is used. You need to include the sde40_trace library when you compile. Below is a code fragment which turns tracing on and off.

CHAR *trace_filename = "tracefile";

LONG trace_mode = SE_TRACE_API_VERBOSE | SE_TRACE_TIME_MINSEC;

trace_result = SE_TRACE_ON (trace_filename, trace_mode);

/* Application code to trace goes here */

trace_result = SE_TRACE_OFF ();

Returns


SE_version_alter

Alters a version’s characteristics.

Usage syntax

LONG SE_version_alter
(SE_CONNECTION connection,
const SE_VERSIONINFO version);

Parameters

connection | The connection handle.
version | An SE_VERSIONINFO structure to define the new characteristics of the version.

Description

SE_version_alter changes those characteristics of a version that can be modified after creation. The version to modify is specified by the version name in the SE_VERSIONINFO structure.

You can change the following characteristics:

• Description

• Public

If you want to change the name of a version or the state ID, use SE_version_rename or SE_version_change_state . A convenient method to change a particular characteristic of a version is to retrieve the existing version definition into the SE_VERSIONINFO pointer with SE_version_get_info or SE_version_get_info_by_id . Modify the characteristic with one of the SE_versioninfo_set_* functions.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_ALTER_OPERATION
SE_INVALID_VERSIONINFO_OBJECT
SE_INVALID_VERSION_ID
SE_NO_PERMISSIONS
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST
SE_VERSION_HAS_CHILDREN
SE_VERSION_NOEXIST


SE_version_change_state

Changes a version’s state.

Usage syntax

LONG SE_version_change_state
(SE_CONNECTION connection,
const SE_VERSIONINFO version,
LONG new_state_id);

Parameters

connection | The connection handle.
version | An SE_VERSIONINFO structure to define the new characteristics of the version.
new_state_id | The new state ID.

Description

SE_version_change_state changes the underlying state of a version.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_STATE_ID
SE_INVALID_VERSIONINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_OUT_OF_SVMEM
SE_STREAM_IN_PROGRESS
SE_TABLE_NOEXIST
SE_VERSION_HAS_MOVED
SE_VERSION_NOEXIST


SE_version_create

Creates a child version from an existing version.

Usage syntax

LONG SE_version_create
(SE_CONNECTION connection,
const SE_VERSIONINFO version,
BOOL unique_name,
SE_VERSIONINFO result_version);

Parameters

connection | The connection handle.
version | A pointer to the VERSIONINFO to use for the child.
unique_name | If TRUE, add a suffix to the supplied version name to make it unique. If FALSE, fail.
result_version | A pointer to the resulting version.

Description

SE_version_create creates a child version from an existing version. The parent version must be closed and owned by the current user or public, or the current user is the ArcSDE DBA. You can require a unique name by setting unique_name to TRUE. If the name isn't unique, the ArcSDE software will append ‘01’ or whatever value creates a unique version name. If thealready existing version name is My_version05, the new version would be My_version06. If unique_name is false and the version name already exists, the function will fail.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_FAILURE
SE_INVALID_POINTER
SE_INVALID_VERSION_ID
SE_INVALID_VERSIONINFO_OBJECT
SE_NET_FAILURE
SE_NO_PERMISSIONS
SE_NOT_TABLE_OWNER
SE_OUT_OF_SVMEM
SE_PARENT_NOT_CLOSED
SE_SDE_NOT_STARTED
SE_STATE_NOEXIST
SE_TABLE_NOEXIST
SE_VERSION_EXISTS

Notes

• The required parameters of the SE_VERSIONINFO structure to set when creating a version are:

name

state_ID

By default, the description is blank and the version is private.


SE_version_delete

Deletes a version.

Usage syntax

LONG SE_version_delete
(SE_CONNECTION connection,
const CHAR *name);

Parameters

connection | The connection handle.
name | The version name.

Description

SE_version_delete deletes a version. The version must be a leaf node and can't be a parent to another version. The current user must be the owner of the version or the ArcSDE DBA. All entries in the instance’s adds and deletes tables for the version will be deleted.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_VERSION_ID
SE_INVALID_VERSIONINFO_OBJECT
SE_NO_PERMISSIONS
SE_NET_FAILURE
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_VERSION_NOEXIST

Notes

• If the caller of this function is neither the owner of the version nor the ArcSDE administrator, an error is returned.

• If the version has become corrupted for some reason (e.g., the user has dropped one of the internal ArcSDE tables or deleted the version definition record accidentally), SE_version_delete still attempts to delete the version. TRUE??


SE_version_free_info_list

Releases memory allocated for a list of version structures.

Usage syntax

void SE_version_free_info_list
(LONG count,
SE_VERSIONINFO *version_list);

Parameters

count | The number of versions in the list.
version_list | Address of an SE_VERSIONINFO pointer set to a dynamically allocated space which contains an array of SE_VERSIONINFO structures.

Description

SE_version_free_info_list frees the memory allocated for the list of version structures returned by SE_version_get_info_list .


SE_version_free_lock

Releases the lock on a version.

Usage syntax

LONG SE_version_free_lock
(SE_CONNECTION connection,
const CHAR *version_name);

Parameters

connection | The connection handle.
version_name | The version name.

Description

SE_version_free_lock frees the lock on a version.

Returns


SE_version_free_locks

Releases memory allocated for a list of version lock structures.

Usage syntax

void SE_version_free_locks
( SE_version_lock *lock_list,
LONG lock_count);

Parameters

lock_list | The list of locks to free.
lock_count | The number of locks to free.

Description

SE_version_free_locks frees the memory allocated for a list of version lock structures.


SE_version_get_info

Retrieves information about a version.

Usage syntax

LONG SE_version_get_info
(SE_CONNECTION connection,
const CHAR *version_name,
SE_VERSIONINFO version);

Parameters

connection | The connection handle.
version_name | The name of the version.
version | Pointer to a location to receive the SE_VERSIONINFO definition.

Description

SE_version_get_info obtains the definition of a specific version as identified by its name. If more than one version fits, the most recently created version is returned. Information about the version is maintained in an SE_VERSIONINFO structure. The SE_VERSIONINFO object must be a valid object created by SE_versioninfo_create .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_VERSIONINFO_OBJECT
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_VERSION_NOEXIST


SE_version_get_info_by_id

Retrieves information about a version by its ID.

Usage syntax

LONG SE_version_get_info_by_id
(SE_CONNECTION connection,
LONG *version_id,
SE_VERSIONINFO version);

Parameters

connection | The connection handle.
version_id | The ID of the version.
version | Pointer to a location to receive the SE_VERSIONINFO definition.

Description

SE_version_get_info_by_id obtains the definition of a specific version as identified by its ID. Information about the version is maintained in an SE_VERSIONINFO structure. The SE_VERSIONINFO object must be a valid object created by SE_versioninfo_create .

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_PARAM_VALUE
SE_INVALID_POINTER
SE_INVALID_VERSIONINFO_OBJECT
SE_NET_FAILURE
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_VERSION_NOEXIST


SE_version_get_info_list

Retrieves an array of SE_VERSIONINFO structures for all accessible versions.

Usage syntax

LONG SE_version_get_info_list
(SE_CONNECTION connection,
const CHAR *where_clause,
SE_VERSIONINFO **version_list,
LONG *count);

Parameters

connection | The connection handle.
where_clause | Specifies values of desired version properties. If NULL, all versions are returned.
version_list | Address of a pointer in a dynamically allocated space that will contain an array of SE_VERSIONINFO structures.
count | The number of versions in the SE_VERSIONINFO list.

Description

SE_version_get_info_list returns an array of SE_VERSIONINFO pointers that are defined. The total number of version structures is returned in the count parameter. The application must free the version_list to reclaim the memory allocated by this function.

Returns

SE_SUCCESS
SE_DB_IO_ERROR
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST

Notes

• The application must free the memory used by this call. See SE_version_free_info_list .


SE_version_get_locks

Locks a version.

Usage syntax

LONG SE_version_get_locks
(SE_CONNECTION connection,
const CHAR *table,
LONG *num_locks,
SE_version_lock **locks);

Parameters

connection | The connection handle.
table | The table name.
num_locks | The number of locks.
locks | The list of locks.

Description

SE_version_get_locks returns the list of locks on a version. The lock information is returned in a list of SE_version_lock structures.

Returns


SE_version_lock

Locks a version.

Usage syntax

LONG SE_version_lock
(SE_CONNECTION connection,
const CHAR *version_name,
LONG lock_mode);

Parameters

connection | The connection handle.
version_name | The version name.
lock_mode | The lock mode.

Description

SE_version_lock locks a version. The lock modes are

SE_VERSION_SHARED_LOCK
SE_VERSION_EXCLUSIVE_LOCK

Returns


SE_version_rename

Renames a version.

Usage syntax

LONG SE_version_rename
(SE_CONNECTION connection,
const CHAR *old_name,
const CHAR *new_name);

Parameters

connection | The connection handle.
old_name | The current name of the version.
new_name | The new name of the version.

Description

SE_version_rename changes the name of the specified version.

Returns

SE_SUCCESS
SE_CONNECTION_IN_USE
SE_CONNECTION_LOCKED
SE_DB_IO_ERROR
SE_INVALID_CONNECTION
SE_NET_FAILURE
SE_INVALID_POINTER
SE_NO_PERMISSIONS
SE_SDE_NOT_STARTED
SE_TABLE_NOEXIST
SE_VERSION_EXISTS
SE_VERSION_NOEXIST


SE_versioninfo_create

Creates a version definition.

Usage syntax

LONG SE_versioninfo_create (SE_VERSIONINFO *version);

Parameters

version

A pointer to the version structure.

Description

SE_versioninfo_create allocates and initializes an SE_VERSIONINFO structure which contains information about a version.

Returns

SE_SUCCESS
SE_FAILURE
SE_INVALID_POINTER
SE_NET_FAILURE
SE_OUT_OF_CLMEM
SE_OUT_OF_SVMEM
SE_SDE_NOT_STARTED

Notes

• You must call this function to create a valid SE_VERSIONINFO object before using any other function that requires an SE_VERSIONINFO pointer.


SE_versioninfo_duplicate

Copies a version definition.

Usage syntax

LONG SE_versioninfo_duplicate
(const SE_VERSIONINFO src_version,
SE_VERSIONINFO tgt_versioninfo);

Parameters

src_reginfo | The source SE_VERSIONINFO handle.
tgt_reginfo | The target SE_VERSIONINFO handle.

Description

SE_versioninfo_duplicate creates a copy of an SE_VERSIONINFO structure.

Returns


SE_versioninfo_free

Releases memory allocated for an SE_VERSIONINFO structure.

Usage syntax

void SE_versioninfo_free (SE_VERSIONINFO version);

Parameters

version

The pointer to a version structure.

Description

SE_versioninfo_free frees the memory allocated for an SE_VERSIONINFO structure returned by SE_versioninfo_create .


SE_versioninfo_get_access

Returns the access type for a version.

Usage syntax

LONG SE_versioninfo_get_access
(const SE_VERSIONINFO version,
LONG *access);

Parameters

version | The versioninfo handle.
access | A pointer to the access type.

Description

SE_versioninfo_get_access returns the access type for a version. The types are

SE_VERSION_ACCESS_PUBLIC

SE_VERSION_ACCESS_PROTECTED

SE_VERSION_ACCESS_PRIVATE

Returns


SE_versioninfo_get_creation_time

Returns the creation time for a version.

Usage syntax

LONG SE_versioninfo_get_creation_time
(const SE_VERSIONINFO version,
struct tm *created_time);

Parameters

version | The versioninfo handle.
created_time | A pointer to the creation time.

Description

SE_versioninfo_get_creation_time returns the creation date and time in POSIX time_t format for a version.

Returns


SE_versioninfo_get_description

Retrieves the version description.

Usage syntax

LONG SE_versioninfo_get_description
(const SE_VERSIONINFO version,
CHAR *description);

Parameters

version | The versioninfo handle.
description | The version description.

Description

SE_versioninfo_get_description retrieves the description for a specific version. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_versioninfo_get_id

Retrieves the ID of a version.

Usage syntax

LONG SE_versioninfo_get_id
(const SE_VERSIONINFO version,
LONG *version_id);

Parameters

version | The versioninfo handle.
version_id | The ID of a version.

Description

SE_versioninfo_get_id retrieves the ID for a version.

Returns


SE_versioninfo_get_name

Retrieves the version name.

Usage syntax

LONG SE_versioninfo_get_name
(const SE_VERSIONINFO version,
CHAR *name);

Parameters

version | The versioninfo handle.
name | The version name.

Description

SE_versioninfo_get_name retrieves the name of the verion. Allocate at least SE_MAX_VERSION_LEN bytes for the name parameter.

Returns


SE_versioninfo_get_parent_id

Retrieves the parent ID of a version.

Usage syntax

LONG SE_versioninfo_get_parent_id
(const SE_VERSIONINFO version,
LONG *parent_id);

Parameters

version | The versioninfo handle.
parent_id | The parent ID of a version.

Description

SE_versioninfo_get_parent_id retrieves the parent ID for a version. If no parent version exists, returns 0.

Returns


SE_versioninfo_get_parent_name

Retrieves the parent name.

Usage syntax

LONG SE_versioninfo_get_parent_name
(const SE_VERSIONINFO version,
CHAR *parent_name);

Parameters

version | The versioninfo handle.
parent_name | The parent name.

Description

SE_versioninfo_get_parent_name retrieves the paret name of the verion. Allocate at least SE_MAX_VERSION_LEN bytes for the parent_name parameter.

Returns


SE_versioninfo_get_state_id

Retrieves the state ID of a version.

Usage syntax

LONG SE_versioninfo_get_state_id
(const SE_VERSIONINFO version,
LONG *state_id);

Parameters

version | The versioninfo handle.
state_id | The state ID of a version.

Description

SE_versioninfo_get_state_id retrieves the state ID for a version.

Returns


SE_versioninfo_set_access

Sets the access type for a version.

Usage syntax

LONG SE_versioninfo_set_access
(SE_VERSIONINFO version,
LONG access);

Parameters

version | The versioninfo handle.
access | The access type.

Description

SE_versioninfo_set_access sets the access type for a version. The types are

SE_VERSION_ACCESS_PUBLIC

SE_VERSION_ACCESS_PROTECTED

SE_VERSION_ACCESS_PRIVATE

Returns


SE_versioninfo_set_description

Sets the version description.

Usage syntax

LONG SE_versioninfo_set_description
(SE_VERSIONINFO version,
const CHAR *description);

Parameters

version | The versioninfo handle.
description | The version description.

Description

SE_versioninfo_set_description sets the description for a specific version. The description parameter should be at least SE_MAX_DESCRIPTION_LEN bytes long.

Returns


SE_versioninfo_set_name

Sets the version name.

Usage syntax

LONG SE_versioninfo_set_name
(SE_VERSIONINFO version,
const CHAR *name);

Parameters

version | The versioninfo handle.
name | The version name.

Description

SE_versioninfo_set_name sets the name for a version. Allocate at least SE_MAX_VERSION_LEN bytes for the name parameter.

Returns


SE_versioninfo_set_parent_name

Sets the parent name.

Usage syntax

LONG SE_versioninfo_set_parent_name
(SE_VERSIONINFO version,
const CHAR *parent_name);

Parameters

version | The versioninfo handle.
parent_name | The parent name.

Description

SE_versioninfo_set_parent_name sets the parent name of a version. Allocate at least SE_MAX_VERSION_LEN bytes for the parent_name parameter.

Returns


SE_versioninfo_set_state_id

Sets the current state by ID for a version.

Usage syntax

LONG SE_versioninfo_set_state_id
(SE_VERSIONINFO version,
LONG state_id);

Parameters

version | The versioninfo handle.
state_id | The ID of the state to set.

Description

SE_versioninfo_set_state_id sets the state by ID for a version.

Returns


pe_auth_r

Calculates the authalic radius of a spheroid.

Interface

double pe_auth_r
(double a,
double e2);

Parameters

a Semimajor axis of the spheroid.

e2 Eccentricity squared of the spheroid.

Description

This function calculates the authalic radius of a spheroid. A sphere with a given authalic radius has the same area as the spheroid from which the authalic radius was calculated.

Returns

Authalic radius of the spheroid.


pe_beta_to_phi

Calculates the geographic latitude from the authalic latitude.

Interface

double pe_beta_to_phi
(double e2,
double beta);

Parameters

e2 Eccentricity squared of the spheroid.

beta Authalic latitude (measured in radians) of the point.

Description

This function is the inverse of pe_phi_to_beta; pe_beta_to_phi(e2, pe_phi_to_beta(e2, phi)) is approximately equal to phi.

Returns

Geographic latitude (measured in radians) of the point.


pe_cart_to_curv

Converts from (X, Y, Z) to (j, l, h).

Interface

double pe_cart_to_curv
(double a,
double e2,
double x,
double y,
double z,
double *phi,
double *lambda,
double *h);

Parameters

a Semimajor axis of the spheroid (in meters).

e2 Eccentricity squared of the spheroid.

x X coordinate in the geocentric Cartesian coordinate system.

y Y coordinate in the geocentric Cartesian coordinate system.

z Z coordinate in the geocentric Cartesian coordinate system.

phi A pointer to the returned latitude value.

lambda A pointer to the returned longitude value.

h A pointer to the returned spheroidal height.

Description

This function converts from geocentric Cartesian (X, Y, Z) to geographic (j, l, h) coordinates.

Returns

Geographic latitude and longitude (measured in radians) and the spheroidal height (in meters) of the point.


pe_chi_to_phi

Calculates the geographic latitude from the conformal latitude.

Interface

double pe_chi_to_phi
(double e2,
double chi);

Parameters

e2 Eccentricity squared of the spheroid.

chi Conformal latitude (measured in radians) of the point.

Description

This function is the inverse of pe_phi_to_chi; pe_chi_to_phi(e2, pe_phi_to_chi(e2, phi)) is approximately equal to phi.

Returns

Geographic latitude (measured in radians) of the point.


pe_coordsys_clone

Creates a new coordinate system object from an existing one.

Interface

PE_COORDSYS pe_coordsys_clone (PE_COORDSYS coordsys);

Parameters

coordsys An existing coordinate system.

Description

Creates a duplicate coordinate system from an existing coordsys object.

Returns

On success, the new coordinate system object. On failure, a null pointer.

Examples

PE_COORDSYS cs2 = pe_coordsys_clone(cs1);


pe_coordsys_del

Removes a coordinate system object.

Interface

void pe_coordsys_del (PE_COORDSYS coordsys);

Parameters

coordsys The coordinate system object.

Description

Releases the memory allocated to the specified coordinate system object.

Returns

None.

Examples

pe_coordsys_del(cs1);


pe_coordsys_eq

Tests whether two coordinate system objects are equivalent.

Interface

int pe_coordsys_eq
(PE_COORDSYS coordsys1,
PE_COORDSYS coordsys2);

Parameters

coordsys1 The first coordinate system object.

coordsys2 The second coordinate system object.

Description

Tests whether two coordinate system objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int cs_test = pe_coordsys_eq(ca5,ca5_27);


pe_coordsys_from_prjfile

Creates a coordinate system object from an old-style PRJ file.

Interface

PE_COORDSYS pe_coordsys_from_prjfile
(const char *path,
int *error);

Parameters

path A pointer to a file that contains an old-style PRJ file.

error A pointer to an error code.

Description

Creates a PE coordinate system object from an old-style PRJ file. An old-style PRJ file is used by the coverage, grid, and TIN data formats. You can find the file, named prj.adf, in the dataset directory. Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zone 11
Parameters

This file converts to the following PE string representation (reformatted for display).

PROJCS["WGS_1984_UTM_Zone_11N",
GEOGCS["GCS_WGS_1984",
DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",500000],
PARAMETER["False_Northing",0],
PARAMETER["Central_Meridian",-117],
PARAMETER["Scale_Factor",0.9996],
PARAMETER["Latitude_Of_Origin",0],
UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, a coordinate system object.

PE_PRJ_CANNOT_OPEN_FILE The path or file name is incorrect or does not exist.
PE_PRJ_ILLEGAL_ARGUMENT The pointer to the path or file name is null or blank.
PE_PRJ_ILLEGAL_DATUM The datum is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_PARAMETER One of the parameters is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_PROJECTION The map projection cannot be converted. PE may not support it.
PE_PRJ_ILLEGAL_SPHEROID The spheroid is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_UNIT The unit is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_ZONE The zone is incorrect or cannot be converted.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.
PE_PRJ_TOO_MANY_PARAMS There are too many parameters in the PRJ string. The PRJ file is incorrect.

Examples

PE_COORDSYS coordsys;
char *prjfile;
int err = 0;
char newstring[1024];
prjfile = "testutm.prj";
coordsys = pe_coordsys_from_prjfile(prjfile,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}
else
{
pe_coordsys_to_string(coordsys,newstring);
printf("%s\n",newstring);
}


pe_coordsys_from_prjstring

Creates a coordinate system object from an old-style PRJ file formatted as a string.

Interface

PE_COORDSYS pe_coordsys_from_prjstring
(const char *string,
int *error);

Parameters

string A pointer to a string created from an old-style PRJ file.

error A pointer to an error code.

Description

Creates a PE coordinate system object from an old-style PRJ file. An old-style PRJ file is used by the coverage, grid, and TIN data formats. You can find the file, named prj.adf, in the dataset directory. Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zone 11
Parameters

Below is the string representation (reformatted for display) of the PE coordinate system object.

PROJCS["WGS_1984_UTM_Zone_11N",
GEOGCS["GCS_WGS_1984",
DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",500000],
PARAMETER["False_Northing",0],
PARAMETER["Central_Meridian",-117],
PARAMETER["Scale_Factor",0.9996],
PARAMETER["Latitude_Of_Origin",0],
UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, a coordinate system object.

PE_PRJ_ILLEGAL_ARGUMENT The pointer to the PRJ string is null or blank.
PE_PRJ_ILLEGAL_DATUM The datum is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_PARAMETER One of the parameters is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_PROJECTION The map projection cannot be converted. PE may not support it.
PE_PRJ_ILLEGAL_SPHEROID The spheroid is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_UNIT The unit is incorrect or cannot be converted.
PE_PRJ_ILLEGAL_ZONE The zone is incorrect or cannot be converted.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.
PE_PRJ_TOO_MANY_PARAMS There are too many parameters in the PRJ string. The PRJ file is incorrect.

Examples

PE_COORDSYS coordsys;
/* Note: The prjstring cannot be modified because it is hardcoded. */
char *prjstring = "Projection UTM\nUnits METERS\nDatum WGS84\nZone 11\nParameters\n";
int err = 0;
char newstring[1024];
coordsys = pe_coordsys_from_prjstring(prjstring,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}
else
{
pe_coordsys_to_string(coordsys,newstring);
printf("%s\n",newstring);
}


pe_coordsys_from_string

Creates a coordinate system object from its string representation.

Interface

PE_COORDSYS pe_coordsys_from_string (const char *buffer);

Parameters

buffer The string representation of the coordinate system object.

Description

Creates a coordinate system object from its string representation.

Returns

On success, a coordinate system object. Otherwise, a null pointer.

Examples

PE_COORDSYS cs;

char *cs_metadata = “PROJCS[\"Test\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator\"],PARAMETER[\"false_easting\",1000000],UNIT[\"Foot\",0.3048]]”;

cs = pe_coordsys_from_string(cs_metadata);


pe_coordsys_p

Tests whether an object is of type coordinate system.

Interface

int pe_coordsys_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type coordinate system.

Returns

Returns 1 if the argument points to an object of type coordinate system. Otherwise, 0.

Examples

test = pe_coordsys_p(pcs);


pe_coordsys_to_prjfile

Converts a coordinate system object to an old-style PRJ file.

Interface

void pe_coordsys_to_prjfile
(PE_COORDSYS coordsys,
(PE_UNIT zunit,
const char *path,
int *error);

Parameters

coordsys A coordinate system object.
zunit A linear unit object.
path A pointer to a file that contains an old-style PRJ file.
error A pointer to an error code.

Description

Converts a PE coordinate system object to an old-style PRJ file. An old-style PRJ file is used by the coverage, grid, and TIN data formats. The files, named prj.adf, are located in the dataset directory.

Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zone 11
Parameters

Here is the equivalent PE string representation (reformatted for display) of a PE projected coordinate system object.

PROJCS["WGS_1984_UTM_Zone_11N",
GEOGCS["GCS_WGS_1984",
DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",500000],
PARAMETER["False_Northing",0],
PARAMETER["Central_Meridian",-117],
PARAMETER["Scale_Factor",0.9996],
PARAMETER["Latitude_Of_Origin",0],
UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, an old-style PRJ file.

PE_PRJ_CANNOT_OPEN_FILE The path or file name is incorrect or does not exist.
PE_PRJ_ILLEGAL_ARGUMENT The pointer to the path or file name is null or blank.
PE_TOPRJ_ILLEGAL_PARAMETER One of the parameters is incorrect or cannot be converted. The equivalent map projection in workstation ArcInfo may not support the parameter.
PE_TOPRJ_ILLEGAL_PRIMEM The prime meridian is not Greenwich and cannot be converted.
PE_TOPRJ_ILLEGAL_PROJECTION The map projection cannot be converted. Workstation ArcInfo may not support it.
PE_PRJ_ILLEGAL_SCALE_FACTOR The scale factor parameter is not supported by the equivalent map projection in workstation ArcInfo.
PE_TOPRJ_ILLEGAL_SPHEROID The spheroid is incorrect or cannot be converted. The map projection in workstation ArcInfo may not support a spheroid.
PE_TOPRJ_ILLEGAL_UNIT The unit is incorrect or cannot be converted. Workstation ArcInfo may not support it. Usually will occur when the units of the geographic coordinate system are grads.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.

Examples

PE_COORDSYS coordsys;
char *prjfile;
int err = 0;
prjfile = "testutm.prj";
coordsys = pe_factory_projcs(PE_PCS_WGS_1984_UTM_11N);
pe_coordsys_to_prjfile(coordsys,NULL,prjfile,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}


pe_coordsys_to_prjfile

pe_coordsys_to_prjstring

Converts a coordinate system object to an old-style PRJ file in string format.

Interface

void pe_coordsys_to_prjstring
(PE_COORDSYS coordsys,
(PE_UNIT zunit,
const char *string,
int *error);

Parameters

coordsys A coordinate system object.
zunit A linear unit object.
string A pointer to a string that contains an old-style PRJ file in string format.
error A pointer to an error code.

Description

Converts a PE coordinate system object to an old-style PRJ file in string format. An old-style PRJ file is used by the coverage, grid, and TIN data formats. The files, named prj.adf, are located in the dataset directory.

Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zone 11
Parameters

Here is the equivalent PE string representation (reformatted for display) of a PE projected coordinate system object.

PROJCS["WGS_1984_UTM_Zone_11N",
GEOGCS["GCS_WGS_1984",
DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["Degree",0.017453292519943295]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",500000],
PARAMETER["False_Northing",0],
PARAMETER["Central_Meridian",-117],
PARAMETER["Scale_Factor",0.9996],
PARAMETER["Latitude_Of_Origin",0],
UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, an old-style PRJ file.

PE_PRJ_CANNOT_OPEN_FILE The path or file name is incorrect or does not exist.
PE_PRJ_ILLEGAL_ARGUMENT The pointer to the path or file name is null or blank.
PE_TOPRJ_ILLEGAL_PARAMETER One of the parameters is incorrect or cannot be converted. The equivalent map projection in workstation ArcInfo may not support the parameter.
PE_TOPRJ_ILLEGAL_PRIMEM The prime meridian is not Greenwich and cannot be converted.
PE_TOPRJ_ILLEGAL_PROJECTION The map projection cannot be converted. Workstation ArcInfo may not support it.
PE_PRJ_ILLEGAL_SCALE_FACTOR The scale factor parameter is not supported by the equivalent map projection in workstation ArcInfo.
PE_TOPRJ_ILLEGAL_SPHEROID The spheroid is incorrect or cannot be converted. The map projection in workstation ArcInfo may not support a spheroid.
PE_TOPRJ_ILLEGAL_UNIT The unit is incorrect or cannot be converted. Workstation ArcInfo may not support it. Usually will occur when the units of the geographic coordinate system are grads.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.

Examples

PE_COORDSYS coordsys;
char *prjstring;
int err = 0;
coordsys = pe_factory_projcs(PE_PCS_WGS_1984_UTM_11N);
pe_coordsys_to_prjstring(coordsys,NULL,prjstring,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}


pe_coordsys_to_string

Creates a string representation of a coordinate system.

Interface

void pe_coordsys_to_string
(PE_COORDSYS coordsys,
char buffer[PE_BUFFER_MAX]);

Parameters

coordsys The coordinate system object.

buffer The string representation of the object.

Description

Creates a string representation of the coordinate system object. If a projected coordinate system, the format is:

PROJCS["name",GEOGCS["name",DATUM["name", SPHEROID["name",axis,1/f]],PRIMEM["name",longitude],
UNIT["name",conversion factor]],PROJECTION["name"],
PARAMETER["name",value],UNIT["name",conversion factor]]

The format of a geographic coordinate system is:
GEOGCS["name",DATUM["name",SPHEROID["name",axis,1/f]], PRIMEM["name",longitude], UNIT["name",conversion factor]]

Returns

None.

Examples

PROJCS["Test",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984", SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0], UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"], PARAMETER["false_easting",1000000],UNIT["Foot",0.3048]]


pe_curv_to_cart

Converts from (j, l, h) to (X, Y, Z).

Interface

double pe_curv_to_cart
(double a,
double e2,
double phi,
double lambda,
double h,
double *x,
double *y,
double *z);

Parameters

a Semimajor axis of the spheroid (in meters).

e2 Eccentricity squared of the spheroid.

phi Latitude value.

lambda Longitude value.

h Spheroidal height.

x A pointer to the returned X coordinate.

y A pointer to the returned Y coordinate.

z A pointer to the returned Z coordinate.

Description

This function converts from geographic (j, l, h) to geocentric Cartesian (X, Y, Z) coordinates.

Returns

X, Y, and Z (measured in meters) coordinates of the point.


pe_datum_clone

Creates a new datum from an existing one.

Interface

PE_DATUM pe_datum_clone (PE_DATUM datum);

Parameters

datum The pointer to an existing datum object.

Description

Creates a duplicate datum from an existing datum object.

Returns

On success, the new datum. On failure, a null pointer.

Examples

PE_DATUM wgs84_new = pe_datum_clone(wgs84);


pe_datum_del

Removes a datum object.

Interface

void pe_datum_del (PE_DATUM datum);

Parameters

datum The datum object.

Description

Releases the memory allocated to the specified horizontal datum object.

Returns

None.

Examples

pe_datum_del(wgs84);


pe_datum_eq

Tests whether two datum objects are equivalent.

Interface

int pe_datum_eq
(PE_DATUM datum1,
PE_DATUM datum2);

Parameters

datum1 The first datum object.

datum2 The second datum object.

Description

Tests whether two horizontal datum objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int datum_test = pe_datum_eq(wgs84,nad83);


pe_datum_from_string

Creates a datum object from its string representation.

Interface

PE_DATUM pe_datum_from_string (const char *buffer);

Parameters

buffer The string representation of the datum object.

Description

Creates a horizontal datum object from its string representation.

Returns

On success, a datum object. Otherwise, a null pointer.

Examples

PE_DATUM d;

char *datum_metadata = “DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]]”;

d = pe_datum_from_string(datum_metadata);


pe_datum_name

Retrieves the name of a datum.

Interface

void pe_datum_name
(PE_DATUM datum,
char name[PE_NAME_MAX]);

Parameters

datum The datum object.

name The name of the datum object.

Description

Retrieves the name of the specified horizontal datum.

Returns

None.

Examples

char w[PE_NAME_MAX];
pe_datum_name(wgs84, w);


pe_datum_new

Creates a new datum.

Interface

PE_DATUM pe_datum_new
(const char *name,
PE_SPHEROID spheroid);

Parameters

name Name of the new datum.

spheroid Spheroid of the datum.

Description

Defines a new horizontal datum with the specified attributes.

Returns

On success, the new datum with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_DATUM wgs84 = pe_datum_new("D_WGS_1984",pe_factory(PE_S_WGS_1984));


pe_datum_p

Tests whether an object is of type datum.

Interface

int pe_datum_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type datum.

Returns

Returns 1 if the argument points to an object of type datum. Otherwise, 0.

Examples

test = pe_datum_p(wgs84);


pe_datum_spheroid

Retrieves the spheroid of a datum.

Interface

PE_SPHEROID pe_datum_spheroid (PE_DATUM datum);

Parameters

datum The datum object.

Description

Retrieves the spheroid of the specified horizontal datum.

Returns

Retrieves the spheroid object of a horizontal datum.

Examples

PE_SPHEROID s = pe_datum_spheroid(wgs84);


pe_datum_to_string

Creates a string representation of a datum.

Interface

void pe_datum_to_string
(PE_DATUM datum,
char buffer[PE_BUFFER_MAX]);

Parameters

datum The datum object.

buffer The string representation of the object.

Description

Creates a string representation of a horizontal datum object in the format:
DATUM["name",SPHEROID["name",axis,1/f]]

Returns

None.

Examples

DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]]


pe_delta

Adjusts (l - l0) to within ±p.

Interface

double pe_delta (double lam);

Parameters

lam Longitude of the current point.

Description

Makes sure that the difference between the longitude of the current point and central meridian (l - l0) remains within ±p during calculations.

Returns

Returns a value between ±p.


pe_eq

Implements predicate ‘approximately equal to’ for two floating point numbers.

Interface

int pe_eq
(double u,
double v);

Parameters

u First floating point number.

v Second floating point number.

Description

An operation of floating point comparison is intended to help assess the relative values of two floating point quantities. The floating point representations of u and v are approximately equal to v if and only if

where e is equal to 16*(IEEE DBL_EPSILON). DBL_EPSILON is 2.2204460492503131E-16.

Returns

Returns 1 if u is approximately equal to v. Otherwise 0.


pe_eta_to_phi

Calculates the geodetic latitude from the reduced latitude.

Interface

double pe_eta_to_phi
(double e2,
double eta);

Parameters

e2 Eccentricity squared of the spheroid.

eta Reduced latitude (measured in radians) of the point.

Description

The reduced or parametric latitude is a latitude on a sphere of radius a (where a is the semimajor axis of a spheroid). The reduced latitude is the angle formed between the equatorial plane and a line from the center of the sphere to a point on the sphere that is at the same distance from the polar axis as the geodetic latitude.

Returns

Geodetic latitude (measured in radians) of the point.


pe_factory

Creates the specified object.

Interface

struct pe_struct_t *pe_factory (int code);

Parameters

code The code of the predefined object.

Description

Creates the predefined object with the specified code. You can generate any type of predefined object with pe_factory. If you know the object type, use the appropriate pe_factory_<object> function. The object-specific factory functions are faster and more efficient than pe_factory.

Returns

On success, the new object with attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_DATUM adindan = pe_factory(PE_D_ADINDAN);

PE_DATUM adindan_fast = pe_factory_datum(PE_D_ADINDAN);

PE_GEOGCS gcs2 = pe_factory(PE_GCS_GDA_1994);

PE_GEOGCS gcs2_fast = pe_factory_geogcs(PE_GCS_GDA_1994);

PE_PARAMETER cm = pe_factory(PE_PAR_CENTRAL_MERIDIAN);

PE_PARAMETER cm_fast = pe_factory_parameter(PE_PAR_CENTRAL_MERIDIAN);

PE_METHOD three_par = pe_factory(PE_MTH_GEOCENTRIC_TRANSLATION);

PE_METHOD three_par_fast = pe_factory_method(PE_MTH_GEOCENTRIC_TRANSLATION);

PE_PRIMEM pm2 = pe_factory(PE_PM_GREENWICH);

PE_PRIMEM pm2_fast = pe_factory_primem(PE_PM_GREENWICH);

PE_PROJCS cal5 = pe_factory(PE_PCS_NAD_1927_CA_V);

PE_PROJCS cal5_fast = pe_factory_projcs(PE_PCS_NAD_1927_CA_V);

PE_PROJECTION mercator = pe_factory(PE_PRJ_MERCATOR);

PE_PROJECTION mercator_fast = pe_factory_projection(PE_PRJ_MERCATOR);

PE_SPHEROID wgs84 = pe_factory(PE_S_WGS_1984);

PE_SPHEROID wgs84_fast = pe_factory_spheroid(PE_S_WGS_1984);

PE_UNIT m = pe_factory(PE_U_METER);

PE_UNIT m_fast = pe_factory_unit(PE_U_METER);


pe_factory_angular_unit_codelist

Creates a list of predefined angular unit codes.

Interface

int *pe_factory_angular_unit_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined angular unit object codes in the array.

Description

Creates a list of the predefined angular unit codes. The list will not include any user-defined angular units. You can use pe_predefined_angular_unit to return a table of angular units that includes user-defined angular units.

Returns

On success, an array of angular unit codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_angular_unit_codelist(&number);
   printf("Total number of predefined angular units: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_code

Returns the factory code of the specified object.

Interface

int pe_factory_code(struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Returns the factory code of the object if the object is predefined.

Returns

On success, the factory code of a predefined object. On failure, zero.

Examples

int pcs1_code = pe_factory_code(pcs1);


pe_factory_codelist_del

Removes an array of object codes.

Interface

void pe_factory_codelist_del (int *codelist);

Parameters

codelist A pointer to an integer array of object codes.

Description

Releases the memory allocated for an array of object codes by a pe_factory_<object>_codelist function.

Returns

None.


pe_factory_datum

Creates the specified datum object.

Interface

PE_DATUM pe_factory_datum (int code);

Parameters

code The code of the predefined datum object.

Description

Creates the predefined datum object with the specified code.

Returns

On success, the new datum object. On failure, a null pointer.

Examples

PE_DATUM adindan = pe_factory_datum(PE_D_ADINDAN);


pe_factory_datum_codelist

Creates a list of predefined datum codes.

Interface

int *pe_factory_datum_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined datum object codes in the array.

Description

Creates a list of the predefined datum codes. The list will not include any user-defined datums. You can use pe_predefined_datum to return a table of datums that includes user-defined datums.

Returns

On success, an array of datum codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_datum_codelist(&number);
   printf("Total number of predefined datums: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_geogcs

Creates the specified geographic coordinate system object.

Interface

PE_GEOGCS pe_factory_geogcs (int code);

Parameters

code The code of the predefined geographic coordinate system object.

Description

Creates the predefined geographic coordinate system object with the specified code.

Returns

On success, the new geographic coordinate system object. On failure, a null pointer.

Examples

PE_GEOGCS gcs2 = pe_factory_geogcs(PE_GDA_1994);


pe_factory_geogcs_codelist

Creates a list of predefined geographic coordinate system codes.

Interface

int *pe_factory_geogcs_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined geographic coordinate system object codes in the array.

Description

Creates a list of the predefined geographic coordinate system codes. The list will not include any user-defined geographic coordinate systems. You can use pe_predefined_geogcs to return a table of geographic coordinate systems that includes user-defined geographic coordinate systems.

Returns

On success, an array of geographic coordinate system codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_geogcs_codelist(&number);
   printf("Total number of predefined geographic coordinate systems: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_geogtran

Creates the specified geographic transformation object.

Interface

PE_GEOGTRAN pe_factory_geogtran (int code);

Parameters

code The code of the predefined geographic transformation object.

Description

Creates the predefined geographic transformation object with the specified code.

Returns

On success, the new geographic transformation object. On failure, a null pointer.

Examples

PE_GEOGTRAN wgs72_to_wgs84 = pe_factory_geogtran(PE_MTH_WGS_1972_TO_WGS_1984_1);


pe_factory_geogtran_codelist

Creates a list of predefined geographic tranformation codes.

Interface

int *pe_factory_geogtran_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined geographic tranformation object codes in the array.

Description

Creates a list of the predefined geographic tranformation codes. The list will not include any user-defined geographic transformations. You can use pe_predefined_geogtran to return a table of geographic transformations that includes user-defined geographic transformations.

Returns

On success, an array of geographic tranformation codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_geogtran_codelist(&number);
   printf("Total number of predefined geographic tranformations: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_linear_unit_codelist

Creates a list of predefined linear unit codes.

Interface

int *pe_factory_linear_unit_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined linear unit object codes in the array.

Description

Creates a list of the predefined linear unit codes. The list will not include any user-defined linear units. You can use pe_predefined_linear_unit to return a table of linear units that includes user-defined linear units.

Returns

On success, an array of linear unit codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_linear_unit_codelist(&number);
   printf("Total number of predefined linear units: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_method

Creates the specified method object.

Interface

PE_METHOD pe_factory_method (int code);

Parameters

code The code of the predefined method object.

Description

Creates the predefined method object with the specified code.

Returns

On success, the new method object. On failure, a null pointer.

Examples

PE_METHOD three_param = pe_factory_method(PE_MTH_GEOCENTRIC_TRANSLATION);


pe_factory_method_codelist

Creates a list of predefined method codes.

Interface

int *pe_factory_method_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined method object codes in the array.

Description

Creates a list of the predefined method codes.

Returns

On success, an array of method codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_method_codelist(&number);
   printf("Total number of predefined methods: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_parameter

Creates the specified parameter object.

Interface

PE_PARAMETER pe_factory_parameter (int code);

Parameters

code The code of the predefined parameter object.

Description

Creates the predefined parameter object with the specified code.

Returns

On success, the new parameter object. On failure, a null pointer.

Examples

PE_PARAMETER cm = pe_factory_parameter(PE_PAR_CENTRAL_MERIDIAN);


pe_factory_parameter_codelist

Creates a list of predefined parameter codes.

Interface

int *pe_factory_parameter_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined parameter object codes in the array.

Description

Creates a list of the predefined parameter codes.

Returns

On success, an array of parameter codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_parameter_codelist(&number);
   printf("Total number of predefined parameters: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_primem

Creates the specified prime meridian object.

Interface

PE_PRIMEM pe_factory_primem (int code);

Parameters

code The code of the predefined prime meridian object.

Description

Creates the predefined prime meridian object with the specified code.

Returns

On success, the new prime meridian object. On failure, a null pointer.

Examples

PE_PRIMEM pm2 = pe_factory_primem(PE_PM_GREENWICH);


pe_factory_primem_codelist

Creates a list of predefined prime meridian codes.

Interface

int *pe_factory_primem_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined prime meridian object codes in the array.

Description

Creates a list of the predefined prime meridian codes. The list will not include any user-defined prime meridians. You can use pe_predefined_primem to return a table of prime meridians that includes user-defined prime meridians.

Returns

On success, an array of prime meridian codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_primem_codelist(&number);
   printf("Total number of predefined prime meridians: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_projcs

Creates the specified projected coordinate system object.

Interface

PE_PROJCS pe_factory_projcs (int code);

Parameters

code The code of the predefined projected coordinate system object.

Description

Creates the predefined projected coordinate system object with the specified code.

Returns

On success, the new projected coordinate system object. On failure, a null pointer.

Examples

PE_PROJCS cal5 = pe_factory_projcs(PE_PCS_NAD_1927_CA_V);


pe_factory_projcs_codelist

Creates a list of predefined projected coordinate system codes.

Interface

int *pe_factory_projcs_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined projected coordinate system object codes in the array.

Description

Creates a list of the predefined projected coordinate system codes. The list will not include any user-defined projected coordinate systems. You can use pe_predefined_projcs to return a table of projected coordinate systems that includes user-defined projected coordinate systems.

Returns

On success, an array of projected coordinate system codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_projcs_codelist(&number);
   printf("Total number of predefined projected coordinate systems: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_projection

Creates the specified map projection object.

Interface

PE_PROJECTION pe_factory_projection (int code);

Parameters

code The code of the predefined map projection object.

Description

Creates the predefined map projection object with the specified code.

Returns

On success, the new map projection object. On failure, a null pointer.

Examples

PE_PROJECTION mercator = pe_factory_projection(PE_PRJ_MERCATOR);


pe_factory_projection_codelist

Creates a list of predefined projection codes.

Interface

int *pe_factory_projection_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined projection object codes in the array.

Description

Creates a list of the predefined projection codes.

Returns

On success, an array of projection codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_projection_codelist(&number);
   printf("Total number of predefined projections: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_spheroid

Creates the specified spheroid object.

Interface

PE_SPHEROID pe_factory_spheroid (int code);

Parameters

code The code of the predefined spheroid object.

Description

Creates the predefined spheroid object with the specified code.

Returns

On success, the new spheroid object. On failure, a null pointer.

Examples

PE_SPHEROID wgs_1984 = pe_factory_spheroid(PE_S_WGS_1984);


pe_factory_spheroid_codelist

Creates a list of predefined spheroid codes.

Interface

int *pe_factory_spheroid_codelist (int *num_codes);

Parameters

num_codes

A pointer to the integer, which upon return, will contain the number of predefined spheroid object codes in the array.

Description

Creates a list of the predefined spheroid codes. The list will not include any user-defined spheroids. You can use pe_predefined_spheroid to return a table of spheroids that includes user-defined spheroids.

Returns

On success, an array of spheroid codes. On failure, a null pointer.

Examples

   int *list;
   int number, i;

   list = pe_factory_spheroid_codelist(&number);
   printf("Total number of predefined spheroids: %6d\n",number);
   for (i=0; i<number; i++)
   {
      printf("%6d\n",list[i]);
   }
   pe_factory_codelist_del(list);


pe_factory_unit

Creates the specified unit object.

Interface

PE_UNIT pe_factory_unit (int code);

Parameters

code The code of the predefined unit object.

Description

Creates the predefined unit object with the specified code.

Returns

On success, the new unit object. On failure, a null pointer.

Examples

PE_UNIT meter = pe_factory_unit(PE_U_METER);


pe_generate_horizon

Returns the horizon for a projected coordinate system.

Interface

PE_HORIZON pe_generate_horizon (PE_PROJCS projcs);

Parameters

projcs An existing projected coordinate system object.

Description

Returns the horizon for a projected coordinate system. Each map projection has a certain limit. Many projections can map the entire world, but a few, like Transverse Mercator, are good for a limited area only. PE_HORFUNC has this structure.

typedef struct pe_horizon_t {
int nump;
int kind;
int inclusive;
int replicate;
int size;
double *coord[2];
} *PE_HORIZON;

The nump argument is the number of parts in the horizon, while kind describes the shape type. The kind values are:

PE_HORIZON_RECT
PE_HORIZON_POLY
PE_HORIZON_LINE
PE_HORIZON_POINT

Inclusive can have a value of 1 or 0. If 1, the horizon is inclusive. if 0, the horizon is exclusive. Horizons are returned in the units of the geographic coordinate system of the projected coordinate system. You can return one main horizon shape and tell a developer that he needs to shift the horizon by a full circle (if the geogcs units are degrees, the shift is 360 degrees) to catch other data with the replicate argument. The replicate values are:

enum replicate_enum {
PE_HORIZON_REPLICATE_NONE,
PE_HORIZON_REPLICATE_LEFT,
PE_HORIZON_REPLICATE_RIGHT,
PE_HORIZON_REPLICATE_BOTH};

Size is the number of coordinates in the part while coord is a pointer to the array of coordinate values.

Returns

On success, a pointer to an array of horizons. On failure, a null pointer.

Examples

PE_PROJCS pcs1 = pe_factory_projcs(PE_PCS_WGS_1984_UTM_11N);
PE_HORIZON *pcs_horz = pe_generate_horizon(pcs1);


pe_geodesic_coordinate

Finds the point at some distance and azimuth from a point along a geodesic.

Interface

double pe_geodesic_coordinate
(double a,
double e2,
double lam1,
double phi1,
double distance,
double az12,
double *lam2,
double *phi2);

Parameters

a Semimajor axis of the spheroid.

e2 Eccentricity squared of the spheroid.

lam1 Longitude value of the first point.

phi1 Latitude value of the first point.

distance Geodesic distance.

az12 Azimuth from from the first to the second point.

lam2 Longitude value of the new point.

phi2 Latitude value of the new point.

Description

The pe_geodesic_coordinate function takes a spheroid, point, distance and azimuth and calculates the target point. A geodesic is the shortest distance between two points on a spheroid. Set e2 to zero to calculate distances on a sphere. The geographic coordinates and the azimuth are in radians. The azimuth value range is -p £ azimuth £ +p. An azimuth is measured positive clockwise with North equal to a zero azimuth. The semimajor axis (a) and the distance are usually given in meters. You can use any linear unit of measure as long as both values use the same unit of measure.

Returns

Longitude and latitude (in radians) of the new point.


pe_geodesic_distance

Finds the distance and forward and inverse azimuths between two points along a geodesic.

Interface

double pe_geodesic_distance
(double a,
double e2,
double lam1,
double phi1,
double lam2,
double phi2,
double *distance,
double *az12,
double *az21);

Parameters

a Semimajor axis of the spheroid.

e2 Eccentricity squared of the spheroid.

lam1 Longitude value of the first point.

phi1 Latitude value of the first point.

lam2 Longitude value of the second point.

phi2 Latitude value of the second point.

distance Geodesic distance.

az12 Azimuth from from the first to the second point.

az21 Azimuth from from the second to the first point.

Description

The pe_geodesic_distance function takes a spheroid and two geographic points and calculates the distance and azimuths along the geodesic. A geodesic is the shortest path between two points on a spheroid. Set e2 to zero to calculate distances on a sphere. The geographic coordinates and the azimuths are in radians. The azimuth value range is -p £ azimuth £ +p. An azimuth is measured positive clockwise with North equal to a zero azimuth. The semimajor axis (a) is usually given in meters which means that the distance is in meters. To return the distance in another linear unit of measure, specify the semimajor axis in that unit of measure. As an example, if the semimajor axis is in US survey feet, the returned distance is in US survey feet.

Returns

Distance and forward and inverse azimuths (in radians).


pe_geog1_to_geog2

Transforms between geographic coordinate systems in the true order of a PE_GEOGTRAN.

Interface

int pe_geog1_to_geog2
(PE_GEOGTRAN geogtran,
int n,
double coord[ ][2],
double h[ ]);

Parameters

geogtran      Geographic transformation object.

n           Number of points.

coord[ ][2]     Two-dimensional array of points.

h Array of ellipsoidal heights. May be a NULL pointer. If so, all heights are assumed to be zero.

Description

Applies a geographic (datum) transformation in the same direction as the PE_GEOGTRAN to the specified array of points. Different geographic transformation methods require different types of height (or depth) values. For example, the geocentric translation methods uses ellipsoidal heights. The use of heights referenced to other surfaces such as sea level may result in incorrect results.

Returns

Number of points projected successfully.

Examples

double pnt[2][2] = {{10,20},{10,30}};
double z[2] = {{200},{189}};
int out = pe_geog1_to_geog2(gt,2,pnt,z);


pe_geog2_to_geog1

Transforms between geographic coordinate systems in the opposite direction of a PE_GEOGTRANS.

Interface

int pe_geog2_to_geog1
(PE_GEOGTRAN geogtran,
int n,
double coord[ ][2],
double h[ ]);

Parameters

geogtran      Geographic transformation object.

n           Number of points.

coord[ ][2]     Two-dimensional array of points.

h Array of z coordinates. May be a NULL pointer. If so, all heights are assumed to be zero.

Description

Applies a geographic (datum) transformation in the opposite direction as the PE_GEOGTRAN to the specified array of points. Different geographic transformation methods require different types of height (or depth) values. For example, the geocentric translation methods uses ellipsoidal heights. The use of heights referenced to other surfaces such as sea level may result in incorrect results.

Returns

Number of points projected successfully.

Examples

double pnt[2][2] = {{10,20},{10,30}};
double z[2] = {{200},{189}};
int out = pe_geog2_to_geog1(gt,2,pnt,z);


pe_geog_to_proj

Converts geographic coordinates to a projected coordinate system.

Interface

int pe_geog_to_proj
(PE_PROJCS projcs,
int n,
double coord[ ][2]);

Parameters

projcs        Projected coordinate system object.

n           Number of points.

coord[ ][2]     Array of points.

Description

Applies the map projection’s forward transformation to the specified array of points.

Returns

Number of points projected successfully.

Examples

double pnt[2][2] = {{10,20},{10,30}};
int out = pe_geog_to_proj(pcs,2,pnt);


pe_geogcs_clone

Creates a new geographic coordinate system from an existing one.

Interface

PE_GEOGCS pe_geogcs_clone (PE_GEOGCS geogcs);

Parameters

geogcs An existing geographic coordinate system object.

Description

Creates a duplicate geographic coordinate system from an existing geographic coordinate system object.

Returns

On success, the new coordinate system. On failure, a null pointer.

Examples

PE_GEOGCS gcs2 = pe_geogcs_clone(gcs);


pe_geogcs_datum

Retrieves the datum of a geographic coordinate system.

Interface

PE_DATUM pe_geogcs_datum (PE_GEOGCS geogcs);

Parameters

geogcs Geographic coordinate system object.

Description

Retrieves the datum of a geographic coordinate system.

Returns

On success, the datum of the specified geographic coordinate system. On failure, zero.

Examples

PE_DATUM d1 = pe_geogcs_datum(gcs);


pe_geogcs_del

Removes a geographic coordinate system object.

Interface

void pe_geogcs_del (PE_GEOGCS geogcs);

Parameters

geogcs The geographic coordinate system object.

Description

Releases the memory allocated to the specified geographic coordinate system object.

Returns

None.

Examples

pe_geogcs_del(gcs);


pe_geogcs_eq

Tests whether two geographic coordinate system objects are equivalent.

Interface

int pe_geogcs_eq
(PE_GEOGCS geogcs1,
PE_GEOGCS geogcs2);

Parameters

geogcs1 The first geographic coordinate system object.

geogcs2 The second geographic coordinate system object.

Description

Tests whether two geographic coordinate system objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int geogcs_test = pe_geogcs_eq(gcs1,gcs2);


pe_geogcs_from_string

Creates a geographic coordinate system object from its string representation.

Interface

PE_GEOGCS pe_geogcs_from_string (const char *buffer);

Parameters

buffer The string representation of the geographic coordinate system object.

Description

Creates a geographic coordinate system object from its string representation.

Returns

On success, a geographic coordinate system object. Otherwise, a null pointer.

Examples

PE_GEOGCS gcs;

char *gcs_metadata = “GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",
SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],
UNIT[\"Degree\",0.0174532925199433]]”;

gcs = pe_geogcs_from_string(gcs_metadata);


pe_geogcs_name

Retrieves the name of a geographic coordinate system.

Interface

void pe_geogcs_name
(PE_GEOGCS geogcs,
char name[PE_NAME_MAX]);

Parameters

geogcs Geographic coordinate system object.

name The name of the geographic coordinate system object.

Description

Retrieves the name of a geographic coordinate system.

Returns

None.

Examples

char g[PE_NAME_MAX];
pe_geogcs_name(gcs, g);


pe_geogcs_new

Creates a new geographic coordinate system.

Interface

PE_GEOGCS pe_geogcs_new
(const char *name,
PE_DATUM datum,
PE_PRIMEM primem,
PE_UNIT unit);

Parameters

name Name of the new geographic coordinate system.

datum Datum of the coordinate system.

primem Prime meridian of the coordinate system.

unit Geographic coordinate system units.

Description

Defines a new geographic coordinate system with the specified attributes.

Returns

On success, the new coordinate system with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_GEOGCS gcs = pe_geogcs_new("GCS1", wgs84, bogota, dd);


pe_geogcs_p

Tests whether an object is of type geographic coordinate system.

Interface

int pe_geogcs_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type geographic coordinate system.

Returns

Returns 1 if the argument points to an object of type geographic coordinate system. Otherwise, 0.

Examples

test = pe_geogcs_p(gcs);


pe_geogcs_primem

Retrieves the prime meridian of a geographic coordinate system.

Interface

PE_PRIMEM pe_geogcs_primem (PE_GEOGCS geogcs);

Parameters

geogcs Geographic coordinate system object.

Description

Retrieves the prime meridian of a geographic coordinate system.

Returns

On success, the prime meridian of the specified geographic coordinate system. On failure, zero.

Examples

PRIMEM pm = pe_geogcs_primem(gcs);


pe_geogcs_to_string

Creates a string representation of the geographic coordinate system.

Interface

void pe_geogcs_to_string
(PE_GEOGCS geogcs,
char buffer[PE_BUFFER_MAX]);

Parameters

geogcs The geographic coordinate system object.

buffer The string representation of the object.

Description

Creates a string representation of the geographic coordinate system object in the format: GEOGCS["name",DATUM["name",SPHEROID["name",axis,1/f]], PRIMEM["name",longitude], UNIT["name",conversion factor]]

Returns

None.

Examples

GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",
SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],
UNIT["Degree",0.0174532925199433]]


pe_geogcs_unit

Retrieves the unit of measure of a geographic coordinate system.

Interface

PE_UNIT pe_geogcs_unit (PE_GEOGCS geogcs);

Parameters

geogcs Geographic coordinate system object.

Description

Retrieves the units of a geographic coordinate system.

Returns

On success, the units of the specified geographic coordinate system object. On failure, a null pointer.

Examples

PE_UNIT u = pe_geogcs_unit(gcs);


pe_geogtran_clone

Creates a new geographic transformation object from an existing one.

Interface

PE_GEOGTRAN pe_geogtran_clone (PE_GEOGTRAN geogtran);

Parameters

geogtran An existing geographic transformation object.

Description

Creates a duplicate geographic transformation from an existing geographic transformation object.

Returns

On success, the new geographic transformation with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_GEOGTRAN agd2wgs_2 = pe_geogtran_clone(agd2wgs);


pe_geogtran_del

Removes a geographic transformation object.

Interface

void pe_geogtran_del (PE_GEOGTRAN geogtran);

Parameters

geogtran The geographic transformation object.

Description

Releases the memory allocated to the specified geographic transformation object.

Returns

None.

Examples

pe_geogtran_del(agd2wgs);


pe_geogtran_eq

Tests whether two geographic transformation objects are equivalent.

Interface

int pe_geogtran_eq
(PE_GEOGTRAN geogtran1,
PE_GEOGTRAN geogtran2);

Parameters

geogtran1 The first geographic transformation object.

geogtran2 The second geographic transformation object.

Description

Tests whether two geographic transformation objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int geogtran_test = pe_geogtran_eq(agd2wgs1,agd2wgs2);


pe_geogtran_from_string

Creates a geographic transformation object from its string representation.

Interface

PE_GEOGTRAN pe_geogtran_from_string (const char *buffer);

Parameters

buffer The string representation of the geographic transformation object.

Description

Creates a geographic transformation object from its string representation.

Returns

On success, a geographic transformation object. Otherwise, a null pointer.

Examples

PE_GEOGTRAN gt;

char *gt_metadata = “GEOGTRAN[\”AGD_1984_To_WGS_1984_2\”,GEOGCS[\”GCS_Australian_1984\”,
DATUM[\”D_Australian_1984\”,SPHEROID[\”Australian\”,6378160,298.25]],
PRIMEM[\”Greenwich\”,0],UNIT[\”Degree\”,0.0174532925199433]],
GEOGCS[\”GCS_WGS_1984\”,DATUM[\”D_WGS_1984\”,
SPHEROID[\”WGS_1984\”,6378137,298.257223563]],PRIMEM[\”Greenwich\”,0],
UNIT[\”Degree\”,0.0174532925199433]],METHOD[\”Coordinate_Frame\”],
PARAMETER[\”X_Axis_Translation\”,116],
PARAMETER[\”Y_Axis_Translation\”,50.47],
PARAMETER[\”Z_Axis_Translation\”,141.69],
PARAMETER[\”X_Axis_Rotation\”,0.23],
PARAMETER[\”Y_Axis_Rotation\”,0.39],
PARAMETER[\”Z_Axis_Rotation\”,0.344],
PARAMETER[\”Scale_Difference\”,0.0983]]”;

gt = pe_geogtran_from_string(gt_metadata);


pe_geogtran_geogcs1

Retrieves the ‘from’ geographic coordinate system.

Interface

PE_GEOGCS pe_geogtran_geogcs1 (PE_GEOGTRAN geogtran);

Parameters

geogtran Geographic transformation object.

Description

Returns the ‘from’ geographic coordinate system.

Returns

On success, a geographic coordinate system object. On failure, a null pointer.

Examples

PE_GEOGTRAN agd2wgs = pe_factory (8139);
PE_GEOGCS gt_gcs1 =pe_geogtran_geogcs1(agd2wgs);


pe_geogtran_geogcs2

Retrieves the ‘to’ geographic coordinate system.

Interface

PE_GEOGCS pe_geogtran_geogcs2 (PE_GEOGTRAN geogtran);

Parameters

geogtran Geographic transformation object.

Description

Returns the ‘to’ geographic coordinate system.

Returns

On success, a geographic coordinate system. On failure, a null pointer.

Examples

PE_GEOGTRAN agd2wgs = pe_factory (8139);
PE_GEOGCS gt_gcs2 =pe_geogtran_geogcs2(agd2wgs);


pe_geogtran_isconstloaded

Tests if constants are loaded for a geographic transformation.

Interface

int pe_geogtran_isconstloaded (PE_GEOGTRAN geogtran);

Parameters

geogtran A geogtran object.

Description

Tests whether the constants are loaded for a geographic transformation. Currently, the grid-based geographic transformation methods support the loading of constants.

Returns

Returns 1 if constants are loaded. Otherwise, 0.

Examples

test = pe_geogtran_isconstloaded(agd2wgs);


pe_geogtran_load_constants

Loads any available constants for a geographic transformation.

Interface

int pe_geogtran_load_constants (PE_GEOGTRAN geogtran);

Parameters

geogtran Geographic transformation object.

Description

Loads into memory any available constants for the geographic coordinate system. You may want to load constants for the grid-based geographic transformation methods like NADCON and NTv2. While the memory footprint can be large, the performance is usually improved.

Returns

On success, the number of constants. Otherwise, 0.

Examples

PE_GEOGTRAN agd2wgs = pe_factory (8139);
if (0 == pe_geogtran_load_constants(agd2wgs))
{
/* Quit. */
}
else
{
/* Run the transformation. */
}


pe_geogtran_method

Retrieves the method of a geographic transformation.

Interface

PE_METHOD pe_geogtran_method (PE_GEOGTRAN geogtran);

Parameters

geogtran Geographic transformation object.

Description

Returns the method of the geographic transformation.

Returns

On success, the method of the geographic transformation. On failure, a null pointer.

Examples

PE_METHOD gt1_mthd = pe_geogtran_method(agd2wgs);


pe_geogtran_name

Retrieves the name of a geographic transformation.

Interface

void pe_geogtran_name
(PE_GEOGTRAN geogtran,
char name[PE_NAME_MAX]);

Parameters

geogtran Geographic transformation object.

name The name of the geographic transformation object.

Description

Retrieves the name of a geographic transformation object.

Returns

None.

Examples

char gt1_name[PE_NAME_MAX];
pe_geogtran_name(agd2wgs, gt1_name);


pe_geogtran_new

Creates a new geographic transformation.

Interface

PE_GEOGTRAN pe_geogtran_new
(const char *name,
PE_GEOGCS geogcs1,
PE_GEOGCS geogcs2,
PE_METHOD method,
PE_PARAMETER parameters[PE_PARM_MAX]);

Parameters

name Name of the new geographic transformation.

geogcs1 The ‘from’ geographic coordinate system.

geogcs2 The ‘to’ geographic coordinate system.

method The geographic transformation method.

parameters Any parameters needed by the method for the specific transformation.

Description

Defines a new geographic transformation with the specified attributes.

Returns

On success, the new geographic transformation with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_GEOGTRAN agd2gda = pe_geogtran_new("AGD84_to_WGS84", PE_GCS_AGD_1984,
PE_GCS_WGS_1984, PE_MTH_COORDINATE_FRAME, gt_par);


pe_geogtran_p

Tests whether an object is of type geographic transformation.

Interface

int pe_geogtran_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type geographic transformation.

Returns

Returns 1 if the argument points to an object of type geographic transformation. Otherwise, 0.

Examples

test = pe_geogtran_p(agd2wgs);


pe_geogtran_parameters

Retrieves the parameters of a geographic transformation.

Interface

void pe_geogtran_parameters
(PE_GEOGTRAN geogtran,
PE_PARAMETER parameters[PE_PARM_MAX]);

Parameters

geogtran Geographic transformation object.

parameters The array of any needed geographic transformation parameters.

Description

Returns the parameters of a geographic transformation. The parameters can include

PE_PARM_DX /* X-axis translation */
PE_PARM_DY /* Y-axis translation */
PE_PARM_DZ /* Z-axis translation */
PE_PARM_RX /* X-axis rotation */
PE_PARM_RY /* Y-axis rotation */
PE_PARM_RZ /* Z-axis rotation */
PE_PARM_DS /* Scale difference */

Returns

On success, an array of parameters for the geographic transformation. On failure, a null pointer.

Examples

PE_PARAMETER gt_par[PE_PARM_MAX];
pe_geogtran_parameter(agd2wgs, gt_par);


pe_geogtran_to_string

Creates the string representation of a geographic transformation.

Interface

void pe_geogtran_to_string
(PE_GEOGTRAN geogtran,
char buffer[PE_BUFFER_MAX]);

Parameters

geogtran The geographic transformation object.

buffer The string representation of the object.

Description

Creates a string representation of the geographic transformation object in the format:
GEOGTRAN["name",GEOGCS[&ldots;],METHOD["name"],PARAMETER["name",value],&ldots;].

Returns

None.

Examples

GEOGTRAN["AGD_1984_To_WGS_1984_2",GEOGCS["GCS_Australian_1984", DATUM["D_Australian_1984",SPHEROID["Australian",6378160,298.25]],
PRIMEM["Greenwich",0], UNIT["Degree",0.0174532925199433]],
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984", SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0], UNIT["Degree",0.0174532925199433]],METHOD["Coordinate_Frame"], PARAMETER["X_Axis_Translation",-116],PARAMETER["Y_Axis_Translation",-50.47], PARAMETER["Z_Axis_Translation",-141.69],PARAMETER["X_Axis_Rotation",-0.23], PARAMETER["Y_Axis_Rotation",-0.39],PARAMETER["Z_Axis_Rotation",-0.344], PARAMETER["Scale_Difference",0.0983]]


pe_geogtran_unload_constants

Removes any loaded constants from a geographic transformation object.

Interface

void pe_geogtran_unload_constants (PE_GEOGTRAN geogtran);

Parameters

geogtran The geographic transformation object.

Description

Releases the memory allocated for any constants attached to the specified geographic transformation object. In particular, used with grid-based geographic transformation methods like NADCON and NTv2.

Returns

None.

Examples

pe_geogtran_unload_constants(agd2wgs);


pe_horizon_del

Removes a horizon object.

Interface

void pe_horizon_del (PE_HORIZON horizon);

Parameters

horizon The horizon object.

Description

Releases the memory allocated to the specified horizon object.

Returns

None.

Examples

pe_horizon_del(pcs_horz);


pe_horizon_generate

Returns the horizon for a projected coordinate system.

Interface

PE_HORIZON pe_horizon_generate (PE_PROJCS projcs);

Parameters

projcs An existing projected coordinate system object.

Description

Returns the horizon for a projected coordinate system.

Returns

On success, a pointer to an array of horizons. On failure, a null pointer.

Examples

PE_HORIZON *pcs_horz = pe_horizon_generate(pcs1);


pe_m

Calculates the meridional radius of curvature.

Interface

double pe_m
(double a,
double e2,
double phi);

Parameters

a, e2 Semimajor axis and eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Meridional radius of curvature is the radius of curvature of the meridional ellipse at the point.

Returns

Meridional radius of curvature at the point.


pe_method_clone

Creates a new method object from an existing one.

Interface

PE_METHOD pe_method_clone (PE_METHOD method);

Parameters

method An existing method object.

Description

Creates a duplicate method from an existing method object.

Returns

On success, the new method with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_METHOD coordframe2 = pe_method_clone(coordframe);


pe_method_del

Removes a method object.

Interface

void pe_method_del (PE_METHOD method);

Parameters

method The method object.

Description

Releases the memory allocated to the specified method object.

Returns

None.

Examples

pe_method_del(coordframe);


pe_method_eq

Tests whether two method objects are equivalent.

Interface

int pe_method_eq
(PE_METHOD method1,
PE_METHOD method2);

Parameters

method1 The first method object.

method2 The second method object.

Description

Tests whether two method objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int method_test = pe_method_eq(coordframe1,coordframe2);


pe_method_forward

Retrieves the forward function to transform between geographic coordinate systems.

Interface

PE_METHFUNC pe_method_forward (PE_METHOD method);

Parameters

method Method object.

Description

Returns the function to transform from geographic to geographic coordinates.

Returns

On success, the method forward transformation. On failure, a null pointer.

Examples

PE_METHOD coordframe =
pe_method_new("Coordinate_Frame", &cframe_f, &cframe_i);
PE_METHFUNC fwd =pe_method_forward(coordframe);


pe_method_from_string

Creates a method object from its string representation.

Interface

PE_METHOD pe_method_from_string (const char *buffer);

Parameters

buffer The string representation of the method object.

Description

Creates a method object from its string representation.

Returns

On success, a method object. Otherwise, a null pointer.

Examples

PE_METHOD method;

char *method_metadata = “METHOD[\"Geocentric_Translation\"]”;

method = pe_method_from_string(method_metadata);


pe_method_inverse

Retrieves the inverse function to transform between geographic coordinate systems.

Interface

PE_METHFUNC pe_method_inverse (PE_METHOD method);

Parameters

method Method object.

Description

Returns the inverse function to transform from geographic to geographic coordinates.

Returns

On success, the method inverse transformation. On failure, a null pointer.

Examples

PE_METHOD coordframe =

pe_method_new("Coordinate_Frame", &cframe_f, &cframe_i);

PE_METHFUNC inv =pe_method_inverse(coordframe);


pe_method_name

Retrieves the name of a method object.

Interface

void pe_method_name
(PE_METHOD method,
char name[PE_NAME_MAX]);

Parameters

method Method object.

name The name of the method object.

Description

Retrieves the name of the method object.

Returns

None.

Examples

char cf_name[PE_NAME_MAX];
pe_method_name(coordframe, cf_name);


pe_method_new

Creates a new method.

Interface

PE_METHOD pe_method_new
(const char *name,
PE_METHFUNC forward,
PE_METHFUNC inverse);

Parameters

name Name of the new method.

forward Forward transformation function for the new method.

inverse Inverse transformation function for the new method.

Description

Defines a new method with the specified attributes. The PE_METHFUNC structure is

     typedef int (*PE_METHFUNC)(
                      double sph1[2],
                      double sph2[2],
                      double parm[PE_PARM_MAX],
                      char   *chrstr,
                      int    n,
                      double coord[][2],
                      double h[],
                      int    iconst[],
                      float  fconst[],
                      double dconst[]);

We assume that new methods are designed for doing geographic transformations. The first two parameters are input and output spheroid parameters. The parm array contains any parameters that are needed. The n parameter is the number of points while the coord array contains the X-values and Y-values. The h array contains the Z-values. The last three parameters, iconst, fconst, and dconst arrays, store values that are constants for the life of a method object.

Returns

On success, the new method with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_METHOD cf = pe_method_new("Coord_Frame_2", &cf_f, &cf_i);


pe_method_p

Tests whether an object is of type method.

Interface

int pe_method_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type method.

Returns

Returns 1 if the argument points to an object of type method. Otherwise, 0.

Examples

test = pe_method_p(coordframe);


pe_method_to_string

Creates a string representation of a method.

Interface

void pe_method_to_string
(PE_METHOD method,
char buffer[PE_BUFFER_MAX]);

Parameters

method The method object.

buffer The string representation of the object.

Description

Creates a string representation of the method object in the format:
METHOD["name"].

Returns

None.

Examples

METHOD["Geocentric_Translation"]


pe_mu_to_phi

Calculates the geographic latitude from the rectifying latitude.

Interface

double pe_mu_to_phi
(double e2,
double mu);

Parameters

e2 Eccentricity squared of the spheroid.

mu Rectifying latitude (measured in radians) of the point.

Description

This function is the inverse of pe_phi_to_mu; pe_mu_to_phi(e2,pe_mu(e2,phi)) is approximately equal to phi.

where

Returns

Geographic latitude (measured in radians) of the point.


pe_n

Calculates the transverse radius of curvature at a point.

Interface

double pe_n
(double a,
double e2,
double phi);

Parameters

a, e2 Semimajor axis and eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Transverse radius of curvature is the radius of curvature of the curve formed by a plane intersecting the spheroid at the point normal to the surface and also perpendicular to the meridian at the point.

Returns

Transverse radius of curvature at the point.


pe_parameter_clone

Creates a new parameter object from an existing parameter.

Interface

PE_PARAMETER pe_parameter_clone (PE_PARAMETER parameter);

Parameters

parameter An existing parameter.

Description

Creates a duplicate projection parameter from an existing parameter.

Returns

On success, the new projection parameter. On failure, a null pointer.

Examples

PE_PARAMETER lam0_new = pe_parameter_clone(lam0);


pe_parameter_del

Removes a parameter object.

Interface

void pe_parameter_del (PE_PARAMETER parameter);

Parameters

parameter The parameter object.

Description

Releases the memory allocated to the specified parameter object.

Returns

None.

Examples

pe_parameter_del(lam0);


pe_parameter_eq

Tests whether two parameter objects are equivalent.

Interface

int pe_parameter_eq
(PE_PARAMETER parameter1,
PE_PARAMETER parameter2);

Parameters

parameter1 The first parameter object.

parameter2 The second parameter object.

Description

Tests whether two parameter objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int parameter_test = pe_parameter_eq(cm100w,cm100);


pe_parameter_from_string

Creates a parameter object from its string representation.

Interface

PE_PARAMETER pe_parameter_from_string (const char *buffer);

Parameters

buffer The string representation of the parameter object.

Description

Creates a parameter object from its string representation.

Returns

On success, a parameter object. Otherwise, a null pointer.

Examples

PE_PARAMETER par1;

char *par_metadata = “PARAMETER[\"false_easting\",1000000]”;

par1 = pe_parameter_from_string(par_metadata);


pe_parameter_index

Retrieves the array index value of a parameter.

Interface

int pe_parameter_index (PE_PARAMETER parameter);

Parameters

parameter The parameter object.

Description

Retrieves the array index value of a parameter. The parameter array holds parameter values for projected coordinate system and geographic transformation objects. The parameter array is a one-dimensional array with up to PE_PARAMETER_MAX values. Each projected coordinate system or geographic transformation object stores its parameter values in particular elements in the array. The pe_parameter_index function tells you the element in the array where a particular parameter is located.

Returns

On success, the array index value of the parameter of the specified parameter object.

Examples

PE_PARAMETER lam0 = pe_parameter_new("Central_Meridian",-100.0);
int i = pe_parameter_index(lam0));


pe_parameter_method_defaults

Creates a set of default parameters for a particular method.

Interface

int pe_parameter_method_defaults
(PE_METHOD method,
PE_PARAMETER parameters[PE_PARM_MAX]);

Parameters

method A method object

parameters The parameter object.

Description

Creates a set of default parameters for a particular method like Coordinate Frame or NADCON.

Returns

The number of parameters.

Examples

   /* System header files. */
   #include <stdlib.h>
   #include <stdio.h>

   /* Projection Engine and Projection Engine Factory header files. */
   #include "pe.h"
   #include "pef.h"

   static struct
   {
      int code;
   } mth_list[] =
   {
     {9601},
     {9603},
     {9604},
     {9605},
     {9606},
     {9607},
     {9613},
     {42607},
     {109613}
   };

   void main()
   {
      PE_METHOD     method;
      PE_PARAMETER  parameter[PE_PARM_MAX];

      int    i,j,n;
      char   name[PE_NAME_MAX];
      char   mthname[PE_NAME_MAX];
      double value;
      int mthcode;
      int number;

      number = 9;

      for (i = 0; i < 9; i++)
      {
         /* Create an object with the specified code. */
         method = pe_factory(mth_list[i].code);

         pe_method_name(method,mthname);
         printf("\n%s\n",mthname);

         n = pe_parameter_method_defaults(method, parameter);
         printf("n = %d\n",n);

         for (j = 0; j < PE_PARM_MAX; j++)
         {
            if (parameter[j])
            {
               pe_parameter_name(parameter[j], name);
               value = pe_parameter_value(parameter[j]);
               printf ("\tparameter[%d] -- %s -- %.16g\n", j, name, value);
            }
         }
      }
      exit(EXIT_SUCCESS);
   }


pe_parameter_name

Retrieves the name of a parameter.

Interface

void pe_parameter_name
(PE_PARAMETER parameter,
char name[PE_NAME_MAX]);

Parameters

parameter The parameter object.

name The name of the parameter object.

Description

Retrieves the name of a parameter.

Examples

char lon1[PE_NAME_MAX];
pe_parameter_name(cm, lon0);


pe_parameter_name_set

Sets the name of a parameter.

Interface

int pe_parameter_name_set
(PE_PARAMETER parameter,
char name[PE_NAME_MAX]);

Parameters

parameter The parameter object.

name New name of the parameter.

Description

Assigns a name to a parameter.

Returns

Returns one if successful. On failure, zero.

Examples

pe_parameter_name_set(lam0,"Longitude_Of_Origin");


pe_parameter_new

Creates a new parameter.

Interface

PE_PARAMETER pe_parameter_new
(const char *name,
double value);

Parameters

name Name of the new parameter.

value Value of the new parameter.

Description

Defines a new parameter with the specified attributes.

Returns

On success, the new parameter with the attributes equal to the corresponding arguments. On failure, a null pointer.

name domain of value macro
Central Meridian (Longitude of Origin) [-180,+180] PE_PARM_LAM0
Longitude of Center [-180,+180] PE_PARM_LAMC
Standard Parallel 1 [-90,+90] PE_PARM_PHI1
Standard Parallel 2 [-90,+90] PE_PARM_PHI2
Latitude of Origin [-90,+90] PE_PARM_PHI0
Latitude of Center [-90,+90] PE_PARM_PHIC
Scale Factor > 0 PE_PARM_K0
Azimuth [0,360] PE_PARM_ALPHA
False Easting PE_PARM_X0
False Northing PE_PARM_Y0

X-axis translation PE_PARM_DX
Y-axis translation PE_PARM_DY
Z-axis translation PE_PARM_DZ
X-axis rotation PE_PARM_RX
Y-axis rotation PE_PARM_RY
Z-axis rotation PE_PARM_RZ
Difference in scale PE_PARM_DS

Examples

PE_PARAMETER lam0 = pe_parameter_new("central_meridian", -100);

PE_PARAMETER dz = pe_parameter_new("local_to_wgs84_dz", -138.52);


pe_parameter_p

Tests whether an object is of type parameter.

Interface

int pe_parameter_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type parameter.

Returns

Returns 1 if the argument points to an object of type parameter. Otherwise, 0.

Examples

test = pe_parameter_p(lam0);


pe_parameter_projection_defaults

Creates a set of default parameters for a particular projection.

Interface

int pe_parameter_projection_defaults
(PE_PROJECTION projection,
PE_PARAMETER parameters[PE_PARM_MAX]);

Parameters

projection A projection object

parameters The parameter object.

Description

Creates a set of default parameters for a particular projection.

Returns

The number of parameters.

Examples

   /* System header files. */
   #include <stdlib.h>
   #include <stdio.h>

   /* Projection Engine and Projection Engine Factory header files. */
   #include "pe.h"
   #include "pef.h"

   void main()
   {
      PE_PROJECTION     projection;
      PE_PARAMETER      parameter[PE_PARM_MAX];

      int    i,n;
      char   name[PE_NAME_MAX];
      char   prjname[PE_NAME_MAX];
      double value;
      int prjcode;

   for (prjcode = 43001; prjcode < 43038; prjcode++)
   {
      /* Create an object with the specified code. */
      projection = pe_factory(prjcode);

      /* Check if the object is a projection. */
      if (!pe_projection_p(projection))
      {
         fprintf(stderr,"Invalid : %s\n",prjcode);
         exit(EXIT_FAILURE);
      }

      pe_projection_name(projection,prjname);
      printf("\n%s\n",prjname);

      n = pe_parameter_projection_defaults(projection, parameter);
      for (i = 0; i < PE_PARM_MAX; i++)
      {
         if (parameter[i])
         {
            pe_parameter_name(parameter[i], name);
            value = pe_parameter_value(parameter[i]);
            printf ("\tparameter[%d] -- %s -- %.16g\n", i, name, value);
         }
      }
   }
   exit(EXIT_SUCCESS);
   }


pe_parameter_to_string

Creates a string representation of a parameter.

Interface

void pe_parameter_to_string
(PE_PARAMETER parameter,
char buffer[PE_BUFFER_MAX]);

Parameters

parameter The parameter object.

buffer The string representation of the object.

Description

Creates a string representation of the parameter object in the format:
PARAMETER["name",value].

Returns

None.

Examples

PARAMETER["false_easting",1000000]


pe_parameter_value

Retrieves the value of a parameter.

Interface

double pe_parameter_value (PE_PARAMETER parameter);

Parameters

parameter The parameter object.

Description

Retrieves the value of a projection parameter.

Returns

On success, the value of the projection parameter of the specified parameter object. On failure, zero.

Examples

double x = R*(lam - (PI/180)*pe_parameter_value(lam0));


pe_parameter_value_set

Sets the value of a parameter.

Interface

int pe_parameter_value_set (PE_PARAMETER parameter, double value);

Parameters

parameter The parameter object.

value New value of the parameter.

Description

Assigns a value to a parameter. Generally used to assign a more appropriate value to a parameter created by the pe_factory function.

Returns

Returns one if successful. On failure, zero.

Examples

pe_parameter_value_set(lam0,-100.0);


pe_phi_to_beta

Calculates the authalic latitude from the geographic latitude.

Interface

double pe_phi_to_beta
(double e2,
double phi);

Parameters

e2 Eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Authalic latitude maps the spheroid to an auxiliary sphere such that the sphere is equal in area to that of the spheroid.

Returns

Authalic latitude (measured in radians) of the point.


pe_phi_to_chi

Calculates the conformal latitude from the geographic latitude.

Interface

double pe_phi_to_chi
(double e2,
double phi);

Parameters

e2 Eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Conformal latitude is used to map the spheroid to an auxiliary sphere in such a way that the angles are preserved.

Returns

Conformal latitude (measured in radians) of the point.


pe_phi_to_eta

Calculates the reduced latitude from the geodetic latitude.

Interface

double pe_phi_to_eta
(double e2,
double phi);

Parameters

e2 Eccentricity squared of the spheroid.

phi Geodetic latitude (measured in radians) of the point.

Description

The reduced or parametric latitude is a latitude on a sphere of radius a (where a is the semimajor axis of a spheroid). The reduced latitude is the angle formed between the equatorial plane and a line from the center of the sphere to a point on the sphere that is at the same distance from the polar axis as the geodetic latitude.

Returns

Reduced latitude (measured in radians) of the point.


pe_phi_to_mu

Calculates the rectifying latitude from the geographic latitude.

Interface

double pe_phi_to_mu
(double e2,
double phi);

Parameters

e2 Eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Rectifying latitude is used to map the spheroid to an auxiliary sphere in such a way that correct distances along the meridians are preserved.

where

Returns

Rectifying latitude (measured in radians) of the point.


pe_predefined_angular_unit

Creates a table of predefined angular units.

Interface

PE_TABLE pe_predefined_angular_unit (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined angular unit objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE ang_units;

int n, i;

ang_units = pe_predefined_angular_unit(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, ang_units[i].code, ang_units[i].name);

}


pe_predefined_datum

Creates a table of predefined datums.

Interface

PE_TABLE pe_predefined_datum (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined datum objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE datums;

int n, i;

datums = pe_predefined_datum(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”,datums[i].code,datums[i].name);

}


pe_predefined_geogcs

Creates a table of predefined geographic coordinate systems.

Interface

PE_TABLE pe_predefined_geogcs (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined geographic coordinate system objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE gcs_list;

int n, i;

gcs_list = pe_predefined_geogcs(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, gcs_list[i].code, gcs_list[i].name);

}


pe_predefined_geogtran

Creates a table of predefined geographic (datum) transformations.

Interface

PE_TABLE pe_predefined_geogtran (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined geographic transformation objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE transforms;

int n, i;

transforms = pe_predefined_geogtran(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, transforms[i].code, transforms[i].name);

}


pe_predefined_linear_unit

Creates a table of predefined linear units.

Interface

PE_TABLE pe_predefined_linear_unit (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined linear unit objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE linear_units;

int n, i;

linear_units = pe_predefined_linear_unit(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, linear_units[i].code, linear_units[i].name);

}


pe_predefined_method

Creates a table of predefined geographic (datum) transformation methods.

Interface

PE_TABLE pe_predefined_method (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE methods;

int n, i;

methods = pe_predefined_method(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, methods[i].code, methods[i].name);

}


pe_predefined_parameter

Creates a table of predefined parameters.

Interface

PE_TABLE pe_predefined_parameter (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE parameters;

int n, i;

parameters = pe_predefined_parameter(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, parameters[i].code, parameters[i].name);

}


pe_predefined_primem

Creates a table of predefined prime meridians.

Interface

PE_TABLE pe_predefined_primem (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined prime meridian objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE primem_table;

int n, i;

primem_table = pe_predefined_primem(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, primem_table[i].code, primem_table[i].name);

}


pe_predefined_projcs

Creates a table of predefined projected coordinate systems.

Interface

PE_TABLE pe_predefined_projcs (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined projected coordinate system objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE pcs_table;

int n, i;

pcs_table = pe_predefined_projcs(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, pcs_table[i].code, pcs_table[i].name);

}


pe_predefined_projection

Creates a table of predefined projections.

Interface

PE_TABLE pe_predefined_projection (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE projections;

int n, i;

projections = pe_predefined_projection(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, projections[i].code, projections[i].name);

}


pe_predefined_spheroid

Creates a table of predefined spheroids.

Interface

PE_TABLE pe_predefined_spheroid (int *n);

Parameters

n The number of rows in the table is returned in this parameter.

Description

The table is an array of rows with the following structure:

typedef struct pe_entry_t
{
int code;
char name[PE_NAME_MAX];
} *PE_TABLE;

If PEOBJEDITHOME is set, the table will include user-defined spheroid objects. Free the table with pe_table_del.

Returns

On success, the table. On failure, a null pointer.

Examples

PE_TABLE spheroids;

int n, i;

spheroids = pe_predefined_spheroid(&n);

for ( i=0; i<n; i++ )

{

printf(“%d %s\n”, spheroids[i].code, spheroids[i].name);

}


pe_primem_clone

Creates a new prime meridian object from an existing one.

Interface

PE_PRIMEM pe_primem_clone (PE_PRIMEM primem);

Parameters

primem An existing prime meridian object.

Description

Creates a duplicate prime meridian from an existing prime meridian object.

Returns

On success, the specified prime meridian object. On failure, a null pointer.

Examples

PE_PRIMEM pm2 = pe_primem_clone(pm1);


pe_primem_del

Removes a prime meridian object.

Interface

void pe_primem_del (PE_PRIMEM primem);

Parameters

primem The prime meridian object.

Description

Releases the memory allocated to the specified prime meridian object.

Returns

None.

Examples

pe_primem_del(pm);


pe_primem_eq

Tests whether two prime meridian objects are equivalent.

Interface

int pe_primem_eq
(PE_PRIMEM primem1,
PE_PRIMEM primem2);

Parameters

primem1 The first prime meridian object.

primem2 The second prime meridian object.

Description

Tests whether two prime meridian objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int primem_test = pe_primem_eq(paris,bern);


pe_primem_from_string

Creates a prime meridian object from its string representation.

Interface

PE_PRIMEM pe_primem_from_string (const char *buffer);

Parameters

buffer The string representation of a prime meridian object.

Description

Creates a prime meridian object from its string representation.

Returns

On success, a prime meridian object. Otherwise, a null pointer.

Examples

PE_PRIMEM pm;

char *pm_metadata = “PRIMEM[\"Greenwich\",0]”;

pm = pe_primem_from_string(pm_metadata);


pe_primem_longitude

Retrieves the longitude value of a prime meridian object.

Interface

double pe_primem_longitude (PE_PRIMEM primem);

Parameters

primem Prime meridian object.

Description

Retrieves the longitude value in decimal degrees with respect to Greenwich upon which the prime meridian is based.

Returns

On success, the longitude value of the specified prime meridian object. On failure, zero.

Examples

double pm_lon = pe_primem_longitude(pm1);


pe_primem_name

Retrieves the name of the prime meridian.

Interface

void pe_primem_name
(PE_PRIMEM primem,
char name[PE_NAME_MAX]);

Parameters

primem Prime meridian object.

name The name of the prime meridian object.

Description

Retrieves the name of the prime meridian object.

Returns

None.

Examples

char pm1[PE_NAME_MAX];
pe_primem_name(paris, pm1);


pe_primem_new

Creates a new prime meridian.

Interface

PE_PRIMEM pe_primem_new
(const char *name,
double longitude);

Parameters

name Name of the prime meridian object.

longitude Longitude value in decimal degrees of the new prime meridian with respect to Greenwich.

Description

Defines a new prime meridian object with the specified attributes. Specify the new prime meridian value in decimal degrees, regardless of what angular units are being used in the geographic coordinate system that you're defining. The Greenwich prime meridian is 0.0.

Returns

On success, the specified prime meridian object. On failure, a null pointer.

Examples

PE_PRIMEM pm1 = pe_primem_new("Redlands",-117.333333);


pe_primem_p

Tests whether an object is of type prime meridian.

Interface

int pe_primem_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type prime meridian.

Returns

Returns 1 if the argument points to an object of type prime meridian. Otherwise, 0.

Examples

test = pe_primem_p(pm);


pe_primem_to_string

Creates a string representation of a prime meridian.

Interface

void pe_primem_to_string
(PE_PRIMEM primem,
char buffer[PE_BUFFER_MAX]);

Parameters

primem The prime meridian object.

buffer The string representation of the object.

Description

Creates a string representation of the prime meridian object of the format: PRIMEM["name",longitude].

Returns

None.

Examples

PRIMEM["Greenwich",0]


pe_proj_to_geog

Converts a projected coordinate system to geographic coordinates.

Interface

int pe_proj_to_geog
(PE_PROJCS projcs,
int n,
double coord[ ][2]);

Parameters

projcs        Projected coordinate system object.

n           Number of points.

coord[ ][2]     Array of points.

Description

Applies the map projection’s inverse transformation to the specified array of points.

Returns

Number of points projected successfully.

Examples

double pnt[2][2] = {{10,20},{10,30}};
int out = pe_proj_to_geog(pcs,2,pnt);


pe_projcs_clone

Creates a new projected coordinate system object from an existing one.

Interface

PE_PROJCS pe_projcs_clone (PE_PROJCS projcs);

Parameters

projcs An existing projected coordinate system.

Description

Creates a duplicate projected coordinate system from an existing pcs object.

Returns

On success, the new projected coordinate system object. On failure, a null pointer.

Examples

PE_PROJCS pcs2 = pe_projcs_clone(pcs);


pe_projcs_clone_alterunits

Updates the units and parameter values in a clone of a projected coordinate system.

Interface

PE_PROJCS pe_projcs_clone_alterunits
(PE_PROJCS projcs,
(PE_UNIT linear_unit,
PE_UNIT angular_unit);

Parameters

projcs The projected coordinate system object.

linear_unit The new linear unit object. Can be NULL.

angular_unit The new angular unit object. Can be NULL.

Description

Creates a clone of a projected coordinate system object. The new projected coordinate system has new units of measure. The projection parameters use the same units as the coordinate system and the values are converted to the new units. For example, if the original coordinate system uses US survey feet and you set the new linear unit of measure to meters, the false easting and false northing values are converted to meters. If the original geographic coordinate system uses decimal degrees and you set the new angular units to decimal minutes, the values of the angular parameters like central meridian, latitude of origin, and standard parallels are updated to decimal minutes.

Returns

On success, a new projected coordinate system object. If the original projcs is invalid, returns NULL. If the projcs is valid, but the two unit of measure parameters are NULL or invalid, a clone of the original projcs is returned. If either unit object is valid, returns a clone of the projcs with the appropriately update units.

Examples

PE_PROJCS ca5;
PE_UNIT meters;
PE_UNIT minutes;
/* The linear units of ca5 are US survey feet and the angular units are decimal degrees. */
ca5 = pe_factory_projcs(PE_PCS_NAD_1927_CA_V);
meters = pe_factory_unit(PE_U_METER);
minutes = pe_factory_unit(PE_U_MINUTE);
PE_PROJCS ca5_meters = pe_projcs_clone_alterunits(ca5,meters,minutes);


pe_projcs_del

Removes a projected coordinate system object.

Interface

void pe_projcs_del (PE_PROJCS projcs);

Parameters

projcs The projected coordinate system object.

Description

Releases the memory allocated to the specified projected coordinate system object.

Returns

None.

Examples

pe_projcs_del(pcs);


pe_projcs_eq

Tests whether two projected coordinate system objects are equivalent.

Interface

int pe_projcs_eq
(PE_PROJCS projcs1,
PE_PROJCS projcs2);

Parameters

projcs1 The first projected coordinate system object.

projcs2 The second projected coordinate system object.

Description

Tests whether two projected coordinate system objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int projcs_test = pe_projcs_eq(ca5,ca5_27);


pe_projcs_eqnn

Tests whether two projected coordinate system objects are equivalent except for the names.

Interface

int pe_projcs_eqnn
(PE_PROJCS projcs1,
PE_PROJCS projcs2);

Parameters

projcs1 The first projected coordinate system object.

projcs2 The second projected coordinate system object.

Description

Tests whether two projected coordinate system objects are equivalent. The names of the two projected coordinate systems are ignored in the comparison.

Returns

On success, one. On failure, zero.

Examples

int projcs_test = pe_projcs_eqnn(ca5,ca5_27);


pe_projcs_from_string

Creates a projected coordinate system object from its string representation.

Interface

PE_PROJCS pe_projcs_from_string (const char *buffer);

Parameters

buffer The string representation of the projected coordinate system object.

Description

Creates a projected coordinate system object from its string representation.

Returns

On success, a projected coordinate system object. Otherwise, a null pointer.

Examples

PE_PROJCS pcs;

char *pcs_metadata = “PROJCS[\"Test\",GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137,298.257223563]],PRIMEM[\"Greenwich\",0],UNIT[\"Degree\",0.0174532925199433]],PROJECTION[\"Mercator\"],PARAMETER[\"false_easting\",1000000],UNIT[\"Foot\",0.3048]]”;

pcs = pe_projcs_from_string(pcs_metadata);


pe_projcs_geogcs

Retrieves the geographic coordinate system of a projected coordinate system.

Interface

PE_GEOGCS pe_projcs_geogcs (PE_PROJCS projcs);

Parameters

projcs The projected coordinate system object.

Description

Retrieves the geographic coordinate system of a projected coordinate system.

Returns

On success, the geographic coordinate system of the specified projected coordinate system object. On failure, a null pointer.

Examples

PE_GEOGCS gcs = pe_projcs_geogcs(CA5);


pe_projcs_isconstloaded

Returns TRUE if the constants are loaded for a projected coordinate system object.

Interface

int pe_projcs_isconstloaded(PE_PROJCS projcs);

Parameters

projcs The projected coordinate system object.

Description

Returns TRUE if the constants are loaded for a projected coordinate system object. Many projections calculate intermediate values that are constants for a particular set of parameters and spheroid. The pe_projcs_load_constants function will place these values into memory. Deleting the projected coordinate system will remove the constants from memory. You can also call pe_projcs_unload_constants.

Returns

On success, one. On failure, zero.

Examples

int load = pe_projcs_isconstloaded(spcs_ca5);


pe_projcs_load_constants

Loads the constants for a projected coordinate system object.

Interface

int pe_projcs_load_constants (PE_PROJCS projcs);

Parameters

projcs The projected coordinate system object.

Description

Many projections calculate intermediate values that are constants for a particular set of parameters and spheroid. The pe_projcs_load_constants function will place these values into memory. This will improve performance. Constants are not loaded automatically because of memory issues. Deleting the projected coordinate system will remove the constants from memory. You can also call pe_projcs_unload_constants. You can check whether the constants are loaded with pe_projcs_isconstloaded. If you clone a projected coordinate system, the constants are not loaded in the new object.

Returns

On success, a nonnegative integer. On failure, zero.

Examples

int load = pe_projcs_load_constants(spcs_ca5);


pe_projcs_name

Retrieves the name of a projected coordinate system.

Interface

void pe_projcs_name
(PE_PROJCS projcs,
char name[PE_NAME_MAX]);

Parameters

projcs The projected coordinate system object.

name The name of the projected coordinate system object.

Description

Retrieves the name of a projected coordinate system.

Examples

char pcs1[PE_NAME_MAX];
pe_projcs_name(CA5, pcs1);


pe_projcs_new

Creates a new projected coordinate system.

Interface

PE_PROJCS pe_projcs_new
(const char *name,
PE_GEOGCS geogcs,
PE_PROJECTION projection,
PE_PARAMETER parameters[PE_PARM_MAX],
PE_UNIT unit);

Parameters

name Name of the projected coordinate system.

geogcs Geographic coordinate system upon which the projected coordinate system is based.

projection Map projection.

parameters The array of map projection parameters.

unit Projected coordinate system units.

Description

Returns the projected coordinate system object.

Returns

On success, the new projected coordinate system object with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_PROJCS pcs = pe_projcs_new("my_pcs",gcs,mercator,par,ft);


pe_projcs_p

Tests whether an object is of type projected coordinate system.

Interface

int pe_projcs_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type projected coordinate system.

Returns

Returns 1 if the argument points to an object of type projected coordinate system. Otherwise, 0.

Examples

test = pe_projcs_p(pcs);


pe_projcs_parameters

Retrieves the parameters of a projected coordinate system.

Interface

PE_PARAMETER pe_projcs_parameters
(PE_PROJCS projcs,
PE_PARAMETER parameters[PE_PARM_MAX]);

Parameters

projcs Projected coordinate system object.

parameters The array of parameters for the projected coordinate system object.

Description

Retrieves the array of parameters of a projected coordinate system.

Returns

None.

Examples

PE_PARAMETER par[PE_PARM_MAX];
pe_projcs_parameters(pcs,par);


pe_projcs_projection

Retrieves the map projection of a projected coordinate system.

Interface

PE_PROJECTION pe_projcs_projection (PE_PROJCS projcs);

Parameters

projcs Projected coordinate system object.

Description

Retrieves the projection of a projected coordinate system.

Returns

On success, the projection of the specified projected coordinate system object. On failure, a null pointer.

Examples

PE_PROJECTION mp = pe_projcs_projection(pcs);


pe_projcs_to_string

Creates a string representation of a projected coordinate system.

Interface

void pe_projcs_to_string
(PE_PROJCS projcs,
char buffer[PE_BUFFER_MAX]);

Parameters

projcs The projected coordinate system object.

buffer The string representation of the object.

Description

Creates a string representation of the projected coordinate system object in the format: PROJCS["name",GEOGCS["name",DATUM["name", SPHEROID["name",axis,1/f]],PRIMEM["name",longitude],
UNIT["name",conversion factor]],PROJECTION["name"],
PARAMETER["name",value],UNIT["name",conversion factor]]

Returns

None.

Examples

PROJCS["Test",GEOGCS["GCS_WGS_1984", DATUM["D_WGS_1984", SPHEROID["WGS_1984",6378137,298.257223563]], PRIMEM["Greenwich",0], UNIT["Degree",0.0174532925199433]], PROJECTION["Mercator"], PARAMETER["false_easting",1000000], UNIT["Foot",0.3048]]


pe_projcs_unit

Retrieves the unit of measure of a projected coordinate system.

Interface

PE_UNIT pe_projcs_unit (PE_PROJCS projcs);

Parameters

projcs Projected coordinate system object.

Description

Retrieves the units of a projected coordinate system.

Returns

On success, the units of the specified projected coordinate system object. On failure, a null pointer.

Examples

PE_UNIT u = pe_projcs_unit(pcs);


pe_projcs_unload_constants

Unloads the constants for a projected coordinate system object.

Interface

void pe_projcs_unload_constants (PE_PROJCS projcs);

Parameters

projcs The projected coordinate system object.

Description

Many projections calculate intermediate values that are constants for a particular set of parameters and spheroid. You use pe_projcs_load_constants to load the values into memory. The pe_projcs_unload_constants function will remove these values from memory if they are loaded. You can also delete the projected coordinate system to remove the constants from memory. You can check whether the constants are loaded with pe_projcs_isconstloaded.

Returns

None.

Examples

pe_projcs_unload_constants(spcs_ca5);


pe_projection_clone

Creates a new map projection object from an existing one.

Interface

PE_PROJECTION pe_projection_clone (PE_PROJECTION projection);

Parameters

projection An existing map projection object.

Description

Creates a duplicate map projection from an existing map projection object.

Returns

On success, the new map projection with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_PROJECTION mercator2 = pe_projection_clone(mercator);


pe_projection_del

Removes a map projection object.

Interface

void pe_projection_del (PE_PROJECTION projection);

Parameters

projection The map projection object.

Description

Releases the memory allocated to the specified map projection object.

Returns

None.

Examples

pe_projection_del(mercator);


pe_projection_eq

Tests whether two map projection objects are equivalent.

Interface

int pe_projection_eq
(PE_PROJECTION projection1,
PE_PROJECTION projection2);

Parameters

projection1 The first projection object.

projection2 The second projection object.

Description

Tests whether two projection objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int projection_test = pe_projection_eq(lambert1,lambert2);


pe_projection_forward

Retrieves the function to transform from geographic to projected coordinates.

Interface

PE_PROJFUNC pe_projection_forward (PE_PROJECTION projection);

Parameters

projection Map projection object.

Description

Returns the function to transform from geographic to projected coordinates.

Returns

On success, the map projection forward transformation. On failure, a null pointer.

Examples

PE_PROJECTION mercator =
pe_projection_new("Mercator", &mercator_f, &mercator_i);
PE_PROJFUNC fwd =pe_projection_forward(mercator);


pe_projection_from_string

Creates a map projection object from its string representation.

Interface

PE_PROJECTION pe_projection_from_string (const char *buffer);

Parameters

buffer The string representation of the map projection object.

Description

Creates a map projection object from its string representation.

Returns

On success, a map projection object. Otherwise, a null pointer.

Examples

PE_PROJECTION proj;

char *proj_metadata = “PROJECTION[\"Mercator\"]”;

proj = pe_projection_from_string(proj_metadata);


pe_projection_horizon

Retrieves a function that calculates the horizon for a map projection.

Interface

PE_HORFUNC pe_projection_horizon (PE_PROJECTION projection);

Parameters

projection Map projection object.

Description

Returns a function that constructs the horizon (or limits) of a projection. Each map projection has a certain limit. Many projections can map the entire world, but a few, like Transverse Mercator, are good for a limited area only. PE_HORFUNC has this structure.

typedef struct pe_horizon_t {
int nump;
int kind;
int inclusive;
int replicate;
int size;
double *coord[2];
} *PE_HORIZON;

The nump argument is the number of parts in the horizon, while kind describes the shape type. The kind values are:

PE_HORIZON_RECT
PE_HORIZON_POLY
PE_HORIZON_LINE
PE_HORIZON_POINT

Inclusive can have a value of 1 or 0. If 1, the horizon is inclusive. if 0, the horizon is exclusive. Horizons are returned in the units of the geographic coordinate system of the projected coordinate system. You can return one main horizon shape and tell a developer that he needs to shift the horizon by a full circle (if the geogcs units are degrees, the shift is 360 degrees) to catch other data with the replicate argument. The replicate values are:

enum replicate_enum {
PE_HORIZON_REPLICATE_NONE,
PE_HORIZON_REPLICATE_LEFT,
PE_HORIZON_REPLICATE_RIGHT,
PE_HORIZON_REPLICATE_BOTH};

Size is the number of coordinates in the part while coord is a pointer to the array of coordinate values.

Returns

On success, the map projection horizon. On failure, a null pointer.


pe_projection_inverse

Retrieves a function to transform from projected to geographic coordinates.

Interface

PE_PROJFUNC pe_projection_inverse (PE_PROJECTION projection);

Parameters

projection Map projection object.

Description

Returns a function to transform from projected to geographic coordinates.

Returns

On success, the map projection inverse transformation. On failure, a null pointer.

Examples

PE_PROJECTION mercator =
pe_projection_new("Mercator", &mercator_f,&mercator_i);
PE_PROJFUNC inv = pe_projection_inverse(mercator);


pe_projection_name

Retrieves the name of a map projection object.

Interface

void pe_projection_name
(PE_PROJECTION projection,
char name[PE_NAME_MAX]);

Parameters

projection Map projection object.

name The name of the map projection object.

Description

Retrieves a name of the map projection object.

Returns

None.

Examples

char merc[PE_NAME_MAX];
pe_projection_name(Mercator, merc);


pe_projection_new

Creates a new map projection.

Interface

PE_PROJECTION pe_projection_new
(const char *name,
PE_PROJFUNC forward,
PE_PROJFUNC inverse,
PE_HORFUNC horizon);

Parameters

name Name of the new map projection.

forward Forward transformation function for the new map projection.

inverse Inverse transformation function for the new map projection.

horizon Pointer to the projection horizon function. Can be null.

Description

Defines a new map projection with the specified attributes. To define a new map projection, you must write at least two functions. One function will implement the equations that convert from geographic to projected coordinates. The second will implement the equations that convert from projected to geographic coordinates. PE_PROJFUNC has the following format.

typedef int (*PE_PROJFUNC) (
double sph[2],
double parm[PE_PARM_MAX],
int n,
double coord[][2],
int iconst[],
double dconst[]);

Pass null values for iconst and dconst. These arguments are used internally.

Optionally, you can implement a projection horizon. Each map projection has a certain limit. Many projections can map the entire world, but a few, like Transverse Mercator, are good for a limited area only. PE_HORFUNC has this structure.

typedef PE_HORIZON (*PE_HORFUNC){
double sph[2],
double parm[PE_PARM_MAX];
} *PE_HORIZON;

The PE_HORIZON sructure is:

typedef struct pe_horizon_t {
int nump;
int kind;
int inclusive;
int replicate;
int size;
double *coord[2];
} *PE_HORIZON;

The nump argument is the number of parts in the horizon, while kind describes the shape type. The kind values are:

PE_HORIZON_RECT
PE_HORIZON_POLY
PE_HORIZON_LINE
PE_HORIZON_POINT

Inclusive can have a value of 1 or 0. If 1, the horizon is inclusive. if 0, the horizon is exclusive. Horizons are returned in the units of the geographic coordinate system of the projected coordinate system. You can return one main horizon shape and tell a developer that he needs to shift the horizon by a full circle (if the geogcs units are degrees, the shift is 360 degrees) to catch other data with the replicate argument. The replicate values are:

enum replicate_enum {
PE_HORIZON_REPLICATE_NONE,
PE_HORIZON_REPLICATE_LEFT,
PE_HORIZON_REPLICATE_RIGHT,
PE_HORIZON_REPLICATE_BOTH};

Size is the number of coordinates in the part while coord is a pointer to the array of coordinate values.

Returns

On success, the new map projection with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_PROJECTION mercator =
pe_projection_new("Mercator", mercator_f, mercator_i, merc_horz);


pe_projection_p

Tests whether an object is of type map projection.

Interface

int pe_projection_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type map projection.

Returns

Returns 1 if the argument points to an object of type map projection. Otherwise, 0.

Examples

test = pe_projection_p(mercator);


pe_projection_to_string

Creates a string representation of a map projection.

Interface

void pe_projection_to_string
(PE_PROJECTION projection,
char buffer[PE_BUFFER_MAX]);

Parameters

projection The map projection object.

buffer The string representation of the object.

Description

Creates a string representation of the map projection object in the format: PROJECTION["name"].

Returns

None.

Examples

PROJECTION["Mercator"]


pe_q

Calculates the meridional arc distance from the equator.

Interface

double pe_q
(double a,
double e2,
double phi);

Parameters

a, e2 Semimajor axis and eccentricity squared of the spheroid.

phi          Geographic latitude (measured in radians) of the point.

Description

Meridional arc distance to the point is the distance measured from the equator along the meridional ellipse to the point.

where

Returns

Meridional arc distance to the point.


pe_q90

Calculates the meridional arc distance from the equator to a Pole.

Interface

double pe_q90
(double a,
double e2);

Parameters

a, e2 Semimajor axis and eccentricity squared of the spheroid.

Description

Meridional arc distance measured from the equator along the meridional ellipse to a Pole.

where

Returns

Meridional arc distance to the point.


pe_spheroid_axis

Retrieves the semimajor axis value of a spheroid.

Interface

double pe_spheroid_axis (PE_SPHEROID spheroid);

Parameters

spheroid The spheroid object.

Description

Retrieves the axis value of the specified spheroid.

Returns

On success, the spheroid axis value. On failure, zero.

Examples

double b = pe_spheroid_axis(wgs84)*(1- pe_spheroid_flattening(wgs84));


pe_spheroid_clone

Creates a new spheroid from an existing one.

Interface

PE_SPHEROID pe_spheroid_clone (PE_SPHEROID spheroid);

Parameters

spheroid An existing spheroid object.

Description

Creates a duplicate spheroid from an existing spheroid object.

Returns

On success, the new spheroid. On failure, a null pointer.

Examples

PE_SPHEROID wgs84_new = pe_spheroid_clone(wgs84);


pe_spheroid_del

Removes a spheroid object.

Interface

void pe_spheroid_del (PE_SPHEROID spheroid);

Parameters

spheroid The spheroid object.

Description

Releases the memory allocated to the specified spheroid object.

Returns

None.

Examples

pe_spheroid_del(wgs84);


pe_spheroid_eq

Tests whether two spheroid objects are equivalent.

Interface

int pe_spheroid_eq
(PE_SPHEROID spheroid1,
PE_SPHEROID spheroid2);

Parameters

spheroid1 The first unit object.

spheroid2 The second unit object.

Description

Tests whether two spheroid objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int sph_test = pe_spheroid_eq(sph1,sph2);


pe_spheroid_flattening

Retrieves the flattening value of a spheroid.

Interface

double pe_spheroid_flattening (PE_SPHEROID spheroid);

Parameters

spheroid The spheroid object.

Description

Retrieves the flattening value of the specified spheroid.

Returns

On success, the spheroid flattening value. On failure, zero.

Examples

double b = pe_spheroid_axis(wgs84)*(1- pe_spheroid_flattening(wgs84));


pe_spheroid_from_string

Creates a spheroid object from its string representation.

Interface

PE_SPHEROID pe_spheroid_from_string (const char *buffer);

Parameters

buffer The string representation of the spheroid object.

Description

Creates a spheroid object from its string representation.

Returns

On success, a spheroid object. Otherwise, a null pointer.

Examples

PE_SPHEROID s;

char *sph_metadata = “SPHEROID[\"WGS_1984\",6378137,298.257223563]”;

s = pe_spheroid_from_string(sph_metadata);


pe_spheroid_name

Retrieves the name of a spheroid.

Interface

void pe_spheroid_name
(PE_SPHEROID spheroid,
char name[PE_NAME_MAX]);

Parameters

spheroid The spheroid object.

name The name of the spheroid object.

Description

Retrieves the name of the specified spheroid.

Returns

None.

Examples

char sph1[PE_NAME_MAX];
pe_spheroid_name(wgs84, sph1);


pe_spheroid_new

Creates a new spheroid.

Interface

PE_SPHEROID pe_spheroid_new
(const char *name,
double axis,
double flattening);

Parameters

name Name of the new spheroid.

axis Equatorial radius of the new spheroid.

flattening Spheroid’s flattening (one minus the ratio of polar radius to equatorial radius).

Description

Defines a new spheroid with the specified attributes.

Returns

On success, the new spheroid with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_SPHEROID wgs84 = pe_spheroid_new("WGS84", 6378137.0, 1/298.257223563);


pe_spheroid_p

Tests whether an object is of type spheroid.

Interface

int pe_spheroid_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type spheroid.

Returns

Returns 1 if the argument points to an object of type spheroid. Otherwise, 0.

Examples

test = pe_spheroid_p(wgs84);


pe_spheroid_to_string

Creates a string representation of a spheroid.

Interface

void pe_spheroid_to_string
(PE_SPHEROID spheroid,
char buffer[PE_BUFFER_MAX]);

Parameters

spheroid The spheroid object.

buffer The string representation of the object.

Description

Creates a string representation of the spheroid object of the format:
SPHEROID["name",axis,1/f].

Returns

None.

Examples

SPHEROID["WGS_1984",6378137,298.257223563]


pe_table_del

Removes a table of predefined objects.

Interface

void pe_table_del (PE_TABLE table);

Parameters

table The table of predefined objects.

Description

Releases the memory allocated to the specified table of predefined objects.

Returns

None.


pe_unit_clone

Creates a new unit of measure object from an existing one.

Interface

PE_UNIT pe_unit_clone (PE_UNIT unit);

Parameters

unit The pointer to an existing unit of measure object.

Description

Creates a duplicate unit of measure from an existing unit of measure object.

Returns

On success, the new unit. On failure, a null pointer.

Examples

PE_UNIT dd2 = pe_unit_clone(dd);


pe_unit_del

Removes a unit of measure object.

Interface

void pe_unit_del (PE_UNIT unit);

Parameters

unit The unit object.

Description

Releases the memory allocated to the specified unit of measure object.

Returns

None.

Examples

pe_unit_del(ft);


pe_unit_eq

Tests whether two unit of measure objects are equivalent.

Interface

int pe_unit_eq
(PE_UNIT unit1,
PE_UNIT unit2);

Parameters

unit1 The first unit object.

unit2 The second unit object.

Description

Tests whether two unit of measure objects are equivalent.

Returns

On success, one. On failure, zero.

Examples

int unit_test = pe_unit_eq(ft,ft_am);


pe_unit_factor

Retrieves the conversion factor of a unit.

Interface

double pe_unit_factor (PE_UNIT unit);

Parameters

unit The unit object.

Description

Retrieves the conversion factor of the specified unit. The conversion is either a) number of meters per unit for linear units or b) number of radians per unit for angular units.

Returns

On success, the unit conversion factor. On failure, zero.

Examples

double x = xm*pe_unit_factor(ft);


pe_unit_from_string

Creates a unit of measure object from its string representation.

Interface

PE_UNIT pe_unit_from_string (const char *buffer);

Parameters

buffer The string representation of the unit of measure object.

Description

Creates a unit of measure object from its string representation.

Returns

On success, a unit of measure object. Otherwise, a null pointer.

Examples

PE_UNIT m;

char *unit_metadata = “UNIT[\"Meter\",1.0]”;

m = pe_unit_from_string(unit_metadata);


pe_unit_name

Retrieves the name of the unit of measure.

Interface

void pe_unit_name
(PE_UNIT unit,
char name[PE_NAME_MAX]);

Parameters

unit The unit object.

name The name of the unit object.

Description

Retrieves the name of the specified unit.

Returns

None.

Examples

char f[PE_NAME_MAX];
pe_unit_name(feet, f);


pe_unit_new

Creates a new unit of measure.

Interface

PE_UNIT pe_unit_new
(const char *name,
double factor);

Parameters

name Name of the new unit.

factor The ratio of meters/unit for linear units or radians/unit for angular units.

Description

Defines a new unit of measure with the specified attributes. The value of the factor is either
a) number of meters per 1 unit for linear units or b) number of radians per 1 unit for angular units.

x meters = factor * 1 unit, i.e., factor = meters / unit

1 unit = n meters, where n = factor

1 meter = n units , where n = 1 / factor

x radians = factor * 1 unit, i.e., factor = radians / unit

1 unit = n radians, where n = factor

1 radian = n units , where n = 1 / factor

Returns

On success, the new unit with the attributes equal to the corresponding arguments. On failure, a null pointer.

Examples

PE_UNIT ft = pe_unit_new("ft",0.3048);
PE_UNIT dd = pe_unit_new("deg",PI/180);


pe_unit_p

Tests whether the argument points to an object of type unit of measure.

Interface

int pe_unit_p (struct pe_struct_t *p);

Parameters

p The pointer to an object.

Description

Tests whether the argument is an object of type unit of measure.

Returns

Returns 1 if the argument points to an object of type unit of measure. Otherwise, 0.

Examples

test = pe_unit_p(ft);


pe_unit_to_string

Creates a string representation of the unit of measure.

Interface

void pe_unit_to_string
(PE_UNIT unit,
char buffer[PE_BUFFER_MAX]);

Parameters

unit The unit of measure object.

buffer The string representation of the object.

Description

Creates a string representation of the unit of measure object of the format: UNIT["name",conversion factor].

Returns

None.

Examples

UNIT["Degree",0.0174532925199433]
UNIT["Foot",0.3048]


pe_w

Calculates the quantity

Interface

double pe_w
(double e2,
double phi);

Parameters

e2 Eccentricity squared of the spheroid.

phi Geographic latitude (measured in radians) of the point.

Description

Returns

A quantity used commonly in geodesy.


pe_zunit_from_prjfile

Creates a linear unit object from the ZUNIT subcommand in an old-style PRJ file.

Interface

PE_UNIT pe_zunit_from_prjfile
(const char *path,
int *error);

Parameters

path A pointer to a file that contains an old-style PRJ file.

error A pointer to an error code.

Description

Creates a PE linear unit object from the ZUNIT subcommand in an old-style PRJ file. An old-style PRJ file is used by the coverage, grid, and TIN data formats. You can find the file, named prj.adf, in the dataset directory. Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zunit METERS Zone 11
Parameters

This file converts to the following PE linear unit string representation.

UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, a linear unit object.

PE_PRJ_CANNOT_OPEN_FILE The path or file name is incorrect or does not exist.
PE_PRJ_ILLEGAL_ARGUMENT The pointer to the path or file name is null or blank.
PE_PRJ_NO_ZUNIT The zunit is incorrect or cannot be converted.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.

Examples

PE_UNIT lunit;
char *prjfile;
int err = 0;
char newstring[1024];
prjfile = "testutm.prj";
lunit = pe_zunit_from_prjfile(prjfile,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}
else
{
pe_unit_to_string(lunit,newstring);
printf("%s\n",newstring);
}


pe_zunit_from_prjstring

Creates a linear unit object from an old-style PRJ file formatted as a string.

Interface

PE_UNIT pe_zunit_from_prjstring
(const char *string,
int *error);

Parameters

string A pointer to a string created from an old-style PRJ file.

error A pointer to an error code.

Description

Creates a PE linear unit object from an old-style PRJ file. An old-style PRJ file is used by the coverage, grid, and TIN data formats. You can find the file, named prj.adf, in the dataset directory. Here is a sample PRJ file.

Projection UTM
Units METERS
Datum WGS84
Spheroid WGS84
Zone 11
Zunit METERS
Parameters

Below is the string representation of the PE linear unit object.

UNIT["Meter",1]]

Note: You need to include the pe_coordsys_from_prj.h header file to use this function.

Returns

On success, a linear unit object.

PE_PRJ_ILLEGAL_ARGUMENT The pointer to the PRJ string is null or blank.
PE_PRJ_NO_ZUNIT The zunit does not exist in the PRJ file.
PE_PRJ_OUT_OF_MEMORY The string is not long enough or the system has run out of memory.
PE_PRJ_TOO_MANY_PARAMS There are too many parameters in the PRJ string. The PRJ file is incorrect.

Examples

PE_UNIT lunit;
/* Note: The prjstring cannot be modified because it is hardcoded. */
char *prjstring = "Projection UTM\nUnits METERS\nDatum WGS84\nZone 11\nZunit METERS\nParameters\n";
int err = 0;
char newstring[1024];
lunit = pe_zunit_from_prjstring(prjstring,&err);
if (err != 0)
{
printf("Error code = %d\n",err);
}
else
{
pe_unit_to_string(lunit,newstring);
printf("%s\n",newstring);
}


Projection horizons

Every map projection has a horizon. A projection horizon defines the limits of a map projection with particular parameters. For example, many projections cannot extend beyond ±180 degrees of longitude from the central meridian. Certain azimuthal projections’ coordinates can be no more than 90 degrees from the center of the projection. Knowing the horizon of a map projection is very important when projecting shapes. If a shape crosses the horizon, we can use the horizon to clip and close the shape.

The pe_horizon_generate function returns the horizon in geographic coordinates.

{

int nump; /* The horizon’s number of parts. */

int kind; /* The type of horizon. */

int inclusive; /* One if the horizon is inclusive. */

int replicate; /* Tells you whether to replicate the horizon to cover other parts of -360 to 360. */

int size; /* The number of points for this part. */

double (*coord)[2]; /* The array of parts in geographic coordinates. */

} *PE_HORIZON;

/* Enum of replication directions for a horizon */
enum replicate_enum {PE_HORIZON_REPLICATE_NONE, PE_HORIZON_REPLICATE_LEFT,
PE_HORIZON_REPLICATE_RIGHT, PE_HORIZON_REPLICATE_BOTH};

Depending on the projected coordinate system, the horizon may have one or more parts. For example, if the projection is Equirectangular and the central meridian is 180 degrees, the horizon has two parts. Both parts go from -90 to +90 degrees latitude. The longitude range of one part is from -180 to 0 degrees, while the other is from 0 to +180 degrees.

There are two types of horizons. A horizon may have either a rectangular or a polygonal shape. In the projection engine, the two types are represented by:

PE_HORIZON_RECT 0

PE_HORIZON_POLY 1

PE_HORIZON_LINE 2

PE_HORIZON_POINT 3

If the horizon is rectangular, its shape is defined by two points—the lower left and the upper right. Otherwise, the PE_HORIZON structure contains a list of points that define the shape of the horizon.

The horizon function has type:

typedef PE_HORIZON (*PE_HORFUNC) (
double sph[2],
double parm[PE_PARM_MAX]);

Projection horizon functions

pe_horizon_generate Returns the horizon for a projected coordinate system.

pe_horizon_del Removes a horizon object.


system table schema

Page 1 of 1


layer

Page 1 of 1


raster

Page 1 of 1


 All Classes
Curve
Geometry
GeometryCollection
GeometryException
GeometryException.IncompatibleGeometries
GeometryException.IndexOutOfBounds
GeometryException.InvalidGeometry
GeometryException.InvalidSrid
GeometryFactory
GeometrySource
Linestring
MultiCurve
MultiLinestring
MultiPoint
MultiPolygon
MultiSurface
Point
Polygon
SDEPoint
SeColumnDefinition
SeConnection
SeConnection.SeStreamSpec
SeCoordinateReference
SeCoordRef
SeCurve
SeDate
SeDBMSInfo
SeDefs
SeDelete
SeDoesNotExistException
SeEnvelope
SeError
SeException
SeExceptionFactory
SeExistsException
SeExtent
SeFilter
SeGeometry
SeGeometryCollection
SeInsert
SeInstance
SeInstance.SeInstanceConfiguration
SeInstance.SeInstanceLocks
SeInstance.SeInstanceStateLocks
SeInstance.SeInstanceStats
SeInstance.SeInstanceStatus
SeInstance.SeInstanceTableLocks
SeInstance.SeInstanceUsers
SeInstance.SeInstanceVersionLocks
SeInvalidShapeException
SeInvalidValueException
SeLayer
SeLayer.SeLayerGridStats
SeLayer.SeLayerLock
SeLayer.SeLayerSpatialIndexStats
SeLayer.SeLayerStats
SeLinestring
SeLocale
SeLocator
SeLog
SeMetaData
SeMultiCurve
SeMultiLinestring
SeMultiPoint
SeMultiPolygon
SeMultiSurface
SeNoAccessException
SeObjectId
SeObjectLock
SePECoordinateSystem
SePEDatum
SePEGeographicCS
SePEHorizon
SePEHorizonFunction
SePEParameters
SePEPCSConstants
SePEPCSConstFunction
SePEPrimeMeridian
SePEProjectedCS
SePEProjection
SePEProjectionFunction
SePESpheroid
SePEUnit
SePoint
SePolygon
SeQuery
SeQueryInfo
SeRegistration
SeRelease
SeRow
SeShape
SeShapeAnno
SeShapeCBMethod
SeShapeFilter
SeShapeIdFilter
SeSpatialReference
SeSqlConstruct
SeSSA
SeSSA.SeInputDesc
SeState
SeStreamOp
SeSurface
SeTable
SeTable.SeTableIdRange
SeTable.SeTableIndexDefs
SeTable.SeTableLock
SeTable.SeTableRowLockInfo
SeTable.SeTableStats
SeUpdate
SeVersion
SeVersion.SeVersionLock
SeWarningException
Surface


: API Help

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES

How This API Document Is Organized

This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.

Overview

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

Package

Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain four categories:

  • Interfaces (italic)
  • Classes
  • Exceptions
  • Errors

Class/Interface

Each class, interface, inner class and inner interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

  • Class inheritance diagram
  • Direct Subclasses
  • All Known Subinterfaces
  • All Known Implementing Classes
  • Class/interface declaration
  • Class/interface description

  • Inner Class Summary
  • Field Summary
  • Constructor Summary
  • Method Summary

  • Field Detail
  • Constructor Detail
  • Method Detail
Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

Tree (Class Hierarchy)

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.

Index

The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

Prev/Next

These links take you to the next or previous class, interface, package, or related page.

Frames/No Frames

These links show and hide the HTML frames. All pages are available with or without frames.

Serialized Form

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

This help file applies to API documentation generated using the standard doclet.

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


Generated Documentation (Untitled)

Frame Alert

This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
Link to Non-frame version.


: Index

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES
A B C D E F G H I K L M N O P Q R S T U W X Y

A

addColumn(SeColumnDefinition) - Method in class com.esri.sde.sdk.client.SeTable
Adds a column to the table.
addId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeLog
Adds one row id to an open logfile.
addIds(SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeLog
Adds a list of row ids to an open logfile.
addIsland(SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Adds and island ring (donut hole) to an area shape.
addMetaData(int, SeMetaData[]) - Method in class com.esri.sde.sdk.client.SeTable
Adds metadata records.
addPart(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Adds a new part to the shape.
addRowLocks(int, SeObjectId[], SeObjectId) - Method in class com.esri.sde.sdk.client.SeTable
Adds one or more row locks.
addTable(String) - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Adds a table name to the list of tables.
allowRowlocks() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if rowlocking is enabled.
alter() - Method in class com.esri.sde.sdk.client.SeRegistration
Alters the properties of a registered table.
alter() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Alters a spatial reference entry in the spatial_references table.
alter() - Method in class com.esri.sde.sdk.client.SeLog
Alters the definition of the logfile on the server.
alter() - Method in class com.esri.sde.sdk.client.SeLayer
Alters modifiable characteristics of a layer after creation.
alter() - Method in class com.esri.sde.sdk.client.SeVersion
Alters a versionÆs characteristics.
alter() - Method in class com.esri.sde.sdk.client.SeLocator
Alters the locator’s characteristics.
alterMetaData(int, SeMetaData[]) - Method in class com.esri.sde.sdk.client.SeTable
Alters metadata records.
area() - Method in interface com.esri.sde.sdk.geom.MultiSurface
area() - Method in class com.esri.sde.sdk.geom.SeSurface
Returns the area of a polygon or multipolygon.
area() - Method in interface com.esri.sde.sdk.geom.Surface
Returns the area of a polygon or multipolygon.
area() - Method in class com.esri.sde.sdk.geom.SeMultiSurface
Returns the area of a polygon or multipolygon.
area() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the area of a polygon or multipolygon.
area() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
asBinary() - Method in class com.esri.sde.sdk.geom.SeGeometry
Asbinary takes a geometry object and returns its well-known binary representation.
asBinary() - Method in interface com.esri.sde.sdk.geom.Geometry
Asbinary takes a geometry object and returns its well-known binary representation.
asBinaryShape() - Method in class com.esri.sde.sdk.geom.SeGeometry
Asbinaryshape takes a geometry object and returns a BLOB.
asLine() - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape of type line, using a shape of any type.
asPoint() - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape of type point, using a shape of any type.
asPolygon() - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape of type polygon, using a shape of any type.
asSimpleLine() - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape of simple line type, using a shape of any type.
asText() - Method in class com.esri.sde.sdk.geom.SeGeometry
Astext takes a geometry object and returns its well-known text representation.
asText() - Method in interface com.esri.sde.sdk.geom.Geometry
Astext takes a geometry object and returns its well-known text representation.

B

BLOB_SEG_SIZE - Static variable in class com.esri.sde.sdk.client.SeRow
boundary() - Method in class com.esri.sde.sdk.geom.SeGeometry
boundary() - Method in class com.esri.sde.sdk.geom.SeLinestring
Boundary takes a geometry object and returns its combined boundary as a geometry object.
boundary() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
boundary() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Boundary takes a geometry object and returns its combined boundary as a geometry object.
boundary() - Method in class com.esri.sde.sdk.geom.SePolygon
Boundary takes a geometry object and returns its combined boundary as a geometry object.
boundary() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Boundary takes a geometry object and returns its combined boundary as a geometry object.
boundary() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
boundary() - Method in interface com.esri.sde.sdk.geom.Geometry
Boundary takes a geometry object and returns its combined boundary as a geometry object.
boundary() - Method in class com.esri.sde.sdk.geom.SePoint
Boundary takes a geometry object and returns its combined boundary as a geometry object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeGeometry
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeLinestring
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SePolygon
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in interface com.esri.sde.sdk.geom.Geometry
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
buffer(double) - Method in class com.esri.sde.sdk.geom.SePoint
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
build(int, boolean, int) - Method in class com.esri.sde.sdk.client.SeShape
Assembles a linestring or area shape from the calling shape, which must be a (spagetti) line shape.
byId(String, SeObjectId) - Method in class com.esri.sde.sdk.client.SeDelete
Deletes a row from an ArcSDE table using the row id.
byIdList(String, SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeDelete
Deletes rows from an ArcSDE table using a list of row ids to determine which rows to delete.

C

calculateDistance(SeShape, boolean) - Method in class com.esri.sde.sdk.client.SeShape
Returns the closest distance between two shapes.
calculateExtent(boolean, SeSqlConstruct) - Method in class com.esri.sde.sdk.client.SeLayer
returns the extent (the minimum bounding box) of the features in a layer.
calculateExtent(SeSqlConstruct) - Method in class com.esri.sde.sdk.client.SeLog
Returns the extent (the minimum bounding box) of all the features specified by the logfile (which may be from multiple layers), and optionally, pass an SQL where clause as well.
calculateLayerExtent(SeQueryInfo) - Method in class com.esri.sde.sdk.client.SeQuery
Returns the envelope for all features within the layer that pass any SQL construct, state, or spatial constraints for the stream.
calculateLayerStatistics(SeQueryInfo) - Method in class com.esri.sde.sdk.client.SeQuery
Returns a set of statistics for a layer.
calculateTableStatistics(String, int, SeQueryInfo, int) - Method in class com.esri.sde.sdk.client.SeQuery
Returns a set of statistics for a table and column.
canAddColumn - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS can add columns to a table.
cancel(boolean) - Method in class com.esri.sde.sdk.client.SeStreamOp
Cancels the current operation on the stream.
cancel(boolean) - Method in class com.esri.sde.sdk.client.SeInsert
Cancels the current insert operation.
cancel(boolean) - Method in class com.esri.sde.sdk.client.SeUpdate
Cancels the current update operation.
canDropColumn - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS can drop column from a table.
canOwnerPrefixTable - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS allows owner to prefixe the tablename.
canRename - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS can rename tables.
centroid() - Method in interface com.esri.sde.sdk.geom.MultiSurface
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
centroid() - Method in class com.esri.sde.sdk.geom.SeSurface
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
centroid() - Method in interface com.esri.sde.sdk.geom.Surface
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
centroid() - Method in class com.esri.sde.sdk.geom.SeMultiSurface
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
centroid() - Method in class com.esri.sde.sdk.geom.SePolygon
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
centroid() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
changePath(SDEPoint, SDEPoint, SDEPoint, SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Replaces a path in the source shape with a new path.
changeState(SeObjectId) - Method in class com.esri.sde.sdk.client.SeVersion
Changes the underlying state of a version.
clip(SeExtent) - Method in class com.esri.sde.sdk.client.SeShape
Returns the intersection (logical AND of space) of the shape and a supplied rectangular envelope.
clone() - Method in class com.esri.sde.sdk.client.SePEDatum
Clone the datum object.
clone() - Method in interface com.esri.sde.sdk.client.SePECoordinateSystem
Make a clone of this coordinate system object.
clone() - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Clones SeSqlConstruct object.
clone() - Method in class com.esri.sde.sdk.client.SePESpheroid
Clone a spheroid.
clone() - Method in class com.esri.sde.sdk.client.SeRegistration
Clones SeRegistration object.
clone() - Method in class com.esri.sde.sdk.client.SeObjectLock
Clones SeObjectLock object.
clone() - Method in class com.esri.sde.sdk.client.SeSpatialReference
clone() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Clones the coordinate reference object.
clone() - Method in class com.esri.sde.sdk.client.SePEGeographicCS
Clone the gcs object.
clone() - Method in class com.esri.sde.sdk.client.SeLog
Clones the SeLog object.
clone() - Method in class com.esri.sde.sdk.client.SeLayer
Clones the SeLayer object.
clone() - Method in class com.esri.sde.sdk.client.SeShape
Returns a copy of the shape.
clone() - Method in class com.esri.sde.sdk.client.SeVersion
Clones the SeVersion object.
clone() - Method in class com.esri.sde.sdk.client.SePEProjection
Clone a projection.
clone() - Method in class com.esri.sde.sdk.client.SePEProjection.Inverse
clone() - Method in class com.esri.sde.sdk.client.SePEProjection.Forward
clone() - Method in class com.esri.sde.sdk.client.SePEProjection.Horizon
clone() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns a new instance of this SeColumnDefinition.
clone() - Method in class com.esri.sde.sdk.client.SePEProjectedCS
Clone the pcs object.
clone() - Method in class com.esri.sde.sdk.client.SeRelease
Clones SeRelease object.
clone() - Method in class com.esri.sde.sdk.client.SePEParameters
Clone a parameter object.
clone() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Clones SeQuery object.
clone() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns a copy of metadata object.
clone() - Method in class com.esri.sde.sdk.client.SeObjectId
clone() - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Clone a prime meridian.
clone() - Method in class com.esri.sde.sdk.client.SeLocator
Returns a copy of the locator object.
clone() - Method in class com.esri.sde.sdk.client.SeState
Clones the SeState object.
clone() - Method in class com.esri.sde.sdk.client.SePEUnit
Clone the unit object.
close() - Method in class com.esri.sde.sdk.client.SeConnection
Closes the connection to the ArcSDE instance.
close() - Method in class com.esri.sde.sdk.client.SeStreamOp
Closes the query and releases the underlying stream back to the stream pool.
close() - Method in class com.esri.sde.sdk.client.SeInsert
Closes the insert and releases the underlying stream back to the stream pool.
close() - Method in class com.esri.sde.sdk.client.SeUpdate
Closes the update and releases the underlying stream back to the stream pool.
close() - Method in class com.esri.sde.sdk.client.SeLog
Closes the open logfile.
close() - Method in class com.esri.sde.sdk.client.SeState
Closes the state.
com.esri.sde.sdk.client - package com.esri.sde.sdk.client
This package contains classes that provide the basic functionality exposed in the C sde81 client library.
com.esri.sde.sdk.geom - package com.esri.sde.sdk.geom
combine(String, String, int) - Method in class com.esri.sde.sdk.client.SeLog
Performs a set operation (UNION, INTERSECTION, DIFFERENCE, SYMMETRICAL DIFFERENCE) on two logfiles (this one and the one named by the secondLogfile argument), yeilding a new (temporary) logfile (named according to the combinedLogfile argument).
commitTransaction() - Method in class com.esri.sde.sdk.client.SeConnection
Commits changes to the underlying database.
compareTo(Object) - Method in class com.esri.sde.sdk.client.SeObjectId
compressTree() - Method in class com.esri.sde.sdk.client.SeState
Compresses an instance’s state tree by removing all states that aren’t referenced by a version.
CONNECTION_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
contains(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second.
contains(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second.
convertValueToSystem(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the system value for the given world value.
convexhull() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns the convex hull of a geometry object.
convexhull() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the convex hull of a geometry object.
convexhull() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns the convex hull of a geometry object.
convexhull() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the convex hull of a geometry object.
convexhull() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns the convex hull of a geometry object.
convexhull() - Method in class com.esri.sde.sdk.geom.SePoint
Returns the convex hull of a geometry object.
copy(String) - Method in class com.esri.sde.sdk.client.SeLog
Copies an existing logfile, described by the calling object, to a new logfile.
copyStateRows(String, SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeUpdate
Copies rows from the differences state to the source state.
count() - Method in class com.esri.sde.sdk.client.SeLog
Counts the number of row ids in the logfile.
create() - Method in class com.esri.sde.sdk.client.SeRegistration
Register an existing table with ArcSde.
create() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Creates a spatial reference entry in the spatial_references table.
create() - Method in class com.esri.sde.sdk.client.SeLog
Creates this logfile on the server.
create() - Method in class com.esri.sde.sdk.client.SeLocator
Creates a locator.
create(boolean, SeVersion) - Method in class com.esri.sde.sdk.client.SeVersion
Creates a child version from an existing version.
create(int, int) - Method in class com.esri.sde.sdk.client.SeLayer
Spatially enables an RDBMS table.
create(SeColumnDefinition[]) - Method in class com.esri.sde.sdk.client.SeTable
Creates the table with specified column definitions and the default configuration keyword.
create(SeColumnDefinition[], String) - Method in class com.esri.sde.sdk.client.SeTable
Creates the table with specified column definitions.
create(SeObjectId) - Method in class com.esri.sde.sdk.client.SeState
Creates a child state from an existing state.
createIndex(String, boolean, boolean, String, String) - Method in class com.esri.sde.sdk.client.SeTable
Creates a DBMS index on the specified column of a table.
createIndexes(short, SeTable.SeTableIndexDefs[], String) - Method in class com.esri.sde.sdk.client.SeTable
Creates DBMS indexes on a table.
createMultiVersionView(String) - Method in class com.esri.sde.sdk.client.SeTable
Creates a multiversion DBMS view on the specified multiversion table.
createPrimaryConstraint(String[], String, String) - Method in class com.esri.sde.sdk.client.SeTable
Creates primary constraint.
createUniqueConstraint(String[], String, String) - Method in class com.esri.sde.sdk.client.SeTable
Creates unique constraint.
createView(String, String[], String[], SeSqlConstruct) - Method in class com.esri.sde.sdk.client.SeTable
Creates a DBMS view on a table.
crosses(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects.
crosses(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects.
Curve - interface com.esri.sde.sdk.geom.Curve.
The Curve interface defines the methods for a class whose instances create a one-dimensional geometric object stored as a sequence of points.

D

databaseUse(String) - Method in class com.esri.sde.sdk.client.SeConnection
Changes the database or data source being used by a connection.
dbmsId - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Identifies the underlying RDBMS id.
delete() - Method in class com.esri.sde.sdk.client.SeRegistration
Unregisters a table.
delete() - Method in class com.esri.sde.sdk.client.SePEHorizon
delete() - Method in class com.esri.sde.sdk.client.SeLog
Deletes this logfile on the server.
delete() - Method in class com.esri.sde.sdk.client.SeLayer
Deletes the spatial components from a spatially enabled table.
delete() - Method in class com.esri.sde.sdk.client.SeVersion
Deletes a version.
delete() - Method in class com.esri.sde.sdk.client.SeLocator
Deletes a locator entry from ArcSde service.
delete() - Method in class com.esri.sde.sdk.client.SePEPCSConstants
Deletes a PCSConstants object.
delete() - Method in class com.esri.sde.sdk.client.SeTable
Drops a DBMS table.If the table is spatially enabled, all of its associated spatial information for the layer is also deleted.
delete() - Method in class com.esri.sde.sdk.client.SeState
Deletes a state.
delete(SeObjectId) - Method in class com.esri.sde.sdk.client.SeSpatialReference
Deletes a spatial reference entry in the spatial_references table.
deleteConstraint(String) - Method in class com.esri.sde.sdk.client.SeTable
Deletes the named constraint from specified table.
deleteIds(SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeLog
Deletes a list of ids from an open logfile.
deleteIndex(String) - Method in class com.esri.sde.sdk.client.SeTable
Drops a DBMS table index for the specified table.
deleteIsland(SDEPoint) - Method in class com.esri.sde.sdk.client.SeShape
Deletes the island ring that contains the specified point from the source shape.
deleteMetaData(int, SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeTable
Deletes metadata records.
deleteMetaDataByWhere(String) - Method in class com.esri.sde.sdk.client.SeTable
Deletes metadata records filtered by a where clause.
deleteMultiVersionView() - Method in class com.esri.sde.sdk.client.SeTable
Deletes a multiversion DBMS view on a multiversion table.
deletePart(int) - Method in class com.esri.sde.sdk.client.SeShape
Deletes the specified part of a multipart shape.
deletePath(SDEPoint, SDEPoint, SDEPoint) - Method in class com.esri.sde.sdk.client.SeShape
Deletes a path from the calling shape.
deletePoint(SDEPoint) - Method in class com.esri.sde.sdk.client.SeShape
Deletes all occurrences of the specified point in the shape.
deleteRange(SeObjectId, SeObjectId) - Method in class com.esri.sde.sdk.client.SeState
Deletes a connected range of states.
describe() - Method in class com.esri.sde.sdk.client.SeTable
Returns column definitions of the table.This function maps the underlying DBMS data types to ArcSDE data types.
describeColumn(int) - Method in class com.esri.sde.sdk.client.SeStreamOp
Describes a given column by returning the SeColumnDefinition.
describeIndexes() - Method in class com.esri.sde.sdk.client.SeTable
Returns index definitions.
describeOutput() - Method in class com.esri.sde.sdk.client.SeLocator
Describe the outputs of a locator.
difference(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.
difference(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.
difference(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
The difference function returns the portion of this shape that is not intersected by the secondary shape.
dimension() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Returns the dimension of a geometry object.
dimension() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns the dimension of a geometry object.
dimension() - Method in class com.esri.sde.sdk.geom.SePoint
Returns the dimension of a geometry object.
disjoint(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).
disjoint(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).
distance(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns the closest distance separating two geometries.
distance(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Returns the closest distance separating two geometries.
dropColumn(String) - Method in class com.esri.sde.sdk.client.SeTable
Drops a column from the table.
duplicate() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Creates a copy of annotation object.
duplicate() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns a duplicate of this coordinate reference object.

E

enableGeometry(Connection) - Method in interface com.esri.sde.sdk.geom.GeometrySource
endPoint() - Method in class com.esri.sde.sdk.geom.SeCurve
Returns the last point of a linestring.
endPoint() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the last point of a linestring.
endPoint() - Method in interface com.esri.sde.sdk.geom.Curve
Returns the last point of a linestring.
envelope() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Returns the bounding box of a geometry object as a polygon.
envelope() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns the bounding box of a geometry object as a geometry.
envelope() - Method in class com.esri.sde.sdk.geom.SePoint
Returns the bounding box of a geometry object as a polygon.
envelope(double, double, double, double) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called to indicate what geometry type.
envelopesIntersect(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).
envelopesIntersect(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).
equal(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).
equal(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).
equivalenceRows(String, SeObjectId[], boolean) - Method in class com.esri.sde.sdk.client.SeStreamOp
Declares a set of rows in the source state to be equivalent to the version of those rows in the difference state.
execute() - Method in class com.esri.sde.sdk.client.SeStreamOp
Tells the server to execute a stream operation.
exportDbtune(String) - Method in class com.esri.sde.sdk.client.SeConnection
Exports data to a file from the DBTUNE table.
extendLine(SDEPoint, SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Extends a linear shape by adding a specified string of points to the beginning or end of the shape.
exterior() - Method in class com.esri.sde.sdk.geom.SeGeometry
exterior() - Method in class com.esri.sde.sdk.geom.SeLinestring
The interior is the space occupied by the geometry.
exterior() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
exterior() - Method in class com.esri.sde.sdk.geom.SePolygon
The interior is the space occupied by the geometry.
exterior() - Method in interface com.esri.sde.sdk.geom.Geometry
The interior is the space occupied by the geometry.
exterior() - Method in class com.esri.sde.sdk.geom.SePoint
The interior is the space occupied by the geometry.
exteriorRing() - Method in interface com.esri.sde.sdk.geom.Polygon
Returns the exterior ring of a polygon as a linestring.
exteriorRing() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the exterior ring of a polygon as a linestring.

F

fetch() - Method in class com.esri.sde.sdk.client.SeSSA
Fetches an SeRow of data.
fetch() - Method in class com.esri.sde.sdk.client.SeQuery
Fetches an SeRow of data.
fetchRow(String, SeObjectId, String[]) - Method in class com.esri.sde.sdk.client.SeQuery
Fetches a single row based on the feature id.
filterCoordinates(double) - Method in class com.esri.sde.sdk.client.SeShape
Applies a Douglas_Poiker line generalization to a shape.
findAlong(double) - Method in class com.esri.sde.sdk.client.SeShape
Returns the points or lines along a shape as defined by the shape's measures and the supplied measured value.
findBetween(double, double) - Method in class com.esri.sde.sdk.client.SeShape
Returns the points or lines along a shape as defined by the shape's measures between the given from- and to- values.
findRelation(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns a mask defining all the relationships between the calling shape and the supplied shape.
flushBufferedWrites() - Method in class com.esri.sde.sdk.client.SeStreamOp
Flushes any outstanding insert/update buffers.
freeAllLocks() - Method in class com.esri.sde.sdk.client.SeConnection
Frees all SDE locks owned by the current user.
freeLock() - Method in class com.esri.sde.sdk.client.SeLayer
Frees the lock on an ArcSde layer.
freeLock() - Method in class com.esri.sde.sdk.client.SeVersion
Releases the lock on a version.
freeLock() - Method in class com.esri.sde.sdk.client.SeTable
Frees the lock on a table.
freeLock() - Method in class com.esri.sde.sdk.client.SeState
Releases the lock on a state.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEDatum
Construct datum object from string.
fromString(String) - Method in class com.esri.sde.sdk.client.SePESpheroid
Convert an external representation into a spheroid.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEGeographicCS
fromString(String) - Method in class com.esri.sde.sdk.client.SePEProjection
Construct a projection object from string.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEProjectedCS
/** Constructor.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEParameters
Construct parameter object from string.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Constructor.
fromString(String) - Method in class com.esri.sde.sdk.client.SePEUnit
Convert an external representation into a unit.
fromTable(String, String) - Method in class com.esri.sde.sdk.client.SeDelete
Deletes rows from an ArcSDE table using a where clause to determine which rows to delete.
func(double[], double[]) - Method in class com.esri.sde.sdk.client.SePEProjection.Horizon
func(double[], double[]) - Method in interface com.esri.sde.sdk.client.SePEHorizonFunction
NOTE: Inclusive polys are to be arrayed clockwise Exclusive polys are to be arrayed clockwise also
func(double[], double[], int, double[][], int[], double[]) - Method in class com.esri.sde.sdk.client.SePEProjection.Inverse
func(double[], double[], int, double[][], int[], double[]) - Method in class com.esri.sde.sdk.client.SePEProjection.Forward
func(double[], double[], int, double[][], int[], double[]) - Method in interface com.esri.sde.sdk.client.SePEProjectionFunction
func(SePEPCSConstants, double[], double[]) - Method in interface com.esri.sde.sdk.client.SePEPCSConstFunction
func(SePEPCSConstants, double[], double[]) - Method in class com.esri.sde.sdk.client.SePEProjection.PCSConstFunc
fwd() - Method in class com.esri.sde.sdk.client.SePEProjection

G

generate() - Method in class com.esri.sde.sdk.client.SePEHorizon
generateBuffer(double, int) - Method in class com.esri.sde.sdk.client.SeShape
Generates a buffer around the source shape, and returns the resulting new shape.
generateConvexHull() - Method in class com.esri.sde.sdk.client.SeShape
Computes the convex hull polygon for a shape's points.
generateFromPart(int) - Method in class com.esri.sde.sdk.client.SeShape
Generates a new shape from the specified part of a shape.
generateLabelPoint() - Method in class com.esri.sde.sdk.client.SeShape
Generates a label point for a shape.
generateLine(int, int, int[], SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Generates a line shape from an array of points.
generatePoint(int, SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Generates a point shape from an array of points.
generatePolygon(int, int, int[], SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Turns this shape into a polygon shape from an array of points.
generateRectangle(SeExtent) - Method in class com.esri.sde.sdk.client.SeShape
Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.
generateSimpleLine(int, int, int[], SDEPoint[]) - Method in class com.esri.sde.sdk.client.SeShape
Generates a simple line shape from an array of points.
GENERIC_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
geometries() - Method in class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
Geometry - interface com.esri.sde.sdk.geom.Geometry.
The Geometry interface defines the methods for the Geometry subclasses.
geometry() - Method in class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
geometry(Class, Geometry[]) - Method in interface com.esri.sde.sdk.geom.GeometrySource
geometry(Class, Vector) - Method in interface com.esri.sde.sdk.geom.GeometrySource
GeometryCollection - interface com.esri.sde.sdk.geom.GeometryCollection.
The GeometryCollection interface defines the methods for a class whose instances create a geometric object which is a collection of one or more geometric objects.
GeometryException - exception com.esri.sde.sdk.geom.GeometryException.
This exception is thrown whenever errors are encountered on the operations of the gometry object.
GeometryException.IncompatibleGeometries - exception com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries.
This exception is thrown whenever a Clementini operation encounters an error due to incompatible geometries.
GeometryException.IncompatibleGeometries(String, Geometry, Geometry) - Constructor for class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
GeometryException.IndexOutOfBounds - exception com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds.
Since this is an indirect subclass of RuntimeException, it's instances are uncheck exceptions.
GeometryException.IndexOutOfBounds(String, Geometry, int) - Constructor for class com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds
GeometryException.InvalidGeometry - exception com.esri.sde.sdk.geom.GeometryException.InvalidGeometry.
This error is thrown whenever the geometry is topologically invalid.
GeometryException.InvalidGeometry(String, Geometry) - Constructor for class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
GeometryException.InvalidSrid - exception com.esri.sde.sdk.geom.GeometryException.InvalidSrid.
This error is thrown whenever the srid for the geometry cannot be resolved.
GeometryException.InvalidSrid(String, int) - Constructor for class com.esri.sde.sdk.geom.GeometryException.InvalidSrid
GeometryException() - Constructor for class com.esri.sde.sdk.geom.GeometryException
GeometryException(String) - Constructor for class com.esri.sde.sdk.geom.GeometryException
GeometryFactory - interface com.esri.sde.sdk.geom.GeometryFactory.
The GeometryFactory interface is used to construct an abstract Geometry object.
geometryFromWKB(InputStream, int) - Method in interface com.esri.sde.sdk.geom.GeometrySource
This method takes a well-known binary representation and a spatial reference system identity to return a geometry object.
geometryFromWKT(String, int) - Method in interface com.esri.sde.sdk.geom.GeometrySource
This method takes a well-known text representation and a spatial reference system identity and returns a geometry object.
geometryN(int) - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
geometryN(int) - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
geometryN(int) - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
geometryN(int) - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
geometryN(int) - Method in interface com.esri.sde.sdk.geom.GeometryCollection
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
GeometrySource - interface com.esri.sde.sdk.geom.GeometrySource.
The GeometrySource interface defines the methods for transforming a geometry object from its well-known binary representation or well-known text representation.
geometryType() - Method in class com.esri.sde.sdk.geom.SeGeometry
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SeLinestring
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SePolygon
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in interface com.esri.sde.sdk.geom.Geometry
Geometrytype takes a geometry object and returns its geometry type as a string.
geometryType() - Method in class com.esri.sde.sdk.geom.SePoint
Geometrytype takes a geometry object and returns its geometry type as a string.
get3DLength() - Method in class com.esri.sde.sdk.client.SeShape
Returns the three-dimensional length of a shape.
get3DLength(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the three-dimensional length of a shape part.
getAccess() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the privilege bitmask for a registered table.The privileges are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
getAccess() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the privilege bitmask for a layer.
getAccess() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the access type for a version.
getAlignment() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the alignment of a specific annotation.
getAllCoords() - Method in class com.esri.sde.sdk.client.SeShape
Returns the world coordinates as an array of parts/subparts/coordinates.
getAllCoords(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the world coordinates as an array of parts/subparts/coordinates.
getAllPoints(int, boolean) - Method in class com.esri.sde.sdk.client.SeShape
Retrieves all the points as well as part offsets and subpart offsets of the shape.
getAnno() - Method in class com.esri.sde.sdk.client.SeShape
Returns the shape's annotation.
getApplicationId() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the application id.
getArea() - Method in class com.esri.sde.sdk.client.SeShape
Returns the area of a shape.
getAreas() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of area features in the layer.
getArraySize() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the optimal array size for the specified layer.
getAscending() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Returns the ascending order characterstics.
getAtrributeBufSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the attribute array buffer size.
getAttributeArraySize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the attribute array buffer size.
getAuthId() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Returns the authority ID for a spatial reference object.
getAuthName() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Returns the authority name for a spatial reference object.
getAutoCommitFreq() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the frequency at which ArcSde server will commit modifications to the database.
getAverage() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the average value.
getAverageArea() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the average area/feature.
getAveragelength() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the average length/feature.
getAveragePoints() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the average number of points/feature.
getAxis() - Method in class com.esri.sde.sdk.client.SePESpheroid
Retrieve a spheroid's semi-major axis.
getBlob(int) - Method in class com.esri.sde.sdk.client.SeRow
Gets a blob column from the row.
getBlobArraySize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the blob array buffer size.
getBlobBufSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the blob buffer size.
getBounds() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the layer extent.
getBuffersCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of buffers loaded by the server process.
getBugFix() - Method in class com.esri.sde.sdk.client.SeRelease
Returns the bug fix version number of the release.
getByClause() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the SQL ORDER BY string for the query.
getCad() - Method in class com.esri.sde.sdk.client.SeShape
Returns the shape's cad.
getCategory() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator category.
getChildTimeout() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the child timeout period.
getClassName() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata class name.
getClientCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the client count.
getClosingTime() - Method in class com.esri.sde.sdk.client.SeState
Returns the closing date and time of a state.
getColumnDef(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns a column's definition, given the column's position.
getColumnName() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
Returns the spatial coulmn name.
getColumnNames() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Returns the column names.
getColumns() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns a copy of the SeColumnDefinitions set on this queryinfo object.
getColumns() - Method in class com.esri.sde.sdk.client.SeRow
Returns the column defintions describing the columns on the row.
getConfiguration() - Method in class com.esri.sde.sdk.client.SeInstance
Returns the ArcSde instance configuration.
getConstruct() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the SeSqlConstruct.
getCoordRef() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Returns the SeCoordinateReference object.
getCoordRef() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the coordinate reference for the specified layer.
getCoordRef() - Method in class com.esri.sde.sdk.client.SeShape
Returns the coordinate reference of a shape.
getCoordSysDescription() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the description of the coordinate system of a Coordinate Reference.
getCount() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the number of rows.
getCountry() - Method in class com.esri.sde.sdk.client.SeLocale
Returns the name of the locale country.
getCreationDate() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the layer creation date.
getCreationKeyword() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the configuration keyword used for table creation.
getCreationKeyword() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the configuration keyword.
getCreationTime() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the creation time for a version.
getCreationTime() - Method in class com.esri.sde.sdk.client.SeState
Returns the creation date and time of a state.
getDatabase() - Method in class com.esri.sde.sdk.client.SeTable
Returns the database's name.
getDatabaseList() - Method in class com.esri.sde.sdk.client.SeConnection
Returns a list of databases or data sources for a DBMS instance.
getDatabaseName() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the name of the connection database.
getDate() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the last inserted or updated date for a meta-data object.
getDate(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as a java.lang.Date.
getDbmsId() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the database id identifying underlying RDBMS.
getDbmsInfo() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns underlying RDBMS properties.
getDBMSInfo() - Method in class com.esri.sde.sdk.client.SeConnection
Returns information about the underlying RDBMS used by the sde server.
getDependentTables() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns a dynamically allocated list of all dependent tables for a given table.
getDesc() - Method in class com.esri.sde.sdk.client.SeRelease
Returns a String description of the release.
getDescription() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the registered table's description.
getDescription() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Returns the description of the spatial reference object.
getDescription() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the layer's description.
getDescription() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the version description.
getDescription() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object description.
getDescription() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator description.
getDifferenceList(SeObjectId, SeObjectId) - Method in class com.esri.sde.sdk.client.SeRegistration
Returns a list SeRegistration objects for all of the multiversion tables that are modified in either of the input states or any of the states joining them in the state tree (excluding their shared parent), and for which the current user has any access to the DBMS tables.
getDistinctType() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the type of distinct values.
getDistinctValueFrequencies() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the frequency of distinct values.
getDistinctValues() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns distinct values.
getDouble(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as a Double.
getDvals() - Method in class com.esri.sde.sdk.client.SePEPCSConstants
Retrieves the dvals.
getEntityType() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the shape type as an int.
getErrDesc() - Method in class com.esri.sde.sdk.client.SeError
Returns the ArcSDE error description.
getErrDesc(int) - Method in class com.esri.sde.sdk.client.SeError
Returns the ArcSDE error description for specified error.
getExtent() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the layer's envelope.
getExtent() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerLock
Returns extent of area locked.
getExtent() - Method in class com.esri.sde.sdk.client.SeShape
Returns the extent of a shape.
getExtent() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns an array of doubles in minx, miny, maxx, maxy order.
getExtent(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the extent of a shape or a shape part.
getExtErrMsg() - Method in class com.esri.sde.sdk.client.SeError
Returns the ArcSDE extended error message (if any).
getExtError() - Method in class com.esri.sde.sdk.client.SeError
Returns the numeric ArcSDE extended error code.
getFalseM() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the m offset.
getFalseM() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the m false origin for this coordinate reference object.
getFalseX() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the false x offset
getFalseX() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
getFalseY() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the false y offset
getFalseY() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the y false origin for this coordinate reference object.
getFalseZ() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the z-offset.
getFalseZ() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the z false origin for this coordinate reference object.
getFeature() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns the features indexed by this grid level.
getFeatureId() - Method in class com.esri.sde.sdk.client.SeShape
Returns the shape's unique id.
getFeaturesInside() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns features wholly inside one grid cell.
getFlattening() - Method in class com.esri.sde.sdk.client.SePESpheroid
Retrieve a spheroid's flattening.
getFloat(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as a Float.
getForward() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's forward function.
getGapRatio() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation gap ratio.
getGeometry() - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called finally, to get the object constructed.
getGeometry(GeometryFactory, int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value as a GeometryFactory object.
getGridCells() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns number grid cells in this level.
getGrids() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
Returns individual grid statistics.
getGridSizes() - Method in class com.esri.sde.sdk.client.SeLayer
Returns an array of layer's grid sizes.
getGroupCounts() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns Index record count by group: <=4, >4, >10, >25, >50, >100, >250, >500.
getHeight() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation height.
getHomePath() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the path to ArcSDE home directory.
getHorizon() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's horizon function.
getId() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the ID of a registered table.
getId() - Method in class com.esri.sde.sdk.client.SeLog
Retrieves the logfile ID.
getId() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the ID of a version.
getId() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the object id.
getId() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator ID.
getId() - Method in class com.esri.sde.sdk.client.SeState
Returns the state ID.
getID() - Method in class com.esri.sde.sdk.client.SePEDatum
Retrieve a pe object's name .
getID() - Method in class com.esri.sde.sdk.client.SePESpheroid
Retrieve a pe object's name .
getID() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the layer ID.
getID() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a pe object's name .
getID() - Method in class com.esri.sde.sdk.client.SePEParameters
Retrieve a pe object's name .
getID() - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Retrieve a pe object's name .
getID() - Method in class com.esri.sde.sdk.client.SePEUnit
Retrieve a pe object's name .
getIdCount() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIdRange
Returns the number of Ids fetched.
getIds(int) - Method in class com.esri.sde.sdk.client.SeTable
Returns a range of row id values.
getIndexName() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Returns the index name.
getIndexRecords() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns index records in this grid level.
getIndicator(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns an indicator value, given the column position.
getInfo() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns registration information.
getInfo() - Method in class com.esri.sde.sdk.client.SeLayer
Returns information about an ArcSde layer.
getInfo() - Method in class com.esri.sde.sdk.client.SeVersion
Returns version information.
getInfo() - Method in class com.esri.sde.sdk.client.SeLocator
Retrieves information about the locator.
getInstance() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the ArcSDE instance's port number.
getInstance() - Method in class com.esri.sde.sdk.client.SeInstance
Returns the ArSde instance's port number.
getInteger(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as an Integer.
getInverse() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's inverse function.
getIvals() - Method in class com.esri.sde.sdk.client.SePEPCSConstants
Retrieves the ivals.
getJustification() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation justification.
getKBytesCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of 1K bytes buffered data by the server process.
getKeywordInfo() - Method in class com.esri.sde.sdk.client.SeConnection
Returns a list of RDBMS reserved keywords.
getLanguage() - Method in class com.esri.sde.sdk.client.SeLocale
Returns the name of the locale language.
getLastModified() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the date that the layer was last modified.
getLayerId() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the layer id.
getLayerId() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
Returns the layer id.
getLayers() - Method in class com.esri.sde.sdk.client.SeConnection
Retrieves a list of all ArcSde layers that are accessible to the current user.
getLeader() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation leader shape.
getLength() - Method in class com.esri.sde.sdk.client.SeShape
Returns the length of a shape.
getLevel() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation level.
getLineage() - Method in class com.esri.sde.sdk.client.SeState
Returns the lineage of a state as an array consisting of an ordered list of state ids, from the base state to the state's immediate parent.
getLines() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of line features in the layer.
getList(Class) - Method in class com.esri.sde.sdk.client.SeConnection
Returns a Vector of objects from an ArcSDE instance given the class type.
getLocale() - Method in class com.esri.sde.sdk.client.SeConnection
getLocatorList(String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns the list of all accessible locators.
getLockMode() - Method in class com.esri.sde.sdk.client.SeVersion.SeVersionLock
Returns the lock mode.
getLocks() - Method in class com.esri.sde.sdk.client.SeLayer
Returns a list of current locks.
getLocks() - Method in class com.esri.sde.sdk.client.SeVersion
Returns a list of current locks.
getLocks() - Method in class com.esri.sde.sdk.client.SeInstance
Returns a list of all the layer locks allocated by the instance.
getLocks() - Method in class com.esri.sde.sdk.client.SeTable
Returns a list of locks info for the table.
getLockType() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerLock
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
Returns the lock type.
getLockType() - Method in class com.esri.sde.sdk.client.SeTable.SeTableLock
Returns the lock type.
getLogfile() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the logfile name.
getLogfileList(String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns a list of all logfiles owned by the specified owner.
getLogfileList(String, String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns a list of all logfiles for the specified layer or table.
getLogPath() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the path to the ArcSde logfile directory.
getLongitude() - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Retrieve a prime meridian's longitude.
getM() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns the measure value.
getM() - Method in class com.esri.sde.sdk.geom.SePoint
getMajor() - Method in class com.esri.sde.sdk.client.SeRelease
Returns the Major component of the release.
getMax() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the maximum value.
getMaxArea() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the maximum feature area.
getMaxArrayBytes() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum array bytes allocated per stream.
getMaxArraySize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the maximum number of elements per array.
getMaxArraySize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum array fetch size.
getMaxBlobSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum blob size allowed for storage.
getMaxBufSize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the maximum size of the stream buffer.
getMaxConnections() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of connections allowed by the ArcSde instance.
getMaxDistinct() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of unique values for attribute statistics.
getMaxFid() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the maximum fid value in the layer.
getMaxFPG() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Returns maximum number of features per grid cell.
getMaxInitFeats() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of initial feature allowed per layer.
getMaxLayers() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of layers allowed by the ArcSde instance.
getMaxLength() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the maximum linear feature length.
getMaxLocks() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of layer locks allowed by the ArcSde instance.
getMaxM() - Method in class com.esri.sde.sdk.client.SeShape
Returns the maximum measure value.
getMaxMemBlob() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum blob size for in-memory storage.
getMaxmemDissolve() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum amount of memory to be allocated for dissolve.
getMaxMValue() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the maximum measure value.
getMaxNetBlockSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum Transmission Buffer size in Bytes.
getMaxObjectLocks() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of object locks allowed by the ArcSde instance.
getMaxPoints() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the maximum number of points in layer features.
getMaxRasterColumns() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of raster columns allowed by the ArcSde instance.
getMaxRegistration() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of registered table allowed by the ArcSde instance.
getMaxSizePerBlob() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the maximum individual blob size in array fetch.
getMaxStateLocks() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of state locks allowed by the ArcSde instance.
getMaxStreams() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of streams allowed by the ArcSde instance.
getMaxTableLocks() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of table locks allowed by the ArcSde instance.
getMaxTimeDiff() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum client-server time difference.
getMaxX() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the maximum X value of the extent as a double.
getMaxX() - Method in class com.esri.sde.sdk.geom.SeGeometry
getMaxX() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns the maximum x value.
getMaxY() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the maximum Y value of the extent as a double.
getMaxY() - Method in class com.esri.sde.sdk.geom.SeGeometry
getMaxY() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns the maximum y value.
getMaxZ() - Method in class com.esri.sde.sdk.client.SeShape
Returns the maximum z coordinate value.
getMaxZ() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the maximum Z value of the extent as a double.
getMaxZValue() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the maximum z-value.
getMCRound() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the m CRound for this coordinate reference object.
getMetaDataInfoList() - Method in class com.esri.sde.sdk.client.SeTable
Returns the meta-data associated with a table.
getMetaDataList(String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns the meta-data associated with a table.
getMHalfSU() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the m HalfSU for this coordinate reference object.
getMin() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the minimum value.
getMinArea() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the minimum feature area.
getMinBufSize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the minimum size of the stream buffer.
getMinFid() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the minimum fid value in the layer.
getMinID() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the minimum FID id.
getMinimumId() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the the minimum ID allowed in the registered table.
getMinLength() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the minimum linear feature length.
getMinM() - Method in class com.esri.sde.sdk.client.SeShape
Returns the minimum measure value.
getMinMValue() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the minimum measure value.
getMinNetBlockSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the minimum Transmission Buffer size in Bytes.
getMinNetObjCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the minimum Transmission Buffer count.
getMinObjects() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the minimum number of objects to put in a buffer.
getMinor() - Method in class com.esri.sde.sdk.client.SeRelease
Returns the Minor component of the release.
getMinPoints() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the minimum number of points in layer features.
getMinX() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the minimum X value of the extent as a double.
getMinX() - Method in class com.esri.sde.sdk.geom.SeGeometry
getMinX() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns the minimum x value.
getMinY() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the minimum Y value of the extent as a double.
getMinY() - Method in class com.esri.sde.sdk.geom.SeGeometry
getMinY() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns the minimum y value.
getMinZ() - Method in class com.esri.sde.sdk.client.SeShape
Returns the minimum z coordinate value.
getMinZ() - Method in class com.esri.sde.sdk.client.SeExtent
Returns the minimum Z value of the extent as a double.
getMinZValue() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the minimum z-value.
getMRange() - Method in class com.esri.sde.sdk.client.SeShape
Returns the range of measure values of a shape.
getMRange(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the range of measure values of a shape part.
getMs() - Method in class com.esri.sde.sdk.geom.SeLinestring
getMs() - Method in class com.esri.sde.sdk.geom.SePolygon
getMultiAreas() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of multiarea features in the layer.
getMultiLines() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of multi-line features in the layer.
getMultiPoints() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of multipoint features in layer.
getMultiSimpleLines() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of multi simple line features in the layer.
getMUnits() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the m-offset's scale factor.
getMUnits() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the m scale factor for this coordinate reference object.
getMvViewName() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the multiversion view name of a registered table.
getName() - Method in class com.esri.sde.sdk.client.SePEDatum
Retrieve a datum's name.
getName() - Method in class com.esri.sde.sdk.client.SePESpheroid
Retrieve a spheroid's name.
getName() - Method in class com.esri.sde.sdk.client.SeLog
Retrieves the logfile name.
getName() - Method in class com.esri.sde.sdk.client.SeLayer
Returns the name of the table associated with the layer.
getName() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the version name.
getName() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's name.
getName() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the name of the column as a String.
getName() - Method in class com.esri.sde.sdk.client.SePEParameters
Retrieve a parameter's name.
getName() - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Retrive a prime meridian's name.
getName() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator name.
getName() - Method in class com.esri.sde.sdk.client.SeTable
Returns the table's name.
getName() - Method in class com.esri.sde.sdk.client.SePEUnit
Retrieve a unit's name.
getNils() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of nil features in the layer.
getNodeName() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Returns the client's host node name.
getnumColumns() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Returns the number of columns.
getNumColumns() - Method in class com.esri.sde.sdk.client.SeInsert
Returns the number of columns on the query.
getNumColumns() - Method in class com.esri.sde.sdk.client.SeUpdate
Returns the number of columns on the update.
getNumColumns() - Method in class com.esri.sde.sdk.client.SeSSA
Returns the number of columns on the query.
getNumColumns() - Method in class com.esri.sde.sdk.client.SeRow
Returns the number of columns on the row as a short.
getNumColumns() - Method in class com.esri.sde.sdk.client.SeQuery
Returns the number of columns on the query.
getNumConnections() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
Returns the number of connections to ArcSde instance.
getNumDistinct() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the number of distinct values.
getNumGrids() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
Returns the number of spatial index grids.
getNumLocks() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of locks held by the server process.
getNumLocks() - Method in class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
Returns the number locks.
getNumOfPoints() - Method in class com.esri.sde.sdk.client.SeShape
Returns the number of points of the shape.
getNumParts() - Method in class com.esri.sde.sdk.client.SeShape
Returns the number of parts in a shape.
getNumPoints(int, int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the number of points in a shape or a shape part.
getNumProperties() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the number of properties.
getNumSubParts(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the number of subparts of a part in a shape.
getNumTables() - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Returns the number of Tables in the construct.
getObject(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as an Object.
getObjectId() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the object unique identifier.
getObjectLocks() - Method in class com.esri.sde.sdk.client.SeInstance
Returns a list of all object locks allocated by the instance.
getObjectLocksList() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns an array of object lock definitions, filtered by this SeObjectLock as an example.
getObjectName() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object name.
getObjectOwner() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object owner.
getObjectType() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the object type.
getObjectType() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object type.
getOperationCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of operations performed by the server process.
getOwner() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the object owner name.
getOwner() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the owner of the version.
getOwner() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator owner name.
getOwner() - Method in class com.esri.sde.sdk.client.SeTable
Returns the owner's name.
getOwner() - Method in class com.esri.sde.sdk.client.SeTable.SeTableLock
Returns the lock owner name.
getOwner() - Method in class com.esri.sde.sdk.client.SeState
Returns the state's owner.
getParentId() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the parent ID of a version.
getParentId() - Method in class com.esri.sde.sdk.client.SeState
Returns the state ID of the parent.
getParentName() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the parent version name.
getPartialShapesCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of partial shapes shipped by the server process.
getPCSConstFunc() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's pcsconstfunc function.
getPermissions() - Method in class com.esri.sde.sdk.client.SeTable
Returns the permissions for the table.
getPid() - Method in class com.esri.sde.sdk.client.SeObjectLock
Returns the gsrvr pid that holds the object lock.
getPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the server pid.
getPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
Returns the server pid.
getPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
Returns the server pid.
getPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
Returns the server pid.
getPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
Returns the server pid.
getPlacement() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation placement shape.
getPoints() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of point features in the layer.
getPoints(int, int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the point array of the specified part, and the subpart offsets, if there are any.
getProjectionDescription() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the String description of the coordinate reference.
getProjectionStr() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns projection as a string.
getProperties() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator properties.
getProperty() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object property name.
getQualifiedName() - Method in class com.esri.sde.sdk.client.SeLayer
Returns the layer's table name, qualified with the owner.
getQualifiedName() - Method in class com.esri.sde.sdk.client.SeTable
Returns the table's name, qualified with the owner and database.
getQueryType() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the query type.
getRasterBufSize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the raster buffer size.
getRasterBufSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the raster buffer size.
getReadCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of reads by the server process.
getReadOnlyInstance() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns true if ArcSde instance is read only and false if instance allows read and write.
getRegisteredTables() - Method in class com.esri.sde.sdk.client.SeConnection
Returns an array of SeRegistration objects containing information for all registered tables.
getRegistrationDate() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the registration date of a table.
getRegistrationId() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
Returns the table registration id.
getRelease() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the version description of the ArcSDE instance with which the connection has been established.
getRelease() - Method in class com.esri.sde.sdk.client.SeRelease
Returns the release number.
getRowIdAllocation() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the method used by this registered table to allocate SDE-maintained rowids.
getRowIdColumnName() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the row ID column name for a registered table.
getRowIdColumnType() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the row ID column type for a registered table.
getRowIds() - Method in class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
Returns an array of locked row IDs.
getRowIds(int) - Method in class com.esri.sde.sdk.client.SeLog
Retrieves a list of ids from an open logfile.
getRowIdType() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the registration row id column type.
getRowLocks() - Method in class com.esri.sde.sdk.client.SeTable
Returns the row locks information.
getRowLocksByUser(String) - Method in class com.esri.sde.sdk.client.SeTable
Returns rowlocks set by the specified user.
getRowToSet() - Method in class com.esri.sde.sdk.client.SeInsert
Returns a row object to set for this write operation.
getRowToSet() - Method in class com.esri.sde.sdk.client.SeUpdate
Returns a row object to set for this write operation.
getScale() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the scale of the column.
getSdeErrMsg() - Method in class com.esri.sde.sdk.client.SeError
Returns the ArcSde error message (if any).
getSdeError() - Method in class com.esri.sde.sdk.client.SeError
Returns the numeric ArcSDE error code.
getSeError() - Method in class com.esri.sde.sdk.client.SeException
Returns the ArcSde error object.
getSeRelease() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
Returns ArcSde instance release information.
getServer() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the name of the ArcSDE server.
getServerName() - Method in class com.esri.sde.sdk.client.SeInstance
Returns the ArSde instance server name.
getServerPid() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Returns the server pid.
getServerStartTime() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Returns the ArcSde server start time.
getServerTime() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the current time on the server.
getShape(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as an SeShape.
getShapeAttributeName(int) - Method in class com.esri.sde.sdk.client.SeLayer
Returns the column name for a specified shape attribute The attr_code argument accepts the following values: SE_SHAPE_ATTRIBUTE_NUMOFPTS 0 SE_SHAPE_ATTRIBUTE_ENTITY 1 SE_SHAPE_ATTRIBUTE_XMIN 2 SE_SHAPE_ATTRIBUTE_XMAX 3 SE_SHAPE_ATTRIBUTE_YMIN 4 SE_SHAPE_ATTRIBUTE_YMAX 5 SE_SHAPE_ATTRIBUTE_ZMIN 6 SE_SHAPE_ATTRIBUTE_ZMAX 7 SE_SHAPE_ATTRIBUTE_MMIN 8 SE_SHAPE_ATTRIBUTE_MMAX 9 SE_SHAPE_ATTRIBUTE_AREA 10 SE_SHAPE_ATTRIBUTE_LENGTH 11 SE_SHAPE_ATTRIBUTE_TEXT 12
getShapePointArraySize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the shape geometry array buffer size.
getShapePointBufSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the shape point buffer size.
getShapesCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of shapes buffered by the server process.
getShapeTypes() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the allowed shape types.
getShort(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as a Short.
getSimpleLines() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the number of simple line features in the layer.
getSize() - Method in class com.esri.sde.sdk.client.SeSSA.SeInputDesc
Returns the size of data.
getSize() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the size of the column.
getSpatialColumn() - Method in class com.esri.sde.sdk.client.SeLayer
Retrieves the spatial column name of a layer.
getSpatialIndexStats() - Method in class com.esri.sde.sdk.client.SeLayer
Returns statistical information about a layer’s spatial indexes.
getSpatialRefList() - Method in class com.esri.sde.sdk.client.SeConnection
Returns an array of SeSpatialReference objects.
getSpheroid() - Method in class com.esri.sde.sdk.client.SePEDatum
Retrieve a datum's spheroid.
getSQLInfo(int) - Method in class com.esri.sde.sdk.client.SeConnection
Returns the RDBMS dependent function name according to the specified sqlId.
getSrid() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the Spatial Reference Id of this Coordinate Reference.
getSrid() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the database spatial reference ID that was used to define this coordinate reference object.
getSrId() - Method in class com.esri.sde.sdk.client.SeSpatialReference
Returns the ID for the supplied spatial reference object.
getStartId() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIdRange
Returns the first value of Id range.
getStateCaching() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns true if state caching is on or false if it is off.
getStateId() - Method in class com.esri.sde.sdk.client.SeVersion
Returns the state ID of a version.
getStateId() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
Returns the state id.
getStateList(String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns an array of SeState objects containing information for states filtered by optional where clause.
getStateLocks() - Method in class com.esri.sde.sdk.client.SeInstance
Returns a list of state locks in use.
getStats() - Method in class com.esri.sde.sdk.client.SeInstance
Returns statistics of server processes connected to the ArcSde instance.
getStatus() - Method in class com.esri.sde.sdk.client.SeInstance
Retrieves the ArcSde instance status.
getStdDev() - Method in class com.esri.sde.sdk.client.SeTable.SeTableStats
Returns the standard deviation value.
getStreamPoolSize() - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Returns the number of streams to keep in the pool.
getStreamPoolSize() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the maximum number of streams allowed in a pool.
getStreamSpec() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the properties of a stream operation (Query/Insert/Update/Delete).
getString(int) - Method in class com.esri.sde.sdk.client.SeRow
Returns the column value at the given position as a String.
getSymbol() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation symbol.
getSysName() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Returns the client's operating system name.
getTableLocks() - Method in class com.esri.sde.sdk.client.SeInstance
Returnss a list of table locks in use.
getTableName() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns the table name for a registered table.
getTableName() - Method in class com.esri.sde.sdk.client.SeLayer
Returns the name of the table associated with the layer.
getTableName() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
Returns the spatial table name.
getTables() - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Returns the Tables in the construct.
getTables(int) - Method in class com.esri.sde.sdk.client.SeConnection
Retrieves a list of all tables, views, and synonyms which are available to the current user, with the given permissions.
getTargetInfo() - Method in class com.esri.sde.sdk.client.SeLog
Returns an SeLog.SeLogTargetInfo object containing the target description.
getTcpKeepAlive() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the TCP keepalive on client connection.
getText() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation text.
getTmpPath() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Returns the path to the ArcSde temporary directory.
getTotFeatures() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerStats
Returns the total number of features in the layer.
getType() - Method in class com.esri.sde.sdk.client.SeShape
getType() - Method in class com.esri.sde.sdk.client.SeSSA.SeInputDesc
Returns the SDE column type.
getType() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the SDE column type.
getType() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator type.
getUnique() - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Returns the index's unique characterstic.
getUnitFactor() - Method in class com.esri.sde.sdk.client.SePEUnit
Retrieve's a unit's conversion factor.
getUser() - Method in class com.esri.sde.sdk.client.SeConnection
Returns the name of the ArcSDE user establishing the connection.
getUserName() - Method in class com.esri.sde.sdk.client.SeLayer.SeLayerLock
Returns the user name.
getUserName() - Method in class com.esri.sde.sdk.client.SeVersion.SeVersionLock
Returns the user name.
getUserName() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Returns the user name.
getUserNames() - Method in class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
Returns an array of user names.
getUsers() - Method in class com.esri.sde.sdk.client.SeInstance
Returns a list of user information connected to ArcSde instance.
getValue() - Method in class com.esri.sde.sdk.client.SePEParameters
Retrieve a parameter's value.
getValue() - Method in class com.esri.sde.sdk.client.SeMetaData
Returns the metadata object property value.
getValues() - Method in class com.esri.sde.sdk.client.SeLocator
Returns the locator property values.
getVariables() - Method in class com.esri.sde.sdk.client.SeInstance
Returns the ArcSde instance environment variables list.
getVariant() - Method in class com.esri.sde.sdk.client.SeLocale
Returns the name of the locale variant.
getVersionId() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
Returns the version id.
getVersionList(String) - Method in class com.esri.sde.sdk.client.SeConnection
Returns an array of SeVersion objects containing information for version filtered by optional where clause.
getVersionLocks() - Method in class com.esri.sde.sdk.client.SeInstance
Returns a list of version locks in use.
getWhere() - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Returns the where clause in the construct.
getWriteCount() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Returns the total number of writes by the server process.
getX() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns the X coordinate value.
getXOffset() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation x offset.
getXYCRound() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the xy CRound value for this coordinate reference object.
getXYEnvelope() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the the range of X/Y values for the coordinate reference object based upon the false origin/units values.
getXYHalfSU() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the xy HalfSU for this coordinate reference object.
getXYs() - Method in class com.esri.sde.sdk.geom.SeLinestring
getXYs() - Method in class com.esri.sde.sdk.geom.SePolygon
getXYUnits() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the xy scale factor
getXYUnits() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the xy scale factor for this coordinate reference object.
getY() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns the Y coordinate value.
getYOffset() - Method in class com.esri.sde.sdk.client.SeShapeAnno
Returns the annotation y offset.
getZ() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns the Z coordinate value.
getZ() - Method in class com.esri.sde.sdk.geom.SePoint
getZCRound() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the z CRound for this coordinate reference object.
getZHalfSU() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the z HalfSU for this coordinate reference object.
getZRange() - Method in class com.esri.sde.sdk.client.SeShape
Returns the range of elevation values of a shape.
getZRange(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns the range of elevation values of a shape part.
getZs() - Method in class com.esri.sde.sdk.geom.SeLinestring
getZs() - Method in class com.esri.sde.sdk.geom.SePolygon
getZUnits() - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Returns the z-offset's scale factor.
getZUnits() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the z scale factor for this coordinate reference object.
grantAccess(int, boolean, String) - Method in class com.esri.sde.sdk.client.SeLayer
Grants specified privileges to the specified user.
grantAccess(int, boolean, String) - Method in class com.esri.sde.sdk.client.SeTable
Grants specified privileges to the specified user.
grantAccess(SeConnection, String, String) - Static method in class com.esri.sde.sdk.client.SeLog
Grants access for a specified user to an owner's logfiles.
GSIZE_MULT - Static variable in class com.esri.sde.sdk.client.SeLayer

H

hasAnno() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if a layer has annotation.
hasAnno() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape has annotation.
hasCad() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape has cad.
hasCAD() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer allows CAD.
hasColumns() - Method in class com.esri.sde.sdk.client.SeRow
Returns true if the row has column definitions set.
hasLayer() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if the registered table has a spatial column.
hasLocator() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if the registered table has locator.
hasSpatialIndex() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer has spatial index.
HORIZON_DELTA - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
horizon() - Method in class com.esri.sde.sdk.client.SePEProjection

I

importDbtune(String) - Method in class com.esri.sde.sdk.client.SeConnection
Imports the data to ArcSde DBTUNE table.
init(int, int) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called to indicate what geometry type.
inProgress() - Method in class com.esri.sde.sdk.client.SeStreamOp
Determines if the stream operation is in use.
insertPart(int, SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Inserts all of the parts of a given shape into the calling shape at the specified part index.
interior() - Method in class com.esri.sde.sdk.geom.SeGeometry
interior() - Method in class com.esri.sde.sdk.geom.SeLinestring
The exterior of a geometry if all space not occupied by the geometry.
interior() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
interior() - Method in class com.esri.sde.sdk.geom.SePolygon
The exterior of a geometry if all space not occupied by the geometry.
interior() - Method in interface com.esri.sde.sdk.geom.Geometry
The exterior of a geometry if all space not occupied by the geometry.
interior() - Method in class com.esri.sde.sdk.geom.SePoint
The exterior of a geometry if all space not occupied by the geometry.
interiorRingN(int) - Method in interface com.esri.sde.sdk.geom.Polygon
Returns the nth interior ring of a polygon as a linestring.
interiorRingN(int) - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the nth interior ring of a polygon as a linestring.
interpolateByMeasures(double) - Method in class com.esri.sde.sdk.client.SeShape
Interpolates the shape by adding points based on measure deltas.
intersect(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the intersection of two geometries doesn’t result in an empty set; otherwise, returns f (FALSE).
intersect(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the intersection of two geometries doesnÆt result in an empty set; otherwise, returns f (FALSE).
intersect(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns the intersection (logical AND NOT of space) of two shapes.
intersection(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Intersection takes two geometry objects and returns the intersection set as a geometry object.
intersection(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Intersection takes two geometry objects and returns the intersection set as a geometry object.
intoTable(String, String[]) - Method in class com.esri.sde.sdk.client.SeInsert
Prepares to insert a row into a DBMS table.
inv() - Method in class com.esri.sde.sdk.client.SePEProjection
is3D() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer allows z-coordinates.
is3D() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape has an elevation array.
is3D() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns TRUE if the point has a coordinate in the third dimension.
is3D() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
is3D() - Method in class com.esri.sde.sdk.geom.SePoint
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
isAccepting() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
Returns true if ArcSde instance is accepting connections.
isBlocking() - Method in class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
Returns true if ArcSde instance is blocking connections.
isCaseSensitive - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is case sensitive.
isCaseSensitiveInComparison - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is case sensitive for comparisons.
isClosed() - Method in class com.esri.sde.sdk.client.SeConnection
Returns TRUE if the connection has been closed, FALSE otherwise.
isClosed() - Method in class com.esri.sde.sdk.geom.SeCurve
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isClosed() - Method in class com.esri.sde.sdk.geom.SeLinestring
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isClosed() - Method in interface com.esri.sde.sdk.geom.Curve
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isClosed() - Method in class com.esri.sde.sdk.geom.SeMultiCurve
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isClosed() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isClosed() - Method in interface com.esri.sde.sdk.geom.MultiCurve
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
isContaining(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the primary shape wholly contains the secondary shape.
isCrossing(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.
isDisjoint(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the intersection of two shapes is empty.
isEmpty() - Method in class com.esri.sde.sdk.client.SeExtent
Returns true if the extent is considered empty.
isEmpty() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEmpty() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEmpty() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEmpty() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEmpty() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns true if given envelope is empty.
isEmpty() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEmpty() - Method in class com.esri.sde.sdk.geom.SePoint
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
isEqual(SeCoordinateReference) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
isEqual(SeCoordRef) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns true if both coordinate reference objects are equal.
isEqual(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the two supplied shapes are identical.
isHidden() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if the registered table is hidden.
isLine() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer has line shapes.
isLine() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape is type line.
isLoadOnly() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer is in load-only mode.
isMeasured() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer allows measures.
isMeasured() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape has a measure array.
isMeasured() - Method in class com.esri.sde.sdk.client.SDEPoint
Returns TRUE if the point has a valid measure value.
isMeasured() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMeasured() - Method in class com.esri.sde.sdk.geom.SePoint
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
isMultiPart() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer has multipart enabled.
isMultiPart() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape has multiple parts.
isMultiVersion() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if the registered is a multiversioned table.
isNil() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape is nil(empty).
isOpen() - Method in class com.esri.sde.sdk.client.SeState
Returns TRUE if state is open.
isOverlapping(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.
isPasswordCaseSensitive - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is case sensitive for password.
isPersistent() - Method in class com.esri.sde.sdk.client.SeLog
Returns true if the logfile is persistent.
isPoint() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer has point shapes.
isPoint() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape is type point.
isPoly() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer has polygon shapes.
isPolygon() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape is type polygon.
isRing() - Method in class com.esri.sde.sdk.geom.SeCurve
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
isRing() - Method in class com.esri.sde.sdk.geom.SeLinestring
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
isRing() - Method in interface com.esri.sde.sdk.geom.Curve
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
isRing() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimple() - Method in class com.esri.sde.sdk.geom.SePoint
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
isSimpleLine() - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the supplied shape is type simple line.
isStorageExternal() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layers storage type is external.
isStorageNormalized() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer’s storage type is normalized.
isStorageSdeBinary() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer’s storage type is sdebinary.
isStorageSQL() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer’s storage type is SQL or well-known text.
isStorageWKB() - Method in class com.esri.sde.sdk.client.SeLayer
Returns TRUE if the layer’s storage type is well-known binary.
isTouching(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if the two supplied shapes hsare a common boundary.
isUserCaseSensitive - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is case sensitive for user.
isValid() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).
isValid() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).
isView() - Method in class com.esri.sde.sdk.client.SeRegistration
Returns TRUE if the registered table is a view.
isWithin(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns TRUE if this shape is wholly contained within secondaryShape.

K

killAllProcesses(String) - Method in class com.esri.sde.sdk.client.SeInstance
Kills all ArcSde server processes.
killProcess(int, String) - Method in class com.esri.sde.sdk.client.SeInstance
Kills the specified ArcSde server process.

L

lastInsertedRowId() - Method in class com.esri.sde.sdk.client.SeInsert
Returns the row id for the row most recently having an INSERT executed on this stream operation.
length() - Method in class com.esri.sde.sdk.geom.SeCurve
Returns the length of a linestring or multilinestring.
length() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the length of a linestring or multilinestring.
length() - Method in interface com.esri.sde.sdk.geom.Curve
Returns the length of a linestring or multilinestring.
length() - Method in class com.esri.sde.sdk.geom.SeMultiCurve
Returns the length of a linestring or multilinestring.
length() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Returns the length of a linestring or multilinestring.
length() - Method in interface com.esri.sde.sdk.geom.MultiCurve
Returns the length of a linestring or multilinestring.
Linestring - interface com.esri.sde.sdk.geom.Linestring.
The Linestring interface defines the methods for a class whose instances create a geometric object that is a subtype of a Curve with linear interpolation between points.
LINESTRING_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
LINESTRINGM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
LINESTRINGZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
LINESTRINGZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
locateAlong(double) - Method in class com.esri.sde.sdk.geom.SeGeometry
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateAlong(double) - Method in class com.esri.sde.sdk.geom.SeLinestring
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateAlong(double) - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateAlong(double) - Method in class com.esri.sde.sdk.geom.SePolygon
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateAlong(double) - Method in interface com.esri.sde.sdk.geom.Geometry
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateAlong(double) - Method in class com.esri.sde.sdk.geom.SePoint
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
locateBetween(double, double) - Method in class com.esri.sde.sdk.geom.SeGeometry
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateBetween(double, double) - Method in class com.esri.sde.sdk.geom.SeLinestring
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateBetween(double, double) - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateBetween(double, double) - Method in class com.esri.sde.sdk.geom.SePolygon
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateBetween(double, double) - Method in interface com.esri.sde.sdk.geom.Geometry
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateBetween(double, double) - Method in class com.esri.sde.sdk.geom.SePoint
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
locateTable(String, String) - Method in class com.esri.sde.sdk.client.SeLocator
Locates a table and either inserts results into output table or updates the output table.
lock() - Method in class com.esri.sde.sdk.client.SeState
Locks a state.
lock(int) - Method in class com.esri.sde.sdk.client.SeObjectLock
Locks the object.
lock(int) - Method in class com.esri.sde.sdk.client.SeLayer
Locks an ArcSde layer.
lock(int) - Method in class com.esri.sde.sdk.client.SeVersion
Locks a version.
lock(int) - Method in class com.esri.sde.sdk.client.SeTable
Locks the table.
lockArea(int, SeExtent) - Method in class com.esri.sde.sdk.client.SeLayer
Locks the specified area within ArcSde layer.
longValue() - Method in class com.esri.sde.sdk.client.SeObjectId
Returns the numerical representation of the ID as a long.

M

m() - Method in class com.esri.sde.sdk.geom.SePoint
Returns the measure value of a point.
makeName() - Method in class com.esri.sde.sdk.client.SeLog
Creates a logfile name that does not currently exist.
makeNil() - Method in class com.esri.sde.sdk.client.SeShape
Makes this shape a nil shape.
MAX_NAME_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
mCoord - Variable in class com.esri.sde.sdk.client.SePEHorizon
merge(SeObjectId, SeObjectId) - Method in class com.esri.sde.sdk.client.SeState
Merges two states to form a new state.
METHOD_AI - Static variable in class com.esri.sde.sdk.client.SeFilter
Area Intersect search method.
METHOD_AI_NO_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Area intersect and no edge touch search method.
METHOD_AI_OR_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Area intersect or edge touch search method.
METHOD_CBM - Static variable in class com.esri.sde.sdk.client.SeFilter
Calculus based search method.
METHOD_COMMON - Static variable in class com.esri.sde.sdk.client.SeFilter
Common edge/line search method.
METHOD_CP - Static variable in class com.esri.sde.sdk.client.SeFilter
Common point search method.
METHOD_CP_OR_LCROSS - Static variable in class com.esri.sde.sdk.client.SeFilter
Common point or Line cross search method.
METHOD_ENVP - Static variable in class com.esri.sde.sdk.client.SeFilter
Envelopes overlap search method.
METHOD_ENVP_BY_GRID - Static variable in class com.esri.sde.sdk.client.SeFilter
Envelopes overlap search method.
METHOD_ET_OR_AI - Static variable in class com.esri.sde.sdk.client.SeFilter
Edge touch or area intersect search method.
METHOD_ET_OR_II - Static variable in class com.esri.sde.sdk.client.SeFilter
Edge touch or interior intersect search method.
METHOD_IDENTICAL - Static variable in class com.esri.sde.sdk.client.SeFilter
Identical search method.
METHOD_II - Static variable in class com.esri.sde.sdk.client.SeFilter
Interior Intersect search method.
METHOD_II_NO_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Interior intersect and no edge touch search method.
METHOD_II_OR_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Interior intersect or edge touch search method.
METHOD_LCROSS - Static variable in class com.esri.sde.sdk.client.SeFilter
Line Cross search method.
METHOD_LCROSS_OR_CP - Static variable in class com.esri.sde.sdk.client.SeFilter
Line cross or common point search method.
METHOD_PC - Static variable in class com.esri.sde.sdk.client.SeFilter
Primary shape contained in secondary shape search method.
METHOD_PC_NO_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Primary contained and no edge touch method.
METHOD_PIP - Static variable in class com.esri.sde.sdk.client.SeFilter
First point in primary in secondary shape search method.
METHOD_SC - Static variable in class com.esri.sde.sdk.client.SeFilter
Secondary contained in primary search method.
METHOD_SC_NO_ET - Static variable in class com.esri.sde.sdk.client.SeFilter
Secondary contained and no edge touch method.
mInclusive - Variable in class com.esri.sde.sdk.client.SePEHorizon
mKind - Variable in class com.esri.sde.sdk.client.SePEHorizon
mNump - Variable in class com.esri.sde.sdk.client.SePEHorizon
modifyLock(int, SeExtent) - Method in class com.esri.sde.sdk.client.SeLayer
Modifies an existing lock on an area or the entire layer.
movePoint(SDEPoint, SDEPoint) - Method in class com.esri.sde.sdk.client.SeShape
Moves all occurrences of a single point to a new location.
mReplicate - Variable in class com.esri.sde.sdk.client.SePEHorizon
msize - Variable in class com.esri.sde.sdk.client.SePEHorizon
MultiCurve - interface com.esri.sde.sdk.geom.MultiCurve.
The MultiCurve interface defines the methods for the subclasses of MultiCurve.
MultiLinestring - interface com.esri.sde.sdk.geom.MultiLinestring.
The MultiLinestring interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Linestring.
MULTILINESTRING_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTILINESTRINGM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTILINESTRINGZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTILINESTRINGZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MultiPoint - interface com.esri.sde.sdk.geom.MultiPoint.
The MultiPoint interface defines the methods for a class whose instances create a collection of geometic objects whose elements are instances of Point.
MULTIPOINT_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOINTM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOINTZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOINTZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MultiPolygon - interface com.esri.sde.sdk.geom.MultiPolygon.
The MultiPolygon interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Polygons.
MULTIPOLYGON_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOLYGONM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOLYGONZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MULTIPOLYGONZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
MultiSurface - interface com.esri.sde.sdk.geom.MultiSurface.
The MultiSurface interface defines the methods for the subclasses of MultiSurface.

N

newPart(int) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called whenever a new part is begun.
newPoint(double, double) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called whenever a new point is passed back.
newSubPart(int) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called whenever a new sub-part is begun.
NULPT - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
numColumns() - Method in class com.esri.sde.sdk.client.SeQueryInfo
Returns the number of columns set on the queryinfo object.
numGeometries() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Numgeometries takes a collection and returns the number of geometries in the collection.
numGeometries() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
Numgeometries takes a collection and returns the number of geometries in the collection.
numGeometries() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Numgeometries takes a collection and returns the number of geometries in the collection.
numGeometries() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
Numgeometries takes a collection and returns the number of geometries in the collection.
numGeometries() - Method in interface com.esri.sde.sdk.geom.GeometryCollection
Numgeometries takes a collection and returns the number of geometries in the collection.
numInteriorRings() - Method in interface com.esri.sde.sdk.geom.Polygon
Numinteriorrings takes a polygon and returns the number of its interior rings.
numInteriorRings() - Method in class com.esri.sde.sdk.geom.SePolygon
Numinteriorrings takes a polygon and returns the number of its interior rings.
numPoints() - Method in class com.esri.sde.sdk.geom.SeGeometry
Returns the number of points in a geometry.
numPoints() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the number of points in a geometry.
numPoints() - Method in class com.esri.sde.sdk.geom.SeGeometryCollection
Returns the number of points in a geometry.
numPoints() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the number of points in a geometry.
numPoints() - Method in interface com.esri.sde.sdk.geom.Linestring
Returns the number of points in a geometry.
numPoints() - Method in interface com.esri.sde.sdk.geom.Geometry
Returns the number of points in a geometry.
numPoints() - Method in class com.esri.sde.sdk.geom.SePoint
Returns the number of points in a geometry.

O

open() - Method in class com.esri.sde.sdk.client.SeState
Opens a state.
openLog(int) - Method in class com.esri.sde.sdk.client.SeLog
Opens a logfile for read or write access.
ORDER_ATTRIBUTE_FIRST - Static variable in class com.esri.sde.sdk.client.SeFilter
Describes the ShapeIdFilter types.
ORDER_OPTIMIZE - Static variable in class com.esri.sde.sdk.client.SeFilter
ORDER_SPATIAL_FIRST - Static variable in class com.esri.sde.sdk.client.SeFilter
overlap(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).
overlap(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).
overlay(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Overlays two shapes.

P

partOffsets(int[]) - Method in interface com.esri.sde.sdk.geom.GeometryFactory
This method is called to indicate what geometry type.
pause(String) - Method in class com.esri.sde.sdk.client.SeInstance
Pauses, or disallows further connections to, the ArcSde instance.
pcsconstfunc() - Method in class com.esri.sde.sdk.client.SePEProjection
PE_HORIZON_REPLICATE_BOTH - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
PE_HORIZON_REPLICATE_LEFT - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
PE_HORIZON_REPLICATE_NONE - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
PE_HORIZON_REPLICATE_RIGHT - Static variable in interface com.esri.sde.sdk.client.SePEHorizonFunction
perimeter() - Method in class com.esri.sde.sdk.geom.SeSurface
Returns the length of the perimeter of a surface.
perimeter() - Method in interface com.esri.sde.sdk.geom.Surface
Returns the length of the perimeter of a surface.
perimeter() - Method in class com.esri.sde.sdk.geom.SePolygon
Returns the length of the perimeter of a surface.
Point - interface com.esri.sde.sdk.geom.Point.
The Point interface defines the methods for a class whose instances create a zero-dimensional geometric object which represents a single location in coordinate space.
POINT_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
POINTM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
pointN(int) - Method in class com.esri.sde.sdk.geom.SeLinestring
Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.
pointN(int) - Method in interface com.esri.sde.sdk.geom.Linestring
Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.
pointOnSurface() - Method in interface com.esri.sde.sdk.geom.MultiSurface
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
pointOnSurface() - Method in class com.esri.sde.sdk.geom.SeSurface
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
pointOnSurface() - Method in interface com.esri.sde.sdk.geom.Surface
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
pointOnSurface() - Method in class com.esri.sde.sdk.geom.SeMultiSurface
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
pointOnSurface() - Method in class com.esri.sde.sdk.geom.SePolygon
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
pointOnSurface() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
POINTZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
POINTZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
Polygon - interface com.esri.sde.sdk.geom.Polygon.
The Polygon interface defines the methods for a class whose instances create a geometric object which is defined by 1 exterior boundary and 0 or more interior boundaries.
POLYGON_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
POLYGONM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
POLYGONZ_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
POLYGONZM_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
prepareQuery() - Method in class com.esri.sde.sdk.client.SeQuery
Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause.
prepareQueryInfo(SeQueryInfo) - Method in class com.esri.sde.sdk.client.SeQuery
Initializes a stream with a query using an SeQueryInfo object.The SE_QUERYINFO structure includes parameters to define tables, columns, where clause, query type, ORDER BY clauses and DBMS hints.
prepareQueryLogfile(String) - Method in class com.esri.sde.sdk.client.SeQuery
Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause.
prepareSql(String) - Method in class com.esri.sde.sdk.client.SeQuery
Tells the server to prepare the sql statement for execution.

Q

qualifyColumn(String) - Method in class com.esri.sde.sdk.client.SeTable
Returns a qualified column name.

R

removeRowLocks(int, SeObjectId[], SeObjectId) - Method in class com.esri.sde.sdk.client.SeTable
Deletes one or more row locks.
rename(String) - Method in class com.esri.sde.sdk.client.SeVersion
Renames a version.
rename(String) - Method in class com.esri.sde.sdk.client.SeTable
Renames the table.
replacePart(int, SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Replaces a shape part with another shape.
replacePathWithArc(SDEPoint, SDEPoint, SDEPoint, double, int) - Method in class com.esri.sde.sdk.client.SeShape
Replaces a line or path with a circular arc represented as a series of vectors.
reset() - Method in class com.esri.sde.sdk.client.SeRow
Empties the row by clearing the column values.
restoreRows(String, SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeUpdate
Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.
restoreRows(String, SeObjectId[]) - Method in class com.esri.sde.sdk.client.SeDelete
Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.
resume(String) - Method in class com.esri.sde.sdk.client.SeInstance
Resumes, or allows connections to, the ArcSde instance.
returnIds(SeObjectId, int) - Method in class com.esri.sde.sdk.client.SeTable
Sends a set of unused id values back to the server.
revokeAccess(int, String) - Method in class com.esri.sde.sdk.client.SeLayer
Revokes specified privileges from the specified user.
revokeAccess(int, String) - Method in class com.esri.sde.sdk.client.SeTable
Revokes specified privileges from the specified user.
revokeAccess(SeConnection, String, String) - Static method in class com.esri.sde.sdk.client.SeLog
Revokes access for a specified user to an owner's logfiles.
RM_AREA_INTERSECT - Static variable in class com.esri.sde.sdk.client.SeShape
AREA_INTERSECTION Shape Relationship returned in findRelation.
RM_BOUNDARY_INTERSECT - Static variable in class com.esri.sde.sdk.client.SeShape
BOUNDARY INTERSECTION Shape Relationship returned in findRelation.
RM_CBOUND_DIFF - Static variable in class com.esri.sde.sdk.client.SeShape
COMMON EDGE OPPOSITE DIRECTION Shape Relationship returned in findRelation.
RM_CBOUND_SAME - Static variable in class com.esri.sde.sdk.client.SeShape
COMMON EDGE SAME DIRECTION Shape Relationship returned in findRelation.
RM_COMMON_POINT - Static variable in class com.esri.sde.sdk.client.SeShape
COMMON_POINT Shape Relationship returned in findRelation.
RM_EMBEDDED_POINT - Static variable in class com.esri.sde.sdk.client.SeShape
VERTICE EMBEDDED IN LINE Shape Relationship returned in findRelation.
RM_IDENTICAL - Static variable in class com.esri.sde.sdk.client.SeShape
PRIMARY == SECONDARY Shape Relationship returned in findRelation.
RM_INTERIOR_INTERSECT - Static variable in class com.esri.sde.sdk.client.SeShape
INTERIOR INTERSECTION Shape Relationship returned in findRelation.
RM_LINE_CROSS - Static variable in class com.esri.sde.sdk.client.SeShape
LINE CROSS Shape Relationship returned in findRelation.
RM_PARALLEL_OVERLAPPING - Static variable in class com.esri.sde.sdk.client.SeShape
PARALLEL OVERLAPPING LINES Shape Relationship returned in findRelation.
RM_PRIM_CONTAINED - Static variable in class com.esri.sde.sdk.client.SeShape
PRIMARY CONTAINED BY SECONDARY Shape Relationship returned in findRelation.
RM_PRIM_LEP_INTERIOR - Static variable in class com.esri.sde.sdk.client.SeShape
PRIMARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.
RM_SEC_CONTAINED - Static variable in class com.esri.sde.sdk.client.SeShape
SECONDARY CONTAINED BY PRIMARY Shape Relationship returned in findRelation.
RM_SEC_LEP_INTERIOR - Static variable in class com.esri.sde.sdk.client.SeShape
SECONDARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.
RM_TESTS_PERFORMED - Static variable in class com.esri.sde.sdk.client.SeShape
Any tests performed? Shape Relationship returned in findRelation.
rollbackTransaction() - Method in class com.esri.sde.sdk.client.SeConnection
Rollback the current transaction.

S

SDEPoint - class com.esri.sde.sdk.client.SDEPoint.
Represents the read-only SDE point that can be returned from or used as an argument to SeShape methods.
SDEPoint(double, double) - Constructor for class com.esri.sde.sdk.client.SDEPoint
Constructs a point with x,y world coordinates.
SDEPoint(double, double, double) - Constructor for class com.esri.sde.sdk.client.SDEPoint
Constructs a point with x, y, z world coordinates.
SDEPoint(double, double, double, double) - Constructor for class com.esri.sde.sdk.client.SDEPoint
Constructs a point with x,y,z world coordinates and measure m.
SE_ADT_DATATYPE_NOT_SUPPORTED - Static variable in class com.esri.sde.sdk.client.SeError
SE_ALL_SLIVERS - Static variable in class com.esri.sde.sdk.client.SeError
SE_ALL_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_AMBIGUOUS_NIL_SHAPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_ANNO_ALIGN_AUTOMATIC - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_ALIGN_CENTER - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_ALIGN_DEFAULT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_ALIGN_LEFT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_ALIGN_RIGHT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_CENTER_CENTER - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_CENTER_LEFT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_CENTER_RIGHT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_LOWER_CENTER - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_LOWER_LEFT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_LOWER_RIGHT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_UPPER_CENTER - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_UPPER_LEFT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_ANNO_UPPER_RIGHT - Static variable in class com.esri.sde.sdk.client.SeShapeAnno
SE_APP_GEODATABASE_ID - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_APP_NONE_ID - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_APP_SDE_INTERNAL_ID - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_APP_WILD_ID - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_AREA_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_ARRAY_BYTES_EXCEEDED - Static variable in class com.esri.sde.sdk.client.SeError
SE_ATTR_CONV_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_ATTR_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_ATTRIBUTE_FIRST - Static variable in class com.esri.sde.sdk.client.SeQuery
SE_AVERAGE_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_BASE_STATE_ID - Static variable in class com.esri.sde.sdk.client.SeState
SE_BASIC_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_BINARY_CONV_NO_COLUMNS_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_BINARY_TOO_SMALL - Static variable in class com.esri.sde.sdk.client.SeError
SE_BIND_CONFLICT - Static variable in class com.esri.sde.sdk.client.SeError
SE_BLOB_SIZE_TOO_LARGE - Static variable in class com.esri.sde.sdk.client.SeError
SE_BUILD_POLYGONS_FROM_ALL_RINGS - Static variable in class com.esri.sde.sdk.client.SeShape
Uses all segments in the shape to create a polygon.
SE_BUILD_POLYGONS_FROM_CLOCKWISE_RINGS - Static variable in class com.esri.sde.sdk.client.SeShape
Uses only the clockwise lines in the shape to create a polygon.
SE_BUILD_POLYGONS_FROM_COUNTERCLOCKWISE_RINGS - Static variable in class com.esri.sde.sdk.client.SeShape
Uses only the counterclockwise lines in the shape to create a polygon.
SE_BUILD_SIMPLELINES - Static variable in class com.esri.sde.sdk.client.SeShape
Converts a set of spagetti lines into a multipart simple line shape.
SE_CAD_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_CANT_TRIM_RECONCILED_STATE - Static variable in class com.esri.sde.sdk.client.SeError
SE_COLUMN_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_COLUMN_NOT_BOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_CONNECTION_IN_USE - Static variable in class com.esri.sde.sdk.client.SeError
SE_CONNECTION_LOCKED - Static variable in class com.esri.sde.sdk.client.SeError
SE_CONNECTIONS_EXCEEDED - Static variable in class com.esri.sde.sdk.client.SeError
SE_COORD_OUT_OF_BOUNDS - Static variable in class com.esri.sde.sdk.client.SeError
SE_CORRIDOR_OUT_OF_BOUNDS - Static variable in class com.esri.sde.sdk.client.SeError
SE_COUNT_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_CREATE_AND_WRITE_MODE - Static variable in class com.esri.sde.sdk.client.SeLog
Opens the logfile for WRITE operations.
SE_DB_IO_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_DBMS_DOES_NOT_SUPPORT - Static variable in class com.esri.sde.sdk.client.SeError
SE_DBMS_FUNCTION_ABS - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the absolute value of x.
SE_DBMS_FUNCTION_ACOS - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the arccosine of x.
SE_DBMS_FUNCTION_ASCII - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return decimal representation of a string.
SE_DBMS_FUNCTION_ASIN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the arcsine of x.
SE_DBMS_FUNCTION_ATAN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the arctangent of x.
SE_DBMS_FUNCTION_AVG - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the average value of n.
SE_DBMS_FUNCTION_BITLEN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the string length in bits.
SE_DBMS_FUNCTION_CAST - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that converts one data type to another one.
SE_DBMS_FUNCTION_CEIL - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return smallest integer >= n.
SE_DBMS_FUNCTION_CHR - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the character of the binary equivalent.
SE_DBMS_FUNCTION_COALSCE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the first NOT_NULL value.
SE_DBMS_FUNCTION_CONCAT - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will concatenate string1 with string2.
SE_DBMS_FUNCTION_CONVERT - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the convert function.
SE_DBMS_FUNCTION_COS - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return cosine of x.
SE_DBMS_FUNCTION_COSH - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return hyperbolic cosine of x.
SE_DBMS_FUNCTION_COUNT - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the number of rows in the query.
SE_DBMS_FUNCTION_EXTRACT - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return a numeric value of a date.
SE_DBMS_FUNCTION_FLOOR - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return largest integer <= n.
SE_DBMS_FUNCTION_HEX - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the hexadecimal representation of a number.
SE_DBMS_FUNCTION_LENGTH - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return length in char.
SE_DBMS_FUNCTION_LENGTHB - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return length in bytes.
SE_DBMS_FUNCTION_LN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return natural logarithm.
SE_DBMS_FUNCTION_LOG - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return logarithm of base n.
SE_DBMS_FUNCTION_LOG10 - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return logarithm of base 10.
SE_DBMS_FUNCTION_LOWERCASE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that converts string to lower case.
SE_DBMS_FUNCTION_LTRIM - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will remove spaces from the left.
SE_DBMS_FUNCTION_MAX - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the maximum value of expression.
SE_DBMS_FUNCTION_MIN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the minimum value of expression.
SE_DBMS_FUNCTION_MOD - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the remainder.
SE_DBMS_FUNCTION_POSITION - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return a numeric value that indicates the starting position of the search string in the source string.
SE_DBMS_FUNCTION_POWER - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the n power of m.
SE_DBMS_FUNCTION_ROUND - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will round a real nember to specified decimal digits.
SE_DBMS_FUNCTION_RTRIM - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will remove trailing from the right.
SE_DBMS_FUNCTION_SIGN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return -1 for negative, 0 for zero and 1 for positive.
SE_DBMS_FUNCTION_SIN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return sine of x.
SE_DBMS_FUNCTION_SINH - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return hyperbolic sine of x.
SE_DBMS_FUNCTION_SOUNDEX - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return a string containing the phonetic representation of string2.
SE_DBMS_FUNCTION_STDDEV - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will calculate the standard deviation.
SE_DBMS_FUNCTION_SUBSTR - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return a portion of a string.
SE_DBMS_FUNCTION_SUBSTRB - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return a portion of bytes.
SE_DBMS_FUNCTION_SUM - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the sum of values of n numbers.
SE_DBMS_FUNCTION_TAN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return tangent of x.
SE_DBMS_FUNCTION_TANH - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return hyperbolic tangent of x.
SE_DBMS_FUNCTION_TRANSLATE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return string with each char in 'from' string replaced by its corresponding char in 'to' string.
SE_DBMS_FUNCTION_TRIM - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will strip the leading, trailing * or both from the string.
SE_DBMS_FUNCTION_TRUNC - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will truncate n to m decimal place.
SE_DBMS_FUNCTION_UPPERCASE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that converts string to upper case.
SE_DBMS_FUNCTION_USER - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will return the current user name
SE_DBMS_FUNCTION_VARIANCE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Id of the function that will calculate the variance.
SE_DBMS_IS_ARCINFO - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is arcinfo.
SE_DBMS_IS_ARCSERVER - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is arcserver.
SE_DBMS_IS_DB2 - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is DB2.
SE_DBMS_IS_DB2_EXT - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is DB2 extended server.
SE_DBMS_IS_INFORMIX - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is informix.
SE_DBMS_IS_IUS - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is informix universal server.
SE_DBMS_IS_JET - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is jet.
SE_DBMS_IS_ORACLE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is oracle.
SE_DBMS_IS_OTHER - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is other.
SE_DBMS_IS_SQLSERVER - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is microsoft sqlserver.
SE_DBMS_IS_SYBASE - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is sybase.
SE_DBMS_IS_UNKNOWN - Static variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS is unknown.
SE_DBMS_OBJECTS_NOT_SUPPORTED - Static variable in class com.esri.sde.sdk.client.SeError
SE_DEFAULT_STATE_ID - Static variable in class com.esri.sde.sdk.client.SeState
SE_DEFAULT_VERSION_NAME - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_DELETE_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_DELETE_PRIVILEGE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_DISTINCT_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_DUPLICATE_ARC - Static variable in class com.esri.sde.sdk.client.SeError
SE_ERROR_LOADING_SSA - Static variable in class com.esri.sde.sdk.client.SeError
SE_ETYPE_CHANGED - Static variable in class com.esri.sde.sdk.client.SeError
SE_ETYPE_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_FAILURE - Static variable in class com.esri.sde.sdk.client.SeError
SE_FAILURE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_FID_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_FID_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_FILE_IO_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_FILE_OBJECT_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_FILE_OBJECT_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_FINISHED - Static variable in class com.esri.sde.sdk.client.SeError
SE_FINISHED - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_FUNCTION_SEQUENCE_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_GEOMETRYCOL_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_GSIZE_TOO_SMALL - Static variable in class com.esri.sde.sdk.client.SeError
SE_INCOMPATIBLE_COORDREFS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INCOMPATIBLE_INSTANCE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INCOMPATIBLE_SHAPES - Static variable in class com.esri.sde.sdk.client.SeError
SE_INDEX_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INDEX_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_INSERT_PRIVILEGE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_INSTANCE_ALREADY_RUNNING - Static variable in class com.esri.sde.sdk.client.SeError
SE_INSTANCE_AREA_READ_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
SE_INSTANCE_AREA_WRITE_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
SE_INSTANCE_AUTO_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
SE_INSTANCE_IS_READ_ONLY - Static variable in class com.esri.sde.sdk.client.SeError
SE_INSTANCE_LAYER_READ_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
SE_INSTANCE_LAYER_WRITE_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
SE_INSTANCE_NOT_AVAILABLE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INSTANCE_TOO_EARLY - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ALTER_OPERATION - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ANNO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_BIN_FUNCTION - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_BYTE_ORDER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_CAD_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COLUMN_DEF - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COLUMN_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COLUMN_VALUE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COMPRESSION_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_CONNECTION - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COORDREF_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COORDSYS_DESC - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_COORDSYS_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_DATA_SOURCE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_DATABASE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_DBA_PASSWORD - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_DBMS_LOGIN - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_DISTINCT_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_END_PT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ENTITY_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ENVELOPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ETYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_EXPORT_FILE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_EXTERNAL_LAYER_OPTION - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_FILE_PATH - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_FILEINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_FILEINFO_OBJECT_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_FILTER_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_FUNCTION_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_GEOGTRAN_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_GEOMETRY_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_GRANT_REVOKE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_GRIDSIZE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_IDENTIFIER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_INDEX_PARAM - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_INDEX_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_INDICATOR_VALUE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LAYER_KEYWORD - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LAYER_NAME - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LAYER_NUMBER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LAYERINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCATOR - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCATOR_CATEGORY - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCATOR_NAME - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCATOR_OBJECT_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCATOR_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOCK_MODE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_LOGINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_METADATA_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_METADATA_OBJECT_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_METADATA_RECORD_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_MID_PT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_MVTABLE_INDEX - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_NOT_NULL - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_NUM_MEASURES - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_NUM_OF_PTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_NUM_PARTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_OBJECTLOCKINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_OUTER_SHELL - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_PARAM_VALUE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_PART_OFFSET - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_PART_SEPARATOR - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_PARTNUM - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_POINTER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_POLYGON_CLOSURE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_QUERY_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_QUERYINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RADIUS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASBANDINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASCOLINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASFILTERINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTER_BITMAP - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTER_COLUMN - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTER_DATA - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTER_KEYWORD - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTER_NUMBER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERATTR_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERBAND_COLORMAP - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERBAND_NUMBER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERBAND_STATS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERCOLUMN_NUMBER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTERINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RASTILEINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_REGINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_REGISTERED_LAYER_OPTION - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_REGISTRATION_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_RELEASE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_ROW_ID_LAYER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SDEHOME - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SDO_GEOM_METADATA_OBJ - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SEARCH_METHOD - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SERVER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SHAPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SHAPE_BUF_SIZE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SHAPE_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SPATIAL_COL_NAME - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SPATIAL_COLUMN - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SPATIAL_CONSTRAINT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SPATIALREFINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SQL - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STATE_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STATEINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STATS_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STORAGE_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STREAM - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STREAM_SPEC - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_STREAM_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_SYSTEM_UNITS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_TRANSID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_UNITS - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_USER - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_VERSION_ID - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_VERSION_NAME - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_VERSIONINFO_OBJECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_VOLUME_INFO - Static variable in class com.esri.sde.sdk.client.SeError
SE_INVALID_WHERE - Static variable in class com.esri.sde.sdk.client.SeError
SE_IOMGR_NO_DBMS_CONNECT - Static variable in class com.esri.sde.sdk.client.SeError
SE_IOMGR_NOT_AVAILABLE - Static variable in class com.esri.sde.sdk.client.SeError
SE_IOMGR_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_IS_ALREADY_FETCHED - Static variable in class com.esri.sde.sdk.client.SeRow
SE_IS_NOT_NULL_VALUE - Static variable in class com.esri.sde.sdk.client.SeRow
SE_IS_NULL_VALUE - Static variable in class com.esri.sde.sdk.client.SeRow
SE_IS_REPEATED_FEATURE - Static variable in class com.esri.sde.sdk.client.SeRow
SE_LAYER_CACHE_FULL - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYER_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYER_INUSE - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYER_LOCKED - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYER_MISMATCH - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYER_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYERS_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_LAYERS_UPDATE_FAILED - Static variable in class com.esri.sde.sdk.client.SeError
SE_LICENSE_EXPIRED - Static variable in class com.esri.sde.sdk.client.SeError
SE_LICENSE_FAILURE - Static variable in class com.esri.sde.sdk.client.SeError
SE_LINE_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_LOAD_ONLY_LAYER - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOCATOR_DEFINED - Static variable in class com.esri.sde.sdk.client.SeLocator
SE_LOCATOR_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOCATOR_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOCATOR_TEMPLATE - Static variable in class com.esri.sde.sdk.client.SeLocator
SE_LOCATOR_VALIDATED - Static variable in class com.esri.sde.sdk.client.SeLocator
SE_LOCK_CONFLICT - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOCK_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOCK_POLICY - Static variable in class com.esri.sde.sdk.client.SeConnection
SeConnection object concurrency policy.
SE_LOG_DIFFERENCE - Static variable in class com.esri.sde.sdk.client.SeLog
Set operation that can be used when combining logfiles.
SE_LOG_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_FOR_LAYER - Static variable in class com.esri.sde.sdk.client.SeLog
SE_LOG_FOR_TABLE - Static variable in class com.esri.sde.sdk.client.SeLog
SE_LOG_INTERSECT - Static variable in class com.esri.sde.sdk.client.SeLog
Set operation that can be used when combining logfiles.
SE_LOG_IO_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_IS_OPEN - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_NOACCESS - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_NOTOPEN - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_PERSISTENT - Static variable in class com.esri.sde.sdk.client.SeLog
The logfile will not be deleted at the end of the user session.
SE_LOG_SYMDIFF - Static variable in class com.esri.sde.sdk.client.SeLog
Set operation that can be used when combining logfiles.
SE_LOG_SYSTABLES_CREATE_FAILED - Static variable in class com.esri.sde.sdk.client.SeError
SE_LOG_TEMPORARY - Static variable in class com.esri.sde.sdk.client.SeLog
The logfile will be deleted at the end of the user session.
SE_LOG_UNION - Static variable in class com.esri.sde.sdk.client.SeLog
Set operation that can be used when combining logfiles.
SE_LOGIN_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_MATCH_MEASURES - Static variable in class com.esri.sde.sdk.client.SeShape
Match the measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
SE_MATCH_ZEDS - Static variable in class com.esri.sde.sdk.client.SeShape
Match the Z coordinate values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
SE_MATCH_ZEDS_AND_MEASURES - Static variable in class com.esri.sde.sdk.client.SeShape
Match the z coordinate and measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
SE_MAX_ALIAS_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_ANNO_TEXT_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_COLUMN_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_COLUMNS - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_CONFIG_KEYWORD_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_DATABASE_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_DESCRIPTION_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_ENTITY_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_FEAT_CLASS_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_HINT_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_INDEX_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_INSTANCE_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_KEYWORD_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_MESSAGE_LENGTH - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_OWNER_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_PASSWORD_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_PATH_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_SCL_CODESIZE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_SERVER_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_MAX_TABLE_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_MAX_VERSION_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_METADATA_OBJECT_TYPE_TABLE - Static variable in class com.esri.sde.sdk.client.SeMetaData
SE_METADATA_RECORD_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_MIN_GRIDSIZE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_MIN_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_MODIFY_MODE - Static variable in class com.esri.sde.sdk.client.SeLog
Opens the logfile for WRITE operations.
SE_MOSAIC_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_MULTIPART_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_MULTIPLE_RASTER_COLS - Static variable in class com.esri.sde.sdk.client.SeError
SE_MULTIPLE_SPATIAL_COLS - Static variable in class com.esri.sde.sdk.client.SeError
SE_MVTABLE_CANT_BE_LOAD_ONLY - Static variable in class com.esri.sde.sdk.client.SeError
SE_NET_FAILURE - Static variable in class com.esri.sde.sdk.client.SeError
SE_NET_TIMEOUT - Static variable in class com.esri.sde.sdk.client.SeError
SE_NIL_SHAPE_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_NIL_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_NO_ACCESS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_ANNOTATION - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_CAD - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_COMMON_LINEAGE - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_COORDREF - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_CPGCVT - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_CPGHOME - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_DBTUNE_FILE - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_LAYER_SPECIFIED - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_LOCALIZED_MESSAGE - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_LOCKS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_PERMISSIONS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_REQUEST_RESULTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_REQUEST_STATUS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_ROWID_COLUMN - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_ROWS_DELETED - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_ROWS_UPDATED - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_SDE_ROWID_COLUMN - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_SHAPES - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_SPATIAL_INDEX - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_SPATIAL_MASKS - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_STATE_SET - Static variable in class com.esri.sde.sdk.client.SeError
SE_NO_TRACE_LIBRARY - Static variable in class com.esri.sde.sdk.client.SeError
SE_NORM_DIM_INFO_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_NORM_DIM_TAB_VALUE_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_NORMALIZE_VALUE_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_NOT_A_SELECT_STATEMENT - Static variable in class com.esri.sde.sdk.client.SeError
SE_NOT_IMPLEMENTED_YET - Static variable in class com.esri.sde.sdk.client.SeError
SE_NOT_IN_RASTER - Static variable in class com.esri.sde.sdk.client.SeError
SE_NOT_TABLE_OWNER - Static variable in class com.esri.sde.sdk.client.SeError
SE_NULL_STATE_ID - Static variable in class com.esri.sde.sdk.client.SeState
SE_NULL_VALUE - Static variable in class com.esri.sde.sdk.client.SeError
SE_OBJECT_RESTRICTED - Static variable in class com.esri.sde.sdk.client.SeError
SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_OBJECTLOCK_EXCLUSIVE_LOCK - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_OBJECTLOCK_NO_LOCK_SET - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_OBJECTLOCK_SHARED_LOCK - Static variable in class com.esri.sde.sdk.client.SeObjectLock
SE_ONE_THREAD_POLICY - Static variable in class com.esri.sde.sdk.client.SeConnection
SeConnection object concurrency policy.
SE_OPERATION_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_OPTIMIZE - Static variable in class com.esri.sde.sdk.client.SeQuery
SE_OUT_OF_CLMEM - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUT_OF_CONTEXT - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUT_OF_LICENSES - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUT_OF_LOCKS - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUT_OF_MUTEXES - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUT_OF_SVMEM - Static variable in class com.esri.sde.sdk.client.SeError
SE_OUTER_SHELLS_OVERLAP - Static variable in class com.esri.sde.sdk.client.SeError
SE_OVERWRITE_MODE - Static variable in class com.esri.sde.sdk.client.SeLog
Opens the logfile for WRITE operations.
SE_PARENT_NOT_CLOSED - Static variable in class com.esri.sde.sdk.client.SeError
SE_PASSWORD_TIMEOUT - Static variable in class com.esri.sde.sdk.client.SeError
SE_PATH_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_POINT_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_POLY_SHELLS_OVERLAP - Static variable in class com.esri.sde.sdk.client.SeError
SE_POLYGON_HAS_VERTICAL_LINE - Static variable in class com.esri.sde.sdk.client.SeError
SE_PROCESS_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_PROJECTION_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_PT_NO_EXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_PTABLE_IN_USE - Static variable in class com.esri.sde.sdk.client.SeError
SE_PTABLE_LOCKED - Static variable in class com.esri.sde.sdk.client.SeError
SE_PTS_NOT_ADJACENT - Static variable in class com.esri.sde.sdk.client.SeError
SE_QUALIFIED_COLUMN_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_QUALIFIED_DEFAULT_VERSION_NAME - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_QUALIFIED_TABLE_NAME - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_QUALIFIED_VERSION_LEN - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_QUERYINFO_NOT_PREPARED - Static variable in class com.esri.sde.sdk.client.SeError
SE_QUERYTYPE_ATTRIBUTE_FIRST - Static variable in class com.esri.sde.sdk.client.SeQueryInfo
SE_QUERYTYPE_JFA - Static variable in class com.esri.sde.sdk.client.SeQueryInfo
SE_QUERYTYPE_JSF - Static variable in class com.esri.sde.sdk.client.SeQueryInfo
SE_QUERYTYPE_JSFA - Static variable in class com.esri.sde.sdk.client.SeQueryInfo
SE_QUERYTYPE_V3 - Static variable in class com.esri.sde.sdk.client.SeQueryInfo
SE_RASTER_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTER_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERBAND_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERBAND_NO_COLORMAP - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERBAND_NO_STATS - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERBAND_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERBUFFER_TOO_SMALL - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERCOLUMN_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERCOLUMN_INUSE - Static variable in class com.esri.sde.sdk.client.SeError
SE_RASTERCOLUMN_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_READ_LOCK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_READ_MODE - Static variable in class com.esri.sde.sdk.client.SeLog
Opens the logfile for READ operations.
SE_READ_ONLY - Static variable in class com.esri.sde.sdk.client.SeError
SE_READ_ONLY_COLUMN - Static variable in class com.esri.sde.sdk.client.SeError
SE_READ_ONLY_SHAPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_REGISTERED_TABLE_ROWID_EXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_REGISTRATION_NOT_ALLOWED - Static variable in class com.esri.sde.sdk.client.SeError
SE_REGISTRATION_ROW_ID_ALLOCATION_MANY - Static variable in class com.esri.sde.sdk.client.SeRegistration
SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE - Static variable in class com.esri.sde.sdk.client.SeRegistration
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE - Static variable in class com.esri.sde.sdk.client.SeRegistration
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE - Static variable in class com.esri.sde.sdk.client.SeRegistration
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER - Static variable in class com.esri.sde.sdk.client.SeRegistration
SE_ROW_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROW_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROW_OUT_OF_SEQUENCE - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROWLOCK_MASK_CONFLICT - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROWLOCKING_ENABLED - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROWLOCKING_FILTER_MY_LOCKS - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_FILTER_OTHER_LOCKS - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_FILTER_UNLOCKED - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_LOCK_ON_INSERT - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_LOCK_ON_QUERY - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_LOCK_ON_UPDATE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_LOCK_ONLY - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_NOT_ENABLED - Static variable in class com.esri.sde.sdk.client.SeError
SE_ROWLOCKING_UNLOCK_ON_QUERY - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_ROWLOCKING_UNLOCK_ON_UPDATE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_SCL_SYNTAX_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_SDE_NOT_STARTED - Static variable in class com.esri.sde.sdk.client.SeError
SE_SDE_WARNING - Static variable in class com.esri.sde.sdk.client.SeError
SE_SDEHOME_NOT_SET - Static variable in class com.esri.sde.sdk.client.SeError
SE_SDEMETADATA_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_SDETRACELOC_NOT_SET - Static variable in class com.esri.sde.sdk.client.SeError
SE_SELECT_PRIVILEGE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_SELF_INTERSECTING - Static variable in class com.esri.sde.sdk.client.SeError
SE_SEQUENCENBR_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_SEQUENCENBR_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_SERVER_LIB_LOAD_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_SERVICE_NOT_FOUND - Static variable in class com.esri.sde.sdk.client.SeError
SE_SET_VALUE_CONFLICT - Static variable in class com.esri.sde.sdk.client.SeError
SE_SHAPE_ATTRIBUTE_AREA - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_ENTITY - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_FID - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_LENGTH - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_MMAX - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_MMIN - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_NUMOFPTS - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_TEXT - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_XMAX - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_XMIN - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_YMAX - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_YMIN - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_ZMAX - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_ATTRIBUTE_ZMIN - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SHAPE_INTEGRITY_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_SHAPE_TEXT_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_SHAPE_TEXT_TOO_LONG - Static variable in class com.esri.sde.sdk.client.SeError
SE_SIMPLE_LINE_TYPE_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIAL_FIRST - Static variable in class com.esri.sde.sdk.client.SeQuery
SE_SPATIAL_INDEX_NOT_CREATED - Static variable in class com.esri.sde.sdk.client.SeError
SE_SPATIAL_SQL_NOT_INSTALLED - Static variable in class com.esri.sde.sdk.client.SeError
SE_SPATIALINDEX_DBTUNE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_FIXED_QUADTREE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_HYBRID_QUADTREE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_MULTI_GRID - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_NONE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_RTREE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALINDEX_UNKNOWN - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_SPATIALREF_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_SPATIALREF_IN_USE - Static variable in class com.esri.sde.sdk.client.SeError
SE_SPATIALREF_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_SQL_KEYWORD - Static variable in class com.esri.sde.sdk.client.SeError
SE_SQL_PARENTHESIS_MISMATCH - Static variable in class com.esri.sde.sdk.client.SeError
SE_SQL_TOO_LONG - Static variable in class com.esri.sde.sdk.client.SeError
SE_SQLTYPE_INVALID_FEATURE_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_SQLTYPE_UNSUPPORTED_ETYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_SSA_FUNCTION_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_STABLE_IN_USE - Static variable in class com.esri.sde.sdk.client.SeError
SE_STABLE_LOCKED - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATE_DIFF_INSERT - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that were inserted into the source state and that never existed in the differences state.
SE_STATE_DIFF_NOCHANGE_DELETE - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that haven't changed in the source state, but have been deleted in the differences state.
SE_STATE_DIFF_NOCHANGE_UPDATE - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that haven't changed in the source state, but have been updated in the differences state.
SE_STATE_DIFF_NOCHECK - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features in the source state.
SE_STATE_DIFF_UPDATE_DELETE - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that have been updated in the source state but deleted in the difference states.
SE_STATE_DIFF_UPDATE_NOCHANGE - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that have been updated in the source state, but unchanged in the differences state.
SE_STATE_DIFF_UPDATE_UPDATE - Static variable in class com.esri.sde.sdk.client.SeState
Returns all features that have been updated in both the source and difference states.
SE_STATE_EXCLUSIVE_AUTOLOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_EXCLUSIVE_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_HAS_CHILDREN - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATE_INUSE - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATE_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATE_SHARED_AUTOLOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_SHARED_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_TREE_EXCLUSIVE_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_TREE_INUSE - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATE_TREE_SHARED_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
SE_STATE_USED_BY_VERSION - Static variable in class com.esri.sde.sdk.client.SeError
SE_STATES_ARE_SAME - Static variable in class com.esri.sde.sdk.client.SeError
SE_STD_DEV_STATS - Static variable in class com.esri.sde.sdk.client.SeTable.SeTableStats
SE_STORAGE_LOB_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STORAGE_NORMALIZED_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STORAGE_SDEBINARY_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STORAGE_SPATIAL_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STORAGE_SQL_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STORAGE_WKB_TYPE - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_STREAM_IN_PROGRESS - Static variable in class com.esri.sde.sdk.client.SeError
SE_STREAM_POOL_RESET_FALSE - Static variable in class com.esri.sde.sdk.client.SeConnection
SE_SUCCESS - Static variable in class com.esri.sde.sdk.client.SeError
SE_SUCCESS - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_SYSTEM_IS_CLIENT_ONLY - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_EXCLUSIVE_SCHEMA_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
SE_TABLE_EXCLUSIVE_SCHEMA_LOCK - Static variable in class com.esri.sde.sdk.client.SeTable
SE_TABLE_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_HAS_NO_LOCATOR - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_NOREGISTERED - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_NOT_MULTIVERSION - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_REGISTERED - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_SCHEMA_IS_LOCKED - Static variable in class com.esri.sde.sdk.client.SeError
SE_TABLE_SHARED_SCHEMA_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
SE_TABLE_SHARED_SCHEMA_LOCK - Static variable in class com.esri.sde.sdk.client.SeTable
SE_TASKS_EXCEEDED - Static variable in class com.esri.sde.sdk.client.SeError
SE_TEMP_IO_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_FEW_POINTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_DISTINCTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_LAYERS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_PARTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_POINTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_RASTERBANDS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_RASTERCOLUMNS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_RASTERS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_REGISTRATIONS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_STATES - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOO_MANY_STREAMS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TOPO_ERROR - Static variable in class com.esri.sde.sdk.client.SeError
SE_TRACE_OFF - Static variable in class com.esri.sde.sdk.client.SeError
SE_TRACE_ON - Static variable in class com.esri.sde.sdk.client.SeError
SE_TRANS_IN_PROGRESS - Static variable in class com.esri.sde.sdk.client.SeError
SE_TRYLOCK_POLICY - Static variable in class com.esri.sde.sdk.client.SeConnection
SeConnection object concurrency policy.
SE_TYPE_MISMATCH - Static variable in class com.esri.sde.sdk.client.SeError
SE_UNCHANGED - Static variable in class com.esri.sde.sdk.client.SeError
SE_UNPROTECTED_POLICY - Static variable in class com.esri.sde.sdk.client.SeConnection
SeConnection object concurrency policy.
SE_UNSUPPORTED_NORMALIZED_OPERATION - Static variable in class com.esri.sde.sdk.client.SeError
SE_UNSUPPORTED_ON_MVTABLE - Static variable in class com.esri.sde.sdk.client.SeError
SE_UNSUPPORTED_ON_VIEW - Static variable in class com.esri.sde.sdk.client.SeError
SE_UNSUPPORTED_OPERATION - Static variable in class com.esri.sde.sdk.client.SeError
SE_UPDATE_PRIVILEGE - Static variable in class com.esri.sde.sdk.client.SeDefs
SE_VERSION_ACCESS_PRIVATE - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_ACCESS_PRIVATE - Static variable in class com.esri.sde.sdk.client.SeState
SE_VERSION_ACCESS_PROTECTED - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_ACCESS_PROTECTED - Static variable in class com.esri.sde.sdk.client.SeState
SE_VERSION_ACCESS_PUBLIC - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_ACCESS_PUBLIC - Static variable in class com.esri.sde.sdk.client.SeState
SE_VERSION_EXCLUSIVE_AUTOLOCK - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_EXCLUSIVE_AUTOLOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
SE_VERSION_EXCLUSIVE_LOCK - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_EXCLUSIVE_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
SE_VERSION_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_VERSION_HAS_CHILDREN - Static variable in class com.esri.sde.sdk.client.SeError
SE_VERSION_HAS_MOVED - Static variable in class com.esri.sde.sdk.client.SeError
SE_VERSION_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_VERSION_PROTECTED_MASK - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_PUBLIC_MASK - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_SHARED_LOCK - Static variable in class com.esri.sde.sdk.client.SeVersion
SE_VERSION_SHARED_LOCK - Static variable in class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
SE_VERSION_TBL_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_VIEW_EXISTS - Static variable in class com.esri.sde.sdk.client.SeError
SE_VIEW_NOEXIST - Static variable in class com.esri.sde.sdk.client.SeError
SE_WRITE_LOCK - Static variable in class com.esri.sde.sdk.client.SeLayer
SE_WRONG_COLUMN_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
SE_ZERO_AREA_POLYGON - Static variable in class com.esri.sde.sdk.client.SeError
SeColumnDefinition - class com.esri.sde.sdk.client.SeColumnDefinition.
Represents the description of a table's column.
SeColumnDefinition() - Constructor for class com.esri.sde.sdk.client.SeColumnDefinition
Defines a blank column definition.
SeColumnDefinition(String, int, int, int, boolean) - Constructor for class com.esri.sde.sdk.client.SeColumnDefinition
Defines a column of a table.
SeConnection - class com.esri.sde.sdk.client.SeConnection.
Used to establish and maintain a connection to an ArcSDE server.
SeConnection.SeStreamSpec - class com.esri.sde.sdk.client.SeConnection.SeStreamSpec.
SeConnection inner class used to retrieve the stream operation specifications set on a connection.
SeConnection.SeStreamSpec() - Constructor for class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Constructs an empty (all values set to zero) stream specification.
SeConnection(String, int, String, String, String) - Constructor for class com.esri.sde.sdk.client.SeConnection
Constructs a connection to an ArcSDE server.
SeConnection(String, int, String, String, String, Locale) - Constructor for class com.esri.sde.sdk.client.SeConnection
Constructs a connection to an ArcSDE server.
SeCoordinateReference - class com.esri.sde.sdk.client.SeCoordinateReference.
Represents the Coordinate Reference of a Geometry.
SeCoordinateReference() - Constructor for class com.esri.sde.sdk.client.SeCoordinateReference
Creates a default coordinate reference object.
SeCoordRef - class com.esri.sde.sdk.geom.SeCoordRef.
This class represents a coordinate reference.
SeCoordRef() - Constructor for class com.esri.sde.sdk.geom.SeCoordRef
Constructs a coordinate reference object.
SeCurve - class com.esri.sde.sdk.geom.SeCurve.
This class represents a one-dimensional geometric object usually stored as a sequence of points, its subtype specifies the form of the interpolation between points.
SeCurve() - Constructor for class com.esri.sde.sdk.geom.SeCurve
SeDate - class com.esri.sde.sdk.client.SeDate.
Represents the ArcSDE Date Structure.
SeDate(Date) - Constructor for class com.esri.sde.sdk.client.SeDate
Constructs an SeDate object from a java.util.Date object.
SeDBMSInfo - class com.esri.sde.sdk.client.SeDBMSInfo.
Stores RDBMS related information.
SeDefs - class com.esri.sde.sdk.client.SeDefs.
Holds the public constants for the sde client package.
SeDelete - class com.esri.sde.sdk.client.SeDelete.
Used to perform a Delete operation.
SeDelete(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeDelete
Creates an SeDelete object given an SeConnection.
SeDoesNotExistException - exception com.esri.sde.sdk.client.SeDoesNotExistException.
SeDoesNotExistException() - Constructor for class com.esri.sde.sdk.client.SeDoesNotExistException
SeDoesNotExistException(SeError) - Constructor for class com.esri.sde.sdk.client.SeDoesNotExistException
SeDoesNotExistException(String) - Constructor for class com.esri.sde.sdk.client.SeDoesNotExistException
SeDoesNotExistException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeDoesNotExistException
SeEnvelope - class com.esri.sde.sdk.geom.SeEnvelope.
This class represents the extent of the geometric object.
SeEnvelope() - Constructor for class com.esri.sde.sdk.geom.SeEnvelope
Creates a default envelope object.
SeEnvelope(double, double, double, double) - Constructor for class com.esri.sde.sdk.geom.SeEnvelope
Creates an envelope object given the xy range.
SeError - class com.esri.sde.sdk.client.SeError.
Represents an error returned by the ArcSDE server.
SeException - exception com.esri.sde.sdk.client.SeException.
Thrown when an ArcSDE specific error has occurred.
SeExceptionFactory - class com.esri.sde.sdk.client.SeExceptionFactory.
SeExceptionFactory() - Constructor for class com.esri.sde.sdk.client.SeExceptionFactory
SeExistsException - exception com.esri.sde.sdk.client.SeExistsException.
SeExistsException() - Constructor for class com.esri.sde.sdk.client.SeExistsException
SeExistsException(SeError) - Constructor for class com.esri.sde.sdk.client.SeExistsException
SeExistsException(String) - Constructor for class com.esri.sde.sdk.client.SeExistsException
SeExistsException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeExistsException
SeExtent - class com.esri.sde.sdk.client.SeExtent.
Represents an extent in real world coordinates.
SeExtent() - Constructor for class com.esri.sde.sdk.client.SeExtent
Constructs a default extent whose values can be set using the set methods.
SeExtent(double, double, double, double) - Constructor for class com.esri.sde.sdk.client.SeExtent
Constructs an extent with initial X/Y values provided.
SeExtent(double, double, double, double, double, double) - Constructor for class com.esri.sde.sdk.client.SeExtent
Constructs an extent with initial X/Y/Z values provided.
SeFilter - class com.esri.sde.sdk.client.SeFilter.
Abstract class that defines search methods used in a spatial constraint.
SeFilter() - Constructor for class com.esri.sde.sdk.client.SeFilter
SeGeometry - class com.esri.sde.sdk.geom.SeGeometry.
This is the non-instantiable root class of the hierarchy, its instantiable subclasses are 0, 1 to two-dimensional geometric objects that exist in two-dimensional coordinate space.
SeGeometry() - Constructor for class com.esri.sde.sdk.geom.SeGeometry
SeGeometryCollection - class com.esri.sde.sdk.geom.SeGeometryCollection.
This class represents a geometric object that is a collection of 1 or more geometries.
SeGeometryCollection() - Constructor for class com.esri.sde.sdk.geom.SeGeometryCollection
SeInsert - class com.esri.sde.sdk.client.SeInsert.
Used to insert data into tables/layers and rows in an ArcSDE instance.
SeInsert(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeInsert
Creates an SeInsert object given an SeConnection.
SeInstance - class com.esri.sde.sdk.client.SeInstance.
Used to manage and query an ArcSDE Instance.
SeInstance.SeInstanceConfiguration - class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration.
SeInstance inner class that retrieves the configuration of ArcSde instance.
SeInstance.SeInstanceLocks - class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks.
SeInstance inner class that retrieves locks information for the ArcSde instance.
SeInstance.SeInstanceStateLocks - class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks.
SeInstance inner class that retrieves state locks information for the ArcSde instance.
SeInstance.SeInstanceStats - class com.esri.sde.sdk.client.SeInstance.SeInstanceStats.
SeInstance inner class that retrieves a list of user information for the ArcSde instance.
SeInstance.SeInstanceStatus - class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus.
SeInstance inner class that retrieves the status of an ArcSde instance.
SeInstance.SeInstanceTableLocks - class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks.
SeInstance inner class that retrieves table locks information for the ArcSde instance.
SeInstance.SeInstanceUsers - class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers.
SeInstance inner class that retrieves a list of user information for the ArcSde instance.
SeInstance.SeInstanceVersionLocks - class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks.
SeInstance inner class that retrieves version locks information for the ArcSde instance.
SeInstance(String, int) - Constructor for class com.esri.sde.sdk.client.SeInstance
Establishes a connection to an ArcSDE Instance.
SeInstance(String, int, Locale) - Constructor for class com.esri.sde.sdk.client.SeInstance
Establishes a connection to an ArcSDE Instance.
SeInvalidShapeException - exception com.esri.sde.sdk.client.SeInvalidShapeException.
SeInvalidShapeException() - Constructor for class com.esri.sde.sdk.client.SeInvalidShapeException
SeInvalidShapeException(SeError) - Constructor for class com.esri.sde.sdk.client.SeInvalidShapeException
SeInvalidShapeException(String) - Constructor for class com.esri.sde.sdk.client.SeInvalidShapeException
SeInvalidShapeException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeInvalidShapeException
SeInvalidValueException - exception com.esri.sde.sdk.client.SeInvalidValueException.
SeInvalidValueException() - Constructor for class com.esri.sde.sdk.client.SeInvalidValueException
SeInvalidValueException(SeError) - Constructor for class com.esri.sde.sdk.client.SeInvalidValueException
SeInvalidValueException(String) - Constructor for class com.esri.sde.sdk.client.SeInvalidValueException
SeInvalidValueException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeInvalidValueException
SeLayer - class com.esri.sde.sdk.client.SeLayer.
SeLayer - An object that spatially enables an existing RDBMS table.
SeLayer.SeLayerGridStats - class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats.
SeLayer inner class that retrieves the spatial index grid statistics.
SeLayer.SeLayerLock - class com.esri.sde.sdk.client.SeLayer.SeLayerLock.
SeLayer inner class that retrieves the layer locks information from the server.
SeLayer.SeLayerSpatialIndexStats - class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats.
SeLayer inner class that retrieves the spatial index statistics for a layer.
SeLayer.SeLayerStats - class com.esri.sde.sdk.client.SeLayer.SeLayerStats.
SeLayer inner class that obtains the statistics for a layer.
SeLayer(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeLayer
Layer constructor with an SeConnection handle.
SeLayer(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeLayer
Layer constructor that gets ArcSde layer information by the ID.
SeLayer(SeConnection, String, String) - Constructor for class com.esri.sde.sdk.client.SeLayer
Layer constructor with an SeConnection, table_name and spatial column that fetches information about the specified layer on an ArcSde server.
SeLinestring - class com.esri.sde.sdk.geom.SeLinestring.
This class is a subclass of SeCurve with a linear interpolation between points, each consecutive pair of points defines a line segment.
SeLinestring() - Constructor for class com.esri.sde.sdk.geom.SeLinestring
SeLinestring(SeCoordRef, SePoint[]) - Constructor for class com.esri.sde.sdk.geom.SeLinestring
SeLinestring(SePoint[]) - Constructor for class com.esri.sde.sdk.geom.SeLinestring
SeLocale - class com.esri.sde.sdk.client.SeLocale.
Used to localize sde client.
SeLocale(String, String, String) - Constructor for class com.esri.sde.sdk.client.SeLocale
Constructs a sde locale object that identifies Locale properties.
SeLocator - class com.esri.sde.sdk.client.SeLocator.
Represents the locator object associated with an ArcSde service.
SeLocator(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeLocator
Creates a default SeLocator object.
SeLocator(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeLocator
SeLocator constructor with an SeConnection and locator ID that retrieves the locator information for the specified ID.
SeLocator(SeConnection, String) - Constructor for class com.esri.sde.sdk.client.SeLocator
SeLocator constructor that retrieves information for specified locator.
SeLog - class com.esri.sde.sdk.client.SeLog.
Used when managing a persistent set of rows from a table or layer.
SeLog.SeLogTargetInfo - class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo.
SeLog.SeLogTargetInfo(SeLog) - Constructor for class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
SeLog(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeLog
Logfile constructor with an SeConnection handle.
SeLog(SeConnection, String) - Constructor for class com.esri.sde.sdk.client.SeLog
SeLog constructor with an SeConnection and String representing the name of the logfile that retrives the logfile definition from the server.
SeMetaData - class com.esri.sde.sdk.client.SeMetaData.
SeMetaData(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeMetaData
SeMetaData constructor with an SeConnection.
SeMetaData(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeMetaData
SeMetaData constructor created by retrieving information for specified record id.
SeMetaData(SeConnection, String, int) - Constructor for class com.esri.sde.sdk.client.SeMetaData
SeMetaData constructor with an SeConnection, object name and object type.
SeMultiCurve - class com.esri.sde.sdk.geom.SeMultiCurve.
This class represents a collection of geometric objects whose elements are SeCurves.
SeMultiCurve() - Constructor for class com.esri.sde.sdk.geom.SeMultiCurve
SeMultiLinestring - class com.esri.sde.sdk.geom.SeMultiLinestring.
This class represents a collection of geometric objects whose elements are SeLinestrings.
SeMultiLinestring() - Constructor for class com.esri.sde.sdk.geom.SeMultiLinestring
SeMultiLinestring(SeCoordRef, SeLinestring[]) - Constructor for class com.esri.sde.sdk.geom.SeMultiLinestring
SeMultiPoint - class com.esri.sde.sdk.geom.SeMultiPoint.
This class represents a collection of geometric objects whose elements are SePoints.
SeMultiPoint() - Constructor for class com.esri.sde.sdk.geom.SeMultiPoint
SeMultiPoint(SeCoordRef, SePoint[]) - Constructor for class com.esri.sde.sdk.geom.SeMultiPoint
SeMultiPolygon - class com.esri.sde.sdk.geom.SeMultiPolygon.
This class represents a collection of geometric objects whose elements are SePolygons.
SeMultiPolygon() - Constructor for class com.esri.sde.sdk.geom.SeMultiPolygon
SeMultiPolygon(SeCoordRef, SePolygon[]) - Constructor for class com.esri.sde.sdk.geom.SeMultiPolygon
SeMultiSurface - class com.esri.sde.sdk.geom.SeMultiSurface.
This is a non-instantiable class which represents a collection of geometric objects whose elements are SeSurfaces.
SeMultiSurface() - Constructor for class com.esri.sde.sdk.geom.SeMultiSurface
SeNoAccessException - exception com.esri.sde.sdk.client.SeNoAccessException.
SeNoAccessException() - Constructor for class com.esri.sde.sdk.client.SeNoAccessException
SeNoAccessException(SeError) - Constructor for class com.esri.sde.sdk.client.SeNoAccessException
SeNoAccessException(String) - Constructor for class com.esri.sde.sdk.client.SeNoAccessException
SeNoAccessException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeNoAccessException
SeObjectId - class com.esri.sde.sdk.client.SeObjectId.
Represents an unique object identifier for all ArcSDE server objects.
SeObjectId(long) - Constructor for class com.esri.sde.sdk.client.SeObjectId
Constructs an ID object from a long value.
SeObjectLock - class com.esri.sde.sdk.client.SeObjectLock.
SeObjectLocks allow you to set an arbitrary, application-defined lock on an object.
SeObjectLock(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeObjectLock
SeObjectLock constructor.
SePECoordinateSystem - interface com.esri.sde.sdk.client.SePECoordinateSystem.
A Coordinate System superclass to manipulate a Projected and Geographic Coordinate System object.
SePEDatum - class com.esri.sde.sdk.client.SePEDatum.
A Datum defines the position of the spheroid relative to the center of the Earth.
SePEDatum(String) - Constructor for class com.esri.sde.sdk.client.SePEDatum
Constructor.
SePEDatum(String, SePESpheroid) - Constructor for class com.esri.sde.sdk.client.SePEDatum
Constructor.
SePEGeographicCS - class com.esri.sde.sdk.client.SePEGeographicCS.
A geographic coordinate system is a three-dimensional reference system that locates points on the Earth's surface.
SePEGeographicCS(String) - Constructor for class com.esri.sde.sdk.client.SePEGeographicCS
Constructor.
SePEGeographicCS(String, SePEDatum, SePEPrimeMeridian, SePEUnit) - Constructor for class com.esri.sde.sdk.client.SePEGeographicCS
Constructor.
SePEHorizon - class com.esri.sde.sdk.client.SePEHorizon.
A projection horizon defines the limits of a map projection with particular parameters.
SePEHorizon() - Constructor for class com.esri.sde.sdk.client.SePEHorizon
SePEHorizonFunction - interface com.esri.sde.sdk.client.SePEHorizonFunction.
Projection horizon for projections.
SePEParameters - class com.esri.sde.sdk.client.SePEParameters.
Parameters are required by projection and geographic transformation objects.
SePEParameters(String) - Constructor for class com.esri.sde.sdk.client.SePEParameters
Constructor.
SePEParameters(String, double) - Constructor for class com.esri.sde.sdk.client.SePEParameters
Constructor.
SePEPCSConstants - class com.esri.sde.sdk.client.SePEPCSConstants.
Document the purpose of this class.
SePEPCSConstants() - Constructor for class com.esri.sde.sdk.client.SePEPCSConstants
Constructor.
SePEPCSConstFunction - interface com.esri.sde.sdk.client.SePEPCSConstFunction.
Document the purpose of this class.
SePEPrimeMeridian - class com.esri.sde.sdk.client.SePEPrimeMeridian.
This class defines a prime meridian object.
SePEPrimeMeridian(String) - Constructor for class com.esri.sde.sdk.client.SePEPrimeMeridian
Constructor.
SePEPrimeMeridian(String, double) - Constructor for class com.esri.sde.sdk.client.SePEPrimeMeridian
Constructor.
SePEProjectedCS - class com.esri.sde.sdk.client.SePEProjectedCS.
A projected coordinate system is a two-dimensional planar surface.
SePEProjectedCS(String) - Constructor for class com.esri.sde.sdk.client.SePEProjectedCS
Constructor.
SePEProjection - class com.esri.sde.sdk.client.SePEProjection.
This class defines a map projection object.
SePEProjection.Forward - class com.esri.sde.sdk.client.SePEProjection.Forward.
SePEProjection.Forward(SePEProjection) - Constructor for class com.esri.sde.sdk.client.SePEProjection.Forward
SePEProjection.Horizon - class com.esri.sde.sdk.client.SePEProjection.Horizon.
SePEProjection.Horizon(SePEProjection) - Constructor for class com.esri.sde.sdk.client.SePEProjection.Horizon
SePEProjection.Inverse - class com.esri.sde.sdk.client.SePEProjection.Inverse.
SePEProjection.Inverse(SePEProjection) - Constructor for class com.esri.sde.sdk.client.SePEProjection.Inverse
SePEProjection.PCSConstFunc - class com.esri.sde.sdk.client.SePEProjection.PCSConstFunc.
SePEProjection.PCSConstFunc(SePEProjection) - Constructor for class com.esri.sde.sdk.client.SePEProjection.PCSConstFunc
SePEProjection(String) - Constructor for class com.esri.sde.sdk.client.SePEProjection
Constructor.
SePEProjectionFunction - interface com.esri.sde.sdk.client.SePEProjectionFunction.
This class defines the methods for a map projection.
SePESpheroid - class com.esri.sde.sdk.client.SePESpheroid.
This class defines the shape and size of a geographic coordinate system's surface.
SePESpheroid(String) - Constructor for class com.esri.sde.sdk.client.SePESpheroid
Convert an external representation into a spheroid.
SePESpheroid(String, double, double) - Constructor for class com.esri.sde.sdk.client.SePESpheroid
Constructor.
SePEUnit - class com.esri.sde.sdk.client.SePEUnit.
This class defines a unit object.
SePEUnit(String) - Constructor for class com.esri.sde.sdk.client.SePEUnit
Convert an external representation into a unit.
SePEUnit(String, double) - Constructor for class com.esri.sde.sdk.client.SePEUnit
Constructor.
SePoint - class com.esri.sde.sdk.geom.SePoint.
This class represents a zero-dimensional geometric object and represents a single location in coordinate space.
SePoint() - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(double, double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(double, double, double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(SeCoordRef, double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(SeCoordRef, double, double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePoint(SeCoordRef, double, double, double, double) - Constructor for class com.esri.sde.sdk.geom.SePoint
SePolygon - class com.esri.sde.sdk.geom.SePolygon.
This class represents a planar SeSurface, defined by 1 exterior boundary and 0 or more interior boundaries.
SePolygon() - Constructor for class com.esri.sde.sdk.geom.SePolygon
SePolygon(SeCoordRef, SeEnvelope) - Constructor for class com.esri.sde.sdk.geom.SePolygon
SePolygon(SeCoordRef, SePoint[]) - Constructor for class com.esri.sde.sdk.geom.SePolygon
SePolygon(SeCoordRef, SePoint[][]) - Constructor for class com.esri.sde.sdk.geom.SePolygon
SePolygon(SePoint[]) - Constructor for class com.esri.sde.sdk.geom.SePolygon
SePolygon(SePoint[][]) - Constructor for class com.esri.sde.sdk.geom.SePolygon
SeQuery - class com.esri.sde.sdk.client.SeQuery.
Used to submit a query to an ArcSDE instance.
SeQuery(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeQuery
Creates an SeQuery object given an SeConnection.
SeQuery(SeConnection, String[], SeSqlConstruct) - Constructor for class com.esri.sde.sdk.client.SeQuery
Creates an SeQuery object given an SeConnection, an array of column names, and an SeSqlConstruct.
SeQueryInfo - class com.esri.sde.sdk.client.SeQueryInfo.
Holds information for advanced query operations.
SeQueryInfo() - Constructor for class com.esri.sde.sdk.client.SeQueryInfo
Constructs an SeQueryInfo object.
SeRegistration - class com.esri.sde.sdk.client.SeRegistration.
SeRegistration(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeRegistration
SeRegistration constructor with an SeConnection.Use this constructor when registrating a new object.
SeRegistration(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeRegistration
SeRegistration constructor with an SeConnection and table registration Id that retrives the registration entry information for specified ID.
SeRegistration(SeConnection, String) - Constructor for class com.esri.sde.sdk.client.SeRegistration
SeRegistration constructor with an SeConnection and table name that retrives the registration entry information for specified table.
SeRelease - class com.esri.sde.sdk.client.SeRelease.
Represents the version description of an ArcSDE instance.
SeRelease() - Constructor for class com.esri.sde.sdk.client.SeRelease
Sets the release fields to zero.
SeRow - class com.esri.sde.sdk.client.SeRow.
Represents a row of a result set from a fetch operation or a row of data to be inserted or updated.
SeShape - class com.esri.sde.sdk.client.SeShape.
The ESRI representation of a geometric shape.
SeShape() - Constructor for class com.esri.sde.sdk.client.SeShape
Creates a Nil Shape.
SeShape(SeCoordinateReference) - Constructor for class com.esri.sde.sdk.client.SeShape
Creates a Nil shape with a coordinate reference.
SeShapeAnno - class com.esri.sde.sdk.client.SeShapeAnno.
Client side annotation utility functions
SeShapeAnno() - Constructor for class com.esri.sde.sdk.client.SeShapeAnno
Creates annotation object with default values.
SeShapeCBMethod - interface com.esri.sde.sdk.client.SeShapeCBMethod.
Create your own calculus-based shape comparison method by imlementing this interface.
SeShapeFilter - class com.esri.sde.sdk.client.SeShapeFilter.
Represents a spatial filter that contains a geometric shape to be used as the constraint.
SeShapeFilter(String, String, SeShape, int) - Constructor for class com.esri.sde.sdk.client.SeShapeFilter
Constructs a shape filter with truth set to TRUE.
SeShapeFilter(String, String, SeShape, int, boolean) - Constructor for class com.esri.sde.sdk.client.SeShapeFilter
Constructs a shape filter.
SeShapeIdFilter - class com.esri.sde.sdk.client.SeShapeIdFilter.
The SeShapeIdFilter class allows shapes to be stored, deleted, retrieved, and searched by their shape identifier (FID).
SeShapeIdFilter(String, String, String, SeObjectId, int) - Constructor for class com.esri.sde.sdk.client.SeShapeIdFilter
SeShapeIdFilter(String, String, String, SeObjectId, int, boolean) - Constructor for class com.esri.sde.sdk.client.SeShapeIdFilter
SeSpatialReference - class com.esri.sde.sdk.client.SeSpatialReference.
Represents the Spatial Reference of an ArcSde layer.
SeSpatialReference(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeSpatialReference
Creates a default spatial reference object.
SeSpatialReference(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeSpatialReference
SeSpatialReference constructor with an SeConnection and spatial refernce ID that retrieves the spatial reference information for the specified ID.
SeSqlConstruct - class com.esri.sde.sdk.client.SeSqlConstruct.
An SQL construct is used any time an application needs to specify tables or constraining where clauses in an SDE application.
SeSqlConstruct() - Constructor for class com.esri.sde.sdk.client.SeSqlConstruct
Constructor for the SqlConstruct object use the set methods to populate it's fields.
SeSqlConstruct(String) - Constructor for class com.esri.sde.sdk.client.SeSqlConstruct
Constructor for the SqlConstruct object
SeSqlConstruct(String[], String) - Constructor for class com.esri.sde.sdk.client.SeSqlConstruct
Creates an SqlConstruct given an array of table names and a where clause.
SeSqlConstruct(String, String) - Constructor for class com.esri.sde.sdk.client.SeSqlConstruct
Creates an SqlConstruct with one table name and where clause.
SeSSA - class com.esri.sde.sdk.client.SeSSA.
An SSA is an SDE application that runs in the SDE server's process space.
SeSSA.SeInputDesc - class com.esri.sde.sdk.client.SeSSA.SeInputDesc.
SeSSA inner class that defines the input .
SeSSA.SeInputDesc() - Constructor for class com.esri.sde.sdk.client.SeSSA.SeInputDesc
SeSSA(SeConnection, boolean, short, SeSSA.SeInputDesc[], Vector, String) - Constructor for class com.esri.sde.sdk.client.SeSSA
Creates an SeSSA object that initializes a server-side application inside the server process.
SeState - class com.esri.sde.sdk.client.SeState.
SeState(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeState
SeState constructor with an SeConnection object.
SeState(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeState
SeState constructor with an SeConnection and state Id that retrives the state information for specified ID.
SeStreamOp - class com.esri.sde.sdk.client.SeStreamOp.
SeStreamOp() - Constructor for class com.esri.sde.sdk.client.SeStreamOp
SeSurface - class com.esri.sde.sdk.geom.SeSurface.
This class represents a two-dimensional geometric object.
SeSurface() - Constructor for class com.esri.sde.sdk.geom.SeSurface
set3D(boolean) - Method in class com.esri.sde.sdk.client.SeLayer
Updates whether the layer allows z-coordinates.
SeTable - class com.esri.sde.sdk.client.SeTable.
SeTable - An object that creates/alters/deletes/queries a DBMS table through an sde server.
SeTable.SeTableIdRange - class com.esri.sde.sdk.client.SeTable.SeTableIdRange.
SeTable.SeTableIndexDefs - class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs.
SeTable inner class that stores the index definition information for a table.
SeTable.SeTableIndexDefs(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
SeTable.SeTableLock - class com.esri.sde.sdk.client.SeTable.SeTableLock.
SeTable inner class that retrieves the locks information for a table.
SeTable.SeTableRowLockInfo - class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo.
SeTable inner class that retrieves the rowlocks information from the server.
SeTable.SeTableStats - class com.esri.sde.sdk.client.SeTable.SeTableStats.
SeTable inner class that retrieves the statistics information for a column.
SeTable(SeConnection, String) - Constructor for class com.esri.sde.sdk.client.SeTable
Table constructor with an SeConnection and qualified table name argument.
SeTable(SeConnection, String, String, String) - Constructor for class com.esri.sde.sdk.client.SeTable
Table constructor with an SeConnection, database, owner and table name argument that qualifies the table in RDBMS.
setAccess(int) - Method in class com.esri.sde.sdk.client.SeVersion
Returns the access type for a version.
setAlignment(int) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the alignment type forannotation.
setAnno(boolean) - Method in class com.esri.sde.sdk.client.SeLayer
Sets whether the layer allows anno.
setAnno(SeShapeAnno) - Method in class com.esri.sde.sdk.client.SeShape
Sets the shape's annotation.
setApplicationId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeObjectLock
Sets the application id.
setArraySize(int) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the optimal array size for the layer.
setAscending(boolean[]) - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Sets the index's ascending order characterstics.
setAttributeArraySize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the attribute array buffer size.
setAuthId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeSpatialReference
Sets the authority ID of a spatial reference object.
setAuthName(String) - Method in class com.esri.sde.sdk.client.SeSpatialReference
Sets the name of the authority for a spatial reference object.
setBlob(int, ByteArrayInputStream) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of a BLOB column, which is to be used to insert/update a row in a table/layer.
setBlobArraySize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the blob array buffer size.
setByClause(String) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the SQL ORDER BY or GROUP BY string for the query.
setCAD(boolean) - Method in class com.esri.sde.sdk.client.SeLayer
Sets whether the layer allows CAD entities.
setCad(SeShapeCad) - Method in class com.esri.sde.sdk.client.SeShape
Sets the shape's cad.
setCategory(String) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the locator category.
setClassName(String) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata class name.
setColumnDefs(SeColumnDefinition[]) - Method in class com.esri.sde.sdk.client.SeRow
Sets the dolumn definitions on the row, given an array of SeColumnDefinition[].
setColumnDefs(Vector) - Method in class com.esri.sde.sdk.client.SeRow
Sets the dolumn definitions on the row, given a Vector of SeColumnDefinitions.
setColumnNames(String[]) - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Sets the column names.
setColumns(String[]) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the array of SeColumnDefinitions for the query.
setConcurrency(int) - Method in class com.esri.sde.sdk.client.SeConnection
Sets the concurrency policy for the SeConnection object.
setConnection(SeConnection) - Method in class com.esri.sde.sdk.client.SeObjectLock
Sets the SeConnection handle for the object lock.
setConstruct(SeSqlConstruct) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the SesqlConstruct that holds the tables and where clause for the query.
setCoordRef(SeCoordinateReference) - Method in class com.esri.sde.sdk.client.SeSpatialReference
Sets the SeCoordinateReference object.
setCoordRef(SeCoordinateReference) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the coordinate reference for the specified layer.
setCoordRef(SeCoordinateReference) - Method in class com.esri.sde.sdk.client.SeShape
Sets the coordinate reference of the shape.
setCoordRef(SeCoordRef) - Method in class com.esri.sde.sdk.geom.SeGeometry
setCoordRef(SeCoordRef) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
setCoordSysByDescription(String) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the coordinate system for the coordinate reference object by a character string description.
setCreationKeyword(String) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the configuration keyword used for table creation.
setCreationKeyword(String) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the configuration keyword.
setDate(int, Date) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of an Date column, which is to be used to insert/update a row in a table/layer.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the registered table's description.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeSpatialReference
Sets the description of the spatial reference object.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the layer's description.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the version description.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata object description.
setDescription(String) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the locator description.
setDouble(int, Double) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of a double column, which is to be used to insert/update a row in a table/layer.
setEntityType(int) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the shape (entity) type.
setExtent(double, double, double, double) - Method in class com.esri.sde.sdk.geom.SeEnvelope
Sets bounding box of the envelope given the xy range.
setExtent(SeExtent) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the layer's envelope.
setFalseM(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the m false origin for this coordinate reference object.
setFalseX(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the x false origin for this coordinate reference object.
setFalseY(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the y false origin for this coordinate reference object.
setFalseZ(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the z false origin for this coordinate reference object.
setFloat(int, Float) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of a float column, which is to be used to insert/update a row in a table/layer.
setGapRatio(double) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation gap ratio.
setGridSizes(double, double, double) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the spatial index grid sizes of the layer.
setHeight(double) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation height.
setHidden(boolean) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the hidden flag for a registered table.
setId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the ID of a version.
setId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeState
Set's the state ID.
setIndexName(String) - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Sets the index name.
setInteger(int, Integer) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of an integer column, which is to be used to insert/update a row in a table/layer.
setJustification(int) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation justification.
setLeader(SeShape) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation leader shape.
setLevel(int) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation level.
setLoadMode(boolean) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the layer to either load-only or normal I/O mode.
setLocator(boolean) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the locator flag for a registered table.
setLogfile(SeLog, boolean) - Method in class com.esri.sde.sdk.client.SeStreamOp
Sets a logfile for auto-logging.
setLogfile(String) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the logfile name.
setM(double) - Method in class com.esri.sde.sdk.client.SDEPoint
Sets the measure value of the point.
setM(double) - Method in class com.esri.sde.sdk.geom.SePoint
setM(double, double) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the measures false origin and scale factor.
setM(double, double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the measure false origin and scale factor of this coordinate reference object
setMaxArraySize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the maximum number of elements per array.
setMaxBufSize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the maximum stream buffer size.
setMaxSizePerBlob(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the maximum individual blob size.
setMaxX(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the maximum X value of the extent.
setMaxX(double) - Method in class com.esri.sde.sdk.geom.SeEnvelope
Sets the maximum x value.
setMaxY(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the maximum Y value of the extent.
setMaxY(double) - Method in class com.esri.sde.sdk.geom.SeEnvelope
Sets the maximum y value.
setMaxZ(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the maximum Z value of the extent.
setMByRange(double, double) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the minimum and maximum measure values.
setMCRound(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the m CRound for this coordinate reference object.
setMeasured(boolean) - Method in class com.esri.sde.sdk.client.SeLayer
Updates whether the layer allows measures.
setMHalfSU(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the m HalfSU for this coordinate reference object.
setMinBufSize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the minimum stream buffer size.
setMinID(SeObjectId) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the minimum fid value.
setMinimumId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the minimum ID allowed for the registered table.
setMinObjects(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the minimum number of objects to put in the buffer.
setMinX(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the minimum X value of the extent.
setMinX(double) - Method in class com.esri.sde.sdk.geom.SeEnvelope
Sets the minimum x value.
setMinY(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the minimum Y value of the extent.
setMinY(double) - Method in class com.esri.sde.sdk.geom.SeEnvelope
Sets the minimum y value.
setMinZ(double) - Method in class com.esri.sde.sdk.client.SeExtent
Sets the minimum Z value of the extent.
setMultiVersion(boolean) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the multiversion flag for a registered table.
setMUnits(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the m scale units for this coordinate reference object.
setName(String) - Method in class com.esri.sde.sdk.client.SeLog
Sets the name of the logfile object.
setName(String) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the version name.
setName(String) - Method in class com.esri.sde.sdk.client.SePEParameters
Set a parameter's name.
setName(String) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the name of the locator object.
setNumColumns(short) - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Sets the number of columns.
setObjectId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeObjectLock
Sets the object unique identifier.
setObjectName(String) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata object name.
setObjectType(int) - Method in class com.esri.sde.sdk.client.SeObjectLock
Sets the object type.
setObjectType(int) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata object property value.
setOwner(String) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the version owner name.
setOwner(String) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the owner name of the locator object.
setParentId(SeObjectId) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the parent ID of a version.
setParentName(String) - Method in class com.esri.sde.sdk.client.SeVersion
Sets the parent version name.
setPersistence(boolean) - Method in class com.esri.sde.sdk.client.SeLog
Sets the persistence attribute.
setPlacement(SeShape) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation placement shape.
setProjectionStr(String) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
setPropertiesValues(int, String[], String[]) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the locator properties and values.
setProperty(String) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata object property name.
setQueryType(int) - Method in class com.esri.sde.sdk.client.SeQueryInfo
Sets the DBMS query type.
setRasterBufSize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the size of the raster buffer.
setRowIdAllocation(int) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets a registration entry's method of allocating ArcSDE-maintained rows ids.
setRowIdColumnName(String) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the row ID column name for a registered table.
setRowIdColumnType(int) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the row ID column name for a registered table.
setRowLocking(int) - Method in class com.esri.sde.sdk.client.SeStreamOp
Sets the row locking environment for a stream.
setRowlocks(boolean) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets row locking to enabled or dis abled on a registered table.
setShape(int, SeShape) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of an SeShape column, which is to be used to insert/update a row in a table/layer.
setShapePointArraySize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the shape geometry array buffer size.
setShapeTypes(int) - Method in class com.esri.sde.sdk.client.SeLayer
Sets shape types.
setShort(int, Short) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of a small integer column, which is to be used to insert/update a row in a table/layer.
setSize(int) - Method in class com.esri.sde.sdk.client.SeSSA.SeInputDesc
Sets the size of data.
setSpatialColumnName(String) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the spatial column name of the layer.
setSpatialConstraints(short, boolean, SeFilter[]) - Method in class com.esri.sde.sdk.client.SeQuery
Sets the spatial filters on the query.
setSrid(int) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
setSSAFilter(String, String) - Method in class com.esri.sde.sdk.client.SeStreamOp
Sets a server-side application filter on a stream.
setState(SeObjectId, SeObjectId, int) - Method in class com.esri.sde.sdk.client.SeStreamOp
Sets state constraints for input and output stream operations.
setStorageTypes(int) - Method in class com.esri.sde.sdk.client.SeLayer
Sets storage types.
setStreamPoolSize(int) - Method in class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Sets the number of stream to be keep in the pool.
setStreamSpec(SeConnection.SeStreamSpec) - Method in class com.esri.sde.sdk.client.SeConnection
Sets some advanced properties for the creation of subsequent stream operations.
setString(int, String) - Method in class com.esri.sde.sdk.client.SeRow
Sets the value of a String column, which is to be used to insert/update a row in a table/layer.
setSymbol(int) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation symbol.
setTableName(String) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the table name for a registered table.
setTableName(String) - Method in class com.esri.sde.sdk.client.SeLayer
Sets the business table containaing spatial column.
setTables(String[]) - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Sets the Tables array in the construct.
setTargetAsLayer(String, String) - Method in class com.esri.sde.sdk.client.SeLog
Sets the logfile target as a layer.
setTargetAsTable(String) - Method in class com.esri.sde.sdk.client.SeLog
Sets the logfile target as a table.
setText(String) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation text.
setTransactionAutoCommit(int) - Method in class com.esri.sde.sdk.client.SeConnection
Sets the user transaction autocommit interval.
setType(int) - Method in class com.esri.sde.sdk.client.SeSSA.SeInputDesc
Sets the SDE column type.
setType(int) - Method in class com.esri.sde.sdk.client.SeLocator
Sets the locator type.
setUnique(boolean) - Method in class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Sets the index unique characterstic.
setValue(double) - Method in class com.esri.sde.sdk.client.SePEParameters
Set a parameter's value.
setValue(String) - Method in class com.esri.sde.sdk.client.SeMetaData
Sets the metadata object property value.
setValues(double, double, double, double, double, double, double, double, double, double, double, double, double, String, int) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
setView(boolean) - Method in class com.esri.sde.sdk.client.SeRegistration
Sets the view flag for a registered table.
setWhere(String) - Method in class com.esri.sde.sdk.client.SeSqlConstruct
Sets the where clause in the construct.
setWriteMode(boolean) - Method in class com.esri.sde.sdk.client.SeInsert
Turns buffering on or off for insert operations.
setWriteMode(boolean) - Method in class com.esri.sde.sdk.client.SeUpdate
Turns buffering on or off for update operations.
setX(double) - Method in class com.esri.sde.sdk.client.SDEPoint
Sets the value of the x coordinate.
setX(double) - Method in class com.esri.sde.sdk.geom.SePoint
setXOffset(double) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation x offset.
setXY(double, double, double) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the x,y false origin and scale factor.
setXY(double, double, double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the xy false origin and scale factor for this coordinate reference object.
setXYByEnvelope(SeExtent) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Calculates and sets the x,y false origin and scale factor from the supplied envelope.
setXYByExtent(SeEnvelope) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Calculates and sets the x,y false origin and scale factor of this coordinate reference object from the given envelope.
setXYCRound(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the xy CRound this coordinate reference object.
setXYHalfSU(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the xy HalfSU for this coordinate reference object.
setXYUnits(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the xy scale factor for this coordinate reference object.
setY(double) - Method in class com.esri.sde.sdk.client.SDEPoint
Sets the value of the y coordinate.
setY(double) - Method in class com.esri.sde.sdk.geom.SePoint
setYOffset(double) - Method in class com.esri.sde.sdk.client.SeShapeAnno
Sets the annotation y offset.
setZ(double) - Method in class com.esri.sde.sdk.client.SDEPoint
Sets the value of the z coordinate.
setZ(double) - Method in class com.esri.sde.sdk.geom.SePoint
setZ(double, double) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the z false origin and scale factor.
setZ(double, double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the z false origin and scale factor of this coordinate reference object.
setZByRange(double, double) - Method in class com.esri.sde.sdk.client.SeCoordinateReference
Sets the z false origin and scale factor from the given range.
setZCRound(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the z CRound for this coordinate reference object.
setZHalfSU(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the z HalfSU for this coordinate reference object.
setZUnits(double) - Method in class com.esri.sde.sdk.geom.SeCoordRef
Sets the z scale factor for this coordinate reference object.
SeUpdate - class com.esri.sde.sdk.client.SeUpdate.
Used to submit an update to an ArcSDE instance.
SeUpdate(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeUpdate
Creates an SeUpdate object given an SeConnection.
SeVersion - class com.esri.sde.sdk.client.SeVersion.
SeVersion.SeVersionLock - class com.esri.sde.sdk.client.SeVersion.SeVersionLock.
SeVersion inner class that retrieves the version locks information from the server.
SeVersion(SeConnection) - Constructor for class com.esri.sde.sdk.client.SeVersion
SeVersion constructor with an SeConnection.
SeVersion(SeConnection, SeObjectId) - Constructor for class com.esri.sde.sdk.client.SeVersion
SeVersion constructor with an SeConnection and version Id that retrieves the version information for the specified ID.
SeVersion(SeConnection, String) - Constructor for class com.esri.sde.sdk.client.SeVersion
SeVersion constructor that retrieves information for specifed version name.
SeWarningException - exception com.esri.sde.sdk.client.SeWarningException.
SeWarningException() - Constructor for class com.esri.sde.sdk.client.SeWarningException
SeWarningException(SeError) - Constructor for class com.esri.sde.sdk.client.SeWarningException
SeWarningException(String) - Constructor for class com.esri.sde.sdk.client.SeWarningException
SeWarningException(String, SeError) - Constructor for class com.esri.sde.sdk.client.SeWarningException
SHAPE_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
shutdown(String) - Method in class com.esri.sde.sdk.client.SeInstance
Shuts down the ArcSde instance.
singleRow(SeObjectId, String, String[]) - Method in class com.esri.sde.sdk.client.SeUpdate
Initializes the update operation on the server with the given row.
sort() - Method in class com.esri.sde.sdk.client.SeLog
Sorts the logfile.
spatialColumn - Variable in class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
srid() - Method in class com.esri.sde.sdk.geom.SeGeometry
Srid takes a geometry object and returns its spatial reference system identity.
srid() - Method in interface com.esri.sde.sdk.geom.Geometry
Srid takes a geometry object and returns its spatial reference system identity.
sridToWKT(int) - Method in interface com.esri.sde.sdk.geom.GeometrySource
Returns the well-known text for spatial reference system given its SRID.
start(String, String) - Method in class com.esri.sde.sdk.client.SeInstance
Starts the ArcSde Instance.
startPoint() - Method in class com.esri.sde.sdk.geom.SeCurve
Returns the first point of a linestring.
startPoint() - Method in class com.esri.sde.sdk.geom.SeLinestring
Returns the first point of a linestring.
startPoint() - Method in interface com.esri.sde.sdk.geom.Curve
Returns the first point of a linestring.
startTransaction() - Method in class com.esri.sde.sdk.client.SeConnection
Tells the ArcSDE instance to begin a transaction session.
STREAM_CLOSED - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_EXECUTE - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_FETCH - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_FILE_QUERY - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_FINISHED - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_INACTIVE - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_INITIALIZE - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_LAYER_QUERY - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_LOG_QUERY - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_NONE - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_PREPARE_SQL - Static variable in class com.esri.sde.sdk.client.SeQuery
STREAM_TYPE - Static variable in class com.esri.sde.sdk.client.SeError
supportDelimitedIdentifier - Variable in class com.esri.sde.sdk.client.SeDBMSInfo
Underlying RDBMS supports delimited identifiers.
Surface - interface com.esri.sde.sdk.geom.Surface.
The Surface interface defines the methods for a class whose instances create a two-dimensional geometric object.
symmetricalDifference(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns the symmetrical difference (logical XOR of space) of two shapes.
symmetricDiff(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that aren’t common to both.
symmetricDiff(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that arenÆt common to both.

T

tableName - Variable in class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
throwException(SeLocale, int, String) - Static method in class com.esri.sde.sdk.client.SeExceptionFactory
toGeneralPath() - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape as a Java path object for Java graphics.
toGeneralPath(int) - Method in class com.esri.sde.sdk.client.SeShape
Returns a shape as a Java path object for Java graphics with a specified rotation.
toSdoDimTable(String) - Method in class com.esri.sde.sdk.client.SeUpdate
Updated the lower and upper bounds of the SDODIM table if necessary.
toString() - Method in class com.esri.sde.sdk.client.SePEDatum
toString() - Method in interface com.esri.sde.sdk.client.SePECoordinateSystem
Retrieve the external representation of this coordinate system.
toString() - Method in class com.esri.sde.sdk.client.SePESpheroid
Retrieve the spheroid's external representation.
toString() - Method in class com.esri.sde.sdk.client.SePEGeographicCS
Retrieve a GCS's external representation.
toString() - Method in class com.esri.sde.sdk.client.SeShape
Returns a string description of the shape.
toString() - Method in class com.esri.sde.sdk.client.SePEProjection
Retrieve a projection's external representation.
toString() - Method in class com.esri.sde.sdk.client.SeColumnDefinition
Returns the ColumnDefinition as a String.
toString() - Method in class com.esri.sde.sdk.client.SePEProjectedCS
Retrieve a PCS's external representation.
toString() - Method in class com.esri.sde.sdk.client.SePEParameters
Retrieve the parameter's external representation.
toString() - Method in class com.esri.sde.sdk.client.SeObjectId
Returns a string representation of the object id.
toString() - Method in class com.esri.sde.sdk.client.SePEPrimeMeridian
Retrieve an external representation of a prime meridian.
toString() - Method in class com.esri.sde.sdk.client.SePEUnit
Retrieve the external representation of a unit.
toString() - Method in class com.esri.sde.sdk.geom.SeGeometry
toString() - Method in class com.esri.sde.sdk.geom.SeLinestring
toString() - Method in class com.esri.sde.sdk.geom.SeCoordRef
Returns the x false origin for this coordinate reference object.
toString() - Method in class com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds
toString() - Method in class com.esri.sde.sdk.geom.GeometryException.InvalidSrid
toString() - Method in class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
toString() - Method in class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
toString() - Method in class com.esri.sde.sdk.geom.SeMultiLinestring
toString() - Method in class com.esri.sde.sdk.geom.SePolygon
toString() - Method in class com.esri.sde.sdk.geom.SeMultiPolygon
toString() - Method in class com.esri.sde.sdk.geom.SeMultiPoint
toString() - Method in class com.esri.sde.sdk.geom.SeEnvelope
Returns the string representation of the envelope.
toString() - Method in class com.esri.sde.sdk.geom.SePoint
toTable(String, String[], String) - Method in class com.esri.sde.sdk.client.SeUpdate
Prepares to update rows in a DBMS table.
touch(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE).
touch(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE).
toWhereStr(SeConnection) - Method in class com.esri.sde.sdk.client.SeDate
Returns a database specific text string equivalent of date object that can be used in the where clause of a sql query.
trimTree(SeObjectId, SeObjectId) - Method in class com.esri.sde.sdk.client.SeState
Trims the instance's state tree between two specified states.
truncate() - Method in class com.esri.sde.sdk.client.SeLayer
Deletes the shapes of a spatially enabled table’s spatial column.
truncate() - Method in class com.esri.sde.sdk.client.SeTable
Deletes the data from a table but keeps the table definition.
TURN_DEFAULT - Static variable in class com.esri.sde.sdk.client.SeShape
TURN_LEFT - Static variable in class com.esri.sde.sdk.client.SeShape
Left hand rotation - Polygon interior is on the Left
TURN_RIGHT - Static variable in class com.esri.sde.sdk.client.SeShape
Right hand rotation - Polygon interior is on the right.
type - Variable in class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
TYPE_BLOB - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_DATE - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_DOUBLE - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_FLOAT - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_INTEGER - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_LINE - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_LINE - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_MULTI_LINE - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_MULTI_LINE - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_MULTI_MASK - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_MULTI_POINT - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_MULTI_POINT - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_MULTI_POLYGON - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_MULTI_POLYGON - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_MULTI_SIMPLE_LINE - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_MULTI_SIMPLE_LINE - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_NIL - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_NIL - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_POINT - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_POINT - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_POLYGON - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_POLYGON - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_RASTER - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_SHAPE - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_SIMPLE_LINE - Static variable in class com.esri.sde.sdk.client.SeLayer
TYPE_SIMPLE_LINE - Static variable in class com.esri.sde.sdk.client.SeShape
TYPE_SMALLINT - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition
TYPE_STRING - Static variable in class com.esri.sde.sdk.client.SeColumnDefinition

U

unequivalenceRows(String, SeObjectId[], boolean) - Method in class com.esri.sde.sdk.client.SeStreamOp
Declares a set of rows in a source state to be no longer equivalent to the version of those rows in the difference state.
union(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
Union returns a geometry object that is the union of two source objects.
union(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Union returns a geometry object that is the union of two source objects.
union(SeShape) - Method in class com.esri.sde.sdk.client.SeShape
Returns the union (logical OR of space) of two shapes.
unlock() - Method in class com.esri.sde.sdk.client.SeObjectLock
Unlocks the object lock.
UNSPECIFIED_TYPE - Static variable in class com.esri.sde.sdk.geom.SeGeometry
updateDBMSStats(String, String, int) - Method in class com.esri.sde.sdk.client.SeTable
Update DBMS statistics on the specified table.If the table is a layer, statistics are generated for all related layer objects including indexes that are specified by tableUpdateMask.

W

within(Geometry) - Method in class com.esri.sde.sdk.geom.SeGeometry
within(Geometry) - Method in interface com.esri.sde.sdk.geom.Geometry
Within takes two geometry objects and returns true if the first object is completely within the second, otherwise it returns false.
writeCompressedFeature(XdrOutputStream) - Method in class com.esri.sde.sdk.client.SeShape

X

X() - Method in interface com.esri.sde.sdk.geom.Point
Returns the x-coordinate value.
X() - Method in class com.esri.sde.sdk.geom.SePoint

Y

Y() - Method in interface com.esri.sde.sdk.geom.Point
Returns the y-coordinate value.
Y() - Method in class com.esri.sde.sdk.geom.SePoint
A B C D E F G H I K L M N O P Q R S T U W X Y
Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


: Overview

All Classes

Packages
com.esri.sde.sdk.client
com.esri.sde.sdk.geom


: Class Hierarchy

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES

Hierarchy For All Packages

Package Hierarchies:
com.esri.sde.sdk.client, com.esri.sde.sdk.geom

Class Hierarchy

  • class java.lang.Object
    • class com.esri.sde.sdk.client.SDEPoint
    • class com.esri.sde.sdk.client.SeConnection
    • class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
    • class com.esri.sde.sdk.geom.SeCoordRef (implements java.lang.Cloneable, java.io.Serializable)
    • class com.esri.sde.sdk.client.SeDBMSInfo
    • class com.esri.sde.sdk.client.SeDefs
    • class com.esri.sde.sdk.geom.SeEnvelope
    • class com.esri.sde.sdk.client.SeExceptionFactory
    • class com.esri.sde.sdk.geom.SeGeometry (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Geometry, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeCurve (implements com.esri.sde.sdk.geom.Curve)
        • class com.esri.sde.sdk.geom.SeLinestring (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Linestring, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeGeometryCollection (implements java.lang.Cloneable, com.esri.sde.sdk.geom.GeometryCollection, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiCurve (implements com.esri.sde.sdk.geom.MultiCurve)
          • class com.esri.sde.sdk.geom.SeMultiLinestring (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiLinestring, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiPoint (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiPoint, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiSurface (implements com.esri.sde.sdk.geom.MultiSurface)
          • class com.esri.sde.sdk.geom.SeMultiPolygon (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiPolygon, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SePoint (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Point, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeSurface (implements com.esri.sde.sdk.geom.Surface)
        • class com.esri.sde.sdk.geom.SePolygon (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Polygon, java.io.Serializable)
    • class com.esri.sde.sdk.client.SeInstance
    • class com.esri.sde.sdk.client.SeLocale
    • class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
    • class com.esri.sde.sdk.client.SePEDatum (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEGeographicCS (implements java.lang.Cloneable, com.esri.sde.sdk.client.SePECoordinateSystem)
    • class com.esri.sde.sdk.client.SePEHorizon
    • class com.esri.sde.sdk.client.SePEParameters
    • class com.esri.sde.sdk.client.SePEPCSConstants
    • class com.esri.sde.sdk.client.SePEPrimeMeridian (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEProjectedCS (implements java.lang.Cloneable, com.esri.sde.sdk.client.SePECoordinateSystem)
    • class com.esri.sde.sdk.client.SePEProjection (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEProjection.Forward (implements com.esri.sde.sdk.client.SePEProjectionFunction)
    • class com.esri.sde.sdk.client.SePEProjection.Horizon (implements com.esri.sde.sdk.client.SePEHorizonFunction)
    • class com.esri.sde.sdk.client.SePEProjection.Inverse (implements com.esri.sde.sdk.client.SePEProjectionFunction)
    • class com.esri.sde.sdk.client.SePEProjection.PCSConstFunc (implements com.esri.sde.sdk.client.SePEPCSConstFunction)
    • class com.esri.sde.sdk.client.SePESpheroid (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEUnit (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SeRow
    • class com.esri.sde.sdk.client.SeServerObj
      • class com.esri.sde.sdk.client.SeColumnDefinition (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeCoordinateReference (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeDate
      • class com.esri.sde.sdk.client.SeError
      • class com.esri.sde.sdk.client.SeExtent
      • class com.esri.sde.sdk.client.SeFilter
        • class com.esri.sde.sdk.client.SeShapeFilter
        • class com.esri.sde.sdk.client.SeShapeIdFilter
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
      • class com.esri.sde.sdk.client.SeLayer (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
      • class com.esri.sde.sdk.client.SeLayer.SeLayerLock
      • class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
      • class com.esri.sde.sdk.client.SeLayer.SeLayerStats
      • class com.esri.sde.sdk.client.SeLocator
      • class com.esri.sde.sdk.client.SeLog (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeMetaData (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeObjectId (implements java.lang.Cloneable, java.lang.Comparable)
      • class com.esri.sde.sdk.client.SeObjectLock
      • class com.esri.sde.sdk.client.SeQueryInfo (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeRegistration (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeRelease (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeShape (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeShapeAnno
      • class com.esri.sde.sdk.client.SeSpatialReference
      • class com.esri.sde.sdk.client.SeSqlConstruct (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeSSA.SeInputDesc
      • class com.esri.sde.sdk.client.SeState (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeTable
      • class com.esri.sde.sdk.client.SeTable.SeTableIdRange
      • class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
      • class com.esri.sde.sdk.client.SeTable.SeTableLock
      • class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
      • class com.esri.sde.sdk.client.SeVersion (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeVersion.SeVersionLock
    • class com.esri.sde.sdk.client.SeStreamOp
      • class com.esri.sde.sdk.client.SeDelete
      • class com.esri.sde.sdk.client.SeInsert
      • class com.esri.sde.sdk.client.SeQuery
      • class com.esri.sde.sdk.client.SeSSA
      • class com.esri.sde.sdk.client.SeUpdate
    • class com.esri.sde.sdk.client.SeTable.SeTableStats
    • class java.lang.Throwable (implements java.io.Serializable)
      • class java.lang.Exception
        • class com.esri.sde.sdk.geom.GeometryException
          • class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
          • class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
          • class com.esri.sde.sdk.geom.GeometryException.InvalidSrid
        • class java.lang.RuntimeException
          • class java.lang.IndexOutOfBoundsException
            • class com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds
        • class com.esri.sde.sdk.client.SeException
          • class com.esri.sde.sdk.client.SeDoesNotExistException
          • class com.esri.sde.sdk.client.SeExistsException
          • class com.esri.sde.sdk.client.SeInvalidShapeException
          • class com.esri.sde.sdk.client.SeInvalidValueException
          • class com.esri.sde.sdk.client.SeNoAccessException
          • class com.esri.sde.sdk.client.SeWarningException

Interface Hierarchy

  • interface com.esri.sde.sdk.geom.Geometry
    • interface com.esri.sde.sdk.geom.Curve
      • interface com.esri.sde.sdk.geom.Linestring
    • interface com.esri.sde.sdk.geom.GeometryCollection
      • interface com.esri.sde.sdk.geom.MultiCurve
        • interface com.esri.sde.sdk.geom.MultiLinestring
      • interface com.esri.sde.sdk.geom.MultiPoint
      • interface com.esri.sde.sdk.geom.MultiSurface
        • interface com.esri.sde.sdk.geom.MultiPolygon
    • interface com.esri.sde.sdk.geom.Point
    • interface com.esri.sde.sdk.geom.Surface
      • interface com.esri.sde.sdk.geom.Polygon
  • interface com.esri.sde.sdk.geom.GeometryFactory
  • interface com.esri.sde.sdk.geom.GeometrySource
  • interface com.esri.sde.sdk.client.SePECoordinateSystem
  • interface com.esri.sde.sdk.client.SePEHorizonFunction
  • interface com.esri.sde.sdk.client.SePEPCSConstFunction
  • interface com.esri.sde.sdk.client.SePEProjectionFunction
  • interface com.esri.sde.sdk.client.SeShapeCBMethod
Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


The front page has been relocated.Please see:
Frame version
Non-frame version.


Serialized Form

Package com.esri.sde.sdk.client

Class com.esri.sde.sdk.client.SeDoesNotExistException implements Serializable

Class com.esri.sde.sdk.client.SeException implements Serializable

Serialized Fields

mSdeErr

SeError mSdeErr

Class com.esri.sde.sdk.client.SeExistsException implements Serializable

Class com.esri.sde.sdk.client.SeInvalidShapeException implements Serializable

Class com.esri.sde.sdk.client.SeInvalidValueException implements Serializable

Class com.esri.sde.sdk.client.SeNoAccessException implements Serializable

Class com.esri.sde.sdk.client.SeWarningException implements Serializable

Package com.esri.sde.sdk.geom

Class com.esri.sde.sdk.geom.GeometryException implements Serializable

Class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries implements Serializable

Serialized Fields

geometry

Geometry[] geometry

Class com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds implements Serializable

Serialized Fields

geometry

Geometry geometry

index

int index

Class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry implements Serializable

Serialized Fields

geometry

Geometry geometry

Class com.esri.sde.sdk.geom.GeometryException.InvalidSrid implements Serializable

Serialized Fields

index

int index

Class com.esri.sde.sdk.geom.SeCoordRef implements Serializable

Serialized Fields

mCr

com.esri.sde.sdk.geom.SgCoordRef mCr

Class com.esri.sde.sdk.geom.SeCurve implements Serializable

Class com.esri.sde.sdk.geom.SeGeometry implements Serializable

Serialized Fields

mAnnoText

java.lang.String mAnnoText

mArea

double mArea

mFalseM

double mFalseM

mFalsex

double mFalsex

mFalsey

double mFalsey

mFalseZ

double mFalseZ

mLength

double mLength

mMaxM

double mMaxM

mMaxX

double mMaxX

mMaxY

double mMaxY

mMaxZ

double mMaxZ

mMinM

double mMinM

mMinX

double mMinX

mMinY

double mMinY

mMinZ

double mMinZ

mMUnits

double mMUnits

mNumPoints

int mNumPoints

mPoints

byte[] mPoints

mProjStr

java.lang.String mProjStr

mShapeSrid

int mShapeSrid

mShapeType

int mShapeType

mSrid

int mSrid

mXYUnits

double mXYUnits

mZUnits

double mZUnits

Class com.esri.sde.sdk.geom.SeGeometryCollection implements Serializable

Serialized Fields

xys

com.esri.sde.sdk.geom.SgShapePoint[] xys

Class com.esri.sde.sdk.geom.SeLinestring implements Serializable

Serialized Fields

ms

double[] ms

xys

com.esri.sde.sdk.geom.SgShapePoint[] xys

zs

double[] zs

Class com.esri.sde.sdk.geom.SeMultiCurve implements Serializable

Class com.esri.sde.sdk.geom.SeMultiLinestring implements Serializable

Serialized Fields

ms

double[] ms

partOffsets

int[] partOffsets

zs

double[] zs

Class com.esri.sde.sdk.geom.SeMultiPoint implements Serializable

Serialized Fields

ms

double[] ms

zs

double[] zs

Class com.esri.sde.sdk.geom.SeMultiPolygon implements Serializable

Serialized Fields

ms

double[] ms

partNum

int[] partNum

partOffsets

int[] partOffsets

zs

double[] zs

Class com.esri.sde.sdk.geom.SeMultiSurface implements Serializable

Class com.esri.sde.sdk.geom.SePoint implements Serializable

Serialized Fields

is3D

boolean is3D

isMeasured

boolean isMeasured

m

double m

pt

com.esri.sde.sdk.geom.SgShapePoint pt

z

double z

Class com.esri.sde.sdk.geom.SePolygon implements Serializable

Serialized Fields

ms

double[] ms

subPartOffset

int[] subPartOffset

xys

com.esri.sde.sdk.geom.SgShapePoint[] xys

zs

double[] zs

Class com.esri.sde.sdk.geom.SeSurface implements Serializable

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


: Package com.esri.sde.sdk.client

 com.esri.sde.sdk.client
Interfaces
SePECoordinateSystem
SePEHorizonFunction
SePEPCSConstFunction
SePEProjectionFunction
SeShapeCBMethod
Classes
SDEPoint
SeColumnDefinition
SeConnection
SeConnection.SeStreamSpec
SeCoordinateReference
SeDate
SeDBMSInfo
SeDefs
SeDelete
SeError
SeExceptionFactory
SeExtent
SeFilter
SeInsert
SeInstance
SeInstance.SeInstanceConfiguration
SeInstance.SeInstanceLocks
SeInstance.SeInstanceStateLocks
SeInstance.SeInstanceStats
SeInstance.SeInstanceStatus
SeInstance.SeInstanceTableLocks
SeInstance.SeInstanceUsers
SeInstance.SeInstanceVersionLocks
SeLayer
SeLayer.SeLayerGridStats
SeLayer.SeLayerLock
SeLayer.SeLayerSpatialIndexStats
SeLayer.SeLayerStats
SeLocale
SeLocator
SeLog
SeMetaData
SeObjectId
SeObjectLock
SePEDatum
SePEGeographicCS
SePEHorizon
SePEParameters
SePEPCSConstants
SePEPrimeMeridian
SePEProjectedCS
SePEProjection
SePESpheroid
SePEUnit
SeQuery
SeQueryInfo
SeRegistration
SeRelease
SeRow
SeShape
SeShapeAnno
SeShapeFilter
SeShapeIdFilter
SeSpatialReference
SeSqlConstruct
SeSSA
SeSSA.SeInputDesc
SeState
SeStreamOp
SeTable
SeTable.SeTableIdRange
SeTable.SeTableIndexDefs
SeTable.SeTableLock
SeTable.SeTableRowLockInfo
SeTable.SeTableStats
SeUpdate
SeVersion
SeVersion.SeVersionLock
Exceptions
SeDoesNotExistException
SeException
SeExistsException
SeInvalidShapeException
SeInvalidValueException
SeNoAccessException
SeWarningException


: Package com.esri.sde.sdk.client

Overview Package Class Tree Index Help
PREV PACKAGE NEXT PACKAGE FRAMES NO FRAMES

Package com.esri.sde.sdk.client

This package contains classes that provide the basic functionality exposed in the C sde81 client library.

See:
Description

Interface Summary
SePECoordinateSystem | A Coordinate System superclass to manipulate a Projected and Geographic Coordinate System object.
SePEHorizonFunction | Projection horizon for projections.
SePEPCSConstFunction | Document the purpose of this class.
SePEProjectionFunction | This class defines the methods for a map projection.
SeShapeCBMethod | Create your own calculus-based shape comparison method by imlementing this interface.

Class Summary
SDEPoint | Represents the read-only SDE point that can be returned from or used as an argument to SeShape methods.
SeColumnDefinition | Represents the description of a table's column.
SeConnection | Used to establish and maintain a connection to an ArcSDE server.
SeConnection.SeStreamSpec | SeConnection inner class used to retrieve the stream operation specifications set on a connection.
SeCoordinateReference | Represents the Coordinate Reference of a Geometry.
SeDate | Represents the ArcSDE Date Structure.
SeDBMSInfo | Stores RDBMS related information.
SeDefs | Holds the public constants for the sde client package.
SeDelete | Used to perform a Delete operation.
SeError | Represents an error returned by the ArcSDE server.
SeExceptionFactory |
SeExtent | Represents an extent in real world coordinates.
SeFilter | Abstract class that defines search methods used in a spatial constraint.
SeInsert | Used to insert data into tables/layers and rows in an ArcSDE instance.
SeInstance | Used to manage and query an ArcSDE Instance.
SeInstance.SeInstanceConfiguration | SeInstance inner class that retrieves the configuration of ArcSde instance.
SeInstance.SeInstanceLocks | SeInstance inner class that retrieves locks information for the ArcSde instance.
SeInstance.SeInstanceStateLocks | SeInstance inner class that retrieves state locks information for the ArcSde instance.
SeInstance.SeInstanceStats | SeInstance inner class that retrieves a list of user information for the ArcSde instance.
SeInstance.SeInstanceStatus | SeInstance inner class that retrieves the status of an ArcSde instance.
SeInstance.SeInstanceTableLocks | SeInstance inner class that retrieves table locks information for the ArcSde instance.
SeInstance.SeInstanceUsers | SeInstance inner class that retrieves a list of user information for the ArcSde instance.
SeInstance.SeInstanceVersionLocks | SeInstance inner class that retrieves version locks information for the ArcSde instance.
SeLayer | SeLayer - An object that spatially enables an existing RDBMS table.
SeLayer.SeLayerGridStats | SeLayer inner class that retrieves the spatial index grid statistics.
SeLayer.SeLayerLock | SeLayer inner class that retrieves the layer locks information from the server.
SeLayer.SeLayerSpatialIndexStats | SeLayer inner class that retrieves the spatial index statistics for a layer.
SeLayer.SeLayerStats | SeLayer inner class that obtains the statistics for a layer.
SeLocale | Used to localize sde client.
SeLocator | Represents the locator object associated with an ArcSde service.
SeLog | Used when managing a persistent set of rows from a table or layer.
SeMetaData |
SeObjectId | Represents an unique object identifier for all ArcSDE server objects.
SeObjectLock | SeObjectLocks allow you to set an arbitrary, application-defined lock on an object.
SePEDatum | A Datum defines the position of the spheroid relative to the center of the Earth.
SePEGeographicCS | A geographic coordinate system is a three-dimensional reference system that locates points on the Earth's surface.
SePEHorizon | A projection horizon defines the limits of a map projection with particular parameters.
SePEParameters | Parameters are required by projection and geographic transformation objects.
SePEPCSConstants | Document the purpose of this class.
SePEPrimeMeridian | This class defines a prime meridian object.
SePEProjectedCS | A projected coordinate system is a two-dimensional planar surface.
SePEProjection | This class defines a map projection object.
SePESpheroid | This class defines the shape and size of a geographic coordinate system's surface.
SePEUnit | This class defines a unit object.
SeQuery | Used to submit a query to an ArcSDE instance.
SeQueryInfo | Holds information for advanced query operations.
SeRegistration |
SeRelease | Represents the version description of an ArcSDE instance.
SeRow | Represents a row of a result set from a fetch operation or a row of data to be inserted or updated.
SeShape | The ESRI representation of a geometric shape.
SeShapeAnno | Client side annotation utility functions
SeShapeFilter | Represents a spatial filter that contains a geometric shape to be used as the constraint.
SeShapeIdFilter | The SeShapeIdFilter class allows shapes to be stored, deleted, retrieved, and searched by their shape identifier (FID).
SeSpatialReference | Represents the Spatial Reference of an ArcSde layer.
SeSqlConstruct | An SQL construct is used any time an application needs to specify tables or constraining where clauses in an SDE application.
SeSSA | An SSA is an SDE application that runs in the SDE server's process space.
SeSSA.SeInputDesc | SeSSA inner class that defines the input .
SeState |
SeStreamOp |
SeTable | SeTable - An object that creates/alters/deletes/queries a DBMS table through an sde server.
SeTable.SeTableIdRange |
SeTable.SeTableIndexDefs | SeTable inner class that stores the index definition information for a table.
SeTable.SeTableLock | SeTable inner class that retrieves the locks information for a table.
SeTable.SeTableRowLockInfo | SeTable inner class that retrieves the rowlocks information from the server.
SeTable.SeTableStats | SeTable inner class that retrieves the statistics information for a column.
SeUpdate | Used to submit an update to an ArcSDE instance.
SeVersion |
SeVersion.SeVersionLock | SeVersion inner class that retrieves the version locks information from the server.

Exception Summary
SeDoesNotExistException |
SeException | Thrown when an ArcSDE specific error has occurred.
SeExistsException |
SeInvalidShapeException |
SeInvalidValueException |
SeNoAccessException |
SeWarningException |

Package com.esri.sde.sdk.client Description

This package contains classes that provide the basic functionality exposed in the C sde81 client library. Developers will instantiate and utilize objects from this package to create an ArcSDE client application in pure Java.

Overview Package Class Tree Index Help
PREV PACKAGE NEXT PACKAGE FRAMES NO FRAMES


: com.esri.sde.sdk.client Class Hierarchy

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES

Hierarchy For Package com.esri.sde.sdk.client

Package Hierarchies:
All Packages

Class Hierarchy

  • class java.lang.Object
    • class com.esri.sde.sdk.client.SDEPoint
    • class com.esri.sde.sdk.client.SeConnection
    • class com.esri.sde.sdk.client.SeConnection.SeStreamSpec
    • class com.esri.sde.sdk.client.SeDBMSInfo
    • class com.esri.sde.sdk.client.SeDefs
    • class com.esri.sde.sdk.client.SeExceptionFactory
    • class com.esri.sde.sdk.client.SeInstance
    • class com.esri.sde.sdk.client.SeLocale
    • class com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
    • class com.esri.sde.sdk.client.SePEDatum (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEGeographicCS (implements java.lang.Cloneable, com.esri.sde.sdk.client.SePECoordinateSystem)
    • class com.esri.sde.sdk.client.SePEHorizon
    • class com.esri.sde.sdk.client.SePEParameters
    • class com.esri.sde.sdk.client.SePEPCSConstants
    • class com.esri.sde.sdk.client.SePEPrimeMeridian (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEProjectedCS (implements java.lang.Cloneable, com.esri.sde.sdk.client.SePECoordinateSystem)
    • class com.esri.sde.sdk.client.SePEProjection (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEProjection.Forward (implements com.esri.sde.sdk.client.SePEProjectionFunction)
    • class com.esri.sde.sdk.client.SePEProjection.Horizon (implements com.esri.sde.sdk.client.SePEHorizonFunction)
    • class com.esri.sde.sdk.client.SePEProjection.Inverse (implements com.esri.sde.sdk.client.SePEProjectionFunction)
    • class com.esri.sde.sdk.client.SePEProjection.PCSConstFunc (implements com.esri.sde.sdk.client.SePEPCSConstFunction)
    • class com.esri.sde.sdk.client.SePESpheroid (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SePEUnit (implements java.lang.Cloneable)
    • class com.esri.sde.sdk.client.SeRow
    • class com.esri.sde.sdk.client.SeServerObj
      • class com.esri.sde.sdk.client.SeColumnDefinition (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeCoordinateReference (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeDate
      • class com.esri.sde.sdk.client.SeError
      • class com.esri.sde.sdk.client.SeExtent
      • class com.esri.sde.sdk.client.SeFilter
        • class com.esri.sde.sdk.client.SeShapeFilter
        • class com.esri.sde.sdk.client.SeShapeIdFilter
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStats
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
      • class com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
      • class com.esri.sde.sdk.client.SeLayer (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
      • class com.esri.sde.sdk.client.SeLayer.SeLayerLock
      • class com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
      • class com.esri.sde.sdk.client.SeLayer.SeLayerStats
      • class com.esri.sde.sdk.client.SeLocator
      • class com.esri.sde.sdk.client.SeLog (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeMetaData (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeObjectId (implements java.lang.Cloneable, java.lang.Comparable)
      • class com.esri.sde.sdk.client.SeObjectLock
      • class com.esri.sde.sdk.client.SeQueryInfo (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeRegistration (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeRelease (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeShape (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeShapeAnno
      • class com.esri.sde.sdk.client.SeSpatialReference
      • class com.esri.sde.sdk.client.SeSqlConstruct (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeSSA.SeInputDesc
      • class com.esri.sde.sdk.client.SeState (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeTable
      • class com.esri.sde.sdk.client.SeTable.SeTableIdRange
      • class com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
      • class com.esri.sde.sdk.client.SeTable.SeTableLock
      • class com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
      • class com.esri.sde.sdk.client.SeVersion (implements java.lang.Cloneable)
      • class com.esri.sde.sdk.client.SeVersion.SeVersionLock
    • class com.esri.sde.sdk.client.SeStreamOp
      • class com.esri.sde.sdk.client.SeDelete
      • class com.esri.sde.sdk.client.SeInsert
      • class com.esri.sde.sdk.client.SeQuery
      • class com.esri.sde.sdk.client.SeSSA
      • class com.esri.sde.sdk.client.SeUpdate
    • class com.esri.sde.sdk.client.SeTable.SeTableStats
    • class java.lang.Throwable (implements java.io.Serializable)
      • class java.lang.Exception
        • class com.esri.sde.sdk.client.SeException
          • class com.esri.sde.sdk.client.SeDoesNotExistException
          • class com.esri.sde.sdk.client.SeExistsException
          • class com.esri.sde.sdk.client.SeInvalidShapeException
          • class com.esri.sde.sdk.client.SeInvalidValueException
          • class com.esri.sde.sdk.client.SeNoAccessException
          • class com.esri.sde.sdk.client.SeWarningException

Interface Hierarchy

  • interface com.esri.sde.sdk.client.SePECoordinateSystem
  • interface com.esri.sde.sdk.client.SePEHorizonFunction
  • interface com.esri.sde.sdk.client.SePEPCSConstFunction
  • interface com.esri.sde.sdk.client.SePEProjectionFunction
  • interface com.esri.sde.sdk.client.SeShapeCBMethod
Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


: Class SDEPoint

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SDEPoint

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SDEPoint
public class SDEPoint
extends java.lang.Object

Represents the read-only SDE point that can be returned from or used as an argument to SeShape methods.

Constructor Summary
SDEPoint(double x, double y)
Constructs a point with x,y world coordinates.
SDEPoint(double x, double y, double z)
Constructs a point with x, y, z world coordinates.
SDEPoint(double x, double y, double z, double m)
Constructs a point with x,y,z world coordinates and measure m.
Method Summary
double | getM() Returns the measure value.
double | getX() Returns the X coordinate value.
double | getY() Returns the Y coordinate value.
double | getZ() Returns the Z coordinate value.
boolean | is3D() Returns TRUE if the point has a coordinate in the third dimension.
boolean | isMeasured() Returns TRUE if the point has a valid measure value.
void | setM(double m) Sets the measure value of the point.
void | setX(double x) Sets the value of the x coordinate.
void | setY(double y) Sets the value of the y coordinate.
void | setZ(double z) Sets the value of the z coordinate.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SDEPoint

public SDEPoint(double x,
                double y)
Constructs a point with x,y world coordinates.

SDEPoint

public SDEPoint(double x,
                double y,
                double z)
Constructs a point with x, y, z world coordinates.

SDEPoint

public SDEPoint(double x,
                double y,
                double z,
                double m)
Constructs a point with x,y,z world coordinates and measure m.
Method Detail

is3D

public boolean is3D()
Returns TRUE if the point has a coordinate in the third dimension.

isMeasured

public boolean isMeasured()
Returns TRUE if the point has a valid measure value.

getX

public double getX()
Returns the X coordinate value.

getY

public double getY()
Returns the Y coordinate value.

getZ

public double getZ()
            throws SeException
Returns the Z coordinate value.
Throws:
SeException - SE_INVALID_GEOMETRY_TYPE if the point is not 3D.

getM

public double getM()
            throws SeException
Returns the measure value.
Throws:
SeException - SE_INVALID_GEOMETRY_TYPE if the point does not have a measure.

setX

public void setX(double x)
Sets the value of the x coordinate.

setY

public void setY(double y)
Sets the value of the y coordinate.

setZ

public void setZ(double z)
Sets the value of the z coordinate.

setM

public void setM(double m)
Sets the measure value of the point.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SeColumnDefinition

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeColumnDefinition

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeColumnDefinition
public class SeColumnDefinition
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Represents the description of a table's column.

Field Summary
static int | TYPE_BLOB
static int | TYPE_DATE
static int | TYPE_DOUBLE
static int | TYPE_FLOAT
static int | TYPE_INTEGER
static int | TYPE_RASTER
static int | TYPE_SHAPE
static int | TYPE_SMALLINT
static int | TYPE_STRING
Constructor Summary
SeColumnDefinition()
Defines a blank column definition.
SeColumnDefinition(java.lang.String name, int type, int size, int scale, boolean isNullable)
Defines a column of a table.
Method Summary
java.lang.Object | clone() Returns a new instance of this SeColumnDefinition.
java.lang.String | getName() Returns the name of the column as a String.
short | getRowIdType() Returns the registration row id column type.
short | getScale() Returns the scale of the column.
int | getSize() Returns the size of the column.
int | getType() Returns the SDE column type.
java.lang.String | toString() Returns the ColumnDefinition as a String.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Field Detail

TYPE_SMALLINT

public static final int TYPE_SMALLINT

TYPE_INTEGER

public static final int TYPE_INTEGER

TYPE_FLOAT

public static final int TYPE_FLOAT

TYPE_DOUBLE

public static final int TYPE_DOUBLE

TYPE_STRING

public static final int TYPE_STRING

TYPE_BLOB

public static final int TYPE_BLOB

TYPE_DATE

public static final int TYPE_DATE

TYPE_SHAPE

public static final int TYPE_SHAPE

TYPE_RASTER

public static final int TYPE_RASTER
Constructor Detail

SeColumnDefinition

public SeColumnDefinition()
Defines a blank column definition.

SeColumnDefinition

public SeColumnDefinition(java.lang.String name,
                          int type,
                          int size,
                          int scale,
                          boolean isNullable)
                   throws SeException
Defines a column of a table.
Parameters:
name - The column name.
type - The SDE data type.
size - The size of the column values.
scale - Number of digits after decimal.
isNullable - Allow Null values.
Method Detail

getType

public int getType()
Returns the SDE column type.

The possible types are:
TYPE_SMALLINT = 1;
TYPE_INTEGER  = 2;
TYPE_FLOAT    = 3;
TYPE_DOUBLE   = 4;
TYPE_STRING   = 5;
TYPE_BLOB     = 6;
TYPE_DATE     = 7;
TYPE_SHAPE    = 8;
TYPE_RASTER   = 9;

getRowIdType

public short getRowIdType()
Returns the registration row id column type.

The possible types are:
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE = 1;
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER = 2;
SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE = 3;

getName

public java.lang.String getName()
Returns the name of the column as a String.

getSize

public int getSize()
Returns the size of the column.

getScale

public short getScale()
Returns the scale of the column.

toString

public java.lang.String toString()
Returns the ColumnDefinition as a String.
Overrides:
toString in class java.lang.Object

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Returns a new instance of this SeColumnDefinition.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeConnection

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeConnection

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeConnection
public class SeConnection
extends java.lang.Object

Used to establish and maintain a connection to an ArcSDE server. The first step in using the SDE software is to connect with an ArcSDE server. To establish a connection, the application must provide the following information - The name of the host server for the ArcSDE instance, the name of the instance, the name of the database (if required by the DBMS), the user name, and the password for the RDBMS user.

The SDE software processes the connection request on the specified host and a connection handle to the application is returned once the connection is established. All operations performed using this connection are executed as the named RDBMS user.

Inner Class Summary
static class SeConnection.SeStreamSpec
SeConnection inner class used to retrieve the stream operation specifications set on a connection.
Field Summary
static int | SE_LOCK_POLICY SeConnection object concurrency policy.
static int | SE_ONE_THREAD_POLICY SeConnection object concurrency policy.
static int | SE_STREAM_POOL_RESET_FALSE
static int | SE_TRYLOCK_POLICY SeConnection object concurrency policy.
static int | SE_UNPROTECTED_POLICY SeConnection object concurrency policy.
Constructor Summary
SeConnection(java.lang.String server, int instance, java.lang.String database, java.lang.String username, java.lang.String pass)
Constructs a connection to an ArcSDE server.
SeConnection(java.lang.String server, int instance, java.lang.String database, java.lang.String username, java.lang.String pass, java.util.Locale connLocale)
Constructs a connection to an ArcSDE server.
Method Summary
void | close() Closes the connection to the ArcSDE instance.
void | commitTransaction() Commits changes to the underlying database.
void | databaseUse(java.lang.String database) Changes the database or data source being used by a connection.
void | exportDbtune(java.lang.String dbtuneFile) Exports data to a file from the DBTUNE table.
void | freeAllLocks() Frees all SDE locks owned by the current user.
java.lang.String[] | getDatabaseList() Returns a list of databases or data sources for a DBMS instance.
java.lang.String | getDatabaseName() Returns the name of the connection database.
SeDBMSInfo | getDBMSInfo() Returns information about the underlying RDBMS used by the sde server.
int | getInstance() Returns the ArcSDE instance's port number.
java.lang.String[] | getKeywordInfo() Returns a list of RDBMS reserved keywords.
java.util.Vector | getLayers() Retrieves a list of all ArcSde layers that are accessible to the current user.
java.util.Vector | getList(java.lang.Class cType) Returns a Vector of objects from an ArcSDE instance given the class type.
SeLocale | getLocale()
SeLocator[] | getLocatorList(java.lang.String whereClause) Returns the list of all accessible locators.
SeLog[] | getLogfileList(java.lang.String owner) Returns a list of all logfiles owned by the specified owner.
SeLog[] | getLogfileList(java.lang.String owner, java.lang.String table) Returns a list of all logfiles for the specified layer or table.
SeMetaData[] | getMetaDataList(java.lang.String whereClause) Returns the meta-data associated with a table.
java.util.Vector | getRegisteredTables() Returns an array of SeRegistration objects containing information for all registered tables.
SeRelease | getRelease() Returns the version description of the ArcSDE instance with which the connection has been established.
java.lang.String | getServer() Returns the name of the ArcSDE server.
java.util.Date | getServerTime() Returns the current time on the server.
java.util.Vector | getSpatialRefList() Returns an array of SeSpatialReference objects.
java.lang.String | getSQLInfo(int sqlId) Returns the RDBMS dependent function name according to the specified sqlId.
SeState[] | getStateList(java.lang.String whereClause) Returns an array of SeState objects containing information for states filtered by optional where clause.
SeConnection.SeStreamSpec | getStreamSpec() Returns the properties of a stream operation (Query/Insert/Update/Delete).
java.util.Vector | getTables(int permissions) Retrieves a list of all tables, views, and synonyms which are available to the current user, with the given permissions.
java.lang.String | getUser() Returns the name of the ArcSDE user establishing the connection.
SeVersion[] | getVersionList(java.lang.String whereClause) Returns an array of SeVersion objects containing information for version filtered by optional where clause.
void | importDbtune(java.lang.String dbtuneFile) Imports the data to ArcSde DBTUNE table.
boolean | isClosed() Returns TRUE if the connection has been closed, FALSE otherwise.
void | rollbackTransaction() Rollback the current transaction.
void | setConcurrency(int policy) Sets the concurrency policy for the SeConnection object.
void | setStreamSpec(SeConnection.SeStreamSpec specs) Sets some advanced properties for the creation of subsequent stream operations.
int | setTransactionAutoCommit(int interval) Sets the user transaction autocommit interval.
void | startTransaction() Tells the ArcSDE instance to begin a transaction session.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_UNPROTECTED_POLICY

public static final int SE_UNPROTECTED_POLICY
SeConnection object concurrency policy. If two or more threads call an SDE object method using same SeConnection object unpredictable results may be obtained.

SE_ONE_THREAD_POLICY

public static final int SE_ONE_THREAD_POLICY
SeConnection object concurrency policy. Only one thread that sets the concurrency can use the SeConnection object.

SE_TRYLOCK_POLICY

public static final int SE_TRYLOCK_POLICY
SeConnection object concurrency policy. It allows only one thread to use the SeConnection object at any given time. If one thread is already using SeConnection object the second thread will throw an exception indicating SE_CONNECTION_IN_USE error.

SE_LOCK_POLICY

public static final int SE_LOCK_POLICY
SeConnection object concurrency policy. Same as SE_TRYLOCK_POLICY except if another thread is using the connection object the current thread will wait untill the object lock is freed up.

SE_STREAM_POOL_RESET_FALSE

public static final int SE_STREAM_POOL_RESET_FALSE
Constructor Detail

SeConnection

public SeConnection(java.lang.String server,
                    int instance,
                    java.lang.String database,
                    java.lang.String username,
                    java.lang.String pass)
             throws SeException
Constructs a connection to an ArcSDE server. The instance is received as a port number.
Parameters:
server - name of the server machine.
instance - port number that the server instance is listening on.
database - specific database. Can be "".
username - name of the rdbms user account to connect as.
password - user's password
Throws:
SeException -

SeConnection

public SeConnection(java.lang.String server,
                    int instance,
                    java.lang.String database,
                    java.lang.String username,
                    java.lang.String pass,
                    java.util.Locale connLocale)
             throws SeException
Constructs a connection to an ArcSDE server. The instance is received as a String containing the port number. NOTE: The ArcSDE Java API Localization Kit is required to use this constructor.
Parameters:
server - name of the server machine.
instance - port number that the server instance is listening on.
database - specific database. Can be "".
username - name of the account to connect as.
password - user's password
connLocale - Locale object that identifies Locale properties.
Throws:
SeException -
Method Detail

freeAllLocks

public void freeAllLocks()
                  throws SeException
Frees all SDE locks owned by the current user.
Throws:
SeException -

getDatabaseName

public java.lang.String getDatabaseName()
                                 throws SeException
Returns the name of the connection database.

getDBMSInfo

public SeDBMSInfo getDBMSInfo()
                       throws SeException
Returns information about the underlying RDBMS used by the sde server. The SeDBMSInfo object provides information about the underlying database type and its properties such as the RDBMSs ability to add a column, case sensitivity etc.
Returns:
SeDBMSInfo
Throws:
SeException -
SeException -
See Also:
SeDBMSInfo

getKeywordInfo

public java.lang.String[] getKeywordInfo()
                                  throws SeException
Returns a list of RDBMS reserved keywords.
Returns:
An array of RDBMS reserved keywords.
Throws:
SeException -

getLocale

public SeLocale getLocale()

getList

public java.util.Vector getList(java.lang.Class cType)
                         throws SeException
Returns a Vector of objects from an ArcSDE instance given the class type. The following ArcSde objects can be retrieved: Selayer SeRegistration SeSpatialReference SeTable

getTables

public java.util.Vector getTables(int permissions)
                           throws SeException
Retrieves a list of all tables, views, and synonyms which are available to the current user, with the given permissions. Permissions are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
Parameters:
permissions - the permission mask.

getRegisteredTables

public java.util.Vector getRegisteredTables()
                                     throws SeException
Returns an array of SeRegistration objects containing information for all registered tables.
Returns:
Vector

getVersionList

public SeVersion[] getVersionList(java.lang.String whereClause)
                           throws SeException
Returns an array of SeVersion objects containing information for version filtered by optional where clause.
Parameters:
whereClause - optional where clause to filter the data.
Returns:
SeVersion[]
Throws:
SeException -

getStateList

public SeState[] getStateList(java.lang.String whereClause)
                       throws SeException
Returns an array of SeState objects containing information for states filtered by optional where clause.
Parameters:
whereClause - optional where clause to filter the data.
Returns:
SeState[]
Throws:
SeException -

getStreamSpec

public SeConnection.SeStreamSpec getStreamSpec()
                                        throws SeException
Returns the properties of a stream operation (Query/Insert/Update/Delete). These properties are related to the pool size on the client, buffer management on the server, and the transmission of buffers betwen the client and server.

setStreamSpec

public void setStreamSpec(SeConnection.SeStreamSpec specs)
                   throws SeException
Sets some advanced properties for the creation of subsequent stream operations. (Query/Insert/Update/Delete). These properties are related to buffer management on the server, and the transmission of buffers betwen the client and server.

getSpatialRefList

public java.util.Vector getSpatialRefList()
                                   throws SeException
Returns an array of SeSpatialReference objects.
Returns:
Vector

getLocatorList

public SeLocator[] getLocatorList(java.lang.String whereClause)
                           throws SeException
Returns the list of all accessible locators.
Parameters:
whereClause - optional where clause to filter the data.
Returns:
SeLocator[]
Throws:
SeException -

getLogfileList

public SeLog[] getLogfileList(java.lang.String owner)
                       throws SeException
Returns a list of all logfiles owned by the specified owner.
Parameters:
owner - The name of the logfile owner. If null, current user is used.
Returns:
SeLog[]
Throws:
SeException -

getLogfileList

public SeLog[] getLogfileList(java.lang.String owner,
                              java.lang.String table)
                       throws SeException
Returns a list of all logfiles for the specified layer or table.
Parameters:
owner - The name of the logfile owner. If null, current user is used.
table - The name of the table or layer.
Returns:
SeLog[]
Throws:
SeException -

getMetaDataList

public SeMetaData[] getMetaDataList(java.lang.String whereClause)
                             throws SeException
Returns the meta-data associated with a table.
Parameters:
whereClause - optional where clause to filter the data.
Returns:
SeMetaData[]
Throws:
SeException -

getLayers

public java.util.Vector getLayers()
                           throws SeException
Retrieves a list of all ArcSde layers that are accessible to the current user.
Returns:
Vector.

getInstance

public int getInstance()
Returns the ArcSDE instance's port number.

getUser

public java.lang.String getUser()
Returns the name of the ArcSDE user establishing the connection.

getRelease

public SeRelease getRelease()
Returns the version description of the ArcSDE instance with which the connection has been established.

getServer

public java.lang.String getServer()
Returns the name of the ArcSDE server.

getServerTime

public java.util.Date getServerTime()
                             throws SeException
Returns the current time on the server. This is useful for programs that examine the times on the feature structure.
Returns:
The current time on the server.
Throws:
SeException -

getSQLInfo

public java.lang.String getSQLInfo(int sqlId)
                            throws SeException
Returns the RDBMS dependent function name according to the specified sqlId. sqlIds for RDBMS dependent functions are defined in SeDBMSInfo class.
Parameters:
The - sql id relating to RDBMS system functions.
Returns:
The corresponding system function name for RDBMS.
Throws:
SeException -

setConcurrency

public void setConcurrency(int policy)
                    throws SeException
Sets the concurrency policy for the SeConnection object. The concurrency policy effects how calls to other SDE objects using this SeConnection object behave in a multi-threaded environment. Concurrency policies are: SE_UNPROTECTED_POLICY SE_ONE_THREAD_POLICY SE_TRYLOCK_POLICY SE_LOCK_POLICY
Parameters:
policy - the concurrency policy.
Throws:
SeException -

startTransaction

public void startTransaction()
                      throws SeException
Tells the ArcSDE instance to begin a transaction session.
Throws:
SeException -

databaseUse

public void databaseUse(java.lang.String database)
                 throws SeException
Changes the database or data source being used by a connection. Not all DBMS manufacturers support this functionality.
Parameters:
database - the database to change to.
Throws:
SeException -

getDatabaseList

public java.lang.String[] getDatabaseList()
                                   throws SeException
Returns a list of databases or data sources for a DBMS instance. Not all DBMS manufacturers support this functionality.
Returns:
String[]
Throws:
SeException -

exportDbtune

public void exportDbtune(java.lang.String dbtuneFile)
                  throws SeException
Exports data to a file from the DBTUNE table. The new file is created in the $SDEHOME/etc directory
Parameters:
dbtuneFile - name of the dbtune file to copy data from.
Throws:
SeException -

importDbtune

public void importDbtune(java.lang.String dbtuneFile)
                  throws SeException
Imports the data to ArcSde DBTUNE table. The dbtuneFile must exist in the $SDEHOME/etc directory. The DBTUNE table is truncated before importing data into it.
Parameters:
dbtuneFile - name of the dbtune file to copy data from.
Throws:
SeException -

commitTransaction

public void commitTransaction()
                       throws SeException
Commits changes to the underlying database.
Throws:
SeException -

rollbackTransaction

public void rollbackTransaction()
                         throws SeException
Rollback the current transaction.
Throws:
SeException -

setTransactionAutoCommit

public int setTransactionAutoCommit(int interval)
                             throws SeException
Sets the user transaction autocommit interval. This number is a count of the number of database write operations (stores, deletes, and replaces) to allow before forcing an underlying database commit. If 0 is specified, then no autocommit will be performed. If not set by this call, the interval will default the the value specified in the ArcSDE defaults.
Parameters:
interval - number of modification operations to do before an autocommit.
Returns:
the previous autocommit interval
Throws:
SeException -

close

public void close()
           throws SeException
Closes the connection to the ArcSDE instance.

isClosed

public boolean isClosed()
Returns TRUE if the connection has been closed, FALSE otherwise.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeConnection.SeStreamSpec

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeConnection.SeStreamSpec

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeConnection.SeStreamSpec
Enclosing class:
SeConnection
public static class SeConnection.SeStreamSpec
extends java.lang.Object

SeConnection inner class used to retrieve the stream operation specifications set on a connection.

Constructor Summary
SeConnection.SeStreamSpec()
Constructs an empty (all values set to zero) stream specification.
Method Summary
int | getAttributeArraySize() Returns the attribute array buffer size.
int | getBlobArraySize() Returns the blob array buffer size.
int | getMaxArraySize() Returns the maximum number of elements per array.
int | getMaxBufSize() Returns the maximum size of the stream buffer.
int | getMaxSizePerBlob() Returns the maximum individual blob size in array fetch.
int | getMinBufSize() Returns the minimum size of the stream buffer.
int | getMinObjects() Returns the minimum number of objects to put in a buffer.
int | getRasterBufSize() Returns the raster buffer size.
int | getShapePointArraySize() Returns the shape geometry array buffer size.
int | getStreamPoolSize() Returns the number of streams to keep in the pool.
void | setAttributeArraySize(int attrArraySize) Sets the attribute array buffer size.
void | setBlobArraySize(int blobArraySize) Sets the blob array buffer size.
void | setMaxArraySize(int maxArraySize) Sets the maximum number of elements per array.
void | setMaxBufSize(int maxSize) Sets the maximum stream buffer size.
void | setMaxSizePerBlob(int maxSizePerBlob) Sets the maximum individual blob size.
void | setMinBufSize(int minSize) Sets the minimum stream buffer size.
void | setMinObjects(int minObjects) Sets the minimum number of objects to put in the buffer.
void | setRasterBufSize(int rasterBufSize) Sets the size of the raster buffer.
void | setShapePointArraySize(int geomArraySize) Sets the shape geometry array buffer size.
void | setStreamPoolSize(int streamPoolSize) Sets the number of stream to be keep in the pool.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeConnection.SeStreamSpec

public SeConnection.SeStreamSpec()
Constructs an empty (all values set to zero) stream specification. Use the set methods to set the stream specification fields to the desired values. Call SeConnection.setStreamSpec() to change the specification for all new streams.
Method Detail

getMinBufSize

public int getMinBufSize()
Returns the minimum size of the stream buffer.
Returns:
int

getMaxBufSize

public int getMaxBufSize()
Returns the maximum size of the stream buffer.
Returns:
int

getMinObjects

public int getMinObjects()
Returns the minimum number of objects to put in a buffer.
Returns:
int

getMaxArraySize

public int getMaxArraySize()
Returns the maximum number of elements per array.
Returns:
int

getAttributeArraySize

public int getAttributeArraySize()
Returns the attribute array buffer size.
Returns:
int

getShapePointArraySize

public int getShapePointArraySize()
Returns the shape geometry array buffer size.
Returns:
int

getBlobArraySize

public int getBlobArraySize()
Returns the blob array buffer size.
Returns:
int

getMaxSizePerBlob

public int getMaxSizePerBlob()
Returns the maximum individual blob size in array fetch.
Returns:
int

getStreamPoolSize

public int getStreamPoolSize()
Returns the number of streams to keep in the pool.
Returns:
int

getRasterBufSize

public int getRasterBufSize()
Returns the raster buffer size.
Returns:
int

setMinBufSize

public void setMinBufSize(int minSize)
Sets the minimum stream buffer size.
Parameters:
int - minSize

setMaxBufSize

public void setMaxBufSize(int maxSize)
Sets the maximum stream buffer size.
Parameters:
int - maxSize

setMinObjects

public void setMinObjects(int minObjects)
Sets the minimum number of objects to put in the buffer.
Parameters:
int - minObjects

setMaxArraySize

public void setMaxArraySize(int maxArraySize)
Sets the maximum number of elements per array.
Parameters:
int - maxArraySize

setAttributeArraySize

public void setAttributeArraySize(int attrArraySize)
Sets the attribute array buffer size.
Parameters:
int - attrArraySize

setShapePointArraySize

public void setShapePointArraySize(int geomArraySize)
Sets the shape geometry array buffer size.
Parameters:
int - geomArraySize

setBlobArraySize

public void setBlobArraySize(int blobArraySize)
Sets the blob array buffer size.
Parameters:
int - blobArraySize

setMaxSizePerBlob

public void setMaxSizePerBlob(int maxSizePerBlob)
Sets the maximum individual blob size.
Parameters:
int - maxSizePerBlob

setStreamPoolSize

public void setStreamPoolSize(int streamPoolSize)
Sets the number of stream to be keep in the pool.
Parameters:
int - streamPoolSize

setRasterBufSize

public void setRasterBufSize(int rasterBufSize)
Sets the size of the raster buffer.
Parameters:
int - rasterBufSize
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeCoordinateReference

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeCoordinateReference

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeCoordinateReference
public class SeCoordinateReference
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Represents the Coordinate Reference of a Geometry.

A coordinate system is either geographic (longitude,latitude) or projected (x,y) and locates spatial data on a 3-D spherical or 2-D planar surface. A coordinate reference includes the coordinate system and a set of offset (false origin) and scale values that convert floating point real-world values into integers for internal storage in the SDE layer.

This information is stored in a coordinate reference object. Each spatial column (layer) has a coordinate reference associated with it. Shapes inherit a coordinate reference from their spatial column. Shapes created by an application must have a coordinate reference object associated with them when they are created. The coordinate reference is maintained through client processes.

Constructor Summary
SeCoordinateReference()
Creates a default coordinate reference object.
Method Summary
java.lang.Object | clone() Clones the coordinate reference object.
java.lang.String | getCoordSysDescription() Returns the description of the coordinate system of a Coordinate Reference.
double | getFalseM() Returns the m offset.
double | getFalseX() Returns the false x offset
double | getFalseY() Returns the false y offset
double | getFalseZ() Returns the z-offset.
double | getMaxMValue() Returns the maximum measure value.
double | getMaxZValue() Returns the maximum z-value.
double | getMinMValue() Returns the minimum measure value.
double | getMinZValue() Returns the minimum z-value.
double | getMUnits() Returns the m-offset's scale factor.
java.lang.String | getProjectionDescription() Returns the String description of the coordinate reference.
SeObjectId | getSrid() Returns the Spatial Reference Id of this Coordinate Reference.
SeExtent | getXYEnvelope() Returns the the range of X/Y values for the coordinate reference object based upon the false origin/units values.
double | getXYUnits() Returns the xy scale factor
double | getZUnits() Returns the z-offset's scale factor.
boolean | isEqual(SeCoordinateReference cRefB)
void | setCoordSysByDescription(java.lang.String desc) Sets the coordinate system for the coordinate reference object by a character string description.
void | setM(double falseM, double mUnits) Sets the measures false origin and scale factor.
void | setMByRange(double minMVal, double maxMVal) Sets the minimum and maximum measure values.
void | setXY(double falseX, double falseY, double xyUnits) Sets the x,y false origin and scale factor.
void | setXYByEnvelope(SeExtent extent) Calculates and sets the x,y false origin and scale factor from the supplied envelope.
void | setZ(double falseZ, double zUnits) Sets the z false origin and scale factor.
void | setZByRange(double minZVal, double maxZVal) Sets the z false origin and scale factor from the given range.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeCoordinateReference

public SeCoordinateReference()
Creates a default coordinate reference object.
Method Detail

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones the coordinate reference object.

getProjectionDescription

public java.lang.String getProjectionDescription()
Returns the String description of the coordinate reference.

getFalseM

public double getFalseM()
Returns the m offset.

getMUnits

public double getMUnits()
Returns the m-offset's scale factor.

getMinMValue

public double getMinMValue()
Returns the minimum measure value.

getMaxMValue

public double getMaxMValue()
Returns the maximum measure value.

getSrid

public SeObjectId getSrid()
Returns the Spatial Reference Id of this Coordinate Reference.

getFalseX

public double getFalseX()
Returns the false x offset

getFalseY

public double getFalseY()
Returns the false y offset

getXYUnits

public double getXYUnits()
Returns the xy scale factor

getFalseZ

public double getFalseZ()
Returns the z-offset.

getZUnits

public double getZUnits()
Returns the z-offset's scale factor.

getMinZValue

public double getMinZValue()
Returns the minimum z-value.

getMaxZValue

public double getMaxZValue()
Returns the maximum z-value.

isEqual

public boolean isEqual(SeCoordinateReference cRefB)
                throws SeException

setCoordSysByDescription

public void setCoordSysByDescription(java.lang.String desc)
Sets the coordinate system for the coordinate reference object by a character string description.

getCoordSysDescription

public java.lang.String getCoordSysDescription()
Returns the description of the coordinate system of a Coordinate Reference.

setM

public void setM(double falseM,
                 double mUnits)
Sets the measures false origin and scale factor.

setMByRange

public void setMByRange(double minMVal,
                        double maxMVal)
Sets the minimum and maximum measure values.

setXY

public void setXY(double falseX,
                  double falseY,
                  double xyUnits)
Sets the x,y false origin and scale factor.

getXYEnvelope

public SeExtent getXYEnvelope()
                       throws SeException
Returns the the range of X/Y values for the coordinate reference object based upon the false origin/units values.
Returns:
SeExtent

setXYByEnvelope

public void setXYByEnvelope(SeExtent extent)
                     throws SeException
Calculates and sets the x,y false origin and scale factor from the supplied envelope.

setZ

public void setZ(double falseZ,
                 double zUnits)
Sets the z false origin and scale factor.

setZByRange

public void setZByRange(double minZVal,
                        double maxZVal)
Sets the z false origin and scale factor from the given range.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeDate

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeDate

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeDate
public class SeDate
extends com.esri.sde.sdk.client.SeServerObj

Represents the ArcSDE Date Structure.

Constructor Summary
SeDate(java.util.Date dt)
Constructs an SeDate object from a java.util.Date object.
Method Summary
 java.lang.String toWhereStr(SeConnection conn)
Returns a database specific text string equivalent of date object that can be used in the where clause of a sql query.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeDate

public SeDate(java.util.Date dt)
Constructs an SeDate object from a java.util.Date object. NOTE : The time zone for the new SeDate object is set to "GMT". If the dt parameter is set to a different time zone, the time is adjusted to GMT time.
Parameters:
dt - java.util.Date object.
Method Detail

toWhereStr

public java.lang.String toWhereStr(SeConnection conn)
                            throws SeException
Returns a database specific text string equivalent of date object that can be used in the where clause of a sql query.
Parameters:
conn - SeConnection object handle.
Returns:
String
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeDBMSInfo

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeDBMSInfo

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeDBMSInfo
public class SeDBMSInfo
extends java.lang.Object

Stores RDBMS related information.

Field Summary
boolean | canAddColumn Underlying RDBMS can add columns to a table.
boolean | canDropColumn Underlying RDBMS can drop column from a table.
boolean | canOwnerPrefixTable Underlying RDBMS allows owner to prefixe the tablename.
boolean | canRename Underlying RDBMS can rename tables.
int | dbmsId Identifies the underlying RDBMS id.
boolean | isCaseSensitive Underlying RDBMS is case sensitive.
boolean | isCaseSensitiveInComparison Underlying RDBMS is case sensitive for comparisons.
boolean | isPasswordCaseSensitive Underlying RDBMS is case sensitive for password.
boolean | isUserCaseSensitive Underlying RDBMS is case sensitive for user.
static int | SE_DBMS_FUNCTION_ABS Id of the function that will return the absolute value of x.
static int | SE_DBMS_FUNCTION_ACOS Id of the function that will return the arccosine of x.
static int | SE_DBMS_FUNCTION_ASCII Id of the function that will return decimal representation of a string.
static int | SE_DBMS_FUNCTION_ASIN Id of the function that will return the arcsine of x.
static int | SE_DBMS_FUNCTION_ATAN Id of the function that will return the arctangent of x.
static int | SE_DBMS_FUNCTION_AVG Id of the function that will return the average value of n.
static int | SE_DBMS_FUNCTION_BITLEN Id of the function that will return the string length in bits.
static int | SE_DBMS_FUNCTION_CAST Id of the function that converts one data type to another one.
static int | SE_DBMS_FUNCTION_CEIL Id of the function that will return smallest integer >= n.
static int | SE_DBMS_FUNCTION_CHR Id of the function that will return the character of the binary equivalent.
static int | SE_DBMS_FUNCTION_COALSCE Id of the function that will return the first NOT_NULL value.
static int | SE_DBMS_FUNCTION_CONCAT Id of the function that will concatenate string1 with string2.
static int | SE_DBMS_FUNCTION_CONVERT Id of the convert function.
static int | SE_DBMS_FUNCTION_COS Id of the function that will return cosine of x.
static int | SE_DBMS_FUNCTION_COSH Id of the function that will return hyperbolic cosine of x.
static int | SE_DBMS_FUNCTION_COUNT Id of the function that will return the number of rows in the query.
static int | SE_DBMS_FUNCTION_EXTRACT Id of the function that will return a numeric value of a date.
static int | SE_DBMS_FUNCTION_FLOOR Id of the function that will return largest integer <= n.
static int | SE_DBMS_FUNCTION_HEX Id of the function that will return the hexadecimal representation of a number.
static int | SE_DBMS_FUNCTION_LENGTH Id of the function that will return length in char.
static int | SE_DBMS_FUNCTION_LENGTHB Id of the function that will return length in bytes.
static int | SE_DBMS_FUNCTION_LN Id of the function that will return natural logarithm.
static int | SE_DBMS_FUNCTION_LOG Id of the function that will return logarithm of base n.
static int | SE_DBMS_FUNCTION_LOG10 Id of the function that will return logarithm of base 10.
static int | SE_DBMS_FUNCTION_LOWERCASE Id of the function that converts string to lower case.
static int | SE_DBMS_FUNCTION_LTRIM Id of the function that will remove spaces from the left.
static int | SE_DBMS_FUNCTION_MAX Id of the function that will return the maximum value of expression.
static int | SE_DBMS_FUNCTION_MIN Id of the function that will return the minimum value of expression.
static int | SE_DBMS_FUNCTION_MOD Id of the function that will return the remainder.
static int | SE_DBMS_FUNCTION_POSITION Id of the function that will return a numeric value that indicates the starting position of the search string in the source string.
static int | SE_DBMS_FUNCTION_POWER Id of the function that will return the n power of m.
static int | SE_DBMS_FUNCTION_ROUND Id of the function that will round a real nember to specified decimal digits.
static int | SE_DBMS_FUNCTION_RTRIM Id of the function that will remove trailing from the right.
static int | SE_DBMS_FUNCTION_SIGN Id of the function that will return -1 for negative, 0 for zero and 1 for positive.
static int | SE_DBMS_FUNCTION_SIN Id of the function that will return sine of x.
static int | SE_DBMS_FUNCTION_SINH Id of the function that will return hyperbolic sine of x.
static int | SE_DBMS_FUNCTION_SOUNDEX Id of the function that will return a string containing the phonetic representation of string2.
static int | SE_DBMS_FUNCTION_STDDEV Id of the function that will calculate the standard deviation.
static int | SE_DBMS_FUNCTION_SUBSTR Id of the function that will return a portion of a string.
static int | SE_DBMS_FUNCTION_SUBSTRB Id of the function that will return a portion of bytes.
static int | SE_DBMS_FUNCTION_SUM Id of the function that will return the sum of values of n numbers.
static int | SE_DBMS_FUNCTION_TAN Id of the function that will return tangent of x.
static int | SE_DBMS_FUNCTION_TANH Id of the function that will return hyperbolic tangent of x.
static int | SE_DBMS_FUNCTION_TRANSLATE Id of the function that will return string with each char in 'from' string replaced by its corresponding char in 'to' string.
static int | SE_DBMS_FUNCTION_TRIM Id of the function that will strip the leading, trailing * or both from the string.
static int | SE_DBMS_FUNCTION_TRUNC Id of the function that will truncate n to m decimal place.
static int | SE_DBMS_FUNCTION_UPPERCASE Id of the function that converts string to upper case.
static int | SE_DBMS_FUNCTION_USER Id of the function that will return the current user name
static int | SE_DBMS_FUNCTION_VARIANCE Id of the function that will calculate the variance.
static int | SE_DBMS_IS_ARCINFO Underlying RDBMS is arcinfo.
static int | SE_DBMS_IS_ARCSERVER Underlying RDBMS is arcserver.
static int | SE_DBMS_IS_DB2 Underlying RDBMS is DB2.
static int | SE_DBMS_IS_DB2_EXT Underlying RDBMS is DB2 extended server.
static int | SE_DBMS_IS_INFORMIX Underlying RDBMS is informix.
static int | SE_DBMS_IS_IUS Underlying RDBMS is informix universal server.
static int | SE_DBMS_IS_JET Underlying RDBMS is jet.
static int | SE_DBMS_IS_ORACLE Underlying RDBMS is oracle.
static int | SE_DBMS_IS_OTHER Underlying RDBMS is other.
static int | SE_DBMS_IS_SQLSERVER Underlying RDBMS is microsoft sqlserver.
static int | SE_DBMS_IS_SYBASE Underlying RDBMS is sybase.
static int | SE_DBMS_IS_UNKNOWN Underlying RDBMS is unknown.
boolean | supportDelimitedIdentifier Underlying RDBMS supports delimited identifiers.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

dbmsId

public int dbmsId
Identifies the underlying RDBMS id.

canRename

public boolean canRename
Underlying RDBMS can rename tables.

canAddColumn

public boolean canAddColumn
Underlying RDBMS can add columns to a table.

canDropColumn

public boolean canDropColumn
Underlying RDBMS can drop column from a table.

canOwnerPrefixTable

public boolean canOwnerPrefixTable
Underlying RDBMS allows owner to prefixe the tablename.

isCaseSensitive

public boolean isCaseSensitive
Underlying RDBMS is case sensitive.

supportDelimitedIdentifier

public boolean supportDelimitedIdentifier
Underlying RDBMS supports delimited identifiers.

isCaseSensitiveInComparison

public boolean isCaseSensitiveInComparison
Underlying RDBMS is case sensitive for comparisons.

isUserCaseSensitive

public boolean isUserCaseSensitive
Underlying RDBMS is case sensitive for user.

isPasswordCaseSensitive

public boolean isPasswordCaseSensitive
Underlying RDBMS is case sensitive for password.

SE_DBMS_IS_UNKNOWN

public static final int SE_DBMS_IS_UNKNOWN
Underlying RDBMS is unknown.

SE_DBMS_IS_OTHER

public static final int SE_DBMS_IS_OTHER
Underlying RDBMS is other.

SE_DBMS_IS_ORACLE

public static final int SE_DBMS_IS_ORACLE
Underlying RDBMS is oracle.

SE_DBMS_IS_INFORMIX

public static final int SE_DBMS_IS_INFORMIX
Underlying RDBMS is informix.

SE_DBMS_IS_SYBASE

public static final int SE_DBMS_IS_SYBASE
Underlying RDBMS is sybase.

SE_DBMS_IS_DB2

public static final int SE_DBMS_IS_DB2
Underlying RDBMS is DB2.

SE_DBMS_IS_SQLSERVER

public static final int SE_DBMS_IS_SQLSERVER
Underlying RDBMS is microsoft sqlserver.

SE_DBMS_IS_ARCINFO

public static final int SE_DBMS_IS_ARCINFO
Underlying RDBMS is arcinfo.

SE_DBMS_IS_IUS

public static final int SE_DBMS_IS_IUS
Underlying RDBMS is informix universal server.

SE_DBMS_IS_DB2_EXT

public static final int SE_DBMS_IS_DB2_EXT
Underlying RDBMS is DB2 extended server.

SE_DBMS_IS_ARCSERVER

public static final int SE_DBMS_IS_ARCSERVER
Underlying RDBMS is arcserver.

SE_DBMS_IS_JET

public static final int SE_DBMS_IS_JET
Underlying RDBMS is jet.

SE_DBMS_FUNCTION_UPPERCASE

public static final int SE_DBMS_FUNCTION_UPPERCASE
Id of the function that converts string to upper case.

SE_DBMS_FUNCTION_LOWERCASE

public static final int SE_DBMS_FUNCTION_LOWERCASE
Id of the function that converts string to lower case.

SE_DBMS_FUNCTION_CONCAT

public static final int SE_DBMS_FUNCTION_CONCAT
Id of the function that will concatenate string1 with string2.

SE_DBMS_FUNCTION_ASCII

public static final int SE_DBMS_FUNCTION_ASCII
Id of the function that will return decimal representation of a string.

SE_DBMS_FUNCTION_LENGTH

public static final int SE_DBMS_FUNCTION_LENGTH
Id of the function that will return length in char.

SE_DBMS_FUNCTION_LENGTHB

public static final int SE_DBMS_FUNCTION_LENGTHB
Id of the function that will return length in bytes.

SE_DBMS_FUNCTION_CHR

public static final int SE_DBMS_FUNCTION_CHR
Id of the function that will return the character of the binary equivalent.

SE_DBMS_FUNCTION_LTRIM

public static final int SE_DBMS_FUNCTION_LTRIM
Id of the function that will remove spaces from the left.

SE_DBMS_FUNCTION_RTRIM

public static final int SE_DBMS_FUNCTION_RTRIM
Id of the function that will remove trailing from the right.

SE_DBMS_FUNCTION_SUBSTR

public static final int SE_DBMS_FUNCTION_SUBSTR
Id of the function that will return a portion of a string.

SE_DBMS_FUNCTION_SUBSTRB

public static final int SE_DBMS_FUNCTION_SUBSTRB
Id of the function that will return a portion of bytes.

SE_DBMS_FUNCTION_SOUNDEX

public static final int SE_DBMS_FUNCTION_SOUNDEX
Id of the function that will return a string containing the phonetic representation of string2.

SE_DBMS_FUNCTION_TRANSLATE

public static final int SE_DBMS_FUNCTION_TRANSLATE
Id of the function that will return string with each char in 'from' string replaced by its corresponding char in 'to' string.

SE_DBMS_FUNCTION_TRIM

public static final int SE_DBMS_FUNCTION_TRIM
Id of the function that will strip the leading, trailing * or both from the string.

SE_DBMS_FUNCTION_CEIL

public static final int SE_DBMS_FUNCTION_CEIL
Id of the function that will return smallest integer >= n.

SE_DBMS_FUNCTION_FLOOR

public static final int SE_DBMS_FUNCTION_FLOOR
Id of the function that will return largest integer <= n.

SE_DBMS_FUNCTION_ROUND

public static final int SE_DBMS_FUNCTION_ROUND
Id of the function that will round a real nember to specified decimal digits.

SE_DBMS_FUNCTION_LN

public static final int SE_DBMS_FUNCTION_LN
Id of the function that will return natural logarithm.

SE_DBMS_FUNCTION_LOG10

public static final int SE_DBMS_FUNCTION_LOG10
Id of the function that will return logarithm of base 10.

SE_DBMS_FUNCTION_LOG

public static final int SE_DBMS_FUNCTION_LOG
Id of the function that will return logarithm of base n.

SE_DBMS_FUNCTION_MOD

public static final int SE_DBMS_FUNCTION_MOD
Id of the function that will return the remainder.

SE_DBMS_FUNCTION_POWER

public static final int SE_DBMS_FUNCTION_POWER
Id of the function that will return the n power of m.

SE_DBMS_FUNCTION_SIGN

public static final int SE_DBMS_FUNCTION_SIGN
Id of the function that will return -1 for negative, 0 for zero and 1 for positive.

SE_DBMS_FUNCTION_TRUNC

public static final int SE_DBMS_FUNCTION_TRUNC
Id of the function that will truncate n to m decimal place.

SE_DBMS_FUNCTION_SINH

public static final int SE_DBMS_FUNCTION_SINH
Id of the function that will return hyperbolic sine of x.

SE_DBMS_FUNCTION_COSH

public static final int SE_DBMS_FUNCTION_COSH
Id of the function that will return hyperbolic cosine of x.

SE_DBMS_FUNCTION_TANH

public static final int SE_DBMS_FUNCTION_TANH
Id of the function that will return hyperbolic tangent of x.

SE_DBMS_FUNCTION_ASIN

public static final int SE_DBMS_FUNCTION_ASIN
Id of the function that will return the arcsine of x.

SE_DBMS_FUNCTION_ACOS

public static final int SE_DBMS_FUNCTION_ACOS
Id of the function that will return the arccosine of x.

SE_DBMS_FUNCTION_ATAN

public static final int SE_DBMS_FUNCTION_ATAN
Id of the function that will return the arctangent of x.

SE_DBMS_FUNCTION_HEX

public static final int SE_DBMS_FUNCTION_HEX
Id of the function that will return the hexadecimal representation of a number.

SE_DBMS_FUNCTION_SIN

public static final int SE_DBMS_FUNCTION_SIN
Id of the function that will return sine of x.

SE_DBMS_FUNCTION_COS

public static final int SE_DBMS_FUNCTION_COS
Id of the function that will return cosine of x.

SE_DBMS_FUNCTION_TAN

public static final int SE_DBMS_FUNCTION_TAN
Id of the function that will return tangent of x.

SE_DBMS_FUNCTION_EXTRACT

public static final int SE_DBMS_FUNCTION_EXTRACT
Id of the function that will return a numeric value of a date.

SE_DBMS_FUNCTION_BITLEN

public static final int SE_DBMS_FUNCTION_BITLEN
Id of the function that will return the string length in bits.

SE_DBMS_FUNCTION_POSITION

public static final int SE_DBMS_FUNCTION_POSITION
Id of the function that will return a numeric value that indicates the starting position of the search string in the source string.

SE_DBMS_FUNCTION_ABS

public static final int SE_DBMS_FUNCTION_ABS
Id of the function that will return the absolute value of x.

SE_DBMS_FUNCTION_VARIANCE

public static final int SE_DBMS_FUNCTION_VARIANCE
Id of the function that will calculate the variance.

SE_DBMS_FUNCTION_STDDEV

public static final int SE_DBMS_FUNCTION_STDDEV
Id of the function that will calculate the standard deviation.

SE_DBMS_FUNCTION_AVG

public static final int SE_DBMS_FUNCTION_AVG
Id of the function that will return the average value of n.

SE_DBMS_FUNCTION_COUNT

public static final int SE_DBMS_FUNCTION_COUNT
Id of the function that will return the number of rows in the query.

SE_DBMS_FUNCTION_MAX

public static final int SE_DBMS_FUNCTION_MAX
Id of the function that will return the maximum value of expression.

SE_DBMS_FUNCTION_MIN

public static final int SE_DBMS_FUNCTION_MIN
Id of the function that will return the minimum value of expression.

SE_DBMS_FUNCTION_SUM

public static final int SE_DBMS_FUNCTION_SUM
Id of the function that will return the sum of values of n numbers.

SE_DBMS_FUNCTION_COALSCE

public static final int SE_DBMS_FUNCTION_COALSCE
Id of the function that will return the first NOT_NULL value.

SE_DBMS_FUNCTION_CONVERT

public static final int SE_DBMS_FUNCTION_CONVERT
Id of the convert function.

SE_DBMS_FUNCTION_CAST

public static final int SE_DBMS_FUNCTION_CAST
Id of the function that converts one data type to another one.

SE_DBMS_FUNCTION_USER

public static final int SE_DBMS_FUNCTION_USER
Id of the function that will return the current user name
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeDefs

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeDefs

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeDefs
public class SeDefs
extends java.lang.Object

Holds the public constants for the sde client package.

Field Summary
static int | MAX_NAME_LEN
static int | SE_DELETE_PRIVILEGE
static int | SE_FAILURE
static int | SE_FINISHED
static int | SE_INSERT_PRIVILEGE
static int | SE_MAX_ALIAS_LEN
static int | SE_MAX_ANNO_TEXT_LEN
static int | SE_MAX_COLUMN_LEN
static int | SE_MAX_COLUMNS
static int | SE_MAX_CONFIG_KEYWORD_LEN
static int | SE_MAX_DATABASE_LEN
static int | SE_MAX_DESCRIPTION_LEN
static int | SE_MAX_ENTITY_LEN
static int | SE_MAX_FEAT_CLASS_LEN
static int | SE_MAX_HINT_LEN
static int | SE_MAX_INDEX_LEN
static int | SE_MAX_INSTANCE_LEN
static int | SE_MAX_KEYWORD_LEN
static int | SE_MAX_MESSAGE_LENGTH
static int | SE_MAX_OWNER_LEN
static int | SE_MAX_PASSWORD_LEN
static int | SE_MAX_PATH_LEN
static int | SE_MAX_SCL_CODESIZE
static int | SE_MAX_SERVER_LEN
static int | SE_MAX_TABLE_LEN
static int | SE_MAX_VERSION_LEN
static int | SE_QUALIFIED_COLUMN_LEN
static int | SE_QUALIFIED_TABLE_NAME
static int | SE_QUALIFIED_VERSION_LEN
static int | SE_ROWLOCKING_FILTER_MY_LOCKS
static int | SE_ROWLOCKING_FILTER_OTHER_LOCKS
static int | SE_ROWLOCKING_FILTER_UNLOCKED
static int | SE_ROWLOCKING_LOCK_ON_INSERT
static int | SE_ROWLOCKING_LOCK_ON_QUERY
static int | SE_ROWLOCKING_LOCK_ON_UPDATE
static int | SE_ROWLOCKING_LOCK_ONLY
static int | SE_ROWLOCKING_UNLOCK_ON_QUERY
static int | SE_ROWLOCKING_UNLOCK_ON_UPDATE
static int | SE_SELECT_PRIVILEGE
static int | SE_SUCCESS
static int | SE_UPDATE_PRIVILEGE
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_FAILURE

public static final int SE_FAILURE

SE_SUCCESS

public static final int SE_SUCCESS

SE_FINISHED

public static final int SE_FINISHED

SE_MAX_MESSAGE_LENGTH

public static final int SE_MAX_MESSAGE_LENGTH

SE_MAX_PATH_LEN

public static final int SE_MAX_PATH_LEN

SE_MAX_CONFIG_KEYWORD_LEN

public static final int SE_MAX_CONFIG_KEYWORD_LEN

SE_MAX_DESCRIPTION_LEN

public static final int SE_MAX_DESCRIPTION_LEN

SE_MAX_FEAT_CLASS_LEN

public static final int SE_MAX_FEAT_CLASS_LEN

SE_MAX_COLUMNS

public static final int SE_MAX_COLUMNS

MAX_NAME_LEN

public static final int MAX_NAME_LEN

SE_MAX_COLUMN_LEN

public static final int SE_MAX_COLUMN_LEN

SE_MAX_TABLE_LEN

public static final int SE_MAX_TABLE_LEN

SE_MAX_ALIAS_LEN

public static final int SE_MAX_ALIAS_LEN

SE_MAX_ENTITY_LEN

public static final int SE_MAX_ENTITY_LEN

SE_MAX_HINT_LEN

public static final int SE_MAX_HINT_LEN

SE_MAX_OWNER_LEN

public static final int SE_MAX_OWNER_LEN

SE_MAX_INDEX_LEN

public static final int SE_MAX_INDEX_LEN

SE_MAX_ANNO_TEXT_LEN

public static final int SE_MAX_ANNO_TEXT_LEN

SE_MAX_VERSION_LEN

public static final int SE_MAX_VERSION_LEN

SE_MAX_KEYWORD_LEN

public static final int SE_MAX_KEYWORD_LEN

SE_MAX_SERVER_LEN

public static final int SE_MAX_SERVER_LEN

SE_MAX_INSTANCE_LEN

public static final int SE_MAX_INSTANCE_LEN

SE_MAX_PASSWORD_LEN

public static final int SE_MAX_PASSWORD_LEN

SE_MAX_DATABASE_LEN

public static final int SE_MAX_DATABASE_LEN

SE_MAX_SCL_CODESIZE

public static final int SE_MAX_SCL_CODESIZE

SE_QUALIFIED_TABLE_NAME

public static final int SE_QUALIFIED_TABLE_NAME

SE_QUALIFIED_COLUMN_LEN

public static final int SE_QUALIFIED_COLUMN_LEN

SE_QUALIFIED_VERSION_LEN

public static final int SE_QUALIFIED_VERSION_LEN

SE_SELECT_PRIVILEGE

public static final int SE_SELECT_PRIVILEGE

SE_UPDATE_PRIVILEGE

public static final int SE_UPDATE_PRIVILEGE

SE_INSERT_PRIVILEGE

public static final int SE_INSERT_PRIVILEGE

SE_DELETE_PRIVILEGE

public static final int SE_DELETE_PRIVILEGE

SE_ROWLOCKING_LOCK_ON_QUERY

public static final int SE_ROWLOCKING_LOCK_ON_QUERY

SE_ROWLOCKING_LOCK_ON_INSERT

public static final int SE_ROWLOCKING_LOCK_ON_INSERT

SE_ROWLOCKING_LOCK_ON_UPDATE

public static final int SE_ROWLOCKING_LOCK_ON_UPDATE

SE_ROWLOCKING_UNLOCK_ON_QUERY

public static final int SE_ROWLOCKING_UNLOCK_ON_QUERY

SE_ROWLOCKING_UNLOCK_ON_UPDATE

public static final int SE_ROWLOCKING_UNLOCK_ON_UPDATE

SE_ROWLOCKING_FILTER_MY_LOCKS

public static final int SE_ROWLOCKING_FILTER_MY_LOCKS

SE_ROWLOCKING_FILTER_OTHER_LOCKS

public static final int SE_ROWLOCKING_FILTER_OTHER_LOCKS

SE_ROWLOCKING_FILTER_UNLOCKED

public static final int SE_ROWLOCKING_FILTER_UNLOCKED

SE_ROWLOCKING_LOCK_ONLY

public static final int SE_ROWLOCKING_LOCK_ONLY
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeDelete

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeDelete

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
        |
        +--com.esri.sde.sdk.client.SeDelete
public class SeDelete
extends SeStreamOp

Used to perform a Delete operation. Use an instance of this class to delete rows by row Id or using a Where clause.

See Also:
SeRow

Constructor Summary
SeDelete(SeConnection conn)
Creates an SeDelete object given an SeConnection.
Method Summary
void | byId(java.lang.String table, SeObjectId id) Deletes a row from an ArcSDE table using the row id.
void | byIdList(java.lang.String table, SeObjectId[] idList) Deletes rows from an ArcSDE table using a list of row ids to determine which rows to delete.
void | fromTable(java.lang.String table, java.lang.String whereClause) Deletes rows from an ArcSDE table using a where clause to determine which rows to delete.
void | restoreRows(java.lang.String table, SeObjectId[] rowIdList) Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.
Methods inherited from class com.esri.sde.sdk.client.SeStreamOp
cancel, close, describeColumn, equivalenceRows, execute, flushBufferedWrites, inProgress, setLogfile, setRowLocking, setSSAFilter, setState, unequivalenceRows
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeDelete

public SeDelete(SeConnection conn)
         throws SeException
Creates an SeDelete object given an SeConnection.
Method Detail

restoreRows

public void restoreRows(java.lang.String table,
                        SeObjectId[] rowIdList)
                 throws SeException
Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.

byId

public void byId(java.lang.String table,
                 SeObjectId id)
          throws SeException
Deletes a row from an ArcSDE table using the row id. A call to this method immeadiately deletes the row from the database. The application does not need to call execute()

byIdList

public void byIdList(java.lang.String table,
                     SeObjectId[] idList)
              throws SeException
Deletes rows from an ArcSDE table using a list of row ids to determine which rows to delete. A call to this method immeadiately deletes the rows from the database. The application does not need to call execute()

fromTable

public void fromTable(java.lang.String table,
                      java.lang.String whereClause)
               throws SeException
Deletes rows from an ArcSDE table using a where clause to determine which rows to delete. A call to this method immeadiately deletes the rows from the database. The application does not need to call execute()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeDoesNotExistException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeDoesNotExistException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeDoesNotExistException
public class SeDoesNotExistException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeDoesNotExistException()
SeDoesNotExistException(SeError errObj)
SeDoesNotExistException(java.lang.String s)
SeDoesNotExistException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeDoesNotExistException

public SeDoesNotExistException()

SeDoesNotExistException

public SeDoesNotExistException(java.lang.String s)

SeDoesNotExistException

public SeDoesNotExistException(SeError errObj)

SeDoesNotExistException

public SeDoesNotExistException(java.lang.String s,
                               SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SeError

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeError

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeError
public class SeError
extends com.esri.sde.sdk.client.SeServerObj

Represents an error returned by the ArcSDE server.

Field Summary
static int | CONNECTION_TYPE
static int | GENERIC_TYPE
static int | SE_ADT_DATATYPE_NOT_SUPPORTED
static int | SE_ALL_SLIVERS
static int | SE_AMBIGUOUS_NIL_SHAPE
static int | SE_ARRAY_BYTES_EXCEEDED
static int | SE_ATTR_CONV_ERROR
static int | SE_ATTR_NOEXIST
static int | SE_BINARY_CONV_NO_COLUMNS_FOUND
static int | SE_BINARY_TOO_SMALL
static int | SE_BIND_CONFLICT
static int | SE_BLOB_SIZE_TOO_LARGE
static int | SE_CAD_EXISTS
static int | SE_CANT_TRIM_RECONCILED_STATE
static int | SE_COLUMN_EXISTS
static int | SE_COLUMN_NOT_BOUND
static int | SE_CONNECTION_IN_USE
static int | SE_CONNECTION_LOCKED
static int | SE_CONNECTIONS_EXCEEDED
static int | SE_COORD_OUT_OF_BOUNDS
static int | SE_CORRIDOR_OUT_OF_BOUNDS
static int | SE_DB_IO_ERROR
static int | SE_DBMS_DOES_NOT_SUPPORT
static int | SE_DBMS_OBJECTS_NOT_SUPPORTED
static int | SE_DELETE_NOT_ALLOWED
static int | SE_DUPLICATE_ARC
static int | SE_ERROR_LOADING_SSA
static int | SE_ETYPE_CHANGED
static int | SE_ETYPE_NOT_ALLOWED
static int | SE_FAILURE
static int | SE_FID_EXISTS
static int | SE_FID_NOEXIST
static int | SE_FILE_IO_ERROR
static int | SE_FILE_OBJECT_EXISTS
static int | SE_FILE_OBJECT_NOEXIST
static int | SE_FINISHED
static int | SE_FUNCTION_SEQUENCE_ERROR
static int | SE_GEOMETRYCOL_NOEXIST
static int | SE_GSIZE_TOO_SMALL
static int | SE_INCOMPATIBLE_COORDREFS
static int | SE_INCOMPATIBLE_INSTANCE
static int | SE_INCOMPATIBLE_SHAPES
static int | SE_INDEX_EXISTS
static int | SE_INDEX_NOEXIST
static int | SE_INSTANCE_ALREADY_RUNNING
static int | SE_INSTANCE_IS_READ_ONLY
static int | SE_INSTANCE_NOT_AVAILABLE
static int | SE_INSTANCE_TOO_EARLY
static int | SE_INVALID_ALTER_OPERATION
static int | SE_INVALID_ANNO_OBJECT
static int | SE_INVALID_BIN_FUNCTION
static int | SE_INVALID_BYTE_ORDER
static int | SE_INVALID_CAD_OBJECT
static int | SE_INVALID_COLUMN_DEF
static int | SE_INVALID_COLUMN_TYPE
static int | SE_INVALID_COLUMN_VALUE
static int | SE_INVALID_COMPRESSION_TYPE
static int | SE_INVALID_CONNECTION
static int | SE_INVALID_COORDREF_OBJECT
static int | SE_INVALID_COORDSYS_DESC
static int | SE_INVALID_COORDSYS_ID
static int | SE_INVALID_DATA_SOURCE
static int | SE_INVALID_DATABASE
static int | SE_INVALID_DBA_PASSWORD
static int | SE_INVALID_DBMS_LOGIN
static int | SE_INVALID_DISTINCT_TYPE
static int | SE_INVALID_END_PT
static int | SE_INVALID_ENTITY_TYPE
static int | SE_INVALID_ENVELOPE
static int | SE_INVALID_ETYPE_MASK
static int | SE_INVALID_EXPORT_FILE
static int | SE_INVALID_EXTERNAL_LAYER_OPTION
static int | SE_INVALID_FILE_PATH
static int | SE_INVALID_FILEINFO_OBJECT
static int | SE_INVALID_FILEINFO_OBJECT_TYPE
static int | SE_INVALID_FILTER_TYPE
static int | SE_INVALID_FUNCTION_ID
static int | SE_INVALID_GEOGTRAN_OBJECT
static int | SE_INVALID_GEOMETRY_TYPE
static int | SE_INVALID_GRANT_REVOKE
static int | SE_INVALID_GRIDSIZE
static int | SE_INVALID_IDENTIFIER
static int | SE_INVALID_INDEX_PARAM
static int | SE_INVALID_INDEX_TYPE
static int | SE_INVALID_INDICATOR_VALUE
static int | SE_INVALID_LAYER_KEYWORD
static int | SE_INVALID_LAYER_NAME
static int | SE_INVALID_LAYER_NUMBER
static int | SE_INVALID_LAYERINFO_OBJECT
static int | SE_INVALID_LOCATOR
static int | SE_INVALID_LOCATOR_CATEGORY
static int | SE_INVALID_LOCATOR_NAME
static int | SE_INVALID_LOCATOR_OBJECT_TYPE
static int | SE_INVALID_LOCATOR_TYPE
static int | SE_INVALID_LOCK_MODE
static int | SE_INVALID_LOGINFO_OBJECT
static int | SE_INVALID_METADATA_OBJECT
static int | SE_INVALID_METADATA_OBJECT_TYPE
static int | SE_INVALID_METADATA_RECORD_ID
static int | SE_INVALID_MID_PT
static int | SE_INVALID_MVTABLE_INDEX
static int | SE_INVALID_NOT_NULL
static int | SE_INVALID_NUM_MEASURES
static int | SE_INVALID_NUM_OF_PTS
static int | SE_INVALID_NUM_PARTS
static int | SE_INVALID_OBJECTLOCKINFO_OBJECT
static int | SE_INVALID_OUTER_SHELL
static int | SE_INVALID_PARAM_VALUE
static int | SE_INVALID_PART_OFFSET
static int | SE_INVALID_PART_SEPARATOR
static int | SE_INVALID_PARTNUM
static int | SE_INVALID_POINTER
static int | SE_INVALID_POLYGON_CLOSURE
static int | SE_INVALID_QUERY_TYPE
static int | SE_INVALID_QUERYINFO_OBJECT
static int | SE_INVALID_RADIUS
static int | SE_INVALID_RASBANDINFO_OBJECT
static int | SE_INVALID_RASCOLINFO_OBJECT
static int | SE_INVALID_RASFILTERINFO_OBJECT
static int | SE_INVALID_RASTER_BITMAP
static int | SE_INVALID_RASTER_COLUMN
static int | SE_INVALID_RASTER_DATA
static int | SE_INVALID_RASTER_KEYWORD
static int | SE_INVALID_RASTER_NUMBER
static int | SE_INVALID_RASTERATTR_OBJECT
static int | SE_INVALID_RASTERBAND_COLORMAP
static int | SE_INVALID_RASTERBAND_NUMBER
static int | SE_INVALID_RASTERBAND_STATS
static int | SE_INVALID_RASTERCOLUMN_NUMBER
static int | SE_INVALID_RASTERINFO_OBJECT
static int | SE_INVALID_RASTILEINFO_OBJECT
static int | SE_INVALID_REGINFO_OBJECT
static int | SE_INVALID_REGISTERED_LAYER_OPTION
static int | SE_INVALID_REGISTRATION_ID
static int | SE_INVALID_RELEASE
static int | SE_INVALID_ROW_ID_LAYER
static int | SE_INVALID_SDEHOME
static int | SE_INVALID_SDO_GEOM_METADATA_OBJ
static int | SE_INVALID_SEARCH_METHOD
static int | SE_INVALID_SERVER
static int | SE_INVALID_SHAPE
static int | SE_INVALID_SHAPE_BUF_SIZE
static int | SE_INVALID_SHAPE_OBJECT
static int | SE_INVALID_SPATIAL_COL_NAME
static int | SE_INVALID_SPATIAL_COLUMN
static int | SE_INVALID_SPATIAL_CONSTRAINT
static int | SE_INVALID_SPATIALREFINFO_OBJECT
static int | SE_INVALID_SQL
static int | SE_INVALID_STATE_ID
static int | SE_INVALID_STATEINFO_OBJECT
static int | SE_INVALID_STATS_TYPE
static int | SE_INVALID_STORAGE_TYPE
static int | SE_INVALID_STREAM
static int | SE_INVALID_STREAM_SPEC
static int | SE_INVALID_STREAM_TYPE
static int | SE_INVALID_SYSTEM_UNITS
static int | SE_INVALID_TRANSID
static int | SE_INVALID_UNITS
static int | SE_INVALID_USER
static int | SE_INVALID_VERSION_ID
static int | SE_INVALID_VERSION_NAME
static int | SE_INVALID_VERSIONINFO_OBJECT
static int | SE_INVALID_VOLUME_INFO
static int | SE_INVALID_WHERE
static int | SE_IOMGR_NO_DBMS_CONNECT
static int | SE_IOMGR_NOT_AVAILABLE
static int | SE_IOMGR_NOT_FOUND
static int | SE_LAYER_CACHE_FULL
static int | SE_LAYER_EXISTS
static int | SE_LAYER_INUSE
static int | SE_LAYER_LOCKED
static int | SE_LAYER_MISMATCH
static int | SE_LAYER_NOEXIST
static int | SE_LAYERS_NOT_FOUND
static int | SE_LAYERS_UPDATE_FAILED
static int | SE_LICENSE_EXPIRED
static int | SE_LICENSE_FAILURE
static int | SE_LOAD_ONLY_LAYER
static int | SE_LOCATOR_EXISTS
static int | SE_LOCATOR_NOEXIST
static int | SE_LOCK_CONFLICT
static int | SE_LOCK_EXISTS
static int | SE_LOG_EXISTS
static int | SE_LOG_IO_ERROR
static int | SE_LOG_IS_OPEN
static int | SE_LOG_NOACCESS
static int | SE_LOG_NOEXIST
static int | SE_LOG_NOTOPEN
static int | SE_LOG_SYSTABLES_CREATE_FAILED
static int | SE_LOGIN_NOT_ALLOWED
static int | SE_METADATA_RECORD_NOEXIST
static int | SE_MOSAIC_NOT_ALLOWED
static int | SE_MULTIPLE_RASTER_COLS
static int | SE_MULTIPLE_SPATIAL_COLS
static int | SE_MVTABLE_CANT_BE_LOAD_ONLY
static int | SE_NET_FAILURE
static int | SE_NET_TIMEOUT
static int | SE_NIL_SHAPE_NOT_ALLOWED
static int | SE_NO_ACCESS
static int | SE_NO_ANNOTATION
static int | SE_NO_CAD
static int | SE_NO_COMMON_LINEAGE
static int | SE_NO_COORDREF
static int | SE_NO_CPGCVT
static int | SE_NO_CPGHOME
static int | SE_NO_DBTUNE_FILE
static int | SE_NO_LAYER_SPECIFIED
static int | SE_NO_LOCALIZED_MESSAGE
static int | SE_NO_LOCKS
static int | SE_NO_PERMISSIONS
static int | SE_NO_REQUEST_RESULTS
static int | SE_NO_REQUEST_STATUS
static int | SE_NO_ROWID_COLUMN
static int | SE_NO_ROWS_DELETED
static int | SE_NO_ROWS_UPDATED
static int | SE_NO_SDE_ROWID_COLUMN
static int | SE_NO_SHAPES
static int | SE_NO_SPATIAL_INDEX
static int | SE_NO_SPATIAL_MASKS
static int | SE_NO_STATE_SET
static int | SE_NO_TRACE_LIBRARY
static int | SE_NORM_DIM_INFO_NOT_FOUND
static int | SE_NORM_DIM_TAB_VALUE_NOT_FOUND
static int | SE_NORMALIZE_VALUE_NOT_FOUND
static int | SE_NOT_A_SELECT_STATEMENT
static int | SE_NOT_IMPLEMENTED_YET
static int | SE_NOT_IN_RASTER
static int | SE_NOT_TABLE_OWNER
static int | SE_NULL_VALUE
static int | SE_OBJECT_RESTRICTED
static int | SE_OPERATION_NOT_ALLOWED
static int | SE_OUT_OF_CLMEM
static int | SE_OUT_OF_CONTEXT
static int | SE_OUT_OF_LICENSES
static int | SE_OUT_OF_LOCKS
static int | SE_OUT_OF_MUTEXES
static int | SE_OUT_OF_SVMEM
static int | SE_OUTER_SHELLS_OVERLAP
static int | SE_PARENT_NOT_CLOSED
static int | SE_PASSWORD_TIMEOUT
static int | SE_PATH_NOT_FOUND
static int | SE_POLY_SHELLS_OVERLAP
static int | SE_POLYGON_HAS_VERTICAL_LINE
static int | SE_PROCESS_NOT_FOUND
static int | SE_PROJECTION_ERROR
static int | SE_PT_NO_EXIST
static int | SE_PTABLE_IN_USE
static int | SE_PTABLE_LOCKED
static int | SE_PTS_NOT_ADJACENT
static int | SE_QUERYINFO_NOT_PREPARED
static int | SE_RASTER_EXISTS
static int | SE_RASTER_NOEXIST
static int | SE_RASTERBAND_EXISTS
static int | SE_RASTERBAND_NO_COLORMAP
static int | SE_RASTERBAND_NO_STATS
static int | SE_RASTERBAND_NOEXIST
static int | SE_RASTERBUFFER_TOO_SMALL
static int | SE_RASTERCOLUMN_EXISTS
static int | SE_RASTERCOLUMN_INUSE
static int | SE_RASTERCOLUMN_NOEXIST
static int | SE_READ_ONLY
static int | SE_READ_ONLY_COLUMN
static int | SE_READ_ONLY_SHAPE
static int | SE_REGISTERED_TABLE_ROWID_EXIST
static int | SE_REGISTRATION_NOT_ALLOWED
static int | SE_ROW_EXISTS
static int | SE_ROW_NOEXIST
static int | SE_ROW_OUT_OF_SEQUENCE
static int | SE_ROWLOCK_MASK_CONFLICT
static int | SE_ROWLOCKING_ENABLED
static int | SE_ROWLOCKING_NOT_ENABLED
static int | SE_SCL_SYNTAX_ERROR
static int | SE_SDE_NOT_STARTED
static int | SE_SDE_WARNING
static int | SE_SDEHOME_NOT_SET
static int | SE_SDEMETADATA_NOT_FOUND
static int | SE_SDETRACELOC_NOT_SET
static int | SE_SELF_INTERSECTING
static int | SE_SEQUENCENBR_EXISTS
static int | SE_SEQUENCENBR_NOEXIST
static int | SE_SERVER_LIB_LOAD_ERROR
static int | SE_SERVICE_NOT_FOUND
static int | SE_SET_VALUE_CONFLICT
static int | SE_SHAPE_INTEGRITY_ERROR
static int | SE_SHAPE_TEXT_ERROR
static int | SE_SHAPE_TEXT_TOO_LONG
static int | SE_SPATIAL_INDEX_NOT_CREATED
static int | SE_SPATIAL_SQL_NOT_INSTALLED
static int | SE_SPATIALREF_EXISTS
static int | SE_SPATIALREF_IN_USE
static int | SE_SPATIALREF_NOEXIST
static int | SE_SQL_KEYWORD
static int | SE_SQL_PARENTHESIS_MISMATCH
static int | SE_SQL_TOO_LONG
static int | SE_SQLTYPE_INVALID_FEATURE_TYPE
static int | SE_SQLTYPE_UNSUPPORTED_ETYPE
static int | SE_SSA_FUNCTION_ERROR
static int | SE_STABLE_IN_USE
static int | SE_STABLE_LOCKED
static int | SE_STATE_HAS_CHILDREN
static int | SE_STATE_INUSE
static int | SE_STATE_NOEXIST
static int | SE_STATE_TREE_INUSE
static int | SE_STATE_USED_BY_VERSION
static int | SE_STATES_ARE_SAME
static int | SE_STREAM_IN_PROGRESS
static int | SE_SUCCESS
static int | SE_SYSTEM_IS_CLIENT_ONLY
static int | SE_TABLE_EXISTS
static int | SE_TABLE_HAS_NO_LOCATOR
static int | SE_TABLE_NOEXIST
static int | SE_TABLE_NOREGISTERED
static int | SE_TABLE_NOT_MULTIVERSION
static int | SE_TABLE_REGISTERED
static int | SE_TABLE_SCHEMA_IS_LOCKED
static int | SE_TASKS_EXCEEDED
static int | SE_TEMP_IO_ERROR
static int | SE_TOO_FEW_POINTS
static int | SE_TOO_MANY_DISTINCTS
static int | SE_TOO_MANY_LAYERS
static int | SE_TOO_MANY_PARTS
static int | SE_TOO_MANY_POINTS
static int | SE_TOO_MANY_RASTERBANDS
static int | SE_TOO_MANY_RASTERCOLUMNS
static int | SE_TOO_MANY_RASTERS
static int | SE_TOO_MANY_REGISTRATIONS
static int | SE_TOO_MANY_STATES
static int | SE_TOO_MANY_STREAMS
static int | SE_TOPO_ERROR
static int | SE_TRACE_OFF
static int | SE_TRACE_ON
static int | SE_TRANS_IN_PROGRESS
static int | SE_TYPE_MISMATCH
static int | SE_UNCHANGED
static int | SE_UNSUPPORTED_NORMALIZED_OPERATION
static int | SE_UNSUPPORTED_ON_MVTABLE
static int | SE_UNSUPPORTED_ON_VIEW
static int | SE_UNSUPPORTED_OPERATION
static int | SE_VERSION_EXISTS
static int | SE_VERSION_HAS_CHILDREN
static int | SE_VERSION_HAS_MOVED
static int | SE_VERSION_NOEXIST
static int | SE_VERSION_TBL_EXISTS
static int | SE_VIEW_EXISTS
static int | SE_VIEW_NOEXIST
static int | SE_WRONG_COLUMN_TYPE
static int | SE_ZERO_AREA_POLYGON
static int | SHAPE_TYPE
static int | STREAM_TYPE
Method Summary
java.lang.String | getErrDesc() Returns the ArcSDE error description.
java.lang.String | getErrDesc(int e) Returns the ArcSDE error description for specified error.
java.lang.String | getExtErrMsg() Returns the ArcSDE extended error message (if any).
int | getExtError() Returns the numeric ArcSDE extended error code.
java.lang.String | getSdeErrMsg() Returns the ArcSde error message (if any).
int | getSdeError() Returns the numeric ArcSDE error code.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_FAILURE

public static final int SE_FAILURE

SE_INVALID_LAYERINFO_OBJECT

public static final int SE_INVALID_LAYERINFO_OBJECT

SE_NO_ANNOTATION

public static final int SE_NO_ANNOTATION

SE_FINISHED

public static final int SE_FINISHED

SE_SDE_NOT_STARTED

public static final int SE_SDE_NOT_STARTED

SE_UNCHANGED

public static final int SE_UNCHANGED

SE_TASKS_EXCEEDED

public static final int SE_TASKS_EXCEEDED

SE_CONNECTIONS_EXCEEDED

public static final int SE_CONNECTIONS_EXCEEDED

SE_LOGIN_NOT_ALLOWED

public static final int SE_LOGIN_NOT_ALLOWED

SE_INVALID_USER

public static final int SE_INVALID_USER

SE_NET_FAILURE

public static final int SE_NET_FAILURE

SE_NET_TIMEOUT

public static final int SE_NET_TIMEOUT

SE_OUT_OF_SVMEM

public static final int SE_OUT_OF_SVMEM

SE_OUT_OF_CLMEM

public static final int SE_OUT_OF_CLMEM

SE_OUT_OF_CONTEXT

public static final int SE_OUT_OF_CONTEXT

SE_NO_ACCESS

public static final int SE_NO_ACCESS

SE_TOO_MANY_LAYERS

public static final int SE_TOO_MANY_LAYERS

SE_NO_LAYER_SPECIFIED

public static final int SE_NO_LAYER_SPECIFIED

SE_LAYER_LOCKED

public static final int SE_LAYER_LOCKED

SE_LAYER_EXISTS

public static final int SE_LAYER_EXISTS

SE_LAYER_NOEXIST

public static final int SE_LAYER_NOEXIST

SE_LAYER_INUSE

public static final int SE_LAYER_INUSE

SE_FID_NOEXIST

public static final int SE_FID_NOEXIST

SE_ROW_NOEXIST

public static final int SE_ROW_NOEXIST

SE_FID_EXISTS

public static final int SE_FID_EXISTS

SE_ROW_EXISTS

public static final int SE_ROW_EXISTS

SE_LAYER_MISMATCH

public static final int SE_LAYER_MISMATCH

SE_NO_PERMISSIONS

public static final int SE_NO_PERMISSIONS

SE_INVALID_NOT_NULL

public static final int SE_INVALID_NOT_NULL

SE_INVALID_SHAPE

public static final int SE_INVALID_SHAPE

SE_INVALID_LAYER_NUMBER

public static final int SE_INVALID_LAYER_NUMBER

SE_INVALID_ENTITY_TYPE

public static final int SE_INVALID_ENTITY_TYPE

SE_INVALID_SEARCH_METHOD

public static final int SE_INVALID_SEARCH_METHOD

SE_INVALID_ETYPE_MASK

public static final int SE_INVALID_ETYPE_MASK

SE_BIND_CONFLICT

public static final int SE_BIND_CONFLICT

SE_INVALID_GRIDSIZE

public static final int SE_INVALID_GRIDSIZE

SE_INVALID_LOCK_MODE

public static final int SE_INVALID_LOCK_MODE

SE_ETYPE_NOT_ALLOWED

public static final int SE_ETYPE_NOT_ALLOWED

SE_TOO_MANY_POINTS

public static final int SE_TOO_MANY_POINTS

SE_INVALID_NUM_OF_PTS

public static final int SE_INVALID_NUM_OF_PTS

SE_TABLE_NOEXIST

public static final int SE_TABLE_NOEXIST

SE_ATTR_NOEXIST

public static final int SE_ATTR_NOEXIST

SE_LICENSE_FAILURE

public static final int SE_LICENSE_FAILURE

SE_OUT_OF_LICENSES

public static final int SE_OUT_OF_LICENSES

SE_INVALID_COLUMN_VALUE

public static final int SE_INVALID_COLUMN_VALUE

SE_INVALID_WHERE

public static final int SE_INVALID_WHERE

SE_INVALID_SQL

public static final int SE_INVALID_SQL

SE_LOG_NOEXIST

public static final int SE_LOG_NOEXIST

SE_LOG_NOACCESS

public static final int SE_LOG_NOACCESS

SE_LOG_NOTOPEN

public static final int SE_LOG_NOTOPEN

SE_LOG_IO_ERROR

public static final int SE_LOG_IO_ERROR

SE_NO_SHAPES

public static final int SE_NO_SHAPES

SE_NO_LOCKS

public static final int SE_NO_LOCKS

SE_LOCK_CONFLICT

public static final int SE_LOCK_CONFLICT

SE_OUT_OF_LOCKS

public static final int SE_OUT_OF_LOCKS

SE_DB_IO_ERROR

public static final int SE_DB_IO_ERROR

SE_STREAM_IN_PROGRESS

public static final int SE_STREAM_IN_PROGRESS

SE_INVALID_COLUMN_TYPE

public static final int SE_INVALID_COLUMN_TYPE

SE_TOPO_ERROR

public static final int SE_TOPO_ERROR

SE_ATTR_CONV_ERROR

public static final int SE_ATTR_CONV_ERROR

SE_INVALID_COLUMN_DEF

public static final int SE_INVALID_COLUMN_DEF

SE_INVALID_SHAPE_BUF_SIZE

public static final int SE_INVALID_SHAPE_BUF_SIZE

SE_INVALID_ENVELOPE

public static final int SE_INVALID_ENVELOPE

SE_TEMP_IO_ERROR

public static final int SE_TEMP_IO_ERROR

SE_GSIZE_TOO_SMALL

public static final int SE_GSIZE_TOO_SMALL

SE_LICENSE_EXPIRED

public static final int SE_LICENSE_EXPIRED

SE_TABLE_EXISTS

public static final int SE_TABLE_EXISTS

SE_INDEX_EXISTS

public static final int SE_INDEX_EXISTS

SE_INDEX_NOEXIST

public static final int SE_INDEX_NOEXIST

SE_INVALID_POINTER

public static final int SE_INVALID_POINTER

SE_INVALID_PARAM_VALUE

public static final int SE_INVALID_PARAM_VALUE

SE_ALL_SLIVERS

public static final int SE_ALL_SLIVERS

SE_TRANS_IN_PROGRESS

public static final int SE_TRANS_IN_PROGRESS

SE_IOMGR_NO_DBMS_CONNECT

public static final int SE_IOMGR_NO_DBMS_CONNECT

SE_DUPLICATE_ARC

public static final int SE_DUPLICATE_ARC

SE_INVALID_ANNO_OBJECT

public static final int SE_INVALID_ANNO_OBJECT

SE_PT_NO_EXIST

public static final int SE_PT_NO_EXIST

SE_PTS_NOT_ADJACENT

public static final int SE_PTS_NOT_ADJACENT

SE_INVALID_MID_PT

public static final int SE_INVALID_MID_PT

SE_INVALID_END_PT

public static final int SE_INVALID_END_PT

SE_INVALID_RADIUS

public static final int SE_INVALID_RADIUS

SE_LOAD_ONLY_LAYER

public static final int SE_LOAD_ONLY_LAYER

SE_LAYERS_NOT_FOUND

public static final int SE_LAYERS_NOT_FOUND

SE_FILE_IO_ERROR

public static final int SE_FILE_IO_ERROR

SE_BLOB_SIZE_TOO_LARGE

public static final int SE_BLOB_SIZE_TOO_LARGE

SE_CORRIDOR_OUT_OF_BOUNDS

public static final int SE_CORRIDOR_OUT_OF_BOUNDS

SE_SHAPE_INTEGRITY_ERROR

public static final int SE_SHAPE_INTEGRITY_ERROR

SE_NOT_IMPLEMENTED_YET

public static final int SE_NOT_IMPLEMENTED_YET

SE_CAD_EXISTS

public static final int SE_CAD_EXISTS

SE_INVALID_TRANSID

public static final int SE_INVALID_TRANSID

SE_INVALID_LAYER_NAME

public static final int SE_INVALID_LAYER_NAME

SE_INVALID_LAYER_KEYWORD

public static final int SE_INVALID_LAYER_KEYWORD

SE_INVALID_RELEASE

public static final int SE_INVALID_RELEASE

SE_VERSION_TBL_EXISTS

public static final int SE_VERSION_TBL_EXISTS

SE_COLUMN_NOT_BOUND

public static final int SE_COLUMN_NOT_BOUND

SE_INVALID_INDICATOR_VALUE

public static final int SE_INVALID_INDICATOR_VALUE

SE_INVALID_CONNECTION

public static final int SE_INVALID_CONNECTION

SE_INVALID_DBA_PASSWORD

public static final int SE_INVALID_DBA_PASSWORD

SE_PATH_NOT_FOUND

public static final int SE_PATH_NOT_FOUND

SE_SDEHOME_NOT_SET

public static final int SE_SDEHOME_NOT_SET

SE_NOT_TABLE_OWNER

public static final int SE_NOT_TABLE_OWNER

SE_PROCESS_NOT_FOUND

public static final int SE_PROCESS_NOT_FOUND

SE_INVALID_DBMS_LOGIN

public static final int SE_INVALID_DBMS_LOGIN

SE_PASSWORD_TIMEOUT

public static final int SE_PASSWORD_TIMEOUT

SE_INVALID_SERVER

public static final int SE_INVALID_SERVER

SE_IOMGR_NOT_AVAILABLE

public static final int SE_IOMGR_NOT_AVAILABLE

SE_SERVICE_NOT_FOUND

public static final int SE_SERVICE_NOT_FOUND

SE_INVALID_STATS_TYPE

public static final int SE_INVALID_STATS_TYPE

SE_INVALID_DISTINCT_TYPE

public static final int SE_INVALID_DISTINCT_TYPE

SE_INVALID_GRANT_REVOKE

public static final int SE_INVALID_GRANT_REVOKE

SE_INVALID_SDEHOME

public static final int SE_INVALID_SDEHOME

SE_INVALID_STREAM

public static final int SE_INVALID_STREAM

SE_TOO_MANY_STREAMS

public static final int SE_TOO_MANY_STREAMS

SE_OUT_OF_MUTEXES

public static final int SE_OUT_OF_MUTEXES

SE_CONNECTION_LOCKED

public static final int SE_CONNECTION_LOCKED

SE_CONNECTION_IN_USE

public static final int SE_CONNECTION_IN_USE

SE_NOT_A_SELECT_STATEMENT

public static final int SE_NOT_A_SELECT_STATEMENT

SE_FUNCTION_SEQUENCE_ERROR

public static final int SE_FUNCTION_SEQUENCE_ERROR

SE_WRONG_COLUMN_TYPE

public static final int SE_WRONG_COLUMN_TYPE

SE_PTABLE_LOCKED

public static final int SE_PTABLE_LOCKED

SE_PTABLE_IN_USE

public static final int SE_PTABLE_IN_USE

SE_STABLE_LOCKED

public static final int SE_STABLE_LOCKED

SE_STABLE_IN_USE

public static final int SE_STABLE_IN_USE

SE_INVALID_FILTER_TYPE

public static final int SE_INVALID_FILTER_TYPE

SE_NO_CAD

public static final int SE_NO_CAD

SE_INSTANCE_NOT_AVAILABLE

public static final int SE_INSTANCE_NOT_AVAILABLE

SE_INSTANCE_TOO_EARLY

public static final int SE_INSTANCE_TOO_EARLY

SE_INVALID_SYSTEM_UNITS

public static final int SE_INVALID_SYSTEM_UNITS

SE_INVALID_UNITS

public static final int SE_INVALID_UNITS

SE_INVALID_CAD_OBJECT

public static final int SE_INVALID_CAD_OBJECT

SE_VERSION_NOEXIST

public static final int SE_VERSION_NOEXIST

SE_INVALID_SPATIAL_CONSTRAINT

public static final int SE_INVALID_SPATIAL_CONSTRAINT

SE_INVALID_STREAM_TYPE

public static final int SE_INVALID_STREAM_TYPE

SE_INVALID_SPATIAL_COLUMN

public static final int SE_INVALID_SPATIAL_COLUMN

SE_NO_SPATIAL_MASKS

public static final int SE_NO_SPATIAL_MASKS

SE_IOMGR_NOT_FOUND

public static final int SE_IOMGR_NOT_FOUND

SE_SYSTEM_IS_CLIENT_ONLY

public static final int SE_SYSTEM_IS_CLIENT_ONLY

SE_MULTIPLE_SPATIAL_COLS

public static final int SE_MULTIPLE_SPATIAL_COLS

SE_INVALID_SHAPE_OBJECT

public static final int SE_INVALID_SHAPE_OBJECT

SE_INVALID_PARTNUM

public static final int SE_INVALID_PARTNUM

SE_INCOMPATIBLE_SHAPES

public static final int SE_INCOMPATIBLE_SHAPES

SE_INVALID_PART_OFFSET

public static final int SE_INVALID_PART_OFFSET

SE_INCOMPATIBLE_COORDREFS

public static final int SE_INCOMPATIBLE_COORDREFS

SE_COORD_OUT_OF_BOUNDS

public static final int SE_COORD_OUT_OF_BOUNDS

SE_LAYER_CACHE_FULL

public static final int SE_LAYER_CACHE_FULL

SE_INVALID_COORDREF_OBJECT

public static final int SE_INVALID_COORDREF_OBJECT

SE_INVALID_COORDSYS_ID

public static final int SE_INVALID_COORDSYS_ID

SE_INVALID_COORDSYS_DESC

public static final int SE_INVALID_COORDSYS_DESC

SE_INVALID_ROW_ID_LAYER

public static final int SE_INVALID_ROW_ID_LAYER

SE_PROJECTION_ERROR

public static final int SE_PROJECTION_ERROR

SE_ARRAY_BYTES_EXCEEDED

public static final int SE_ARRAY_BYTES_EXCEEDED

SE_POLY_SHELLS_OVERLAP

public static final int SE_POLY_SHELLS_OVERLAP

SE_TOO_FEW_POINTS

public static final int SE_TOO_FEW_POINTS

SE_INVALID_PART_SEPARATOR

public static final int SE_INVALID_PART_SEPARATOR

SE_INVALID_POLYGON_CLOSURE

public static final int SE_INVALID_POLYGON_CLOSURE

SE_INVALID_OUTER_SHELL

public static final int SE_INVALID_OUTER_SHELL

SE_ZERO_AREA_POLYGON

public static final int SE_ZERO_AREA_POLYGON

SE_POLYGON_HAS_VERTICAL_LINE

public static final int SE_POLYGON_HAS_VERTICAL_LINE

SE_OUTER_SHELLS_OVERLAP

public static final int SE_OUTER_SHELLS_OVERLAP

SE_SELF_INTERSECTING

public static final int SE_SELF_INTERSECTING

SE_INVALID_EXPORT_FILE

public static final int SE_INVALID_EXPORT_FILE

SE_READ_ONLY_SHAPE

public static final int SE_READ_ONLY_SHAPE

SE_INVALID_DATA_SOURCE

public static final int SE_INVALID_DATA_SOURCE

SE_INVALID_STREAM_SPEC

public static final int SE_INVALID_STREAM_SPEC

SE_INVALID_ALTER_OPERATION

public static final int SE_INVALID_ALTER_OPERATION

SE_INVALID_SPATIAL_COL_NAME

public static final int SE_INVALID_SPATIAL_COL_NAME

SE_INVALID_DATABASE

public static final int SE_INVALID_DATABASE

SE_SPATIAL_SQL_NOT_INSTALLED

public static final int SE_SPATIAL_SQL_NOT_INSTALLED

SE_NORM_DIM_INFO_NOT_FOUND

public static final int SE_NORM_DIM_INFO_NOT_FOUND

SE_NORM_DIM_TAB_VALUE_NOT_FOUND

public static final int SE_NORM_DIM_TAB_VALUE_NOT_FOUND

SE_UNSUPPORTED_NORMALIZED_OPERATION

public static final int SE_UNSUPPORTED_NORMALIZED_OPERATION

SE_INVALID_REGISTERED_LAYER_OPTION

public static final int SE_INVALID_REGISTERED_LAYER_OPTION

SE_READ_ONLY

public static final int SE_READ_ONLY

SE_NO_SDE_ROWID_COLUMN

public static final int SE_NO_SDE_ROWID_COLUMN

SE_READ_ONLY_COLUMN

public static final int SE_READ_ONLY_COLUMN

SE_INVALID_VERSION_NAME

public static final int SE_INVALID_VERSION_NAME

SE_STATE_NOEXIST

public static final int SE_STATE_NOEXIST

SE_INVALID_STATEINFO_OBJECT

public static final int SE_INVALID_STATEINFO_OBJECT

SE_VERSION_HAS_MOVED

public static final int SE_VERSION_HAS_MOVED

SE_STATE_HAS_CHILDREN

public static final int SE_STATE_HAS_CHILDREN

SE_PARENT_NOT_CLOSED

public static final int SE_PARENT_NOT_CLOSED

SE_VERSION_EXISTS

public static final int SE_VERSION_EXISTS

SE_TABLE_NOT_MULTIVERSION

public static final int SE_TABLE_NOT_MULTIVERSION

SE_STATE_USED_BY_VERSION

public static final int SE_STATE_USED_BY_VERSION

SE_INVALID_VERSIONINFO_OBJECT

public static final int SE_INVALID_VERSIONINFO_OBJECT

SE_INVALID_STATE_ID

public static final int SE_INVALID_STATE_ID

SE_SDETRACELOC_NOT_SET

public static final int SE_SDETRACELOC_NOT_SET

SE_ERROR_LOADING_SSA

public static final int SE_ERROR_LOADING_SSA

SE_TOO_MANY_STATES

public static final int SE_TOO_MANY_STATES

SE_STATES_ARE_SAME

public static final int SE_STATES_ARE_SAME

SE_NO_ROWID_COLUMN

public static final int SE_NO_ROWID_COLUMN

SE_NO_STATE_SET

public static final int SE_NO_STATE_SET

SE_SSA_FUNCTION_ERROR

public static final int SE_SSA_FUNCTION_ERROR

SE_INVALID_REGINFO_OBJECT

public static final int SE_INVALID_REGINFO_OBJECT

SE_NO_COMMON_LINEAGE

public static final int SE_NO_COMMON_LINEAGE

SE_STATE_INUSE

public static final int SE_STATE_INUSE

SE_STATE_TREE_INUSE

public static final int SE_STATE_TREE_INUSE

SE_INVALID_RASTER_COLUMN

public static final int SE_INVALID_RASTER_COLUMN

SE_RASTERCOLUMN_EXISTS

public static final int SE_RASTERCOLUMN_EXISTS

SE_INVALID_MVTABLE_INDEX

public static final int SE_INVALID_MVTABLE_INDEX

SE_INVALID_STORAGE_TYPE

public static final int SE_INVALID_STORAGE_TYPE

SE_AMBIGUOUS_NIL_SHAPE

public static final int SE_AMBIGUOUS_NIL_SHAPE

SE_INVALID_BYTE_ORDER

public static final int SE_INVALID_BYTE_ORDER

SE_INVALID_GEOMETRY_TYPE

public static final int SE_INVALID_GEOMETRY_TYPE

SE_INVALID_NUM_MEASURES

public static final int SE_INVALID_NUM_MEASURES

SE_INVALID_NUM_PARTS

public static final int SE_INVALID_NUM_PARTS

SE_BINARY_TOO_SMALL

public static final int SE_BINARY_TOO_SMALL

SE_SHAPE_TEXT_TOO_LONG

public static final int SE_SHAPE_TEXT_TOO_LONG

SE_SHAPE_TEXT_ERROR

public static final int SE_SHAPE_TEXT_ERROR

SE_TOO_MANY_PARTS

public static final int SE_TOO_MANY_PARTS

SE_TYPE_MISMATCH

public static final int SE_TYPE_MISMATCH

SE_SQL_PARENTHESIS_MISMATCH

public static final int SE_SQL_PARENTHESIS_MISMATCH

SE_NIL_SHAPE_NOT_ALLOWED

public static final int SE_NIL_SHAPE_NOT_ALLOWED

SE_INSTANCE_ALREADY_RUNNING

public static final int SE_INSTANCE_ALREADY_RUNNING

SE_UNSUPPORTED_OPERATION

public static final int SE_UNSUPPORTED_OPERATION

SE_INVALID_EXTERNAL_LAYER_OPTION

public static final int SE_INVALID_EXTERNAL_LAYER_OPTION

SE_NORMALIZE_VALUE_NOT_FOUND

public static final int SE_NORMALIZE_VALUE_NOT_FOUND

SE_INVALID_QUERY_TYPE

public static final int SE_INVALID_QUERY_TYPE

SE_NO_TRACE_LIBRARY

public static final int SE_NO_TRACE_LIBRARY

SE_TRACE_ON

public static final int SE_TRACE_ON

SE_TRACE_OFF

public static final int SE_TRACE_OFF

SE_SCL_SYNTAX_ERROR

public static final int SE_SCL_SYNTAX_ERROR

SE_TABLE_REGISTERED

public static final int SE_TABLE_REGISTERED

SE_INVALID_REGISTRATION_ID

public static final int SE_INVALID_REGISTRATION_ID

SE_TABLE_NOREGISTERED

public static final int SE_TABLE_NOREGISTERED

SE_TOO_MANY_REGISTRATIONS

public static final int SE_TOO_MANY_REGISTRATIONS

SE_DELETE_NOT_ALLOWED

public static final int SE_DELETE_NOT_ALLOWED

SE_ROWLOCKING_ENABLED

public static final int SE_ROWLOCKING_ENABLED

SE_ROWLOCKING_NOT_ENABLED

public static final int SE_ROWLOCKING_NOT_ENABLED

SE_RASTERCOLUMN_INUSE

public static final int SE_RASTERCOLUMN_INUSE

SE_RASTERCOLUMN_NOEXIST

public static final int SE_RASTERCOLUMN_NOEXIST

SE_INVALID_RASTERCOLUMN_NUMBER

public static final int SE_INVALID_RASTERCOLUMN_NUMBER

SE_TOO_MANY_RASTERCOLUMNS

public static final int SE_TOO_MANY_RASTERCOLUMNS

SE_INVALID_RASTER_NUMBER

public static final int SE_INVALID_RASTER_NUMBER

SE_NO_REQUEST_STATUS

public static final int SE_NO_REQUEST_STATUS

SE_NO_REQUEST_RESULTS

public static final int SE_NO_REQUEST_RESULTS

SE_RASTERBAND_EXISTS

public static final int SE_RASTERBAND_EXISTS

SE_RASTERBAND_NOEXIST

public static final int SE_RASTERBAND_NOEXIST

SE_RASTER_EXISTS

public static final int SE_RASTER_EXISTS

SE_RASTER_NOEXIST

public static final int SE_RASTER_NOEXIST

SE_TOO_MANY_RASTERBANDS

public static final int SE_TOO_MANY_RASTERBANDS

SE_TOO_MANY_RASTERS

public static final int SE_TOO_MANY_RASTERS

SE_VIEW_EXISTS

public static final int SE_VIEW_EXISTS

SE_VIEW_NOEXIST

public static final int SE_VIEW_NOEXIST

SE_LOCK_EXISTS

public static final int SE_LOCK_EXISTS

SE_ROWLOCK_MASK_CONFLICT

public static final int SE_ROWLOCK_MASK_CONFLICT

SE_NOT_IN_RASTER

public static final int SE_NOT_IN_RASTER

SE_INVALID_RASBANDINFO_OBJECT

public static final int SE_INVALID_RASBANDINFO_OBJECT

SE_INVALID_RASCOLINFO_OBJECT

public static final int SE_INVALID_RASCOLINFO_OBJECT

SE_INVALID_RASTERINFO_OBJECT

public static final int SE_INVALID_RASTERINFO_OBJECT

SE_INVALID_RASTERBAND_NUMBER

public static final int SE_INVALID_RASTERBAND_NUMBER

SE_MULTIPLE_RASTER_COLS

public static final int SE_MULTIPLE_RASTER_COLS

SE_TABLE_SCHEMA_IS_LOCKED

public static final int SE_TABLE_SCHEMA_IS_LOCKED

SE_INVALID_LOGINFO_OBJECT

public static final int SE_INVALID_LOGINFO_OBJECT

SE_SQL_TOO_LONG

public static final int SE_SQL_TOO_LONG

SE_UNSUPPORTED_ON_VIEW

public static final int SE_UNSUPPORTED_ON_VIEW

SE_LOG_EXISTS

public static final int SE_LOG_EXISTS

SE_LOG_IS_OPEN

public static final int SE_LOG_IS_OPEN

SE_SPATIALREF_EXISTS

public static final int SE_SPATIALREF_EXISTS

SE_SPATIALREF_NOEXIST

public static final int SE_SPATIALREF_NOEXIST

SE_SPATIALREF_IN_USE

public static final int SE_SPATIALREF_IN_USE

SE_INVALID_SPATIALREFINFO_OBJECT

public static final int SE_INVALID_SPATIALREFINFO_OBJECT

SE_SEQUENCENBR_EXISTS

public static final int SE_SEQUENCENBR_EXISTS

SE_INVALID_QUERYINFO_OBJECT

public static final int SE_INVALID_QUERYINFO_OBJECT

SE_QUERYINFO_NOT_PREPARED

public static final int SE_QUERYINFO_NOT_PREPARED

SE_INVALID_RASTILEINFO_OBJECT

public static final int SE_INVALID_RASTILEINFO_OBJECT

SE_INVALID_RASFILTERINFO_OBJECT

public static final int SE_INVALID_RASFILTERINFO_OBJECT

SE_INVALID_METADATA_RECORD_ID

public static final int SE_INVALID_METADATA_RECORD_ID

SE_INVALID_METADATA_OBJECT

public static final int SE_INVALID_METADATA_OBJECT

SE_INVALID_METADATA_OBJECT_TYPE

public static final int SE_INVALID_METADATA_OBJECT_TYPE

SE_SDEMETADATA_NOT_FOUND

public static final int SE_SDEMETADATA_NOT_FOUND

SE_METADATA_RECORD_NOEXIST

public static final int SE_METADATA_RECORD_NOEXIST

SE_GEOMETRYCOL_NOEXIST

public static final int SE_GEOMETRYCOL_NOEXIST

SE_INVALID_FILE_PATH

public static final int SE_INVALID_FILE_PATH

SE_INVALID_LOCATOR_OBJECT_TYPE

public static final int SE_INVALID_LOCATOR_OBJECT_TYPE

SE_INVALID_LOCATOR

public static final int SE_INVALID_LOCATOR

SE_TABLE_HAS_NO_LOCATOR

public static final int SE_TABLE_HAS_NO_LOCATOR

SE_INVALID_LOCATOR_CATEGORY

public static final int SE_INVALID_LOCATOR_CATEGORY

SE_INVALID_LOCATOR_NAME

public static final int SE_INVALID_LOCATOR_NAME

SE_LOCATOR_NOEXIST

public static final int SE_LOCATOR_NOEXIST

SE_LOCATOR_EXISTS

public static final int SE_LOCATOR_EXISTS

SE_INVALID_LOCATOR_TYPE

public static final int SE_INVALID_LOCATOR_TYPE

SE_NO_COORDREF

public static final int SE_NO_COORDREF

SE_CANT_TRIM_RECONCILED_STATE

public static final int SE_CANT_TRIM_RECONCILED_STATE

SE_FILE_OBJECT_NOEXIST

public static final int SE_FILE_OBJECT_NOEXIST

SE_FILE_OBJECT_EXISTS

public static final int SE_FILE_OBJECT_EXISTS

SE_INVALID_FILEINFO_OBJECT

public static final int SE_INVALID_FILEINFO_OBJECT

SE_INVALID_FILEINFO_OBJECT_TYPE

public static final int SE_INVALID_FILEINFO_OBJECT_TYPE

SE_RASTERBAND_NO_STATS

public static final int SE_RASTERBAND_NO_STATS

SE_VERSION_HAS_CHILDREN

public static final int SE_VERSION_HAS_CHILDREN

SE_SQLTYPE_UNSUPPORTED_ETYPE

public static final int SE_SQLTYPE_UNSUPPORTED_ETYPE

SE_NO_DBTUNE_FILE

public static final int SE_NO_DBTUNE_FILE

SE_LOG_SYSTABLES_CREATE_FAILED

public static final int SE_LOG_SYSTABLES_CREATE_FAILED

SE_OBJECT_RESTRICTED

public static final int SE_OBJECT_RESTRICTED

SE_INVALID_GEOGTRAN_OBJECT

public static final int SE_INVALID_GEOGTRAN_OBJECT

SE_COLUMN_EXISTS

public static final int SE_COLUMN_EXISTS

SE_SQL_KEYWORD

public static final int SE_SQL_KEYWORD

SE_INVALID_OBJECTLOCKINFO_OBJECT

public static final int SE_INVALID_OBJECTLOCKINFO_OBJECT

SE_RASTERBUFFER_TOO_SMALL

public static final int SE_RASTERBUFFER_TOO_SMALL

SE_INVALID_RASTER_DATA

public static final int SE_INVALID_RASTER_DATA

SE_OPERATION_NOT_ALLOWED

public static final int SE_OPERATION_NOT_ALLOWED

SE_INVALID_RASTERATTR_OBJECT

public static final int SE_INVALID_RASTERATTR_OBJECT

SE_INVALID_VERSION_ID

public static final int SE_INVALID_VERSION_ID

SE_MVTABLE_CANT_BE_LOAD_ONLY

public static final int SE_MVTABLE_CANT_BE_LOAD_ONLY

SE_INVALID_SDO_GEOM_METADATA_OBJ

public static final int SE_INVALID_SDO_GEOM_METADATA_OBJ

SE_ROW_OUT_OF_SEQUENCE

public static final int SE_ROW_OUT_OF_SEQUENCE

SE_INSTANCE_IS_READ_ONLY

public static final int SE_INSTANCE_IS_READ_ONLY

SE_MOSAIC_NOT_ALLOWED

public static final int SE_MOSAIC_NOT_ALLOWED

SE_INVALID_RASTER_BITMAP

public static final int SE_INVALID_RASTER_BITMAP

SE_SEQUENCENBR_NOEXIST

public static final int SE_SEQUENCENBR_NOEXIST

SE_SQLTYPE_INVALID_FEATURE_TYPE

public static final int SE_SQLTYPE_INVALID_FEATURE_TYPE

SE_DBMS_OBJECTS_NOT_SUPPORTED

public static final int SE_DBMS_OBJECTS_NOT_SUPPORTED

SE_BINARY_CONV_NO_COLUMNS_FOUND

public static final int SE_BINARY_CONV_NO_COLUMNS_FOUND

SE_RASTERBAND_NO_COLORMAP

public static final int SE_RASTERBAND_NO_COLORMAP

SE_INVALID_BIN_FUNCTION

public static final int SE_INVALID_BIN_FUNCTION

SE_INVALID_RASTERBAND_STATS

public static final int SE_INVALID_RASTERBAND_STATS

SE_INVALID_RASTERBAND_COLORMAP

public static final int SE_INVALID_RASTERBAND_COLORMAP

SE_INVALID_RASTER_KEYWORD

public static final int SE_INVALID_RASTER_KEYWORD

SE_INCOMPATIBLE_INSTANCE

public static final int SE_INCOMPATIBLE_INSTANCE

SE_INVALID_VOLUME_INFO

public static final int SE_INVALID_VOLUME_INFO

SE_INVALID_COMPRESSION_TYPE

public static final int SE_INVALID_COMPRESSION_TYPE

SE_INVALID_INDEX_PARAM

public static final int SE_INVALID_INDEX_PARAM

SE_INVALID_INDEX_TYPE

public static final int SE_INVALID_INDEX_TYPE

SE_SET_VALUE_CONFLICT

public static final int SE_SET_VALUE_CONFLICT

SE_ADT_DATATYPE_NOT_SUPPORTED

public static final int SE_ADT_DATATYPE_NOT_SUPPORTED

SE_NO_SPATIAL_INDEX

public static final int SE_NO_SPATIAL_INDEX

SE_INVALID_IDENTIFIER

public static final int SE_INVALID_IDENTIFIER

SE_REGISTERED_TABLE_ROWID_EXIST

public static final int SE_REGISTERED_TABLE_ROWID_EXIST

SE_SERVER_LIB_LOAD_ERROR

public static final int SE_SERVER_LIB_LOAD_ERROR

SE_REGISTRATION_NOT_ALLOWED

public static final int SE_REGISTRATION_NOT_ALLOWED

SE_UNSUPPORTED_ON_MVTABLE

public static final int SE_UNSUPPORTED_ON_MVTABLE

SE_SUCCESS

public static final int SE_SUCCESS

SE_SDE_WARNING

public static final int SE_SDE_WARNING

SE_ETYPE_CHANGED

public static final int SE_ETYPE_CHANGED

SE_NO_ROWS_DELETED

public static final int SE_NO_ROWS_DELETED

SE_TOO_MANY_DISTINCTS

public static final int SE_TOO_MANY_DISTINCTS

SE_NULL_VALUE

public static final int SE_NULL_VALUE

SE_NO_ROWS_UPDATED

public static final int SE_NO_ROWS_UPDATED

SE_NO_CPGCVT

public static final int SE_NO_CPGCVT

SE_NO_CPGHOME

public static final int SE_NO_CPGHOME

SE_DBMS_DOES_NOT_SUPPORT

public static final int SE_DBMS_DOES_NOT_SUPPORT

SE_INVALID_FUNCTION_ID

public static final int SE_INVALID_FUNCTION_ID

SE_LAYERS_UPDATE_FAILED

public static final int SE_LAYERS_UPDATE_FAILED

SE_NO_LOCALIZED_MESSAGE

public static final int SE_NO_LOCALIZED_MESSAGE

SE_SPATIAL_INDEX_NOT_CREATED

public static final int SE_SPATIAL_INDEX_NOT_CREATED

GENERIC_TYPE

public static final int GENERIC_TYPE

CONNECTION_TYPE

public static final int CONNECTION_TYPE

STREAM_TYPE

public static final int STREAM_TYPE

SHAPE_TYPE

public static final int SHAPE_TYPE
Method Detail

getSdeError

public int getSdeError()
Returns the numeric ArcSDE error code.
Returns:
int

getExtError

public int getExtError()
Returns the numeric ArcSDE extended error code.
Returns:
int

getSdeErrMsg

public java.lang.String getSdeErrMsg()
Returns the ArcSde error message (if any).
Returns:
String

getExtErrMsg

public java.lang.String getExtErrMsg()
Returns the ArcSDE extended error message (if any).
Returns:
String

getErrDesc

public java.lang.String getErrDesc()
Returns the ArcSDE error description.
Returns:
String

getErrDesc

public java.lang.String getErrDesc(int e)
Returns the ArcSDE error description for specified error.
Returns:
String
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
Direct Known Subclasses:
SeDoesNotExistException, SeExistsException, SeInvalidShapeException, SeInvalidValueException, SeNoAccessException, SeWarningException
public class SeException
extends java.lang.Exception

Thrown when an ArcSDE specific error has occurred.

See Also:
Serialized Form

Method Summary
 SeError getSeError()
Returns the ArcSde error object.
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Method Detail

getSeError

public SeError getSeError()
Returns the ArcSde error object.
Returns:
SeError
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeExceptionFactory

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeExceptionFactory

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeExceptionFactory
public class SeExceptionFactory
extends java.lang.Object

Constructor Summary
SeExceptionFactory()
Method Summary
static void throwException(SeLocale locale, int error, java.lang.String errStr)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeExceptionFactory

public SeExceptionFactory()
Method Detail

throwException

public static void throwException(SeLocale locale,
                                  int error,
                                  java.lang.String errStr)
                           throws SeException
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeExistsException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeExistsException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeExistsException
public class SeExistsException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeExistsException()
SeExistsException(SeError errObj)
SeExistsException(java.lang.String s)
SeExistsException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeExistsException

public SeExistsException()

SeExistsException

public SeExistsException(java.lang.String s)

SeExistsException

public SeExistsException(SeError errObj)

SeExistsException

public SeExistsException(java.lang.String s,
                         SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeExtent

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeExtent

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeExtent
public class SeExtent
extends com.esri.sde.sdk.client.SeServerObj

Represents an extent in real world coordinates. Holds X, Y, and Z min/max values.

Constructor Summary
SeExtent()
Constructs a default extent whose values can be set using the set methods.
SeExtent(double minx, double miny, double maxx, double maxy)
Constructs an extent with initial X/Y values provided.
SeExtent(double minx, double miny, double maxx, double maxy, double minz, double maxz)
Constructs an extent with initial X/Y/Z values provided.
Method Summary
double | getMaxX() Returns the maximum X value of the extent as a double.
double | getMaxY() Returns the maximum Y value of the extent as a double.
double | getMaxZ() Returns the maximum Z value of the extent as a double.
double | getMinX() Returns the minimum X value of the extent as a double.
double | getMinY() Returns the minimum Y value of the extent as a double.
double | getMinZ() Returns the minimum Z value of the extent as a double.
boolean | isEmpty() Returns true if the extent is considered empty.
void | setMaxX(double x) Sets the maximum X value of the extent.
void | setMaxY(double y) Sets the maximum Y value of the extent.
void | setMaxZ(double z) Sets the maximum Z value of the extent.
void | setMinX(double x) Sets the minimum X value of the extent.
void | setMinY(double y) Sets the minimum Y value of the extent.
void | setMinZ(double z) Sets the minimum Z value of the extent.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeExtent

public SeExtent()
Constructs a default extent whose values can be set using the set methods. Min values are initialized to 1.0. Max values are intialized to 0.0.

SeExtent

public SeExtent(double minx,
                double miny,
                double maxx,
                double maxy)
Constructs an extent with initial X/Y values provided.

SeExtent

public SeExtent(double minx,
                double miny,
                double maxx,
                double maxy,
                double minz,
                double maxz)
Constructs an extent with initial X/Y/Z values provided.
Method Detail

getMinX

public double getMinX()
Returns the minimum X value of the extent as a double.

getMinY

public double getMinY()
Returns the minimum Y value of the extent as a double.

getMaxX

public double getMaxX()
Returns the maximum X value of the extent as a double.

getMaxY

public double getMaxY()
Returns the maximum Y value of the extent as a double.

getMinZ

public double getMinZ()
Returns the minimum Z value of the extent as a double.

getMaxZ

public double getMaxZ()
Returns the maximum Z value of the extent as a double.

setMinX

public void setMinX(double x)
Sets the minimum X value of the extent.

setMinY

public void setMinY(double y)
Sets the minimum Y value of the extent.

setMaxX

public void setMaxX(double x)
Sets the maximum X value of the extent.

setMaxY

public void setMaxY(double y)
Sets the maximum Y value of the extent.

setMinZ

public void setMinZ(double z)
Sets the minimum Z value of the extent.

setMaxZ

public void setMaxZ(double z)
Sets the maximum Z value of the extent.

isEmpty

public boolean isEmpty()
Returns true if the extent is considered empty. An extent is empty if the min X value is greater than the max X value, or the min Y value is greater than the max Y value.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeFilter

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeFilter

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeFilter
Direct Known Subclasses:
SeShapeFilter, SeShapeIdFilter
public abstract class SeFilter
extends com.esri.sde.sdk.client.SeServerObj

Abstract class that defines search methods used in a spatial constraint. Spatial constraints are implemented as a set of spatial filters. Each candidate shape must pass through the filters to be added to the result set. A filter has the following components:

The name of the table containing the shape to test.

The name of the shape column to test.

A geometric shape to use for the filter test (the search shape)

The spatial relationship that the test must satisfy.

A boolean value indicating whether or not the shape must satisfy the geometric constraint.

Field Summary
static int | METHOD_AI Area Intersect search method.
static int | METHOD_AI_NO_ET Area intersect and no edge touch search method.
static int | METHOD_AI_OR_ET Area intersect or edge touch search method.
static int | METHOD_CBM Calculus based search method.
static int | METHOD_COMMON Common edge/line search method.
static int | METHOD_CP Common point search method.
static int | METHOD_CP_OR_LCROSS Common point or Line cross search method.
static int | METHOD_ENVP Envelopes overlap search method.
static int | METHOD_ENVP_BY_GRID Envelopes overlap search method.
static int | METHOD_ET_OR_AI Edge touch or area intersect search method.
static int | METHOD_ET_OR_II Edge touch or interior intersect search method.
static int | METHOD_IDENTICAL Identical search method.
static int | METHOD_II Interior Intersect search method.
static int | METHOD_II_NO_ET Interior intersect and no edge touch search method.
static int | METHOD_II_OR_ET Interior intersect or edge touch search method.
static int | METHOD_LCROSS Line Cross search method.
static int | METHOD_LCROSS_OR_CP Line cross or common point search method.
static int | METHOD_PC Primary shape contained in secondary shape search method.
static int | METHOD_PC_NO_ET Primary contained and no edge touch method.
static int | METHOD_PIP First point in primary in secondary shape search method.
static int | METHOD_SC Secondary contained in primary search method.
static int | METHOD_SC_NO_ET Secondary contained and no edge touch method.
static int | ORDER_ATTRIBUTE_FIRST Describes the ShapeIdFilter types.
static int | ORDER_OPTIMIZE
static int | ORDER_SPATIAL_FIRST
Constructor Summary
SeFilter()
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

METHOD_ENVP

public static final int METHOD_ENVP
Envelopes overlap search method.

METHOD_ENVP_BY_GRID

public static final int METHOD_ENVP_BY_GRID
Envelopes overlap search method.

METHOD_CP

public static final int METHOD_CP
Common point search method.

METHOD_LCROSS

public static final int METHOD_LCROSS
Line Cross search method.

METHOD_COMMON

public static final int METHOD_COMMON
Common edge/line search method.

METHOD_CP_OR_LCROSS

public static final int METHOD_CP_OR_LCROSS
Common point or Line cross search method.

METHOD_LCROSS_OR_CP

public static final int METHOD_LCROSS_OR_CP
Line cross or common point search method.

METHOD_ET_OR_AI

public static final int METHOD_ET_OR_AI
Edge touch or area intersect search method.

METHOD_AI_OR_ET

public static final int METHOD_AI_OR_ET
Area intersect or edge touch search method.

METHOD_ET_OR_II

public static final int METHOD_ET_OR_II
Edge touch or interior intersect search method.

METHOD_II_OR_ET

public static final int METHOD_II_OR_ET
Interior intersect or edge touch search method.

METHOD_AI

public static final int METHOD_AI
Area Intersect search method.

METHOD_II

public static final int METHOD_II
Interior Intersect search method.

METHOD_AI_NO_ET

public static final int METHOD_AI_NO_ET
Area intersect and no edge touch search method.

METHOD_II_NO_ET

public static final int METHOD_II_NO_ET
Interior intersect and no edge touch search method.

METHOD_PC

public static final int METHOD_PC
Primary shape contained in secondary shape search method.

METHOD_SC

public static final int METHOD_SC
Secondary contained in primary search method.

METHOD_PC_NO_ET

public static final int METHOD_PC_NO_ET
Primary contained and no edge touch method.

METHOD_SC_NO_ET

public static final int METHOD_SC_NO_ET
Secondary contained and no edge touch method.

METHOD_PIP

public static final int METHOD_PIP
First point in primary in secondary shape search method.

METHOD_IDENTICAL

public static final int METHOD_IDENTICAL
Identical search method.

METHOD_CBM

public static final int METHOD_CBM
Calculus based search method.

ORDER_ATTRIBUTE_FIRST

public static final int ORDER_ATTRIBUTE_FIRST
Describes the ShapeIdFilter types.

ORDER_SPATIAL_FIRST

public static final int ORDER_SPATIAL_FIRST

ORDER_OPTIMIZE

public static final int ORDER_OPTIMIZE
Constructor Detail

SeFilter

public SeFilter()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInsert

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInsert

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
        |
        +--com.esri.sde.sdk.client.SeInsert
public class SeInsert
extends SeStreamOp

Used to insert data into tables/layers and rows in an ArcSDE instance.

A typical SeInsert operation sequence is: 1) Create an SeInsert 2) Initialize an insert operation into a table 3) Call getRowToSet and set the column values of the returned SeRow 4) Execute the insert operation for each new row 5) Call flushBufferedWrites 6) close the insert

See Also:
SeRow

Constructor Summary
SeInsert(SeConnection conn)
Creates an SeInsert object given an SeConnection.
Method Summary
void | cancel(boolean reset) Cancels the current insert operation.
void | close() Closes the insert and releases the underlying stream back to the stream pool.
int | getNumColumns() Returns the number of columns on the query.
SeRow | getRowToSet() Returns a row object to set for this write operation.
void | intoTable(java.lang.String table, java.lang.String[] columns) Prepares to insert a row into a DBMS table.
SeObjectId | lastInsertedRowId() Returns the row id for the row most recently having an INSERT executed on this stream operation.
void | setWriteMode(boolean buffered) Turns buffering on or off for insert operations.
Methods inherited from class com.esri.sde.sdk.client.SeStreamOp
describeColumn, equivalenceRows, execute, flushBufferedWrites, inProgress, setLogfile, setRowLocking, setSSAFilter, setState, unequivalenceRows
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeInsert

public SeInsert(SeConnection conn)
         throws SeException
Creates an SeInsert object given an SeConnection.
Method Detail

intoTable

public void intoTable(java.lang.String table,
                      java.lang.String[] columns)
               throws SeException
Prepares to insert a row into a DBMS table.

getNumColumns

public int getNumColumns()
                  throws SeException
Returns the number of columns on the query.

getRowToSet

public SeRow getRowToSet()
Returns a row object to set for this write operation.

lastInsertedRowId

public SeObjectId lastInsertedRowId()
                             throws SeException
Returns the row id for the row most recently having an INSERT executed on this stream operation. The table the INSERT is operating on must be a registered table, with ArcSDE maintained rowIds.

setWriteMode

public void setWriteMode(boolean buffered)
                  throws SeException
Turns buffering on or off for insert operations.

cancel

public void cancel(boolean reset)
            throws SeException
Cancels the current insert operation. If reset is TRUE, the insert status is set to INACTIVE. If reset is FALSE the insert status is set to CLOSED.
Overrides:
cancel in class SeStreamOp

close

public void close()
           throws SeException
Closes the insert and releases the underlying stream back to the stream pool. If reset is TRUE, the insert status is set to INACTIVE.
Overrides:
close in class SeStreamOp
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeInstance
public class SeInstance
extends java.lang.Object

Used to manage and query an ArcSDE Instance.

Inner Class Summary
static class | SeInstance.SeInstanceConfiguration SeInstance inner class that retrieves the configuration of ArcSde instance.
static class | SeInstance.SeInstanceLocks SeInstance inner class that retrieves locks information for the ArcSde instance.
static class | SeInstance.SeInstanceStateLocks SeInstance inner class that retrieves state locks information for the ArcSde instance.
static class | SeInstance.SeInstanceStats SeInstance inner class that retrieves a list of user information for the ArcSde instance.
static class | SeInstance.SeInstanceStatus SeInstance inner class that retrieves the status of an ArcSde instance.
static class | SeInstance.SeInstanceTableLocks SeInstance inner class that retrieves table locks information for the ArcSde instance.
static class | SeInstance.SeInstanceUsers SeInstance inner class that retrieves a list of user information for the ArcSde instance.
static class | SeInstance.SeInstanceVersionLocks SeInstance inner class that retrieves version locks information for the ArcSde instance.
Constructor Summary
SeInstance(java.lang.String server, int instance)
Establishes a connection to an ArcSDE Instance.
SeInstance(java.lang.String server, int instance, java.util.Locale insLocale)
Establishes a connection to an ArcSDE Instance.
Method Summary
SeInstance.SeInstanceConfiguration | getConfiguration() Returns the ArcSde instance configuration.
int | getInstance() Returns the ArSde instance's port number.
SeInstance.SeInstanceLocks[] | getLocks() Returns a list of all the layer locks allocated by the instance.
SeObjectLock[] | getObjectLocks() Returns a list of all object locks allocated by the instance.
java.lang.String | getServerName() Returns the ArSde instance server name.
SeInstance.SeInstanceStateLocks[] | getStateLocks() Returns a list of state locks in use.
SeInstance.SeInstanceStats[] | getStats() Returns statistics of server processes connected to the ArcSde instance.
SeInstance.SeInstanceStatus | getStatus() Retrieves the ArcSde instance status.
SeInstance.SeInstanceTableLocks[] | getTableLocks() Returnss a list of table locks in use.
SeInstance.SeInstanceUsers[] | getUsers() Returns a list of user information connected to ArcSde instance.
java.lang.String[] | getVariables() Returns the ArcSde instance environment variables list.
SeInstance.SeInstanceVersionLocks[] | getVersionLocks() Returns a list of version locks in use.
void | killAllProcesses(java.lang.String password) Kills all ArcSde server processes.
void | killProcess(int pid, java.lang.String password) Kills the specified ArcSde server process.
void | pause(java.lang.String password) Pauses, or disallows further connections to, the ArcSde instance.
void | resume(java.lang.String password) Resumes, or allows connections to, the ArcSde instance.
void | shutdown(java.lang.String password) Shuts down the ArcSde instance.
void | start(java.lang.String instance, java.lang.String password) Starts the ArcSde Instance.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeInstance

public SeInstance(java.lang.String server,
                  int instance)
           throws SeException
Establishes a connection to an ArcSDE Instance. The instance is received as a port number.
Parameters:
server - name of the server machine.
instance - port number that the server instance is listening on.
Throws:
SeException -

SeInstance

public SeInstance(java.lang.String server,
                  int instance,
                  java.util.Locale insLocale)
           throws SeException
Establishes a connection to an ArcSDE Instance. The instance is received as a port number.
Parameters:
server - name of the server machine.
instance - port number that the server instance is listening on.
SeLocale - SeLocale object that identifies Locale properties.
Throws:
SeException -
Method Detail

getConfiguration

public SeInstance.SeInstanceConfiguration getConfiguration()
                                                    throws SeException
Returns the ArcSde instance configuration.
Returns:
SeInstanceConfiguration
Throws:
SeException -
See Also:
SeInstance.SeInstanceConfiguration

shutdown

public void shutdown(java.lang.String password)
              throws SeException
Shuts down the ArcSde instance.
Parameters:
ArcSde - DBA password.
Throws:
SeException -

pause

public void pause(java.lang.String password)
           throws SeException
Pauses, or disallows further connections to, the ArcSde instance.
Parameters:
ArcSde - DBA password.
Throws:
SeException -

resume

public void resume(java.lang.String password)
            throws SeException
Resumes, or allows connections to, the ArcSde instance.
Parameters:
ArcSde - DBA password.
Throws:
SeException -

killProcess

public void killProcess(int pid,
                        java.lang.String password)
                 throws SeException
Kills the specified ArcSde server process.
Parameters:
pid - process id of the server process to be terminated.
password - ArcSde DBA password.
Throws:
SeException -

killAllProcesses

public void killAllProcesses(java.lang.String password)
                      throws SeException
Kills all ArcSde server processes.
Parameters:
password - ArcSde DBA password.
Throws:
SeException -

getStatus

public SeInstance.SeInstanceStatus getStatus()
                                      throws SeException
Retrieves the ArcSde instance status.
Returns:
SeInstanceStatus[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceStatus

getInstance

public int getInstance()
Returns the ArSde instance's port number.
Throws:
SeException -

getServerName

public java.lang.String getServerName()
                               throws SeException
Returns the ArSde instance server name.
Throws:
SeException -

getUsers

public SeInstance.SeInstanceUsers[] getUsers()
                                      throws SeException
Returns a list of user information connected to ArcSde instance.
Returns:
SeInstanceUsers
Throws:
SeException -
See Also:
SeInstance.SeInstanceUsers

getStats

public SeInstance.SeInstanceStats[] getStats()
                                      throws SeException
Returns statistics of server processes connected to the ArcSde instance.
Returns:
SeInstanceStats[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceStats

getObjectLocks

public SeObjectLock[] getObjectLocks()
                              throws SeException
Returns a list of all object locks allocated by the instance.
Returns:
SeObjectLock[]
Throws:
SeException -
See Also:
SeObjectLock

getLocks

public SeInstance.SeInstanceLocks[] getLocks()
                                      throws SeException
Returns a list of all the layer locks allocated by the instance.
Returns:
SeInstanceLocks[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceLocks

getStateLocks

public SeInstance.SeInstanceStateLocks[] getStateLocks()
                                                throws SeException
Returns a list of state locks in use.
Returns:
SeInstanceStateLocks[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceStateLocks

getTableLocks

public SeInstance.SeInstanceTableLocks[] getTableLocks()
                                                throws SeException
Returnss a list of table locks in use.
Returns:
SeInstanceTableLocks[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceTableLocks

getVersionLocks

public SeInstance.SeInstanceVersionLocks[] getVersionLocks()
                                                    throws SeException
Returns a list of version locks in use.
Returns:
SeInstanceVersionLocks[]
Throws:
SeException -
See Also:
SeInstance.SeInstanceVersionLocks

getVariables

public java.lang.String[] getVariables()
                                throws SeException
Returns the ArcSde instance environment variables list.
Returns:
String[]
Throws:
SeException -

start

public void start(java.lang.String instance,
                  java.lang.String password)
           throws SeException
Starts the ArcSde Instance.
Parameters:
instance - name of the service as it is defined in the services file on server machine.
password - ArcSde DBA password.
Throws:
SeException -
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceConfiguration

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceConfiguration

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceConfiguration
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceConfiguration
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves the configuration of ArcSde instance.

Method Summary
int | getAtrributeBufSize() Returns the attribute array buffer size.
int | getAutoCommitFreq() Returns the frequency at which ArcSde server will commit modifications to the database.
int | getBlobBufSize() Returns the blob buffer size.
int | getChildTimeout() Returns the child timeout period.
int | getClientCount() Returns the client count.
int | getDbmsId() Returns the database id identifying underlying RDBMS.
SeDBMSInfo | getDbmsInfo() Returns underlying RDBMS properties.
java.lang.String | getHomePath() Returns the path to ArcSDE home directory.
java.lang.String | getLogPath() Returns the path to the ArcSde logfile directory.
int | getMaxArrayBytes() Returns the maximum array bytes allocated per stream.
int | getMaxArraySize() Returns the maximum array fetch size.
int | getMaxBlobSize() Returns the maximum blob size allowed for storage.
int | getMaxConnections() Returns the maximum number of connections allowed by the ArcSde instance.
int | getMaxDistinct() Returns the maximum number of unique values for attribute statistics.
int | getMaxInitFeats() Returns the maximum number of initial feature allowed per layer.
int | getMaxLayers() Returns the maximum number of layers allowed by the ArcSde instance.
int | getMaxLocks() Returns the maximum number of layer locks allowed by the ArcSde instance.
int | getMaxMemBlob() Returns the maximum blob size for in-memory storage.
int | getMaxmemDissolve() Returns the maximum amount of memory to be allocated for dissolve.
int | getMaxNetBlockSize() Returns the maximum Transmission Buffer size in Bytes.
int | getMaxObjectLocks() Returns the maximum number of object locks allowed by the ArcSde instance.
int | getMaxRasterColumns() Returns the maximum number of raster columns allowed by the ArcSde instance.
int | getMaxRegistration() Returns the maximum number of registered table allowed by the ArcSde instance.
int | getMaxStateLocks() Returns the maximum number of state locks allowed by the ArcSde instance.
int | getMaxStreams() Returns the maximum number of streams allowed by the ArcSde instance.
int | getMaxTableLocks() Returns the maximum number of table locks allowed by the ArcSde instance.
int | getMaxTimeDiff() Returns the maximum client-server time difference.
int | getMinNetBlockSize() Returns the minimum Transmission Buffer size in Bytes.
int | getMinNetObjCount() Returns the minimum Transmission Buffer count.
int | getRasterBufSize() Returns the raster buffer size.
boolean | getReadOnlyInstance() Returns true if ArcSde instance is read only and false if instance allows read and write.
int | getShapePointBufSize() Returns the shape point buffer size.
boolean | getStateCaching() Returns true if state caching is on or false if it is off.
int | getStreamPoolSize() Returns the maximum number of streams allowed in a pool.
boolean | getTcpKeepAlive() Returns the TCP keepalive on client connection.
java.lang.String | getTmpPath() Returns the path to the ArcSde temporary directory.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getMaxConnections

public int getMaxConnections()
Returns the maximum number of connections allowed by the ArcSde instance.
Returns:
int

getMaxLocks

public int getMaxLocks()
Returns the maximum number of layer locks allowed by the ArcSde instance.
Returns:
int

getMaxStateLocks

public int getMaxStateLocks()
Returns the maximum number of state locks allowed by the ArcSde instance.
Returns:
int

getMaxTableLocks

public int getMaxTableLocks()
Returns the maximum number of table locks allowed by the ArcSde instance.
Returns:
int

getMaxObjectLocks

public int getMaxObjectLocks()
Returns the maximum number of object locks allowed by the ArcSde instance.
Returns:
int

getChildTimeout

public int getChildTimeout()
Returns the child timeout period.
Returns:
int

getMinNetBlockSize

public int getMinNetBlockSize()
Returns the minimum Transmission Buffer size in Bytes.
Returns:
int

getMaxNetBlockSize

public int getMaxNetBlockSize()
Returns the maximum Transmission Buffer size in Bytes.
Returns:
int

getMinNetObjCount

public int getMinNetObjCount()
Returns the minimum Transmission Buffer count.
Returns:
int

getMaxmemDissolve

public int getMaxmemDissolve()
Returns the maximum amount of memory to be allocated for dissolve.
Returns:
int

getMaxBlobSize

public int getMaxBlobSize()
Returns the maximum blob size allowed for storage.
Returns:
int

getMaxMemBlob

public int getMaxMemBlob()
Returns the maximum blob size for in-memory storage.
Returns:
int

getAutoCommitFreq

public int getAutoCommitFreq()
Returns the frequency at which ArcSde server will commit modifications to the database.
Returns:
int

getMaxInitFeats

public int getMaxInitFeats()
Returns the maximum number of initial feature allowed per layer.
Returns:
int

getMaxDistinct

public int getMaxDistinct()
Returns the maximum number of unique values for attribute statistics.
Returns:
int

getMaxStreams

public int getMaxStreams()
Returns the maximum number of streams allowed by the ArcSde instance.
Returns:
int

getStreamPoolSize

public int getStreamPoolSize()
Returns the maximum number of streams allowed in a pool.
Returns:
int

getMaxRegistration

public int getMaxRegistration()
Returns the maximum number of registered table allowed by the ArcSde instance.
Returns:
int

getMaxLayers

public int getMaxLayers()
Returns the maximum number of layers allowed by the ArcSde instance.
Returns:
int

getMaxRasterColumns

public int getMaxRasterColumns()
Returns the maximum number of raster columns allowed by the ArcSde instance.
Returns:
int

getShapePointBufSize

public int getShapePointBufSize()
Returns the shape point buffer size.
Returns:
int

getAtrributeBufSize

public int getAtrributeBufSize()
Returns the attribute array buffer size.
Returns:
int

getBlobBufSize

public int getBlobBufSize()
Returns the blob buffer size.
Returns:
int

getRasterBufSize

public int getRasterBufSize()
Returns the raster buffer size.
Returns:
int

getMaxArraySize

public int getMaxArraySize()
Returns the maximum array fetch size.
Returns:
int

getMaxArrayBytes

public int getMaxArrayBytes()
Returns the maximum array bytes allocated per stream.
Returns:
int

getMaxTimeDiff

public int getMaxTimeDiff()
Returns the maximum client-server time difference. NOTE: Time difference is unlimited if value is -1.
Returns:
int

getHomePath

public java.lang.String getHomePath()
Returns the path to ArcSDE home directory.
Returns:
int

getLogPath

public java.lang.String getLogPath()
Returns the path to the ArcSde logfile directory.
Returns:
int

getTmpPath

public java.lang.String getTmpPath()
Returns the path to the ArcSde temporary directory.
Returns:
int

getDbmsId

public int getDbmsId()
Returns the database id identifying underlying RDBMS.
Returns:
int
See Also:
SeDBMSInfo

getDbmsInfo

public SeDBMSInfo getDbmsInfo()
Returns underlying RDBMS properties.
Returns:
int
See Also:
SeDBMSInfo

getClientCount

public int getClientCount()
Returns the client count.
Returns:
boolean

getStateCaching

public boolean getStateCaching()
Returns true if state caching is on or false if it is off.
Returns:
boolean

getTcpKeepAlive

public boolean getTcpKeepAlive()
Returns the TCP keepalive on client connection.
Returns:
int

getReadOnlyInstance

public boolean getReadOnlyInstance()
Returns true if ArcSde instance is read only and false if instance allows read and write.
Returns:
boolean
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceLocks

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceLocks

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceLocks
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceLocks
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves locks information for the ArcSde instance.

Field Summary
static int | SE_INSTANCE_AREA_READ_LOCK
static int | SE_INSTANCE_AREA_WRITE_LOCK
static int | SE_INSTANCE_AUTO_LOCK
static int | SE_INSTANCE_LAYER_READ_LOCK
static int | SE_INSTANCE_LAYER_WRITE_LOCK
Method Summary
int | getLayerId() Returns the layer id.
int | getLockType() Returns the lock type.
int | getPid() Returns the server pid.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_INSTANCE_LAYER_READ_LOCK

public static final int SE_INSTANCE_LAYER_READ_LOCK

SE_INSTANCE_LAYER_WRITE_LOCK

public static final int SE_INSTANCE_LAYER_WRITE_LOCK

SE_INSTANCE_AREA_READ_LOCK

public static final int SE_INSTANCE_AREA_READ_LOCK

SE_INSTANCE_AREA_WRITE_LOCK

public static final int SE_INSTANCE_AREA_WRITE_LOCK

SE_INSTANCE_AUTO_LOCK

public static final int SE_INSTANCE_AUTO_LOCK
Method Detail

getPid

public int getPid()
Returns the server pid.
Returns:
int

getLayerId

public int getLayerId()
Returns the layer id.
Returns:
int

getLockType

public int getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceStateLocks

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceStateLocks

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceStateLocks
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceStateLocks
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves state locks information for the ArcSde instance.

Field Summary
static int | SE_STATE_EXCLUSIVE_AUTOLOCK
static int | SE_STATE_EXCLUSIVE_LOCK
static int | SE_STATE_SHARED_AUTOLOCK
static int | SE_STATE_SHARED_LOCK
static int | SE_STATE_TREE_EXCLUSIVE_LOCK
static int | SE_STATE_TREE_SHARED_LOCK
Method Summary
short | getLockType() Returns the lock type.
int | getPid() Returns the server pid.
int | getStateId() Returns the state id.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_STATE_TREE_SHARED_LOCK

public static final int SE_STATE_TREE_SHARED_LOCK

SE_STATE_TREE_EXCLUSIVE_LOCK

public static final int SE_STATE_TREE_EXCLUSIVE_LOCK

SE_STATE_SHARED_LOCK

public static final int SE_STATE_SHARED_LOCK

SE_STATE_EXCLUSIVE_LOCK

public static final int SE_STATE_EXCLUSIVE_LOCK

SE_STATE_SHARED_AUTOLOCK

public static final int SE_STATE_SHARED_AUTOLOCK

SE_STATE_EXCLUSIVE_AUTOLOCK

public static final int SE_STATE_EXCLUSIVE_AUTOLOCK
Method Detail

getPid

public int getPid()
Returns the server pid.
Returns:
int

getStateId

public int getStateId()
Returns the state id.
Returns:
int

getLockType

public short getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceStats

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceStats

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceStats
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceStats
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves a list of user information for the ArcSde instance.

Method Summary
int | getBuffersCount() Returns the total number of buffers loaded by the server process.
int | getKBytesCount() Returns the total number of 1K bytes buffered data by the server process.
int | getNumLocks() Returns the total number of locks held by the server process.
int | getOperationCount() Returns the total number of operations performed by the server process.
int | getPartialShapesCount() Returns the total number of partial shapes shipped by the server process.
int | getPid() Returns the server pid.
int | getReadCount() Returns the total number of reads by the server process.
int | getShapesCount() Returns the total number of shapes buffered by the server process.
int | getWriteCount() Returns the total number of writes by the server process.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getPid

public int getPid()
Returns the server pid.
Returns:
int

getReadCount

public int getReadCount()
Returns the total number of reads by the server process.
Returns:
int

getWriteCount

public int getWriteCount()
Returns the total number of writes by the server process.
Returns:
int

getOperationCount

public int getOperationCount()
Returns the total number of operations performed by the server process.
Returns:
int

getNumLocks

public int getNumLocks()
Returns the total number of locks held by the server process.
Returns:
int

getPartialShapesCount

public int getPartialShapesCount()
Returns the total number of partial shapes shipped by the server process.
Returns:
int

getBuffersCount

public int getBuffersCount()
Returns the total number of buffers loaded by the server process.
Returns:
int

getShapesCount

public int getShapesCount()
Returns the total number of shapes buffered by the server process.
Returns:
int

getKBytesCount

public int getKBytesCount()
Returns the total number of 1K bytes buffered data by the server process.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceStatus

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceStatus

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceStatus
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceStatus
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves the status of an ArcSde instance.

Method Summary
int | getNumConnections() Returns the number of connections to ArcSde instance.
SeRelease | getSeRelease() Returns ArcSde instance release information.
boolean | isAccepting() Returns true if ArcSde instance is accepting connections.
boolean | isBlocking() Returns true if ArcSde instance is blocking connections.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getSeRelease

public SeRelease getSeRelease()
Returns ArcSde instance release information.
Returns:
SeRelease

getNumConnections

public int getNumConnections()
Returns the number of connections to ArcSde instance.
Returns:
int

isAccepting

public boolean isAccepting()
Returns true if ArcSde instance is accepting connections.
Returns:
boolean

isBlocking

public boolean isBlocking()
Returns true if ArcSde instance is blocking connections.
Returns:
boolean
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceTableLocks

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceTableLocks

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceTableLocks
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceTableLocks
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves table locks information for the ArcSde instance.

Field Summary
static int | SE_TABLE_EXCLUSIVE_SCHEMA_LOCK
static int | SE_TABLE_SHARED_SCHEMA_LOCK
Method Summary
int | getLockType() Returns the lock type.
int | getPid() Returns the server pid.
int | getRegistrationId() Returns the table registration id.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_TABLE_SHARED_SCHEMA_LOCK

public static final int SE_TABLE_SHARED_SCHEMA_LOCK

SE_TABLE_EXCLUSIVE_SCHEMA_LOCK

public static final int SE_TABLE_EXCLUSIVE_SCHEMA_LOCK
Method Detail

getPid

public int getPid()
Returns the server pid.
Returns:
int

getRegistrationId

public int getRegistrationId()
Returns the table registration id.
Returns:
int

getLockType

public int getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceUsers

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceUsers

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceUsers
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceUsers
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves a list of user information for the ArcSde instance.

Method Summary
java.lang.String | getNodeName() Returns the client's host node name.
int | getServerPid() Returns the server pid.
int | getServerStartTime() Returns the ArcSde server start time.
java.lang.String | getSysName() Returns the client's operating system name.
java.lang.String | getUserName() Returns the user name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getServerPid

public int getServerPid()
Returns the server pid.
Returns:
int

getServerStartTime

public int getServerStartTime()
Returns the ArcSde server start time.
Returns:
int

getSysName

public java.lang.String getSysName()
Returns the client's operating system name.
Returns:
String

getNodeName

public java.lang.String getNodeName()
Returns the client's host node name.
Returns:
String

getUserName

public java.lang.String getUserName()
Returns the user name.
Returns:
String
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInstance.SeInstanceVersionLocks

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInstance.SeInstanceVersionLocks

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeInstance.SeInstanceVersionLocks
Enclosing class:
SeInstance
public static class SeInstance.SeInstanceVersionLocks
extends com.esri.sde.sdk.client.SeServerObj

SeInstance inner class that retrieves version locks information for the ArcSde instance.

Field Summary
static int | SE_VERSION_EXCLUSIVE_AUTOLOCK
static int | SE_VERSION_EXCLUSIVE_LOCK
static int | SE_VERSION_SHARED_LOCK
Method Summary
short | getLockType() Returns the lock type.
int | getPid() Returns the server pid.
int | getVersionId() Returns the version id.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_VERSION_SHARED_LOCK

public static final int SE_VERSION_SHARED_LOCK

SE_VERSION_EXCLUSIVE_LOCK

public static final int SE_VERSION_EXCLUSIVE_LOCK

SE_VERSION_EXCLUSIVE_AUTOLOCK

public static final int SE_VERSION_EXCLUSIVE_AUTOLOCK
Method Detail

getPid

public int getPid()
Returns the server pid.
Returns:
int

getVersionId

public int getVersionId()
Returns the version id.
Returns:
int

getLockType

public short getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInvalidShapeException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInvalidShapeException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeInvalidShapeException
public class SeInvalidShapeException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeInvalidShapeException()
SeInvalidShapeException(SeError errObj)
SeInvalidShapeException(java.lang.String s)
SeInvalidShapeException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeInvalidShapeException

public SeInvalidShapeException()

SeInvalidShapeException

public SeInvalidShapeException(java.lang.String s)

SeInvalidShapeException

public SeInvalidShapeException(SeError errObj)

SeInvalidShapeException

public SeInvalidShapeException(java.lang.String s,
                               SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeInvalidValueException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeInvalidValueException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeInvalidValueException
public class SeInvalidValueException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeInvalidValueException()
SeInvalidValueException(SeError errObj)
SeInvalidValueException(java.lang.String s)
SeInvalidValueException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeInvalidValueException

public SeInvalidValueException()

SeInvalidValueException

public SeInvalidValueException(java.lang.String s)

SeInvalidValueException

public SeInvalidValueException(SeError errObj)

SeInvalidValueException

public SeInvalidValueException(java.lang.String s,
                               SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLayer

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLayer

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLayer
public class SeLayer
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

SeLayer - An object that spatially enables an existing RDBMS table. The term spatially enable means adding spatial information to any RDBMS table. It designates a column as the spatial column. If the the spatial_column does not exist, ArcSDE will add it. If it does exist, all rows must have a NULL value. The column type must be integer. It also builds a spatial index and other tables that ArcSDE requires to store spatial information. Spatial information includes the type of spatial feature such as area or line, projection information, false origins, units of measure, and geographic extent.

Inner Class Summary
static class | SeLayer.SeLayerGridStats SeLayer inner class that retrieves the spatial index grid statistics.
static class | SeLayer.SeLayerLock SeLayer inner class that retrieves the layer locks information from the server.
static class | SeLayer.SeLayerSpatialIndexStats SeLayer inner class that retrieves the spatial index statistics for a layer.
static class | SeLayer.SeLayerStats SeLayer inner class that obtains the statistics for a layer.
Field Summary
static int | GSIZE_MULT
static int | SE_AREA_TYPE_MASK
static int | SE_LINE_TYPE_MASK
static int | SE_MIN_GRIDSIZE
static int | SE_MULTIPART_TYPE_MASK
static int | SE_NIL_TYPE_MASK
static int | SE_POINT_TYPE_MASK
static int | SE_READ_LOCK
static int | SE_SHAPE_ATTRIBUTE_AREA
static int | SE_SHAPE_ATTRIBUTE_ENTITY
static int | SE_SHAPE_ATTRIBUTE_FID
static int | SE_SHAPE_ATTRIBUTE_LENGTH
static int | SE_SHAPE_ATTRIBUTE_MMAX
static int | SE_SHAPE_ATTRIBUTE_MMIN
static int | SE_SHAPE_ATTRIBUTE_NUMOFPTS
static int | SE_SHAPE_ATTRIBUTE_TEXT
static int | SE_SHAPE_ATTRIBUTE_XMAX
static int | SE_SHAPE_ATTRIBUTE_XMIN
static int | SE_SHAPE_ATTRIBUTE_YMAX
static int | SE_SHAPE_ATTRIBUTE_YMIN
static int | SE_SHAPE_ATTRIBUTE_ZMAX
static int | SE_SHAPE_ATTRIBUTE_ZMIN
static int | SE_SIMPLE_LINE_TYPE_MASK
static int | SE_SPATIALINDEX_DBTUNE
static int | SE_SPATIALINDEX_FIXED_QUADTREE
static int | SE_SPATIALINDEX_HYBRID_QUADTREE
static int | SE_SPATIALINDEX_MULTI_GRID
static int | SE_SPATIALINDEX_NONE
static int | SE_SPATIALINDEX_RTREE
static int | SE_SPATIALINDEX_UNKNOWN
static int | SE_STORAGE_LOB_TYPE
static int | SE_STORAGE_NORMALIZED_TYPE
static int | SE_STORAGE_SDEBINARY_TYPE
static int | SE_STORAGE_SPATIAL_TYPE
static int | SE_STORAGE_SQL_TYPE
static int | SE_STORAGE_WKB_TYPE
static int | SE_WRITE_LOCK
static int | TYPE_LINE
static int | TYPE_MULTI_LINE
static int | TYPE_MULTI_MASK
static int | TYPE_MULTI_POINT
static int | TYPE_MULTI_POLYGON
static int | TYPE_MULTI_SIMPLE_LINE
static int | TYPE_NIL
static int | TYPE_POINT
static int | TYPE_POLYGON
static int | TYPE_SIMPLE_LINE
Constructor Summary
SeLayer(SeConnection conn)
Layer constructor with an SeConnection handle.
SeLayer(SeConnection conn, SeObjectId layerId)
Layer constructor that gets ArcSde layer information by the ID.
SeLayer(SeConnection conn, java.lang.String table, java.lang.String spatCol)
Layer constructor with an SeConnection, table_name and spatial column that fetches information about the specified layer on an ArcSde server.
Method Summary
void | alter() Alters modifiable characteristics of a layer after creation.
SeExtent | calculateExtent(boolean useIndex, SeSqlConstruct sqlC) returns the extent (the minimum bounding box) of the features in a layer.
java.lang.Object | clone() Clones the SeLayer object.
void | create(int initialFeatures, int avgPoints) Spatially enables an RDBMS table.
void | delete() Deletes the spatial components from a spatially enabled table.
void | freeLock() Frees the lock on an ArcSde layer.
int | getAccess() Retrieves the privilege bitmask for a layer.
int | getArraySize() Retrieves the optimal array size for the specified layer.
SeCoordinateReference | getCoordRef() Retrieves the coordinate reference for the specified layer.
java.util.Date | getCreationDate() Retrieves the layer creation date.
java.lang.String | getCreationKeyword() Retrieves the configuration keyword.
java.lang.String | getDescription() Retrieves the layer's description.
SeExtent | getExtent() Retrieves the layer's envelope.
double[] | getGridSizes() Returns an array of layer's grid sizes.
SeObjectId | getID() Retrieves the layer ID.
void | getInfo() Returns information about an ArcSde layer.
SeLayer.SeLayerLock[] | getLocks() Returns a list of current locks.
SeObjectId | getMinID() Retrieves the minimum FID id.
java.lang.String | getName() Returns the name of the table associated with the layer.
java.lang.String | getQualifiedName() Returns the layer's table name, qualified with the owner.
java.lang.String | getShapeAttributeName(int attrCode) Returns the column name for a specified shape attribute The attr_code argument accepts the following values: SE_SHAPE_ATTRIBUTE_NUMOFPTS 0 SE_SHAPE_ATTRIBUTE_ENTITY 1 SE_SHAPE_ATTRIBUTE_XMIN 2 SE_SHAPE_ATTRIBUTE_XMAX 3 SE_SHAPE_ATTRIBUTE_YMIN 4 SE_SHAPE_ATTRIBUTE_YMAX 5 SE_SHAPE_ATTRIBUTE_ZMIN 6 SE_SHAPE_ATTRIBUTE_ZMAX 7 SE_SHAPE_ATTRIBUTE_MMIN 8 SE_SHAPE_ATTRIBUTE_MMAX 9 SE_SHAPE_ATTRIBUTE_AREA 10 SE_SHAPE_ATTRIBUTE_LENGTH 11 SE_SHAPE_ATTRIBUTE_TEXT 12
int | getShapeTypes() Retrieves the allowed shape types.
java.lang.String | getSpatialColumn() Retrieves the spatial column name of a layer.
SeLayer.SeLayerSpatialIndexStats | getSpatialIndexStats() Returns statistical information about a layer’s spatial indexes.
java.lang.String | getTableName() Returns the name of the table associated with the layer.
void | grantAccess(int privilege, boolean grant, java.lang.String user) Grants specified privileges to the specified user.
boolean | hasAnno() Returns TRUE if a layer has annotation.
boolean | hasCAD() Returns TRUE if the layer allows CAD.
boolean | hasSpatialIndex() Returns TRUE if the layer has spatial index.
boolean | is3D() Returns TRUE if the layer allows z-coordinates.
boolean | isLine() Returns TRUE if the layer has line shapes.
boolean | isLoadOnly() Returns TRUE if the layer is in load-only mode.
boolean | isMeasured() Returns TRUE if the layer allows measures.
boolean | isMultiPart() Returns TRUE if the layer has multipart enabled.
boolean | isPoint() Returns TRUE if the layer has point shapes.
boolean | isPoly() Returns TRUE if the layer has polygon shapes.
boolean | isStorageExternal() Returns TRUE if the layers storage type is external.
boolean | isStorageNormalized() Returns TRUE if the layer’s storage type is normalized.
boolean | isStorageSdeBinary() Returns TRUE if the layer’s storage type is sdebinary.
boolean | isStorageSQL() Returns TRUE if the layer’s storage type is SQL or well-known text.
boolean | isStorageWKB() Returns TRUE if the layer’s storage type is well-known binary.
void | lock(int lockMode) Locks an ArcSde layer.
void | lockArea(int lockMode, SeExtent envelope) Locks the specified area within ArcSde layer.
void | modifyLock(int lockMode, SeExtent envelope) Modifies an existing lock on an area or the entire layer.
void | revokeAccess(int privilege, java.lang.String user) Revokes specified privileges from the specified user.
void | set3D(boolean is3D) Updates whether the layer allows z-coordinates.
void | setAnno(boolean hasAnno) Sets whether the layer allows anno.
void | setArraySize(int optArraySize) Sets the optimal array size for the layer.
void | setCAD(boolean hasCAD) Sets whether the layer allows CAD entities.
void | setCoordRef(SeCoordinateReference coordref) Sets the coordinate reference for the specified layer.
void | setCreationKeyword(java.lang.String configKeyword) Sets the configuration keyword.
void | setDescription(java.lang.String description) Sets the layer's description.
void | setExtent(SeExtent envelope) Sets the layer's envelope.
void | setGridSizes(double grid1, double grid2, double grid3) Sets the spatial index grid sizes of the layer.
void | setLoadMode(boolean isLoadOnly) Sets the layer to either load-only or normal I/O mode.
void | setMeasured(boolean isMeasured) Updates whether the layer allows measures.
void | setMinID(SeObjectId minID) Sets the minimum fid value.
void | setShapeTypes(int shapeTypes) Sets shape types.
void | setSpatialColumnName(java.lang.String spatialColName) Sets the spatial column name of the layer.
void | setStorageTypes(int storageTypes) Sets storage types.
void | setTableName(java.lang.String tableName) Sets the business table containaing spatial column.
void | truncate() Deletes the shapes of a spatially enabled table’s spatial column.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

TYPE_NIL

public static final int TYPE_NIL

TYPE_POINT

public static final int TYPE_POINT

TYPE_LINE

public static final int TYPE_LINE

TYPE_SIMPLE_LINE

public static final int TYPE_SIMPLE_LINE

TYPE_POLYGON

public static final int TYPE_POLYGON

TYPE_MULTI_MASK

public static final int TYPE_MULTI_MASK

TYPE_MULTI_POINT

public static final int TYPE_MULTI_POINT

TYPE_MULTI_LINE

public static final int TYPE_MULTI_LINE

TYPE_MULTI_SIMPLE_LINE

public static final int TYPE_MULTI_SIMPLE_LINE

TYPE_MULTI_POLYGON

public static final int TYPE_MULTI_POLYGON

SE_NIL_TYPE_MASK

public static final int SE_NIL_TYPE_MASK

SE_POINT_TYPE_MASK

public static final int SE_POINT_TYPE_MASK

SE_LINE_TYPE_MASK

public static final int SE_LINE_TYPE_MASK

SE_SIMPLE_LINE_TYPE_MASK

public static final int SE_SIMPLE_LINE_TYPE_MASK

SE_AREA_TYPE_MASK

public static final int SE_AREA_TYPE_MASK

SE_MULTIPART_TYPE_MASK

public static final int SE_MULTIPART_TYPE_MASK

SE_STORAGE_NORMALIZED_TYPE

public static final int SE_STORAGE_NORMALIZED_TYPE

SE_STORAGE_SDEBINARY_TYPE

public static final int SE_STORAGE_SDEBINARY_TYPE

SE_STORAGE_WKB_TYPE

public static final int SE_STORAGE_WKB_TYPE

SE_STORAGE_SQL_TYPE

public static final int SE_STORAGE_SQL_TYPE

SE_STORAGE_SPATIAL_TYPE

public static final int SE_STORAGE_SPATIAL_TYPE

SE_STORAGE_LOB_TYPE

public static final int SE_STORAGE_LOB_TYPE

SE_WRITE_LOCK

public static final int SE_WRITE_LOCK

SE_READ_LOCK

public static final int SE_READ_LOCK

SE_SPATIALINDEX_MULTI_GRID

public static final int SE_SPATIALINDEX_MULTI_GRID

SE_SPATIALINDEX_DBTUNE

public static final int SE_SPATIALINDEX_DBTUNE

SE_SPATIALINDEX_NONE

public static final int SE_SPATIALINDEX_NONE

SE_SPATIALINDEX_RTREE

public static final int SE_SPATIALINDEX_RTREE

SE_SPATIALINDEX_FIXED_QUADTREE

public static final int SE_SPATIALINDEX_FIXED_QUADTREE

SE_SPATIALINDEX_HYBRID_QUADTREE

public static final int SE_SPATIALINDEX_HYBRID_QUADTREE

SE_SPATIALINDEX_UNKNOWN

public static final int SE_SPATIALINDEX_UNKNOWN

SE_MIN_GRIDSIZE

public static final int SE_MIN_GRIDSIZE

GSIZE_MULT

public static final int GSIZE_MULT

SE_SHAPE_ATTRIBUTE_NUMOFPTS

public static final int SE_SHAPE_ATTRIBUTE_NUMOFPTS

SE_SHAPE_ATTRIBUTE_ENTITY

public static final int SE_SHAPE_ATTRIBUTE_ENTITY

SE_SHAPE_ATTRIBUTE_XMIN

public static final int SE_SHAPE_ATTRIBUTE_XMIN

SE_SHAPE_ATTRIBUTE_XMAX

public static final int SE_SHAPE_ATTRIBUTE_XMAX

SE_SHAPE_ATTRIBUTE_YMIN

public static final int SE_SHAPE_ATTRIBUTE_YMIN

SE_SHAPE_ATTRIBUTE_YMAX

public static final int SE_SHAPE_ATTRIBUTE_YMAX

SE_SHAPE_ATTRIBUTE_ZMIN

public static final int SE_SHAPE_ATTRIBUTE_ZMIN

SE_SHAPE_ATTRIBUTE_ZMAX

public static final int SE_SHAPE_ATTRIBUTE_ZMAX

SE_SHAPE_ATTRIBUTE_MMIN

public static final int SE_SHAPE_ATTRIBUTE_MMIN

SE_SHAPE_ATTRIBUTE_MMAX

public static final int SE_SHAPE_ATTRIBUTE_MMAX

SE_SHAPE_ATTRIBUTE_AREA

public static final int SE_SHAPE_ATTRIBUTE_AREA

SE_SHAPE_ATTRIBUTE_LENGTH

public static final int SE_SHAPE_ATTRIBUTE_LENGTH

SE_SHAPE_ATTRIBUTE_TEXT

public static final int SE_SHAPE_ATTRIBUTE_TEXT

SE_SHAPE_ATTRIBUTE_FID

public static final int SE_SHAPE_ATTRIBUTE_FID
Constructor Detail

SeLayer

public SeLayer(SeConnection conn)
Layer constructor with an SeConnection handle. Use this constructor when creating a new layer. You must call setTableName() and setSpatialColumnName() to define a layer when using this constructor.
Parameters:
conn - SeConnection object handle.
tableName - table name.
spatCol - spatial column name.
Throws:
SeException -

SeLayer

public SeLayer(SeConnection conn,
               SeObjectId layerId)
        throws SeException
Layer constructor that gets ArcSde layer information by the ID.
Parameters:
conn - SeConnection object handle.
layerId - ArcSde layer ID.
Throws:
SeException -

SeLayer

public SeLayer(SeConnection conn,
               java.lang.String table,
               java.lang.String spatCol)
        throws SeException,
               SeDoesNotExistException
Layer constructor with an SeConnection, table_name and spatial column that fetches information about the specified layer on an ArcSde server. This constructor will return SeDoesNotExistException if the layers doesn't exist on ArcSde server.
Parameters:
conn - SeConnection object handle.
tableName - table name.
spatCol - spatial column name.
Throws:
SeException,SeDoesNotExistException -
Method Detail

alter

public void alter()
           throws SeException
Alters modifiable characteristics of a layer after creation. You can change the following characteristics: - Shape types - Layer description - Grid sizes - Coordinate system - Load mode You can alter a layer to allow the storage of annotations or CAD elements, but you can’t remove them from the layer.
Throws:
SeException -

create

public void create(int initialFeatures,
                   int avgPoints)
            throws SeException
Spatially enables an RDBMS table. Table name, spatial column name, shape types and grid sizes must be set for layer object before calling this function.
Parameters:
initialFeatures - A positive integer estimating the initial requirement for the number of features to store in this layer.Used for database allocation purposes.
avgPoints - The estimated average number of points per feature for this map layer.
Throws:
SeException -

calculateExtent

public SeExtent calculateExtent(boolean useIndex,
                                SeSqlConstruct sqlC)
                         throws SeException
returns the extent (the minimum bounding box) of the features in a layer. If a where clause is specified, only those shapes satisfying the query are used to calculate the extent.
Parameters:
useIndex - Use the spatial index cells to compute an approximate extent if TRUE
sqlC - An optional SeSqlConstruct object that contains the where clause.
Returns:
SeExtent
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones the SeLayer object.
Returns:
Object
Throws:
SeException -

delete

public void delete()
            throws SeException
Deletes the spatial components from a spatially enabled table. This operation does the following: - Deletes the layer record from the layers table. - Deletes the feature and spatial index tables for the layer. - Drops the trigger on the spatial column in the user’s spatially enabled table. - Sets the value of the spatial column to NULL for all rows in the spatially enabled table.
Throws:
SeException -

getInfo

public void getInfo()
             throws SeException
Returns information about an ArcSde layer.
Throws:
SeException -

getAccess

public int getAccess()
Retrieves the privilege bitmask for a layer.

grantAccess

public void grantAccess(int privilege,
                        boolean grant,
                        java.lang.String user)
                 throws SeException
Grants specified privileges to the specified user. Current DBMS user must have sufficient DBMS privileges for grant to work. Multiple privileges can be set in a single call by ORing the privilege bitmasks. The access privileges that can be granted are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
Parameters:
privilege - privilege to grant.
grant - granted user can/can't GRANT/REVOKE privilge.
user - DBMS user name to whom privilges need to be granted.
Throws:
SeException -
See Also:
SeDefs

revokeAccess

public void revokeAccess(int privilege,
                         java.lang.String user)
                  throws SeException
Revokes specified privileges from the specified user. Current DBMS user must have sufficient DBMS privileges for revoke to work. Multiple privileges can be set in a single call by ORing the privilege bitmasks.
Parameters:
privilege - privilege to grant.
user - DBMS user name to whom privilges need to be granted.
Throws:
SeException -

lock

public void lock(int lockMode)
          throws SeException
Locks an ArcSde layer. Two types of layer locks can be set: SE_WRITE_LOCK SE_READ_LOCK SE_WRITE_LOCK allows only the caller to modify the data. The layer can still be read by all other users. Only one SE_WRITE_LOCK lock at a time may exist on a layer. SE_READ_LOCK locks the layer against modifications. Multiple SE_READ_LOCK locks are possible on the same layer.
Parameters:
lockMode - lock type.
Throws:
SeException -

getLocks

public SeLayer.SeLayerLock[] getLocks()
                               throws SeException
Returns a list of current locks.
Returns:
SeLayerLock[]
Throws:
SeException -

lockArea

public void lockArea(int lockMode,
                     SeExtent envelope)
              throws SeException
Locks the specified area within ArcSde layer. Two types of layer locks can be set: SE_WRITE_LOCK SE_READ_LOCK SE_READ_LOCK locks may overlap each other. SE_WRITE_LOCK locks may not overlap.
Parameters:
lockMode - lock type.
envelope - envelope defining the area to be locked.
Throws:
SeException -

modifyLock

public void modifyLock(int lockMode,
                       SeExtent envelope)
                throws SeException
Modifies an existing lock on an area or the entire layer. It attempts to change the lock to ‘new_lock_mode’ and to make the lock area equal to the area specified. You can modify both the lock mode and the lock area. If area is NULL, the new lock is for the entire map layer. If an area is specified, the new lock is an area lock. If modifying the lock would result in an SE_LOCK_CONFLICT, the existing lock remains unchanged. If no lock currently exists, the function returns SE_NO_LOCKS without creating the new lock.
Parameters:
lockMode - lock type.
envelope - envelope defining the area to be locked.
Throws:
SeException -

freeLock

public void freeLock()
              throws SeException
Frees the lock on an ArcSde layer.
Throws:
SeException -

getSpatialIndexStats

public SeLayer.SeLayerSpatialIndexStats getSpatialIndexStats()
                                                      throws SeException
Returns statistical information about a layer’s spatial indexes.
Returns:
SeLayerSpatialIndexStats
Throws:
SeException -

getArraySize

public int getArraySize()
Retrieves the optimal array size for the specified layer.
Returns:
int

getCoordRef

public SeCoordinateReference getCoordRef()
Retrieves the coordinate reference for the specified layer.
Returns:
SeCoordinateReference

getCreationDate

public java.util.Date getCreationDate()
Retrieves the layer creation date.
Returns:
java.util.Date

getCreationKeyword

public java.lang.String getCreationKeyword()
Retrieves the configuration keyword.
Returns:
String

getDescription

public java.lang.String getDescription()
Retrieves the layer's description.
Returns:
String

getExtent

public SeExtent getExtent()
Retrieves the layer's envelope.
Returns:
SeExtent

getGridSizes

public double[] getGridSizes()
Returns an array of layer's grid sizes. First element in the array is the first level grid size, second element is the second level grid size and the third element is the third level grid size.
Returns:
double[]

getID

public SeObjectId getID()
Retrieves the layer ID.
Returns:
SeObjectId

getMinID

public SeObjectId getMinID()
Retrieves the minimum FID id.
Returns:
SeObjectId

getShapeTypes

public int getShapeTypes()
Retrieves the allowed shape types.

The allowable shape types are contained in a bit mask of the following values. SE_NIL_TYPE_MASK SE_POINT_TYPE_MASK SE_LINE_TYPE_MASK SE_SIMPLE_LINE_TYPE_MASK SE_AREA_TYPE_MASK SE_MULTIPART_TYPE_MASK

Returns:
int

isStorageExternal

public boolean isStorageExternal()
Returns TRUE if the layers storage type is external.
Returns:
boolean

isStorageNormalized

public boolean isStorageNormalized()
Returns TRUE if the layer’s storage type is normalized.
Returns:
boolean

isStorageSdeBinary

public boolean isStorageSdeBinary()
Returns TRUE if the layer’s storage type is sdebinary.
Returns:
boolean

isStorageSQL

public boolean isStorageSQL()
Returns TRUE if the layer’s storage type is SQL or well-known text.
Returns:
boolean

isStorageWKB

public boolean isStorageWKB()
Returns TRUE if the layer’s storage type is well-known binary.
Returns:
boolean

isPoint

public boolean isPoint()
Returns TRUE if the layer has point shapes.

isMultiPart

public boolean isMultiPart()
Returns TRUE if the layer has multipart enabled.

isLine

public boolean isLine()
Returns TRUE if the layer has line shapes.
Returns:
boolean

isPoly

public boolean isPoly()
Returns TRUE if the layer has polygon shapes.
Returns:
boolean

getTableName

public java.lang.String getTableName()
Returns the name of the table associated with the layer.
Returns:
String

getName

public java.lang.String getName()
Returns the name of the table associated with the layer.
Returns:
String

getQualifiedName

public java.lang.String getQualifiedName()
                                  throws SeException
Returns the layer's table name, qualified with the owner.
Returns:
String

getSpatialColumn

public java.lang.String getSpatialColumn()
Retrieves the spatial column name of a layer.
Returns:
String

hasAnno

public boolean hasAnno()
Returns TRUE if a layer has annotation.
Returns:
boolean

hasCAD

public boolean hasCAD()
Returns TRUE if the layer allows CAD.
Returns:
boolean

hasSpatialIndex

public boolean hasSpatialIndex()
Returns TRUE if the layer has spatial index.
Returns:
boolean

isLoadOnly

public boolean isLoadOnly()
Returns TRUE if the layer is in load-only mode.
Returns:
boolean

isMeasured

public boolean isMeasured()
Returns TRUE if the layer allows measures.
Returns:
boolean

is3D

public boolean is3D()
Returns TRUE if the layer allows z-coordinates.
Returns:
boolean

setAnno

public void setAnno(boolean hasAnno)
Sets whether the layer allows anno.
Parameters:
hasAnno - Set to TRUE if the layer should allow annotations, otherwise set to FALSE.

setArraySize

public void setArraySize(int optArraySize)
Sets the optimal array size for the layer.
Parameters:
optArraySize - optimal array size.

setCAD

public void setCAD(boolean hasCAD)
Sets whether the layer allows CAD entities.
Parameters:
hasCad - Set to TRUE if the layer should allow CAD data; otherwise, set to FALSE.

setCoordRef

public void setCoordRef(SeCoordinateReference coordref)
                 throws SeException
Sets the coordinate reference for the specified layer.
Parameters:
coordref - the coordinate reference for the layer.

setCreationKeyword

public void setCreationKeyword(java.lang.String configKeyword)
Sets the configuration keyword.
Parameters:
configKeyword - the layer config keyword.

setDescription

public void setDescription(java.lang.String description)
Sets the layer's description.
Parameters:
description - the layer description.

setExtent

public void setExtent(SeExtent envelope)
Sets the layer's envelope.
Parameters:
envelope - the layer extent.

setGridSizes

public void setGridSizes(double grid1,
                         double grid2,
                         double grid3)
                  throws SeException
Sets the spatial index grid sizes of the layer.
Parameters:
grid1 - First grid level size.
grid2 - Second grid level size.
grid3 - Third grid level size.

setLoadMode

public void setLoadMode(boolean isLoadOnly)
Sets the layer to either load-only or normal I/O mode.
Parameters:
isLoadOnly - Set to TRUE if the layer should be in load-only mode, otherwise set to FALSE.

setMeasured

public void setMeasured(boolean isMeasured)
Updates whether the layer allows measures.
Parameters:
isMeasured - Set to TRUE if the layer should allow measures; otherwise set to FALSE.

setMinID

public void setMinID(SeObjectId minID)
              throws SeException
Sets the minimum fid value.
Parameters:
minId - The minimum FID value.

setShapeTypes

public void setShapeTypes(int shapeTypes)
Sets shape types. The allowed shape types are: SE_NIL_TYPE_MASK SE_POINT_TYPE_MASK SE_LINE_TYPE_MASK SE_SIMPLE_LINE_TYPE_MASK SE_AREA_TYPE_MASK SE_MULTIPART_TYPE_MASK
Parameters:
shapeTypes - shape type mask.

setStorageTypes

public void setStorageTypes(int storageTypes)
Sets storage types. The storage_type arguments available are listed below. The list of storage types supported by each RDBMS is also listed.

Storage Types:

SE_STORAGE_SPATIAL_TYPE RDBMS's spatial type storage.

SE_STORAGE_SDEBINARY_TYPE Standard ArcSDE storage format.

SE_STORAGE_LOB_TYPE Large Binary Object storage format.

SE_STORAGE_WKB_TYPE Well-known binary format(OBSOLETE).

SE_STORAGE_SQL_TYPE SQL or well-known text format(OBSOLETE).

SE_STORAGE_NORMALIZED_TYPE Normalized format (used for Spatial Data Option or Spatial Cartridge layers).

ORACLE:

SE_STORAGE_SDEBINARY_TYPE: Default storage type.

SE_STORAGE_SPATIAL_TYPE: ArcSDE 8.1 for Oracle8i only.

SE_STORAGE_LOB_TYPE: ArcSDE 8.1 onwards.

SE_STORAGE_NORMALIZED_TYPE.

SE_STORAGE_WKB_TYPE(OBSOLETE).

SE_STORAGE_SQL_TYPE(OBSOLETE).

SQLSERVER:

SE_STORAGE_SDEBINARY_TYPE.

DB2:

SE_STORAGE_SPATIAL_TYPE: ArcSDE 8.1 for DB2 Spatial Extender.

SE_STORAGE_SDEBINARY_TYPE: ArcSDE 3.0.2 server only.

INFORMIX:

SE_STORAGE_SPATIAL_TYPE: ArcSDE 8.1 for Informix with Spatial Datablade.

SE_STORAGE_SDEBINARY_TYPE: ArcSDE 3.0.2 server only.

Parameters:
storageTypes - storage type mask.

setSpatialColumnName

public void setSpatialColumnName(java.lang.String spatialColName)
Sets the spatial column name of the layer.
Parameters:
tableName - the spatial column name.

setTableName

public void setTableName(java.lang.String tableName)
                  throws SeException
Sets the business table containaing spatial column.
Parameters:
tableName - the table name.

set3D

public void set3D(boolean is3D)
Updates whether the layer allows z-coordinates.
Parameters:
is3D - Set to TRUE if layer should allow z-coordinates.

truncate

public void truncate()
              throws SeException
Deletes the shapes of a spatially enabled table’s spatial column. It does not remove the layer definition.
Throws:
SeException -

getShapeAttributeName

public java.lang.String getShapeAttributeName(int attrCode)
                                       throws SeException
Returns the column name for a specified shape attribute The attr_code argument accepts the following values: SE_SHAPE_ATTRIBUTE_NUMOFPTS 0 SE_SHAPE_ATTRIBUTE_ENTITY 1 SE_SHAPE_ATTRIBUTE_XMIN 2 SE_SHAPE_ATTRIBUTE_XMAX 3 SE_SHAPE_ATTRIBUTE_YMIN 4 SE_SHAPE_ATTRIBUTE_YMAX 5 SE_SHAPE_ATTRIBUTE_ZMIN 6 SE_SHAPE_ATTRIBUTE_ZMAX 7 SE_SHAPE_ATTRIBUTE_MMIN 8 SE_SHAPE_ATTRIBUTE_MMAX 9 SE_SHAPE_ATTRIBUTE_AREA 10 SE_SHAPE_ATTRIBUTE_LENGTH 11 SE_SHAPE_ATTRIBUTE_TEXT 12
Parameters:
attrCode - the macro code for the attribute.
Throws:
SeException -
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLayer.SeLayerGridStats

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLayer.SeLayerGridStats

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLayer.SeLayerGridStats
Enclosing class:
SeLayer
public static class SeLayer.SeLayerGridStats
extends com.esri.sde.sdk.client.SeServerObj

SeLayer inner class that retrieves the spatial index grid statistics.

Method Summary
SeObjectId | getFeature() Returns the features indexed by this grid level.
int | getFeaturesInside() Returns features wholly inside one grid cell.
int | getGridCells() Returns number grid cells in this level.
int[] | getGroupCounts() Returns Index record count by group: <=4, >4, >10, >25, >50, >100, >250, >500.
int | getIndexRecords() Returns index records in this grid level.
int | getMaxFPG() Returns maximum number of features per grid cell.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getFeature

public SeObjectId getFeature()
Returns the features indexed by this grid level.
Returns:
SeObjectId

getIndexRecords

public int getIndexRecords()
Returns index records in this grid level.
Returns:
int

getGroupCounts

public int[] getGroupCounts()
Returns Index record count by group: <=4, >4, >10, >25, >50, >100, >250, >500.
Returns:
int[]

getMaxFPG

public int getMaxFPG()
Returns maximum number of features per grid cell.
Returns:
int

getGridCells

public int getGridCells()
Returns number grid cells in this level.
Returns:
int

getFeaturesInside

public int getFeaturesInside()
Returns features wholly inside one grid cell.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLayer.SeLayerLock

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLayer.SeLayerLock

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLayer.SeLayerLock
Enclosing class:
SeLayer
public static class SeLayer.SeLayerLock
extends com.esri.sde.sdk.client.SeServerObj

SeLayer inner class that retrieves the layer locks information from the server.

Method Summary
SeExtent | getExtent() Returns extent of area locked.
int | getLockType() Returns the lock type.
java.lang.String | getUserName() Returns the user name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getUserName

public java.lang.String getUserName()
Returns the user name.
Returns:
String[]

getExtent

public SeExtent getExtent()
Returns extent of area locked.
Returns:
SeExtent

getLockType

public int getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLayer.SeLayerSpatialIndexStats

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLayer.SeLayerSpatialIndexStats

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLayer.SeLayerSpatialIndexStats
Enclosing class:
SeLayer
public static class SeLayer.SeLayerSpatialIndexStats
extends com.esri.sde.sdk.client.SeServerObj

SeLayer inner class that retrieves the spatial index statistics for a layer.

Method Summary
java.lang.String | getColumnName() Returns the spatial coulmn name.
SeLayer.SeLayerGridStats[] | getGrids() Returns individual grid statistics.
int | getNumGrids() Returns the number of spatial index grids.
java.lang.String | getTableName() Returns the spatial table name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getTableName

public java.lang.String getTableName()
Returns the spatial table name.
Returns:
String

getColumnName

public java.lang.String getColumnName()
Returns the spatial coulmn name.
Returns:
String

getNumGrids

public int getNumGrids()
Returns the number of spatial index grids.
Returns:
int

getGrids

public SeLayer.SeLayerGridStats[] getGrids()
Returns individual grid statistics.
Returns:
SeLayerGridStats[]
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLayer.SeLayerStats

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLayer.SeLayerStats

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLayer.SeLayerStats
Enclosing class:
SeLayer
public static class SeLayer.SeLayerStats
extends com.esri.sde.sdk.client.SeServerObj

SeLayer inner class that obtains the statistics for a layer.

Method Summary
int | getAreas() Returns the number of area features in the layer.
double | getAverageArea() Returns the average area/feature.
double | getAveragelength() Returns the average length/feature.
double | getAveragePoints() Returns the average number of points/feature.
SeExtent | getBounds() Returns the layer extent.
java.util.Date | getLastModified() Returns the date that the layer was last modified.
SeObjectId | getLayerId() Returns the layer id.
int | getLines() Returns the number of line features in the layer.
double | getMaxArea() Returns the maximum feature area.
int | getMaxFid() Returns the maximum fid value in the layer.
double | getMaxLength() Returns the maximum linear feature length.
int | getMaxPoints() Returns the maximum number of points in layer features.
double | getMinArea() Returns the minimum feature area.
int | getMinFid() Returns the minimum fid value in the layer.
double | getMinLength() Returns the minimum linear feature length.
int | getMinPoints() Returns the minimum number of points in layer features.
int | getMultiAreas() Returns the number of multiarea features in the layer.
int | getMultiLines() Returns the number of multi-line features in the layer.
int | getMultiPoints() Returns the number of multipoint features in layer.
int | getMultiSimpleLines() Returns the number of multi simple line features in the layer.
int | getNils() Returns the number of nil features in the layer.
int | getPoints() Returns the number of point features in the layer.
int | getSimpleLines() Returns the number of simple line features in the layer.
int | getTotFeatures() Returns the total number of features in the layer.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getLayerId

public SeObjectId getLayerId()
Returns the layer id.
Returns:
SeObjectId

getNils

public int getNils()
Returns the number of nil features in the layer.
Returns:
int

getPoints

public int getPoints()
Returns the number of point features in the layer.
Returns:
int

getMultiPoints

public int getMultiPoints()
Returns the number of multipoint features in layer.
Returns:
int

getLines

public int getLines()
Returns the number of line features in the layer.
Returns:
int

getMultiLines

public int getMultiLines()
Returns the number of multi-line features in the layer.
Returns:
int

getSimpleLines

public int getSimpleLines()
Returns the number of simple line features in the layer.
Returns:
int

getMultiSimpleLines

public int getMultiSimpleLines()
Returns the number of multi simple line features in the layer.
Returns:
int

getAreas

public int getAreas()
Returns the number of area features in the layer.
Returns:
int

getMultiAreas

public int getMultiAreas()
Returns the number of multiarea features in the layer.
Returns:
int

getTotFeatures

public int getTotFeatures()
Returns the total number of features in the layer.
Returns:
int

getBounds

public SeExtent getBounds()
Returns the layer extent.
Returns:
SeExtent

getLastModified

public java.util.Date getLastModified()
Returns the date that the layer was last modified.
Returns:
java.util.Date

getMinFid

public int getMinFid()
Returns the minimum fid value in the layer.
Returns:
int

getMaxFid

public int getMaxFid()
Returns the maximum fid value in the layer.
Returns:
int

getMinPoints

public int getMinPoints()
Returns the minimum number of points in layer features.
Returns:
int

getMaxPoints

public int getMaxPoints()
Returns the maximum number of points in layer features.
Returns:
int

getMinArea

public double getMinArea()
Returns the minimum feature area.
Returns:
double

getMaxArea

public double getMaxArea()
Returns the maximum feature area.
Returns:
double

getMinLength

public double getMinLength()
Returns the minimum linear feature length.
Returns:
double

getMaxLength

public double getMaxLength()
Returns the maximum linear feature length.
Returns:
double

getAveragePoints

public double getAveragePoints()
Returns the average number of points/feature.
Returns:
double

getAverageArea

public double getAverageArea()
Returns the average area/feature.
Returns:
double

getAveragelength

public double getAveragelength()
Returns the average length/feature.
Returns:
double
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLocale

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLocale

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeLocale
public class SeLocale
extends java.lang.Object

Used to localize sde client. Locale class provides a method by which all sde error messages can be returned to user in a language independant manner.

Constructor Summary
SeLocale(java.lang.String country, java.lang.String language, java.lang.String variant)
Constructs a sde locale object that identifies Locale properties.
Method Summary
java.lang.String | getCountry() Returns the name of the locale country.
java.lang.String | getLanguage() Returns the name of the locale language.
java.lang.String | getVariant() Returns the name of the locale variant.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeLocale

public SeLocale(java.lang.String country,
                java.lang.String language,
                java.lang.String variant)
Constructs a sde locale object that identifies Locale properties.
Parameters:
language - locale language.
country - locale country.
variant - locale variant.
Method Detail

getCountry

public java.lang.String getCountry()
Returns the name of the locale country.

getLanguage

public java.lang.String getLanguage()
Returns the name of the locale language.

getVariant

public java.lang.String getVariant()
Returns the name of the locale variant.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLocator

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLocator

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLocator
public class SeLocator
extends com.esri.sde.sdk.client.SeServerObj

Represents the locator object associated with an ArcSde service.

Field Summary
static int | SE_LOCATOR_DEFINED
static int | SE_LOCATOR_TEMPLATE
static int | SE_LOCATOR_VALIDATED
Constructor Summary
SeLocator(SeConnection conn)
Creates a default SeLocator object.
SeLocator(SeConnection conn, SeObjectId locId)
SeLocator constructor with an SeConnection and locator ID that retrieves the locator information for the specified ID.
SeLocator(SeConnection conn, java.lang.String locName)
SeLocator constructor that retrieves information for specified locator.
Method Summary
void | alter() Alters the locator’s characteristics.
java.lang.Object | clone() Returns a copy of the locator object.
void | create() Creates a locator.
void | delete() Deletes a locator entry from ArcSde service.
SeColumnDefinition[] | describeOutput() Describe the outputs of a locator.
java.lang.String | getCategory() Returns the locator category.
java.lang.String | getDescription() Returns the locator description.
SeObjectId | getId() Returns the locator ID.
void | getInfo() Retrieves information about the locator.
java.lang.String | getName() Returns the locator name.
int | getNumProperties() Returns the number of properties.
java.lang.String | getOwner() Returns the locator owner name.
java.lang.String[] | getProperties() Returns the locator properties.
int | getType() Returns the locator type.
java.lang.String[] | getValues() Returns the locator property values.
void | locateTable(java.lang.String table, java.lang.String where) Locates a table and either inserts results into output table or updates the output table.
void | setCategory(java.lang.String category) Sets the locator category.
void | setDescription(java.lang.String desc) Sets the locator description.
void | setName(java.lang.String name) Sets the name of the locator object.
void | setOwner(java.lang.String owner) Sets the owner name of the locator object.
void | setPropertiesValues(int numProperties, java.lang.String[] properties, java.lang.String[] values) Sets the locator properties and values.
void | setType(int type) Sets the locator type.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_LOCATOR_TEMPLATE

public static int SE_LOCATOR_TEMPLATE

SE_LOCATOR_VALIDATED

public static int SE_LOCATOR_VALIDATED

SE_LOCATOR_DEFINED

public static int SE_LOCATOR_DEFINED
Constructor Detail

SeLocator

public SeLocator(SeConnection conn)
          throws SeException
Creates a default SeLocator object.
Parameters:
conn - SeConnection object handle.

SeLocator

public SeLocator(SeConnection conn,
                 java.lang.String locName)
          throws SeException
SeLocator constructor that retrieves information for specified locator.
Parameters:
conn - SeConnection object handle.
locName - the locator name
Throws:
SeException -

SeLocator

public SeLocator(SeConnection conn,
                 SeObjectId locId)
          throws SeException
SeLocator constructor with an SeConnection and locator ID that retrieves the locator information for the specified ID.
Parameters:
conn - SeConnection object handle.
locId - the locator ID.
Throws:
SeException -
Method Detail

alter

public void alter()
           throws SeException
Alters the locator’s characteristics.
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Returns a copy of the locator object.
Returns:
SeLocator

create

public void create()
            throws SeException
Creates a locator. Locator name, category and type must be set before calling this method.
Throws:
SeException -

delete

public void delete()
            throws SeException
Deletes a locator entry from ArcSde service.
Throws:
SeException -

describeOutput

public SeColumnDefinition[] describeOutput()
                                    throws SeException
Describe the outputs of a locator. It returns list of SeColumnDefinition for outputs of the locator.
Returns:
SeColumnDefinition[]
Throws:
SeException -

locateTable

public void locateTable(java.lang.String table,
                        java.lang.String where)
                 throws SeException
Locates a table and either inserts results into output table or updates the output table. Output table is specified by locator properties.
Parameters:
table - the name of the table to georeference.
where - the where clause.
Throws:
SeException -

getInfo

public void getInfo()
             throws SeException
Retrieves information about the locator.
Throws:
SeException -

setName

public void setName(java.lang.String name)
             throws SeException
Sets the name of the locator object.
Parameters:
name - the locator name.

getName

public java.lang.String getName()
                         throws SeException
Returns the locator name.
Returns:
String

setOwner

public void setOwner(java.lang.String owner)
              throws SeException
Sets the owner name of the locator object.
Parameters:
owner - the owner name.

getOwner

public java.lang.String getOwner()
                          throws SeException
Returns the locator owner name.
Returns:
String

setCategory

public void setCategory(java.lang.String category)
                 throws SeException
Sets the locator category.
Parameters:
category - the locator category.

getCategory

public java.lang.String getCategory()
                             throws SeException
Returns the locator category.
Returns:
String

getId

public SeObjectId getId()
Returns the locator ID.
Returns:
SeObjectId

setDescription

public void setDescription(java.lang.String desc)
Sets the locator description.
Parameters:
desc - the locator description.

getDescription

public java.lang.String getDescription()
                                throws SeException
Returns the locator description.
Returns:
String

setType

public void setType(int type)
Sets the locator type. The types are: SE_LOCATOR_TEMPLATE SE_LOCATOR_VALIDATED SE_LOCATOR_DEFINED
Parameters:
type - the locator type.

getType

public int getType()
            throws SeException
Returns the locator type. he types are: SE_LOCATOR_TEMPLATE SE_LOCATOR_VALIDATED SE_LOCATOR_DEFINED
Returns:
int

getNumProperties

public int getNumProperties()
                     throws SeException
Returns the number of properties.
Returns:
int

setPropertiesValues

public void setPropertiesValues(int numProperties,
                                java.lang.String[] properties,
                                java.lang.String[] values)
                         throws SeException
Sets the locator properties and values.
Parameters:
numProperties - the number of property and value pairs.
properties - an array of properties.
values - an array of values corresponding to properties.

getProperties

public java.lang.String[] getProperties()
                                 throws SeException
Returns the locator properties.
Returns:
String[]

getValues

public java.lang.String[] getValues()
                             throws SeException
Returns the locator property values.
Returns:
String[]
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLog

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLog

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeLog
public class SeLog
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Used when managing a persistent set of rows from a table or layer. For example, after identifying a set of features, the application can maintain a list of these specific features so that subsequent operations process only the identified features. Persistent row subsets are managed through logfiles. Logfiles are stored as DBMS tables in a user's tablespace. Logfiles maintain a list of row identifiers, and can be used as a data source for many data retrieval and geoprocessing operations. A logfile is tied to a specific table or layer. Logfile operations use two types of names. Some require a simple name that is the logfile name only. These are operations that allow read/write access by the owner. The second type of name combines a username and the logfile name; for example, username\filename. Legal delimiters between the username and file name are the , . \ ; characters. Username file names are primarily used for read-only logfiles where other users are allowed access to the logfile. Set the logfile name using the setName method. There are two types of logfiles: LAYER type and TABLE type. LAYER type logfiles record layer FID values; are usable only with layers; are created using the setTargetForLayer method; and have the limitation that only rows having a non-null feature can be recorded. TABLE type logfiles record SDE_ROW_ID values; are usable with any table, not just layers; and are created using the setTargetForTable method. Logfiles also have a persistence property: Temporary or Persistent. Temporary logfiles are automatically deleted when the connection is dropped, while persistent logfiles are not deleted.

Inner Class Summary
 class SeLog.SeLogTargetInfo
Field Summary
static int | SE_CREATE_AND_WRITE_MODE Opens the logfile for WRITE operations.
static int | SE_LOG_DIFFERENCE Set operation that can be used when combining logfiles.
static int | SE_LOG_FOR_LAYER
static int | SE_LOG_FOR_TABLE
static int | SE_LOG_INTERSECT Set operation that can be used when combining logfiles.
static int | SE_LOG_PERSISTENT The logfile will not be deleted at the end of the user session.
static int | SE_LOG_SYMDIFF Set operation that can be used when combining logfiles.
static int | SE_LOG_TEMPORARY The logfile will be deleted at the end of the user session.
static int | SE_LOG_UNION Set operation that can be used when combining logfiles.
static int | SE_MODIFY_MODE Opens the logfile for WRITE operations.
static int | SE_OVERWRITE_MODE Opens the logfile for WRITE operations.
static int | SE_READ_MODE Opens the logfile for READ operations.
Constructor Summary
SeLog(SeConnection conn)
Logfile constructor with an SeConnection handle.
SeLog(SeConnection conn, java.lang.String logfileName)
SeLog constructor with an SeConnection and String representing the name of the logfile that retrives the logfile definition from the server.
Method Summary
void | addId(SeObjectId rowId) Adds one row id to an open logfile.
void | addIds(SeObjectId[] rowIds) Adds a list of row ids to an open logfile.
void | alter() Alters the definition of the logfile on the server.
SeExtent | calculateExtent(SeSqlConstruct sqlC) Returns the extent (the minimum bounding box) of all the features specified by the logfile (which may be from multiple layers), and optionally, pass an SQL where clause as well.
java.lang.Object | clone() Clones the SeLog object.
void | close() Closes the open logfile.
SeLog | combine(java.lang.String secondLogfile, java.lang.String combinedLogfile, int operation) Performs a set operation (UNION, INTERSECTION, DIFFERENCE, SYMMETRICAL DIFFERENCE) on two logfiles (this one and the one named by the secondLogfile argument), yeilding a new (temporary) logfile (named according to the combinedLogfile argument).
SeLog | copy(java.lang.String newLogfile) Copies an existing logfile, described by the calling object, to a new logfile.
int | count() Counts the number of row ids in the logfile.
void | create() Creates this logfile on the server.
void | delete() Deletes this logfile on the server.
void | deleteIds(SeObjectId[] rowIds) Deletes a list of ids from an open logfile.
SeObjectId | getId() Retrieves the logfile ID.
java.lang.String | getName() Retrieves the logfile name.
SeObjectId[] | getRowIds(int maxNumIds) Retrieves a list of ids from an open logfile.
SeLog.SeLogTargetInfo | getTargetInfo() Returns an SeLog.SeLogTargetInfo object containing the target description.
static void | grantAccess(SeConnection connection, java.lang.String owner, java.lang.String dbmsUser) Grants access for a specified user to an owner's logfiles.
boolean | isPersistent() Returns true if the logfile is persistent.
void | makeName() Creates a logfile name that does not currently exist.
void | openLog(int mode) Opens a logfile for read or write access.
static void | revokeAccess(SeConnection connection, java.lang.String owner, java.lang.String dbmsUser) Revokes access for a specified user to an owner's logfiles.
void | setName(java.lang.String name) Sets the name of the logfile object.
void | setPersistence(boolean isPersistent) Sets the persistence attribute.
void | setTargetAsLayer(java.lang.String layerName, java.lang.String spatialColumn) Sets the logfile target as a layer.
void | setTargetAsTable(java.lang.String registeredTableName) Sets the logfile target as a table.
void | sort() Sorts the logfile.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_READ_MODE

public static final int SE_READ_MODE
Opens the logfile for READ operations. The logfile must currently exist.

SE_OVERWRITE_MODE

public static final int SE_OVERWRITE_MODE
Opens the logfile for WRITE operations. If the logfile exists, it will be overwritten.

SE_MODIFY_MODE

public static final int SE_MODIFY_MODE
Opens the logfile for WRITE operations. The logfile must currently exist.

SE_CREATE_AND_WRITE_MODE

public static final int SE_CREATE_AND_WRITE_MODE
Opens the logfile for WRITE operations. If the logfile exists, it will not be overwritten and the open operation will fail.

SE_LOG_PERSISTENT

public static final int SE_LOG_PERSISTENT
The logfile will not be deleted at the end of the user session.

SE_LOG_TEMPORARY

public static final int SE_LOG_TEMPORARY
The logfile will be deleted at the end of the user session.

SE_LOG_INTERSECT

public static final int SE_LOG_INTERSECT
Set operation that can be used when combining logfiles.

SE_LOG_UNION

public static final int SE_LOG_UNION
Set operation that can be used when combining logfiles.

SE_LOG_DIFFERENCE

public static final int SE_LOG_DIFFERENCE
Set operation that can be used when combining logfiles.

SE_LOG_SYMDIFF

public static final int SE_LOG_SYMDIFF
Set operation that can be used when combining logfiles.

SE_LOG_FOR_TABLE

public static final int SE_LOG_FOR_TABLE

SE_LOG_FOR_LAYER

public static final int SE_LOG_FOR_LAYER
Constructor Detail

SeLog

public SeLog(SeConnection conn)
Logfile constructor with an SeConnection handle.
Parameters:
conn - SeConnection object handle.

SeLog

public SeLog(SeConnection conn,
             java.lang.String logfileName)
      throws SeException
SeLog constructor with an SeConnection and String representing the name of the logfile that retrives the logfile definition from the server.
Parameters:
conn - SeConnection object handle.
logfileName - the name of the logfile.
Throws:
SeException -
Method Detail

addId

public void addId(SeObjectId rowId)
           throws SeException
Adds one row id to an open logfile.
Parameters:
rowId - SeObjectId representing the row to add.
Throws:
SeException -

addIds

public void addIds(SeObjectId[] rowIds)
            throws SeException
Adds a list of row ids to an open logfile.
Parameters:
rowIds - SeObjectId[] representing the rows to add.
Throws:
SeException -

alter

public void alter()
           throws SeException
Alters the definition of the logfile on the server. Currently, only the persistence attribute can be altered. Set the persistence before calling this method.
Throws:
SeException -

calculateExtent

public SeExtent calculateExtent(SeSqlConstruct sqlC)
                         throws SeException
Returns the extent (the minimum bounding box) of all the features specified by the logfile (which may be from multiple layers), and optionally, pass an SQL where clause as well. If a where clause is specified, the feature must have all columns specified in the where clause.
Parameters:
sqlC - An optional SeSqlConstruct object that contains the where clause.
Returns:
SeExtent
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones the SeLog object.
Returns:
Object
Throws:
SeException -

close

public void close()
           throws SeException
Closes the open logfile.
Throws:
SeException -

combine

public SeLog combine(java.lang.String secondLogfile,
                     java.lang.String combinedLogfile,
                     int operation)
              throws SeException
Performs a set operation (UNION, INTERSECTION, DIFFERENCE, SYMMETRICAL DIFFERENCE) on two logfiles (this one and the one named by the secondLogfile argument), yeilding a new (temporary) logfile (named according to the combinedLogfile argument). If not already sorted, the input logfiles are sorted as a side effect of this operation, which means that the current user must own any unsorted logfile used in this operation.
Parameters:
secondLogfile - String naming the second logfile to combine with this one. May be prefixed with a user name.
combinedLogfile - String naming the resulting logfile. If identical to the name of this or the second logfile, that logfile will be replaced with the new one.
operation - The set operation to perform: SE_LOG_INTERSECT, SE_LOG_UNION, SE_LOG_DIFFERENCE, SE_LOG_SYMDIFF
Returns:
SeLog The definition of the combined logfile.
Throws:
SeException -

copy

public SeLog copy(java.lang.String newLogfile)
           throws SeException
Copies an existing logfile, described by the calling object, to a new logfile. The copy occurs on the server. Any entries of the new logfile are replaced by the contents of this logfile. Neither logfile may be in an open state. The file's attributes, such as persistent vs. temporary, and whether sorted, are preserved. The new file is owned by the copier.
Parameters:
newLogfile - String naming the new logfile.
Returns:
SeLog An object representing the definition of the new logfile.
Throws:
SeException -

count

public int count()
          throws SeException
Counts the number of row ids in the logfile.
Returns:
int Number of ids in the logfile.
Throws:
SeException -

create

public void create()
            throws SeException
Creates this logfile on the server. The new logfile will be owned by the current user.
Throws:
SeException -

delete

public void delete()
            throws SeException
Deletes this logfile on the server.
Throws:
SeException -

deleteIds

public void deleteIds(SeObjectId[] rowIds)
               throws SeException
Deletes a list of ids from an open logfile.
Parameters:
rowIds - SeObjectId[] representing the rows to delete.
Throws:
SeException -

grantAccess

public static void grantAccess(SeConnection connection,
                               java.lang.String owner,
                               java.lang.String dbmsUser)
                        throws SeException
Grants access for a specified user to an owner's logfiles.
Parameters:
connection - SeConnection to use for this operation.
owner - String indicating the owner of the logfiles.
dbmsUser - String indicating the user to grant access for.
Throws:
SeException -

openLog

public void openLog(int mode)
             throws SeException
Opens a logfile for read or write access. A logfile opened for a write operation must be owned by the current user. A logfile opened for READ (read only access) can be owned by users other than the current user. Be sure to set the Qualified Logfile Name before calling this method. SE_READ_MODE - Opens the logfile for READ operations. The logfile must currently exist. SE_OVERWRITE_MODE - Opens the logfile for WRITE operations. If the logfile exists, it will be overwritten. SE_MODIFY_MODE - Opens the logfile for WRITE operations. The logfile must currently exist. SE_CREATE_AND_WRITE_MODE - Opens the logfile for WRITE operations. If the logfile exists, it will not be overwritten and the open operation will fail.
Parameters:
mode - SE_READ_MODE, SE_OVERWRITE_MODE, SE_CREATE_AND_WRITE_MODE, SE_MODIFY_MODE
Throws:
SeException -

makeName

public void makeName()
              throws SeException
Creates a logfile name that does not currently exist. Useful for generating temporary logfiles.

revokeAccess

public static void revokeAccess(SeConnection connection,
                                java.lang.String owner,
                                java.lang.String dbmsUser)
                         throws SeException
Revokes access for a specified user to an owner's logfiles.
Parameters:
connection - SeConnection to use in this operation.
owner - String indicating the owner of the logfiles.
dbmsUser - String indicating the user to revoke access for.
Throws:
SeException -

sort

public void sort()
          throws SeException
Sorts the logfile.
Throws:
SeException -

getId

public SeObjectId getId()
Retrieves the logfile ID.
Returns:
SeObjectId

getRowIds

public SeObjectId[] getRowIds(int maxNumIds)
                       throws SeException
Retrieves a list of ids from an open logfile.
Parameters:
maxNumIds - The number of ids to retrieve.
Throws:
SeException -

getName

public java.lang.String getName()
Retrieves the logfile name.
Returns:
String

isPersistent

public boolean isPersistent()
Returns true if the logfile is persistent.
Returns:
boolean

getTargetInfo

public SeLog.SeLogTargetInfo getTargetInfo()
Returns an SeLog.SeLogTargetInfo object containing the target description. The target description consists of the type: SeLog.SE_LOG_FOR_TABLE if the target is a registered table SeLog.SE_LOG_FOR_LAYER if the target is a layer The table name, and, if the target is a layer, the spatial column.
Returns:
SeLogTargetType

setName

public void setName(java.lang.String name)
             throws SeException
Sets the name of the logfile object.
Parameters:
name - the qualified logfile name.

setPersistence

public void setPersistence(boolean isPersistent)
Sets the persistence attribute. Persistence controls whether or not a logfile will exist past the endof an ArcSDE user session. Temporary logfiles will be deleted at the end of a session. Persistent logfiles will be saved.
Parameters:
isPersistent - The persistence of the logfile.

setTargetAsLayer

public void setTargetAsLayer(java.lang.String layerName,
                             java.lang.String spatialColumn)
Sets the logfile target as a layer.
Parameters:
layerName - the layer name.
spatialColumn - the name of the spatial column.

setTargetAsTable

public void setTargetAsTable(java.lang.String registeredTableName)
Sets the logfile target as a table.
Parameters:
tableName - the registered table name.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLog.SeLogTargetInfo

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeLog.SeLogTargetInfo

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeLog.SeLogTargetInfo
Enclosing class:
SeLog
public class SeLog.SeLogTargetInfo
extends java.lang.Object

Field Summary
java.lang.String | spatialColumn
java.lang.String | tableName
int | type
Constructor Summary
SeLog.SeLogTargetInfo()
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

type

public int type

tableName

public java.lang.String tableName

spatialColumn

public java.lang.String spatialColumn
Constructor Detail

SeLog.SeLogTargetInfo

public SeLog.SeLogTargetInfo()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMetaData

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeMetaData

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeMetaData
public class SeMetaData
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Field Summary
static int SE_METADATA_OBJECT_TYPE_TABLE
Constructor Summary
SeMetaData(SeConnection conn)
SeMetaData constructor with an SeConnection.
SeMetaData(SeConnection conn, SeObjectId recordId)
SeMetaData constructor created by retrieving information for specified record id.
SeMetaData(SeConnection conn, java.lang.String objectName, int objectType)
SeMetaData constructor with an SeConnection, object name and object type.
Method Summary
java.lang.Object | clone() Returns a copy of metadata object.
java.lang.String | getClassName() Returns the metadata class name.
java.util.Date | getDate() Returns the last inserted or updated date for a meta-data object.
java.lang.String | getDescription() Returns the metadata object description.
SeObjectId | getId() Returns the object id.
java.lang.String | getObjectName() Returns the metadata object name.
java.lang.String | getObjectOwner() Returns the metadata object owner.
int | getObjectType() Returns the metadata object type.
java.lang.String | getProperty() Returns the metadata object property name.
java.lang.String | getValue() Returns the metadata object property value.
void | setClassName(java.lang.String className) Sets the metadata class name.
void | setDescription(java.lang.String desc) Sets the metadata object description.
void | setObjectName(java.lang.String objectName) Sets the metadata object name.
void | setObjectType(int objType) Sets the metadata object property value.
void | setProperty(java.lang.String property) Sets the metadata object property name.
void | setValue(java.lang.String value) Sets the metadata object property value.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_METADATA_OBJECT_TYPE_TABLE

public static int SE_METADATA_OBJECT_TYPE_TABLE
Constructor Detail

SeMetaData

public SeMetaData(SeConnection conn)
           throws SeException
SeMetaData constructor with an SeConnection.
Parameters:
conn - SeConnection object handle.
Throws:
SeException -

SeMetaData

public SeMetaData(SeConnection conn,
                  java.lang.String objectName,
                  int objectType)
           throws SeException
SeMetaData constructor with an SeConnection, object name and object type.
Parameters:
conn - SeConnection object handle.
objectName - object name.
objectType - object type.
Throws:
SeException -

SeMetaData

public SeMetaData(SeConnection conn,
                  SeObjectId recordId)
           throws SeException
SeMetaData constructor created by retrieving information for specified record id.
Parameters:
conn - SeConnection object handle.
recordId - record id.
Throws:
SeException -
Method Detail

getObjectName

public java.lang.String getObjectName()
Returns the metadata object name.
Returns:
String

setObjectName

public void setObjectName(java.lang.String objectName)
Sets the metadata object name.
Returns:
String

getClassName

public java.lang.String getClassName()
Returns the metadata class name.
Returns:
String

setClassName

public void setClassName(java.lang.String className)
Sets the metadata class name.
Returns:
String

getDescription

public java.lang.String getDescription()
Returns the metadata object description.
Returns:
String

setDescription

public void setDescription(java.lang.String desc)
Sets the metadata object description.

getProperty

public java.lang.String getProperty()
Returns the metadata object property name.
Returns:
String

setProperty

public void setProperty(java.lang.String property)
Sets the metadata object property name.

getValue

public java.lang.String getValue()
Returns the metadata object property value.
Returns:
String

setValue

public void setValue(java.lang.String value)
Sets the metadata object property value.

getObjectType

public int getObjectType()
Returns the metadata object type.
Returns:
int

setObjectType

public void setObjectType(int objType)
Sets the metadata object property value.

getObjectOwner

public java.lang.String getObjectOwner()
Returns the metadata object owner.
Returns:
String

getId

public SeObjectId getId()
Returns the object id.
Returns:
SeObjectId

getDate

public java.util.Date getDate()
Returns the last inserted or updated date for a meta-data object.
Returns:
java.util.Date

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Returns a copy of metadata object.
Returns:
Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeNoAccessException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeNoAccessException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeNoAccessException
public class SeNoAccessException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeNoAccessException()
SeNoAccessException(SeError errObj)
SeNoAccessException(java.lang.String s)
SeNoAccessException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeNoAccessException

public SeNoAccessException()

SeNoAccessException

public SeNoAccessException(java.lang.String s)

SeNoAccessException

public SeNoAccessException(SeError errObj)

SeNoAccessException

public SeNoAccessException(java.lang.String s,
                           SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeObjectId

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeObjectId

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeObjectId
public class SeObjectId
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable, java.lang.Comparable

Represents an unique object identifier for all ArcSDE server objects.

Constructor Summary
SeObjectId(long id)
Constructs an ID object from a long value.
Method Summary
java.lang.Object | clone()
int | compareTo(java.lang.Object obj)
long | longValue() Returns the numerical representation of the ID as a long.
java.lang.String | toString() Returns a string representation of the object id.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeObjectId

public SeObjectId(long id)
Constructs an ID object from a long value.
Method Detail

longValue

public long longValue()
Returns the numerical representation of the ID as a long.

toString

public java.lang.String toString()
Returns a string representation of the object id.
Overrides:
toString in class java.lang.Object

compareTo

public int compareTo(java.lang.Object obj)
              throws java.lang.ClassCastException
Specified by:
compareTo in interface java.lang.Comparable

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeObjectLock

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeObjectLock

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeObjectLock
public class SeObjectLock
extends com.esri.sde.sdk.client.SeServerObj

SeObjectLocks allow you to set an arbitrary, application-defined lock on an object. Object locks can be used by the application to provide general purpose lock services. Objects are identified by an application defined object type and the ID of the object. Object locks are released when the application disconnects from ArcSDE. The only locks supported are NONE, SDE INTERNAL, and GEODATABASE, so this class is currently used only to support ESRI internal application developement. At this release, the only objects that can be locked are registered tables.

Field Summary
static int | SE_APP_GEODATABASE_ID
static int | SE_APP_NONE_ID
static int | SE_APP_SDE_INTERNAL_ID
static int | SE_APP_WILD_ID
static int | SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK
static int | SE_OBJECTLOCK_EXCLUSIVE_LOCK
static int | SE_OBJECTLOCK_NO_LOCK_SET
static int | SE_OBJECTLOCK_SHARED_LOCK
Constructor Summary
SeObjectLock(SeConnection conn)
SeObjectLock constructor.
Method Summary
java.lang.Object | clone() Clones SeObjectLock object.
SeObjectId | getApplicationId() Returns the application id.
int | getLockType() Returns the lock type.
SeObjectId | getObjectId() Returns the object unique identifier.
SeObjectLock[] | getObjectLocksList() Returns an array of object lock definitions, filtered by this SeObjectLock as an example.
int | getObjectType() Returns the object type.
java.lang.String | getOwner() Returns the object owner name.
int | getPid() Returns the gsrvr pid that holds the object lock.
void | lock(int lockMode) Locks the object.
void | setApplicationId(SeObjectId appId) Sets the application id.
void | setConnection(SeConnection conn) Sets the SeConnection handle for the object lock.
void | setObjectId(SeObjectId objectId) Sets the object unique identifier.
void | setObjectType(int objectType) Sets the object type.
void | unlock() Unlocks the object lock.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_OBJECTLOCK_SHARED_LOCK

public static final int SE_OBJECTLOCK_SHARED_LOCK

SE_OBJECTLOCK_EXCLUSIVE_LOCK

public static final int SE_OBJECTLOCK_EXCLUSIVE_LOCK

SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK

public static final int SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK

SE_OBJECTLOCK_NO_LOCK_SET

public static final int SE_OBJECTLOCK_NO_LOCK_SET

SE_APP_WILD_ID

public static final int SE_APP_WILD_ID

SE_APP_NONE_ID

public static final int SE_APP_NONE_ID

SE_APP_SDE_INTERNAL_ID

public static final int SE_APP_SDE_INTERNAL_ID

SE_APP_GEODATABASE_ID

public static final int SE_APP_GEODATABASE_ID
Constructor Detail

SeObjectLock

public SeObjectLock(SeConnection conn)
             throws SeException
SeObjectLock constructor.
Parameters:
conn - SeConnection object handle.
Throws:
SeException -
Method Detail

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones SeObjectLock object.
Returns:
Object
Throws:
SeException -

lock

public void lock(int lockMode)
          throws SeException
Locks the object. The lock modes allowed are: SE_OBJECTLOCK_SHARED_LOCK, SE_OBJECTLOCK_EXCLUSIVE_LOCK, SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK
Parameters:
lockMode - the type of lock to set.
Throws:
SeException -

unlock

public void unlock()
            throws SeException
Unlocks the object lock.
Throws:
SeException -

getObjectLocksList

public SeObjectLock[] getObjectLocksList()
                                  throws SeException
Returns an array of object lock definitions, filtered by this SeObjectLock as an example.
Returns:
SeObjectLock[]
Throws:
SeException -

getPid

public int getPid()
Returns the gsrvr pid that holds the object lock.
Returns:
int

getOwner

public java.lang.String getOwner()
Returns the object owner name.
Returns:
String

getObjectId

public SeObjectId getObjectId()
Returns the object unique identifier.
Returns:
SeObjectId

setObjectId

public void setObjectId(SeObjectId objectId)
Sets the object unique identifier.
Parameters:
objectId - object ID.

getObjectType

public int getObjectType()
Returns the object type.
Returns:
int

setObjectType

public void setObjectType(int objectType)
Sets the object type.
Parameters:
objectType - the object type.

getApplicationId

public SeObjectId getApplicationId()
Returns the application id.
Returns:
SeObjectId

setApplicationId

public void setApplicationId(SeObjectId appId)
Sets the application id.
Parameters:
appId - the application ID.

setConnection

public void setConnection(SeConnection conn)
Sets the SeConnection handle for the object lock. SeObjectLock array returned by SeInstance getObjectLocks() method are not associated with a connection handle. This function can be used to associate SeConnection handle in such cases.
Parameters:
conn - SeConnection object handle.

getLockType

public int getLockType()
Returns the lock type. Return values: SE_OBJECTLOCK_SHARED_LOCK, SE_OBJECTLOCK_EXCLUSIVE_LOCK, SE_OBJECTLOCK_EXCLUSIVE_AUTOLOCK, SE_OBJECTLOCK_NO_LOCK_SET
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface SePECoordinateSystem

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Interface SePECoordinateSystem

All Known Implementing Classes:
SePEGeographicCS, SePEProjectedCS
public interface SePECoordinateSystem

A Coordinate System superclass to manipulate a Projected and Geographic Coordinate System object.

All spatial data has a coordinate system. A coordinate system locates the data in either two- or three-dimensional space. Knowing the data's coordinate system is very important if you want to combine data from different sources. Most spatial data are in a geographic or projected (planar) coordinate system. The model for coordinate reference systems described here is based upon the OpenGIS specification and the POSC Epicentre Model V 2.1 which share a common set of basic principles. Please refer to these references for the full description of the concepts and definitions for components of a coordinate reference system.

Applications that use maps as analytical tools need the coordinate system and its properties for all spatial data. ArcSDE uses a projection management system to store projection and coordinate information in a format that is accessible to applications. In addition to x,y planar coordinates, you can store z-coordinates or measures. The ArcSDE software assumes planar data when performing calculations. The ArcSDE software can store projected or geographic data but measurements and calculations on geographic coordinates may not be accurate.

The ArcSDE Projection Engine does the actual creation and maintenance of the coordinate system. The ArcSDE Projection Engine supports projected and geographic coordinate system with the PeProjCoordSys and PeGeogCoordSys classes.

Method Summary
java.lang.Object | clone() Make a clone of this coordinate system object.
java.lang.String | toString() Retrieve the external representation of this coordinate system.

Method Detail

toString

public java.lang.String toString()
Retrieve the external representation of this coordinate system.
Overrides:
toString in class java.lang.Object

clone

public java.lang.Object clone()
Make a clone of this coordinate system object.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SePEDatum

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEDatum

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEDatum
public class SePEDatum
extends java.lang.Object
implements java.lang.Cloneable

A Datum defines the position of the spheroid relative to the center of the Earth. A datum provides a frame of reference for measuring locations on the surface of the Earth. It defines the origin and orientation of latitude and longitude lines.

Constructor Summary
SePEDatum(java.lang.String datumString)
Constructor.
SePEDatum(java.lang.String name, SePESpheroid spheroid)
Constructor.
Method Summary
java.lang.Object | clone() Clone the datum object.
void | fromString(java.lang.String datumString) Construct datum object from string.
int | getID() Retrieve a pe object's name .
java.lang.String | getName() Retrieve a datum's name.
SePESpheroid | getSpheroid() Retrieve a datum's spheroid.
java.lang.String | toString()
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEDatum

public SePEDatum(java.lang.String name,
                 SePESpheroid spheroid)
Constructor.

SePEDatum

public SePEDatum(java.lang.String datumString)
Constructor.
Method Detail

clone

public java.lang.Object clone()
Clone the datum object.

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String datumString)
Construct datum object from string.

getName

public java.lang.String getName()
Retrieve a datum's name.

getSpheroid

public SePESpheroid getSpheroid()
Retrieve a datum's spheroid.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEGeographicCS

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEGeographicCS

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEGeographicCS
public class SePEGeographicCS
extends java.lang.Object
implements SePECoordinateSystem, java.lang.Cloneable

A geographic coordinate system is a three-dimensional reference system that locates points on the Earth's surface. The unit of measure is usually decimal degrees. A point has two coordinate values: latitude and longitude. Latitude and longitude measure angles.

A geographic coordinate system has the following components:

Angular units: The unit of measure on the spherical reference system.
Spheroid: The reference spheroid for the coordinate transformation.
Datum: Defines the relationship of the reference spheroid to the Earth's surface.
Prime meridian: The longitude origin of the spherical reference system.

Constructor Summary
SePEGeographicCS(java.lang.String gcsString)
Constructor.
SePEGeographicCS(java.lang.String name, SePEDatum datum, SePEPrimeMeridian primem, SePEUnit unit)
Constructor.
Method Summary
java.lang.Object | clone() Clone the gcs object.
void | fromString(java.lang.String gcsString)
java.lang.String | toString() Retrieve a GCS's external representation.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEGeographicCS

public SePEGeographicCS(java.lang.String name,
                        SePEDatum datum,
                        SePEPrimeMeridian primem,
                        SePEUnit unit)
Constructor.

SePEGeographicCS

public SePEGeographicCS(java.lang.String gcsString)
Constructor.
Method Detail

fromString

public void fromString(java.lang.String gcsString)

clone

public java.lang.Object clone()
Clone the gcs object.
Specified by:
clone in interface SePECoordinateSystem

toString

public java.lang.String toString()
Retrieve a GCS's external representation.
Specified by:
toString in interface SePECoordinateSystem
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEHorizon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEHorizon

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEHorizon
public final class SePEHorizon
extends java.lang.Object

A projection horizon defines the limits of a map projection with particular parameters. Knowing the horizon of a map projecton is very important when projecting shapes. If a shape crosses the horizon, we can use the horizon to clip and close the shape.

Field Summary
double[][] | mCoord
int | mInclusive
int | mKind
int | mNump
int | mReplicate
int | msize
Constructor Summary
SePEHorizon()
Method Summary
int | delete()
int | generate()
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

mNump

public int mNump

mKind

public int mKind

mInclusive

public int mInclusive

mReplicate

public int mReplicate

msize

public int msize

mCoord

public double[][] mCoord
Constructor Detail

SePEHorizon

public SePEHorizon()
Method Detail

generate

public int generate()

delete

public int delete()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface SePEHorizonFunction

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Interface SePEHorizonFunction

All Known Implementing Classes:
SePEProjection.Horizon
public interface SePEHorizonFunction

Projection horizon for projections.

Field Summary
static double | HORIZON_DELTA
static int | NULPT
static int | PE_HORIZON_REPLICATE_BOTH
static int | PE_HORIZON_REPLICATE_LEFT
static int | PE_HORIZON_REPLICATE_NONE
static int | PE_HORIZON_REPLICATE_RIGHT
Method Summary
 SePEHorizon func(double[] sph, double[] parm)
NOTE: Inclusive polys are to be arrayed clockwise Exclusive polys are to be arrayed clockwise also

Field Detail

PE_HORIZON_REPLICATE_NONE

public static final int PE_HORIZON_REPLICATE_NONE

PE_HORIZON_REPLICATE_RIGHT

public static final int PE_HORIZON_REPLICATE_RIGHT

PE_HORIZON_REPLICATE_LEFT

public static final int PE_HORIZON_REPLICATE_LEFT

PE_HORIZON_REPLICATE_BOTH

public static final int PE_HORIZON_REPLICATE_BOTH

HORIZON_DELTA

public static final double HORIZON_DELTA

NULPT

public static final int NULPT
Method Detail

func

public SePEHorizon func(double[] sph,
                        double[] parm)
NOTE: Inclusive polys are to be arrayed clockwise Exclusive polys are to be arrayed clockwise also
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEParameters

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEParameters

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEParameters
public class SePEParameters
extends java.lang.Object

Parameters are required by projection and geographic transformation objects. A parameter has the following attributes. name The name of the parameter. value The value of the parameter.

Constructor Summary
SePEParameters(java.lang.String paramString)
Constructor.
SePEParameters(java.lang.String name, double value)
Constructor.
Method Summary
java.lang.Object | clone() Clone a parameter object.
void | fromString(java.lang.String paramString) Construct parameter object from string.
int | getID() Retrieve a pe object's name .
java.lang.String | getName() Retrieve a parameter's name.
double | getValue() Retrieve a parameter's value.
void | setName(java.lang.String name) Set a parameter's name.
void | setValue(double value) Set a parameter's value.
java.lang.String | toString() Retrieve the parameter's external representation.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEParameters

public SePEParameters(java.lang.String name,
                      double value)
Constructor.

SePEParameters

public SePEParameters(java.lang.String paramString)
Constructor.
Method Detail

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String paramString)
Construct parameter object from string.

clone

public java.lang.Object clone()
Clone a parameter object.

getName

public java.lang.String getName()
Retrieve a parameter's name.

getValue

public double getValue()
Retrieve a parameter's value.

setValue

public void setValue(double value)
Set a parameter's value.

setName

public void setName(java.lang.String name)
Set a parameter's name.

toString

public java.lang.String toString()
Retrieve the parameter's external representation.
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEPCSConstants

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEPCSConstants

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEPCSConstants
public final class SePEPCSConstants
extends java.lang.Object

Document the purpose of this class.

Constructor Summary
SePEPCSConstants()
Constructor.
Method Summary
void | delete() Deletes a PCSConstants object.
double | getDvals() Retrieves the dvals.
int | getIvals() Retrieves the ivals.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SePEPCSConstants

public SePEPCSConstants()
Constructor.
Method Detail

delete

public void delete()
Deletes a PCSConstants object.

getIvals

public int getIvals()
Retrieves the ivals.

getDvals

public double getDvals()
Retrieves the dvals.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface SePEPCSConstFunction

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Interface SePEPCSConstFunction

All Known Implementing Classes:
SePEProjection.PCSConstFunc
public interface SePEPCSConstFunction

Document the purpose of this class.

Method Summary
 int func(SePEPCSConstants pcsconstants, double[] sph, double[] parm)

Method Detail

func

public int func(SePEPCSConstants pcsconstants,
                double[] sph,
                double[] parm)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEPrimeMeridian

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEPrimeMeridian

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEPrimeMeridian
public class SePEPrimeMeridian
extends java.lang.Object
implements java.lang.Cloneable

This class defines a prime meridian object.

A prime meridian has the following attributes.

name The name of the prime meridian.
longitude The longitude value with respect to Greenwich of the prime meridian.

Constructor Summary
SePEPrimeMeridian(java.lang.String primemString)
Constructor.
SePEPrimeMeridian(java.lang.String name, double longitude)
Constructor.
Method Summary
java.lang.Object | clone() Clone a prime meridian.
void | fromString(java.lang.String primemString) Constructor.
int | getID() Retrieve a pe object's name .
double | getLongitude() Retrieve a prime meridian's longitude.
java.lang.String | getName() Retrive a prime meridian's name.
java.lang.String | toString() Retrieve an external representation of a prime meridian.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEPrimeMeridian

public SePEPrimeMeridian(java.lang.String name,
                         double longitude)
Constructor.

SePEPrimeMeridian

public SePEPrimeMeridian(java.lang.String primemString)
Constructor.
Method Detail

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String primemString)
Constructor.

clone

public java.lang.Object clone()
Clone a prime meridian.

getLongitude

public double getLongitude()
Retrieve a prime meridian's longitude.

getName

public java.lang.String getName()
Retrive a prime meridian's name.

toString

public java.lang.String toString()
Retrieve an external representation of a prime meridian.
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjectedCS

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjectedCS

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjectedCS
public class SePEProjectedCS
extends java.lang.Object
implements SePECoordinateSystem, java.lang.Cloneable

A projected coordinate system is a two-dimensional planar surface. However, the Earth's surface is three-dimensional. Transforming three-dimensional space onto a two-dimensional surface is called projection. Projection formulas are mathematical expressions that convert data from a geographical location (latitude and longitude) on a sphere or spheroid to a corresponding location (x and y) on a flat, two-dimensional surface.

A projected coordinate system inherits the components of a geographic coordinate system and also has:

Projection: The mathematical transformation used to convert from geographic coordinates to planar (projected) coordinates.
Parameters: Parameters used in the transformation. These parameters are specific to the projection.
Units: Linear measurement for coordinates on the plane.

Constructor Summary
SePEProjectedCS(java.lang.String projcsString)
Constructor.
Method Summary
 java.lang.Object clone()
Clone the pcs object.
 void fromString(java.lang.String projcsString)
/** Constructor.
 java.lang.String toString()
Retrieve a PCS's external representation.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEProjectedCS

public SePEProjectedCS(java.lang.String projcsString)
Constructor.
Method Detail

clone

public java.lang.Object clone()
Clone the pcs object.
Specified by:
clone in interface SePECoordinateSystem

fromString

public void fromString(java.lang.String projcsString)
/** Constructor.

toString

public java.lang.String toString()
Retrieve a PCS's external representation.
Specified by:
toString in interface SePECoordinateSystem
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjection

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjection

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjection
public class SePEProjection
extends java.lang.Object
implements java.lang.Cloneable

This class defines a map projection object.

A Projection has the following attributes:

name The name of the projection.
forward The forward (from geographic to projected coordinates) function of the projection.
inverse The inverse (from projected to geographic coordinates) function of the projection.

Inner Class Summary
class | SePEProjection.Forward
class | SePEProjection.Horizon
class | SePEProjection.Inverse
class | SePEProjection.PCSConstFunc
Constructor Summary
SePEProjection(java.lang.String projString)
Constructor.
Method Summary
java.lang.Object | clone() Clone a projection.
void | fromString(java.lang.String projString) Construct a projection object from string.
SePEProjectionFunction | fwd()
SePEProjectionFunction | getForward() Retrieve a projection's forward function.
SePEHorizonFunction | getHorizon() Retrieve a projection's horizon function.
int | getID() Retrieve a pe object's name .
SePEProjectionFunction | getInverse() Retrieve a projection's inverse function.
java.lang.String | getName() Retrieve a projection's name.
SePEPCSConstFunction | getPCSConstFunc() Retrieve a projection's pcsconstfunc function.
SePEHorizonFunction | horizon()
SePEProjectionFunction | inv()
SePEPCSConstFunction | pcsconstfunc()
java.lang.String | toString() Retrieve a projection's external representation.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEProjection

public SePEProjection(java.lang.String projString)
Constructor.
Method Detail

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String projString)
Construct a projection object from string.

clone

public java.lang.Object clone()
Clone a projection.

getName

public java.lang.String getName()
Retrieve a projection's name.

getForward

public SePEProjectionFunction getForward()
Retrieve a projection's forward function.

getInverse

public SePEProjectionFunction getInverse()
Retrieve a projection's inverse function.

getHorizon

public SePEHorizonFunction getHorizon()
Retrieve a projection's horizon function.

getPCSConstFunc

public SePEPCSConstFunction getPCSConstFunc()
Retrieve a projection's pcsconstfunc function.

toString

public java.lang.String toString()
Retrieve a projection's external representation.
Overrides:
toString in class java.lang.Object

inv

public SePEProjectionFunction inv()

fwd

public SePEProjectionFunction fwd()

horizon

public SePEHorizonFunction horizon()

pcsconstfunc

public SePEPCSConstFunction pcsconstfunc()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjection.Forward

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjection.Forward

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjection.Forward
Enclosing class:
SePEProjection
public class SePEProjection.Forward
extends java.lang.Object
implements SePEProjectionFunction

Constructor Summary
SePEProjection.Forward()
Method Summary
java.lang.Object | clone()
int | func(double[] sph, double[] parm, int n, double[][] coord, int[] iconst, double[] dconst)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SePEProjection.Forward

public SePEProjection.Forward()
Method Detail

func

public int func(double[] sph,
                double[] parm,
                int n,
                double[][] coord,
                int[] iconst,
                double[] dconst)
Specified by:
func in interface SePEProjectionFunction

clone

public java.lang.Object clone()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjection.Horizon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjection.Horizon

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjection.Horizon
Enclosing class:
SePEProjection
public class SePEProjection.Horizon
extends java.lang.Object
implements SePEHorizonFunction

Fields inherited from interface com.esri.sde.sdk.client.SePEHorizonFunction
HORIZON_DELTA, NULPT, PE_HORIZON_REPLICATE_BOTH, PE_HORIZON_REPLICATE_LEFT, PE_HORIZON_REPLICATE_NONE, PE_HORIZON_REPLICATE_RIGHT
Constructor Summary
SePEProjection.Horizon()
Method Summary
java.lang.Object | clone()
SePEHorizon | func(double[] sph, double[] parm) NOTE: Inclusive polys are to be arrayed clockwise Exclusive polys are to be arrayed clockwise also
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SePEProjection.Horizon

public SePEProjection.Horizon()
Method Detail

func

public SePEHorizon func(double[] sph,
                        double[] parm)
Description copied from interface: SePEHorizonFunction
NOTE: Inclusive polys are to be arrayed clockwise Exclusive polys are to be arrayed clockwise also
Specified by:
func in interface SePEHorizonFunction

clone

public java.lang.Object clone()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjection.Inverse

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjection.Inverse

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjection.Inverse
Enclosing class:
SePEProjection
public class SePEProjection.Inverse
extends java.lang.Object
implements SePEProjectionFunction

Constructor Summary
SePEProjection.Inverse()
Method Summary
java.lang.Object | clone()
int | func(double[] sph, double[] parm, int n, double[][] coord, int[] iconst, double[] dconst)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SePEProjection.Inverse

public SePEProjection.Inverse()
Method Detail

func

public int func(double[] sph,
                double[] parm,
                int n,
                double[][] coord,
                int[] iconst,
                double[] dconst)
Specified by:
func in interface SePEProjectionFunction

clone

public java.lang.Object clone()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEProjection.PCSConstFunc

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEProjection.PCSConstFunc

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEProjection.PCSConstFunc
Enclosing class:
SePEProjection
public class SePEProjection.PCSConstFunc
extends java.lang.Object
implements SePEPCSConstFunction

Constructor Summary
SePEProjection.PCSConstFunc()
Method Summary
 int func(SePEPCSConstants pcsconstants, double[] sph, double[] parm)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SePEProjection.PCSConstFunc

public SePEProjection.PCSConstFunc()
Method Detail

func

public int func(SePEPCSConstants pcsconstants,
                double[] sph,
                double[] parm)
Specified by:
func in interface SePEPCSConstFunction
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface SePEProjectionFunction

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Interface SePEProjectionFunction

All Known Implementing Classes:
SePEProjection.Forward, SePEProjection.Inverse
public interface SePEProjectionFunction

This class defines the methods for a map projection.

Whether you treat the Earth as a sphere or as a spheroid, you must transform its three-dimensionsal surface to create a flat map sheet. This mathematical transformation is commonly referred to as a map projection.

Method Summary
 int func(double[] sph, double[] parm, int n, double[][] coord, int[] iconst, double[] dconst)

Method Detail

func

public int func(double[] sph,
                double[] parm,
                int n,
                double[][] coord,
                int[] iconst,
                double[] dconst)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePESpheroid

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePESpheroid

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePESpheroid
public class SePESpheroid
extends java.lang.Object
implements java.lang.Cloneable

This class defines the shape and size of a geographic coordinate system's surface. Although the Earth is best represented by a spheroid, the Earth is sometimes treated as a sphere to make mathematical calculations easier.

Constructor Summary
SePESpheroid(java.lang.String spheroidStr)
Convert an external representation into a spheroid.
SePESpheroid(java.lang.String name, double axis, double flattening)
Constructor.
Method Summary
java.lang.Object | clone() Clone a spheroid.
void | fromString(java.lang.String spheroidStr) Convert an external representation into a spheroid.
double | getAxis() Retrieve a spheroid's semi-major axis.
double | getFlattening() Retrieve a spheroid's flattening.
int | getID() Retrieve a pe object's name .
java.lang.String | getName() Retrieve a spheroid's name.
java.lang.String | toString() Retrieve the spheroid's external representation.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePESpheroid

public SePESpheroid(java.lang.String name,
                    double axis,
                    double flattening)
Constructor.

SePESpheroid

public SePESpheroid(java.lang.String spheroidStr)
Convert an external representation into a spheroid.
Method Detail

clone

public java.lang.Object clone()
Clone a spheroid.

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String spheroidStr)
Convert an external representation into a spheroid.

getAxis

public double getAxis()
Retrieve a spheroid's semi-major axis.

getFlattening

public double getFlattening()
Retrieve a spheroid's flattening.

getName

public java.lang.String getName()
Retrieve a spheroid's name.

toString

public java.lang.String toString()
Retrieve the spheroid's external representation.
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePEUnit

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SePEUnit

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SePEUnit
public class SePEUnit
extends java.lang.Object
implements java.lang.Cloneable

This class defines a unit object.

Constructor Summary
SePEUnit(java.lang.String unitString)
Convert an external representation into a unit.
SePEUnit(java.lang.String name, double factor)
Constructor.
Method Summary
java.lang.Object | clone() Clone the unit object.
void | fromString(java.lang.String unitString) Convert an external representation into a unit.
int | getID() Retrieve a pe object's name .
java.lang.String | getName() Retrieve a unit's name.
double | getUnitFactor() Retrieve's a unit's conversion factor.
java.lang.String | toString() Retrieve the external representation of a unit.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePEUnit

public SePEUnit(java.lang.String name,
                double factor)
Constructor.

SePEUnit

public SePEUnit(java.lang.String unitString)
Convert an external representation into a unit.
Method Detail

clone

public java.lang.Object clone()
Clone the unit object.

getID

public int getID()
Retrieve a pe object's name .

fromString

public void fromString(java.lang.String unitString)
Convert an external representation into a unit.

getUnitFactor

public double getUnitFactor()
Retrieve's a unit's conversion factor.

getName

public java.lang.String getName()
Retrieve a unit's name.

toString

public java.lang.String toString()
Retrieve the external representation of a unit.
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeQuery

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeQuery

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
        |
        +--com.esri.sde.sdk.client.SeQuery
public class SeQuery
extends SeStreamOp

Used to submit a query to an ArcSDE instance.

A typical SeQuery operation sequence is:

1) Create an SeQuery.

2) Prepare the query.

3) Execute a statement or spatial query.

4) Fetch a single SeRow from the SeQuery.

5) Retrieve column values and feature geometry from the fetched SeRow.

6) Close the SeQuery at the end of a series of fetches.

See Also:
SeRow

Field Summary
static short | SE_ATTRIBUTE_FIRST
static short | SE_OPTIMIZE
static short | SE_SPATIAL_FIRST
static int | STREAM_CLOSED
static int | STREAM_EXECUTE
static int | STREAM_FETCH
static int | STREAM_FILE_QUERY
static int | STREAM_FINISHED
static int | STREAM_INACTIVE
static int | STREAM_INITIALIZE
static int | STREAM_LAYER_QUERY
static int | STREAM_LOG_QUERY
static int | STREAM_NONE
static int | STREAM_PREPARE_SQL
Constructor Summary
SeQuery(SeConnection conn)
Creates an SeQuery object given an SeConnection.
SeQuery(SeConnection conn, java.lang.String[] columns, SeSqlConstruct construct)
Creates an SeQuery object given an SeConnection, an array of column names, and an SeSqlConstruct.
Method Summary
SeExtent | calculateLayerExtent(SeQueryInfo qInfo) Returns the envelope for all features within the layer that pass any SQL construct, state, or spatial constraints for the stream.
SeLayer.SeLayerStats | calculateLayerStatistics(SeQueryInfo qInfo) Returns a set of statistics for a layer.
SeTable.SeTableStats | calculateTableStatistics(java.lang.String column, int mask, SeQueryInfo qInfo, int maxDistinct) Returns a set of statistics for a table and column.
SeRow | fetch() Fetches an SeRow of data.
SeRow | fetchRow(java.lang.String table, SeObjectId seRowId, java.lang.String[] columns) Fetches a single row based on the feature id.
int | getNumColumns() Returns the number of columns on the query.
void | prepareQuery() Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause.
void | prepareQueryInfo(SeQueryInfo qInfo) Initializes a stream with a query using an SeQueryInfo object.The SE_QUERYINFO structure includes parameters to define tables, columns, where clause, query type, ORDER BY clauses and DBMS hints.
void | prepareQueryLogfile(java.lang.String logfile) Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause.
void | prepareSql(java.lang.String sqlStatement) Tells the server to prepare the sql statement for execution.
void | setSpatialConstraints(short searchOrder, boolean calcMasks, SeFilter[] filters) Sets the spatial filters on the query.
Methods inherited from class com.esri.sde.sdk.client.SeStreamOp
cancel, close, describeColumn, equivalenceRows, execute, flushBufferedWrites, inProgress, setLogfile, setRowLocking, setSSAFilter, setState, unequivalenceRows
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

STREAM_FILE_QUERY

public static final int STREAM_FILE_QUERY

STREAM_LAYER_QUERY

public static final int STREAM_LAYER_QUERY

STREAM_LOG_QUERY

public static final int STREAM_LOG_QUERY

STREAM_NONE

public static final int STREAM_NONE

STREAM_PREPARE_SQL

public static final int STREAM_PREPARE_SQL

STREAM_CLOSED

public static final int STREAM_CLOSED

STREAM_INACTIVE

public static final int STREAM_INACTIVE

STREAM_INITIALIZE

public static final int STREAM_INITIALIZE

STREAM_EXECUTE

public static final int STREAM_EXECUTE

STREAM_FETCH

public static final int STREAM_FETCH

STREAM_FINISHED

public static final int STREAM_FINISHED

SE_ATTRIBUTE_FIRST

public static final short SE_ATTRIBUTE_FIRST

SE_SPATIAL_FIRST

public static final short SE_SPATIAL_FIRST

SE_OPTIMIZE

public static final short SE_OPTIMIZE
Constructor Detail

SeQuery

public SeQuery(SeConnection conn)
        throws SeException
Creates an SeQuery object given an SeConnection.

SeQuery

public SeQuery(SeConnection conn,
               java.lang.String[] columns,
               SeSqlConstruct construct)
        throws SeException
Creates an SeQuery object given an SeConnection, an array of column names, and an SeSqlConstruct.
Method Detail

prepareQuery

public void prepareQuery()
                  throws SeException
Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause. The where clause can’t contain any ORDER BY or GROUP BY clauses.

prepareQueryLogfile

public void prepareQueryLogfile(java.lang.String logfile)
                         throws SeException
Initializes a stream with a query using a selected set of columns and an SeSqlConstruct object for the where clause. The logfile identifies which features the selection will process. The where clause can’t contain any ORDER BY or GROUP BY clauses.
Parameters:
logfile - the logfile name.

prepareQueryInfo

public void prepareQueryInfo(SeQueryInfo qInfo)
                      throws SeException
Initializes a stream with a query using an SeQueryInfo object.The SE_QUERYINFO structure includes parameters to define tables, columns, where clause, query type, ORDER BY clauses and DBMS hints.
Parameters:
qInfo - the SeQueryInfo object handle.

getNumColumns

public int getNumColumns()
                  throws SeException
Returns the number of columns on the query.

prepareSql

public void prepareSql(java.lang.String sqlStatement)
                throws SeException
Tells the server to prepare the sql statement for execution. The sqlStatement is executed by the underlying database when the execute() method is invoked.
Parameters:
sqlStatement - any SQL statement supported by the underlying DBMS.

fetch

public SeRow fetch()
            throws SeException
Fetches an SeRow of data.

fetchRow

public SeRow fetchRow(java.lang.String table,
                      SeObjectId seRowId,
                      java.lang.String[] columns)
               throws SeException
Fetches a single row based on the feature id. A call to this method immeadiately retrieves the row from the database. execute need not be called.
Parameters:
table - the name of the table to fetch data from.
seRowId - the feature or row id of the row to be fetched.
columns - the list of columns to be retrieved from the table.

calculateLayerStatistics

public SeLayer.SeLayerStats calculateLayerStatistics(SeQueryInfo qInfo)
                                              throws SeException
Returns a set of statistics for a layer. You must have query access to the layer. This function reads the entire feature table and can be very expensive on a large layer. The query info object should contain the layer’s table name as the sql construct’s first table.
Parameters:
qinfo - SeQueryInfo object handle.
Returns:
SeLayer.SeLayerStats

calculateTableStatistics

public SeTable.SeTableStats calculateTableStatistics(java.lang.String column,
                                                     int mask,
                                                     SeQueryInfo qInfo,
                                                     int maxDistinct)
                                              throws SeException
Returns a set of statistics for a table and column. You can use a simple column name or a complex expression for the column parameter. Use the query info structure to specify the table and any optional where clause. You can join to other tables. Any state or spatial constraints set for the stream are used. If the max_distinct parameter is zero, the MAXDISTINCT value from the giomgr.defs file is used to limit the number of classes. If that value is also zero, the number of distinct classes is unlimited.
Parameters:
column - the column name.
mask - the statistics bit mask.
qinfo - SeQueryInfo object handle.
maxDistinct - the maximum number of distinct classes.
Returns:
SeTable.SeTableStats

calculateLayerExtent

public SeExtent calculateLayerExtent(SeQueryInfo qInfo)
                              throws SeException
Returns the envelope for all features within the layer that pass any SQL construct, state, or spatial constraints for the stream.
Parameters:
qinfo - SeQueryInfo object handle.
minZ - the minimum Z value.
maxZ - the maximum Z value.
Returns:
SeExtent

setSpatialConstraints

public void setSpatialConstraints(short searchOrder,
                                  boolean calcMasks,
                                  SeFilter[] filters)
                           throws SeException
Sets the spatial filters on the query.

SEARCH ORDERS:

SE_ATTRIBUTE_FIRST - do not use spatial index.

SE_SPATIAL_FIRST - use spatial index.

SE_OPTIMIZE - let SDE decide.

Parameters:
searcOrder - the search order.
calcMasks - if true, returns the spatial masks when fetching data.
filters - the array of filters to be applied as spatial constraints.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeQueryInfo

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeQueryInfo

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeQueryInfo
public class SeQueryInfo
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Holds information for advanced query operations. An SeQueryInfo object is used to retrieve layer and table statistics.

Field Summary
static int | SE_QUERYTYPE_ATTRIBUTE_FIRST
static int | SE_QUERYTYPE_JFA
static int | SE_QUERYTYPE_JSF
static int | SE_QUERYTYPE_JSFA
static int | SE_QUERYTYPE_V3
Constructor Summary
SeQueryInfo()
Constructs an SeQueryInfo object.
Method Summary
java.lang.Object | clone() Clones SeQuery object.
java.lang.String | getByClause() Returns the SQL ORDER BY string for the query.
java.lang.String[] | getColumns() Returns a copy of the SeColumnDefinitions set on this queryinfo object.
SeSqlConstruct | getConstruct() Returns the SeSqlConstruct.
int | getEntityType() Returns the shape type as an int.
java.lang.String | getLogfile() Returns the logfile name.
int | getQueryType() Returns the query type.
int | numColumns() Returns the number of columns set on the queryinfo object.
void | setByClause(java.lang.String byClause) Sets the SQL ORDER BY or GROUP BY string for the query.
void | setColumns(java.lang.String[] cols) Sets the array of SeColumnDefinitions for the query.
void | setConstruct(SeSqlConstruct construct) Sets the SesqlConstruct that holds the tables and where clause for the query.
void | setEntityType(int type) Sets the shape (entity) type.
void | setLogfile(java.lang.String logfile) Sets the logfile name.
void | setQueryType(int type) Sets the DBMS query type.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_QUERYTYPE_ATTRIBUTE_FIRST

public static final int SE_QUERYTYPE_ATTRIBUTE_FIRST

SE_QUERYTYPE_JFA

public static final int SE_QUERYTYPE_JFA

SE_QUERYTYPE_JSF

public static final int SE_QUERYTYPE_JSF

SE_QUERYTYPE_JSFA

public static final int SE_QUERYTYPE_JSFA

SE_QUERYTYPE_V3

public static final int SE_QUERYTYPE_V3
Constructor Detail

SeQueryInfo

public SeQueryInfo()
            throws SeException
Constructs an SeQueryInfo object.
Throws:
SeException -
Method Detail

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones SeQuery object.
Returns:
Object
Throws:
SeException -

getEntityType

public int getEntityType()
Returns the shape type as an int. possible values: SeLayer.TYPE_NIL SeLayer.TYPE_POINT SeLayer.TYPE_LINE SeLayer.TYPE_SIMPLE_LINE SeLayer.TYPE_POLYGON SeLayer.TYPE_MULTI_POINT SeLayer.TYPE_MULTI_LINE SeLayer.TYPE_MULTI_SIMPLE_LINE SeLayer.TYPE_MULTI_POLYGON
Returns:
int

setEntityType

public void setEntityType(int type)
Sets the shape (entity) type. possible values: SeLayer.TYPE_NIL SeLayer.TYPE_POINT SeLayer.TYPE_LINE SeLayer.TYPE_SIMPLE_LINE SeLayer.TYPE_POLYGON SeLayer.TYPE_MULTI_POINT SeLayer.TYPE_MULTI_LINE SeLayer.TYPE_MULTI_SIMPLE_LINE SeLayer.TYPE_MULTI_POLYGON

getByClause

public java.lang.String getByClause()
Returns the SQL ORDER BY string for the query.

setByClause

public void setByClause(java.lang.String byClause)
                 throws SeException
Sets the SQL ORDER BY or GROUP BY string for the query. The ORDER BY string is appended to the end of the WHERE clause set by setConstruct(). You must set the phrase "order by" or "group by" as the first two words of your byClause.

getQueryType

public int getQueryType()
Returns the query type. SE_QUERYTYPE_ATTRIBUTE_FIRST SE_QUERYTYPE_JFA SE_QUERYTYPE_JSF SE_QUERYTYPE_JSFA SE_QUERYTYPE_V3

setQueryType

public void setQueryType(int type)
                  throws SeException
Sets the DBMS query type. It allows users to join layer tables (spatial, feature) with a user's business table and external tables. A Query Type is defined as the type of SQL select statement the server will use to execute spatial and non-spatial queries. Query types are: SE_QUERYTYPE_ATTRIBUTE_FIRST - join the business tables first, followed by the spatial and/or feature table. SE_QUERYTYPE_JFA - join the feature and attribute (business) tables. SE_QUERYTYPE_JSF - join the spatial and feature tables. SE_QUERYTYPE_JSFA - join the spatial/business/feature tables. SE_QUERYTYPE_V3 - use the old-style query method where all tables are queried individually.

numColumns

public int numColumns()
Returns the number of columns set on the queryinfo object.

getColumns

public java.lang.String[] getColumns()
                              throws SeException
Returns a copy of the SeColumnDefinitions set on this queryinfo object.

setColumns

public void setColumns(java.lang.String[] cols)
                throws SeException
Sets the array of SeColumnDefinitions for the query.

getConstruct

public SeSqlConstruct getConstruct()
                            throws SeException
Returns the SeSqlConstruct.

setConstruct

public void setConstruct(SeSqlConstruct construct)
                  throws SeException
Sets the SesqlConstruct that holds the tables and where clause for the query.

getLogfile

public java.lang.String getLogfile()
Returns the logfile name.
Returns:
String logfile

setLogfile

public void setLogfile(java.lang.String logfile)
                throws SeException
Sets the logfile name.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeRegistration

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeRegistration

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeRegistration
public class SeRegistration
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Field Summary
static int | SE_REGISTRATION_ROW_ID_ALLOCATION_MANY
static int | SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE
static int | SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE
static int | SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE
static int | SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER
Constructor Summary
SeRegistration(SeConnection conn)
SeRegistration constructor with an SeConnection.Use this constructor when registrating a new object.
SeRegistration(SeConnection conn, SeObjectId regId)
SeRegistration constructor with an SeConnection and table registration Id that retrives the registration entry information for specified ID.
SeRegistration(SeConnection conn, java.lang.String tableName)
SeRegistration constructor with an SeConnection and table name that retrives the registration entry information for specified table.
Method Summary
boolean | allowRowlocks() Returns TRUE if rowlocking is enabled.
void | alter() Alters the properties of a registered table.
java.lang.Object | clone() Clones SeRegistration object.
void | create() Register an existing table with ArcSde.
void | delete() Unregisters a table.
int | getAccess() Returns the privilege bitmask for a registered table.The privileges are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
java.lang.String | getCreationKeyword() Returns the configuration keyword used for table creation.
java.lang.String[] | getDependentTables() Returns a dynamically allocated list of all dependent tables for a given table.
java.lang.String | getDescription() Returns the registered table's description.
SeRegistration[] | getDifferenceList(SeObjectId state1Id, SeObjectId state2Id) Returns a list SeRegistration objects for all of the multiversion tables that are modified in either of the input states or any of the states joining them in the state tree (excluding their shared parent), and for which the current user has any access to the DBMS tables.
SeObjectId | getId() Returns the ID of a registered table.
void | getInfo() Returns registration information.
SeObjectId | getMinimumId() Returns the the minimum ID allowed in the registered table.
java.lang.String | getMvViewName() Returns the multiversion view name of a registered table.
java.util.Date | getRegistrationDate() Returns the registration date of a table.
int | getRowIdAllocation() Returns the method used by this registered table to allocate SDE-maintained rowids.
java.lang.String | getRowIdColumnName() Returns the row ID column name for a registered table.
int | getRowIdColumnType() Returns the row ID column type for a registered table.
java.lang.String | getTableName() Returns the table name for a registered table.
boolean | hasLayer() Returns TRUE if the registered table has a spatial column.
boolean | hasLocator() Returns TRUE if the registered table has locator.
boolean | isHidden() Returns TRUE if the registered table is hidden.
boolean | isMultiVersion() Returns TRUE if the registered is a multiversioned table.
boolean | isView() Returns TRUE if the registered table is a view.
void | setCreationKeyword(java.lang.String creationKeyword) Sets the configuration keyword used for table creation.
void | setDescription(java.lang.String desc) Sets the registered table's description.
void | setHidden(boolean hidden) Sets the hidden flag for a registered table.
void | setLocator(boolean isLocator) Sets the locator flag for a registered table.
void | setMinimumId(SeObjectId minId) Sets the minimum ID allowed for the registered table.
void | setMultiVersion(boolean isMultiVersion) Sets the multiversion flag for a registered table.
void | setRowIdAllocation(int method) Sets a registration entry's method of allocating ArcSDE-maintained rows ids.
void | setRowIdColumnName(java.lang.String rowidColumn) Sets the row ID column name for a registered table.
void | setRowIdColumnType(int rowidColumnType) Sets the row ID column name for a registered table.
void | setRowlocks(boolean allowRowlocks) Sets row locking to enabled or dis abled on a registered table.
void | setTableName(java.lang.String tableName) Sets the table name for a registered table.
void | setView(boolean isView) Sets the view flag for a registered table.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE

public static final int SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER

public static final int SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER

SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE

public static final int SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE

SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE

public static final int SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE

SE_REGISTRATION_ROW_ID_ALLOCATION_MANY

public static final int SE_REGISTRATION_ROW_ID_ALLOCATION_MANY
Constructor Detail

SeRegistration

public SeRegistration(SeConnection conn)
               throws SeException
SeRegistration constructor with an SeConnection.Use this constructor when registrating a new object. You must set call setTableName() when using this constructor.
Parameters:
conn - SeConnection object handle.
Throws:
SeException -

SeRegistration

public SeRegistration(SeConnection conn,
                      SeObjectId regId)
               throws SeException
SeRegistration constructor with an SeConnection and table registration Id that retrives the registration entry information for specified ID.
Parameters:
conn - SeConnection object handle.
regId - the registration table ID.
Throws:
SeException -

SeRegistration

public SeRegistration(SeConnection conn,
                      java.lang.String tableName)
               throws SeException
SeRegistration constructor with an SeConnection and table name that retrives the registration entry information for specified table.
Parameters:
conn - SeConnection object handle.
tableName - table name.
Throws:
SeException -
Method Detail

alter

public void alter()
           throws SeException
Alters the properties of a registered table. You can change the registration entry's description, minimum_id, and row_id column type. However, only integer columns can be made ArcSDE–maintained. A registration entry for an multiversion table may not have a row_id column type of SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE. Only the owner of the table may alter its properties.
Throws:
SeException -

create

public void create()
            throws SeException
Register an existing table with ArcSde. The table must be owned by the current user and the user-maintained rowid should be present if specified.
Throws:
SeException -

delete

public void delete()
            throws SeException
Unregisters a table. Only the owner of the table may delete the registered table entry. Tables with mangos, multiversion tables, or layers can't be unregistered.
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones SeRegistration object.
Returns:
Object
Throws:
SeException -

getDifferenceList

public SeRegistration[] getDifferenceList(SeObjectId state1Id,
                                          SeObjectId state2Id)
                                   throws SeException
Returns a list SeRegistration objects for all of the multiversion tables that are modified in either of the input states or any of the states joining them in the state tree (excluding their shared parent), and for which the current user has any access to the DBMS tables. This can be used to help implement manual difference resolution. The two states may also be the same, in which case only those tables modified in that particular state are returned.
Parameters:
state1Id - the ID of the first state.
state2Id - the ID of the second state.
Returns:
SeRegistration[]
Throws:
SeException -

getInfo

public void getInfo()
             throws SeException
Returns registration information.
Throws:
SeException -

getDependentTables

public java.lang.String[] getDependentTables()
                                      throws SeException
Returns a dynamically allocated list of all dependent tables for a given table. The returned list contains layer releated table names like feature,index etc. and multi-version table names like adds, deletes, equivalence etc.
Returns:
String[]
Throws:
SeException -

getAccess

public int getAccess()
Returns the privilege bitmask for a registered table.The privileges are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
Returns:
int

getCreationKeyword

public java.lang.String getCreationKeyword()
Returns the configuration keyword used for table creation.
Returns:
String

setCreationKeyword

public void setCreationKeyword(java.lang.String creationKeyword)
Sets the configuration keyword used for table creation.

getDescription

public java.lang.String getDescription()
Returns the registered table's description.
Returns:
String

setDescription

public void setDescription(java.lang.String desc)
Sets the registered table's description.

getId

public SeObjectId getId()
Returns the ID of a registered table.
Returns:
SeObjectId

getMvViewName

public java.lang.String getMvViewName()
Returns the multiversion view name of a registered table.
Returns:
String

getMinimumId

public SeObjectId getMinimumId()
Returns the the minimum ID allowed in the registered table. If an ArcSDE-maintained row ID column doesn’t exist, the function returns zero.
Returns:
SeObjectId

setMinimumId

public void setMinimumId(SeObjectId minId)
                  throws SeException
Sets the minimum ID allowed for the registered table.

getRegistrationDate

public java.util.Date getRegistrationDate()
Returns the registration date of a table.
Returns:
java.util.Date

getRowIdColumnName

public java.lang.String getRowIdColumnName()
Returns the row ID column name for a registered table. If no row ID column exists null value is returned.
Returns:
String

setRowIdColumnName

public void setRowIdColumnName(java.lang.String rowidColumn)
                        throws SeException
Sets the row ID column name for a registered table.

getRowIdAllocation

public int getRowIdAllocation()
Returns the method used by this registered table to allocate SDE-maintained rowids.
Returns:
int

setRowIdAllocation

public void setRowIdAllocation(int method)
                        throws SeException
Sets a registration entry's method of allocating ArcSDE-maintained rows ids.
Parameters:
method - SE_REGISTRATION_ROW_ID_ALLOCATION_SINGLE or SE_REGISTRATION_ROW_ID_ALLOCATION_MANY

getRowIdColumnType

public int getRowIdColumnType()
Returns the row ID column type for a registered table. If no row ID column exists, 0 will be returned. The column type are: SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE SE_REGISTRATION_ROW_ID_COLUMN_TYPE_USER SE_REGISTRATION_ROW_ID_COLUMN_TYPE_NONE
Returns:
int

setRowIdColumnType

public void setRowIdColumnType(int rowidColumnType)
                        throws SeException
Sets the row ID column name for a registered table.

getTableName

public java.lang.String getTableName()
Returns the table name for a registered table.
Returns:
String

setTableName

public void setTableName(java.lang.String tableName)
                  throws SeException
Sets the table name for a registered table.

hasLayer

public boolean hasLayer()
Returns TRUE if the registered table has a spatial column.
Returns:
boolean

isHidden

public boolean isHidden()
Returns TRUE if the registered table is hidden.
Returns:
boolean

setHidden

public void setHidden(boolean hidden)
Sets the hidden flag for a registered table.

isView

public boolean isView()
Returns TRUE if the registered table is a view.
Returns:
boolean

setView

public void setView(boolean isView)
Sets the view flag for a registered table.

hasLocator

public boolean hasLocator()
Returns TRUE if the registered table has locator.
Returns:
boolean

setLocator

public void setLocator(boolean isLocator)
Sets the locator flag for a registered table.

isMultiVersion

public boolean isMultiVersion()
Returns TRUE if the registered is a multiversioned table.
Returns:
boolean

setMultiVersion

public void setMultiVersion(boolean isMultiVersion)
Sets the multiversion flag for a registered table.

allowRowlocks

public boolean allowRowlocks()
Returns TRUE if rowlocking is enabled.
Returns:
boolean

setRowlocks

public void setRowlocks(boolean allowRowlocks)
Sets row locking to enabled or dis abled on a registered table.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeRelease

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeRelease

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeRelease
public class SeRelease
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Represents the version description of an ArcSDE instance.

Constructor Summary
SeRelease()
Sets the release fields to zero.
Method Summary
java.lang.Object | clone() Clones SeRelease object.
int | getBugFix() Returns the bug fix version number of the release.
java.lang.String | getDesc() Returns a String description of the release.
int | getMajor() Returns the Major component of the release.
int | getMinor() Returns the Minor component of the release.
int | getRelease() Returns the release number.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeRelease

public SeRelease()
Sets the release fields to zero.
Method Detail

getMajor

public int getMajor()
Returns the Major component of the release.

getMinor

public int getMinor()
Returns the Minor component of the release.

getBugFix

public int getBugFix()
Returns the bug fix version number of the release.

getDesc

public java.lang.String getDesc()
Returns a String description of the release.

getRelease

public int getRelease()
Returns the release number.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones SeRelease object.
Returns:
Object
Throws:
SeException -
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeRow

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeRow

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeRow
public class SeRow
extends java.lang.Object

Represents a row of a result set from a fetch operation or a row of data to be inserted or updated. Obtain a write operation row from the SeInsert.getRowToSet() or SeUpdate.getRowToSet() methods.

Field Summary
static int | BLOB_SEG_SIZE
static int | SE_IS_ALREADY_FETCHED
static int | SE_IS_NOT_NULL_VALUE
static int | SE_IS_NULL_VALUE
static int | SE_IS_REPEATED_FEATURE
Method Summary
java.io.ByteArrayInputStream | getBlob(int columnPos) Gets a blob column from the row.
SeColumnDefinition | getColumnDef(int pos) Returns a column's definition, given the column's position.
SeColumnDefinition[] | getColumns() Returns the column defintions describing the columns on the row.
java.util.Date | getDate(int columnPos) Returns the column value at the given position as a java.lang.Date.
java.lang.Double | getDouble(int columnPos) Returns the column value at the given position as a Double.
java.lang.Float | getFloat(int columnPos) Returns the column value at the given position as a Float.
void | getGeometry(GeometryFactory factory, int columnPos) Returns the column value as a GeometryFactory object.
int | getIndicator(int pos) Returns an indicator value, given the column position.
java.lang.Integer | getInteger(int columnPos) Returns the column value at the given position as an Integer.
short | getNumColumns() Returns the number of columns on the row as a short.
java.lang.Object | getObject(int columnPos) Returns the column value at the given position as an Object.
SeShape | getShape(int columnPos) Returns the column value at the given position as an SeShape.
java.lang.Short | getShort(int columnPos) Returns the column value at the given position as a Short.
java.lang.String | getString(int columnPos) Returns the column value at the given position as a String.
boolean | hasColumns() Returns true if the row has column definitions set.
void | reset() Empties the row by clearing the column values.
void | setBlob(int columnPos, java.io.ByteArrayInputStream blobVal) Sets the value of a BLOB column, which is to be used to insert/update a row in a table/layer.
void | setColumnDefs(SeColumnDefinition[] cdefs) Sets the dolumn definitions on the row, given an array of SeColumnDefinition[].
void | setColumnDefs(java.util.Vector cdefs) Sets the dolumn definitions on the row, given a Vector of SeColumnDefinitions.
void | setDate(int columnPos, java.util.Date dtVal) Sets the value of an Date column, which is to be used to insert/update a row in a table/layer.
void | setDouble(int columnPos, java.lang.Double dblVal) Sets the value of a double column, which is to be used to insert/update a row in a table/layer.
void | setFloat(int columnPos, java.lang.Float fltVal) Sets the value of a float column, which is to be used to insert/update a row in a table/layer.
void | setInteger(int columnPos, java.lang.Integer intVal) Sets the value of an integer column, which is to be used to insert/update a row in a table/layer.
void | setShape(int columnPos, SeShape shpVal) Sets the value of an SeShape column, which is to be used to insert/update a row in a table/layer.
void | setShort(int columnPos, java.lang.Short shortVal) Sets the value of a small integer column, which is to be used to insert/update a row in a table/layer.
void | setString(int columnPos, java.lang.String strVal) Sets the value of a String column, which is to be used to insert/update a row in a table/layer.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_IS_REPEATED_FEATURE

public static final int SE_IS_REPEATED_FEATURE

SE_IS_ALREADY_FETCHED

public static final int SE_IS_ALREADY_FETCHED

SE_IS_NULL_VALUE

public static final int SE_IS_NULL_VALUE

SE_IS_NOT_NULL_VALUE

public static final int SE_IS_NOT_NULL_VALUE

BLOB_SEG_SIZE

public static final int BLOB_SEG_SIZE
Method Detail

getNumColumns

public short getNumColumns()
Returns the number of columns on the row as a short.

getColumns

public SeColumnDefinition[] getColumns()
Returns the column defintions describing the columns on the row.

getColumnDef

public SeColumnDefinition getColumnDef(int pos)
                                throws SeException
Returns a column's definition, given the column's position.
Parameters:
pos - position of the column (0-n)
Returns:
SeColumnDefinition definition of the column at pos.

setColumnDefs

public void setColumnDefs(SeColumnDefinition[] cdefs)
                   throws SeException
Sets the dolumn definitions on the row, given an array of SeColumnDefinition[].

setColumnDefs

public void setColumnDefs(java.util.Vector cdefs)
                   throws SeException
Sets the dolumn definitions on the row, given a Vector of SeColumnDefinitions.

hasColumns

public boolean hasColumns()
Returns true if the row has column definitions set.

getIndicator

public int getIndicator(int pos)
Returns an indicator value, given the column position.
Parameters:
pos - position of the column (0-n)
Returns:
int the indicator value for column at pos.

getShort

public java.lang.Short getShort(int columnPos)
Returns the column value at the given position as a Short.
Parameters:
columnPos - position of the column (0-n)
Returns:
Short Short object containing the value at columnPos.

setShort

public void setShort(int columnPos,
                     java.lang.Short shortVal)
              throws SeException
Sets the value of a small integer column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
shortVal - the value to set at columnPos.

getInteger

public java.lang.Integer getInteger(int columnPos)
Returns the column value at the given position as an Integer.
Parameters:
columnPos - position of the column (0-n)
Returns:
Integer Integer object containing the value at columnPos.

setInteger

public void setInteger(int columnPos,
                       java.lang.Integer intVal)
                throws SeException
Sets the value of an integer column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
intVal - the value to set at columnPos.

getFloat

public java.lang.Float getFloat(int columnPos)
Returns the column value at the given position as a Float.
Parameters:
columnPos - position of the column (0-n)
Returns:
Float Float object containing the value at columnPos.

setFloat

public void setFloat(int columnPos,
                     java.lang.Float fltVal)
              throws SeException
Sets the value of a float column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
fltVal - the value to set at columnPos.

getDate

public java.util.Date getDate(int columnPos)
Returns the column value at the given position as a java.lang.Date.
Parameters:
columnPos - position of the column (0-n)
Returns:
Date Date object containing the value at columnPos.

setDate

public void setDate(int columnPos,
                    java.util.Date dtVal)
             throws SeException
Sets the value of an Date column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
dtVal - the value to set at columnPos.

getDouble

public java.lang.Double getDouble(int columnPos)
Returns the column value at the given position as a Double.
Parameters:
columnPos - position of the column (0-n)
Returns:
Double Double object containing the value at columnPos.

setDouble

public void setDouble(int columnPos,
                      java.lang.Double dblVal)
               throws SeException
Sets the value of a double column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
dblVal - the value to set at columnPos.

getString

public java.lang.String getString(int columnPos)
Returns the column value at the given position as a String.
Parameters:
columnPos - position of the column (0-n)
Returns:
String String object containing the value at columnPos.

setString

public void setString(int columnPos,
                      java.lang.String strVal)
               throws SeException
Sets the value of a String column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
strVal - the value to set at columnPos.

getShape

public SeShape getShape(int columnPos)
                 throws SeException
Returns the column value at the given position as an SeShape.
Parameters:
columnPos - position of the column (0-n)
Returns:
SeShape SeShape object containing the value at columnPos.

getGeometry

public void getGeometry(GeometryFactory factory,
                        int columnPos)
                 throws SeException
Returns the column value as a GeometryFactory object.
Parameters:
columnPos - position of the column (0-n)

setShape

public void setShape(int columnPos,
                     SeShape shpVal)
              throws SeException
Sets the value of an SeShape column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
shpVal - the value to set at columnPos.

getBlob

public java.io.ByteArrayInputStream getBlob(int columnPos)
                                     throws SeException
Gets a blob column from the row.
Parameters:
columnPos - position of the column (0-n)
Returns:
ByteArrayInputStream stream containing the blob value at columnPos.

setBlob

public void setBlob(int columnPos,
                    java.io.ByteArrayInputStream blobVal)
             throws SeException
Sets the value of a BLOB column, which is to be used to insert/update a row in a table/layer. If a NULL value is given, then the column value will be set to NULL.
Parameters:
columnPos - position of the column (0-n)
blobVal - the value to set at columnPos.

getObject

public java.lang.Object getObject(int columnPos)
                           throws SeException
Returns the column value at the given position as an Object. Use this method to retrieve a column value and then cast the Object to the expected type. Blobs cannot be retreived by this method.
Parameters:
columnPos - position of the column (0-n)
Returns:
Object generic object containing the value at columnPos.

reset

public void reset()
Empties the row by clearing the column values.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeShape

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeShape

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeShape
public class SeShape
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

The ESRI representation of a geometric shape. Shapes represent geometric objects in two-dimensional planar space that are useful for GIS applications. Shapes can be 0-dimensional points, 1-dimensional lines, and 2-dimensional areas. The available shape types are nil, points, lines, simple lines, and areas. Each shape has a spatial reference system which describes the coordinate space in which the shape is defined. ArcSDE functions that compare or combine two shapes use `Clementini` operators. Eliseo Clementini and colleagues have formalized the possible relationships that can exist between shapes. The Clementini operators differentiate between a shape`s boundary and interior. A point is considered to be all interior and has no boundary. The endpoints of a line constitutes its boundary, while the rest of the line is considered the interior. The lines that form the edge of a polygon are the boundary, while the rest of the polygon is the interior.

Shape Predicates

Methods that perform boolean shape comparisons. isEqual, isTouching, isWithin, isContaining, isCrossing, isOverlapping, isDisjoint

Shape transformations

The overlay method combines two shapes. It returns two shapes, primaryRemainder and secondaryRemainder, which contain any pieces that are unique to the primary or secondary shape only. Shapes that are common to both shapes are returned in a list of shapes. ArcSDE also has methods that return specific relationships of the overlay. For instance, method intersect returns shapes that are common to both shapes. Method difference returns the shapes which are part of the primary shape only, while method symmetricalDifference returns two lists: primary only and secondary only. Method union returns the logical OR of space between the two shapes and method clip returns the intersection of the shape and a rectangular envelope. There are two methods of the SeShape class that return a partOffset array and a subpartOffset array. They are getAllPoints and getPoints (returns the points of a part). Here is an explaination of how the offset arrays are used: The partOffsets array contains integer indexes into the subpartOffsets array that indicate the first subpart of a part. The subpartOffsets array contains integer indexes into the point array that indicate the first point of a subpart. If the subpart_offsets array is null, the partOffsets array contains integer indexes directly into the points array. Shapes other than polygons will always have a single subpart offset for each part. An SeShape contains an object that represents an SeGeometry.

Field Summary
static int | RM_AREA_INTERSECT AREA_INTERSECTION Shape Relationship returned in findRelation.
static int | RM_BOUNDARY_INTERSECT BOUNDARY INTERSECTION Shape Relationship returned in findRelation.
static int | RM_CBOUND_DIFF COMMON EDGE OPPOSITE DIRECTION Shape Relationship returned in findRelation.
static int | RM_CBOUND_SAME COMMON EDGE SAME DIRECTION Shape Relationship returned in findRelation.
static int | RM_COMMON_POINT COMMON_POINT Shape Relationship returned in findRelation.
static int | RM_EMBEDDED_POINT VERTICE EMBEDDED IN LINE Shape Relationship returned in findRelation.
static int | RM_IDENTICAL PRIMARY == SECONDARY Shape Relationship returned in findRelation.
static int | RM_INTERIOR_INTERSECT INTERIOR INTERSECTION Shape Relationship returned in findRelation.
static int | RM_LINE_CROSS LINE CROSS Shape Relationship returned in findRelation.
static int | RM_PARALLEL_OVERLAPPING PARALLEL OVERLAPPING LINES Shape Relationship returned in findRelation.
static int | RM_PRIM_CONTAINED PRIMARY CONTAINED BY SECONDARY Shape Relationship returned in findRelation.
static int | RM_PRIM_LEP_INTERIOR PRIMARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.
static int | RM_SEC_CONTAINED SECONDARY CONTAINED BY PRIMARY Shape Relationship returned in findRelation.
static int | RM_SEC_LEP_INTERIOR SECONDARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.
static int | RM_TESTS_PERFORMED Any tests performed? Shape Relationship returned in findRelation.
static int | SE_BUILD_POLYGONS_FROM_ALL_RINGS Uses all segments in the shape to create a polygon.
static int | SE_BUILD_POLYGONS_FROM_CLOCKWISE_RINGS Uses only the clockwise lines in the shape to create a polygon.
static int | SE_BUILD_POLYGONS_FROM_COUNTERCLOCKWISE_RINGS Uses only the counterclockwise lines in the shape to create a polygon.
static int | SE_BUILD_SIMPLELINES Converts a set of spagetti lines into a multipart simple line shape.
static int | SE_MATCH_MEASURES Match the measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
static int | SE_MATCH_ZEDS Match the Z coordinate values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
static int | SE_MATCH_ZEDS_AND_MEASURES Match the z coordinate and measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES
static int | TURN_DEFAULT
static int | TURN_LEFT Left hand rotation - Polygon interior is on the Left
static int | TURN_RIGHT Right hand rotation - Polygon interior is on the right.
static int | TYPE_LINE
static int | TYPE_MULTI_LINE
static int | TYPE_MULTI_POINT
static int | TYPE_MULTI_POLYGON
static int | TYPE_MULTI_SIMPLE_LINE
static int | TYPE_NIL
static int | TYPE_POINT
static int | TYPE_POLYGON
static int | TYPE_SIMPLE_LINE
Constructor Summary
SeShape()
Creates a Nil Shape.
SeShape(SeCoordinateReference cRef)
Creates a Nil shape with a coordinate reference.
Method Summary
void | addIsland(SDEPoint[] pts) Adds and island ring (donut hole) to an area shape.
void | addPart(SeShape srcShape) Adds a new part to the shape.
SeShape | asLine() Returns a shape of type line, using a shape of any type.
SeShape | asPoint() Returns a shape of type point, using a shape of any type.
SeShape | asPolygon() Returns a shape of type polygon, using a shape of any type.
SeShape | asSimpleLine() Returns a shape of simple line type, using a shape of any type.
SeShape | build(int mode, boolean dissolve, int match) Assembles a linestring or area shape from the calling shape, which must be a (spagetti) line shape.
double | calculateDistance(SeShape secShape, boolean insideTest) Returns the closest distance between two shapes.
void | changePath(SDEPoint firstPoint, SDEPoint midPoint, SDEPoint lastPoint, SDEPoint[] pointList) Replaces a path in the source shape with a new path.
SeShape | clip(SeExtent env) Returns the intersection (logical AND of space) of the shape and a supplied rectangular envelope.
java.lang.Object | clone() Returns a copy of the shape.
void | deleteIsland(SDEPoint point) Deletes the island ring that contains the specified point from the source shape.
void | deletePart(int partNumber) Deletes the specified part of a multipart shape.
void | deletePath(SDEPoint firstPoint, SDEPoint midPoint, SDEPoint lastPoint) Deletes a path from the calling shape.
void | deletePoint(SDEPoint point) Deletes all occurrences of the specified point in the shape.
SeShape | difference(SeShape secondaryShape) The difference function returns the portion of this shape that is not intersected by the secondary shape.
void | extendLine(SDEPoint endpoint, SDEPoint[] points) Extends a linear shape by adding a specified string of points to the beginning or end of the shape.
SeShape | filterCoordinates(double distance) Applies a Douglas_Poiker line generalization to a shape.
SeShape[] | findAlong(double measure) Returns the points or lines along a shape as defined by the shape's measures and the supplied measured value.
SeShape[] | findBetween(double fromMeasure, double toMeasure) Returns the points or lines along a shape as defined by the shape's measures between the given from- and to- values.
long | findRelation(SeShape secondaryShape) Returns a mask defining all the relationships between the calling shape and the supplied shape.
SeShape | generateBuffer(double distance, int maxPts) Generates a buffer around the source shape, and returns the resulting new shape.
SeShape | generateConvexHull() Computes the convex hull polygon for a shape's points.
SeShape | generateFromPart(int partNumber) Generates a new shape from the specified part of a shape.
SDEPoint | generateLabelPoint() Generates a label point for a shape.
void | generateLine(int numPts, int numParts, int[] partOffsets, SDEPoint[] ptArray) Generates a line shape from an array of points.
void | generatePoint(int numPts, SDEPoint[] ptArray) Generates a point shape from an array of points.
void | generatePolygon(int numPts, int numParts, int[] partOffsets, SDEPoint[] ptArray) Turns this shape into a polygon shape from an array of points.
void | generateRectangle(SeExtent ext) Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.
void | generateSimpleLine(int numPts, int numParts, int[] partOffsets, SDEPoint[] ptArray) Generates a simple line shape from an array of points.
double | get3DLength() Returns the three-dimensional length of a shape.
double | get3DLength(int partNumber) Returns the three-dimensional length of a shape part.
double[][][] | getAllCoords() Returns the world coordinates as an array of parts/subparts/coordinates.
double[][][] | getAllCoords(int turn) Returns the world coordinates as an array of parts/subparts/coordinates.
java.util.ArrayList | getAllPoints(int rotation, boolean wantSubpartOffsets) Retrieves all the points as well as part offsets and subpart offsets of the shape.
SeShapeAnno | getAnno() Returns the shape's annotation.
double | getArea() Returns the area of a shape.
com.esri.sde.sdk.client.SeShapeCad | getCad() Returns the shape's cad.
SeCoordinateReference | getCoordRef() Returns the coordinate reference of a shape.
SeExtent | getExtent() Returns the extent of a shape.
SeExtent | getExtent(int partNum) Returns the extent of a shape or a shape part.
SeObjectId | getFeatureId() Returns the shape's unique id.
double | getLength() Returns the length of a shape.
int | getMaxM() Returns the maximum measure value.
int | getMaxZ() Returns the maximum z coordinate value.
int | getMinM() Returns the minimum measure value.
int | getMinZ() Returns the minimum z coordinate value.
double[] | getMRange() Returns the range of measure values of a shape.
double[] | getMRange(int partNumber) Returns the range of measure values of a shape part.
int | getNumOfPoints() Returns the number of points of the shape.
int | getNumParts() Returns the number of parts in a shape.
int | getNumPoints(int partNum, int subPartNum) Returns the number of points in a shape or a shape part.
int | getNumSubParts(int partNum) Returns the number of subparts of a part in a shape.
java.util.ArrayList | getPoints(int rotation, int partNumber) Returns the point array of the specified part, and the subpart offsets, if there are any.
int | getType()
double[] | getZRange() Returns the range of elevation values of a shape.
double[] | getZRange(int partNumber) Returns the range of elevation values of a shape part.
boolean | hasAnno() Returns TRUE if the supplied shape has annotation.
boolean | hasCad() Returns TRUE if the supplied shape has cad.
void | insertPart(int partNum, SeShape srcShape) Inserts all of the parts of a given shape into the calling shape at the specified part index.
void | interpolateByMeasures(double delta) Interpolates the shape by adding points based on measure deltas.
SeShape[] | intersect(SeShape secondaryShape) Returns the intersection (logical AND NOT of space) of two shapes.
boolean | is3D() Returns TRUE if the supplied shape has an elevation array.
boolean | isContaining(SeShape secondaryShape) Returns TRUE if the primary shape wholly contains the secondary shape.
boolean | isCrossing(SeShape secondaryShape) Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.
boolean | isDisjoint(SeShape secondaryShape) Returns TRUE if the intersection of two shapes is empty.
boolean | isEqual(SeShape secondaryShape) Returns TRUE if the two supplied shapes are identical.
boolean | isLine() Returns TRUE if the supplied shape is type line.
boolean | isMeasured() Returns TRUE if the supplied shape has a measure array.
boolean | isMultiPart() Returns TRUE if the supplied shape has multiple parts.
boolean | isNil() Returns TRUE if the supplied shape is nil(empty).
boolean | isOverlapping(SeShape secondaryShape) Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.
boolean | isPoint() Returns TRUE if the supplied shape is type point.
boolean | isPolygon() Returns TRUE if the supplied shape is type polygon.
boolean | isSimpleLine() Returns TRUE if the supplied shape is type simple line.
boolean | isTouching(SeShape secondaryShape) Returns TRUE if the two supplied shapes hsare a common boundary.
boolean | isWithin(SeShape secondaryShape) Returns TRUE if this shape is wholly contained within secondaryShape.
void | makeNil() Makes this shape a nil shape.
void | movePoint(SDEPoint fromPoint, SDEPoint toPoint) Moves all occurrences of a single point to a new location.
SeShape[] | overlay(SeShape secondaryShape) Overlays two shapes.
void | replacePart(int partNum, SeShape srcShape) Replaces a shape part with another shape.
void | replacePathWithArc(SDEPoint firstPoint, SDEPoint midPoint, SDEPoint lastPoint, double radius, int arcSegs) Replaces a line or path with a circular arc represented as a series of vectors.
void | setAnno(SeShapeAnno anno) Sets the shape's annotation.
void | setCad(com.esri.sde.sdk.client.SeShapeCad cad) Sets the shape's cad.
void | setCoordRef(SeCoordinateReference cRef) Sets the coordinate reference of the shape.
SeShape | symmetricalDifference(SeShape secondaryShape) Returns the symmetrical difference (logical XOR of space) of two shapes.
java.awt.geom.GeneralPath | toGeneralPath() Returns a shape as a Java path object for Java graphics.
java.awt.geom.GeneralPath | toGeneralPath(int rotation) Returns a shape as a Java path object for Java graphics with a specified rotation.
java.lang.String | toString() Returns a string description of the shape.
SeShape | union(SeShape secondaryShape) Returns the union (logical OR of space) of two shapes.
void | writeCompressedFeature(com.esri.sde.sdk.client.XdrOutputStream out)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Field Detail

TYPE_NIL

public static final int TYPE_NIL

TYPE_POINT

public static final int TYPE_POINT

TYPE_LINE

public static final int TYPE_LINE

TYPE_SIMPLE_LINE

public static final int TYPE_SIMPLE_LINE

TYPE_POLYGON

public static final int TYPE_POLYGON

TYPE_MULTI_POINT

public static final int TYPE_MULTI_POINT

TYPE_MULTI_LINE

public static final int TYPE_MULTI_LINE

TYPE_MULTI_SIMPLE_LINE

public static final int TYPE_MULTI_SIMPLE_LINE

TYPE_MULTI_POLYGON

public static final int TYPE_MULTI_POLYGON

TURN_DEFAULT

public static final int TURN_DEFAULT

TURN_LEFT

public static final int TURN_LEFT
Left hand rotation - Polygon interior is on the Left

TURN_RIGHT

public static final int TURN_RIGHT
Right hand rotation - Polygon interior is on the right.

SE_BUILD_POLYGONS_FROM_ALL_RINGS

public static final int SE_BUILD_POLYGONS_FROM_ALL_RINGS
Uses all segments in the shape to create a polygon.

SE_BUILD_POLYGONS_FROM_COUNTERCLOCKWISE_RINGS

public static final int SE_BUILD_POLYGONS_FROM_COUNTERCLOCKWISE_RINGS
Uses only the counterclockwise lines in the shape to create a polygon.

SE_BUILD_POLYGONS_FROM_CLOCKWISE_RINGS

public static final int SE_BUILD_POLYGONS_FROM_CLOCKWISE_RINGS
Uses only the clockwise lines in the shape to create a polygon.

SE_BUILD_SIMPLELINES

public static final int SE_BUILD_SIMPLELINES
Converts a set of spagetti lines into a multipart simple line shape.

SE_MATCH_ZEDS

public static final int SE_MATCH_ZEDS
Match the Z coordinate values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES

SE_MATCH_MEASURES

public static final int SE_MATCH_MEASURES
Match the measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES

SE_MATCH_ZEDS_AND_MEASURES

public static final int SE_MATCH_ZEDS_AND_MEASURES
Match the z coordinate and measure values when connecting line segments in build when build mode is SE_BUILD_SIMPLELINES

RM_LINE_CROSS

public static final int RM_LINE_CROSS
LINE CROSS Shape Relationship returned in findRelation.

RM_COMMON_POINT

public static final int RM_COMMON_POINT
COMMON_POINT Shape Relationship returned in findRelation.

RM_EMBEDDED_POINT

public static final int RM_EMBEDDED_POINT
VERTICE EMBEDDED IN LINE Shape Relationship returned in findRelation.

RM_CBOUND_SAME

public static final int RM_CBOUND_SAME
COMMON EDGE SAME DIRECTION Shape Relationship returned in findRelation.

RM_CBOUND_DIFF

public static final int RM_CBOUND_DIFF
COMMON EDGE OPPOSITE DIRECTION Shape Relationship returned in findRelation.

RM_PARALLEL_OVERLAPPING

public static final int RM_PARALLEL_OVERLAPPING
PARALLEL OVERLAPPING LINES Shape Relationship returned in findRelation.

RM_IDENTICAL

public static final int RM_IDENTICAL
PRIMARY == SECONDARY Shape Relationship returned in findRelation.

RM_AREA_INTERSECT

public static final int RM_AREA_INTERSECT
AREA_INTERSECTION Shape Relationship returned in findRelation.

RM_INTERIOR_INTERSECT

public static final int RM_INTERIOR_INTERSECT
INTERIOR INTERSECTION Shape Relationship returned in findRelation.

RM_BOUNDARY_INTERSECT

public static final int RM_BOUNDARY_INTERSECT
BOUNDARY INTERSECTION Shape Relationship returned in findRelation.

RM_PRIM_LEP_INTERIOR

public static final int RM_PRIM_LEP_INTERIOR
PRIMARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.

RM_SEC_LEP_INTERIOR

public static final int RM_SEC_LEP_INTERIOR
SECONDARY ENDPOINT TOUCHES INTERIOR Shape Relationship returned in findRelation.

RM_PRIM_CONTAINED

public static final int RM_PRIM_CONTAINED
PRIMARY CONTAINED BY SECONDARY Shape Relationship returned in findRelation.

RM_SEC_CONTAINED

public static final int RM_SEC_CONTAINED
SECONDARY CONTAINED BY PRIMARY Shape Relationship returned in findRelation.

RM_TESTS_PERFORMED

public static final int RM_TESTS_PERFORMED
Any tests performed? Shape Relationship returned in findRelation.
Constructor Detail

SeShape

public SeShape()
Creates a Nil Shape.

SeShape

public SeShape(SeCoordinateReference cRef)
        throws SeException
Creates a Nil shape with a coordinate reference.
Method Detail

getArea

public double getArea()
               throws SeException
Returns the area of a shape. This method calls native code in the Geometry package.

getExtent

public SeExtent getExtent()
                   throws SeException
Returns the extent of a shape.

getExtent

public SeExtent getExtent(int partNum)
                   throws SeException
Returns the extent of a shape or a shape part.

getLength

public double getLength()
                 throws SeException
Returns the length of a shape. This method calls native code in the Geometry package.

getMRange

public double[] getMRange()
                   throws SeException
Returns the range of measure values of a shape. The minimum M and maximum M values are returned in an array of 2 doubles. The first entry [0] is the min value and the second [1] is the max value. If the shape has no measures, an array of -1.0,-1.0 will be returned.

getMRange

public double[] getMRange(int partNumber)
                   throws SeException
Returns the range of measure values of a shape part. The minimum M and maximum M values are returned in an array of 2 doubles. The first entry [0] is the min value and the second [1] is the max value. If the shape has no measures, an array of -1.0,-1.0 will be returned.
Parameters:
partNumber - The number of the part to return the M range for.

getNumParts

public int getNumParts()
                throws SeException
Returns the number of parts in a shape.

getNumSubParts

public int getNumSubParts(int partNum)
                   throws SeException
Returns the number of subparts of a part in a shape.
Parameters:
The - number of the part to get the subpart count for.

getNumPoints

public int getNumPoints(int partNum,
                        int subPartNum)
                 throws SeException
Returns the number of points in a shape or a shape part.

getAllPoints

public java.util.ArrayList getAllPoints(int rotation,
                                        boolean wantSubpartOffsets)
                                 throws SeException
Retrieves all the points as well as part offsets and subpart offsets of the shape. The ArrayList returned holds the points, partOffsets, and optional subpartOffsets, in that order.
Parameters:
rotation - The winding-rule used to determine the order of the points returned for an area shape.
wantSubpartOffsets - do you want the subpart offsets for an area shape?
Returns:
ArrayList list of points, partOffsets, and optionally, the subpartOffsets

getPoints

public java.util.ArrayList getPoints(int rotation,
                                     int partNumber)
                              throws SeException
Returns the point array of the specified part, and the subpart offsets, if there are any. The ArrayList returned holds the points as the first element and subpartOffsets as the second. If there are no subpart offsets, the ArrayList will only have one element - the array of points.
Parameters:
rotation - The winding-rule used to determine the order of the points returned for an area shape.

get3DLength

public double get3DLength()
                   throws SeException
Returns the three-dimensional length of a shape. If the shape is a Nil shape, a point shape, or a shape with no z-coordinates, 0.0 is returned.
Returns:
double The 3D of the entire shape.

get3DLength

public double get3DLength(int partNumber)
                   throws SeException
Returns the three-dimensional length of a shape part. If the shape is a Nil shape, a point shape, or a shape with no z-coordinates, 0.0 is returned.
Parameters:
partNumber - The number of the part to return the length of.

getZRange

public double[] getZRange()
                   throws SeException
Returns the range of elevation values of a shape. The minimum Z and maximum z values are returned in an array of 2 doubles. The first entry [0] is the min value and the second [1] is the max value. If the shape has no z coordinates, an array of 0.0,0.0 will be returned.

getZRange

public double[] getZRange(int partNumber)
                   throws SeException
Returns the range of elevation values of a shape part. The minimum Z and maximum z values are returned in an array of 2 doubles. The first entry [0] is the min value and the second [1] is the max value. If the shape has no z coordinates, an array of 0.0,0.0 will be returned.
Parameters:
partNumber - The number of the part to return the Z range for.

addIsland

public void addIsland(SDEPoint[] pts)
               throws SeException
Adds and island ring (donut hole) to an area shape.
Parameters:
pts - An array of SDEPoints defining the island.

addPart

public void addPart(SeShape srcShape)
             throws SeException
Adds a new part to the shape.

build

public SeShape build(int mode,
                     boolean dissolve,
                     int match)
              throws SeException
Assembles a linestring or area shape from the calling shape, which must be a (spagetti) line shape. build mode options:

SE_BUILD_POLYGONS_FROM_CLOCKWISE_RINGS - Uses only the clockwise lines in the shape to create a polygon.

SE_BUILD_POLYGONS_FROM_COUNTERCLOCKWISE_RINGS - Uses only the counterclockwise lines in the shape to create a polygon.

SE_BUILD_POLYGONS_FROM_ALL_RINGS - Uses all lines in the shape to create a polygon.

SE_BUILD_SIMPLELINES - Converts a set of spagetti lines into a multipart simple line shape

If the dissolve flag is TRUE, then all duplicate line segments are eliminated.

Match values: Used when build mode is SE_BUILD_SIMPLELINES

SE_MATCH_ZEDS - Match the z coordinate values when connecting line segments

SE_MATCH_MEASURES - Match the measure values when connecting line segments

SE_MATCH_ZEDS_AND_MEASURES - Match the z coordinate and measure values

Parameters:
mode - the type of shape to build.
dissolve - indicates whether or not duplicate line segments should be removed.
match - determines if matches are to be made including zed and/or measure values.

changePath

public void changePath(SDEPoint firstPoint,
                       SDEPoint midPoint,
                       SDEPoint lastPoint,
                       SDEPoint[] pointList)
                throws SeException
Replaces a path in the source shape with a new path. T The start and end points of the original path are maintained. If the new path described by the pointList argument is null, the points between the firstPoint and the lastPoint will be eliminated. The midPoint parameter is important when working with area shapes. The midPoint identifies which section of the polygon to change, since there is more than one path between the firstPoint and lastPoint.
Parameters:
firstPoint - The first point in the path to change.
midPoint - The midpoint of the path to change. (optional)
lastPoint - The last point in the path to change.
pointList - The points of the new path.

deleteIsland

public void deleteIsland(SDEPoint point)
                  throws SeException
Deletes the island ring that contains the specified point from the source shape. The calling shape must be an area shape.
Parameters:
point - The point identifying the island to delete from the area shape.

deletePart

public void deletePart(int partNumber)
                throws SeException
Deletes the specified part of a multipart shape. Any remaining parts in the shape are shifted to replace the deleted part. If the shape contains a single part that was deleted, the shape becomes a nil shape.
Parameters:
partNumber - The number of the part to delete.

deletePath

public void deletePath(SDEPoint firstPoint,
                       SDEPoint midPoint,
                       SDEPoint lastPoint)
                throws SeException
Deletes a path from the calling shape. The path is specified by a starting point, a midpoint, and an end point. The firstPoint and lastPoint are not removed.
Parameters:
firstPoint - Start point coordinates
midPoint - Coordinates of any point along the path
lastPoint - End point coordinates

deletePoint

public void deletePoint(SDEPoint point)
                 throws SeException
Deletes all occurrences of the specified point in the shape.
Parameters:
point - Coordinates of the point to remove

extendLine

public void extendLine(SDEPoint endpoint,
                       SDEPoint[] points)
                throws SeException
Extends a linear shape by adding a specified string of points to the beginning or end of the shape.
Parameters:
endpoint - The point at which to extend the linear shape.
points - The list of points to add to the linear shape.

filterCoordinates

public SeShape filterCoordinates(double distance)
                          throws SeException
Applies a Douglas_Poiker line generalization to a shape.

insertPart

public void insertPart(int partNum,
                       SeShape srcShape)
                throws SeException
Inserts all of the parts of a given shape into the calling shape at the specified part index. Existing parts in the target shape at or following the specified part number will be shifted to accomodate the newly inserted parts. partNum must be a value between 1 and one greater than the current part count of the callng shape. The srcShape will be added to the end of the calling shape if the partNum is one greater than the part count. If the target shape has two or more parts, the source and target shapes must be of the same shape type. If the operation fails, the target shape is unchanged. Both shapes must have the same coordinate reference.
Parameters:
partNum - The part number of the target shape at which to insert the parts of srcShape.
srcShape - The shape containing the parts to insert into the calling shape.

movePoint

public void movePoint(SDEPoint fromPoint,
                      SDEPoint toPoint)
               throws SeException
Moves all occurrences of a single point to a new location. This method verifies that the new point location does not cause the shape to violate any entity integrity rules.
Parameters:
fromPoint - The point within the shape to move.
toPoint - The point to move the fromPoint to.

replacePart

public void replacePart(int partNum,
                        SeShape srcShape)
                 throws SeException
Replaces a shape part with another shape. If the target shape has two or more parts, the source and target shapes must be of the same shape type. If the operation fails, the target shape is unchanged. Both shapes must have the same coordinate reference.
Parameters:
partNum - The part number of the target shape to replace with the parts of srcShape.
srcShape - The shape containing the parts to replace the part in the calling shape with.

replacePathWithArc

public void replacePathWithArc(SDEPoint firstPoint,
                               SDEPoint midPoint,
                               SDEPoint lastPoint,
                               double radius,
                               int arcSegs)
                        throws SeException
Replaces a line or path with a circular arc represented as a series of vectors. Replaces one or more line segments of a shape with a circular arc whose radius you specify. The arc begins at the firstPoint of the line or path to be replaced and ends at the lastPoint. The arcSegs parameter specifies the number of line segments in a full circle. An arcSegs value of 360 makes lines a `degree` long. The center of the circle made by the radius can be on either side of the line you`re replacing. The two sides of the line are called left and right, determined by the direction of the line. For a line defined as (firstPoint, lastPoint), right and left are defined from firstPoint looking toward lastPoint. If the radius value is positive, the center point of the circle is to the left of a line drawn from the firstPoint to the lastPoint; if negative, the center point is to the right of the line. The absolute value of the radius must be more than one-half the distance between firstPoint and lastPoint. Once you`ve chosen a radius, you still have two arcs to choose from. Imagine a line originating at the center of the circle and sweeping from firstPoint to the lastPoint. There are actually two arcs. One travels clockwise from firstPoint to lastPoint, while the other travels counterclockwise. A positive arcSegs value rotates counterclockwise from the firstPoint. A negative arcSegs value travels clockwise from the firstPoint.
Parameters:
firstPoint - Starting point on the path to replace.
midPoint - The midpoint of the path to replace.
lastPoint - Ending point on the path to replace.
radius - The radius of the arc to replace the identified path with.
arcSegs - Number of segements in a full circle (16-400).

asLine

public SeShape asLine()
               throws SeException
Returns a shape of type line, using a shape of any type.

asPoint

public SeShape asPoint()
                throws SeException
Returns a shape of type point, using a shape of any type.

asPolygon

public SeShape asPolygon()
                  throws SeException
Returns a shape of type polygon, using a shape of any type.

asSimpleLine

public SeShape asSimpleLine()
                     throws SeException
Returns a shape of simple line type, using a shape of any type.

calculateDistance

public double calculateDistance(SeShape secShape,
                                boolean insideTest)
                         throws SeException
Returns the closest distance between two shapes. If the inside test is used, if any part of one of the shapes is inside the other (area) shape, the distance returned is 0.0. If insideness is not tested, the distance calculated will be the closest boundary -to-boundary distance.
Parameters:
secShape - The secondary shape to use in the calculation.
insideTest - if true, the inside test is used.

getFeatureId

public SeObjectId getFeatureId()
                        throws SeException
Returns the shape's unique id.

getType

public int getType()
            throws SeException

getNumOfPoints

public int getNumOfPoints()
                   throws SeException
Returns the number of points of the shape.

getMinZ

public int getMinZ()
            throws SeException
Returns the minimum z coordinate value.

getMaxZ

public int getMaxZ()
            throws SeException
Returns the maximum z coordinate value.

getMinM

public int getMinM()
            throws SeException
Returns the minimum measure value.

getMaxM

public int getMaxM()
            throws SeException
Returns the maximum measure value.

getCoordRef

public SeCoordinateReference getCoordRef()
                                  throws SeException
Returns the coordinate reference of a shape.

setCoordRef

public void setCoordRef(SeCoordinateReference cRef)
                 throws SeException
Sets the coordinate reference of the shape.

getAnno

public SeShapeAnno getAnno()
                    throws SeException
Returns the shape's annotation.

setAnno

public void setAnno(SeShapeAnno anno)
             throws SeException
Sets the shape's annotation.

getCad

public com.esri.sde.sdk.client.SeShapeCad getCad()
                                          throws SeException
Returns the shape's cad. For ESRI internal use only.

setCad

public void setCad(com.esri.sde.sdk.client.SeShapeCad cad)
            throws SeException
Sets the shape's cad. For ESRI internal use only.

hasAnno

public boolean hasAnno()
Returns TRUE if the supplied shape has annotation.

hasCad

public boolean hasCad()
Returns TRUE if the supplied shape has cad. For ESRI internal use only.

generateBuffer

public SeShape generateBuffer(double distance,
                              int maxPts)
                       throws SeException
Generates a buffer around the source shape, and returns the resulting new shape.

generateConvexHull

public SeShape generateConvexHull()
                           throws SeException
Computes the convex hull polygon for a shape's points.

generateFromPart

public SeShape generateFromPart(int partNumber)
                         throws SeException
Generates a new shape from the specified part of a shape.
Parameters:
partNumber - The part identifier.

generateLabelPoint

public SDEPoint generateLabelPoint()
                            throws SeException
Generates a label point for a shape.
Returns:
SDEPoint the generated label point.

generateLine

public void generateLine(int numPts,
                         int numParts,
                         int[] partOffsets,
                         SDEPoint[] ptArray)
                  throws SeException
Generates a line shape from an array of points.

generatePoint

public void generatePoint(int numPts,
                          SDEPoint[] ptArray)
                   throws SeException
Generates a point shape from an array of points.

generatePolygon

public void generatePolygon(int numPts,
                            int numParts,
                            int[] partOffsets,
                            SDEPoint[] ptArray)
                     throws SeException
Turns this shape into a polygon shape from an array of points.

generateRectangle

public void generateRectangle(SeExtent ext)
                       throws SeException
Generates a polygon shape in the form of a rectangle, based on the supplied lower-left and upper-right points.

generateSimpleLine

public void generateSimpleLine(int numPts,
                               int numParts,
                               int[] partOffsets,
                               SDEPoint[] ptArray)
                        throws SeException
Generates a simple line shape from an array of points.

interpolateByMeasures

public void interpolateByMeasures(double delta)
                           throws SeException
Interpolates the shape by adding points based on measure deltas. First, the difference between the start and end points are interpolated based on a specified measure. Then, points are added to the shape using the the measure as an offset. No densification is done on a segement incident on a vertex with an undefined measure value.
Parameters:
delta - The maximum delta of measure values between any two points in the resulting shape.

toGeneralPath

public java.awt.geom.GeneralPath toGeneralPath()
                                        throws SeException
Returns a shape as a Java path object for Java graphics.

toGeneralPath

public java.awt.geom.GeneralPath toGeneralPath(int rotation)
                                        throws SeException
Returns a shape as a Java path object for Java graphics with a specified rotation.

getAllCoords

public double[][][] getAllCoords()
                          throws SeException
Returns the world coordinates as an array of parts/subparts/coordinates. Each part of the shape holds an array of subparts, each of which holds the x and y values of each point in the subpart.

getAllCoords

public double[][][] getAllCoords(int turn)
                          throws SeException
Returns the world coordinates as an array of parts/subparts/coordinates. Each part of the shape holds an array of subparts, each of which holds the x and y values of each point in the subpart.
Parameters:
turn - Can be TURN_DEFAULT, TURN_LEFT, or TURN_RIGHT

writeCompressedFeature

public void writeCompressedFeature(com.esri.sde.sdk.client.XdrOutputStream out)
                            throws java.io.IOException

toString

public java.lang.String toString()
Returns a string description of the shape.
Overrides:
toString in class java.lang.Object

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Returns a copy of the shape.

findAlong

public SeShape[] findAlong(double measure)
                    throws SeException
Returns the points or lines along a shape as defined by the shape's measures and the supplied measured value.

findBetween

public SeShape[] findBetween(double fromMeasure,
                             double toMeasure)
                      throws SeException
Returns the points or lines along a shape as defined by the shape's measures between the given from- and to- values.

isContaining

public boolean isContaining(SeShape secondaryShape)
                     throws SeException
Returns TRUE if the primary shape wholly contains the secondary shape.

isCrossing

public boolean isCrossing(SeShape secondaryShape)
                   throws SeException
Returns TRUE if the intersection of the interiors is a lower dimension than the maximum dimension of the two shapes.

isDisjoint

public boolean isDisjoint(SeShape secondaryShape)
                   throws SeException
Returns TRUE if the intersection of two shapes is empty.

isEqual

public boolean isEqual(SeShape secondaryShape)
                throws SeException
Returns TRUE if the two supplied shapes are identical.

isLine

public boolean isLine()
               throws SeException
Returns TRUE if the supplied shape is type line.

isMeasured

public boolean isMeasured()
                   throws SeException
Returns TRUE if the supplied shape has a measure array.

isMultiPart

public boolean isMultiPart()
                    throws SeException
Returns TRUE if the supplied shape has multiple parts.

isNil

public boolean isNil()
              throws SeException
Returns TRUE if the supplied shape is nil(empty).

isOverlapping

public boolean isOverlapping(SeShape secondaryShape)
                      throws SeException
Returns TRUE if the intersection of two shapes results in an object of the same geometric dimension.

isPoint

public boolean isPoint()
                throws SeException
Returns TRUE if the supplied shape is type point.

isPolygon

public boolean isPolygon()
                  throws SeException
Returns TRUE if the supplied shape is type polygon.

isSimpleLine

public boolean isSimpleLine()
                     throws SeException
Returns TRUE if the supplied shape is type simple line.

is3D

public boolean is3D()
             throws SeException
Returns TRUE if the supplied shape has an elevation array.

isTouching

public boolean isTouching(SeShape secondaryShape)
                   throws SeException
Returns TRUE if the two supplied shapes hsare a common boundary.

isWithin

public boolean isWithin(SeShape secondaryShape)
                 throws SeException
Returns TRUE if this shape is wholly contained within secondaryShape.

makeNil

public void makeNil()
             throws SeException
Makes this shape a nil shape.

findRelation

public long findRelation(SeShape secondaryShape)
                  throws SeException
Returns a mask defining all the relationships between the calling shape and the supplied shape. The mask returns a flag for each of the relation types that is satisfied: equal, touch, cross, intersect, disjoint, and overlap.

RM_LINE_CROSS - Line intersection. The boundaries of shapes intersect. The point of intersection is not a contained vertex for at least one of the shapes.

RM_COMMON_PT - The primary and secondary shapes have at least one point in common.

RM_EMBEDDED_PT - A vertex is embedded in a line.

RM_CBOUND_SAME - A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is the same in both shapes.

RM_CBOUND_DIFF - A common boundary exists between the primary and secondary shapes. The direction of flow (point storage order) of the common boundary is opposite in the shapes.

RM_PARALLEL_OVERLAPPING - Similar to the common boundary masks but one of the shapes has a common boundary with the interior of the other shape.

RM_IDENTICAL - The primary and secondary shapes are identical in terms of shape type and coordinate description.

RM_AREA_INTERSECT - An area intersection exists. At least one of the shapes is an area shape and the other shape is at least partially inside it. Adjacency is not an area intersect.

RM_INTERIOR_INTERSECT - Same as RM_AREA_INTERSECT but applicable to all entity types. The interiors of both shapes must intersect.

RM_BOUNDARY_INTERSECT - The endpoint of a linestring intersects the endpoint of another linestring or the boundary of an area feature.

RM_PRIM_LEP_INTERIOR - The endpoint of the primary feature intersects the interior of the secondary feature. Occurs when a linear feature`s endpoint (primary) intersects a point feature.

RM_SEC_LEP_INTERIOR - The primary feature intersects the endpoint of the secondary feature. Occurs when a point feature (primary) intersects a linear feature`s endpoint.

RM_PRIM_CONTAINED - The primary shape is wholly contained by the secondary shape. If the secondary shape is an area shape, the primary shape is wholly inside the secondary shape`s boundary. If both shapes are linear, the primary shape`s path is wholly included in the secondary shape`s path. If the primary shape is a point shape, the primary shape is one of the secondary shape`s vertices.

RM_SEC_CONTAINED - The secondary shape is wholly contained by the primary shape. If the primary shape is an area shape, the secondary shape is wholly inside the primary shape`s boundary. If both shapes are linear, the secondary shape`s path is wholly included in the primary shape`s path. If the secondary shape is a point shape, the secondary shape is one of the primary shape`s vertices.

Both shapes must have the same coordinate reference.

Parameters:
SeShape - secondaryShape The shape to compare with this one.
Returns:
long mask containing the spatial relationships

overlay

public SeShape[] overlay(SeShape secondaryShape)
                  throws SeException
Overlays two shapes. Both shapes must have the same coordinate reference. An Array of SeShapes is returned with the following contents: element [0] - primary remainder, the portions of the calling shape that do not intersect the secondaryShape. element [1] - secondary remainder, the portions of secondaryShape that do not intersect the calling shape. elements [2]-[?] the portions of the two shapes that are common. If no portion of the two shapes are common, the returned SeShape array will not have more than 2 elements, so check the size of the array to to determine if there are any common shapes.
Parameters:
secondaryShape - The shape to overlay with the calling shape.

intersect

public SeShape[] intersect(SeShape secondaryShape)
                    throws SeException
Returns the intersection (logical AND NOT of space) of two shapes. Both shapes must have the same coordinate reference.
Parameters:
secondaryShape - The shape to intersect with the calling shape.

difference

public SeShape difference(SeShape secondaryShape)
                   throws SeException
The difference function returns the portion of this shape that is not intersected by the secondary shape. This is the logical AND NOT of space. The difference function only operates on shapes of like dimension and returns a collection that has the same dimension as the source shapes. In the event that the source shapes are equal, a NIL shape is returned. Both the calling shape and the given shape must have the same coordinate reference.
Parameters:
secondaryShape - Shape object to take the difference of with calling shape.

symmetricalDifference

public SeShape symmetricalDifference(SeShape secondaryShape)
                              throws SeException
Returns the symmetrical difference (logical XOR of space) of two shapes. Both shapes must have the same coordinate reference.
Parameters:
secondaryShape - Shape object to take the symmetrical difference of with the calling shape.

union

public SeShape union(SeShape secondaryShape)
              throws SeException
Returns the union (logical OR of space) of two shapes. Both shapes must have the same coordinate reference and be of the same type (point/point, line/line, simple line/simple line, polygon/polygon.
Parameters:
secondaryShape - The shape to union with the calling shape.
Returns:
SeShape The result of the union.

clip

public SeShape clip(SeExtent env)
             throws SeException
Returns the intersection (logical AND of space) of the shape and a supplied rectangular envelope. The resulting shape has the same dimension of the calling shape, or may be a Nil shape if the shape does not intersect the envelope.
Parameters:
env - The envelope to intersect with the shape.
Returns:
SeShape The result of the clip operation.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeShapeAnno

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeShapeAnno

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeShapeAnno
public class SeShapeAnno
extends com.esri.sde.sdk.client.SeServerObj

Client side annotation utility functions

Field Summary
static int | SE_ANNO_ALIGN_AUTOMATIC
static int | SE_ANNO_ALIGN_CENTER
static int | SE_ANNO_ALIGN_DEFAULT
static int | SE_ANNO_ALIGN_LEFT
static int | SE_ANNO_ALIGN_RIGHT
static int | SE_ANNO_CENTER_CENTER
static int | SE_ANNO_CENTER_LEFT
static int | SE_ANNO_CENTER_RIGHT
static int | SE_ANNO_LOWER_CENTER
static int | SE_ANNO_LOWER_LEFT
static int | SE_ANNO_LOWER_RIGHT
static int | SE_ANNO_UPPER_CENTER
static int | SE_ANNO_UPPER_LEFT
static int | SE_ANNO_UPPER_RIGHT
Constructor Summary
SeShapeAnno()
Creates annotation object with default values.
Method Summary
java.lang.Object | duplicate() Creates a copy of annotation object.
int | getAlignment() Returns the alignment of a specific annotation.
double | getGapRatio() Returns the annotation gap ratio.
double | getHeight() Returns the annotation height.
int | getJustification() Returns the annotation justification.
SeShape | getLeader() Returns the annotation leader shape.
int | getLevel() Returns the annotation level.
SeShape | getPlacement() Returns the annotation placement shape.
int | getSymbol() Returns the annotation symbol.
java.lang.String | getText() Returns the annotation text.
double | getXOffset() Returns the annotation x offset.
double | getYOffset() Returns the annotation y offset.
void | setAlignment(int alignment) Sets the alignment type forannotation.
void | setGapRatio(double gapRatio) Sets the annotation gap ratio.
void | setHeight(double height) Sets the annotation height.
void | setJustification(int justification) Sets the annotation justification.
void | setLeader(SeShape leader) Sets the annotation leader shape.
void | setLevel(int level) Sets the annotation level.
void | setPlacement(SeShape pShape) Sets the annotation placement shape.
void | setSymbol(int symbol) Sets the annotation symbol.
void | setText(java.lang.String text) Sets the annotation text.
void | setXOffset(double offset) Sets the annotation x offset.
void | setYOffset(double offset) Sets the annotation y offset.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_ANNO_UPPER_LEFT

public static final int SE_ANNO_UPPER_LEFT

SE_ANNO_UPPER_CENTER

public static final int SE_ANNO_UPPER_CENTER

SE_ANNO_UPPER_RIGHT

public static final int SE_ANNO_UPPER_RIGHT

SE_ANNO_CENTER_LEFT

public static final int SE_ANNO_CENTER_LEFT

SE_ANNO_CENTER_CENTER

public static final int SE_ANNO_CENTER_CENTER

SE_ANNO_CENTER_RIGHT

public static final int SE_ANNO_CENTER_RIGHT

SE_ANNO_LOWER_LEFT

public static final int SE_ANNO_LOWER_LEFT

SE_ANNO_LOWER_CENTER

public static final int SE_ANNO_LOWER_CENTER

SE_ANNO_LOWER_RIGHT

public static final int SE_ANNO_LOWER_RIGHT

SE_ANNO_ALIGN_DEFAULT

public static final int SE_ANNO_ALIGN_DEFAULT

SE_ANNO_ALIGN_LEFT

public static final int SE_ANNO_ALIGN_LEFT

SE_ANNO_ALIGN_RIGHT

public static final int SE_ANNO_ALIGN_RIGHT

SE_ANNO_ALIGN_CENTER

public static final int SE_ANNO_ALIGN_CENTER

SE_ANNO_ALIGN_AUTOMATIC

public static final int SE_ANNO_ALIGN_AUTOMATIC
Constructor Detail

SeShapeAnno

public SeShapeAnno()
Creates annotation object with default values.
Method Detail

duplicate

public java.lang.Object duplicate()
                           throws SeException
Creates a copy of annotation object.
Returns:
SeShapeAnno

getAlignment

public int getAlignment()
Returns the alignment of a specific annotation. The alignment values are: SE_ANNO_ALIGN_DEFAULT SE_ANNO_ALIGN_LEFT SE_ANNO_ALIGN_RIGHT SE_ANNO_ALIGN_CENTER SE_ANNO_ALIGN_AUTOMATIC
Returns:
int

setAlignment

public void setAlignment(int alignment)
                  throws SeException
Sets the alignment type forannotation. The alignment values are: SE_ANNO_ALIGN_DEFAULT SE_ANNO_ALIGN_LEFT SE_ANNO_ALIGN_RIGHT SE_ANNO_ALIGN_CENTER SE_ANNO_ALIGN_AUTOMATIC
Parameters:
alignment - the annotation alignment value.

getJustification

public int getJustification()
Returns the annotation justification. The alignment values are: SE_ANNO_UPPER_LEFT SE_ANNO_UPPER_CENTER SE_ANNO_UPPER_RIGHT SE_ANNO_CENTER_LEFT SE_ANNO_CENTER_CENTER SE_ANNO_CENTER_RIGTH SE_ANNO_LOWER_LEFT SE_ANNO_LOWER_CENTER SE_ANNO_LOWER_RIGHT
Returns:
int

setJustification

public void setJustification(int justification)
Sets the annotation justification. The alignment values are: SE_ANNO_UPPER_LEFT SE_ANNO_UPPER_CENTER SE_ANNO_UPPER_RIGHT SE_ANNO_CENTER_LEFT SE_ANNO_CENTER_CENTER SE_ANNO_CENTER_RIGTH SE_ANNO_LOWER_LEFT SE_ANNO_LOWER_CENTER SE_ANNO_LOWER_RIGHT
Parameters:
justification - the annotation justification

getLeader

public SeShape getLeader()
Returns the annotation leader shape.
Returns:
SeShape

setLeader

public void setLeader(SeShape leader)
Sets the annotation leader shape.
Parameters:
leader - the leader shape.

getPlacement

public SeShape getPlacement()
Returns the annotation placement shape.
Returns:
SeShape

setPlacement

public void setPlacement(SeShape pShape)
Sets the annotation placement shape.
Parameters:
pShape - the placement shape.

getLevel

public int getLevel()
Returns the annotation level.
Returns:
int

setLevel

public void setLevel(int level)
Sets the annotation level.
Parameters:
level - the annotation level

getXOffset

public double getXOffset()
Returns the annotation x offset.
Returns:
double

setXOffset

public void setXOffset(double offset)
Sets the annotation x offset.
Parameters:
offset - the annotation x offset.

getYOffset

public double getYOffset()
Returns the annotation y offset.
Returns:
double

setYOffset

public void setYOffset(double offset)
Sets the annotation y offset.
Parameters:
offset - the annotation y offset.

getText

public java.lang.String getText()
Returns the annotation text.
Returns:
double

setText

public void setText(java.lang.String text)
Sets the annotation text.
Parameters:
text - the annotation text.

getGapRatio

public double getGapRatio()
Returns the annotation gap ratio.
Returns:
double

setGapRatio

public void setGapRatio(double gapRatio)
Sets the annotation gap ratio.
Parameters:
gapRatio - the annotation gap ration

getHeight

public double getHeight()
Returns the annotation height.
Returns:
double

setHeight

public void setHeight(double height)
Sets the annotation height.
Parameters:
height - the annotation height.

getSymbol

public int getSymbol()
Returns the annotation symbol.
Returns:
int

setSymbol

public void setSymbol(int symbol)
Sets the annotation symbol.
Parameters:
symbol - the annotation symbol.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface SeShapeCBMethod

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Interface SeShapeCBMethod

public interface SeShapeCBMethod

Create your own calculus-based shape comparison method by imlementing this interface. Then use the SeFilter.METHOD_CBM comparison method. the implementation should have these fields: int _primaryEntityType; int _secondaryEntityType; int _mask; int[][] _sectDims;

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SeShapeFilter

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeShapeFilter

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeFilter
              |
              +--com.esri.sde.sdk.client.SeShapeFilter
public class SeShapeFilter
extends SeFilter

Represents a spatial filter that contains a geometric shape to be used as the constraint.

Fields inherited from class com.esri.sde.sdk.client.SeFilter
METHOD_AI, METHOD_AI_NO_ET, METHOD_AI_OR_ET, METHOD_CBM, METHOD_COMMON, METHOD_CP, METHOD_CP_OR_LCROSS, METHOD_ENVP, METHOD_ENVP_BY_GRID, METHOD_ET_OR_AI, METHOD_ET_OR_II, METHOD_IDENTICAL, METHOD_II, METHOD_II_NO_ET, METHOD_II_OR_ET, METHOD_LCROSS, METHOD_LCROSS_OR_CP, METHOD_PC, METHOD_PC_NO_ET, METHOD_PIP, METHOD_SC, METHOD_SC_NO_ET, ORDER_ATTRIBUTE_FIRST, ORDER_OPTIMIZE, ORDER_SPATIAL_FIRST
Constructor Summary
SeShapeFilter(java.lang.String table, java.lang.String column, SeShape shape, int method)
Constructs a shape filter with truth set to TRUE.
SeShapeFilter(java.lang.String table, java.lang.String column, SeShape shape, int method, boolean truth)
Constructs a shape filter.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeShapeFilter

public SeShapeFilter(java.lang.String table,
                     java.lang.String column,
                     SeShape shape,
                     int method)
Constructs a shape filter with truth set to TRUE. Result features must pass the search method.

SeShapeFilter

public SeShapeFilter(java.lang.String table,
                     java.lang.String column,
                     SeShape shape,
                     int method,
                     boolean truth)
Constructs a shape filter.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeShapeIdFilter

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeShapeIdFilter

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeFilter
              |
              +--com.esri.sde.sdk.client.SeShapeIdFilter
public class SeShapeIdFilter
extends SeFilter

The SeShapeIdFilter class allows shapes to be stored, deleted, retrieved, and searched by their shape identifier (FID).

Fields inherited from class com.esri.sde.sdk.client.SeFilter
METHOD_AI, METHOD_AI_NO_ET, METHOD_AI_OR_ET, METHOD_CBM, METHOD_COMMON, METHOD_CP, METHOD_CP_OR_LCROSS, METHOD_ENVP, METHOD_ENVP_BY_GRID, METHOD_ET_OR_AI, METHOD_ET_OR_II, METHOD_IDENTICAL, METHOD_II, METHOD_II_NO_ET, METHOD_II_OR_ET, METHOD_LCROSS, METHOD_LCROSS_OR_CP, METHOD_PC, METHOD_PC_NO_ET, METHOD_PIP, METHOD_SC, METHOD_SC_NO_ET, ORDER_ATTRIBUTE_FIRST, ORDER_OPTIMIZE, ORDER_SPATIAL_FIRST
Constructor Summary
SeShapeIdFilter(java.lang.String table, java.lang.String column, java.lang.String shapeTable, SeObjectId shapeId, int method)
SeShapeIdFilter(java.lang.String table, java.lang.String column, java.lang.String shapeTable, SeObjectId shapeId, int method, boolean truth)
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeShapeIdFilter

public SeShapeIdFilter(java.lang.String table,
                       java.lang.String column,
                       java.lang.String shapeTable,
                       SeObjectId shapeId,
                       int method)
Parameters:
table - the spatial table name
column - the spatial column name
shapeTable - the feature's spatial table
shapeId - an fid for a filter feature
method - the search method to satisfy

SeShapeIdFilter

public SeShapeIdFilter(java.lang.String table,
                       java.lang.String column,
                       java.lang.String shapeTable,
                       SeObjectId shapeId,
                       int method,
                       boolean truth)
Parameters:
table - the spatial table name
column - the spatial column name
shapeTable - the feature's spatial table
shapeId - an fid for a filter feature
method - the search method to satisfy
truth - TRUE to pass method, FALSE if it must not pass
Throws:
java.lang.IllegalArgumentException - if table == null || column == null || shapeTable == null
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeSpatialReference

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeSpatialReference

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeSpatialReference
public class SeSpatialReference
extends com.esri.sde.sdk.client.SeServerObj

Represents the Spatial Reference of an ArcSde layer.

Constructor Summary
SeSpatialReference(SeConnection conn)
Creates a default spatial reference object.
SeSpatialReference(SeConnection conn, SeObjectId srId)
SeSpatialReference constructor with an SeConnection and spatial refernce ID that retrieves the spatial reference information for the specified ID.
Method Summary
void | alter() Alters a spatial reference entry in the spatial_references table.
java.lang.Object | clone()
void | create() Creates a spatial reference entry in the spatial_references table.
void | delete(SeObjectId srid) Deletes a spatial reference entry in the spatial_references table.
SeObjectId | getAuthId() Returns the authority ID for a spatial reference object.
java.lang.String | getAuthName() Returns the authority name for a spatial reference object.
SeCoordinateReference | getCoordRef() Returns the SeCoordinateReference object.
java.lang.String | getDescription() Returns the description of the spatial reference object.
SeObjectId | getSrId() Returns the ID for the supplied spatial reference object.
void | setAuthId(SeObjectId authId) Sets the authority ID of a spatial reference object.
void | setAuthName(java.lang.String authName) Sets the name of the authority for a spatial reference object.
void | setCoordRef(SeCoordinateReference cref) Sets the SeCoordinateReference object.
void | setDescription(java.lang.String desc) Sets the description of the spatial reference object.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeSpatialReference

public SeSpatialReference(SeConnection conn)
                   throws SeException
Creates a default spatial reference object.

SeSpatialReference

public SeSpatialReference(SeConnection conn,
                          SeObjectId srId)
                   throws SeException
SeSpatialReference constructor with an SeConnection and spatial refernce ID that retrieves the spatial reference information for the specified ID.
Parameters:
conn - SeConnection object handle.
srId - the spatial rerefence ID.
Throws:
SeException -
Method Detail

alter

public void alter()
           throws SeException
Alters a spatial reference entry in the spatial_references table.
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException

create

public void create()
            throws SeException
Creates a spatial reference entry in the spatial_references table. The srid (spatial reference ID) is assigned when the entry is added to the spatial_references table. If an exact duplicate of the spatial reference exists, the srid for the existing entry is returned, a new entry isn’t inserted, and the warning exception SE_SPATIALREF_EXISTS is returned.
Throws:
SeException -

delete

public void delete(SeObjectId srid)
            throws SeException
Deletes a spatial reference entry in the spatial_references table.
Throws:
SeException -

setAuthName

public void setAuthName(java.lang.String authName)
                 throws SeException
Sets the name of the authority for a spatial reference object.

getAuthName

public java.lang.String getAuthName()
                             throws SeException
Returns the authority name for a spatial reference object. The authority name property is the name of the standards authority for which the spatial reference is valid.
Returns:
String

setAuthId

public void setAuthId(SeObjectId authId)
Sets the authority ID of a spatial reference object.

getAuthId

public SeObjectId getAuthId()
                     throws SeException
Returns the authority ID for a spatial reference object. The authority ID property is the ID value of the standards authority for which the spatial reference is valid. The authority ID is defined for informational purposes only.
Returns:
SeObjectId

setCoordRef

public void setCoordRef(SeCoordinateReference cref)
                 throws java.lang.CloneNotSupportedException
Sets the SeCoordinateReference object. throws SeExecption

getCoordRef

public SeCoordinateReference getCoordRef()
                                  throws SeException,
                                         java.lang.CloneNotSupportedException
Returns the SeCoordinateReference object.
Returns:
SeCoordinateReference throws SeExecption

setDescription

public void setDescription(java.lang.String desc)
Sets the description of the spatial reference object.

getDescription

public java.lang.String getDescription()
                                throws SeException
Returns the description of the spatial reference object.
Returns:
String

getSrId

public SeObjectId getSrId()
                   throws SeException
Returns the ID for the supplied spatial reference object.
Returns:
SeObjectId
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeSqlConstruct

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeSqlConstruct

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeSqlConstruct
public class SeSqlConstruct
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

An SQL construct is used any time an application needs to specify tables or constraining where clauses in an SDE application.

Constructor Summary
SeSqlConstruct()
Constructor for the SqlConstruct object use the set methods to populate it's fields.
SeSqlConstruct(java.lang.String table)
Constructor for the SqlConstruct object
SeSqlConstruct(java.lang.String[] tables, java.lang.String where)
Creates an SqlConstruct given an array of table names and a where clause.
SeSqlConstruct(java.lang.String table, java.lang.String where)
Creates an SqlConstruct with one table name and where clause.
Method Summary
void | addTable(java.lang.String table) Adds a table name to the list of tables.
java.lang.Object | clone() Clones SeSqlConstruct object.
int | getNumTables() Returns the number of Tables in the construct.
java.lang.String[] | getTables() Returns the Tables in the construct.
java.lang.String | getWhere() Returns the where clause in the construct.
void | setTables(java.lang.String[] tables) Sets the Tables array in the construct.
void | setWhere(java.lang.String where) Sets the where clause in the construct.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeSqlConstruct

public SeSqlConstruct()
Constructor for the SqlConstruct object use the set methods to populate it's fields.

SeSqlConstruct

public SeSqlConstruct(java.lang.String table)
Constructor for the SqlConstruct object
Parameters:
table - The name of the FROM table

SeSqlConstruct

public SeSqlConstruct(java.lang.String table,
                      java.lang.String where)
Creates an SqlConstruct with one table name and where clause.

The where clause must use the SQL syntax supported by the underlying RDBMS; It is not interprted by SDE

Parameters:
table - The table name to be specified
where - The where clause
Throws:
NullPointerException - If table=null or where=null

SeSqlConstruct

public SeSqlConstruct(java.lang.String[] tables,
                      java.lang.String where)
Creates an SqlConstruct given an array of table names and a where clause. The ArcSDE software will construct the from clause with the same order of table names as defined in the array.

The where clause must use the SQL syntax supported by the underlying RDBMS; It is not interprted by SDE

Parameters:
table - The table name to be specified
where - The where clause
Throws:
NullPointerException - If table=null or where=null
Method Detail

addTable

public void addTable(java.lang.String table)
Adds a table name to the list of tables.

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones SeSqlConstruct object.
Returns:
Object
Throws:
java.lang.CloneNotSupportedException -

getNumTables

public int getNumTables()
Returns the number of Tables in the construct.
Returns:
int

getWhere

public java.lang.String getWhere()
Returns the where clause in the construct.
Returns:
String

setWhere

public void setWhere(java.lang.String where)
Sets the where clause in the construct.

getTables

public java.lang.String[] getTables()
Returns the Tables in the construct.
Returns:
String[]

setTables

public void setTables(java.lang.String[] tables)
Sets the Tables array in the construct.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeSSA

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeSSA

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
        |
        +--com.esri.sde.sdk.client.SeSSA
public class SeSSA
extends SeStreamOp

An SSA is an SDE application that runs in the SDE server's process space. Server Side Applications are similar in concept to a DBMS stored procedure, which is a SQL application running in the DBMS kernel. A typical SeSSA operation sequence is: 1) Create an SeSSA object with appropriate parameters 2) Execute 3) If SSA is a query type application - fetch a single SeRow from the SeSSA - Retrieve column values and feature geometry from the fetched SeRow. 4) Close the SeSSA at the end of a series of fetches

See Also:
SeRow

Inner Class Summary
static class SeSSA.SeInputDesc
SeSSA inner class that defines the input .
Constructor Summary
SeSSA(SeConnection conn, boolean queryStream, short numInputs, SeSSA.SeInputDesc[] inDesc, java.util.Vector data, java.lang.String ssaName)
Creates an SeSSA object that initializes a server-side application inside the server process.
Method Summary
SeRow | fetch() Fetches an SeRow of data.
int | getNumColumns() Returns the number of columns on the query.
Methods inherited from class com.esri.sde.sdk.client.SeStreamOp
cancel, close, describeColumn, equivalenceRows, execute, flushBufferedWrites, inProgress, setLogfile, setRowLocking, setSSAFilter, setState, unequivalenceRows
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeSSA

public SeSSA(SeConnection conn,
             boolean queryStream,
             short numInputs,
             SeSSA.SeInputDesc[] inDesc,
             java.util.Vector data,
             java.lang.String ssaName)
      throws SeException
Creates an SeSSA object that initializes a server-side application inside the server process.
Parameters:
conn - SeConnection handle.
queryStream - set to TRUE if SSA fetches data.
numInputs - the number of input parameters the client will send to the SSA.
inDesc - the description of the input data in a SE_INPUT_DESC structure.
data - vector containing an array of data.
ssaName - the server-side apllication library name.
Method Detail

getNumColumns

public int getNumColumns()
                  throws SeException
Returns the number of columns on the query.
Returns:
int

fetch

public SeRow fetch()
            throws SeException
Fetches an SeRow of data.
Returns:
SeRow
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeSSA.SeInputDesc

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeSSA.SeInputDesc

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeSSA.SeInputDesc
Enclosing class:
SeSSA
public static class SeSSA.SeInputDesc
extends com.esri.sde.sdk.client.SeServerObj

SeSSA inner class that defines the input .

Constructor Summary
SeSSA.SeInputDesc()
Method Summary
int | getSize() Returns the size of data.
int | getType() Returns the SDE column type.
void | setSize(int size) Sets the size of data.
void | setType(int type) Sets the SDE column type.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeSSA.SeInputDesc

public SeSSA.SeInputDesc()
Method Detail

getType

public int getType()
Returns the SDE column type.

The possible types are:
TYPE_SMALLINT = 1;
TYPE_INTEGER  = 2;
TYPE_FLOAT    = 3;
TYPE_DOUBLE   = 4;
TYPE_STRING   = 5;
TYPE_BLOB     = 6;
TYPE_DATE     = 7;
TYPE_SHAPE    = 8;
TYPE_RASTER   = 9;

Returns:
int

setType

public void setType(int type)
             throws SeException
Sets the SDE column type.

The possible types are:
TYPE_SMALLINT = 1;
TYPE_INTEGER  = 2;
TYPE_FLOAT    = 3;
TYPE_DOUBLE   = 4;
TYPE_STRING   = 5;
TYPE_BLOB     = 6;
TYPE_DATE     = 7;
TYPE_SHAPE    = 8;
TYPE_RASTER   = 9;

Parameters:
type - input data type.

getSize

public int getSize()
Returns the size of data.
Returns:
int

setSize

public void setSize(int size)
Sets the size of data.
Parameters:
size - the data size.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeState

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeState

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeState
public class SeState
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Field Summary
static int | SE_BASE_STATE_ID
static int | SE_DEFAULT_STATE_ID
static int | SE_NULL_STATE_ID
static int | SE_STATE_DIFF_INSERT Returns all features that were inserted into the source state and that never existed in the differences state.
static int | SE_STATE_DIFF_NOCHANGE_DELETE Returns all features that haven't changed in the source state, but have been deleted in the differences state.
static int | SE_STATE_DIFF_NOCHANGE_UPDATE Returns all features that haven't changed in the source state, but have been updated in the differences state.
static int | SE_STATE_DIFF_NOCHECK Returns all features in the source state.
static int | SE_STATE_DIFF_UPDATE_DELETE Returns all features that have been updated in the source state but deleted in the difference states.
static int | SE_STATE_DIFF_UPDATE_NOCHANGE Returns all features that have been updated in the source state, but unchanged in the differences state.
static int | SE_STATE_DIFF_UPDATE_UPDATE Returns all features that have been updated in both the source and difference states.
static int | SE_VERSION_ACCESS_PRIVATE
static int | SE_VERSION_ACCESS_PROTECTED
static int | SE_VERSION_ACCESS_PUBLIC
Constructor Summary
SeState(SeConnection conn)
SeState constructor with an SeConnection object.
SeState(SeConnection conn, SeObjectId stateId)
SeState constructor with an SeConnection and state Id that retrives the state information for specified ID.
Method Summary
java.lang.Object | clone() Clones the SeState object.
void | close() Closes the state.
void | compressTree() Compresses an instance’s state tree by removing all states that aren’t referenced by a version.
void | create(SeObjectId parentId) Creates a child state from an existing state.
void | delete() Deletes a state.
void | deleteRange(SeObjectId lowStateId, SeObjectId highStateId) Deletes a connected range of states.
void | freeLock() Releases the lock on a state.
java.util.Date | getClosingTime() Returns the closing date and time of a state.
java.util.Date | getCreationTime() Returns the creation date and time of a state.
SeObjectId | getId() Returns the state ID.
SeObjectId[] | getLineage() Returns the lineage of a state as an array consisting of an ordered list of state ids, from the base state to the state's immediate parent.
java.lang.String | getOwner() Returns the state's owner.
SeObjectId | getParentId() Returns the state ID of the parent.
boolean | isOpen() Returns TRUE if state is open.
void | lock() Locks a state.
void | merge(SeObjectId parentStateId, SeObjectId changesStateId) Merges two states to form a new state.
void | open() Opens a state.
void | setId(SeObjectId stateId) Set's the state ID.
void | trimTree(SeObjectId lowStateId, SeObjectId highStateId) Trims the instance's state tree between two specified states.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_BASE_STATE_ID

public static final int SE_BASE_STATE_ID

SE_NULL_STATE_ID

public static final int SE_NULL_STATE_ID

SE_DEFAULT_STATE_ID

public static final int SE_DEFAULT_STATE_ID

SE_VERSION_ACCESS_PUBLIC

public static final int SE_VERSION_ACCESS_PUBLIC

SE_VERSION_ACCESS_PROTECTED

public static final int SE_VERSION_ACCESS_PROTECTED

SE_VERSION_ACCESS_PRIVATE

public static final int SE_VERSION_ACCESS_PRIVATE

SE_STATE_DIFF_NOCHECK

public static final int SE_STATE_DIFF_NOCHECK
Returns all features in the source state. It doesn't check the differences between source state and differences state.

SE_STATE_DIFF_NOCHANGE_UPDATE

public static final int SE_STATE_DIFF_NOCHANGE_UPDATE
Returns all features that haven't changed in the source state, but have been updated in the differences state.

SE_STATE_DIFF_NOCHANGE_DELETE

public static final int SE_STATE_DIFF_NOCHANGE_DELETE
Returns all features that haven't changed in the source state, but have been deleted in the differences state.

SE_STATE_DIFF_UPDATE_NOCHANGE

public static final int SE_STATE_DIFF_UPDATE_NOCHANGE
Returns all features that have been updated in the source state, but unchanged in the differences state.

SE_STATE_DIFF_UPDATE_UPDATE

public static final int SE_STATE_DIFF_UPDATE_UPDATE
Returns all features that have been updated in both the source and difference states.

SE_STATE_DIFF_UPDATE_DELETE

public static final int SE_STATE_DIFF_UPDATE_DELETE
Returns all features that have been updated in the source state but deleted in the difference states.

SE_STATE_DIFF_INSERT

public static final int SE_STATE_DIFF_INSERT
Returns all features that were inserted into the source state and that never existed in the differences state.
Constructor Detail

SeState

public SeState(SeConnection conn)
        throws SeException
SeState constructor with an SeConnection object.
Parameters:
conn - SeConnection object handle.
Throws:
SeException -

SeState

public SeState(SeConnection conn,
               SeObjectId stateId)
        throws SeException
SeState constructor with an SeConnection and state Id that retrives the state information for specified ID. Use SE_BASE_STATE_ID in the state_id parameter to retrieve the root of the state tree.
Parameters:
conn - SeConnection object handle.
stateId - the state ID.
Throws:
SeException -
SeException -
Method Detail

close

public void close()
           throws SeException
Closes the state. Only the owner or the ArcSDE DBA may close a state.
Throws:
SeException -

compressTree

public void compressTree()
                  throws SeException
Compresses an instance’s state tree by removing all states that aren’t referenced by a version. Branches not referenced by a version are removed and non-branching sequences between versions are trimmed. Currently, only the DBA can perform this operation.
Throws:
SeException -

create

public void create(SeObjectId parentId)
            throws SeException
Creates a child state from an existing state. The parent state must be closed and owned by the current user or public, or the current user is the ArcSDE DBA.
Parameters:
parentId - the parent state ID.
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones the SeState object.
Returns:
Object
Throws:
SeException -

delete

public void delete()
            throws SeException
Deletes a state. The state must be a leaf node and can't be a parent to another state. The current user must be the owner of the state or the ArcSDE DBA.
Throws:
SeException -

deleteRange

public void deleteRange(SeObjectId lowStateId,
                        SeObjectId highStateId)
                 throws SeException
Deletes a connected range of states. The high state id must be a leaf node and can't be a parent to another stat. All the states that are in the path that connects the lowStateId to the highStateId should not have more than one child state each, and should not be associated with a version. The current user must be the owner of the state or the ArcSDE DBA. All entries in the instance's adds, deletes, and equivalences tables for all the states will be deleted.
Parameters:
lowStateId - the ID of the first state to delete.
highStateId - the ID of the last state to delete.
Throws:
SeException -

lock

public void lock()
          throws SeException
Locks a state. Only the owner or ArcSDE DBA can lock a state.
Throws:
SeException -

freeLock

public void freeLock()
              throws SeException
Releases the lock on a state.
Throws:
SeException -

merge

public void merge(SeObjectId parentStateId,
                  SeObjectId changesStateId)
           throws SeException
Merges two states to form a new state. The new state is the child of the parent state with the changes of the second state. Both input states must have the same parent state. When a row has been changed in both parent and second states, the row from the changes state is used. The parent and changes states must be open or owned by the current user unless the current user is the ArcSDE DBA.
Parameters:
parentStateId - the parent state ID.
changesStateId - the state ID of changed state.
Throws:
SeException -

open

public void open()
          throws SeException
Opens a state. The state cannot have any children. Only the owner or the ArcSDE DBA may open a state.
Throws:
SeException -

trimTree

public void trimTree(SeObjectId lowStateId,
                     SeObjectId highStateId)
              throws SeException
Trims the instance's state tree between two specified states. Both low and high states must be in a consistent state. The current user must be the owner of the state or the ArcSDE DBA.
Parameters:
lowStateId - the ID of the first state to delete.
highStateId - the ID of the last state to delete.
Throws:
SeException -

getClosingTime

public java.util.Date getClosingTime()
Returns the closing date and time of a state.
Returns:
java.util.Date

getCreationTime

public java.util.Date getCreationTime()
Returns the creation date and time of a state.
Returns:
java.util.Date

getId

public SeObjectId getId()
Returns the state ID.
Returns:
SeObjectId

setId

public void setId(SeObjectId stateId)
           throws SeException
Set's the state ID.

getParentId

public SeObjectId getParentId()
Returns the state ID of the parent.
Returns:
SeObjectId

getLineage

public SeObjectId[] getLineage()
Returns the lineage of a state as an array consisting of an ordered list of state ids, from the base state to the state's immediate parent.
Returns:
SeObjectId[]

getOwner

public java.lang.String getOwner()
Returns the state's owner.
Returns:
String

isOpen

public boolean isOpen()
Returns TRUE if state is open.
Returns:
boolean
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeStreamOp

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeStreamOp

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
Direct Known Subclasses:
SeDelete, SeInsert, SeQuery, SeSSA, SeUpdate
public abstract class SeStreamOp
extends java.lang.Object

Constructor Summary
SeStreamOp()
Method Summary
void | cancel(boolean reset) Cancels the current operation on the stream.
void | close() Closes the query and releases the underlying stream back to the stream pool.
SeColumnDefinition | describeColumn(int columnNum) Describes a given column by returning the SeColumnDefinition.
void | equivalenceRows(java.lang.String table, SeObjectId[] rowIdList, boolean reciprocal) Declares a set of rows in the source state to be equivalent to the version of those rows in the difference state.
void | execute() Tells the server to execute a stream operation.
void | flushBufferedWrites() Flushes any outstanding insert/update buffers.
boolean | inProgress() Determines if the stream operation is in use.
void | setLogfile(SeLog log, boolean logfileOnly) Sets a logfile for auto-logging.
void | setRowLocking(int lockActions) Sets the row locking environment for a stream.
void | setSSAFilter(java.lang.String appLibraryName, java.lang.String initStr) Sets a server-side application filter on a stream.
void | setState(SeObjectId sourceId, SeObjectId differencesId, int differencesType) Sets state constraints for input and output stream operations.
void | unequivalenceRows(java.lang.String table, SeObjectId[] rowIdList, boolean reciprocal) Declares a set of rows in a source state to be no longer equivalent to the version of those rows in the difference state.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeStreamOp

public SeStreamOp()
Method Detail

describeColumn

public SeColumnDefinition describeColumn(int columnNum)
                                  throws SeException
Describes a given column by returning the SeColumnDefinition. Column numbers are sequential left to right, starting at zero. Get an array of SeColumnDefinitions resulting from an executed query through the SeRow.getColumns() method.
Parameters:
columnNum - column position 0-n
Returns:
SeColumnDefinition the definition of the column at position columnNum.

inProgress

public boolean inProgress()
                   throws SeException
Determines if the stream operation is in use.

execute

public void execute()
             throws SeException
Tells the server to execute a stream operation.

flushBufferedWrites

public void flushBufferedWrites()
                         throws SeException
Flushes any outstanding insert/update buffers.

cancel

public void cancel(boolean reset)
            throws SeException
Cancels the current operation on the stream. If reset is TRUE, the query status is set to INACTIVE. If reset is FALSE the query status is set to CLOSED.

close

public void close()
           throws SeException
Closes the query and releases the underlying stream back to the stream pool. If reset is TRUE, the query status is set to INACTIVE.

setState

public void setState(SeObjectId sourceId,
                     SeObjectId differencesId,
                     int differencesType)
              throws SeException
Sets state constraints for input and output stream operations. If a differenct type is specified, then only features different in the way supplied are returned.

differencesType:

SeState.SE_STATE_DIFF_NOCHECK Returns all features in the source state. It doesn't check the differences between source state and differences state.

SeState.SE_STATE_DIFF_NOCHANGE_UPDATE Returns all features that haven't changed in the source state, but have been updated in the differences state.

SeState.SE_STATE_DIFF_NOCHANGE_DELETE Returns all features that haven't changed in the source state, but have been deleted in the differences state.

SeState.SE_STATE_DIFF_UPDATE_NOCHANGE Returns all features that have been updated in the source state, but unchanged in the differences state.

SeState.SE_STATE_DIFF_UPDATE_UPDATE Returns all features that have been updated in both the source and difference states.

SeState.SE_STATE_DIFF_UPDATE_DELETE Returns all features that have been updated in the source state but deleted in the difference states.

SeState.SE_STATE_DIFF_INSERT Returns all features that were inserted into the source state and that never existed in the differences state.

Parameters:
sourceId - The id of the state to direct input into and take output from.
differencesId - The id of the second state to take differing output from.
differencesType - The type of difference detection requested.
Throws:
SeException -

setLogfile

public void setLogfile(SeLog log,
                       boolean logfileOnly)
                throws SeException
Sets a logfile for auto-logging. If The logfileOnly parameter is set to TRUE - results go to the logfile only. The entire query will be processed at execute time with the feature ids being logged. FALSE - results go to both the logfile and the client. The individual feature ids from each fetched row will be added to the logfile as they are fetched on demand by the client. Note that logfileOnly must be set to FALSE for insert/update operations. In these operations, we don't have ids to log if we don't store the feature in the database. So, logfileOnly will automatically be set to FALSE for insert or update operations.
Parameters:
SeLog - The description of the logfile on the server to log results to.
boolean - send results to logfile only?

setRowLocking

public void setRowLocking(int lockActions)
                   throws SeException
Sets the row locking environment for a stream. The row locking environment remains in effect until the stream is closed with reset TRUE or the stream is freed. The row lock types are: SE_ROWLOCKING_LOCK_ON_QUERY - Rows selected by a query are locked. SE_ROWLOCKING_LOCK_ON_INSERT - New rows are locked when inserted. SE_ROWLOCKING_LOCK_ON_UPDATE - Updated rows are locked. SE_ROWLOCKING_UNLOCK_ON_QUERY - Locks are removed upon query. SE_ROWLOCKING_UNLOCK_ON_UPDATE - Modified rows are unlocked. SE_ROWLOCKING_FILTER_MY_LOCKS - Only rows locked by the user are returned on query. SE_ROWLOCKING_FILTER_OTHER_LOCKS - Only rows locked by other users are returned on query. SE_ROWLOCKING_FILTER_UNLOCKED - Only unlocked rows are returned. SE_ROWLOCKING_LOCK_ONLY - Query operations lock but don't return rows.

setSSAFilter

public void setSSAFilter(java.lang.String appLibraryName,
                         java.lang.String initStr)
                  throws SeException
Sets a server-side application filter on a stream. Once this function is called, subsequent calls to method like execute and fetch will filter data through the SSA functions.
Parameters:
appLibraryName - the server-side application library name.
initStr - the server-side application initialization string.
Throws:
SeException -

equivalenceRows

public void equivalenceRows(java.lang.String table,
                            SeObjectId[] rowIdList,
                            boolean reciprocal)
                     throws SeException
Declares a set of rows in the source state to be equivalent to the version of those rows in the difference state. The declaration may be reciprocal. Both a source state and a differences state must be set by setState().
Parameters:
table - The table name.
rowIdList - The unique ids of the rows to be declared equivalent.
reciprocal - If true, then not only are the rows specified in the source state declared equivalent to the difference state, but the specified rows in the difference state are also declared equivalent to the source state.

unequivalenceRows

public void unequivalenceRows(java.lang.String table,
                              SeObjectId[] rowIdList,
                              boolean reciprocal)
                       throws SeException
Declares a set of rows in a source state to be no longer equivalent to the version of those rows in the difference state. The declaration may be reciprocal. Both a source state and a difference state must be set by setState().
Parameters:
table - The table name.
rowIdList - The unique ids of the rows to be declared equivalent.
reciprocal - If true, then not only are the rows specified in the source state declared unequivalent to the difference state, but the specified rows in the difference state are also declared unequivalent to the source state.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeTable
public class SeTable
extends com.esri.sde.sdk.client.SeServerObj

SeTable - An object that creates/alters/deletes/queries a DBMS table through an sde server.

Inner Class Summary
static class | SeTable.SeTableIdRange
static class | SeTable.SeTableIndexDefs SeTable inner class that stores the index definition information for a table.
static class | SeTable.SeTableLock SeTable inner class that retrieves the locks information for a table.
static class | SeTable.SeTableRowLockInfo SeTable inner class that retrieves the rowlocks information from the server.
static class | SeTable.SeTableStats SeTable inner class that retrieves the statistics information for a column.
Field Summary
static int | SE_TABLE_EXCLUSIVE_SCHEMA_LOCK
static int | SE_TABLE_SHARED_SCHEMA_LOCK
Constructor Summary
SeTable(SeConnection conn, java.lang.String qualifiedTabName)
Table constructor with an SeConnection and qualified table name argument.
SeTable(SeConnection conn, java.lang.String databaseName, java.lang.String ownerName, java.lang.String tableName)
Table constructor with an SeConnection, database, owner and table name argument that qualifies the table in RDBMS.
Method Summary
void | addColumn(SeColumnDefinition columnDef) Adds a column to the table.
void | addMetaData(int recordCount, SeMetaData[] metaData) Adds metadata records.
void | addRowLocks(int numLocks, SeObjectId[] rowIds, SeObjectId stateId) Adds one or more row locks.
void | alterMetaData(int recordCount, SeMetaData[] metaData) Alters metadata records.
void | create(SeColumnDefinition[] columnDefs) Creates the table with specified column definitions and the default configuration keyword.
void | create(SeColumnDefinition[] columnDefs, java.lang.String configKeyword) Creates the table with specified column definitions.
void | createIndex(java.lang.String column, boolean unique, boolean ascending, java.lang.String configKeyword, java.lang.String indexName) Creates a DBMS index on the specified column of a table.
void | createIndexes(short numIndexes, SeTable.SeTableIndexDefs[] indexDefs, java.lang.String configKeyword) Creates DBMS indexes on a table.
void | createMultiVersionView(java.lang.String viewName) Creates a multiversion DBMS view on the specified multiversion table.
void | createPrimaryConstraint(java.lang.String[] columns, java.lang.String constraintName, java.lang.String configKeyword) Creates primary constraint.
void | createUniqueConstraint(java.lang.String[] columns, java.lang.String constraintName, java.lang.String configKeyword) Creates unique constraint.
void | createView(java.lang.String viewName, java.lang.String[] viewColumns, java.lang.String[] tableColumns, SeSqlConstruct sqlC) Creates a DBMS view on a table.
void | delete() Drops a DBMS table.If the table is spatially enabled, all of its associated spatial information for the layer is also deleted.
void | deleteConstraint(java.lang.String constraintName) Deletes the named constraint from specified table.
void | deleteIndex(java.lang.String indexName) Drops a DBMS table index for the specified table.
void | deleteMetaData(int recordCount, SeObjectId[] recordIds) Deletes metadata records.
void | deleteMetaDataByWhere(java.lang.String whereClause) Deletes metadata records filtered by a where clause.
void | deleteMultiVersionView() Deletes a multiversion DBMS view on a multiversion table.
SeColumnDefinition[] | describe() Returns column definitions of the table.This function maps the underlying DBMS data types to ArcSDE data types.
SeTable.SeTableIndexDefs[] | describeIndexes() Returns index definitions.
void | dropColumn(java.lang.String column) Drops a column from the table.
void | freeLock() Frees the lock on a table.
java.lang.String | getDatabase() Returns the database's name.
SeTable.SeTableIdRange | getIds(int numIds) Returns a range of row id values.
SeTable.SeTableLock[] | getLocks() Returns a list of locks info for the table.
SeMetaData[] | getMetaDataInfoList() Returns the meta-data associated with a table.
java.lang.String | getName() Returns the table's name.
java.lang.String | getOwner() Returns the owner's name.
int | getPermissions() Returns the permissions for the table.
java.lang.String | getQualifiedName() Returns the table's name, qualified with the owner and database.
SeTable.SeTableRowLockInfo | getRowLocks() Returns the row locks information.
SeTable.SeTableRowLockInfo | getRowLocksByUser(java.lang.String user) Returns rowlocks set by the specified user.
void | grantAccess(int privilege, boolean grant, java.lang.String user) Grants specified privileges to the specified user.
void | lock(int lockMode) Locks the table.
java.lang.String | qualifyColumn(java.lang.String columnName) Returns a qualified column name.
void | removeRowLocks(int numLocks, SeObjectId[] rowIds, SeObjectId stateId) Deletes one or more row locks.
void | rename(java.lang.String newTableName) Renames the table.
void | returnIds(SeObjectId startId, int numIds) Sends a set of unused id values back to the server.
void | revokeAccess(int privilege, java.lang.String user) Revokes specified privileges from the specified user.
void | truncate() Deletes the data from a table but keeps the table definition.
void | updateDBMSStats(java.lang.String indexName, java.lang.String mode, int tableUpdateMask) Update DBMS statistics on the specified table.If the table is a layer, statistics are generated for all related layer objects including indexes that are specified by tableUpdateMask.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_TABLE_SHARED_SCHEMA_LOCK

public static final int SE_TABLE_SHARED_SCHEMA_LOCK

SE_TABLE_EXCLUSIVE_SCHEMA_LOCK

public static final int SE_TABLE_EXCLUSIVE_SCHEMA_LOCK
Constructor Detail

SeTable

public SeTable(SeConnection conn,
               java.lang.String qualifiedTabName)
        throws SeException
Table constructor with an SeConnection and qualified table name argument. A Connection handle and qualified table name are included as a constructor argument since an SeTable object is always associated with a table in the remote server which is represented by a connection handle.
Parameters:
conn - SeConnection object handle.
qualifiedTabName - qualified table name.
Throws:
SeException -

SeTable

public SeTable(SeConnection conn,
               java.lang.String databaseName,
               java.lang.String ownerName,
               java.lang.String tableName)
        throws SeException
Table constructor with an SeConnection, database, owner and table name argument that qualifies the table in RDBMS.
Parameters:
conn - SeConnection object handle.
databaseName - database name.
ownerName - owner name.
tableName - table name.
Throws:
SeException -
Method Detail

qualifyColumn

public java.lang.String qualifyColumn(java.lang.String columnName)
                               throws SeException
Returns a qualified column name.
Parameters:
columnname - columnName.
Returns:
String
Throws:
SeException -

addColumn

public void addColumn(SeColumnDefinition columnDef)
               throws SeException
Adds a column to the table. The column is defined by an SeColumnDefinition object. The new column is added immediately to the existing table.
Parameters:
columnDef - an SeColumnDefinition object.
Throws:
SeException -

addMetaData

public void addMetaData(int recordCount,
                        SeMetaData[] metaData)
                 throws SeException
Adds metadata records.
Parameters:
recordCount - number of records to insert.
metaData - list of metadata records to be inserted.
Throws:
SeException -

alterMetaData

public void alterMetaData(int recordCount,
                          SeMetaData[] metaData)
                   throws SeException
Alters metadata records.
Parameters:
recordCount - number of records to alter.
metaData - list of metadata records to be altered.
Throws:
SeException -

deleteMetaData

public void deleteMetaData(int recordCount,
                           SeObjectId[] recordIds)
                    throws SeException
Deletes metadata records.
Parameters:
recordCount - number of records to delete.
metaData - list of metadata record ids to be deleted.
Throws:
SeException -

deleteMetaDataByWhere

public void deleteMetaDataByWhere(java.lang.String whereClause)
                           throws SeException
Deletes metadata records filtered by a where clause.
Parameters:
whereClause - where clause used to delete the records.
Throws:
SeException -

getMetaDataInfoList

public SeMetaData[] getMetaDataInfoList()
                                 throws SeException
Returns the meta-data associated with a table.
Returns:
SeMetaData[]
Throws:
SeException -

dropColumn

public void dropColumn(java.lang.String column)
                throws SeException
Drops a column from the table. You can't delete spatial columns with this function.
Parameters:
column - column to be dropped.
Throws:
SeException -

create

public void create(SeColumnDefinition[] columnDefs)
            throws SeException
Creates the table with specified column definitions and the default configuration keyword. Table created is not spatially enabled.
Parameters:
columnDefs - An array of SeColumnDefinition objects.
Throws:
SeException -

create

public void create(SeColumnDefinition[] columnDefs,
                   java.lang.String configKeyword)
            throws SeException
Creates the table with specified column definitions. Table created is not spatially enabled.
Parameters:
columnDefs - An array of SeColumnDefinition objects.
configKeyword - The keyword corresponding to an ArcSDE table configuration. The keyword and its corresponding table configuration must be defined in the dbtune table. Refer the ArcSDE Configuration and Tuning guide for more information on setting up the dbtune.sde configuration parameters.
Throws:
SeException -

createIndex

public void createIndex(java.lang.String column,
                        boolean unique,
                        boolean ascending,
                        java.lang.String configKeyword,
                        java.lang.String indexName)
                 throws SeException
Creates a DBMS index on the specified column of a table.
Parameters:
column - column name.
unique - set to TRUE if index is unique.
ascending - set to TRUE if index is ascending.
configKeyword - keyword indicating alternate default configurations. The keyword is found in the dbtune.sde file.
indexName - index name.
Throws:
SeException -

createIndexes

public void createIndexes(short numIndexes,
                          SeTable.SeTableIndexDefs[] indexDefs,
                          java.lang.String configKeyword)
                   throws SeException
Creates DBMS indexes on a table.
Parameters:
numIndexes - number of indexes to create.
indexDefs - an aray of SeTableIndexDefs objects defining index properties.
configKeyword - keyword indicating alternate default configurations. The keyword is found in the dbtune.sde file.
Throws:
SeException -

createPrimaryConstraint

public void createPrimaryConstraint(java.lang.String[] columns,
                                    java.lang.String constraintName,
                                    java.lang.String configKeyword)
                             throws SeException
Creates primary constraint.
Parameters:
columns - array of column names.
constraintName - the constraint name.
configKeyword - the configuration keyword.
Throws:
SeException -

createUniqueConstraint

public void createUniqueConstraint(java.lang.String[] columns,
                                   java.lang.String constraintName,
                                   java.lang.String configKeyword)
                            throws SeException
Creates unique constraint.
Parameters:
columns - array of column names.
constraintName - the constraint name.
configKeyword - the configuration keyword.
Throws:
SeException -

describeIndexes

public SeTable.SeTableIndexDefs[] describeIndexes()
                                           throws SeException
Returns index definitions. Index definitions are defined in SeTable inner class SeTableIndexDefs.
Returns:
SeColumnDefinition[]
Throws:
SeException -
See Also:
SeColumnDefinition

describe

public SeColumnDefinition[] describe()
                              throws SeException
Returns column definitions of the table.This function maps the underlying DBMS data types to ArcSDE data types. Column definitions are defined in SeColumnDefinition class.
Returns:
SeColumnDefinition[]
Throws:
SeException -
See Also:
SeColumnDefinition

delete

public void delete()
            throws SeException
Drops a DBMS table.If the table is spatially enabled, all of its associated spatial information for the layer is also deleted.
Throws:
SeException -

deleteConstraint

public void deleteConstraint(java.lang.String constraintName)
                      throws SeException
Deletes the named constraint from specified table.
Throws:
SeException -

deleteIndex

public void deleteIndex(java.lang.String indexName)
                 throws SeException
Drops a DBMS table index for the specified table. Some DBMSs require unique index names within a namespace. Therefore, they do not require a table name to uniquely identify an index. Depending on the DBMS, you may need to prefix the index with the owner’s name (e.g., ‘owner.index’)
Throws:
SeException -

truncate

public void truncate()
              throws SeException
Deletes the data from a table but keeps the table definition. If the table is spatially enabled, all of its associated spatial information for the layer is also truncated. The layer definition remains intact.
Throws:
SeException -

lock

public void lock(int lockMode)
          throws SeException
Locks the table. Lock modes are SE_TABLE_SHARED_SCHEMA_LOCK and SE_TABLE_EXCLUSIVE_SCHEMA_LOCK. A shared schema lock will prevent others from changing the table schema until the lock is released. A shared schema lock will also prevent someone from deleting a table or changing its permissions. Multiple users can establish shared schema locks. If a shared schema lock exists on a table, other users can’t establish an exclusive schema lock until all shared schema locks are released. Use an exclusive schema lock to change a table’s schema. An exclusive schema lock will prevent other users from setting exclusive or shared schema locks until the exclusive schema lock is freed. If a user has already placed a schema lock on a table, the lock mode is updated to reflect the most recent call.
Parameters:
lockMode - lock type.
Throws:
SeException -

getIds

public SeTable.SeTableIdRange getIds(int numIds)
                              throws SeException
Returns a range of row id values.
Parameters:
numIds - number of id values requested.
Returns:
SeRangeId
Throws:
SeException -

returnIds

public void returnIds(SeObjectId startId,
                      int numIds)
               throws SeException
Sends a set of unused id values back to the server.
Parameters:
startId - start id of the range being released.
numIds - number of id values returned.
Throws:
SeException -

getLocks

public SeTable.SeTableLock[] getLocks()
                               throws SeException
Returns a list of locks info for the table.
Returns:
SeTableLock[]
Throws:
SeException -

freeLock

public void freeLock()
              throws SeException
Frees the lock on a table.
Throws:
SeException -

addRowLocks

public void addRowLocks(int numLocks,
                        SeObjectId[] rowIds,
                        SeObjectId stateId)
                 throws SeException
Adds one or more row locks. If a row doesn't exist in the specified state or is already locked, the operation will fail. First failed rowid is returned as SeException error message. This operation automatically executes a commit.
Parameters:
numLocks - number of locks.
rowIds - array of rowid to lock.
stateId - state id to use. Set to SE_NULL_STATE_ID if the table isn't multiversioned.
Returns:
SeObjectId
Throws:
SeException -

removeRowLocks

public void removeRowLocks(int numLocks,
                           SeObjectId[] rowIds,
                           SeObjectId stateId)
                    throws SeException
Deletes one or more row locks. If a row doesn't exist in the specified state or is already locked, the operation will fail. First failed rowid is returned as SeException error message. This operation automatically executes a commit.
Parameters:
numLocks - number of locks.
rowIds - array of rowid to remove lock from.
stateId - state id to use. Set to SE_NULL_STATE_ID if the table isn't multiversioned.
Returns:
SeObjectId
Throws:
SeException -

getRowLocks

public SeTable.SeTableRowLockInfo getRowLocks()
                                       throws SeException
Returns the row locks information.
Returns:
SeTableRowLockInfo
Throws:
SeException -
See Also:
SeTable.SeTableRowLockInfo

getRowLocksByUser

public SeTable.SeTableRowLockInfo getRowLocksByUser(java.lang.String user)
                                             throws SeException
Returns rowlocks set by the specified user.
Returns:
SeTableRowLockInfo
Throws:
SeException -
See Also:
SeTable.SeTableRowLockInfo

createView

public void createView(java.lang.String viewName,
                       java.lang.String[] viewColumns,
                       java.lang.String[] tableColumns,
                       SeSqlConstruct sqlC)
                throws SeException
Creates a DBMS view on a table.
Parameters:
viewName - Name of the view to be created.
viewColumns - an array of view columns names.
tableColumns - an array of table columns names.
Throws:
SeException -

createMultiVersionView

public void createMultiVersionView(java.lang.String viewName)
                            throws SeException
Creates a multiversion DBMS view on the specified multiversion table. A multiversion table may have only one multiversion view at a time.
Parameters:
viewName - name of the view to be created.
Throws:
SeException -

deleteMultiVersionView

public void deleteMultiVersionView()
                            throws SeException
Deletes a multiversion DBMS view on a multiversion table.
Throws:
SeException -

rename

public void rename(java.lang.String newTableName)
            throws SeException
Renames the table. If the table is registered, the registration entry is updated to reflect the new name. If the table is spatially enabled, the layer definition is updated. Any associated mango definitions are also updated.If the operation is successful current instance of SeTable will also update the table name.
Parameters:
newTableName - new name of the table.
Throws:
SeException -

updateDBMSStats

public void updateDBMSStats(java.lang.String indexName,
                            java.lang.String mode,
                            int tableUpdateMask)
                     throws SeException
Update DBMS statistics on the specified table.If the table is a layer, statistics are generated for all related layer objects including indexes that are specified by tableUpdateMask. The mode values for Oracle are COMPUTE and ESTIMATE. Pass in a null pointer for the mode parameter for other DBMS.
Parameters:
indexName - index name.
mode - Statistics mode (oracle only).
tableUpdateMask - bitmask indicating the tables whose statistics needs to be updated.
Throws:
SeException -

grantAccess

public void grantAccess(int privilege,
                        boolean grant,
                        java.lang.String user)
                 throws SeException
Grants specified privileges to the specified user. Current DBMS user must have sufficient DBMS privileges for grant to work. Multiple privileges can be set in a single call by ORing the privilege bitmasks. If the grant boolean is TRUE, then the given user can in turn grant those privileges to other users.
Parameters:
privilege - privilege to grant.
grant - granted user can/can't GRANT/REVOKE privilge.
user - DBMS user name to whom privilges need to be granted.
Throws:
SeException -

revokeAccess

public void revokeAccess(int privilege,
                         java.lang.String user)
                  throws SeException
Revokes specified privileges from the specified user. Current DBMS user must have sufficient DBMS privileges for revoke to work. Multiple privileges can be set in a single call by ORing the privilege bitmasks.
Parameters:
privilege - privilege to grant.
user - DBMS user name to whom privilges need to be granted.
Throws:
SeException -

getPermissions

public int getPermissions()
                   throws SeException
Returns the permissions for the table. Permissions are: SeDefs.SE_SELECT_PRIVILEGE SeDefs.SE_UPDATE_PRIVILEGE SeDefs.SE_INSERT_PRIVILEGE SeDefs.SE_DELETE_PRIVILEGE
Returns:
int
Throws:
SeException -
See Also:
SeDefs

getName

public java.lang.String getName()
Returns the table's name.
Returns:
String

getDatabase

public java.lang.String getDatabase()
Returns the database's name.
Returns:
String

getOwner

public java.lang.String getOwner()
Returns the owner's name.
Returns:
String

getQualifiedName

public java.lang.String getQualifiedName()
Returns the table's name, qualified with the owner and database.
Returns:
String
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable.SeTableIdRange

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable.SeTableIdRange

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeTable.SeTableIdRange
Enclosing class:
SeTable
public static class SeTable.SeTableIdRange
extends com.esri.sde.sdk.client.SeServerObj

Method Summary
int | getIdCount() Returns the number of Ids fetched.
SeObjectId | getStartId() Returns the first value of Id range.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getStartId

public SeObjectId getStartId()
Returns the first value of Id range.
Returns:
int

getIdCount

public int getIdCount()
Returns the number of Ids fetched.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable.SeTableIndexDefs

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable.SeTableIndexDefs

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeTable.SeTableIndexDefs
Enclosing class:
SeTable
public static class SeTable.SeTableIndexDefs
extends com.esri.sde.sdk.client.SeServerObj

SeTable inner class that stores the index definition information for a table.

Constructor Summary
SeTable.SeTableIndexDefs(SeConnection conn)
Method Summary
boolean[] | getAscending() Returns the ascending order characterstics.
java.lang.String[] | getColumnNames() Returns the column names.
java.lang.String | getIndexName() Returns the index name.
int | getnumColumns() Returns the number of columns.
boolean | getUnique() Returns the index's unique characterstic.
void | setAscending(boolean[] asc) Sets the index's ascending order characterstics.
void | setColumnNames(java.lang.String[] columnNames) Sets the column names.
void | setIndexName(java.lang.String indexName) Sets the index name.
void | setNumColumns(short numColumns) Sets the number of columns.
void | setUnique(boolean unq) Sets the index unique characterstic.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeTable.SeTableIndexDefs

public SeTable.SeTableIndexDefs(SeConnection conn)
Method Detail

getnumColumns

public int getnumColumns()
Returns the number of columns.
Returns:
int

getColumnNames

public java.lang.String[] getColumnNames()
Returns the column names.
Returns:
String[]

getIndexName

public java.lang.String getIndexName()
Returns the index name.
Returns:
String

getUnique

public boolean getUnique()
Returns the index's unique characterstic.
Returns:
boolean

getAscending

public boolean[] getAscending()
Returns the ascending order characterstics.
Returns:
boolean[]

setNumColumns

public void setNumColumns(short numColumns)
Sets the number of columns.
Parameters:
numColumns - number of index columns.

setColumnNames

public void setColumnNames(java.lang.String[] columnNames)
                    throws SeException
Sets the column names.
Parameters:
coulmnNames - an array of column names.
Throws:
SeException -

setIndexName

public void setIndexName(java.lang.String indexName)
                  throws SeException
Sets the index name.
Parameters:
indexName - index name.
Throws:
SeException -

setUnique

public void setUnique(boolean unq)
Sets the index unique characterstic.
Parameters:
unq - indicates whether index is of unique type.

setAscending

public void setAscending(boolean[] asc)
                  throws SeException
Sets the index's ascending order characterstics.
Parameters:
asc - an array of boolean value indicating whether index is of ascending type.
Throws:
SeException -
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable.SeTableLock

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable.SeTableLock

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeTable.SeTableLock
Enclosing class:
SeTable
public static class SeTable.SeTableLock
extends com.esri.sde.sdk.client.SeServerObj

SeTable inner class that retrieves the locks information for a table.

Method Summary
int | getLockType() Returns the lock type.
java.lang.String | getOwner() Returns the lock owner name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getOwner

public java.lang.String getOwner()
Returns the lock owner name.
Returns:
String

getLockType

public int getLockType()
Returns the lock type.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable.SeTableRowLockInfo

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable.SeTableRowLockInfo

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeTable.SeTableRowLockInfo
Enclosing class:
SeTable
public static class SeTable.SeTableRowLockInfo
extends com.esri.sde.sdk.client.SeServerObj

SeTable inner class that retrieves the rowlocks information from the server. User names returned by getUserNames() is the owner list of locked rowids returned by getRowIds() method.

Method Summary
int | getNumLocks() Returns the number locks.
SeObjectId[] | getRowIds() Returns an array of locked row IDs.
java.lang.String[] | getUserNames() Returns an array of user names.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getUserNames

public java.lang.String[] getUserNames()
Returns an array of user names.
Returns:
String[]

getRowIds

public SeObjectId[] getRowIds()
Returns an array of locked row IDs.
Returns:
SeObjectId[]

getNumLocks

public int getNumLocks()
Returns the number locks.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeTable.SeTableStats

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeTable.SeTableStats

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeTable.SeTableStats
Enclosing class:
SeTable
public static class SeTable.SeTableStats
extends java.lang.Object

SeTable inner class that retrieves the statistics information for a column.

Field Summary
static int | SE_ALL_STATS
static int | SE_AVERAGE_STATS
static int | SE_BASIC_STATS
static int | SE_COUNT_STATS
static int | SE_DISTINCT_STATS
static int | SE_MAX_STATS
static int | SE_MIN_STATS
static int | SE_STD_DEV_STATS
Method Summary
double | getAverage() Returns the average value.
int | getCount() Returns the number of rows.
int | getDistinctType() Returns the type of distinct values.
int[] | getDistinctValueFrequencies() Returns the frequency of distinct values.
java.util.Vector | getDistinctValues() Returns distinct values.
double | getMax() Returns the maximum value.
double | getMin() Returns the minimum value.
int | getNumDistinct() Returns the number of distinct values.
double | getStdDev() Returns the standard deviation value.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_MIN_STATS

public static final int SE_MIN_STATS

SE_AVERAGE_STATS

public static final int SE_AVERAGE_STATS

SE_MAX_STATS

public static final int SE_MAX_STATS

SE_STD_DEV_STATS

public static final int SE_STD_DEV_STATS

SE_COUNT_STATS

public static final int SE_COUNT_STATS

SE_DISTINCT_STATS

public static final int SE_DISTINCT_STATS

SE_BASIC_STATS

public static final int SE_BASIC_STATS

SE_ALL_STATS

public static final int SE_ALL_STATS
Method Detail

getMin

public double getMin()
Returns the minimum value.
Returns:
double

getMax

public double getMax()
Returns the maximum value.
Returns:
double

getAverage

public double getAverage()
Returns the average value.
Returns:
double

getStdDev

public double getStdDev()
Returns the standard deviation value.
Returns:
double

getCount

public int getCount()
Returns the number of rows.
Returns:
int

getNumDistinct

public int getNumDistinct()
Returns the number of distinct values.
Returns:
int

getDistinctType

public int getDistinctType()
Returns the type of distinct values.
Returns:
int

getDistinctValueFrequencies

public int[] getDistinctValueFrequencies()
Returns the frequency of distinct values.
Returns:
int

getDistinctValues

public java.util.Vector getDistinctValues()
Returns distinct values.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeUpdate

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeUpdate

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeStreamOp
        |
        +--com.esri.sde.sdk.client.SeUpdate
public class SeUpdate
extends SeStreamOp

Used to submit an update to an ArcSDE instance.

See Also:
SeRow

Constructor Summary
SeUpdate(SeConnection conn)
Creates an SeUpdate object given an SeConnection.
Method Summary
void | cancel(boolean reset) Cancels the current update operation.
void | close() Closes the update and releases the underlying stream back to the stream pool.
void | copyStateRows(java.lang.String tableName, SeObjectId[] rowIdList) Copies rows from the differences state to the source state.
int | getNumColumns() Returns the number of columns on the update.
SeRow | getRowToSet() Returns a row object to set for this write operation.
void | restoreRows(java.lang.String table, SeObjectId[] rowIdList) Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.
void | setWriteMode(boolean buffered) Turns buffering on or off for update operations.
SeRow | singleRow(SeObjectId rowId, java.lang.String table, java.lang.String[] columns) Initializes the update operation on the server with the given row.
void | toSdoDimTable(java.lang.String table) Updated the lower and upper bounds of the SDODIM table if necessary.
void | toTable(java.lang.String table, java.lang.String[] columns, java.lang.String where) Prepares to update rows in a DBMS table.
Methods inherited from class com.esri.sde.sdk.client.SeStreamOp
describeColumn, equivalenceRows, execute, flushBufferedWrites, inProgress, setLogfile, setRowLocking, setSSAFilter, setState, unequivalenceRows
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

SeUpdate

public SeUpdate(SeConnection conn)
         throws SeException
Creates an SeUpdate object given an SeConnection.
Method Detail

copyStateRows

public void copyStateRows(java.lang.String tableName,
                          SeObjectId[] rowIdList)
                   throws SeException
Copies rows from the differences state to the source state. The rowId is not changed. Both a source state and a differences state must be set using setState().
Parameters:
tableName - the table that contains the differences.
rowIdList - the list of ROWIDs to copy from differences states to the source state.

toSdoDimTable

public void toSdoDimTable(java.lang.String table)
                   throws SeException
Updated the lower and upper bounds of the SDODIM table if necessary.
Parameters:
table - The business table name.

toTable

public void toTable(java.lang.String table,
                    java.lang.String[] columns,
                    java.lang.String where)
             throws SeException
Prepares to update rows in a DBMS table. If the where clause is null or empty, all rows will be updated. If a spatial column is specified, all features in the table/layer will be updated to the specified feature, duplicating that featuer N times.
Parameters:
table - The name of the table with the row.
columns - The names of the columns whose values will be updated.
where - The where clause specifying which rows to update.

restoreRows

public void restoreRows(java.lang.String table,
                        SeObjectId[] rowIdList)
                 throws SeException
Restores a set of rows in a miltiversion table to the values they held at the creation of the currently set version.

getNumColumns

public int getNumColumns()
                  throws SeException
Returns the number of columns on the update.

getRowToSet

public SeRow getRowToSet()
                  throws SeException
Returns a row object to set for this write operation.

singleRow

public SeRow singleRow(SeObjectId rowId,
                       java.lang.String table,
                       java.lang.String[] columns)
                throws SeException
Initializes the update operation on the server with the given row. This method is useful when updating a single row. This operation can only be used on registered tables.
Parameters:
rowId - The id of the row to be updated.
table - The name of the table with the row.
columns - The names of the columns whose values will be updated.
Returns:
SeRow The row object to set the column values in.

setWriteMode

public void setWriteMode(boolean buffered)
                  throws SeException
Turns buffering on or off for update operations.

cancel

public void cancel(boolean reset)
            throws SeException
Cancels the current update operation. If reset is TRUE, the update status is set to INACTIVE. If reset is FALSE the update status is set to CLOSED.
Overrides:
cancel in class SeStreamOp

close

public void close()
           throws SeException
Closes the update and releases the underlying stream back to the stream pool. If reset is TRUE, the insert status is set to INACTIVE.
Overrides:
close in class SeStreamOp
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeVersion

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeVersion

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeVersion
public class SeVersion
extends com.esri.sde.sdk.client.SeServerObj
implements java.lang.Cloneable

Inner Class Summary
static class SeVersion.SeVersionLock
SeVersion inner class that retrieves the version locks information from the server.
Field Summary
static java.lang.String | SE_DEFAULT_VERSION_NAME
static java.lang.String | SE_QUALIFIED_DEFAULT_VERSION_NAME
static int | SE_VERSION_ACCESS_PRIVATE
static int | SE_VERSION_ACCESS_PROTECTED
static int | SE_VERSION_ACCESS_PUBLIC
static int | SE_VERSION_EXCLUSIVE_AUTOLOCK
static int | SE_VERSION_EXCLUSIVE_LOCK
static int | SE_VERSION_PROTECTED_MASK
static int | SE_VERSION_PUBLIC_MASK
static int | SE_VERSION_SHARED_LOCK
Constructor Summary
SeVersion(SeConnection conn)
SeVersion constructor with an SeConnection.
SeVersion(SeConnection conn, SeObjectId versionId)
SeVersion constructor with an SeConnection and version Id that retrieves the version information for the specified ID.
SeVersion(SeConnection conn, java.lang.String versionName)
SeVersion constructor that retrieves information for specifed version name.
Method Summary
void | alter() Alters a versionÆs characteristics.
void | changeState(SeObjectId newStateId) Changes the underlying state of a version.
java.lang.Object | clone() Clones the SeVersion object.
void | create(boolean uniqueName, SeVersion version) Creates a child version from an existing version.
void | delete() Deletes a version.
void | freeLock() Releases the lock on a version.
int | getAccess() Returns the access type for a version.
java.util.Date | getCreationTime() Returns the creation time for a version.
java.lang.String | getDescription() Returns the version description.
SeObjectId | getId() Returns the ID of a version.
void | getInfo() Returns version information.
SeVersion.SeVersionLock[] | getLocks() Returns a list of current locks.
java.lang.String | getName() Returns the version name.
java.lang.String | getOwner() Returns the owner of the version.
SeObjectId | getParentId() Returns the parent ID of a version.
java.lang.String | getParentName() Returns the parent version name.
SeObjectId | getStateId() Returns the state ID of a version.
void | lock(int lockMode) Locks a version.
void | rename(java.lang.String newVersionName) Renames a version.
void | setAccess(int access) Returns the access type for a version.
void | setDescription(java.lang.String desc) Sets the version description.
void | setId(SeObjectId id) Sets the ID of a version.
void | setName(java.lang.String name) Sets the version name.
void | setOwner(java.lang.String name) Sets the version owner name.
void | setParentId(SeObjectId stateId) Sets the parent ID of a version.
void | setParentName(java.lang.String name) Sets the parent version name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Detail

SE_VERSION_PUBLIC_MASK

public static final int SE_VERSION_PUBLIC_MASK

SE_VERSION_PROTECTED_MASK

public static final int SE_VERSION_PROTECTED_MASK

SE_VERSION_ACCESS_PUBLIC

public static final int SE_VERSION_ACCESS_PUBLIC

SE_VERSION_ACCESS_PROTECTED

public static final int SE_VERSION_ACCESS_PROTECTED

SE_VERSION_ACCESS_PRIVATE

public static final int SE_VERSION_ACCESS_PRIVATE

SE_DEFAULT_VERSION_NAME

public static final java.lang.String SE_DEFAULT_VERSION_NAME

SE_QUALIFIED_DEFAULT_VERSION_NAME

public static final java.lang.String SE_QUALIFIED_DEFAULT_VERSION_NAME

SE_VERSION_SHARED_LOCK

public static final int SE_VERSION_SHARED_LOCK

SE_VERSION_EXCLUSIVE_LOCK

public static final int SE_VERSION_EXCLUSIVE_LOCK

SE_VERSION_EXCLUSIVE_AUTOLOCK

public static final int SE_VERSION_EXCLUSIVE_AUTOLOCK
Constructor Detail

SeVersion

public SeVersion(SeConnection conn)
          throws SeException
SeVersion constructor with an SeConnection. Use this constructor when creating a new version.
Parameters:
conn - SeConnection object handle.
Throws:
SeException -

SeVersion

public SeVersion(SeConnection conn,
                 SeObjectId versionId)
          throws SeException
SeVersion constructor with an SeConnection and version Id that retrieves the version information for the specified ID.
Parameters:
conn - SeConnection object handle.
versionId - the version ID.
Throws:
SeException -
SeException -

SeVersion

public SeVersion(SeConnection conn,
                 java.lang.String versionName)
          throws SeException
SeVersion constructor that retrieves information for specifed version name. If the version is not found it will return an SeDeosNotExistException.
Parameters:
conn - SeConnection object handle.
versionName - the version name.
Throws:
SeException -
Method Detail

alter

public void alter()
           throws SeException
Alters a versionÆs characteristics. The version to modify is specified by the version name. You can change the following characteristics: - Description - Access If you want to change the name of a version or the state ID, use rename() or changeState() methods .
Throws:
SeException -

changeState

public void changeState(SeObjectId newStateId)
                 throws SeException
Changes the underlying state of a version.
Throws:
SeException -

create

public void create(boolean uniqueName,
                   SeVersion version)
            throws SeException
Creates a child version from an existing version. The parent version must be closed and owned by the current user or public, or the current user is the ArcSDE DBA. You can require a unique name by setting unique_name to TRUE. If the name isn't unique, the ArcSDE software will append æ01Æ or whatever value creates a unique version name. If the function succeeds information about the new version is retrieved into the current version object.
Parameters:
uniqueName - If the supplied version name is not unique, add a suffix onto it to make it unique. If this flag is FALSE and a version of this name already exists, then the create will fail.
version - the existing version object.
Throws:
SeException -

delete

public void delete()
            throws SeException
Deletes a version. The version must be a leaf node and can't be a parent to another version. The current user must be the owner of the version or the ArcSDE DBA. All entries in the instanceÆs adds and deletes tables for the version will be deleted.
Throws:
SeException -

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
Clones the SeVersion object.
Returns:
Object
Throws:
SeException -

getInfo

public void getInfo()
             throws SeException
Returns version information.
Throws:
SeException -

lock

public void lock(int lockMode)
          throws SeException
Locks a version. The lock modes are: - SE_VERSION_SHARED_LOCK - SE_VERSION_EXCLUSIVE_LOCK
Parameters:
lockMode - the lock type.
Throws:
SeException -

freeLock

public void freeLock()
              throws SeException
Releases the lock on a version.
Throws:
SeException -

getLocks

public SeVersion.SeVersionLock[] getLocks()
                                   throws SeException
Returns a list of current locks.
Returns:
SeVersionLock[]
Throws:
SeException -

rename

public void rename(java.lang.String newVersionName)
            throws SeException
Renames a version. If the new name is qualified, it must have the same owner as the old version name.
Parameters:
newVersionName - the new name of version.
Throws:
SeException -

getAccess

public int getAccess()
Returns the access type for a version.
Returns:
int

setAccess

public void setAccess(int access)
               throws SeException
Returns the access type for a version.
Parameters:
access - the access type.

getCreationTime

public java.util.Date getCreationTime()
Returns the creation time for a version.
Returns:
java.util.Date

getDescription

public java.lang.String getDescription()
Returns the version description.
Returns:
String

setDescription

public void setDescription(java.lang.String desc)
Sets the version description.

getId

public SeObjectId getId()
Returns the ID of a version.
Returns:
SeObjectId

setId

public void setId(SeObjectId id)
Sets the ID of a version.
Returns:
SeObjectId

getOwner

public java.lang.String getOwner()
Returns the owner of the version.
Returns:
String

getName

public java.lang.String getName()
Returns the version name.
Returns:
String

setOwner

public void setOwner(java.lang.String name)
              throws SeException
Sets the version owner name.
Parameters:
name - the name of the owner.

setName

public void setName(java.lang.String name)
             throws SeException
Sets the version name. The name can be qualified with the owner name. If the name is not qualified, and the owner name has not already been set using setOwner(), the owner will be the currently connected user.
Parameters:
name - the version name.

getParentId

public SeObjectId getParentId()
Returns the parent ID of a version. If no parent version exists, returns 0.
Returns:
SeObjectId

getParentName

public java.lang.String getParentName()
Returns the parent version name.
Returns:
String

setParentName

public void setParentName(java.lang.String name)
Sets the parent version name.
Parameters:
name - the parent version name.

getStateId

public SeObjectId getStateId()
Returns the state ID of a version.
Returns:
SeObjectId

setParentId

public void setParentId(SeObjectId stateId)
                 throws SeException
Sets the parent ID of a version. If no parent version exists, returns 0.
Parameters:
stateId - the state ID of a version.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeVersion.SeVersionLock

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeVersion.SeVersionLock

java.lang.Object
  |
  +--com.esri.sde.sdk.client.SeServerObj
        |
        +--com.esri.sde.sdk.client.SeVersion.SeVersionLock
Enclosing class:
SeVersion
public static class SeVersion.SeVersionLock
extends com.esri.sde.sdk.client.SeServerObj

SeVersion inner class that retrieves the version locks information from the server.

Method Summary
int | getLockMode() Returns the lock mode.
java.lang.String | getUserName() Returns the user name.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Method Detail

getUserName

public java.lang.String getUserName()
Returns the user name.
Returns:
String[]

getLockMode

public int getLockMode()
Returns the lock mode.
Returns:
int
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SeWarningException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.client
Class SeWarningException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.client.SeException
                    |
                    +--com.esri.sde.sdk.client.SeWarningException
public class SeWarningException
extends SeException

See Also:
Serialized Form

Constructor Summary
SeWarningException()
SeWarningException(SeError errObj)
SeWarningException(java.lang.String s)
SeWarningException(java.lang.String s, SeError errObj)
Methods inherited from class com.esri.sde.sdk.client.SeException
getSeError
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeWarningException

public SeWarningException()

SeWarningException

public SeWarningException(java.lang.String s)

SeWarningException

public SeWarningException(SeError errObj)

SeWarningException

public SeWarningException(java.lang.String s,
                          SeError errObj)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Interface Curve

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Curve

All Known Subinterfaces:
Linestring
All Known Implementing Classes:
SeCurve
public interface Curve
extends Geometry

The Curve interface defines the methods for a class whose instances create a one-dimensional geometric object stored as a sequence of points.

Method Summary
Point | endPoint() Returns the last point of a linestring.
boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
boolean | isRing() Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
double | length() Returns the length of a linestring or multilinestring.
Point | startPoint() Returns the first point of a linestring.
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

startPoint

public Point startPoint()
Returns the first point of a linestring.

endPoint

public Point endPoint()
Returns the last point of a linestring.

length

public double length()
Returns the length of a linestring or multilinestring.

isRing

public boolean isRing()
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).

isClosed

public boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Interface Geometry

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Geometry

All Known Subinterfaces:
Curve, GeometryCollection, Linestring, MultiCurve, MultiLinestring, MultiPoint, MultiPolygon, MultiSurface, Point, Polygon, Surface
All Known Implementing Classes:
SeGeometry
public interface Geometry

The Geometry interface defines the methods for the Geometry subclasses. Geometry is the root class of the hierarchy and is an abstract, non-instantiable class. Only the subclasses of Geometry are instantiable. The instances of the subclasses of Geometry create zero, one and two-dimensional geometric objects that exist in two-dimensional coordiante space.

Method Summary
java.io.ByteArrayOutputStream | asBinary() Asbinary takes a geometry object and returns its well-known binary representation.
java.lang.String | asText() Astext takes a geometry object and returns its well-known text representation.
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
boolean | contains(Geometry g) Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second.
Geometry | convexhull() Returns the convex hull of a geometry object.
boolean | crosses(Geometry g) Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects.
Geometry | difference(Geometry g) Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.
int | dimension() Returns the dimension of a geometry object.
boolean | disjoint(Geometry g) Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).
double | distance(Geometry g) Returns the closest distance separating two geometries.
Geometry | envelope() Returns the bounding box of a geometry object as a geometry.
boolean | envelopesIntersect(Geometry g) Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).
boolean | equal(Geometry g) Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).
Geometry | exterior() The interior is the space occupied by the geometry.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
boolean | intersect(Geometry g) Returns t (TRUE) if the intersection of two geometries doesnÆt result in an empty set; otherwise, returns f (FALSE).
Geometry[] | intersection(Geometry g) Intersection takes two geometry objects and returns the intersection set as a geometry object.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
boolean | isValid() Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
int | numPoints() Returns the number of points in a geometry.
boolean | overlap(Geometry g) Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).
int | srid() Srid takes a geometry object and returns its spatial reference system identity.
Geometry | symmetricDiff(Geometry g) symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that arenÆt common to both.
boolean | touch(Geometry g) Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE).
Geometry | union(Geometry g) Union returns a geometry object that is the union of two source objects.
boolean | within(Geometry g) Within takes two geometry objects and returns true if the first object is completely within the second, otherwise it returns false.

Method Detail

interior

public Geometry interior()
The exterior of a geometry if all space not occupied by the geometry.

exterior

public Geometry exterior()
The interior is the space occupied by the geometry.

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).

isValid

public boolean isValid()
Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).

isEmpty

public boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).

numPoints

public int numPoints()
Returns the number of points in a geometry.

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a geometry.

dimension

public int dimension()
Returns the dimension of a geometry object.

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).

srid

public int srid()
Srid takes a geometry object and returns its spatial reference system identity.

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.

asBinary

public java.io.ByteArrayOutputStream asBinary()
Asbinary takes a geometry object and returns its well-known binary representation.

asText

public java.lang.String asText()
Astext takes a geometry object and returns its well-known text representation.

convexhull

public Geometry convexhull()
Returns the convex hull of a geometry object.

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.

envelopesIntersect

public boolean envelopesIntersect(Geometry g)
Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).

equal

public boolean equal(Geometry g)
Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).

disjoint

public boolean disjoint(Geometry g)
Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).

intersect

public boolean intersect(Geometry g)
Returns t (TRUE) if the intersection of two geometries doesnÆt result in an empty set; otherwise, returns f (FALSE).

touch

public boolean touch(Geometry g)
Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE). At least one geometry must be a linestring, polygon, multilinestring, or multipolygon.

overlap

public boolean overlap(Geometry g)
Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).

crosses

public boolean crosses(Geometry g)
Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects. The intersection object must contain points that are interior to both source geometries and it is not equal to either of the source objects. Otherwise it returns f (FALSE).

within

public boolean within(Geometry g)
Within takes two geometry objects and returns true if the first object is completely within the second, otherwise it returns false.

contains

public boolean contains(Geometry g)
Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second. Otherwise it returns f (FALSE).

distance

public double distance(Geometry g)
Returns the closest distance separating two geometries.

intersection

public Geometry[] intersection(Geometry g)
Intersection takes two geometry objects and returns the intersection set as a geometry object.

difference

public Geometry difference(Geometry g)
Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.

union

public Geometry union(Geometry g)
Union returns a geometry object that is the union of two source objects.

symmetricDiff

public Geometry symmetricDiff(Geometry g)
symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that arenÆt common to both.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface GeometryCollection

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface GeometryCollection

All Known Subinterfaces:
MultiCurve, MultiLinestring, MultiPoint, MultiPolygon, MultiSurface
All Known Implementing Classes:
SeGeometryCollection
public interface GeometryCollection
extends Geometry

The GeometryCollection interface defines the methods for a class whose instances create a geometric object which is a collection of one or more geometric objects. All the elements in a GeometryCollection share a common Spatial Reference.

Method Summary
Geometry | geometryN(int n) Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
int | numGeometries() Numgeometries takes a collection and returns the number of geometries in the collection.
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

numGeometries

public int numGeometries()
Numgeometries takes a collection and returns the number of geometries in the collection.

geometryN

public Geometry geometryN(int n)
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class GeometryException

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class GeometryException

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.geom.GeometryException
Direct Known Subclasses:
GeometryException.IncompatibleGeometries, GeometryException.InvalidGeometry, GeometryException.InvalidSrid
public class GeometryException
extends java.lang.Exception

This exception is thrown whenever errors are encountered on the operations of the gometry object.

See Also:
Serialized Form

Inner Class Summary
static interface | GeometryException.IncompatibleGeometries This exception is thrown whenever a Clementini operation encounters an error due to incompatible geometries.
static interface | GeometryException.IndexOutOfBounds Since this is an indirect subclass of RuntimeException, it's instances are uncheck exceptions.
static interface | GeometryException.InvalidGeometry This error is thrown whenever the geometry is topologically invalid.
static interface | GeometryException.InvalidSrid This error is thrown whenever the srid for the geometry cannot be resolved.
Constructor Summary
GeometryException()
GeometryException(java.lang.String s)
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace, toString
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

GeometryException

public GeometryException()

GeometryException

public GeometryException(java.lang.String s)
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class GeometryException.IncompatibleGeometries

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class GeometryException.IncompatibleGeometries

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.geom.GeometryException
                    |
                    +--com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
Enclosing class:
GeometryException
public static class GeometryException.IncompatibleGeometries
extends GeometryException

This exception is thrown whenever a Clementini operation encounters an error due to incompatible geometries.

See Also:
Serialized Form

Inner classes inherited from class com.esri.sde.sdk.geom.GeometryException
GeometryException.IncompatibleGeometries, GeometryException.IndexOutOfBounds, GeometryException.InvalidGeometry, GeometryException.InvalidSrid
Constructor Summary
GeometryException.IncompatibleGeometries(java.lang.String s, Geometry g1, Geometry g2)
Method Summary
Geometry[] | geometries()
java.lang.String | toString()
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

GeometryException.IncompatibleGeometries

public GeometryException.IncompatibleGeometries(java.lang.String s,
                                                Geometry g1,
                                                Geometry g2)
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Throwable

geometries

public Geometry[] geometries()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class GeometryException.IndexOutOfBounds

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class GeometryException.IndexOutOfBounds

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--java.lang.RuntimeException
                    |
                    +--java.lang.IndexOutOfBoundsException
                          |
                          +--com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds
Enclosing class:
GeometryException
public static class GeometryException.IndexOutOfBounds
extends java.lang.IndexOutOfBoundsException

Since this is an indirect subclass of RuntimeException, it's instances are uncheck exceptions. Such exceptions need not be caught or thrown by callers of a method that throws one.

See Also:
Serialized Form

Constructor Summary
GeometryException.IndexOutOfBounds(java.lang.String s, Geometry g, int i)
Method Summary
 java.lang.String toString()
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

GeometryException.IndexOutOfBounds

public GeometryException.IndexOutOfBounds(java.lang.String s,
                                          Geometry g,
                                          int i)
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Throwable
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class GeometryException.InvalidGeometry

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class GeometryException.InvalidGeometry

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.geom.GeometryException
                    |
                    +--com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
Enclosing class:
GeometryException
public static class GeometryException.InvalidGeometry
extends GeometryException

This error is thrown whenever the geometry is topologically invalid.

See Also:
Serialized Form

Inner classes inherited from class com.esri.sde.sdk.geom.GeometryException
GeometryException.IncompatibleGeometries, GeometryException.IndexOutOfBounds, GeometryException.InvalidGeometry, GeometryException.InvalidSrid
Constructor Summary
GeometryException.InvalidGeometry(java.lang.String s, Geometry g)
Method Summary
Geometry | geometry()
java.lang.String | toString()
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

GeometryException.InvalidGeometry

public GeometryException.InvalidGeometry(java.lang.String s,
                                         Geometry g)
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Throwable

geometry

public Geometry geometry()
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class GeometryException.InvalidSrid

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class GeometryException.InvalidSrid

java.lang.Object
  |
  +--java.lang.Throwable
        |
        +--java.lang.Exception
              |
              +--com.esri.sde.sdk.geom.GeometryException
                    |
                    +--com.esri.sde.sdk.geom.GeometryException.InvalidSrid
Enclosing class:
GeometryException
public static class GeometryException.InvalidSrid
extends GeometryException

This error is thrown whenever the srid for the geometry cannot be resolved.

See Also:
Serialized Form

Inner classes inherited from class com.esri.sde.sdk.geom.GeometryException
GeometryException.IncompatibleGeometries, GeometryException.IndexOutOfBounds, GeometryException.InvalidGeometry, GeometryException.InvalidSrid
Constructor Summary
GeometryException.InvalidSrid(java.lang.String s, int i)
Method Summary
 java.lang.String toString()
Methods inherited from class java.lang.Throwable
fillInStackTrace, getLocalizedMessage, getMessage, printStackTrace, printStackTrace, printStackTrace
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

GeometryException.InvalidSrid

public GeometryException.InvalidSrid(java.lang.String s,
                                     int i)
Method Detail

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Throwable
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Interface GeometryFactory

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface GeometryFactory

public interface GeometryFactory

The GeometryFactory interface is used to construct an abstract Geometry object.

Method Summary
void | envelope(double minx, double miny, double maxx, double maxy) This method is called to indicate what geometry type.
java.lang.Object | getGeometry() This method is called finally, to get the object constructed.
void | init(int type, int numParts) This method is called to indicate what geometry type.
void | newPart(int numSubParts) This method is called whenever a new part is begun.
void | newPoint(double x, double y) This method is called whenever a new point is passed back.
void | newSubPart(int numPoints) This method is called whenever a new sub-part is begun.
void | partOffsets(int[] partOffsets) This method is called to indicate what geometry type.

Method Detail

init

public void init(int type,
                 int numParts)
This method is called to indicate what geometry type.

envelope

public void envelope(double minx,
                     double miny,
                     double maxx,
                     double maxy)
This method is called to indicate what geometry type.

partOffsets

public void partOffsets(int[] partOffsets)
This method is called to indicate what geometry type.

newPart

public void newPart(int numSubParts)
This method is called whenever a new part is begun.

newSubPart

public void newSubPart(int numPoints)
This method is called whenever a new sub-part is begun.

newPoint

public void newPoint(double x,
                     double y)
This method is called whenever a new point is passed back.

getGeometry

public java.lang.Object getGeometry()
This method is called finally, to get the object constructed.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface GeometrySource

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface GeometrySource

public interface GeometrySource

The GeometrySource interface defines the methods for transforming a geometry object from its well-known binary representation or well-known text representation.

Method Summary
void | enableGeometry(java.sql.Connection conn)
Geometry | geometry(java.lang.Class type, Geometry[] parts)
Geometry | geometry(java.lang.Class type, java.util.Vector parts)
Geometry | geometryFromWKB(java.io.InputStream wkbByteStream, int srid) This method takes a well-known binary representation and a spatial reference system identity to return a geometry object.
Geometry | geometryFromWKT(java.lang.String WKT, int srid) This method takes a well-known text representation and a spatial reference system identity and returns a geometry object.
java.lang.String | sridToWKT(int srid) Returns the well-known text for spatial reference system given its SRID.

Method Detail

geometryFromWKB

public Geometry geometryFromWKB(java.io.InputStream wkbByteStream,
                                int srid)
This method takes a well-known binary representation and a spatial reference system identity to return a geometry object.

geometryFromWKT

public Geometry geometryFromWKT(java.lang.String WKT,
                                int srid)
This method takes a well-known text representation and a spatial reference system identity and returns a geometry object.

geometry

public Geometry geometry(java.lang.Class type,
                         Geometry[] parts)
                  throws GeometryException

geometry

public Geometry geometry(java.lang.Class type,
                         java.util.Vector parts)
                  throws GeometryException

sridToWKT

public java.lang.String sridToWKT(int srid)
                           throws java.sql.SQLException,
                                  GeometryException.InvalidSrid
Returns the well-known text for spatial reference system given its SRID.
Throws:
java.sql.SQLException - when a failed database access prevents retrieval of the WKT.

enableGeometry

public void enableGeometry(java.sql.Connection conn)
                    throws java.sql.SQLException
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface Linestring

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Linestring

All Known Implementing Classes:
SeLinestring
public interface Linestring
extends Curve

The Linestring interface defines the methods for a class whose instances create a geometric object that is a subtype of a Curve with linear interpolation between points.

Method Summary
int | numPoints() Returns the number of points in a geometry.
Geometry | pointN(int n) Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.
Methods inherited from interface com.esri.sde.sdk.geom.Curve
endPoint, isClosed, isRing, length, startPoint
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, overlap, srid, symmetricDiff, touch, union, within

Method Detail

pointN

public Geometry pointN(int n)
Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.

numPoints

public int numPoints()
Returns the number of points in a geometry.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface MultiCurve

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface MultiCurve

All Known Subinterfaces:
MultiLinestring
All Known Implementing Classes:
SeMultiCurve
public interface MultiCurve
extends GeometryCollection

The MultiCurve interface defines the methods for the subclasses of MultiCurve. A MultiCurve is a non-instantiable class. It is a one-dimensional GeometryCollection whose elements are Curves.

Method Summary
boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
double | length() Returns the length of a linestring or multilinestring.
Methods inherited from interface com.esri.sde.sdk.geom.GeometryCollection
geometryN, numGeometries
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

length

public double length()
Returns the length of a linestring or multilinestring.

isClosed

public boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface MultiLinestring

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface MultiLinestring

All Known Implementing Classes:
SeMultiLinestring
public interface MultiLinestring
extends MultiCurve

The MultiLinestring interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Linestring.

Methods inherited from interface com.esri.sde.sdk.geom.MultiCurve
isClosed, length
Methods inherited from interface com.esri.sde.sdk.geom.GeometryCollection
geometryN, numGeometries
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface MultiPoint

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface MultiPoint

All Known Implementing Classes:
SeMultiPoint
public interface MultiPoint
extends GeometryCollection

The MultiPoint interface defines the methods for a class whose instances create a collection of geometic objects whose elements are instances of Point.

Methods inherited from interface com.esri.sde.sdk.geom.GeometryCollection
geometryN, numGeometries
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface MultiPolygon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface MultiPolygon

All Known Implementing Classes:
SeMultiPolygon
public interface MultiPolygon
extends MultiSurface

The MultiPolygon interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Polygons.

Methods inherited from interface com.esri.sde.sdk.geom.MultiSurface
area, centroid, pointOnSurface
Methods inherited from interface com.esri.sde.sdk.geom.GeometryCollection
geometryN, numGeometries
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface MultiSurface

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface MultiSurface

All Known Subinterfaces:
MultiPolygon
All Known Implementing Classes:
SeMultiSurface
public interface MultiSurface
extends GeometryCollection

The MultiSurface interface defines the methods for the subclasses of MultiSurface. A MultiSurface is a non-instantiable class. It is a two-dimensional GeometryCollection whose elements are Surfaces. The instantiable subclass of MultiSurface is MultiPolygon.

Method Summary
double | area()
Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Methods inherited from interface com.esri.sde.sdk.geom.GeometryCollection
geometryN, numGeometries
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

area

public double area()

centroid

public Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.

pointOnSurface

public Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Package com.esri.sde.sdk.geom

 com.esri.sde.sdk.geom
Interfaces
Curve
Geometry
GeometryCollection
GeometryFactory
GeometrySource
Linestring
MultiCurve
MultiLinestring
MultiPoint
MultiPolygon
MultiSurface
Point
Polygon
Surface
Classes
SeCoordRef
SeCurve
SeEnvelope
SeGeometry
SeGeometryCollection
SeLinestring
SeMultiCurve
SeMultiLinestring
SeMultiPoint
SeMultiPolygon
SeMultiSurface
SePoint
SePolygon
SeSurface
Exceptions
GeometryException
GeometryException.IncompatibleGeometries
GeometryException.IndexOutOfBounds
GeometryException.InvalidGeometry
GeometryException.InvalidSrid


: Package com.esri.sde.sdk.geom

Overview Package Class Tree Index Help
PREV PACKAGE NEXT PACKAGE FRAMES NO FRAMES

Package com.esri.sde.sdk.geom

Interface Summary
Curve | The Curve interface defines the methods for a class whose instances create a one-dimensional geometric object stored as a sequence of points.
Geometry | The Geometry interface defines the methods for the Geometry subclasses.
GeometryCollection | The GeometryCollection interface defines the methods for a class whose instances create a geometric object which is a collection of one or more geometric objects.
GeometryFactory | The GeometryFactory interface is used to construct an abstract Geometry object.
GeometrySource | The GeometrySource interface defines the methods for transforming a geometry object from its well-known binary representation or well-known text representation.
Linestring | The Linestring interface defines the methods for a class whose instances create a geometric object that is a subtype of a Curve with linear interpolation between points.
MultiCurve | The MultiCurve interface defines the methods for the subclasses of MultiCurve.
MultiLinestring | The MultiLinestring interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Linestring.
MultiPoint | The MultiPoint interface defines the methods for a class whose instances create a collection of geometic objects whose elements are instances of Point.
MultiPolygon | The MultiPolygon interface defines the methods for a class whose instances create a collection of geometric objects whose elements are instances of Polygons.
MultiSurface | The MultiSurface interface defines the methods for the subclasses of MultiSurface.
Point | The Point interface defines the methods for a class whose instances create a zero-dimensional geometric object which represents a single location in coordinate space.
Polygon | The Polygon interface defines the methods for a class whose instances create a geometric object which is defined by 1 exterior boundary and 0 or more interior boundaries.
Surface | The Surface interface defines the methods for a class whose instances create a two-dimensional geometric object.

Class Summary
SeCoordRef | This class represents a coordinate reference.
SeCurve | This class represents a one-dimensional geometric object usually stored as a sequence of points, its subtype specifies the form of the interpolation between points.
SeEnvelope | This class represents the extent of the geometric object.
SeGeometry | This is the non-instantiable root class of the hierarchy, its instantiable subclasses are 0, 1 to two-dimensional geometric objects that exist in two-dimensional coordinate space.
SeGeometryCollection | This class represents a geometric object that is a collection of 1 or more geometries.
SeLinestring | This class is a subclass of SeCurve with a linear interpolation between points, each consecutive pair of points defines a line segment.
SeMultiCurve | This class represents a collection of geometric objects whose elements are SeCurves.
SeMultiLinestring | This class represents a collection of geometric objects whose elements are SeLinestrings.
SeMultiPoint | This class represents a collection of geometric objects whose elements are SePoints.
SeMultiPolygon | This class represents a collection of geometric objects whose elements are SePolygons.
SeMultiSurface | This is a non-instantiable class which represents a collection of geometric objects whose elements are SeSurfaces.
SePoint | This class represents a zero-dimensional geometric object and represents a single location in coordinate space.
SePolygon | This class represents a planar SeSurface, defined by 1 exterior boundary and 0 or more interior boundaries.
SeSurface | This class represents a two-dimensional geometric object.

Exception Summary
GeometryException | This exception is thrown whenever errors are encountered on the operations of the gometry object.
GeometryException.IncompatibleGeometries | This exception is thrown whenever a Clementini operation encounters an error due to incompatible geometries.
GeometryException.IndexOutOfBounds | Since this is an indirect subclass of RuntimeException, it's instances are uncheck exceptions.
GeometryException.InvalidGeometry | This error is thrown whenever the geometry is topologically invalid.
GeometryException.InvalidSrid | This error is thrown whenever the srid for the geometry cannot be resolved.

Overview Package Class Tree Index Help
PREV PACKAGE NEXT PACKAGE FRAMES NO FRAMES


: com.esri.sde.sdk.geom Class Hierarchy

Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES

Hierarchy For Package com.esri.sde.sdk.geom

Package Hierarchies:
All Packages

Class Hierarchy

  • class java.lang.Object
    • class com.esri.sde.sdk.geom.SeCoordRef (implements java.lang.Cloneable, java.io.Serializable)
    • class com.esri.sde.sdk.geom.SeEnvelope
    • class com.esri.sde.sdk.geom.SeGeometry (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Geometry, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeCurve (implements com.esri.sde.sdk.geom.Curve)
        • class com.esri.sde.sdk.geom.SeLinestring (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Linestring, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeGeometryCollection (implements java.lang.Cloneable, com.esri.sde.sdk.geom.GeometryCollection, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiCurve (implements com.esri.sde.sdk.geom.MultiCurve)
          • class com.esri.sde.sdk.geom.SeMultiLinestring (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiLinestring, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiPoint (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiPoint, java.io.Serializable)
        • class com.esri.sde.sdk.geom.SeMultiSurface (implements com.esri.sde.sdk.geom.MultiSurface)
          • class com.esri.sde.sdk.geom.SeMultiPolygon (implements java.lang.Cloneable, com.esri.sde.sdk.geom.MultiPolygon, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SePoint (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Point, java.io.Serializable)
      • class com.esri.sde.sdk.geom.SeSurface (implements com.esri.sde.sdk.geom.Surface)
        • class com.esri.sde.sdk.geom.SePolygon (implements java.lang.Cloneable, com.esri.sde.sdk.geom.Polygon, java.io.Serializable)
    • class java.lang.Throwable (implements java.io.Serializable)
      • class java.lang.Exception
        • class com.esri.sde.sdk.geom.GeometryException
          • class com.esri.sde.sdk.geom.GeometryException.IncompatibleGeometries
          • class com.esri.sde.sdk.geom.GeometryException.InvalidGeometry
          • class com.esri.sde.sdk.geom.GeometryException.InvalidSrid
        • class java.lang.RuntimeException
          • class java.lang.IndexOutOfBoundsException
            • class com.esri.sde.sdk.geom.GeometryException.IndexOutOfBounds

Interface Hierarchy

  • interface com.esri.sde.sdk.geom.Geometry
    • interface com.esri.sde.sdk.geom.Curve
      • interface com.esri.sde.sdk.geom.Linestring
    • interface com.esri.sde.sdk.geom.GeometryCollection
      • interface com.esri.sde.sdk.geom.MultiCurve
        • interface com.esri.sde.sdk.geom.MultiLinestring
      • interface com.esri.sde.sdk.geom.MultiPoint
      • interface com.esri.sde.sdk.geom.MultiSurface
        • interface com.esri.sde.sdk.geom.MultiPolygon
    • interface com.esri.sde.sdk.geom.Point
    • interface com.esri.sde.sdk.geom.Surface
      • interface com.esri.sde.sdk.geom.Polygon
  • interface com.esri.sde.sdk.geom.GeometryFactory
  • interface com.esri.sde.sdk.geom.GeometrySource
Overview Package Class Tree Index Help
PREV NEXT FRAMES NO FRAMES


: Interface Point

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Point

All Known Implementing Classes:
SePoint
public interface Point
extends Geometry

The Point interface defines the methods for a class whose instances create a zero-dimensional geometric object which represents a single location in coordinate space.

Method Summary
double | X() Returns the x-coordinate value.
double | Y() Returns the y-coordinate value.
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

X

public double X()
Returns the x-coordinate value.

Y

public double Y()
Returns the y-coordinate value.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Interface Polygon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Polygon

All Known Implementing Classes:
SePolygon
public interface Polygon
extends Surface

The Polygon interface defines the methods for a class whose instances create a geometric object which is defined by 1 exterior boundary and 0 or more interior boundaries.

Method Summary
Linestring | exteriorRing() Returns the exterior ring of a polygon as a linestring.
Linestring | interiorRingN(int n) Returns the nth interior ring of a polygon as a linestring.
int | numInteriorRings() Numinteriorrings takes a polygon and returns the number of its interior rings.
Methods inherited from interface com.esri.sde.sdk.geom.Surface
area, centroid, perimeter, pointOnSurface
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

exteriorRing

public Linestring exteriorRing()
Returns the exterior ring of a polygon as a linestring.

numInteriorRings

public int numInteriorRings()
Numinteriorrings takes a polygon and returns the number of its interior rings.

interiorRingN

public Linestring interiorRingN(int n)
Returns the nth interior ring of a polygon as a linestring. The order of the rings cannot be predefined since the rings are organized according to the rules defined by the internal geometry verification routines and not by geometric orientation.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeCoordRef

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeCoordRef

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeCoordRef
public class SeCoordRef
extends java.lang.Object
implements java.lang.Cloneable, java.io.Serializable

This class represents a coordinate reference. A coordinate reference includes the coordinate system and a set of offset and scale values that convert floating point real-world values into integers for internal storage in the SDE layer.

See Also:
Serialized Form

Constructor Summary
SeCoordRef()
Constructs a coordinate reference object.
Method Summary
int | convertValueToSystem(double planarValue) Returns the system value for the given world value.
SeCoordRef | duplicate() Returns a duplicate of this coordinate reference object.
double | getFalseM() Returns the m false origin for this coordinate reference object.
double | getFalseX() Returns the x false origin for this coordinate reference object.
double | getFalseY() Returns the y false origin for this coordinate reference object.
double | getFalseZ() Returns the z false origin for this coordinate reference object.
double | getMCRound() Returns the m CRound for this coordinate reference object.
double | getMHalfSU() Returns the m HalfSU for this coordinate reference object.
double | getMUnits() Returns the m scale factor for this coordinate reference object.
java.lang.String | getProjectionStr() Returns projection as a string.
int | getSrid() Returns the database spatial reference ID that was used to define this coordinate reference object.
double | getXYCRound() Returns the xy CRound value for this coordinate reference object.
double | getXYHalfSU() Returns the xy HalfSU for this coordinate reference object.
double | getXYUnits() Returns the xy scale factor for this coordinate reference object.
double | getZCRound() Returns the z CRound for this coordinate reference object.
double | getZHalfSU() Returns the z HalfSU for this coordinate reference object.
double | getZUnits() Returns the z scale factor for this coordinate reference object.
boolean | isEqual(SeCoordRef cRefB) Returns true if both coordinate reference objects are equal.
void | setCoordRef(SeCoordRef cr) Returns the x false origin for this coordinate reference object.
void | setFalseM(double falseM) Sets the m false origin for this coordinate reference object.
void | setFalseX(double falseX) Sets the x false origin for this coordinate reference object.
void | setFalseY(double falseY) Sets the y false origin for this coordinate reference object.
void | setFalseZ(double falseZ) Sets the z false origin for this coordinate reference object.
void | setM(double falseM, double mUnits) Sets the measure false origin and scale factor of this coordinate reference object
void | setMCRound(double mCRound) Sets the m CRound for this coordinate reference object.
void | setMHalfSU(double mHalfSU) Sets the m HalfSU for this coordinate reference object.
void | setMUnits(double mUnits) Sets the m scale units for this coordinate reference object.
void | setProjectionStr(java.lang.String projstr) Returns the x false origin for this coordinate reference object.
void | setSrid(int srid) Returns the x false origin for this coordinate reference object.
void | setValues(double falseX, double falseY, double falseZ, double falseM, double xyUnits, double zUnits, double mUnits, double xyCRound, double zCRound, double mCRound, double xyHalfSU, double zHalfSU, double mHalfSU, java.lang.String projStr, int srid) Returns the x false origin for this coordinate reference object.
void | setXY(double falseX, double falseY, double xyUnits) Sets the xy false origin and scale factor for this coordinate reference object.
void | setXYByExtent(SeEnvelope env) Calculates and sets the x,y false origin and scale factor of this coordinate reference object from the given envelope.
void | setXYCRound(double xyCRound) Sets the xy CRound this coordinate reference object.
void | setXYHalfSU(double xyHalfSU) Sets the xy HalfSU for this coordinate reference object.
void | setXYUnits(double xyUnits) Sets the xy scale factor for this coordinate reference object.
void | setZ(double falseZ, double zUnits) Sets the z false origin and scale factor of this coordinate reference object.
void | setZCRound(double zCRound) Sets the z CRound for this coordinate reference object.
void | setZHalfSU(double zHalfSU) Sets the z HalfSU for this coordinate reference object.
void | setZUnits(double zUnits) Sets the z scale factor for this coordinate reference object.
java.lang.String | toString() Returns the x false origin for this coordinate reference object.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeCoordRef

public SeCoordRef()
Constructs a coordinate reference object.
Method Detail

duplicate

public SeCoordRef duplicate()
                     throws com.esri.sde.sdk.geom.SgShapeException
Returns a duplicate of this coordinate reference object.

convertValueToSystem

public int convertValueToSystem(double planarValue)
                         throws com.esri.sde.sdk.geom.SgShapeException
Returns the system value for the given world value.

getFalseX

public double getFalseX()
Returns the x false origin for this coordinate reference object.

getFalseY

public double getFalseY()
Returns the y false origin for this coordinate reference object.

getXYUnits

public double getXYUnits()
Returns the xy scale factor for this coordinate reference object.

getFalseZ

public double getFalseZ()
Returns the z false origin for this coordinate reference object.

getZUnits

public double getZUnits()
Returns the z scale factor for this coordinate reference object.

getFalseM

public double getFalseM()
Returns the m false origin for this coordinate reference object.

getMUnits

public double getMUnits()
Returns the m scale factor for this coordinate reference object.

getXYCRound

public double getXYCRound()
Returns the xy CRound value for this coordinate reference object.

getXYHalfSU

public double getXYHalfSU()
Returns the xy HalfSU for this coordinate reference object.

getZCRound

public double getZCRound()
Returns the z CRound for this coordinate reference object.

getZHalfSU

public double getZHalfSU()
Returns the z HalfSU for this coordinate reference object.

getMCRound

public double getMCRound()
Returns the m CRound for this coordinate reference object.

getMHalfSU

public double getMHalfSU()
Returns the m HalfSU for this coordinate reference object.

isEqual

public boolean isEqual(SeCoordRef cRefB)
Returns true if both coordinate reference objects are equal.

setFalseX

public void setFalseX(double falseX)
Sets the x false origin for this coordinate reference object.

setFalseY

public void setFalseY(double falseY)
Sets the y false origin for this coordinate reference object.

setXYUnits

public void setXYUnits(double xyUnits)
Sets the xy scale factor for this coordinate reference object.

setFalseZ

public void setFalseZ(double falseZ)
Sets the z false origin for this coordinate reference object.

setZUnits

public void setZUnits(double zUnits)
Sets the z scale factor for this coordinate reference object.

setFalseM

public void setFalseM(double falseM)
Sets the m false origin for this coordinate reference object.

setMUnits

public void setMUnits(double mUnits)
Sets the m scale units for this coordinate reference object.

setXYCRound

public void setXYCRound(double xyCRound)
Sets the xy CRound this coordinate reference object.

setXYHalfSU

public void setXYHalfSU(double xyHalfSU)
Sets the xy HalfSU for this coordinate reference object.

setZCRound

public void setZCRound(double zCRound)
Sets the z CRound for this coordinate reference object.

setZHalfSU

public void setZHalfSU(double zHalfSU)
Sets the z HalfSU for this coordinate reference object.

setMCRound

public void setMCRound(double mCRound)
Sets the m CRound for this coordinate reference object.

setMHalfSU

public void setMHalfSU(double mHalfSU)
Sets the m HalfSU for this coordinate reference object.

setXY

public void setXY(double falseX,
                  double falseY,
                  double xyUnits)
Sets the xy false origin and scale factor for this coordinate reference object.

setXYByExtent

public void setXYByExtent(SeEnvelope env)
                   throws com.esri.sde.sdk.geom.SgShapeException
Calculates and sets the x,y false origin and scale factor of this coordinate reference object from the given envelope.

setM

public void setM(double falseM,
                 double mUnits)
Sets the measure false origin and scale factor of this coordinate reference object

setZ

public void setZ(double falseZ,
                 double zUnits)
Sets the z false origin and scale factor of this coordinate reference object.

getProjectionStr

public java.lang.String getProjectionStr()
Returns projection as a string.

setProjectionStr

public void setProjectionStr(java.lang.String projstr)
Returns the x false origin for this coordinate reference object.

getSrid

public int getSrid()
Returns the database spatial reference ID that was used to define this coordinate reference object.

setSrid

public void setSrid(int srid)
Returns the x false origin for this coordinate reference object.

setValues

public void setValues(double falseX,
                      double falseY,
                      double falseZ,
                      double falseM,
                      double xyUnits,
                      double zUnits,
                      double mUnits,
                      double xyCRound,
                      double zCRound,
                      double mCRound,
                      double xyHalfSU,
                      double zHalfSU,
                      double mHalfSU,
                      java.lang.String projStr,
                      int srid)
Returns the x false origin for this coordinate reference object.

toString

public java.lang.String toString()
Returns the x false origin for this coordinate reference object.
Overrides:
toString in class java.lang.Object

setCoordRef

public void setCoordRef(SeCoordRef cr)
Returns the x false origin for this coordinate reference object.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Class SeCurve

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeCurve

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeCurve
Direct Known Subclasses:
SeLinestring
public abstract class SeCurve
extends SeGeometry
implements Curve

This class represents a one-dimensional geometric object usually stored as a sequence of points, its subtype specifies the form of the interpolation between points. One subclass of SeCurve is SeLinestring, which uses linear interpolation between points.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeCurve()
Method Summary
abstract Point | endPoint() Returns the last point of a linestring.
abstract boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
abstract boolean | isRing() Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
abstract double | length() Returns the length of a linestring or multilinestring.
abstract Point | startPoint() Returns the first point of a linestring.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, getMaxX, getMaxY, getMinX, getMinY, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, setCoordRef, srid, symmetricDiff, toString, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeCurve

public SeCurve()
Method Detail

startPoint

public abstract Point startPoint()
Returns the first point of a linestring.
Specified by:
startPoint in interface Curve

endPoint

public abstract Point endPoint()
Returns the last point of a linestring.
Specified by:
endPoint in interface Curve

length

public abstract double length()
Returns the length of a linestring or multilinestring.
Specified by:
length in interface Curve

isRing

public abstract boolean isRing()
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
Specified by:
isRing in interface Curve

isClosed

public abstract boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Specified by:
isClosed in interface Curve
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeEnvelope

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeEnvelope

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeEnvelope
public class SeEnvelope
extends java.lang.Object

This class represents the extent of the geometric object.

Constructor Summary
SeEnvelope()
Creates a default envelope object.
SeEnvelope(double minx, double miny, double maxx, double maxy)
Creates an envelope object given the xy range.
Method Summary
double[] | getExtent() Returns an array of doubles in minx, miny, maxx, maxy order.
double | getMaxX() Returns the maximum x value.
double | getMaxY() Returns the maximum y value.
double | getMinX() Returns the minimum x value.
double | getMinY() Returns the minimum y value.
boolean | isEmpty() Returns true if given envelope is empty.
void | setExtent(double minx, double miny, double maxx, double maxy) Sets bounding box of the envelope given the xy range.
void | setMaxX(double maxX) Sets the maximum x value.
void | setMaxY(double maxY) Sets the maximum y value.
void | setMinX(double minX) Sets the minimum x value.
void | setMinY(double minY) Sets the minimum y value.
java.lang.String | toString() Returns the string representation of the envelope.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeEnvelope

public SeEnvelope()
Creates a default envelope object.

SeEnvelope

public SeEnvelope(double minx,
                  double miny,
                  double maxx,
                  double maxy)
Creates an envelope object given the xy range.
Method Detail

getExtent

public double[] getExtent()
Returns an array of doubles in minx, miny, maxx, maxy order.

setExtent

public void setExtent(double minx,
                      double miny,
                      double maxx,
                      double maxy)
Sets bounding box of the envelope given the xy range.

getMinX

public double getMinX()
Returns the minimum x value.

getMinY

public double getMinY()
Returns the minimum y value.

getMaxX

public double getMaxX()
Returns the maximum x value.

getMaxY

public double getMaxY()
Returns the maximum y value.

setMinX

public void setMinX(double minX)
Sets the minimum x value.

setMinY

public void setMinY(double minY)
Sets the minimum y value.

setMaxX

public void setMaxX(double maxX)
Sets the maximum x value.

setMaxY

public void setMaxY(double maxY)
Sets the maximum y value.

isEmpty

public boolean isEmpty()
Returns true if given envelope is empty.

toString

public java.lang.String toString()
Returns the string representation of the envelope.
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeGeometry

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeGeometry

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
Direct Known Subclasses:
SeCurve, SeGeometryCollection, SePoint, SeSurface
public abstract class SeGeometry
extends java.lang.Object
implements Geometry, java.lang.Cloneable, java.io.Serializable

This is the non-instantiable root class of the hierarchy, its instantiable subclasses are 0, 1 to two-dimensional geometric objects that exist in two-dimensional coordinate space.

See Also:
Serialized Form

Field Summary
static int | LINESTRING_TYPE
static int | LINESTRINGM_TYPE
static int | LINESTRINGZ_TYPE
static int | LINESTRINGZM_TYPE
static int | MULTILINESTRING_TYPE
static int | MULTILINESTRINGM_TYPE
static int | MULTILINESTRINGZ_TYPE
static int | MULTILINESTRINGZM_TYPE
static int | MULTIPOINT_TYPE
static int | MULTIPOINTM_TYPE
static int | MULTIPOINTZ_TYPE
static int | MULTIPOINTZM_TYPE
static int | MULTIPOLYGON_TYPE
static int | MULTIPOLYGONM_TYPE
static int | MULTIPOLYGONZ_TYPE
static int | MULTIPOLYGONZM_TYPE
static int | POINT_TYPE
static int | POINTM_TYPE
static int | POINTZ_TYPE
static int | POINTZM_TYPE
static int | POLYGON_TYPE
static int | POLYGONM_TYPE
static int | POLYGONZ_TYPE
static int | POLYGONZM_TYPE
static int | UNSPECIFIED_TYPE
Constructor Summary
SeGeometry()
Method Summary
java.io.ByteArrayOutputStream | asBinary() Asbinary takes a geometry object and returns its well-known binary representation.
java.io.ByteArrayOutputStream | asBinaryShape() Asbinaryshape takes a geometry object and returns a BLOB.
java.lang.String | asText() Astext takes a geometry object and returns its well-known text representation.
abstract Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
abstract Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
boolean | contains(Geometry g) Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second.
abstract Geometry | convexhull() Returns the convex hull of a geometry object.
boolean | crosses(Geometry g) Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects.
Geometry | difference(Geometry g) Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.
abstract int | dimension() Returns the dimension of a geometry object.
boolean | disjoint(Geometry g) Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).
double | distance(Geometry g) Returns the closest distance separating two geometries.
abstract Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
boolean | envelopesIntersect(Geometry g) Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).
boolean | equal(Geometry g) Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).
abstract Geometry | exterior() The interior is the space occupied by the geometry.
abstract java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
double | getMaxX()
double | getMaxY()
double | getMinX()
double | getMinY()
abstract Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
boolean | intersect(Geometry g) Returns t (TRUE) if the intersection of two geometries doesn’t result in an empty set; otherwise, returns f (FALSE).
Geometry[] | intersection(Geometry g) Intersection takes two geometry objects and returns the intersection set as a geometry object.
abstract boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
abstract boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
abstract boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
abstract boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
boolean | isValid() Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
abstract int | numPoints() Returns the number of points in a geometry.
boolean | overlap(Geometry g) Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).
void | setCoordRef(SeCoordRef cr)
int | srid() Srid takes a geometry object and returns its spatial reference system identity.
Geometry | symmetricDiff(Geometry g) symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that aren’t common to both.
java.lang.String | toString()
boolean | touch(Geometry g) Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE).
Geometry | union(Geometry g) Union returns a geometry object that is the union of two source objects.
boolean | within(Geometry g) Within takes two geometry objects and returns true if the first object is completely within the second, otherwise it returns false.
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Field Detail

UNSPECIFIED_TYPE

public static final int UNSPECIFIED_TYPE

POINT_TYPE

public static final int POINT_TYPE

POINTM_TYPE

public static final int POINTM_TYPE

POINTZ_TYPE

public static final int POINTZ_TYPE

POINTZM_TYPE

public static final int POINTZM_TYPE

MULTIPOINT_TYPE

public static final int MULTIPOINT_TYPE

MULTIPOINTM_TYPE

public static final int MULTIPOINTM_TYPE

MULTIPOINTZ_TYPE

public static final int MULTIPOINTZ_TYPE

MULTIPOINTZM_TYPE

public static final int MULTIPOINTZM_TYPE

LINESTRING_TYPE

public static final int LINESTRING_TYPE

LINESTRINGM_TYPE

public static final int LINESTRINGM_TYPE

LINESTRINGZ_TYPE

public static final int LINESTRINGZ_TYPE

LINESTRINGZM_TYPE

public static final int LINESTRINGZM_TYPE

POLYGON_TYPE

public static final int POLYGON_TYPE

POLYGONM_TYPE

public static final int POLYGONM_TYPE

POLYGONZ_TYPE

public static final int POLYGONZ_TYPE

POLYGONZM_TYPE

public static final int POLYGONZM_TYPE

MULTILINESTRING_TYPE

public static final int MULTILINESTRING_TYPE

MULTILINESTRINGM_TYPE

public static final int MULTILINESTRINGM_TYPE

MULTILINESTRINGZ_TYPE

public static final int MULTILINESTRINGZ_TYPE

MULTILINESTRINGZM_TYPE

public static final int MULTILINESTRINGZM_TYPE

MULTIPOLYGON_TYPE

public static final int MULTIPOLYGON_TYPE

MULTIPOLYGONM_TYPE

public static final int MULTIPOLYGONM_TYPE

MULTIPOLYGONZ_TYPE

public static final int MULTIPOLYGONZ_TYPE

MULTIPOLYGONZM_TYPE

public static final int MULTIPOLYGONZM_TYPE
Constructor Detail

SeGeometry

public SeGeometry()
Method Detail

interior

public abstract Geometry interior()
Description copied from interface: Geometry
The exterior of a geometry if all space not occupied by the geometry.
Specified by:
interior in interface Geometry

exterior

public abstract Geometry exterior()
Description copied from interface: Geometry
The interior is the space occupied by the geometry.
Specified by:
exterior in interface Geometry

boundary

public abstract Geometry boundary()
Description copied from interface: Geometry
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Specified by:
boundary in interface Geometry

buffer

public abstract Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Specified by:
buffer in interface Geometry

isSimple

public abstract boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE). This function determines if the given shape is simple, according to these rules: Points are always simple. MultiPoints are simple if there are no duplicates. Linestrings are simple if they are not self-intersecting (can be closed) Multistrings are simple if eac part is simple, and part only touch at end points. Polygons are always simple. MultiPolygons are always simple.
Specified by:
isSimple in interface Geometry

isEmpty

public abstract boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
Specified by:
isEmpty in interface Geometry

isValid

public boolean isValid()
Returns t (TRUE) if the geometry object is valid (obeys all the Simple Features rule for its type).
Specified by:
isValid in interface Geometry

numPoints

public abstract int numPoints()
Returns the number of points in a geometry.
Specified by:
numPoints in interface Geometry

envelope

public abstract Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Specified by:
envelope in interface Geometry

dimension

public abstract int dimension()
Returns the dimension of a geometry object.
Specified by:
dimension in interface Geometry

is3D

public abstract boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Specified by:
is3D in interface Geometry

isMeasured

public abstract boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Specified by:
isMeasured in interface Geometry

srid

public int srid()
Srid takes a geometry object and returns its spatial reference system identity.
Specified by:
srid in interface Geometry

geometryType

public abstract java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Specified by:
geometryType in interface Geometry

asBinary

public java.io.ByteArrayOutputStream asBinary()
Asbinary takes a geometry object and returns its well-known binary representation.
Specified by:
asBinary in interface Geometry

asText

public java.lang.String asText()
Astext takes a geometry object and returns its well-known text representation.
Specified by:
asText in interface Geometry

asBinaryShape

public java.io.ByteArrayOutputStream asBinaryShape()
Asbinaryshape takes a geometry object and returns a BLOB.

convexhull

public abstract Geometry convexhull()
Returns the convex hull of a geometry object.
Specified by:
convexhull in interface Geometry

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Specified by:
locateAlong in interface Geometry

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
Specified by:
locateBetween in interface Geometry

envelopesIntersect

public boolean envelopesIntersect(Geometry g)
Envelopesintersect returns t (TRUE) if the envelopes of two geometries intersect, otherwise it returns f (FALSE).
Specified by:
envelopesIntersect in interface Geometry

equal

public boolean equal(Geometry g)
Compares two geometries and returns t (TRUE) if the geometries are identical otherwise it returns f (FALSE).
Specified by:
equal in interface Geometry

disjoint

public boolean disjoint(Geometry g)
Disjoint takes two geometries and returns t (TRUE) if the intersection of two geometries produces an empty set; otherwise it returns f (FALSE).
Specified by:
disjoint in interface Geometry

intersect

public boolean intersect(Geometry g)
Returns t (TRUE) if the intersection of two geometries doesn’t result in an empty set; otherwise, returns f (FALSE).
Specified by:
intersect in interface Geometry

touch

public boolean touch(Geometry g)
Touch returns t (TRUE) if none of the points common to both geometries intersect the interiors of both geometries; otherwise it returns f (FALSE). At least one geometry must be a linestring, polygon, multilinestring, or multipolygon.
Specified by:
touch in interface Geometry

overlap

public boolean overlap(Geometry g)
Overlap takes two geometry objects and returns t (TRUE) if the intersection of the objects results in a geometry object of the same dimension but not equal to either source object, otherwise it returns f (FALSE).
Specified by:
overlap in interface Geometry

crosses

public boolean crosses(Geometry g)
Crosses takes two geometry objects and returns t (TRUE) if their intersection results in a geometry object whose dimension is one less than the maximum dimension of the source objects. The intersection object must contain points that are interior to both source geometries and it is not equal to either of the source objects. Otherwise it returns f (FALSE).
Specified by:
crosses in interface Geometry

within

public boolean within(Geometry g)
Description copied from interface: Geometry
Within takes two geometry objects and returns true if the first object is completely within the second, otherwise it returns false.
Specified by:
within in interface Geometry

contains

public boolean contains(Geometry g)
Contains takes two geometry objects and returns t (TRUE) if first object completely contains the second. Otherwise it returns f (FALSE).
Specified by:
contains in interface Geometry

distance

public double distance(Geometry g)
Returns the closest distance separating two geometries.
Specified by:
distance in interface Geometry

intersection

public Geometry[] intersection(Geometry g)
Intersection takes two geometry objects and returns the intersection set as a geometry object.
Specified by:
intersection in interface Geometry

difference

public Geometry difference(Geometry g)
Difference takes two geometry objects and returns a geometry object that is the difference of the source objects.
Specified by:
difference in interface Geometry

union

public Geometry union(Geometry g)
Union returns a geometry object that is the union of two source objects.
Specified by:
union in interface Geometry

symmetricDiff

public Geometry symmetricDiff(Geometry g)
symmetricdiff takes two geometry objects and returns a geometry object that is composed of the parts of the source objects that aren’t common to both.
Specified by:
symmetricDiff in interface Geometry

getMinX

public double getMinX()

getMinY

public double getMinY()

getMaxX

public double getMaxX()

getMaxY

public double getMaxY()

setCoordRef

public void setCoordRef(SeCoordRef cr)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeGeometryCollection

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeGeometryCollection

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
Direct Known Subclasses:
SeMultiCurve, SeMultiPoint, SeMultiSurface
public class SeGeometryCollection
extends SeGeometry
implements GeometryCollection, java.lang.Cloneable, java.io.Serializable

This class represents a geometric object that is a collection of 1 or more geometries. All the elements in a SeGeometryCollection must be in the same Spatial Reference. This is also the Spatial Reference for the SeGeometryCollection.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeGeometryCollection()
Method Summary
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Geometry | convexhull() Returns the convex hull of a geometry object.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | exterior() The interior is the space occupied by the geometry.
Geometry | geometryN(int n) Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
int | numGeometries() Numgeometries takes a collection and returns the number of geometries in the collection.
int | numPoints() Returns the number of points in a geometry.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, toString, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeGeometryCollection

public SeGeometryCollection()
Method Detail

numGeometries

public int numGeometries()
Numgeometries takes a collection and returns the number of geometries in the collection.
Specified by:
numGeometries in interface GeometryCollection

geometryN

public Geometry geometryN(int n)
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
Specified by:
geometryN in interface GeometryCollection

interior

public Geometry interior()
Description copied from interface: Geometry
The exterior of a geometry if all space not occupied by the geometry.
Overrides:
interior in class SeGeometry

exterior

public Geometry exterior()
Description copied from interface: Geometry
The interior is the space occupied by the geometry.
Overrides:
exterior in class SeGeometry

boundary

public Geometry boundary()
Description copied from interface: Geometry
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometry

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometry

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometry

isEmpty

public boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
Overrides:
isEmpty in class SeGeometry

numPoints

public int numPoints()
Returns the number of points in a geometry.
Overrides:
numPoints in class SeGeometry

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometry

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometry

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometry

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometry

convexhull

public Geometry convexhull()
Returns the convex hull of a geometry object.
Overrides:
convexhull in class SeGeometry

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Overrides:
locateAlong in class SeGeometry

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
Overrides:
locateBetween in class SeGeometry
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeLinestring

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeLinestring

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeCurve
              |
              +--com.esri.sde.sdk.geom.SeLinestring
public class SeLinestring
extends SeCurve
implements Linestring, java.lang.Cloneable, java.io.Serializable

This class is a subclass of SeCurve with a linear interpolation between points, each consecutive pair of points defines a line segment.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeLinestring()
SeLinestring(SeCoordRef cr, SePoint[] pts)
SeLinestring(SePoint[] pts)
Method Summary
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Geometry | convexhull() Returns the convex hull of a geometry object.
int | dimension() Returns the dimension of a geometry object.
Point | endPoint() Returns the last point of a linestring.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | exterior() The interior is the space occupied by the geometry.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
double[] | getMs()
SePoint[] | getXYs()
double[] | getZs()
Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isRing() Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
double | length() Returns the length of a linestring or multilinestring.
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
int | numPoints() Returns the number of points in a geometry.
Geometry | pointN(int n) Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.
Point | startPoint() Returns the first point of a linestring.
java.lang.String | toString()
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeLinestring

public SeLinestring()

SeLinestring

public SeLinestring(SePoint[] pts)

SeLinestring

public SeLinestring(SeCoordRef cr,
                    SePoint[] pts)
Method Detail

startPoint

public Point startPoint()
Returns the first point of a linestring.
Overrides:
startPoint in class SeCurve

endPoint

public Point endPoint()
Returns the last point of a linestring.
Overrides:
endPoint in class SeCurve

pointN

public Geometry pointN(int n)
Pointn takes a linestring and an integer index and returns a point that is the nth vertex in the linestringÆs path.
Specified by:
pointN in interface Linestring

length

public double length()
Returns the length of a linestring or multilinestring.
Overrides:
length in class SeCurve

isRing

public boolean isRing()
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
Overrides:
isRing in class SeCurve

isClosed

public boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Overrides:
isClosed in class SeCurve

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometry

interior

public Geometry interior()
The exterior of a geometry if all space not occupied by the geometry.
Overrides:
interior in class SeGeometry

exterior

public Geometry exterior()
The interior is the space occupied by the geometry.
Overrides:
exterior in class SeGeometry

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometry

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometry

isEmpty

public boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
Overrides:
isEmpty in class SeGeometry

numPoints

public int numPoints()
Returns the number of points in a geometry.
Specified by:
numPoints in interface Linestring
Overrides:
numPoints in class SeGeometry

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometry

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometry

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometry

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometry

convexhull

public Geometry convexhull()
Returns the convex hull of a geometry object.
Overrides:
convexhull in class SeGeometry

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Overrides:
locateAlong in class SeGeometry

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
Overrides:
locateBetween in class SeGeometry

getXYs

public SePoint[] getXYs()

getMs

public double[] getMs()

getZs

public double[] getZs()

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMultiCurve

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeMultiCurve

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
              |
              +--com.esri.sde.sdk.geom.SeMultiCurve
Direct Known Subclasses:
SeMultiLinestring
public abstract class SeMultiCurve
extends SeGeometryCollection
implements MultiCurve

This class represents a collection of geometric objects whose elements are SeCurves. SeMultiCurve is a non-instantiable class. An instantiable subclass of SeMultiCurve is SeMultiLinestring.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeMultiCurve()
Method Summary
abstract boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
abstract double | length() Returns the length of a linestring or multilinestring.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometryCollection
boundary, buffer, convexhull, dimension, envelope, exterior, geometryN, geometryType, interior, is3D, isEmpty, isMeasured, isSimple, locateAlong, locateBetween, numGeometries, numPoints
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, toString, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeMultiCurve

public SeMultiCurve()
Method Detail

length

public abstract double length()
Returns the length of a linestring or multilinestring.
Specified by:
length in interface MultiCurve

isClosed

public abstract boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Specified by:
isClosed in interface MultiCurve
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMultiLinestring

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeMultiLinestring

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
              |
              +--com.esri.sde.sdk.geom.SeMultiCurve
                    |
                    +--com.esri.sde.sdk.geom.SeMultiLinestring
public class SeMultiLinestring
extends SeMultiCurve
implements MultiLinestring, java.lang.Cloneable, java.io.Serializable

This class represents a collection of geometric objects whose elements are SeLinestrings.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeMultiLinestring()
SeMultiLinestring(SeCoordRef cr, SeLinestring[] ls)
Method Summary
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | geometryN(int n) Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isClosed() Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isRing() Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
double | length() Returns the length of a linestring or multilinestring.
int | numGeometries() Numgeometries takes a collection and returns the number of geometries in the collection.
java.lang.String | toString()
Methods inherited from class com.esri.sde.sdk.geom.SeGeometryCollection
convexhull, exterior, interior, isEmpty, locateAlong, locateBetween, numPoints
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeMultiLinestring

public SeMultiLinestring()

SeMultiLinestring

public SeMultiLinestring(SeCoordRef cr,
                         SeLinestring[] ls)
Method Detail

length

public double length()
Returns the length of a linestring or multilinestring.
Overrides:
length in class SeMultiCurve

isRing

public boolean isRing()
Isring takes a linestring and returns t (TRUE) if it is a ring (i.e., the linestring is closed and simple); otherwise it returns f (FALSE).

isClosed

public boolean isClosed()
Isclosed takes a linestring or multilinestring and returns t (TRUE) if it is closed; otherwise it returns f (FALSE).
Overrides:
isClosed in class SeMultiCurve

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometryCollection

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometryCollection

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometryCollection

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometryCollection

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometryCollection

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometryCollection

geometryN

public Geometry geometryN(int n)
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
Overrides:
geometryN in class SeGeometryCollection

numGeometries

public int numGeometries()
Numgeometries takes a collection and returns the number of geometries in the collection.
Overrides:
numGeometries in class SeGeometryCollection

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometryCollection

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometryCollection
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMultiPoint

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeMultiPoint

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
              |
              +--com.esri.sde.sdk.geom.SeMultiPoint
public class SeMultiPoint
extends SeGeometryCollection
implements MultiPoint, java.lang.Cloneable, java.io.Serializable

This class represents a collection of geometric objects whose elements are SePoints.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeMultiPoint()
SeMultiPoint(SeCoordRef cr, SePoint[] pts)
Method Summary
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | geometryN(int n) Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
int | numGeometries() Numgeometries takes a collection and returns the number of geometries in the collection.
java.lang.String | toString()
Methods inherited from class com.esri.sde.sdk.geom.SeGeometryCollection
convexhull, exterior, interior, isEmpty, locateAlong, locateBetween, numPoints
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeMultiPoint

public SeMultiPoint()

SeMultiPoint

public SeMultiPoint(SeCoordRef cr,
                    SePoint[] pts)
Method Detail

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometryCollection

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometryCollection

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometryCollection

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometryCollection

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometryCollection

boundary

public Geometry boundary()
Description copied from interface: Geometry
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometryCollection

geometryN

public Geometry geometryN(int n)
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
Overrides:
geometryN in class SeGeometryCollection

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometryCollection

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometryCollection

numGeometries

public int numGeometries()
Numgeometries takes a collection and returns the number of geometries in the collection.
Overrides:
numGeometries in class SeGeometryCollection

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMultiPolygon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeMultiPolygon

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
              |
              +--com.esri.sde.sdk.geom.SeMultiSurface
                    |
                    +--com.esri.sde.sdk.geom.SeMultiPolygon
public class SeMultiPolygon
extends SeMultiSurface
implements MultiPolygon, java.lang.Cloneable, java.io.Serializable

This class represents a collection of geometric objects whose elements are SePolygons.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeMultiPolygon()
SeMultiPolygon(SeCoordRef cr, SePolygon[] ps)
Method Summary
double | area() Returns the area of a polygon or multipolygon.
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | geometryN(int n) Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
int | numGeometries() Numgeometries takes a collection and returns the number of geometries in the collection.
Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
java.lang.String | toString()
Methods inherited from class com.esri.sde.sdk.geom.SeGeometryCollection
convexhull, exterior, interior, isEmpty, locateAlong, locateBetween, numPoints
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeMultiPolygon

public SeMultiPolygon()

SeMultiPolygon

public SeMultiPolygon(SeCoordRef cr,
                      SePolygon[] ps)
Method Detail

area

public double area()
Description copied from class: SeMultiSurface
Returns the area of a polygon or multipolygon.
Overrides:
area in class SeMultiSurface

centroid

public Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Overrides:
centroid in class SeMultiSurface

pointOnSurface

public Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Overrides:
pointOnSurface in class SeMultiSurface

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometryCollection

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometryCollection

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometryCollection

geometryN

public Geometry geometryN(int n)
Geometryn takes a collection and an integer index and returns the nth geometry object in the collection.
Overrides:
geometryN in class SeGeometryCollection

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometryCollection

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometryCollection

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometryCollection

numGeometries

public int numGeometries()
Numgeometries takes a collection and returns the number of geometries in the collection.
Overrides:
numGeometries in class SeGeometryCollection

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometryCollection

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometryCollection
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeMultiSurface

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeMultiSurface

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeGeometryCollection
              |
              +--com.esri.sde.sdk.geom.SeMultiSurface
Direct Known Subclasses:
SeMultiPolygon
public abstract class SeMultiSurface
extends SeGeometryCollection
implements MultiSurface

This is a non-instantiable class which represents a collection of geometric objects whose elements are SeSurfaces. The instantiable subclass of SeMultiSurface is SeMultiPolygon corresponding to a collection of SePolygons.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeMultiSurface()
Method Summary
abstract double | area() Returns the area of a polygon or multipolygon.
abstract Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
abstract Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometryCollection
boundary, buffer, convexhull, dimension, envelope, exterior, geometryN, geometryType, interior, is3D, isEmpty, isMeasured, isSimple, locateAlong, locateBetween, numGeometries, numPoints
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, toString, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeMultiSurface

public SeMultiSurface()
Method Detail

area

public abstract double area()
Returns the area of a polygon or multipolygon.
Specified by:
area in interface MultiSurface

centroid

public abstract Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Specified by:
centroid in interface MultiSurface

pointOnSurface

public abstract Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Specified by:
pointOnSurface in interface MultiSurface
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePoint

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SePoint

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SePoint
public class SePoint
extends SeGeometry
implements Point, java.lang.Cloneable, java.io.Serializable

This class represents a zero-dimensional geometric object and represents a single location in coordinate space. An SePoint has an x-coordinate value and a y-coordinate value.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SePoint()
SePoint(double x, double y)
SePoint(double x, double y, double m)
SePoint(double x, double y, double z, double m)
SePoint(SeCoordRef cr, double x, double y)
SePoint(SeCoordRef cr, double x, double y, double m)
SePoint(SeCoordRef cr, double x, double y, double z, double m)
Method Summary
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Geometry | convexhull() Returns the convex hull of a geometry object.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | exterior() The interior is the space occupied by the geometry.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
double | getM()
double | getZ()
Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
double | m() Returns the measure value of a point.
int | numPoints() Returns the number of points in a geometry.
void | setM(double m)
void | setX(double x)
void | setY(double y)
void | setZ(double z)
java.lang.String | toString()
double | X() Returns the x-coordinate value.
double | Y() Returns the y-coordinate value.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePoint

public SePoint()

SePoint

public SePoint(double x,
               double y)

SePoint

public SePoint(double x,
               double y,
               double m)

SePoint

public SePoint(double x,
               double y,
               double z,
               double m)

SePoint

public SePoint(SeCoordRef cr,
               double x,
               double y)

SePoint

public SePoint(SeCoordRef cr,
               double x,
               double y,
               double m)

SePoint

public SePoint(SeCoordRef cr,
               double x,
               double y,
               double z,
               double m)
Method Detail

X

public double X()
Description copied from interface: Point
Returns the x-coordinate value.
Specified by:
X in interface Point

Y

public double Y()
Description copied from interface: Point
Returns the y-coordinate value.
Specified by:
Y in interface Point

getM

public double getM()

getZ

public double getZ()

setX

public void setX(double x)

setY

public void setY(double y)

setZ

public void setZ(double z)

setM

public void setM(double m)

m

public double m()
Returns the measure value of a point.

interior

public Geometry interior()
The exterior of a geometry if all space not occupied by the geometry.
Overrides:
interior in class SeGeometry

exterior

public Geometry exterior()
The interior is the space occupied by the geometry.
Overrides:
exterior in class SeGeometry

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometry

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometry

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometry

isEmpty

public boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
Overrides:
isEmpty in class SeGeometry

numPoints

public int numPoints()
Returns the number of points in a geometry.
Overrides:
numPoints in class SeGeometry

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometry

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometry

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometry

convexhull

public Geometry convexhull()
Returns the convex hull of a geometry object.
Overrides:
convexhull in class SeGeometry

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Overrides:
locateAlong in class SeGeometry

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
Overrides:
locateBetween in class SeGeometry

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometry

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SePolygon

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SePolygon

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeSurface
              |
              +--com.esri.sde.sdk.geom.SePolygon
public class SePolygon
extends SeSurface
implements Polygon, java.lang.Cloneable, java.io.Serializable

This class represents a planar SeSurface, defined by 1 exterior boundary and 0 or more interior boundaries. Each interior boundary defines a hole in the SePolygon.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SePolygon()
SePolygon(SeCoordRef cr, SeEnvelope env)
SePolygon(SeCoordRef cr, SePoint[] pts)
SePolygon(SeCoordRef cr, SePoint[][] pts)
SePolygon(SePoint[] pts)
SePolygon(SePoint[][] pts)
Method Summary
double | area() Returns the area of a polygon or multipolygon.
Geometry | boundary() Boundary takes a geometry object and returns its combined boundary as a geometry object.
Geometry | buffer(double distance) Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Geometry | convexhull() Returns the convex hull of a geometry object.
int | dimension() Returns the dimension of a geometry object.
Geometry | envelope() Returns the bounding box of a geometry object as a polygon.
Geometry | exterior() The interior is the space occupied by the geometry.
Linestring | exteriorRing() Returns the exterior ring of a polygon as a linestring.
java.lang.String | geometryType() Geometrytype takes a geometry object and returns its geometry type as a string.
double[] | getMs()
SePoint[] | getXYs()
double[] | getZs()
Geometry | interior() The exterior of a geometry if all space not occupied by the geometry.
Linestring | interiorRingN(int n) Returns the nth interior ring of a polygon as a linestring.
boolean | is3D() Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
boolean | isEmpty() Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
boolean | isMeasured() Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
boolean | isSimple() Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Geometry | locateAlong(double measure) Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Geometry | locateBetween(double measure1, double measure2) Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
int | numInteriorRings() Numinteriorrings takes a polygon and returns the number of its interior rings.
int | numPoints() Returns the number of points in a geometry.
double | perimeter() Returns the length of the perimeter of a surface.
Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
java.lang.String | toString()
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, contains, crosses, difference, disjoint, distance, envelopesIntersect, equal, getMaxX, getMaxY, getMinX, getMinY, intersect, intersection, isValid, overlap, setCoordRef, srid, symmetricDiff, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SePolygon

public SePolygon()

SePolygon

public SePolygon(SeCoordRef cr,
                 SeEnvelope env)

SePolygon

public SePolygon(SePoint[] pts)

SePolygon

public SePolygon(SePoint[][] pts)

SePolygon

public SePolygon(SeCoordRef cr,
                 SePoint[] pts)

SePolygon

public SePolygon(SeCoordRef cr,
                 SePoint[][] pts)
Method Detail

area

public double area()
Returns the area of a polygon or multipolygon.
Overrides:
area in class SeSurface

perimeter

public double perimeter()
Returns the length of the perimeter of a surface.
Overrides:
perimeter in class SeSurface

exteriorRing

public Linestring exteriorRing()
Returns the exterior ring of a polygon as a linestring.
Specified by:
exteriorRing in interface Polygon

numInteriorRings

public int numInteriorRings()
Numinteriorrings takes a polygon and returns the number of its interior rings.
Specified by:
numInteriorRings in interface Polygon

interiorRingN

public Linestring interiorRingN(int n)
Returns the nth interior ring of a polygon as a linestring. The order of the rings cannot be predefined since the rings are organized according to the rules defined by the internal geometry verification routines and not by geometric orientation.
Specified by:
interiorRingN in interface Polygon

centroid

public Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Overrides:
centroid in class SeSurface

pointOnSurface

public Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Overrides:
pointOnSurface in class SeSurface

interior

public Geometry interior()
The exterior of a geometry if all space not occupied by the geometry.
Overrides:
interior in class SeGeometry

exterior

public Geometry exterior()
The interior is the space occupied by the geometry.
Overrides:
exterior in class SeGeometry

boundary

public Geometry boundary()
Boundary takes a geometry object and returns its combined boundary as a geometry object.
Overrides:
boundary in class SeGeometry

buffer

public Geometry buffer(double distance)
Buffer takes a geometry object and returns the geometry object that surrounds the source object.
Overrides:
buffer in class SeGeometry

isSimple

public boolean isSimple()
Returns t (TRUE) if the geometry object is simple otherwise, it returns f (FALSE).
Overrides:
isSimple in class SeGeometry

isEmpty

public boolean isEmpty()
Returns t (TRUE) if the geometry is empty; otherwise returns f (FALSE).
Overrides:
isEmpty in class SeGeometry

numPoints

public int numPoints()
Returns the number of points in a geometry.
Overrides:
numPoints in class SeGeometry

envelope

public Geometry envelope()
Returns the bounding box of a geometry object as a polygon.
Overrides:
envelope in class SeGeometry

dimension

public int dimension()
Returns the dimension of a geometry object.
Overrides:
dimension in class SeGeometry

isMeasured

public boolean isMeasured()
Returns t (TRUE) if the geometry object has measures; otherwise, returns f (FALSE).
Overrides:
isMeasured in class SeGeometry

is3D

public boolean is3D()
Returns t (TRUE) if the geometry object has three-dimensional coordinates; otherwise, returns f (FALSE).
Overrides:
is3D in class SeGeometry

geometryType

public java.lang.String geometryType()
Geometrytype takes a geometry object and returns its geometry type as a string.
Overrides:
geometryType in class SeGeometry

convexhull

public Geometry convexhull()
Returns the convex hull of a geometry object.
Overrides:
convexhull in class SeGeometry

locateAlong

public Geometry locateAlong(double measure)
Locatealong takes a geometry object and a measure to return as a multipoint the set of points found at the measure.
Overrides:
locateAlong in class SeGeometry

locateBetween

public Geometry locateBetween(double measure1,
                              double measure2)
Locatebetween takes a geometry object and two measure locations and returns a linestring that represents the set of disconnected paths between the two measure locations.
Overrides:
locateBetween in class SeGeometry

getXYs

public SePoint[] getXYs()

getMs

public double[] getMs()

getZs

public double[] getZs()

toString

public java.lang.String toString()
Overrides:
toString in class SeGeometry
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


: Class SeSurface

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Class SeSurface

java.lang.Object
  |
  +--com.esri.sde.sdk.geom.SeGeometry
        |
        +--com.esri.sde.sdk.geom.SeSurface
Direct Known Subclasses:
SePolygon
public abstract class SeSurface
extends SeGeometry
implements Surface

This class represents a two-dimensional geometric object.

See Also:
Serialized Form

Fields inherited from class com.esri.sde.sdk.geom.SeGeometry
LINESTRING_TYPE, LINESTRINGM_TYPE, LINESTRINGZ_TYPE, LINESTRINGZM_TYPE, MULTILINESTRING_TYPE, MULTILINESTRINGM_TYPE, MULTILINESTRINGZ_TYPE, MULTILINESTRINGZM_TYPE, MULTIPOINT_TYPE, MULTIPOINTM_TYPE, MULTIPOINTZ_TYPE, MULTIPOINTZM_TYPE, MULTIPOLYGON_TYPE, MULTIPOLYGONM_TYPE, MULTIPOLYGONZ_TYPE, MULTIPOLYGONZM_TYPE, POINT_TYPE, POINTM_TYPE, POINTZ_TYPE, POINTZM_TYPE, POLYGON_TYPE, POLYGONM_TYPE, POLYGONZ_TYPE, POLYGONZM_TYPE, UNSPECIFIED_TYPE
Constructor Summary
SeSurface()
Method Summary
abstract double | area() Returns the area of a polygon or multipolygon.
abstract Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
abstract double | perimeter() Returns the length of the perimeter of a surface.
abstract Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Methods inherited from class com.esri.sde.sdk.geom.SeGeometry
asBinary, asBinaryShape, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, getMaxX, getMaxY, getMinX, getMinY, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, setCoordRef, srid, symmetricDiff, toString, touch, union, within
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

Constructor Detail

SeSurface

public SeSurface()
Method Detail

area

public abstract double area()
Returns the area of a polygon or multipolygon.
Specified by:
area in interface Surface

perimeter

public abstract double perimeter()
Returns the length of the perimeter of a surface.
Specified by:
perimeter in interface Surface

centroid

public abstract Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.
Specified by:
centroid in interface Surface

pointOnSurface

public abstract Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Specified by:
pointOnSurface in interface Surface
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


: Interface Surface

Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

com.esri.sde.sdk.geom
Interface Surface

All Known Subinterfaces:
Polygon
All Known Implementing Classes:
SeSurface
public interface Surface
extends Geometry

The Surface interface defines the methods for a class whose instances create a two-dimensional geometric object.

Method Summary
double | area() Returns the area of a polygon or multipolygon.
Point | centroid() Centroid takes a polygon or multipolygon and returns its geometric center as a point.
double | perimeter() Returns the length of the perimeter of a surface.
Point | pointOnSurface() Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Methods inherited from interface com.esri.sde.sdk.geom.Geometry
asBinary, asText, boundary, buffer, contains, convexhull, crosses, difference, dimension, disjoint, distance, envelope, envelopesIntersect, equal, exterior, geometryType, interior, intersect, intersection, is3D, isEmpty, isMeasured, isSimple, isValid, locateAlong, locateBetween, numPoints, overlap, srid, symmetricDiff, touch, union, within

Method Detail

area

public double area()
Returns the area of a polygon or multipolygon.

perimeter

public double perimeter()
Returns the length of the perimeter of a surface.

centroid

public Point centroid()
Centroid takes a polygon or multipolygon and returns its geometric center as a point.

pointOnSurface

public Point pointOnSurface()
Pointonsurface takes a polygon or multipolygon and returns a point guaranteed to lie on its surface.
Overview Package Class Tree Index Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD


Contents

Getting Started with

ArcSDE Java API 8.1

Introduction

Setting up the API

Writing Client Applications

Geometry applications


LayerExample.java

/*$Id: LayerExample.java,v 1.9 2001/02/06 09:59:23 rajk3142 Exp $*/

/*------------------------------------------------------------------------------

*                       ** LayerExample.java **

* Purpose:

*   Example program to demonstrate creation of a new ArcSDE Layer. Also

*   demonstrates inserting, deleting & modifying data.

*

* ------------------------------------------------------------------------------

* Program Overview:

*

*   1. Create an ArcSDE table, "EXAMPLE", and add a spatial column to it.

*

*   2. Execute a fetch query on the ArcSDE database and retrieve all the

*      rows of the layer.

*

*   3. Delete a specific row in the table through a where clause constraint.

*

*   4. Update a specific row in the table using the feature id value.

*

*   5. Update a specific row in the table using a where clause constraint.

*

*   6. Execute a fetch query on the ArcSDE database and retrieve all the

*      rows of the layer.

*

*   7. Delete the ArcSDE table and the associated spatial column.

*

* ------------------------------------------------------------------------------

* Usage: LayerExample <server> <instance> [database] <user> <passwd>

*

* Command line Arguments:

*       Argument     Data Type

*   1. Server Name   (String)

*   2. Instance      (Integer)

*   3. Database Name (String)  <- Optional

*   4. User Name     (String)

*   5. Password      (String)

*

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Copyright (C) 1997-2000, Environmental Systems Research Institute, Inc.

This software is provided with RESTRICTED AND LIMITED RIGHTS.

Use, duplication, and disclosure by the U.S. Government are subject to

restrictions as set forth in FAR Section 52.227-14 Alternate III (g)(3)

(JUN 1987), FAR Section 52.227-19 (JUN 1987), and/or FAR Section

12.211/12.212 [Commercial Technical Data/Computer Software] and DFARS

Section 252.227-7015 (NOV 1995) [Technical Data] and/or DFARS Section

227.7202 [Computer Software], as applicable.

Contractor/Manufacturer is Environmental Systems Research Institute, Inc.,

380 New York Street, Redlands, CA 92373-8100, USA.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*History:

*

*    Rajkumar Padmanabhan      11/2000

*

------------------------------------------------------------------------------*/

import com.esri.sde.sdk.client.*;

import java.util.*;

public class LayerExample {

    /*

     *   Stores the attributes of all the columns of the table created in this test.

     */

    private static SeColumnDefinition colDefs[] = new SeColumnDefinition[6];

    /*

     *   Handle to the ArcSDE connection established.

     */

    private static SeConnection conn = null;

    /*

     *   Main Function

     *   - Expects either 4 or 5 command line arguements.

     * Command line Arguments:

     *   1. Server Name   (String)

     *   2. Instance      (Integer)

     *   3. Database Name (String)  <- Optional

     *   4. User Name     (String)

     *   5. Password      (String)

     *

     *   - Establishes a connection to an ArcSDE Server

     *

     *   - Invokes methods to

     *     ~ Create a layer.

     *     ~ Perform data insert/update/delete/retrieve operations.

     */

    public static void main(String[] args) {

      String server=null, instance=null, database="none", user=null, password=null;

      /*

       *   Process command line arguements

       */

      if( args.length == 5 ) {

          server = args[0];

          instance = args[1];

          database = args[2];

          user = args[3];

          password = args[4];

      }

      else if( args.length == 4 ) {

          server = args[0];

          instance = args[1];

          user = args[2];

          password = args[3];

      }

      else {

          System.out.println("Invalid number of arguements!!");

          System.out.println("Usage: \n LayerExample <server> <instance> [database] <user> <passwd> ");

          System.exit(0);

      }

      Integer intInstance = new Integer(instance);

      try {

          /*

           *   Connect to the ArcSDE server using the command line arguments.

           */

          System.out.println("Connecting to the ArcSDE Server...");

          conn = new SeConnection( server, intInstance.intValue(), database, user, password );

          System.out.println("Connection Successful! \n");

          /*

           *   Create a new table with a spatial column.

           */

          SeLayer layer = createBaseTable();

          /*

           *   Insert data into the layer.

           */

          System.out.println("\n-> Inserting Data into the layer...\n");

          insertData(layer);

          /*

           *   Retrieve data from the layer.

           */

          retrieveData(layer);

          /*

           *   Delete data using a where clause:

           *   where clause : Integer_Val == 8

           */

          SeDelete delete = new SeDelete(conn);

          System.out.println("\n\n--> Deleting rows where Integer_Val = 8");

          delete.fromTable(layer.getQualifiedName(), "INTEGER_VAL = 8");

          /*

           *   Update feature no 2 in the layer.

           */

          updateSingleRow(layer);

          /*

           *   Make changes to data in the table.

           */

          updateData(layer);

          /*

           *   Retrieve data from the layer - confirm changes.

           */

          retrieveData(layer);

          // Delete the base table.

          System.out.println("\nDeleting table and associated spatial column...");

          SeTable table = new SeTable(conn, layer.getQualifiedName());

          table.delete();

          System.out.println(" - Done.");

          System.out.println("Disconnecting from server... \n");

          conn.close();

      /*

       *   Handle exceptions if any of the statements in main failed to execute

       *   successfully.

       */

      } catch( SeException e ) {

          SeError error = e.getSeError();

          // Display the description of the error that occured.

          System.out.println( error.getErrDesc() );

          // Display the database level error if any occured.

          System.out.println( error.getSdeError());

      }

    } // End main

/*

     *   Creates an ArcSDE table, "EXAMPLE", and adds a spatial column, "SHAPE", to it.

     */

    public static SeLayer createBaseTable() {

      SeLayer layer = new SeLayer(conn);

      SeTable table = null;

      try {

          /*

           *   Create a qualified table name with current user's name and

           *   the name of the table to be created, "EXAMPLE".

           */

          String tableName = (conn.getUser() + ".EXAMPLE");

          table = new SeTable( conn, tableName );

          /*

           *   Define the columns and their attributes for the table to be created.

           *   NOTE: The valid range/values of size and scale parameters vary from

           *   one database to another.

           */

          boolean isNullable = true;

          colDefs[0] = new SeColumnDefinition( "Integer_Val", SeColumnDefinition.TYPE_INTEGER, 10, 0, isNullable);

          colDefs[1] = new SeColumnDefinition( "Short_Val", SeColumnDefinition.TYPE_SMALLINT, 4, 0, isNullable);

          colDefs[2] = new SeColumnDefinition( "Float_Val", SeColumnDefinition.TYPE_FLOAT, 5, 2, isNullable);

          colDefs[3] = new SeColumnDefinition( "Double_Val", SeColumnDefinition.TYPE_DOUBLE, 15, 4, isNullable);

          colDefs[4] = new SeColumnDefinition( "String_Val", SeColumnDefinition.TYPE_STRING, 25, 0, isNullable);

          colDefs[5] = new SeColumnDefinition( "Date_Val", SeColumnDefinition.TYPE_DATE, 1, 0, isNullable);

          /*

           *   Create the table using the DBMS default configuration keyword.

           *   Valid config keywords are found in the $SDEHOME\etc\dbtune.sde file.

           */

          System.out.println("\n--> Creating a table using DBMS Default Keyword");

          table.create( colDefs, "DEFAULTS" );

          System.out.println(" - Done.");

          /*

           *   Define the attributes of the spatial column

           */

          layer.setSpatialColumnName("SHAPE");

          layer.setTableName("EXAMPLE");

          /*

           *   Set the type of shapes that can be inserted into the layer. Shape type can be just one

           *   or many.

           *   NOTE: Layers that contain more than one shape type can only be accessed through

           *   the C and Java APIs and Arc Explorer Java. They cannot be seen from ArcGIS

           *   desktop applications.

           */

          layer.setShapeTypes( SeLayer.SE_NIL_TYPE_MASK | SeLayer.SE_POINT_TYPE_MASK |

                         SeLayer.SE_LINE_TYPE_MASK | SeLayer.SE_SIMPLE_LINE_TYPE_MASK |

                         SeLayer.SE_AREA_TYPE_MASK | SeLayer.SE_MULTIPART_TYPE_MASK );

          layer.setGridSizes(1100.0,0.0,0.0);

          layer.setDescription("Layer Example");

          SeExtent ext = new SeExtent(0.0,0.0,10000.0,10000.0);

          layer.setExtent(ext);

          /*

           *   Define the layer's Coordinate Reference

           */

          SeCoordinateReference coordref = new SeCoordinateReference();

          coordref.setXY(0,0,100);

          layer.setCoordRef(coordref);

          /*

           *   Spatially enable the new table...

           */

          System.out.println("\n--> Adding spatial column \"SHAPE\"...");

          layer.create(3,4);

          System.out.println(" - Done.");

      } catch ( SeException e ) {

          System.out.println( e.getSeError().getErrDesc() );

      }

      return layer;

    } // End method createBaseTable

/*

     *   Inserts 8 rows of data into the layer

     *

     *   Columns Inserted

     *   1. Integer  - values: 1 -> 8

     *   2. Short    - values: 1, 2 or 3

     *   3. Float    - values: Random values

     *   4. Double   - values: Random values

     *   5. String   - values: Describes the Shape Type

     *   6. Date     - values: Jan 1 2001 -> Jan 8 2001

     *   7. Shape    - 2 Rectangles, 1 point shape, 1 multi-point shape,

     *   1 simple line, 1 line, 1 single part polygon, 1 multipart polygon.

     */

    public static void insertData(SeLayer layer) {

      /*

       *   Define the names of the columns that data is to be inserted into.

       */

      String columns[] = new String[7];

      columns[0] = new String(colDefs[0].getName());  // Integer column

      columns[1] = new String(colDefs[1].getName());  // Short column

      columns[2] = new String(colDefs[2].getName());  // Float column

      columns[3] = new String(colDefs[3].getName());  // Double column

      columns[4] = new String(colDefs[4].getName());  // String column

      columns[5] = new String(colDefs[5].getName());  // Date column

      columns[6] = new String("SHAPE");   // Shape column

      SeInsert insert = null;

      try {

          insert = new SeInsert(conn);

          insert.intoTable(layer.getName(),columns);

          insert.setWriteMode(true);

          SeRow row = insert.getRowToSet();

          SeCoordinateReference coordref = layer.getCoordRef();

          SeShape shape = new SeShape(coordref);

          Calendar cal = Calendar.getInstance();

          cal.set(2001,00,01,0,0,0);

          /*

           *   Insert 2 Rectangles into the layer

           */

          int numRectangles = 2;

          SeExtent rectangle = new SeExtent();

          int rowId = 1;

          for(rowId = 1; rowId <= numRectangles ; rowId++){

            rectangle.setMinX(2000 + rowId * 500);

            rectangle.setMinY(2000 + rowId * 500);

            rectangle.setMaxX(4000 + rowId * 500);

            rectangle.setMaxY(4000 + rowId * 500);

            shape.generateRectangle(rectangle);

            // set the values in the row

            row.setInteger(0, new Integer(rowId) );

            row.setShort(1, new Short((short)(rowId%3+1)) );

            row.setFloat(2, new Float(-1000.2+ rowId) );

            row.setDouble(3, new Double( 0.02+rowId/1000.0) );

            row.setString(4, "RECTANGLE");

            row.setDate(5, cal.getTime() );

            row.setShape(6,shape);

            // Insert row

            insert.execute();

            System.out.println("\tinserted row " + rowId);

          } // End for

          /*

           *   Insert a simple line

           */

          int points = 2;

          int numParts = 1;

          int partOffSets[] = new int[numParts];

          partOffSets[0] = 0;

          SDEPoint[] ptArray = new SDEPoint[points];

          for( int i = 0 ; i < points ; i++) {

            ptArray[i] = new SDEPoint(5000.0+(i*10),5000.0+(i*100));

          }

          SeShape line1 = new SeShape(coordref);

          line1.generateSimpleLine( points, numParts, partOffSets, ptArray);

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(10.45) );

          row.setDouble(3, new Double( -120.0232) );

          row.setString(4, "SIMPLE LINE");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,line1);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          /*

           *   Insert a multipart line

           */

          numParts = 3;

          int[] partOffsets = new int[numParts];

          partOffsets[0] = 0;

          partOffsets[1] = 3;

          partOffsets[2] = 7;

          int numPts = 12;

          ptArray = new SDEPoint[numPts];

          // line 1

          ptArray[0] = new SDEPoint(100,100);

          ptArray[1] = new SDEPoint(200,200);

          ptArray[2] = new SDEPoint(300,100);

          // line 2 - Self intersecting line

          ptArray[3] = new SDEPoint(200,300);

          ptArray[4] = new SDEPoint(300,400);

          ptArray[5] = new SDEPoint(300,300);

          ptArray[6] = new SDEPoint(200,400);

          // line 3

          ptArray[7] = new SDEPoint(100,700);

          ptArray[8] = new SDEPoint(300,500);

          ptArray[9] = new SDEPoint(500,500);

          ptArray[10] = new SDEPoint(600,600);

          ptArray[11] = new SDEPoint(700,800);

          SeShape multiLine = new SeShape(coordref);

          multiLine.generateLine(numPts, numParts, partOffsets, ptArray);

          rowId++;

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(40.05) );

          row.setDouble(3, new Double( -120.000232) );

          row.setString(4, "MULTI-PART LINE");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,multiLine);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          /*

           *   Insert simple area shape

           */

          numParts = 1;

          partOffsets = new int[numParts];

          partOffsets[0] = 0;

          numPts = 5;

          ptArray = new SDEPoint[numPts];

          ptArray[0] = new SDEPoint(100,100);

          ptArray[1] = new SDEPoint(1200,100);

          ptArray[2] = new SDEPoint(1200,200);

          ptArray[3] = new SDEPoint(100,200);

          ptArray[4] = new SDEPoint(100,100);

          SeShape polygon = new SeShape(coordref);

          polygon.generatePolygon(numPts, numParts, partOffsets, ptArray);

          rowId++;

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(1.456) );

          row.setDouble(3, new Double( 30.177) );

          row.setString(4, "SINGLE PART POLYGON");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,polygon);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          /*

           *   Insert single point shape

           */

          SeShape point = null;

          point = new SeShape(coordref);

          numPts = 1;

          ptArray = new SDEPoint[numPts];

          ptArray[0] = new SDEPoint(8000,8000);

          point.generatePoint(numPts, ptArray);

          rowId++;

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(0.78782) );

          row.setDouble(3, new Double( 4332.3414233) );

          row.setString(4, "SINGLE POINT SHAPE");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,point);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          /*

           *   Insert a multi part point

           */

          numPts = 4;

          ptArray = new SDEPoint[numPts];

          ptArray[0] = new SDEPoint(3000,100);

          ptArray[1] = new SDEPoint(3000,300);

          ptArray[2] = new SDEPoint(4000,300);

          ptArray[3] = new SDEPoint(4000,100);

          point.generatePoint(numPts, ptArray);

          rowId++;

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(0.786456) );

          row.setDouble(3, new Double( 42342.177) );

          row.setString(4, "MULTI POINT SHAPE");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,point);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          /*

           *   Generate complex area shape

           */

          numParts = 2;

          partOffsets = new int[numParts];

          partOffsets[0] = 0;

          partOffsets[1] = 14;

          numPts = 18;

          ptArray = new SDEPoint[numPts];

          // part one

          ptArray[0] = new SDEPoint(100,1100);

          ptArray[1] = new SDEPoint(1500,1100);

          ptArray[2] = new SDEPoint(1500,1900);

          ptArray[3] = new SDEPoint(100,1900);

          ptArray[4] = new SDEPoint(100,1100);

          // Hole - sub part of part one

          ptArray[5] = new SDEPoint(200,1200);

          ptArray[6] = new SDEPoint(200,1500);

          ptArray[7] = new SDEPoint(500,1500);

          ptArray[8] = new SDEPoint(500,1700);

          ptArray[9] = new SDEPoint(800,1700);

          ptArray[10] = new SDEPoint(800,1500);

          ptArray[11] = new SDEPoint(500,1500);

          ptArray[12] = new SDEPoint(500,1200);

          ptArray[13] = new SDEPoint(200,1200);

          // part two

          ptArray[14] = new SDEPoint(1600,1200);

          ptArray[15] = new SDEPoint(2800,1650);

          ptArray[16] = new SDEPoint(1800,2000);

          ptArray[17] = new SDEPoint(1600,1200);

          polygon.generatePolygon(numPts, numParts, partOffsets, ptArray);

          rowId++;

          // set the col values

          row.setInteger(0, new Integer(rowId) );

          row.setShort(1, new Short((short)(rowId%3+1)) );

          row.setFloat(2, new Float(230.7862) );

          row.setDouble(3, new Double( 4234.33177) );

          row.setString(4, "MULTI PART POLYGON");

          row.setDate(5, cal.getTime() );

          cal.roll(Calendar.DATE, true);

          row.setShape(6,polygon);

          // insert row

          insert.execute();

          System.out.println("\tinserted row " + rowId);

          insert.close();

      } catch ( SeException e ) {

          /*

           *   Making sure the insert stream was closed. If the stream isn't closed,

           *   the resources used by the stream will be held/locked by the stream

           *   until the associated connection is closed.

           */

          try {

            insert.close();

          } catch( SeException se ) {

            System.out.println( se.getSeError().getErrDesc() );

          }

          System.out.println( e.getSeError().getSdeError() );

          System.out.println( e.getSeError().getExtError() );

      }

    } // End method insertData

  /*

     *   Retrieves the rows from a specified table/layer.

     *   Data from all the table's columns are retrieved.

     */

    public static void retrieveData(SeLayer layer) {

      System.out.println("\n--> Retrieving Layer Data...");

      try {

          String tableName = layer.getName();

          SeSqlConstruct sqlConstruct = new SeSqlConstruct( tableName );

          SeTable table1 = new SeTable(conn, tableName );

          /*

           *   Get the table's column definition.

           */

          SeColumnDefinition[] tableDef = table1.describe();

          String[] cols = new String[tableDef.length];

          /*

           *   Store the names of all the table's columns in the

           *   String array cols. This array specifies the columns

           *   to be retrieved from the database.

           */

          for( int i = 0 ; i < cols.length ; i++ ) {

            cols[i] = tableDef[i].getName();

          }

          /*

           *   Define ArcSDE server query.

           */

          SeQuery query = new SeQuery( conn, cols, sqlConstruct );

          query.prepareQuery();

          query.execute();

          SeRow row = null;

          SeColumnDefinition colDef = new SeColumnDefinition();

          /*

           *   Fetch the first row that matches the query.

           */

          row = query.fetch();

          if( row == null ) {

            System.out.println(" No rows fetched");

            return;

          }

          int max = row.getNumColumns();

          int rowNo = 1;

          while( row != null ) {

            System.out.println("\n\nContents of Row " + rowNo++);

            for( int i=0 ; i < max ; i++ ) {

                colDef = row.getColumnDef(i);

                int type = colDef.getType();

                // don't try to retrieve the value if the indicator is NULL

                if ( row.getIndicator((short)i) != SeRow.SE_IS_NULL_VALUE) {

switch( type ) {

                  case SeColumnDefinition.TYPE_SMALLINT:

                      System.out.println("\t" + colDef.getName() + " : " + row.getShort(i));

                      break;

                  case SeColumnDefinition.TYPE_DATE:

                      System.out.println("\t" + colDef.getName() + " : " + row.getDate(i));

                      break;

                  case SeColumnDefinition.TYPE_INTEGER:

                      System.out.println("\n\t" + colDef.getName() + " : " + row.getInteger(i));

                      break;

                  case SeColumnDefinition.TYPE_FLOAT:

                      System.out.println("\t" + colDef.getName() + " : " + row.getFloat(i) );

                      break;

                  case SeColumnDefinition.TYPE_DOUBLE:

                      System.out.println("\t" + colDef.getName() + " : " + row.getDouble(i) );

                      break;

                  case SeColumnDefinition.TYPE_STRING:

                      System.out.println("\t" + colDef.getName() + " : " + row.getString(i));

                      break;

                  case SeColumnDefinition.TYPE_SHAPE:

                      System.out.println("\t" + colDef.getName() + " : " );

                      SeShape spVal = (SeShape)row.getShape(i);

                      getShapeDetails(spVal);

                      break;

                  } // End switch

                } // End if

            } // End for

            // Fetch the next row that matches the query.

            row = query.fetch();

          } // End while

          query.close();

      }

      catch ( SeException e ) {

          System.out.println(e.getSeError().getErrDesc() );

      }

    } // End method retrieveData

  /*

     *    Retrieves the attributes of a shape object. This

     *    method is invoked by the retrieveData method.

     *    Retrieves the follg details about a shape:

     *       - Shape Type

     *       - Shape's extent

     *       - All its coordinate points

     */

    public static void getShapeDetails( SeShape shape ) {

      try {

          /*

           *   Retrieve the shape type.

           */

          int type = -1;

          type = shape.getType();

          System.out.print("\n\t\tShape Type : ");

          switch( type ) {

          case SeShape.TYPE_LINE:

            System.out.println("Line");

            break;

          case SeShape.TYPE_MULTI_LINE:

            System.out.println("Multi Line");

            break;

          case SeShape.TYPE_MULTI_POINT:

            System.out.println("Multi point");

            break;

          case SeShape.TYPE_MULTI_POLYGON:

            System.out.println("Polygon");

            break;

          case SeShape.TYPE_MULTI_SIMPLE_LINE:

            System.out.println("Multi Simple Line");

            break;

          case SeShape.TYPE_NIL:

            System.out.println("Nil");

            break;

          case SeShape.TYPE_POINT:

            System.out.println("Point");

            break;

          case SeShape.TYPE_POLYGON:

            System.out.println("Polygon");

            break;

          case SeShape.TYPE_SIMPLE_LINE:

            System.out.println("Simple Line");

            break;

          } // End switch

          /*

           *   Get shape's extent

           */

          SeExtent sExtent = shape.getExtent();

          System.out.println("\n\t\tShape's Extent -> MinX: " + sExtent.getMinX() + " MinY: "+ sExtent.getMinY() + " MaxX: "+ sExtent.getMaxX() + " MaxY: "+ sExtent.getMaxY());

          /*

           *   Retrieve coordinate points of the shape

           */

          System.out.println("\n\t\tShape Coordinates : ");

          double points[][][] = shape.getAllCoords();

          int numParts = shape.getNumParts();

          System.out.println("\t\tNo. of parts : " + numParts );

          System.out.println("\t\tNo. of points : " + shape.getNumOfPoints() );

          for( int partNo = 0 ; partNo < numParts ; partNo++ ) {

            int numSubParts = shape.getNumSubParts(partNo+1);

            System.out.println("\t\tNo. of sub-parts : " + numSubParts );

            for( int subPartNo = 0 ; subPartNo < numSubParts ; subPartNo++ ) {

                int numCoords = shape.getNumPoints(partNo+1, subPartNo+1);

                System.out.println("\t\tNo. of coordinates : " + numCoords );

                for( int pointNo = 0 ; pointNo < numCoords ; pointNo++) {

                  System.out.println("\t\tX: " + points[partNo][subPartNo][pointNo] +

                                 "\tY: " + points[partNo][subPartNo][(pointNo+1)] );

                }

            }

          }

      } catch( SeException e ) {

          System.out.println(e.getSeError().getErrDesc());

      }

    } // End getShapeDetails

  /*

     *  Updates a single row of the layer corresponding to a specific

     *  feature id.

     */

    public static void updateSingleRow( SeLayer layer ) {

      System.out.println("\n--> Updating feature id 2 in layer...");

      // Set feature_id to 2.

      SeObjectId featureId = new SeObjectId(2);

      String tableName = layer.getName();

      String columns[] = new String[2];

      SeQuery query = null;

      SeShape shape = null;

      try {

          /*

           *   Define the names of the columns that will be updated.

           */

            columns[0] = new String(colDefs[4].getName());  // Shape description column

          columns[1] = new String("SHAPE");   // Shape column

          System.out.println("\n\t--> Retrieving feature id - " + featureId.longValue());

          query = new SeQuery(conn);

          SeRow row = null;

          SeColumnDefinition colDef = new SeColumnDefinition();

          // Fetch the row associated with feature_id 2.

          row = query.fetchRow(layer.getName(),featureId, columns);

          if( row == null ) {

            System.out.println("\t No rows fetched");

            return;

          }

          /*

           *   Retrieve the shape object from the row fetched.

           */

          int max = row.getNumColumns();

          for( int i=0 ; i < max ; i++ ) {

            colDef = row.getColumnDef(i);

            int type = colDef.getType();

            if ( row.getIndicator((short)i) != SeRow.SE_IS_NULL_VALUE) {

                switch( type ) {

                case SeColumnDefinition.TYPE_SHAPE:

                  shape = (SeShape)row.getShape(i);

                  break;

                } // End switch

            } // End if

          } // End for

          query.close();

      }

      catch ( SeException e ) {

          /*

           *   Make sure the query stream was closed

           */

          try{

            query.close();

          }catch( SeException se ) {

            System.out.println( se.getSeError().getErrDesc() );

          }

          System.out.println(e.getSeError().getErrDesc() );

      }

      System.out.println("\n\t--> Updating shape column... ");

      SeUpdate update = null;

      try {

          update = new SeUpdate(conn);

          SeRow row = update.singleRow(featureId, tableName, columns);

          /*

           *   Add a donut hole to the existing shape

           */

          SDEPoint[] pts = new SDEPoint[5];

          pts[0] = new SDEPoint(3500,3500);

          pts[1] = new SDEPoint(3500,4500);

          pts[2] = new SDEPoint(4500,4500);

          pts[3] = new SDEPoint(4500,3500);

          pts[4] = new SDEPoint(3500,3500);

          shape.addIsland(pts);

          // Set the new values for the selected row

          row.setString(0, "UPDATED RECTANGLE");

          row.setShape(1, shape);

          update.execute();

          update.close();

      } catch( SeException e )  {

          /*

           *   Make sure the update stream was closed

           */

          try{

            update.close();

          }catch( SeException se ) {

            System.out.println( se.getSeError().getErrDesc() );

          }

          System.out.println( e.getSeError().getErrDesc() + e.getSeError().getSdeError());

      }

    } // End updateSingleRow

  /*

     *  Updates a single row of the layer. This update function can be modified

     *  to perform multiple row updates by altering the where clause constraint

     */

    public static void updateData( SeLayer layer ) {

        SeUpdate update = null;

      try {

          update = new SeUpdate(conn);

          /*

           *   Define the names of the columns that will be updated

           */

          String columns[] = new String[7];

          columns[0] = new String(colDefs[0].getName());  // Integer column

          columns[1] = new String(colDefs[1].getName());  // Short column

          columns[2] = new String(colDefs[2].getName());  // Float column

          columns[3] = new String(colDefs[3].getName());  // Double column

          columns[4] = new String(colDefs[4].getName());  // String column

          columns[5] = new String(colDefs[5].getName());  // Date column

          columns[6] = new String("SHAPE");   // Shape column

          System.out.println("\n--> Updating Data in table... ");

          System.out.println("\n\t--> Changing Integer_Value 4 to 1000");

          String whereClause = new String("INTEGER_VAL = 4");

          update.toTable(layer.getName(), columns, whereClause);

          update.setWriteMode(true);

          SeRow row = update.getRowToSet();

          /*

           *   Generate a simple line to replace the multi-part

           *   currently in row 4

           */

          int points = 4;

          int numParts = 1;

          int partOffSets[] = new int[numParts];

          partOffSets[0] = 0;

          SDEPoint[] ptArray = new SDEPoint[points];

          for( int i = -1 ; i < (points-1) ; i++) {

            ptArray[i+1] = new SDEPoint(3200.0 + i*300 ,1500.0 + i*i*400 );

          }

          SeShape line = new SeShape(layer.getCoordRef());

          line.generateSimpleLine( points, numParts, partOffSets, ptArray);

          // Set the new values for the selected row

          row.setInteger(0, new Integer(1000) );

          row.setShort(1, new Short((short)4) );

          row.setFloat(2, new Float(100.00) );

          row.setDouble(3, new Double( 10000.000) );

          row.setString(4, "UPDATED LINE SHAPE");

          // Sets date to current date

          row.setDate(5, new Date() );

          row.setShape(6,line);

          update.execute();

          update.close();

      } catch( SeException e )  {

          /*

           *   Make sure the update stream was closed

           */

          try{

            update.close();

          }catch( SeException se ) {

            System.out.println( se.getSeError().getErrDesc() );

          }

          System.out.println(e.getSeError().getErrDesc() + e.getSeError().getSdeError());

      }

    } // End method updateData

} // End LayerExample


LogExample.java

/*$Id: LogExample.java,v 1.2 2001/01/29 14:02:59 rajk3142 Exp $*/

/*------------------------------------------------------------------------------

*                       ** LogExample.java **

* Purpose:

*   Demonstrates use of logfiles.

*

* ------------------------------------------------------------------------------

*

* Usage: LogExample <server> <instance> [database] <user> <passwd>

*

* Command line Arguments:

*       Argument     Data Type

*   1. Server Name   (String)

*   2. Instance      (Integer)

*   3. Database Name (String)  <- Optional

*   4. User Name     (String)

*   5. Password      (String)

*

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Copyright (C) 1997-2000, Environmental Systems Research Institute, Inc.

This software is provided with RESTRICTED AND LIMITED RIGHTS.

Use, duplication, and disclosure by the U.S. Government are subject to

restrictions as set forth in FAR Section 52.227-14 Alternate III (g)(3)

(JUN 1987), FAR Section 52.227-19 (JUN 1987), and/or FAR Section

12.211/12.212 [Commercial Technical Data/Computer Software] and DFARS

Section 252.227-7015 (NOV 1995) [Technical Data] and/or DFARS Section

227.7202 [Computer Software], as applicable.

Contractor/Manufacturer is Environmental Systems Research Institute, Inc.,

380 New York Street, Redlands, CA 92373-8100, USA.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*History:

*

*    Rajkumar Padmanabhan      1/2001

*

------------------------------------------------------------------------------*/

import com.esri.sde.sdk.client.*;

import java.util.*;

public class LogExample {

    private static SeColumnDefinition colDefs[] = new SeColumnDefinition[6];

    private static SeConnection conn = null;

    private static SeLayer layer = null;

    private static int MAX_ROWS = 25;

    // Stores the feature ids of the data inserted into the layer

    private static SeObjectId[] rowIds = new SeObjectId[MAX_ROWS];

    public static void main(String[] args) {

      String server=null, instance=null, database="none", user=null, password=null;

      /*

       *   Process command line arguements

       */

      if( args.length == 5 ) {

          server = args[0];

          instance = args[1];

          database = args[2];

          user = args[3];

          password = args[4];

      }

      else if( args.length == 4 ) {

          server = args[0];

          instance = args[1];

          user = args[2];

          password = args[3];

      }

      else {

          System.out.println("Invalid number of arguements!!");

          System.out.println("Usage: \n LogExample <server> <instance> [database] <user> <passwd> ");

          System.exit(0);

      }

      Integer intInstance = new Integer(instance);

      try {

          /*

           *   Connect to the ArcSDE server

           */

          System.out.println("Connecting to ArcSDE Server...");

          conn = new SeConnection( server, intInstance.intValue(), database, user, password );

          System.out.println("Connection Successful! \n");

          /*

           *   Create an ArcSDE Layer "LOGEXAMPLE"

           */

          createBaseLayer();

          /*

           *   Registers the layer giving it a new column

           *   Row_id maintained by the server

           */

          registerTable();

          /*

           *   Inserts MAX_ROWS of data into the layer.

           *   The feature ids of the data inserted is stored

           *   in the array rowIds.

           */

          insertData();

          /*

           *   Create a new log file log_file_one and add feature ids to it

           */

          createLogFileOne();

          /*

           *   Create a new log file log_file_two and attach it to a

           *   query's output stream.

           */

          createLogFileTwo();

          /*

           *   Delete base table

           */

          SeTable table = new SeTable(conn, layer.getName());

          table.delete();

          /*

           *   Disconnect from the server

           */

          System.out.println("\nDisconnecting... \n");

          conn.close();

      } catch( SeException e) {

          System.out.println(" ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End main

    /*

     *   Creates a new log file "log_file_one" and

     *   inserts features from the layer "logexample" into it.

     */

    public static void createLogFileOne() {

      try {

          /*

           *   Create a temporary log file called "log_file_one"

           */

          System.out.println("\nCreating logfile - log_file_one");

          SeLog logOne = new SeLog(conn);

          logOne.setName("log_file_one");

          /*

           *   Set the layer that was created as the target for this log file

           */

          logOne.setTargetAsLayer(layer.getName(), layer.getSpatialColumn());

          /*

           *   Open the log file in create and write mode

           */

          System.out.println("Opening log one in CREATE_AND_WRITE mode");

          logOne.openLog(SeLog.SE_CREATE_AND_WRITE_MODE);

          /*

           *   Retrieve the feature id values of the first 5 rows that

           *   were inserted into the layer and put these values

           *   in the array "rows".

           */

          SeObjectId[] rows = new SeObjectId[5];

          for( int i = 0 ; i < 5 ; i++ )

            rows[i] = (SeObjectId) rowIds[i];

          /*

           *   Adding multiple feature ids at a time.

           *   Add the feature id values in the array rows to the logOne.

           */

          System.out.println("Adding feature id's to log file");

          logOne.addIds(rows);

          /*

           *   Adding feature ids one by one

           *   Add the feature ids of rows 6-10 of the layer to logOne.

           */

          for( int i = 5 ; i < 11 ; i++ )

            logOne.addId(rowIds[i]);

          /*

           *   Retrieve the log file attributes and contents

           */

          getLogInfo(logOne);

          /*

           *   Delete a list of feature ids from the logfile:

           *   Delete features 1, 3 & 5 from logfile

           */

          SeObjectId[] deleteList = new SeObjectId[3];

          System.out.println("Deleting features 1, 3 & 5 from logfile");

          for( int i = 0 ; i < 3 ; i++ )

            deleteList[i] = rowIds[i*2];

          logOne.deleteIds(deleteList);

          /*

           *   Display the contents of the log file

           */

          getLogInfo(logOne);

          /*

           *   Close the log file

           */

          logOne.close();

          /*

           *   Open logOne again, but this time in over write mode to

           *   replace old entries with new ones.

           */

          System.out.println("Re-opening log_file_one in OVERWRITE mode");

          logOne.openLog(SeLog.SE_OVERWRITE_MODE);

          /*

           *   Insert rows 11 to 15 from the layer into logOne, erasing all

           *   existing entries in the log file.

           */

          System.out.println("\n Inserting 5 new feature id's - over old ones");

          rows = new SeObjectId[5];

          for( int i = 0 ; i < 5 ; i++ )

            rows[i] = rowIds[i+10];

          logOne.addIds(rows);

          /*

           *   Display the contents of the log file

           */

          getLogInfo(logOne);

          logOne.close();

          /*

           *   Re-open the log file in modify mode and append features

           *   to log_file_one

           */

          logOne.openLog(SeLog.SE_MODIFY_MODE);

          /*

           *   Append rows 1 to 5 from the layer into logOne

           */

          System.out.println("\n Adding 5 new feature id's into log file");

          rows = new SeObjectId[5];

          for( int i = 0 ; i < 5 ; i++ )

            rows[i] = rowIds[i];

          logOne.addIds(rows);

          /*

           *   Display the contents of the log file

           */

          getLogInfo(logOne);

          logOne.close();

          /*

           *   Delete the log file from the database

           *   Since this log file was created as a temporary log file,

           *   the default property, it will be automatically deleted

           *   when the current connection is closed.

           */

          logOne.delete();

      } catch ( SeException e ) {

          System.out.println(" ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End static method createLogFileOne

    /*

     *   Creates a log file "log_file_two".

     *   This log file is associated with a query stream

     *   The results of the query are directed into the logfile.

     */

    public static void createLogFileTwo() {

      try {

          String tableName = layer.getName();

          SeSqlConstruct sqlConstruct = new SeSqlConstruct( tableName );

          SeTable table = new SeTable(conn, tableName );

          SeColumnDefinition[] tableDef = table.describe();

          String[] cols = new String[tableDef.length];

          for( int i = 0 ; i < cols.length ; i++ ) {

            cols[i] = tableDef[i].getName();

          }

          SeColumnDefinition colDef = new SeColumnDefinition();

          SeQuery query = new SeQuery( conn, cols, sqlConstruct );

          query.prepareQuery();

          SeLog logTwo = new SeLog(conn);

          logTwo.setName("log_file_two");

          /*

           *   Set the layer that was created as the target for this log file

           */

          logTwo.setTargetAsLayer(layer.getName(), layer.getSpatialColumn());

          logTwo.openLog(SeLog.SE_CREATE_AND_WRITE_MODE);

          boolean logfileOnly = true;

          query.setLogfile(logTwo, logfileOnly);

          query.execute();

          query.close();

          /*

           *   Display the contents of the log file

           */

          getLogInfo(logTwo);

          logTwo.close();

      } catch ( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          e.printStackTrace();

      }

    } // End static method createLogFileTwo

    /*

     *   Retrieves the following information about the log file:

     *   - The name of the log file.

     *   - The id no of the log file.

     *   - Whether this log file is persistent or not.

     *   - Information about the logfile's target:

     *       * The name of the target table/layer.

     *       * The name of the target spatial column if the target is a layer.

     *   - No of rows of data stored in the log file.

     *   - The row ids of the data stored in the log file.

     */

    public static void getLogInfo(SeLog log) {

      try {

          System.out.println("\nLog file info...");

          System.out.println("Log Name : " + log.getName() );

          System.out.println("Log Id : " + log.getId().longValue() );

          System.out.println("Log is persistent : " + log.isPersistent() );

          SeLog.SeLogTargetInfo target = log.getTargetInfo();

          if(target.tableName != null)

            System.out.println("Target table Name : " + target.tableName );

          else

            System.out.println("Target name null!");

          if(target.spatialColumn != null)

            System.out.println("Target Spatial Col : " + target.spatialColumn );

          else

            System.out.println("Target spatialCols null!");

          if( target.type == SeLog.SE_LOG_FOR_TABLE )

            System.out.println("Target Type : Table");

          else if( target.type == SeLog.SE_LOG_FOR_LAYER )

            System.out.println("Target Type : Layer");

          int numRows = log.count();

          System.out.println("Log count : " + numRows );

          if( numRows > 0 ) {

            SeObjectId[] retrievedRows = new SeObjectId[numRows];

            retrievedRows = log.getRowIds(numRows);

            System.out.println("Retrieved Row ids " );

            for( int i = 0 ; i < retrievedRows.length ; i++ )

                System.out.println("\t" + retrievedRows[i].longValue() );

          }

      }catch( SeException e ) {

          e.printStackTrace();

      }

    } // End method getLogInfo

    /*

     *   Creates an ArcSDE table, "LOGEXAMPLE", spatially enables it.

     *   Layer has 7 columns: Integer, Short, Float , Double, String,

     *   Date and Shape.

     */

    public static void createBaseLayer() {

      layer = new SeLayer(conn);

      SeTable table = null;

      try {

          /*

           *   Create a qualified table name with current user's name and

           *   the string "LOGEXAMPLE".

           */

          String tableName = (conn.getUser() + ".LOGEXAMPLE");

          table = new SeTable( conn, tableName );

          // Delete table if it already exists

          try {

            table.delete();

          } catch( SeException e) {}

          /*

           *   Define columns for the tables..

           */

          boolean isNullable = true;

          colDefs[0] = new SeColumnDefinition( "Integer_Val", SeColumnDefinition.TYPE_INTEGER, 10, 0, isNullable);

          colDefs[1] = new SeColumnDefinition( "Short_Val", SeColumnDefinition.TYPE_SMALLINT, 4, 0, isNullable);

          colDefs[2] = new SeColumnDefinition( "Float_Val", SeColumnDefinition.TYPE_FLOAT, 5, 2, isNullable);

          colDefs[3] = new SeColumnDefinition( "Double_Val", SeColumnDefinition.TYPE_DOUBLE, 15, 4, isNullable);

          colDefs[4] = new SeColumnDefinition( "String_Val", SeColumnDefinition.TYPE_STRING, 25, 0, isNullable);

          colDefs[5] = new SeColumnDefinition( "Date_Val", SeColumnDefinition.TYPE_DATE, 1, 0, isNullable);

          /*

           *   Use DBMS default config keyword...

           *   Valid config keywords are found in the dbtune.sde file

           */

          System.out.println("\n--> Create table using DBMS Default Keyword");

          table.create( colDefs, "" );

          System.out.println(" - Done.");

          /*

           *   Spatially enable the new table...

           */

          System.out.println("\n--> Spatially enabling the table...");

          layer.setSpatialColumnName("SHAPE");

          layer.setTableName("LOGEXAMPLE");

          /*

           *   Set the type of shapes that can be inserted into the layer

           */

          layer.setShapeTypes( SeLayer.SE_NIL_TYPE_MASK | SeLayer.SE_POINT_TYPE_MASK |

                         SeLayer.SE_LINE_TYPE_MASK | SeLayer.SE_SIMPLE_LINE_TYPE_MASK |

                         SeLayer.SE_AREA_TYPE_MASK | SeLayer.SE_MULTIPART_TYPE_MASK );

          layer.setGridSizes(1000.0,0.0,0.0);

          layer.setDescription("Log Test Layer");

          SeExtent ext = new SeExtent(0.0,0.0,10000.0,10000.0);

          layer.setExtent(ext);

          /*

           *   Define layer's Coordinate Reference

           */

          SeCoordinateReference coordref = new SeCoordinateReference();

          coordref.setXY(0,0,100);

          layer.setCoordRef(coordref);

          // Spatially enable business table

          layer.create(0,0);

          System.out.println(" - Done.");

      } catch ( SeException e ) {

          System.out.println( e.getSeError().getErrDesc() );

      }

    } // End method createBaseLayer

    /*

     *   Inserts MAX_ROWS rows of data into the base table.

     *   Values inserted:

     *   Col         Type    Value

     *   integer_val    Int      1->MAX_ROWS

     *   short_val   Short    1/2

     *   float_val   Float    3

     *   double_val  Double   4

     *   date_val    Date

     *   string_val  String

     *   shape       rectangles

     */

    public static void insertData() {

      // Insert Data into table...

      SeInsert insert = null;

      try {

          insert = new SeInsert(conn);

      } catch( SeException se )  {

          System.out.println(se.getSeError().getErrDesc() );

      }

      String[] columns = new String[7];

      // Integer data type

      columns[0] = colDefs[0].getName();

      // Small int data type

      columns[1] = colDefs[1].getName();

      // float data type

      columns[2] = colDefs[2].getName();

      // double data type

      columns[3] = colDefs[3].getName();

      // String data type

      columns[4] = colDefs[4].getName();

      // Date data type

      columns[5] = colDefs[5].getName();

      // Shape column

      columns[6] = "SHAPE";

      Calendar cal = Calendar.getInstance();

      cal.set(1999,00,01,0,0,0);

      System.out.println("\n--> Inserting Data into table... ");

      try {

          insert.intoTable(layer.getName(), columns);

          insert.setWriteMode(true);

          for( int count = 1 ; count <= MAX_ROWS ; count++){

            SeRow row = insert.getRowToSet();

            Integer testInt = new Integer(count);

            short testShort = (short)(count%2 + 1);

            Float testFloat = new Float(3.0);

            Double testDouble = new Double(4.0);

            Date date = new Date(100000);

            row.setInteger(0, testInt);

            row.setShort(1,new Short(testShort));

            row.setFloat(2, testFloat);

            row.setDouble(3, testDouble);

            row.setString(4,"String value");

            row.setDate(5, cal.getTime() );

            cal.roll(Calendar.YEAR, true);

            SeShape shape = new SeShape(layer.getCoordRef());

            SeExtent rectangle = new SeExtent();

            rectangle.setMinX(2000 + count * 200);

            rectangle.setMinY(2000 + count * 200);

            rectangle.setMaxX(4000 + count * 200);

            rectangle.setMaxY(4000 + count * 200);

            shape.generateRectangle(rectangle);

            row.setShape(6,shape);

            insert.execute();

            /*

             *   Store the feature id's of each row inserted into the

             *   layer in the array rowIds so that it can be used later

             */

            rowIds[(count-1)] = insert.lastInsertedRowId();

          }

          insert.flushBufferedWrites();

          insert.close();

      } catch( SeException e )  {

          try {

            insert.close();

          }catch( SeException se ) {

            se.printStackTrace();

          }

          e.printStackTrace();

      }

    } // End insertData

    /*

     *   Registers the base table, giving it an ArcSDE maintained Row_id column

     */

    public static void registerTable() {

      SeRegistration registration = null;

      /*

       *   Retrieve the table's registration.

       */

      try {

          registration = new SeRegistration( conn, layer.getName());

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Update the table's registration to give it an ArcSDE maintained

       *   row id.

       */

      try {

          registration.setRowIdColumnName("ROW_ID");

          registration.setRowIdColumnType(SeRegistration.SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      try {

          System.out.println("\n\t Updating registration info...");

          registration.alter();

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End method registerTable

} // End LogExample


SpatialQueryExample.java

/*$Id: SpatialQueryEx.java,v 1.3 2000/12/06 00:29:11 sdemst81 Locked $*/

/*------------------------------------------------------------------------------

*                       (SpatialQueryEx.java)

* Purpose:

*   Performs spatial queries on layers

*

*-------------------------------------------------------------------------------

* Usage: SpatialQueryEx <server> <instance> [database] <user> <passwd> <table>

*                       <spatial column>

*

*       Argument     Data Type

*   1. Server Name   (String)

*   2. Instance      (Integer)

*   3. Database Name (String)  <- Optional

*   4. User Name     (String)

*   5. Password      (String)

*   6. Table Name    (String)

*   7. Spatial Col   (String)

*

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Copyright (C) 1997-2000, Environmental Systems Research Institute, Inc.

This software is provided with RESTRICTED AND LIMITED RIGHTS.

Use, duplication, and disclosure by the U.S. Government are subject to

restrictions as set forth in FAR Section 52.227-14 Alternate III (g)(3)

(JUN 1987), FAR Section 52.227-19 (JUN 1987), and/or FAR Section

12.211/12.212 [Commercial Technical Data/Computer Software] and DFARS

Section 252.227-7015 (NOV 1995) [Technical Data] and/or DFARS Section

227.7202 [Computer Software], as applicable.

Contractor/Manufacturer is Environmental Systems Research Institute, Inc.,

380 New York Street, Redlands, CA 92373-8100, USA.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*History:

*

*    Rajkumar Padmanabhan       11/2000

*

------------------------------------------------------------------------------*/

import com.esri.sde.sdk.client.*;

import java.util.Vector;

import java.io.*;

public class SpatialQueryEx {

    private static SeLayer layer = null;

    private static SeTable table = null;

    private static SeConnection conn = null;

    public static void main(String[] args) {

String server="", instance="", database="none", user="", password="";

String tableName = null, spatialCol = null;

/*

 *    Process command line arguements

 */

if( args.length == 7 ) {

    server = args[0];

    instance = args[1];

    database = args[2];

    user = args[3];

    password = args[4];

    tableName = args[5];

    spatialCol = args[6];

}

else if( args.length == 6 ) {

    server = args[0];

    instance = args[1];

    user = args[2];

    password = args[3];

    tableName = args[4];

    spatialCol = args[5];

}

else {

    System.out.println("Invalid number of arguements!!");

    System.out.println("Usage: \n SpatialQueryEx <server> <instance> [database] <user> <passwd> <table> <spatial column>");

    System.exit(0);

}

Integer intInstance = new Integer(instance);

try {

    /*

     *   Connect to the ArcSDE server

     */

    System.out.println("Connecting to server...");

    conn = new SeConnection( server, intInstance.intValue(), database, user, password );

    System.out.println("Connection Successful! \n");

    /*

     *   Use the command line inputs to retrieve information

     *   about the ArcSDE layer

     */

    layer = new SeLayer(conn, tableName, spatialCol);

    table = new SeTable(conn, layer.getQualifiedName() );

    /*

     *   Generate a rectangular shape that will be used as a filter

     */

    SeShape shape = new SeShape(layer.getCoordRef());

    double minX = 20 , minY = 40 , maxX = 90 , maxY = 90;

    SeExtent extent = new SeExtent( minX,minY,maxX,maxY);

    shape.generateRectangle(extent);

    SeShape[] shapes = new SeShape[1];

    shapes[0] = shape;

    /*

     *   Retrieve all the shapes that are contained within the

     *   rectangles envelope.

     */

    System.out.println("\n--> Filter Shape - Rectangle \t Method - ENVELOPE");

    runSpatialQuery(shapes, SeFilter.METHOD_ENVP );

    System.out.println("Disconnecting ... \n");

    conn.close();

}catch( SeException e) {

    SeError error = e.getSeError();

    System.out.println("Error : " + error.getErrDesc() );

}

    } // End Main

    /*

     *   Runs a spatial query against the layer using the specified shape and method

     */

    public static void runSpatialQuery( SeShape[] shape, int method) {

String layerName = layer.getName();

String spatialCol = layer.getSpatialColumn();

SeShapeFilter filters[] = new SeShapeFilter[shape.length];

SeShapeFilter filter = null;

for( int i = 0 ; i < shape.length ; i++ ) {

    filter = new SeShapeFilter( layerName, spatialCol, shape[i], method);

    filters[i] = filter;

}

try {

    SeColumnDefinition[] tableDef = table.describe();

    String[] cols = new String[tableDef.length];

    for( int i =0 ; i < tableDef.length ; i++ )

cols[i] = tableDef[i].getName();

    SeQuery spatialQuery = null;

    SeSqlConstruct sqlCons = new SeSqlConstruct( layer.getName() );

    spatialQuery = new SeQuery(conn, cols, sqlCons);

    spatialQuery.prepareQuery();

    /*

     *   Set spatial constraints

     */

    spatialQuery.setSpatialConstraints(SeQuery.SE_OPTIMIZE, false, filters);

    spatialQuery.execute();

    SeRow row = spatialQuery.fetch();

    SeColumnDefinition colDef = new SeColumnDefinition();

    int numCols = 0;

    try {

numCols = row.getNumColumns();

    } catch ( NullPointerException ne ) {

System.out.println("\n No shape retrieved");

spatialQuery.close();

return;

}

    /*

     *   Fetch all the features that satisfied the query

     */

    System.out.println("\n Retrieved Shapes:");

    while(row != null) {

for( int i = 0 ; i < numCols ; i++ ) {

    colDef = row.getColumnDef(i);

    int type = colDef.getType();

    if ( row.getIndicator((short)i) != SeRow.SE_IS_NULL_VALUE) {

switch( type ) {

case SeColumnDefinition.TYPE_SMALLINT:

    System.out.println("\t" + colDef.getName() + " : " + row.getShort(i));

    break;

case SeColumnDefinition.TYPE_DATE:

    System.out.println("\t" + colDef.getName() + " : " + row.getDate(i));

    break;

case SeColumnDefinition.TYPE_INTEGER:

    System.out.println("\n\t" + colDef.getName() + " : " + row.getInteger(i));

    break;

case SeColumnDefinition.TYPE_FLOAT:

    System.out.println("\t" + colDef.getName() + " : " + row.getFloat(i) );

    break;

case SeColumnDefinition.TYPE_DOUBLE:

    System.out.println("\t" + colDef.getName() + " : " + row.getDouble(i) );

    break;

case SeColumnDefinition.TYPE_STRING:

    System.out.println("\t" + colDef.getName() + " : " + row.getString(i));

    break;

case SeColumnDefinition.TYPE_SHAPE:

    System.out.println("\t" + colDef.getName() + " : " );

    SeShape spVal = (SeShape)row.getShape(i);

    break;

default:

    System.out.println("Unknown Type");

    break;

} // End switch(type)

    } // End if

} // End for

row = spatialQuery.fetch();

    } // End while

    spatialQuery.close();

} catch ( SeException sexp ) {

    System.out.println("SeException : " + sexp.getSeError().getErrDesc());

}

} // End method runSpatialQuery

} // End Class SpatialQueryEx


VersionExample.java

/* $Id: VersionExample.java,v 1.8 2001/01/29 13:55:30 rajk3142 Exp $ */

/*------------------------------------------------------------------------------

*                        ** VersionExample.java **

* Purpose:

*   Versioned Database Coding Example:

*   Enables versioning on an ArcSDE layer, creates two new versions from that

*   layer and simulates user edit sessions on the new versions.

*

* ------------------------------------------------------------------------------

* Program Overview:

*   1. Create an ArcSDE layer and insert data into it.

*           A table, "VERSIONEXAMPLE", is created. It is spatially enabled and 15

*           rows of spatial data are inserted into it.The table has three columns:

*

*           Category : INTEGER

*           Row_desc : STRING

*           Shape    : SHAPE

*

*       The category column is used to classify the rows into one of two possible

*       types. This column will store either 1 or 2. The Row_desc column stores

*       a string describing the row number and information about when that row

*       was inserted or updated. The shape column stores rectangles.

*

*   2. Register the new layer as a multi-versioned layer.

*           The layer will then be registered as versioned after adding a new

*       column, "Row_id", that will be maintained by ArcSDE.

*

*   3. Simulate user 1's edit session.

*           User 1 will start by creating a new version from the default version

*       of the database. This version will contain the base table that was

*       created earlier and any other table in the database that is also defined

*       as a multi-versioned table. However, all the edits of user 1 will pertain

*       only to the base table created in this example. Since user 1 created a

*       new version from the default version, this new version will point to the

*       same state that the default version points to.

*           User 1 creates a new state, as a child of the state of the default

*       version. User 1 then performs a delete and an insert operation on this

*       state. User 1 then creates a child state of this state and performs some

*       more edits on this new state. User one repeats this process four times,

*       creating four new states and making edits to each state. This acts as a

*       simulation of edits at four different save points.

*           To simulate an undo/rollback operation the fourth state is deleted.

*       User 1's version will then be moved to point to the last edit state in

*       the tree, the third state. The state tree is then compressed to reduce it

*       from three edit states to one. Thus the database version now has two

*       states; the default version's state and User 1's version's state.

*

*   4. Simulate User 2's edit session.

*           User 2 creates his own version of the database from the default

*       version and creates a child from the default version's state. User 2

*       performs edits on this new state. User 2 creates a child of this new

*       state and performs some more edits on this child. User 2 repeats this

*       process until he/she has created four edit states from the default state.

*       Some of the edits that user 2 has made conflict with the edits that user

*       1 has made. User two compresses his state tree and points his version to

*       his last edit state. There are now 3 states in the database; the default

*       version's state, User 1's version's state and User 2's version's state.

*

*   5. User 1 reconciles the differences between both the versions.

*           Since User 2's edits overlap with User 1's edits, the conflicting

*       edits must be reconciled. User 2 is the expert pertaining to category 1

*       data, so User 1 accepts User 2's edits on that category without question.

*       User 1 is the authority on category 2 data, so his edits on category 2

*       data is considered final.

*           User 1 creates new state from his version and puts the results of the

*       reconciliation into this state. He copies over the edits user 2 made to

*       all category 1 data into his reconcile state. After reconciliation,

*       User 1 moves his version to the new reconciled state, trimming his state

*       tree from two to one state.

*           User 1's reconciled state may now be accepted as the final version

*       and may be used to replace the default version if desired, eliminating

*       User 1's and User 2's versions. In this example we leave the three

*       versions intact, desiring to have a history of each version for future

*       reference.

* ------------------------------------------------------------------------------

* Usage: VersionExample <server> <instance> [database] <user> <passwd>

*

*       Argument     Data Type

*   1. Server Name   (String)

*   2. Instance      (Integer)

*   3. Database Name (String)  <- Optional

*   4. User Name     (String)

*   5. Password      (String)

*

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Copyright (C) 1997-2000, Environmental Systems Research Institute, Inc.

This software is provided with RESTRICTED AND LIMITED RIGHTS.

Use, duplication, and disclosure by the U.S. Government are subject to

restrictions as set forth in FAR Section 52.227-14 Alternate III (g)(3)

(JUN 1987), FAR Section 52.227-19 (JUN 1987), and/or FAR Section

12.211/12.212 [Commercial Technical Data/Computer Software] and DFARS

Section 252.227-7015 (NOV 1995) [Technical Data] and/or DFARS Section

227.7202 [Computer Software], as applicable.

Contractor/Manufacturer is Environmental Systems Research Institute, Inc.,

380 New York Street, Redlands, CA 92373-8100, USA.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

*

*History:

*

*   Rajkumar Padmanabhan      11/2000

*

--------------------------------------------------------------------------*/

import com.esri.sde.sdk.client.*;

import com.esri.sde.sdk.client.SeTable.*;

import java.util.Vector;

public class VersionExample {

    private static SeConnection conn = null;

    private static SeTable table = null;

    private static SeLayer layer = null;

    private static SeColumnDefinition colDefs[] = new SeColumnDefinition[2];

    static final String USER_1_VERSION = "User 1 Version";

    static final String USER_2_VERSION = "User 2 Version";

    private static SeVersion defaultVer = null;

    private static SeVersion userOneVersion = null;

    private static SeVersion userTwoVersion = null;

    private static final int DELETE_ROWS_FOUND = 1;

    private static final int COPY_ROWS_FOUND = 2;

    public static void main(String[] args) {

      String server=null, instance=null, database="none", user=null, password=null;

      /*

       *   Process command line arguements

       */

      if( args.length == 5 ) {

          server = args[0];

          instance = args[1];

          database = args[2];

          user = args[3];

          password = args[4];

      }

      else if( args.length == 4 ) {

          server = args[0];

          instance = args[1];

          user = args[2];

          password = args[3];

      }

      else {

          System.out.println("\tInvalid number of arguements!!");

          System.out.println("\tUsage: \n VersionExample <server> <instance> [database] <user> <passwd> ");

          System.exit(0);

      }

      Integer inst = new Integer( instance );

      try {

          /*

           *   Establish connection with an ArcSde server

           */

          System.out.println("\tConnecting to Server...");

          conn = new SeConnection( server, inst.intValue(), database, user, password );

          System.out.println("\tConnection Established");

          /*

           *   Creates a new table with a spatial column.

           */

          createBaseTable();

          /*

           *   Insert data into the base table

           */

          insertData();

          /*

           *   Make the table multiversioned

           */

          makeVersioned();

          /*

           *   Create new version from the

           *   default version and make edits

           *   to it

           */

          userEditSessionOne();

          /*

           *   Create another new version from the

           *   default version and make edits

           *   to it

           */

          userEditSessionTwo();

          /*

           *   Reconcile user 1's version with user 2's version

           */

          reconcileUsers();

          /*

           *   Clean up...

           */

          /*

           *   Refresh userOneVersion and userTwoVersion objects

           */

          try {

            userOneVersion = new SeVersion(conn,USER_1_VERSION);

            userTwoVersion = new SeVersion(conn,USER_2_VERSION);

          }catch( SeException e) {

            System.out.println( e.getSeError().getErrDesc() );

          }

          /*

           *   Retrieve the state id's of the two versions

           */

          SeState version1Sid = new SeState(conn,userOneVersion.getStateId());

          SeState version2Sid = new SeState(conn,userTwoVersion.getStateId());

          /*

           *   Delete all the versions created

           */

          try{

            System.out.println("\t Deleting versions...");

            userOneVersion.delete();

            userTwoVersion.delete();

          }catch( SeException e ) {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          /*

           *   Delete the states that were used by the versions.

           */

          try{

            version1Sid.delete();

            version2Sid.delete();

          }catch( SeException e ) {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          /*

           *   Delete the base table

           */

          try {

            System.out.println("\n\t Deleting base table...");

            table.delete();

            System.out.println("\t - Done.");

          } catch ( SeException e ) {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          /*

           *   Close the connection

           */

          conn.close();

      } catch( SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End main

    /*

     *   Creates a new SDE table called "VERSIONEXAMPLE" and adds a

     *   spatial column, "SHAPE" to it.

     *

     *   Table columns :

     *       CATEGORY (Integer) - Set to either value 1 or 2

     *       ROW_DESC (String) - Row description

     *       SHAPE - Spatial Column

     */

    public static void createBaseTable() {

      // Set variable tableName to qualified name of the intended base table

      String tableName = (conn.getUser() + ".VERSIONEXAMPLE");

      /*

       *   Create a new table object

       */

      try {

          table = new SeTable( conn, tableName );

      } catch ( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Delete table if it already exists

       */

      try {

          table.delete();

      } catch( SeException e ) {

          /*

           *   Don't display the error message if the table does not exist

           *   Display any other error that occurs

           */

          if( SeError.SE_TABLE_NOEXIST !=  e.getSeError().getSdeError() )

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Define the column type, size, scale, etc for the base table.

       */

      try {

          colDefs[0] = new SeColumnDefinition( "CATEGORY", SeColumnDefinition.TYPE_INTEGER, 0, 0, false);

          colDefs[1] = new SeColumnDefinition( "ROW_DESC", SeColumnDefinition.TYPE_STRING, 64, 0, false);

      } catch( SeException e ) {}

      /*

       *   Create the base table

       */

      try {

          System.out.println("\n\t Creating the base table");

          table.create( colDefs, "DEFAULTS" );

          System.out.println("\t - Done.");

      } catch ( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          System.out.println("ERROR : " + e.getSeError().getExtError() );

      }

      /*

       *   Create a new layer object

       */

      layer = new SeLayer(conn);

      /*

       *   Define properties for the spatial column

       */

      layer.setSpatialColumnName("SHAPE");

      try {

          layer.setTableName("VERSIONEXAMPLE");

          layer.setShapeTypes(SeLayer.SE_AREA_TYPE_MASK | SeLayer.SE_NIL_TYPE_MASK);

          layer.setGridSizes(1000.0,0.0,0.0);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      layer.setDescription("Version Example Layer");

     layer.setCreationKeyword("DEFAULTS");

      SeCoordinateReference coordref = new SeCoordinateReference();

      coordref.setXY(0.0,0.0,10000.0);

      SeExtent ext = new SeExtent(0.0,0.0,15000.0,15000.0);

      layer.setExtent(ext);

      try {

          layer.setCoordRef(coordref);

          System.out.println("\n\t Adding spatial col to table VERSIONEXAMPLE..");

          /*

           *   Add the spatial column "SHAPE" to the base table

           */

          layer.create(15,5);

          System.out.println("\t - Done.");

      } catch ( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End method createBaseTable

    /*

     *   Inserts data into the base table.

     *   Number of rows inserted = 15.

     *   Data inserted:

     *      Column 1 (CATEGORY) : a number, either 1 or 2.

     *      Column 2 (ROW_DESC) : Row 1, Row 2,...., Row 15.

     *      Column 3 (SHAPE)    : rectangle shape

     */

    public static void insertData() {

      SeInsert insert = null;

      try {

          insert = new SeInsert(conn);

      } catch( SeException e )  {

          System.out.println(e.getSeError().getErrDesc() );

      }

      /*

       *   Define input columns

       */

      String[] columns = new String[3];

      columns[0] = new String(colDefs[0].getName());  // Category

      columns[1] = new String(colDefs[1].getName());  // Row_desc

      columns[2] = new String("SHAPE");

      try {

          insert.intoTable(table.getName(),columns);

          insert.setWriteMode(true);

          SeCoordinateReference coordref = layer.getCoordRef();

          SeExtent rectangleExt = new SeExtent();

          SeShape shape = new SeShape(coordref);

          SeRow row = insert.getRowToSet();

          int numRows = 15;

          for(int rowId = 1; rowId <= numRows ; rowId++){

            rectangleExt.setMinX(1000.0 + rowId * 100.0);

            rectangleExt.setMinY(2000.0 + rowId * 100.0);

            rectangleExt.setMaxX(2000.0 + rowId * 100.0);

            rectangleExt.setMaxY(3000.0 + rowId * 100.0);

            shape.generateRectangle(rectangleExt);

            StringBuffer colOne = new StringBuffer(15);

            colOne.insert(0,"Original Row " + rowId);

            row.setInteger(0,new Integer(rowId%2+1));

            row.setString(1, colOne.toString());

            row.setShape(2,shape);

            insert.execute();

            System.out.println("\t Inserted row - " + rowId);

          }

          insert.flushBufferedWrites();

          insert.close();

      } catch( SeException e )  {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End method insertData

    /*

     *   Registers the base table and enables

     *   versioning.

     */

    public static void makeVersioned(){

      SeRegistration registration = null;

      /*

       *   Retrieve the table's registration.

       */

      try {

          registration = new SeRegistration( conn, table.getName());

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Update the table's registration to give it an ArcSDE maintained

       *   row id and make it multiversioned.

       */

      try {

          registration.setRowIdColumnName("ROW_ID");

          registration.setRowIdColumnType(SeRegistration.SE_REGISTRATION_ROW_ID_COLUMN_TYPE_SDE);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      registration.setDescription("Versioning test table");

      boolean isMultiVersion = true;

      System.out.println("\n\t Making table mulitversioned...");

      registration.setMultiVersion(isMultiVersion);

      try {

          System.out.println("\n\t Updating registration info...");

          registration.alter();

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End method makeVersioned

    /*

     *   Creates a new version from the default version.

     *   Sets the name of the new version to parameter versionName.

     */

    public static SeVersion createNewVersion( String versionName ) {

      SeVersion newVersion = null;

      try {

          // Create a new version object

          newVersion = new SeVersion(conn);

          // Retrieve default version from server

          defaultVer = new SeVersion(conn, SeVersion.SE_QUALIFIED_DEFAULT_VERSION_NAME);

          defaultVer.getInfo();

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Create a child of the default version enabling unique naming;

       *   the new version will be called default01.

       */

      boolean uniqueName = true;

      try {

          System.out.println("\n\t Creating new version as child of default Version..");

          newVersion.create(uniqueName, defaultVer);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      System.out.println("\n\t Setting new version's properties...");

      newVersion.setDescription(versionName + " -> Child of default version");

      try {

          System.out.println("\n\t Renaming new version");

          newVersion.rename(versionName);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      newVersion.setParentName(SeVersion.SE_QUALIFIED_DEFAULT_VERSION_NAME);

      System.out.println("\n\t Committing new settings...");

      try {

          newVersion.alter();

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      // Return a handle to the new version created.

      return newVersion;

    } // End method createNewVesion

    /*

     *   Simulate a user creating a new version from the default

     *   and making edits to the new version.

     *   User One performs 4 edits to his version and undos the last edit

     */

    public static void userEditSessionOne() {

      System.out.println("\n\n\t Starting User One's edit session");

      // Create a new version for editing      called "User 1 version"

      userOneVersion = createNewVersion(USER_1_VERSION);

      /*

       *   Create a new state, stateOne that is a child of the state of

       *   User one's version

       */

      SeState parentState = null;

      try {

          parentState = new SeState(conn, userOneVersion.getStateId());

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      System.out.println("\n\t Creating new state...");

      SeState stateOne = createChildState(parentState);

      /*

       *   Set up to perform edits on the first state

       */

      SeObjectId[] deleteList = new SeObjectId[1];

      //  Delete row 1.

      deleteList[0] = new SeObjectId(1);

      SeObjectId[] updateList = null; // No update will be done to this state

      // Insert one new row into state1's base table.

      int insertCount = 1;

      int category = 2;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing first state...(Deleting rowid 1, inserting 1)");

      editState( stateOne.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state, stateTwo that is a child of stateOne

       */

      System.out.println("\n\t Creating new state, stateTwo from stateOne");

      SeState stateTwo = createChildState(stateOne);

      /*

       *   Set up to perform edits on second state

       */

      deleteList = null;  // No deletes on this state

      updateList = new SeObjectId[2];

      // Update the rows 2 & 3.

      updateList[0] = new SeObjectId(2);

      updateList[1] = new SeObjectId(3);

      // Insert 1 new row

      insertCount = 1;

      category = 2;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing second state...( Updating 2 & 3, Inserting 1 new row)");

      editState( stateTwo.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state, stateThree that is a child of stateTwo

       */

      System.out.println("\n\t Creating new state, stateThree from stateTwo");

      SeState stateThree = createChildState(stateTwo);

      /*

       *   Set up to perform edits on third state

       */

      deleteList = new SeObjectId[1];

      //  Delete row 11.

      deleteList[0] = new SeObjectId(11);

      updateList = new SeObjectId[1];

      // Update row 12.

      updateList[0] = new SeObjectId(12);

      // Insert 2 new rows into stateThree's table.

      insertCount = 3;

      category = 2;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing third state...(Deleting rowid 11, updating 12, inserting 3 new rows)");

      editState( stateThree.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state, stateFour that is a child of stateThree

       */

      System.out.println("\n\t Creating new state, stateFour from stateThree");

      SeState stateFour = createChildState(stateThree);

      /*

       *   Perform edits on fourth state

       */

      deleteList = new SeObjectId[1];

      //  Delete row 13.

      deleteList[0] = new SeObjectId(13);

      updateList = new SeObjectId[2];

      // Update rows 2 & 3.

      updateList[0] = new SeObjectId(2);

      updateList[1] = new SeObjectId(3);

      // Insert one new row into stateFour's base table.

      insertCount = 1;

      category = 2;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing fourth state...(Deleting rowid 13, updating 2 & 3, inserting 1 new row)");

      editState( stateFour.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Trash the changes made to to state four ( Undo operation )

       */

      System.out.println("\n\t Deleting the last state, fourth state");

      try {

          stateFour.delete();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Move version pointer to the last stated edited, the third state.

       */

      System.out.println("\t Changing version's state to third state...");

      try {

          userOneVersion.changeState(stateThree.getId());

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Ready to save the work done so far; Trim the state tree to its

       *   minimum length.

       */

      try {

          stateTwo.trimTree( stateOne.getId(), stateThree.getId() );

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          System.out.println("ERROR : " + e.getSeError().getSdeError() );

      }

      System.out.println("\n\t***  End user one's edit session  ***");

    } // End userEditSessionOne

    /*

     *   Simulate another user, user 2 who creates his own version of the

     *   default version and makes edits to his version.

     *   User Two makes 4 edits, some of them on rows that were also edited

     *   by user one.

     */

    public static void userEditSessionTwo(){

      userTwoVersion = createNewVersion(USER_2_VERSION);

      /*

       *   Create a new state, stateOne that is a child of the state of

       *   user two's version.

       */

      SeState parentState = null;

      try {

          parentState = new SeState(conn, userTwoVersion.getStateId());

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      System.out.println("\n\t Creating new state");

      SeState stateOne = createChildState(parentState);

      /*

       *   Set up to perform edits on the first state

       */

      SeObjectId[] deleteList = new SeObjectId[1];

      //  Delete row 1.

      deleteList[0] = new SeObjectId(1);

      SeObjectId[] updateList = null;

      // Insert no new row into state1's base table.

      int insertCount = 0;

      int category = 1;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing first state...(Deleting rowid 1)");

      editState( stateOne.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state, stateTwo that is a child of stateOne

       */

      System.out.println("\n\t Creating new state, stateTwo from stateOne");

      SeState stateTwo = createChildState(stateOne);

      /*

       *   Perform edits on second state

       */

      deleteList = null;

      updateList = new SeObjectId[1];

      // Update row 4.

      updateList[0] = new SeObjectId(4);

      // Insert no new row into state1's base table.

      insertCount = 0;

      category = 1;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing second state...( Updating 4 )");

      editState( stateTwo.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state,stateThree that is a child of stateTwo

       */

      System.out.println("\n\t Creating new state, stateThree from stateTwo");

      SeState stateThree = createChildState(stateTwo);

      /*

       *   Perform edits on third state

       */

      deleteList = null;

      updateList = new SeObjectId[1];

      // Update the row 6.

      updateList[0] = new SeObjectId(6);

      // Insert one new row into stateThree's base table.

      insertCount = 1;

      category = 1;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing third state...( Updating 6, inserting 1)");

      editState( stateThree.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Create a new state, stateFour that is a child of stateThree

       */

      System.out.println("\n\t Creating new state, stateFour from stateThree");

      SeState stateFour = createChildState(stateThree);

      /*

       *   Perform edits on fourth state

       */

      deleteList = new SeObjectId[1];

      //  Delete row 14.

      deleteList[0] = new SeObjectId(14);

      updateList = new SeObjectId[1];

      // Update row 11.

      updateList[0] = new SeObjectId(11);

      // Insert 5 new rows into stateFour's base table.

      insertCount = 5;

      category = 1;

      /*

       *   Execute edit operations

       */

      System.out.println("\n\t Editing fourth state...(Deleting rowid 14, updating 11, inserting 5 new rows...)");

      editState( stateFour.getId(), deleteList, updateList, insertCount, category);

      /*

       *   Move version pointer to the last state edited, the fourth state.

       */

      System.out.println("\t Changing version's state to fourth state...");

      try {

          userTwoVersion.changeState(stateFour.getId());

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Ready to save the work done so far; Trim the state tree to its

       *   minimum length.

       */

      try {

          stateTwo.trimTree( stateOne.getId(), stateFour.getId() );

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      System.out.println("\n\t***  End user Two's edit session  ***");

    } // End userEditSessionTwo

    /*

     *   Creates a child state from parentState.

     *   Verifies that parentState is closed.

     *   Returns the child state created.

     */

    public static SeState createChildState(SeState parentState) {

      SeState child = null;

      try {

          child = new SeState(conn);

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      if( parentState.isOpen() ) {

          System.out.println("\t Parent State is Open! Closing it first!");

          try {

            parentState.close();

          } catch( SeException e ) {

            /*

             *   If unsuccessful in closing open state, display error message

             *   and return null

             */

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

            return child;

          }

      }

      // Create the new state

      try {

          child.create(parentState.getId());

      } catch( SeException e ) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      return child;

    } // End method createChildState

    /*

     *   Performs edit operations on the specified state

     *   of the base table.

     *

     *   Inputs:

     *   stateId : The state id of the state to be edited

     *   deleteList : The array of rowIds to be deleted

     *   updateList : The array of rowIds to be updated

     *   insertCount : The number of new rows to be inserted

     *   category : The category of the data to be inserted

     */

    public static void editState( SeObjectId stateId, SeObjectId[] deleteList, SeObjectId[] updateList, int insertCount, int category ) {

      System.out.println("\n\t Editing State : " + stateId.longValue() );

      /*

       *   Delete the rows in deleteList array

       */

      if( deleteList != null ) {

          SeDelete delete = null;

          try {

            delete = new SeDelete(conn);

            delete.setState(stateId, new SeObjectId(SeState.SE_NULL_STATE_ID), SeState.SE_STATE_DIFF_NOCHECK);

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          /*

           *   Delete all the rows in the deleteList array

           */

          for( int i = 0 ; i < deleteList.length ; i++ ) {

            System.out.println("\n\t Deleting Row Id - " + deleteList[i].longValue() );

          }

          try {

            delete.byIdList( table.getName(), deleteList);

            delete.close();

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

      } // End if

      /*

       *   Update the rows in updateList array

       */

      if( updateList != null ) {

          SeUpdate update = null;

          try {

            update = new SeUpdate(conn);

            update.setState(stateId, new SeObjectId(SeState.SE_NULL_STATE_ID),

                        SeState.SE_STATE_DIFF_NOCHECK);

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          /*

           *   Columns of row that will be updated

           */

          String[] columns = new String[1];

          // Row_desc column

          columns[0] = colDefs[1].getName();

          for( int i = 0 ; i < updateList.length ; i++) {

            try {

                String whereClause = new String("ROW_ID = " + updateList[i].longValue());

                System.out.println("\n\t Updating Row id - " + updateList[i].longValue() );

                update.toTable(table.getName(), columns, whereClause);

                update.setWriteMode(true);

                SeRow row = update.getRowToSet();

                row.setString(0,"Updated row " + updateList[i].longValue()

                          + " at state " + stateId.longValue() );

                update.execute();

            } catch( SeException e )  {

                System.out.println("ERROR : " + e.getSeError().getErrDesc() );

            }

          } // End for

          try {

            update.close();

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

      } // End if

      /*

       *   Perform inserts

       */

      if( insertCount > 0 ) {

          SeInsert insert = null;

          try {

            insert = new SeInsert(conn);

            insert.setState(stateId, new SeObjectId(SeState.SE_NULL_STATE_ID), SeState.SE_STATE_DIFF_NOCHECK);

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          String[] cols = new String[3];

          // Category column

          cols[0] = colDefs[0].getName();

          // Row_desc column

          cols[1] = colDefs[1].getName();

          // Spatial column

          cols[2] = "SHAPE";

          System.out.println("\n\t Inserting Data into table... ");

          try {

            int intsId = (int) stateId.longValue();

            // Just in case the state id is exceedingly large..

            intsId = (intsId%10);

            insert.intoTable(table.getName(), cols);

            insert.setWriteMode(true);

            SeCoordinateReference coordref = layer.getCoordRef();

            SeShape shape = new SeShape(coordref);

            SeExtent rectangle = new SeExtent();

            for( int i = 0 ; i < insertCount ; i++ ) {

                rectangle.setMinX(3000 + intsId * 100);

                rectangle.setMinY(3000 + intsId * 100);

                rectangle.setMaxX(4000 + intsId * 100);

                rectangle.setMaxY(4000 + intsId * 100);

                shape.generateRectangle(rectangle);

                SeRow row = insert.getRowToSet();

                row.setInteger(0, new Integer(category));

                row.setString(1,"Row inserted at State " + stateId.longValue() );

                row.setShape(2,shape);

                insert.execute();

                SeObjectId lastRowId = insert.lastInsertedRowId();

                System.out.println("\n\t Data inserted! Row id - " + lastRowId.longValue());

            } // End for

            insert.flushBufferedWrites();

            insert.close();

          } catch( SeException e )  {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

      } // End if

    } // End method editState

    /*

     *   Reconcile the versions of both users

     */

    public static void reconcileUsers() {

      System.out.println("\n\t Reconciling users 1 and 2..");

      // Retrieve handles to versions of user 1 and 2

      try {

          userOneVersion = new SeVersion(conn,USER_1_VERSION);

          userTwoVersion = new SeVersion(conn,USER_2_VERSION);

      }catch( SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      // Get the state id's of both versions.

      SeObjectId userOneStateId = new SeObjectId( userOneVersion.getStateId().longValue() );

      SeObjectId userTwoStateId = new SeObjectId( userTwoVersion.getStateId().longValue() );

      /*

       *   Create a new child, reconState, of User one's version that will receive the results

       *   of the reconciliation

       */

      System.out.println("\n\t Creating a state to store results of reconciliation");

      SeState parentState = null;

      try {

          parentState = new SeState( conn, userOneVersion.getStateId() );

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      SeState reconState = createChildState( parentState );

      /*

       *   Change userOneStateId to point to reconState

       */

      userOneStateId = new SeObjectId( reconState.getId().longValue() );

      System.out.println("\n\t Start reconciliation ops");

      /*

       *   Start reconciliation

       */

      /*

       *   Scenario:

       *      User 1's version : Rows not modified and of category 1

       *      User 2's version : The same rows have been deleted

       *

       *   Operation:

       *       Assume that user 2 knows best regd category 1 and

       *   delete those rows.

       *

       *   Row to be deleted in this example - 14

       */

      System.out.println("\n\t Deleting rows that have been deleted by user 2 but not by user 1...");

      reconcileStates( userOneStateId, // Source state id

                   userTwoStateId, // Differences state id

                   new SeObjectId( SeState.SE_NULL_STATE_ID ), // Copy from id

                   userOneStateId, // Target state id

                   SeState.SE_STATE_DIFF_NOCHANGE_DELETE, // differences type

                   "CATEGORY = 1", // where clause

                   DELETE_ROWS_FOUND); // Action to perform

      /*

       *   Scenario:

       *      User 1's version : Rows not modified and of category 1

       *      User 2's version : The same rows have been updated

       *

       *   Operation:

       *       Again assume that user 2 knows best regd category 1 and

       *   copy those rows from user 2.

       *

       *   Rows in example that satisfy this condition - 4 & 6

       */

      System.out.println("\n\t Copy rows that have been updated by user 2 but untouched by user 1...");

      reconcileStates( userOneStateId, // Source state id

                   userTwoStateId, // Differences state id

                   userTwoStateId, // Copy from id

                   userOneStateId, // Target state id

                   SeState.SE_STATE_DIFF_NOCHANGE_UPDATE, // differences type

                   "CATEGORY = 1", // where clause

                   COPY_ROWS_FOUND); // Action to perform

      /*

       *   Scenario:

       *      User 2's version : Rows have been inserted

       *      User 1's version : These rows don't exist

       *

       *   Operation:

       *       Copy the new rows from user 2 to user 1.

       *

       *   Row ids - 21 & 22

       */

      System.out.println("\n\t Copy rows that have been inserted by user 2...");

      reconcileStates( userTwoStateId, // Source state id

                   userOneStateId, // Differences state id

                   userTwoStateId, // Copy from id

                   userOneStateId, // Target state id

                   SeState.SE_STATE_DIFF_INSERT, // differences type

                   null, // where clause

                   COPY_ROWS_FOUND); // Action to perform

      /*

       *   Scenario:

       *      User 2's version : Rows have been updated

       *      User 1's version : These rows have been deleted

       *

       *   Operation:

       *       Copy these rows from user 2 to user 1.

       *

       *   Row in example that satisfies this condition - 11

       */

      System.out.println("\n\t Copy rows that have been updated by user 2 but deleted by user 1...");

      reconcileStates( userTwoStateId, // Source state id

                   userOneStateId, // Differences state id

                   userTwoStateId, // Copy from id

                   userOneStateId, // Target state id

                   SeState.SE_STATE_DIFF_UPDATE_DELETE, // differences type

                   null, // where clause

                   COPY_ROWS_FOUND); // Action to perform

      /*

       *   Done reconciliation.

       */

      System.out.println("\n\t Done reconciliation...");

      try {

          reconState.close();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      System.out.println("\t Changing version's state to recon state...");

      try {

          userOneVersion.changeState(reconState.getId());

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Ready to save the work done so far; Trim the state tree to its

       *   minimum length.

       */

      System.out.println("\n\t Trimming state tree...");

      try {

          reconState.trimTree( parentState.getId(), reconState.getId());

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getSdeError() );

      }

      // Display the contents of the table at the reconciled state

      displayReconciledTable(reconState.getId());

    } // End method reconcileUsers

    /*

     *   Performs a single reconcile operation between two states, the source state

     *   and the difference state of the same table, such as

     *   - Deleting the rows in one state that have been deleted from the other state.

     *   - Copying over the rows that have been inserted in one state but not the other.

     *   - Preserve the updates made to one state and discard the updates/deletes made to

     *     the other.

     */

    public static void reconcileStates( SeObjectId sourceId, SeObjectId differencesId,

                              SeObjectId copyFromId, SeObjectId targetId,

                              int differenceType, String whereClause, int actionType) {

      /*

       *   Set up a query to retrieve the row_id values of the rows in the

       *   sourceId that satisfy the "differenceType" comparison between the

       *   sourceId and differencesId states.

       */

      SeSqlConstruct queryByTableName = null;

      String tableName = table.getQualifiedName();

      queryByTableName = new SeSqlConstruct( tableName, whereClause );

      String[] cols = new String[1];

      // Specify output column

      cols[0] = new String("ROW_ID");

      SeRow row = null;

      SeColumnDefinition colDef = new SeColumnDefinition();

      SeQuery query = null;

      /*

       *   Initialize & execute query

       */

      try {

          query = new SeQuery( conn, cols, queryByTableName );

          query.setState(sourceId, differencesId, differenceType);

          query.prepareQuery();

          query.execute();

          // Fetch first row of query results

          row = query.fetch();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      if( row == null ) {

          System.out.println("No rows fetched");

          try {

            query.close();

          }catch(SeException e) {

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          return;

      }

      /*

       *   Fetch the row_id values of the results of the query and store them

       *   in rowList

       */

      Vector rowList = new Vector(2);

      try {

          int rowNum = 0;

          while( row != null ) {

            int max = row.getNumColumns();

            for( int i=0 ; i < max ; i++ ) {

                colDef = row.getColumnDef(i);

                int type = colDef.getType();

                // don't try to retrieve the value if the indicator is NULL

                if ( row.getIndicator((short)i) != SeRow.SE_IS_NULL_VALUE) {

                  switch( type ) {

                  case SeColumnDefinition.TYPE_INTEGER:

                      rowList.add( new SeObjectId( row.getInteger(i).longValue() ));

                      rowNum++;

                      break;

                  } // End switch

                } // End if

            } // End for

            row = query.fetch();

          } // End while

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      try {

          query.close();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      /*

       *   Move the row_id values retrieved from a vectory array

       *   to an SeObjectId array

       */

      SeObjectId[] rowIdList = new SeObjectId[rowList.size()];

      for( int i = 0 ; i < rowList.size() ; i++ )

          rowIdList[i] = (SeObjectId)rowList.elementAt(i);

      System.out.println("\n\t Row id's retrieved... ");

      for( int i = 0 ; i < rowIdList.length ; i++ )

          System.out.println("\n\t" + rowIdList[i].longValue());

      /*

       *   Collected the row ids required

       *   Now perform specified operation

       */

      switch( actionType ) {

      case DELETE_ROWS_FOUND:

          SeDelete delete = null;

          try {

            delete = new SeDelete(conn);

            delete.setState(targetId, new SeObjectId(SeState.SE_NULL_STATE_ID)

                , SeState.SE_STATE_DIFF_NOCHECK);

          } catch( SeException e )  {

            System.out.println(e.getSeError().getErrDesc() );

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          System.out.println("\n\t Deleting from reconState...");

          try {

            delete.byIdList( table.getName(), rowIdList);

            delete.close();

          } catch( SeException e )  {

            System.out.println(e.getSeError().getErrDesc() );

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          break;

      case COPY_ROWS_FOUND:

          SeUpdate update = null;

          try {

            update = new SeUpdate(conn);

            update.setState( targetId, copyFromId,

                         SeState.SE_STATE_DIFF_INSERT);

            update.copyStateRows(tableName, rowIdList);

            update.close();

          } catch( SeException e )  {

            System.out.println(e.getSeError().getErrDesc() );

            System.out.println("ERROR : " + e.getSeError().getErrDesc() );

          }

          break;

      } // End switch

    } // End method reconcileStates

    /*

     *   Displays the rows of the table corresponding to the input stateId

     */

    public static void displayReconciledTable( SeObjectId stateId ) {

      System.out.println("\n\t Table contents at State : " + stateId.longValue() );

      SeSqlConstruct queryByTableName = null;

      String tableName = table.getQualifiedName();

      String whereClause = null;

      queryByTableName = new SeSqlConstruct( tableName, whereClause );

      /*

       *   Specify output columns

       */

      String[] cols = new String[3];

      // Row_id column

      cols[0] = new String("ROW_ID");

      // Category column

      cols[1] = colDefs[0].getName();

      // Row_desc column

      cols[2] = colDefs[1].getName();

      SeRow row = null;

      SeColumnDefinition colDef = new SeColumnDefinition();

      SeQuery query = null;

      try {

          query = new SeQuery( conn, cols, queryByTableName );

          query.setState(stateId, new SeObjectId(SeState.SE_NULL_STATE_ID), SeState.SE_STATE_DIFF_NOCHECK);

          query.prepareQuery();

          query.execute();

          row = query.fetch();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      try {

          System.out.println("\n\tROW_ID\tCATEGORY\tDESCRIPTION");

          while( row != null ) {

            int max = row.getNumColumns();

            for( int i=0 ; i < max ; i++ ) {

                colDef = row.getColumnDef(i);

                int type = colDef.getType();

                // don't try to retrieve the value if the indicator is NULL

                if ( row.getIndicator((short)i) != SeRow.SE_IS_NULL_VALUE) {

                  switch( type ) {

                  case SeColumnDefinition.TYPE_INTEGER:

                      System.out.print("\t  " + row.getInteger(i));

                      break;

                  case SeColumnDefinition.TYPE_STRING:

                      System.out.print("\t\t" + row.getString(i));

                      break;

                  } // End switch

                } // End if

            } // End for

            row = query.fetch();

            System.out.println();

          } // End while

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

      try {

          query.close();

      }catch(SeException e) {

          System.out.println("ERROR : " + e.getSeError().getErrDesc() );

      }

    } // End displayReconciledTable

} // End class VersionExample


convexhull

Returns the convex hull of a geometry object.

Syntax

convexhull (g1 geometry)

Return type

Geometry

Example

The example creates the convexhull_test table that has two columns: geotype and g1. Geotype, a varchar(20), stores the name of the geometry subclass that is stored in g1, a geometry.

create table convexhull_test (geotype varchar(20), g1 geometry)

The INSERT statements insert several geometry subclasses into the convexhull_test table.

insert into convexhull_test values(

'Point', pointfromtext('point (10.02 20.01)',1)

)

insert into convexhull_test values(

'Linestring',

linefromtext('linestring (10.02 20.01,10.32 23.98,11.92 25.64)',1)

)

insert into convexhull_test values(

'Polygon', polyfromtext('polygon ((10.02 20.01,11.92 35.64,25.02 34.15, 19.15 33.94,10.02 20.01))',1)

)

insert into convexhull_test values(

'Multipoint', mpointfromtext('multipoint (10.02 20.01,10.32 23.98,

11.92 25.64)',1)

)

insert into convexhull_test values(

'Multilinestring', mlinefromtext('multilinestring ((10.02 20.01,

10.32 23.98,11.92 25.64),(9.55 23.75,15.36 30.11))',1)

)

insert into convexhull_test values(

'Multipolygon',

mpolyfromtext('multipolygon (((10.02 20.01,11.92 35.64,25.02 34.15,

19.15 33.94,10.02 20.01)),((51.71 21.73,73.36 27.04,71.52 32.87,

52.43 31.90,51.71 21.73)))',1)

)

The select statement lists the subclass name stored in the geotype column and the convex hull. The convexhull generated by the convexhull function is converted to text by the astext function and then cast to a varchar(256) because the default output of astext is varchar(4000).

select geotype, cast(astext(convexhull(g1)) as varchar(256)) "The convexhull"

from convexhull_test


Implementation differences between Informix and DB2

There is very little difference between the implementation of Spatial SQL of Informix and DB2. ESRI, a partner and co-developer of extended spatial SQL within the Informix and IBM RDBMS products, worked in a cooperative environment to insured that the standards dictated by the Open GIS Consortium (OGC) was applied to the extent possible.

There are however two notable exceptions, neither of which actually breaches the OGC standards, but are actually rather minor implementation idiosyncrasies of the RDBMS themselves.

Predicate values

The predicate functions of Informix return a ‘t’ for TRUE and ‘f’ for FALSE, while DB2 uses a 1 for ‘TRUE’ and a 0 for ‘FALSE’

In this example of Informix SQL the select statement returns only those building IDs where the contains function returns a ‘t’ for building lots that contain building footprints.

select bf.building_id "Building id"
from buildingfootprints bf, lots
where contains(lot,footprint) = ‘t’;

The same contains function for an IBM select statement would return the same building Ids where it returns a 1 when a lot contains a footprint.

select bf.building_id "Building id"
from buildingfootprints bf, lots
where contains(lot,footprint) = 1;

SRID input

For WKT, WKB, and ESRI shape representations the DB2 the SRID is entered through the srid method of the coordref object. For Informix the SRID value is entered directly.

In this example, the SRID of 1 is entered directly into the Informix linefromtext function.

insert into linestring_test values(

linefromtext('linestring(10.01 20.03,20.94 21.34,35.93 19.04)',1)

);

In this example, the SRID of 1 is entered through the coordref srid object into the DB2 linefromtext function.

insert into linestring_test values(

linefromtext('linestring(10.01 20.03,20.94 21.34,35.93 19.04)',coordref()..srid(1))

);