The SEDRIS API may be downloaded as part of the SEDRIS SDK Release from the SEDRIS SDK Product Downloads page.
Quick Scroll To:
SEDRIS provides a standard API to manipulate transmittals. The API allows users of SEDRIS to ignore media and implementation details by abstracting SEDRIS data through the API. The API provides transmittal manipulation cababilities through object retrieval, creation, and modification functionality.
SEDRIS transmittals can be accessed through open transmittal function calls that provide different access permissions.
The API calls will use private data types to extract the SEDRIS objects from a transmittal. These private data types can be thought of as handles to the data allocated by the API, and are used to pass data in and out of API functions. These private data types are valid until they are passed into a corresponding Free function. The most important of these private data types are the DRM class object handles. These types are used for objects retrieved from and created using the API, and are passed back into the function FreeObject in order for the API to release any corresponding data.
The API provides capabilities to retrieve all transmittal traversing the hierarchy of DRM objects. Thus, there are functions that traverse all three types of object relationships, aggregate, component, and associate; retrieve object data, and set API behaviour for converting object data.
In order to start consuming transmittal data, a transmittal is opened and the root object retrieved. The root object is the root of the hierarchy tree of the transmittal as specified by the DRM. Navigation of the transmittal can then be performed starting at the root object and using the API.
A user may specify how Inter Transmittal Referencing (ITR) will be handled during consumption. This allows the API to determine how to retrieve objects that are related through ITR. This allows a user to return no objects with ITR, report that there is an object pointed to, but not retrieve it, and to retrieve all objects including objects pointed to by ITR.
The API provides the capabilities to retrieve a single component, aggregate, or associate of an object in a transmittal.
The API provides the iterator private data type in order to cycle through a set of DRM objects that are related to an object. There are three types of iterators aggregate, component, and associate, one for each allowed DRM relationship type. The API iterators create an internal list of DRM objects,which are then sequentially retrieved through API calls.
The iterators use the search capability provided by the API. Objects in the iterator list are retrieved. When the iterator list has been exhausted, the iterator can be deallocated.
An aggregate iterator is created that allows the user to provide a Search Filter. If no Search Filter is provided, the iterator will initialize to all aggregates. The user cycles through the list and when there are no more objects in the list, the iterator is freed.
An associate iterator is created allowing the user to provide a Search Filter. If no Search Filter is provided, then the iterator will initialize to all associates. The user cycles through the list and when there are no more objects in the list, the iterator is freed.
The third type of itearator is the component iterator. This iterator contains more advanced features than the other two types of iterators. Component iterators are created, the objects are retrieved, and deallocated. Component iterators can retrieve component hierarchies if the maximum search depth is specified greater than 1. If the maximum search depth is specified is 0, then the complete hierarchy rooted at the start object will be retrieved. When retrieving objects, component iterators provide more advance criteria for limiting objects retrieved and specifying the order in which objects are ordered.
After DRM objects have been retrieved from a transmittal, the API provides functions to retrieve the data associated with each object. The most important object data is the DRM class of the object. The field data of an object is retrieved. Objects of DRM class <Data Table> have specific functions to extract the data associated with the object. Likewise, objects of DRM class <Image> can have the image data retrieved.
The API provides the capabilities to create transmittals. This process requires instantiating DRM objects though the API storing the data corresponding to the objects and creating the transmittal hierarchy by creating the allowed relationships between objects in a transmittal. The API allows users to create previously non-existent transmittals as well as modify transmittals that have already been created.
Objects of any concrete DRM class can be created. This will create an object in the specified transmittal of the specified DRM class. The only requirement is that the transmittal has been opened, with access mode set to append, create, or update.
Relationships are created between DRM objects in a transmittal. In each case the two objects to create relationships are passed in and the relationships made. Aggregate relationships are also created. In the case where associate objects have a bi-directional relationship (i.e., both objects associate to each other), the user can determine when to create the second half of the associate relationship.
In the case of ITR, there are two methods to creating ITR relationships. If both objects are accessible and hence both transmittals have been opened correctly, then the relationships can be established. If one of the transmittals and hence one of the objects is not available, the user can create a placeholder object. The object can then be used in establishing the relationship.
When producing transmittals, in most cases there will be previous data that needs to be provided in a SEDRIS transmittal. This data can be raw data such as imagery, satellite data, or elevation data. It can also be environmental data from a specific use format to be provided for more broader consumption. In these cases, the data will need to be coverted into DRM objects in order for a transmittal to be converterd. This process involves mapping the data to be used for transmittal creation into DRM objects. This process requires an analysis of the native data and its inherent data model and its artifacts and how they translate into DRM objects and their organization.