Features read from Oracle Spatial consist of a series of attribute values and geometry data. The feature type of each Database feature is as defined on its DEF
line.
Features written to the database have the destination table as their feature type, and attributes as defined by on the DEF
line.
In addition to the generic FME feature attributes that FME Workbench adds to all features (see About Feature Attributes), the Oracle Spatial module makes use of the following special attribute and trait names:
Attribute/Trait Name |
Contents |
oracle_type |
This attribute stores the type of geometric entity stored within the feature. The valid values are:
|
oracle_srid |
This attribute or trait is defined only when reading from an Oracle table which has spatial referencing information. It contains the spatial reference identifier (SRID) for the geometry column retrieved. Its value will be the same for all features returned from a particular table when writing vector geometry. Raster features each have an individual coordinate system per feature which specified by this attribute. The SRID value is used to look up a coordinate system, which is converted to an FME coordinate system and attached to each feature returned by the reader. This attribute is not used by the Oracle Spatial writer when writing vector geometry. |
CoordSys | This trait (only present when HANDLE_MULTIPLE_SPATIAL_COLUMNS is enabled) stores the FME coordinate system name that corresponds to the oracle_srid trait. |
Features read from, or written to, Oracle Spatial also have an attribute for each column in the database table. The feature attribute name will be the same as the source or destination column name. The attribute and column names are case-sensitive.
The geometry descriptions given here are only entirely correct when using the default geometry encoding. When reading structured geometry from a table with the object model (using the STRUCTURED_GEOMETRY directive), the geometry will be formatted slightly differently. The section Structured Geometry Representation describes how geometry objects are represented when structured geometry is enabled.
Oracle Spatial’s object model allows each geometry to have a “point” location, in addition to any ordinates defining the geometry. It stores this information in a field named SDO_POINT
within the geometry object.
If this field is not null in the Oracle Spatial geometry object, this location is stored on the FME feature using the following attributes or geometry traits:
Attribute/Trait Name |
Contents |
oracle_sdo_point.x |
The first ordinate of the Oracle Spatial geometry’s |
oracle_sdo_point.y |
The second ordinate of the Oracle Spatial geometry’s |
oracle_sdo_point.z |
The third ordinate of the Oracle Spatial geometry’s |
Notice, however, that simple points are normally represented in Oracle Spatial geometry objects with an empty ordinate array, with the actual point location stored in the SDO_POINT
field. In this case, the FME feature will have a “point” geometry and will not contain the oracle_sdo_point
attributes. If the Oracle geometry has both an ordinate list defining a point and a defined SDO_POINT
field, the FME feature will contain both a point geometry and the required oracle_sdo_point
attributes.
Oracle Spatial (object) structures each geometry object with zero or more elements, each with a specified numeric type. Normally these types represent an actual geometry type, such as “point” or “line”, but there is also a type defined as “unknown”. Unknown elements are ignored by Oracle Spatial’s geometric computation procedures, and may be used by applications to store whatever numeric data they see fit to store.
FME has the ability to read and write a geometry’s unknown elements. It represents the unknown elements entirely with feature attributes, of the form oracle_unknown_element{m}.attrName, where m (m>=0) is the ordinal position of the element relative to the other unknown elements, and attrName has one of the following values.
Attribute Name |
Contents |
interpretation |
The interpretation tells the application what kind of data is represented by the unknown element. This may be any integral value, and is not interpreted specially by FME or Oracle in any way. |
num_ordinates |
This specifies the number of ordinates that make up the element. The ordinates are stored in Oracle as a one-dimensional array of numbers. A given element may have zero or more ordinates associated with it. |
ordinate{m} |
This is the number at the given ordinate position (0 <= m <= (num_ordinates-1)). It can be any number representable in an Oracle NUMBER type. |
The unknown elements are given a sequence number among all of a given feature’s unknown elements, but are not given any hint as to their position relative to other elements in a geometry. That is, FME sees the elements as an array of information added to an Oracle geometry object, and pays no attention to where the elements are placed in relation to “real” geometric elements of the feature. When writing to Oracle Spatial objects, FME always places the unknown elements before all other elements in the geometry.
oracle_type:oracle_nil
Features with no coordinates are tagged with this value when reading or writing to or from Oracle Spatial.
oracle_type:oracle_point
Features tagged with this value consist of a single point or an aggregate of points. When the object model is being used, an aggregate or line geometry tagged as oracle_point will be written as a “point cluster” with one or more coordinates stored as actual ordinates in the point, rather than being written as a single coordinate stored in the output geometry object’s SDO_POINT field, or coerced to being an oracle_line.
Oracle's oriented points are also supported. In this case, the SDO_POINT field is set to null, and the orientation of the point is specified on the FME feature either as a set of three numbers describing the orientation in 3D space, or a single value describing the planar rotation, as summarized in the following table. Orientation will be read through geometry traits and attributes as per the chart below. Similarly, when writing, point orientation can be provided using either attributes or traits.
Attribute/Trait Name |
Contents |
oracle_orientation |
The orientation of the point, expressed in degrees counter-clockwise from the positive X axis. When reading, this is an approximation of the orientation described by the (i,j,k) orientation vector. When writing, this value is used to compute an (i,j,0) unit vector on the horizontal plane, if no such (i,j,k) vector is defined on the feature being written. |
oracle_orient_i |
The “X axis” component of a vector describing the point’s orientation. This vector is normally a unit vector in 3D space. If the three components of the orientation vector are present on a feature being written, then the vector is used in place of any value present on the oracle_orientation attribute. |
oracle_orient_j |
The “Y axis” component of a vector describing the point’s orientation. The comments above for oracle_orient_i apply to this attribute as well. |
oracle_orient_k |
The “Z axis” component of a vector describing the point’s orientation. The comments above for oracle_orient_i apply to this attribute as well. |
oracle_type:oracle_line
Linear features are tagged with this value when reading or writing to or from Oracle Spatial. Both single part and aggregate linear features are supported.
Aggregates are written out as “multiline” geometry containing several linear elements, just as if the feature had been tagged with oracle_multiline. Any non-linear elements contained in the aggregate are discarded.
oracle_type: oracle_area
Area features are tagged with this value when reading or writing to or from Oracle Spatial. Both single part and aggregate area features are supported. An area feature may be either a polygon or a donut polygon. Note that checking is done to ensure that the area features adhere to the geometry rules of Oracle Spatial as they are loaded.
Aggregates are written out as “multipolygon” geometry containing several polygonal elements, just as if the feature had been tagged with oracle_multiline. Any non-polygonal elements contained in the aggregate are discarded.
oracle_type:oracle_arc
Arc features are tagged with this value when reading or writing to or from Oracle Spatial (object model). The arc is defined in the FME feature by a center point and a number of attributes to define the shape of the arc.
Attribute Name |
Contents |
oracle_primary_radius | The length of the arc’s semi-major axis, measured in ground units. |
oracle_secondary_radius | The length of the arc’s semi-minor axis, measured in ground units. |
oracle_start_angle | How FME calculates start_angle and sweep_angle |
oracle_sweep_angle | How FME calculates start_angle and sweep_angle |
oracle_rotation | The rotation of the major axis. The rotation is measured in degrees counterclockwise from horizontal. |
oracle_type:oracle_rectangle
Oracle Spatial rectangle objects are represented in the FME by closed polygons. When a rectangle is read, it is turned into a closed polygon feature. When a feature is written tagged with an oracle_rectangle type, its minimum bounding rectangle is computed, and the resulting lower-left and upper-right coordinates will form the ordinates for the Oracle geometry.
oracle_type:oracle_circle
Circle features are tagged with this value when reading or writing to or from Oracle Spatial (object model). The circle is defined in the FME feature by a center point and an attribute to define the circle’s radius:
Attribute Name |
Contents |
oracle_radius |
The length of the circle’s semi-major axis, measured in ground units. |
oracle_rotation |
The rotation of the major axis. The rotation is measured in degrees counterclockwise from horizontal. |
oracle_type:oracle_solid
Solid features are tagged with this value when reading or writing to or from Oracle Spatial (object model).
Solid features are supported only when writing to an Oracle Database version 11g or later. If the Oracle Spatial (object model) writer detects a version of Oracle Database older than version 11g, solid features will automatically be downgraded to a 2D representation prior to writing.
Oracle Spatial (object model) directly supports simple solids, composite solids and optimized solids.
For writing, all other types of solid geometries (e.g., extrusions) are decomposed into simple solids prior to writing.
oracle_type:oracle_surface
Surface features are tagged with this value when reading or writing to or from Oracle Spatial (object model).
Surface features are supported only when writing to an Oracle Database version 11g or later. If the Oracle Spatial (object model) writer detects a version of Oracle Database older than version 11g, surface features will automatically be downgraded to a 2D representation prior to writing.
Oracle Spatial (object model) directly supports composite surfaces, 3D polygons and rectangles.
For reading, 3D polygons and rectangles are only read as surfaces if READ_3D_POLYGON_AS_FACE is set to YES.
For writing, all other types of surface geometries (e.g., triangle fans or strips) are decomposed into composite surfaces prior to writing.
oracle_type:oracle_multipoint
Aggregate point features are tagged with this value when reading or writing to or from Oracle Spatial. When writing to Oracle, each element of the aggregate must be have a “point” geometry; others will simply be discarded before writing.
Oracle's oriented points are supported for each element of the point aggregate. On write, these can be specified on each point geometry as a trait. On read, each point geometry element in the multipoint will have the below geometry traits if the point has an orientation.
Trait Name |
Contents |
---|---|
oracle_orientation | The orientation of the point, expressed in degrees counter-clockwise from the positive X axis. When reading, this is an approximation of the orientation described by the (i,j,k) orientation vector. When writing, this value is used to compute an (i,j,0) unit vector on the horizontal plane, if no such (i,j,k) vector is defined on the feature being written. |
oracle_orient_i | The “X axis” component of a vector describing the point’s orientation. This vector is normally a unit vector in 3D space. If the three components of the orientation vector are present on a feature being written, then the vector is used in place of any value present on the oracle_orientation attribute. |
oracle_orient_j | The “Y axis” component of a vector describing the point’s orientation. The comments above for oracle_orient_i apply to this attribute as well. |
oracle_orient_k | The “Z axis” component of a vector describing the point’s orientation. The comments above for oracle_orient_i apply to this attribute as well. |
oracle_type:oracle_multiline
Aggregate linear features are tagged with this value when reading or writing to or from Oracle Spatial. When writing to Oracle, each element of the aggregate must be have a linear geometry; others will simply be discarded before writing.
oracle_type:oracle_multipoly
Aggregate polygonal features are tagged with this value when reading or writing to or from Oracle Spatial. When writing to Oracle, each element of the aggregate must be have a polygonal geometry; others will simply be discarded before writing.
oracle_type:oracle_multisolid
Aggregate solid features are tagged with this value when reading or writing to or from Oracle Spatial (object model). When writing to Oracle, each element of the aggregate must have a solid geometry.
Solid features are supported only when writing to an Oracle Database version 11g or later. If the Oracle Spatial (object model) writer detects a version of Oracle Database older than version 11g, solid features will automatically be downgraded to a 2D representation prior to writing.
Oracle Spatial (object model) directly supports simple solids, composite solids and optimized solids.
For writing, all other types of solid geometries (e.g., extrusions) are decomposed into simple solids prior to writing.
oracle_type:oracle_multisurface
Aggregate surface features are tagged with this value when reading or writing to or from Oracle Spatial (object model). When writing to Oracle, each element of the aggregate must have a surface geometry.
Surface features are supported only when writing to an Oracle Database version 11g or later. If the Oracle Spatial (object model) writer detects a version of Oracle Database older than version 11g, surface features will automatically be downgraded to a 2D representation prior to writing.
Oracle Spatial (object model) directly supports composite surfaces, 3D polygons and rectangles.
For reading, 3D polygons and rectangles are only read as surfaces if READ_3D_POLYGON_AS_FACE is set to YES.
For writing, all other types of surface geometries (e.g., triangle fans or strips) are decomposed into composite surfaces prior to writing.
oracle_type:oracle_raster
Features with raster data are unlike vector data in that they can contain various types of data arranged in blocks of pixels.
Attribute Name |
Contents |
oracle_raster_compression_type |
The type of compression to be used. This option is the one used to determine whether or not compression will occur. Current options are NONE, DEFLATE, JPEG-B and JPEG-F. If this optional attribute is not specified, the default value is NONE and the GeoRaster object is not compressed. If the attribute value is set to NONE for an existing GeoRaster object, then the object will be uncompressed. Lastly, any other options will cause the specified type of compression to occur in either INSERT or UPDATE operations. Note that compression is applied as a post-process. |
oracle_raster_compression_update_type |
The type of compression to be used when updating an existing GeoRaster object. This option overrides oracle_raster_compression_type when an update is being performed. Current options are PRESERVE, REMOVE, DEFLATE, JPEG-B, and JPEG-F. PRESERVE preserves the existing compression on the GeoRaster object, provided the data is not being rewritten. REMOVE removes compression on the existing GeoRaster object. The other options cause the specified type of compression to be applied. |
oracle_raster_compression_quality | The JPEG compression quality, which is the degree of lossiness caused by the compression. Valid values are integers from 0 (lowest quality) to 100 (highest quality). This value is ignored when not using one of the JPEG compression types. |
oracle_raster_default_red_band |
This optional parameter specifies the index of the red band in the raster. Note that the index is zero based so that the first band is at index 0. If this parameter is not present on any the input rasters then a very simple default method is used to determine whether to treat 3 or 4 band rasters as RGB or RGBA. |
oracle_raster_default_green_band |
This optional parameter specifies the index of the green band in the raster. Note that the index is zero based so that the first band is at index 0. If this parameter is not present on any the input rasters then a very simple default method is used to determine whether to treat 3 or 4 band rasters as RGB or RGBA. |
oracle_raster_default_blue_band |
This optional parameter specifies the index of the blue band in the raster. Note that the index is zero based so that the first band is at index 0. If this parameter is not present on any the input rasters then a very simple default method is used to determine whether to treat 3 or 4 band rasters as RGB or RGBA. |
oracle_raster_gcp_table_name |
The Ground Control Point (GCP) table name for the external storage of GCPs that may exist in the source data. This may be unique for each raster. The default GCP table name is the RDT table name with an suffix of _GCP. If GCPs are not present on any the input rasters then this table will not be created. |
oracle_raster_interleaving_ |
This optional parameter specifies the type of interleaving to be applied to the data when written. Possible interleaving values include: BSQ (Band SeQuential), BIL (Band Interleaved by Line) or BIP (Band Interleaved by Pixel). The default interleaving is BSQ. If the raster contains only a single band then interleaving is irrelevant. This interleaving parameter does not apply to palette values which are always BIP interleaved. |
oracle_raster_number_of_bits_per_cell | This optional parameter specifies the bit depth of the data when written. Possible values are 1, 2, 4, and AUTO. When AUTO is selected, the bit depth will be determined by the interpretation of the input raster bands. When a specific bit depth is selected, the interpretation of the input raster bands must be one of UINT8, GRAY8, RED8, GREEN8, BLUE8, and ALPHA8. In this case, data values will be truncated to the specified number of bits. For example, if the number of bits is set to 4, a value of 201 (1100 1001 in base 2) will become 9 (1001 in base 2). |
oracle_raster_pyramid_ |
This optional parameter specifies the maximum number of pyramid levels to be generated. It is a maximum because pyramids will not be generated when the number of rows or columns in a GeoRaster is less than 64. The default for this value is to auto-calculate the correct number of pyramid levels for the raster so that the smallest pyramid has at least 64 rows and columns. |
oracle_raster_pyramid_ |
The type of resampling to be applied when generating pyramid levels. The options are NN, BILINEAR, AVERAGE4, AVERAGE16, and CUBIC. The default is NN or Nearest Neighbor. |
oracle_raster_pyramid_type |
This optional parameter specifies the type of pyramid to create.The options are NONE and DECREASE. If the attribute value is set to NONE for an existing GeoRaster object, the existing pyramids will be deleted. |
oracle_raster_pyramid_update_type |
The type of pyramid to create when updating an existing GeoRaster object. This option overrides oracle_raster_pyramid_type when an update is being performed. Current options are PRESERVE, REMOVE, and DECREASE. PRESERVE preserves the existing pyramids, provided the data is not being rewritten. REMOVE removes the existing pyramids. DECREASE generates new pyramids. |
oracle_raster_table_name |
The Raster Data Table (RDT) name for the given GeoRaster object. This table is where the pixel values of the input rasters will be stored. The default value is an automatically generated table name based on the raster identifier both of which are assigned by the database itself. the expected table name is ‘RDT_<rasterid>$’. |
oracle_raster_lob_type |
The large object (LOB) storage type used for storing raster data. This option only has an effect when creating a new Raster Data Table (RDT). The options are BASICFILE and SECUREFILE. BASICFILE specifies the original Oracle LOB storage type. SECUREFILE is a new LOB storage type introduced in version 11g which offers many advantages, including better performance. The default value depends on the version of the Oracle database being written to. When the version is 11g or later, SECUREFILE will be used; when the version is older than 11g, BASICFILE will be used. |
oracle_raster_tile_size_x |
The horizontal size in pixels of a tile in the Raster Data Table (RDT). The value must be a power of 2. |
oracle_raster_tile_size_y |
The vertical size in pixels of a tile in the Raster Data Table (RDT). The value must be a power of 2. |
oracle_raster_validate |
The option to validate the raster once written. If set to YES this option employs native GeoRaster validation and logs either TRUE if the GeoRaster is valid, or else it logs the Oracle error number that defines the reason for invalidity. The default value is NO indicating no validation will occur. Note that validation is checked as a post-writing process and happens before pyramiding and compression. |
oracle_raster_extent_srid |
This option is similar to the oracle_srid format attribute except that this SRID only applies to the spatial extent geometry stored inside the georaster object. This option allows users to set a different SRID for the extent of the raster that the raster itself. Valid values include the valid range of SRID values acceptable to Oracle. The default value is 0, indicating no SRID is present. Note that intially the extents are written in the same SRID as the raster and then reprojection will occur as necessary as a post-process. |
oracle_type:oracle_point_cloud
Point cloud features are tagged with this value when reading or writing to or from Oracle Spatial (object model).
Point cloud features are supported only when writing to an Oracle Database version 11g or later.
Attribute/Trait Name |
Contents |
oracle_point_cloud_block_capacity |
The maximum number of points that can be inserted into a point cloud block. The default is 5000. |
oracle_point_cloud_block_min_res |
The minimum resolution level at which block data will be visible. Usually, lower values mean farther from the view point, and higher values mean closer to the view point. |
oracle_point_cloud_block_max_res |
The maximum resolution level at which block data will be visible. Usually, lower values mean farther from the view point, and higher values mean closer to the view point. |
oracle_point_cloud_block_table_name | The block table name for the point cloud object. This table is where the point data will be stored.
The default value is an automatically generated table name based on the base table name: <basetable>_BLK |
oracle_point_cloud_sort | Whether to sort points. Sorted points may potentially be clipped faster than unsorted points by some applications. |
oracle_point_cloud_sort_dimension | Number of the dimension (1 for the first dimension, 2 for the second dimension, and so on) on which to sort points |
oracle_point_cloud_tol | Tolerance value for objects in the point cloud. |
oracle_type:oracle_collection
Aggregates containing heterogeneous collections of point, line and polygon features are tagged with this value when reading or writing to or from Oracle Spatial.