POSC Specifications
Version 2.2
Usage Manual
Seismic Interpretation

[Usage Document Table of Contents]


2.1 Introduction

This section deals with the business process of interpreting seismic lines (or 3d survey). In particular, the scenario will be that the final section (stacked or migrated) has been interpreted to give one or more interpreted events. The trace data may be stored in the database itself, but whether it is or not will be irrelevant to the rest of the problem.

The approach will support a business process. The business process will begin with a single interpreted horizon on a single line. As the seismic is worked further, additional interpretations of the horizon, as well as additional horizons, will be added. Also supported in this article will be the case that alternate interpretations will be given.

2.2 Background Preparation

2.2.1 Pre-build Entities

Given the business scenario, it is clear that the single tracked event will not be the only one, but will be a part of a larger project. It is useful to set up a structure to support the growth of the project. This section will identify this project infrastructure that will be developed so that the individual interpretations can be easily stored, and will instantiate some of these "background preparation" instances.

The first is the project activity. Epicentre allows the construction of an activity hierarchy through the use of the "contained_activity, containing_activity" relationship. Although the use of this hierarchy is optional, it is a useful way to group all activities related to a particular project together.

For the purposes of this article, we will develop an activity called "Anumu Seismic Interpretation." In its simplest form, this name, along with a ref_existence_kind = 'actual', will be the only attributes. Depending on other information and company guidelines, a start_time and end_time may also be known. Also, it may be a part of a larger activity (such as "The Anumu Prospect"), in which case the containing_activity attribute will be instantiated. The details of the 'Anumu Seismic Interpretation' are less important for this section than the fact that we are creating the "parent" activity.

It is also useful to identify the interpreters that are working on the project. This will be done by instantiating business_associates, identifying them as being on the project, identify the company(ies) they work for, and their positions within the company(ies). This particular "business_associate structure" can be pre-built, but can also be easily changed to add or subtract workers.

The interpretation will refer to a lithostratigraphic_marker. In general, this marker will already be stored. Other articles deal with storing a "geologic column," so this article will assume such storage, and will use these "preloaded" markers for the interpretation.

2.2.2 Description of Example

For purposes of this section, an example data set will be used, and will be interpreted by an example project team. Following is a description:

There are 6 lines over the Anumu area. They will be called AN-1, AN-3, AN-5, and AN-7, which run mostly East-West (dip lines), and AN-2, and AN-4 which run mostly North-South (strike lines). These lines are located Pecos County, Texas, in the Permian Basin.

The first line to be interpreted will be the AN-3 line. It will be interpreted by Joe, who works for MyCompany. Also on the project team are Bill and Mary, the leader of the team. Based on early work, the team may also contract out some of the interpretation to "Pretty Good Interpretations," a consulting group they have used in the past with pretty good success. The team is formed on 1 March 1999, with Joe doing the initial work.

2.2.3 Create the Project Team

----> Begin Example: Seismic Interpretation Background

(* Presumably, all three of these people and their relationship to the
   company were previously instantiated, as follows *)
 
Joe = BUSINESS_ASSOCIATE {
   identifier(M,K) --> 'Joe';
   ref_naming_system(O) --> @PRV_nickname; };
 
Bill = BUSINESS_ASSOCIATE {
   identifier(M,K) --> 'Bill';
   ref_naming_system(O) --> @PRV_nickname; };
 
Mary = BUSINESS_ASSOCIATE {
   identifier(M,K) --> 'Mary';
   ref_naming_system(O) --> @PRV_nickname; };
 
(* Now give the company, and make Joe, Bill, and Mary employees. Again,
   this was probably previously instantiated. *)
 
MyCompany = BUSINESS_ASSOCIATE {
   identifier (M,K) --> 'My Company';
   ref_naming_system(O) --> @PRV_common_name; };
 
JoeWork = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_employee;
   business_associate (M,K) --> @Joe;
   associated_with (M,K) --> @MyCompany; };
 
BillWork = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_employee;
   business_associate (M,K) --> @Bill;
   associated_with (M,K) --> @MyCompany; };
 
MaryWork = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_employee;
   business_associate (M,K) --> @Joe;
   associated_with (M,K) --> @MyCompany; };
 
(* For later use, also create the consulting company *)
 
PrettyGood = BUSINESS_ASSOCIATE {
   identifier (M,K) --> 'Pretty Good Interpretations';
   ref_naming_system(O) --> @PRV_common_name;};
 
consultant = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_consultant;
   business_associate (M,K) --> @PrettyGood;
   associated_with (M,K) --> @MyCompany; };
 
(* Note that a lot more information could be given about the employees,
   the consultant, and their business relationships, their services, etc.
   This detail is a part of the business associate portion, and is ancillary
   to the discussion of the seismic interpretation. *)

----> Pause Example: Seismic Interpretation Background

Another part of the background to instantiate is the project team. This will be done when the project is formed. I.e., this presumably will not already exist, and must be instantiated when the team is formed.

----> Continue Example: Seismic Interpretation Background

AnumuTeam = BUSINESS_ASSOCIATE {
   identifier (M,K) --> 'Anumu Project Team';
   ref_naming_system (O) --> @PRV_project_name; };
 
team = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_work_group;
   business_associate (M,K) --> @AnumuTeam;
   associated_with (M,K) --> @MyCompany;
   start_time --> '1999-MAR-01' };
 
(* Now put members on the team *)
 
JoeTeam = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_work_group_member;
   business_associate (M,K) --> @Joe;
   associated_with (M,K) --> @AnumuTeam; };
 
BillTeam = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_work_group_member;
   business_associate (M,K) --> @Bill;
   associated_with (M,K) --> @AnumuTeam; };
 
MaryTeam = BUSINESS_ASSOCIATION {
   ref_business_association_role (M,K) --> @PRV_work_group_member;
   business_associate (M,K) --> @Mary;
   associated_with (M,K) --> @AnumuTeam; };
 
(* Give Mary the title of "Team Leader" *)
 
MaryLeader = BUSINESS_ASSOCIATE_JOB_TITLE {
  ref_business_associate_job_title (M) --> @RV_Team_Leader;
   start_time --> '1999-MAR-01';
   business_association --> @MaryTeam; };

----> Pause Example: Seismic Interpretation Background  

2.2.4 Create the Project Parent Activity

The final background part to instantiate is the parent activity, 'Anumu Seismic Interpretation'. This is done using a geoscience_interpretation.

----> Continue Example: Seismic Interpretation Background

parentactivity = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   name --> 'Anumu Seismic Interpretation';
   description --> 'The parent activity for the Anumu interpretation
                    project. All activities that are a part of this
                    project will reference this activity using the
                    containing_activity relationship.';
   start_time --> '1999-MAR-01'; };

----> End Example: Seismic Interpretation Background

2.3 Load the Seismic Information

Let the project begin.

The seismic trace data need not be loaded into Epicentre in order to record the tracked horizon. As a first pass, then, we will load the seismic information, but will not consider loading the seismic trace data.

This means, of course, that the "horizon track" must come from another application. Therefore, the horizon track must be loaded into Epicentre using a special application. This article does not deal with those details. It is intended only to show where the data will be loaded - whether it is generated from using Epicentre-stored data or using data from outside Epicentre.

2.3.1 Epicentre Description

The main entity in seismic is the seismic_geometry_set. This is where the line will receive its identification.

The binset information will be carried in a binset_grid, which consists of a grid_structured for which we can define information about the bin points. In this example, the only information we want to record are the names and locations of the bin nodes (CDP's).

Previous industry practice would work with shot points for the locations. This means that it is often necessary to relate the shot points to the bin nodes. The reason for this need is that base maps of the seismic lines were typically made which labelled the shot point locations only. Today, the locations of bin nodes are generally given in earth coordinates so this relationship is no longer necessary. The method for instantiating this relationship is given in the article on 2d Seismic Line.

In addition to the above entities, it is also necessary to instantiate a seismic_data_set. This will define the data (whether the traces are loaded or not) that is being interpreted. In general, for horizon tracks, it will be the "stacked" or "migrated" data.

2.3.2 Instantiate Line and Locations

----> Begin Example: Seismic Interpretation

(* Since we are contemplating expansion of this example, it is
   useful also to form the parent seismic_geometry_set - the one that
   represents the 2d survey. Then each line will be a child *)
 
parent_sgs = SEISMIC_GEOMETRY_SET {
   identifier(M,K) --> 'Anumu 2d survey';
   description --> 'Six lines from the Anumu prospective area.';
   ref_seismic_geometry(M) --> @PRV_2d_survey;
   ref_survey_environment --> @PRV_land; };
 
2dline3 = SEISMIC_GEOMETRY_SET {
   identifier(M,K) --> 'AN-3';
   description --> 'Dominantly E-W (dip) line in the Anumu
                          prospective area.';
   ref_seismic_geometry(M) --> @PRV_2d_line;
   ref_survey_environment --> @PRV_land;
   part_of (K) --> @parent_sgs; };
 
(* Now create the binset. Begin with the axis and grid. Note that
   the term CDP is often used interchangeably with bin point index *)
(* This example will create the needed axis. In general, there should
   already be an axis that can be used. *)
 
bpaxis = GENERAL_COORDINATE_SYSTEM_AXIS {
   ref_quantity_property --> @PRV_binset_point_index;
   source --> @PRV_ilab; };
 
binpointgrid = GRID_1D_EQUAL {
   name = 'AN-3 bin point grid';
   origin --> QUANTITY {
      real_value --> 101;
      ref_unit_of_measure --> @PRV_Euc; }; -- First bin point is '101'
   step --> QUANTITY {
      real_value --> 1;
      ref_unit_of_measure --> @PRV_Euc; }; -- And it increases by 1.
   point_count --> 683; -- And there are 683 bin points 
   connected --> FALSE ;
   coordinate_system_axis --> @bpaxis; };
 
(* Now form the regular_binset *)
 
binset3 = BINSET_GRID {
   name = 'AN-3 binset';
   seismic_geometry_set --> @2dline3;
   grid_structured --> @binpointgrid;
   ref_binset_geometry_class --> @PRV_regular; };
 
(* Now give the locations of the bin points *)
 
binlocs = PTY_GEOMETRY_2D_EDGE {
   binset(K) --> @binset3;
   data_value --> LINE_GRID { --ndt_geometry_2d_edge
      blocframe = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        descriptor --> LIST( @blocdescr);
        leaf_frame --> SET( @bnorvalues, @beastvalues );
        grid_or_mesh --> @binpointgrid;
        coordinate_system --> @PRV_NAD27_/_Texas_North_Central; };
      blocdescr = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 1;
       count --> 683; }; -- number of points on line.
      bnorvalues = LEAF_FRAME { -- array of northing values
        data_type --> 'DAE_C_FLOAT';
        coordinate_system_axis --> @PRV_northing_in_ftUS;
        ref_unit_of_measure --> @PRV_ftUS;
        data_values(M) --> [ here is an array of 683 northing values ]; };
      beastvalues = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        coordinate_system_axis --> @PRV_easting_in_ftUS;
        ref_unit_of_measure --> @PRV_ftUS;
        data_values(M) --> [ here is an array of 683 easting values ];
 }; }; }; };

(* the data_value attribute is an array of 683 pairs of location values.
 All share the same projected coordinate system and the same units pair *)

----> Pause Example: 2D Line

2.3.3 Seismic Data

The seismic data itself (in this example) will not be stored, or even "checked in." This means that we make reference to the data only. The purpose of this reference is so that we can indicate which "version" of the data was used for the interpretation. For this example, assume that it is the final migration that is used.

--> Continue example: Seismic Interpretation

mig_data = SEISMIC_DATA_SET {
   name (M,K) = 'final migration';
   seismic_geometry_set (M,K)--> @2dline3
   binset --> @binset3;
   description --> 'The final, poststack time-migrated version of
                 AN-3. Not actually stored in the data store.'; };

----> Pause Example: 2D Line

This information is not quite complete. It is also important to give some information about the seismic data, even though it will not be physically stored. In particular, we will give the information that there are 4 sec of data, at a 4 msec sampling interval; and that the data is datumed to 800 ft elevation. The method of storing the datum is covered in detail in another section. The datum is stored as part of the coordinate system that will be used by the seismic data set. In order to use this information, assume that the coordinate system that is stored for the seismic data is called 'AN-3 post stack migrated', and will be referenced using the instance reference value: @section_cs_3.

----> Continue Example: 2D Line

(* The sample interval, number of samples and number of traces will
   be recorded in the grid *)
 
time_grid_axis = GRID_1D_EQUAL {
   name --> 'migrated time grid AN-3';
   connected = FALSE;
   coordinate_system_axis --> @time_axis;
(* the time axis used in the section_cs coordinate system *)
   origin --> QUANTITY {
      real_value --> 0.;
      ref_unit_of_measure --> @PRV_ms; };
   step --> QUANTITY {
      real_value --> 4.;
      ref_unit_of_measure --> @PRV_ms; };
   point_count --> 1000; };
 
(* Note that the bin point grid instantiated earlier can
   be reused. *)
(* Now the time grid axis can be combined with the bin point
   grid axis to form a grid_defined_grid *)
 
section_grid = GRID_DEFINED_GRID {
   name --> 'AN-3 migrated seismic section grid';
   grid_structured --> LIST( @binpointgrid, @time_grid_axis ); };
 
(* Now add more information to the seismic_data_set created above.
   The additional information is the data_value, which will contain
   the datum information above (through the relationship to the axis),
   the sample interval and number of samples and number of traces. *)
 
data_info = PTY_GEOMETRY_2D_FACE {
   seismic_data_set --> @mig_data;
   data_value --> SURFACE_GRID {
      g_frame_1 = GEOMETRY_FRAME {
        detailed_type --> 'FT_SURFACE';
        descriptor --> LIST( @descr_m1, @descr_m2 );
        grid_or_mesh --> @section_grid;
        coordinate_system --> @section_cs_3;
        leaf_frame --> SET( @t_leaf, bp_leaf ); };
      descr_m1 = DESCRIPTOR { -- time_axis
        dimension --> 'INDEX_I';
        lower_bound --> 1;
        count --> 1000; }; 
      descr_m2 = DESCRIPTOR { -- bin point axis
        dimension --> 'INDEX_J';
        lower_bound --> 1;
        count --> 683; }; 
      t_leaf --> LEAF_FRAME {
        ref_property_kind --> @PRV_seismic_time;
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        data_values --> LIST( Use The Grid_1d_equal Values ); }; }; };
      bp_leaf --> LEAF_FRAME {
        ref_property_kind --> @PRV_bin_point_index;
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_Euc;
        data_values --> LIST( Use The Grid_1d_equal Values ); }; }; };

----> Pause Example: 2D Line

2.4 Pick an Horizon

Joe picks an horizon on the line AN-3, which he interprets as the Top of Strawn. The picks are presented as a set of CDP vs time.

Before actually going into the details for this step, it is worthwhile looking at the total process of interpretation that will be represented. It is intended that the above set of seismic picks will be one part of the interpreted surface. It is intended that later work will add to the "Top of Strawn." Using this foresight, it is best to think of the Top of Strawn as being a composite spatial object (earth_position_composite), and the set of picks for line AN-3 as being one part of this composite. So we will instantiate an earth_position_composite to which we will add the picked lines when they become available.

The thing we are picking is the Top of the Strawn. Presumably, the appropriate geologic_feature (subtype: lithostratigraphic_marker) will have been instantiated. For this example, though, we will instantiate the lithostratigraphic_marker, "Top of Strawn." Note that we are not picking this directly. We are actually picking a seismic_feature. We may call it "Top of Strawn" to indicate our expected interpretation, but we could also call it "seismic doublet." The name of the seismic_feature is not intended to have any semantic meaning. The association we make that this seismic feature is the Top of Strawn will be done as an interpretation step, and that will give semantic meaning to the event

Finally, it should be noted that we will be getting bunches of these picks together to form the surface, "Top of Strawn." Each new pick will be assigned not only to the lithostratigraphic_marker as mentioned above, but also to the "group" of picks that are the earth_position_composite. We are in essence compositing these lines into a surface.

It may seem like we are going through an extra step by making the picks represent a seismic_feature rather than directly making them represent a lithostratigraphic_marker. But this extra step allows us to change the interpretation, or to give alternate interpretations.

Assume, for example, that we pick AN-4 and make the pick (earth_position_edge) a representation of the lithostratigraphic_marker, "Top of Strawn." But later knowledge shows us that it is NOT Top of Strawn, but instead is Top of Number 2 shale. In many data models, this change in the interpretation would be done by deleting the relationship between the earth_position_edge (the picks) and the lithostratigraphic_marker, "Top of Strawn." A new relationship would then be added to "Top of Number 2 shale." But this is not in the spirit of Epicentre. Epicentre allows the database to keep track of all the interpretations. For Epicentre, the seismic_feature does not change. What does change is the association of the feature with the "Top of Strawn." This association, which will keep a history of changed interpretations, is realized in the entity interpreted_feature_association.

Now onto the details. These comments will be repeated at the appropriate place.

2.5 Store the AN-3 pick

----> Begin Example: AN-3 picked horizon.

(* First set up the lithostratigraphic_marker *)
 
Top_Strawn = LITHOSTRATIGRAPHIC_MARKER {
   identifier --> 'Top of Strawn'; };
 
(* Record the picking activity *)
 
pickAN-3 = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-Mar-06: 3:27 pm
      date1 = DATE {
        year --> 1999;
        month --> 3;
        day --> 6; };
      time1 = TIME {
        hour --> 15;
        minute --> 27;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time
        days --> 0;
        hours --> -6; -- Houston is 6 hours behind UCT
        minutes --> 0;
        seconds --> 0.0; }; }; };
 
(* Record the person who did the picks *)
 
joeDidIt3 = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Joe
   activity --> @pickAN-3; };
 
(* Now form the seismic feature *)
 
AN-3pick1 = SEISMIC_FEATURE {
   identifier --> 'AN-3 doublet horizon (Strawn)';
   seismic_geometry_set --> @2dline3; };
 
(* Now form the edge *)
 
AN-3edge1 = EARTH_POSITION_EDGE {
   identifier --> 'AN-3 doublet picks (Strawn)';
   geoscience_interpretation --> @pickAN-3;
   geologic_feature --> @AN-3pick1;
   binset --> @binset3; };
 
(* Note that the binset relationship tells the earth_position_edge
   how to make sense of the bin point index values. It does NOT mean
   that the geometry will use the grid from the binset. It may, but
   it does not have to *)
 
geometry31 = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-3edge1;
   activity --> @pickAN-3;
   data_value --> LINE_GRID {
      gframe3 = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @binpointgrid; -- from the binset
        coordinate_system --> @section_cs_3;
(* This is the coordinate system created in another section that includes
   the datum in the time axis. It can be used, in general, only for this
   seismic_data_set *)
        descriptor --> LIST( @descr_31 );
        leaf_frame --> SET(@leaf_31, @LEAF_32 ); };
      descr_31 = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 7;
        count --> 664; };
(* Note. This descriptor says that the "picks" do not include the
   first 6 bin point indexes, or some at the end. Probably, the picks
   at the ends of the line were not reliable. *)
      leaf_31 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> (use the grid_1d_equal values); };
      leaf_32 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 664 time picks ); }; };

(* Now it is necessary to "interpret" the seismic_feature as the Top
   of Strawn. Note that I will use the same geoscience_interpretation
   activity, although it is possible to instantiate another one to do
   the interpretation part. *)
 
interpTieAN-31 = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-Mar-06: 3:27 pm
      date1 = DATE {
        year --> 1999;
        month --> 3;
        day --> 6; };
      time1 = TIME {
        hour --> 15;
        minute --> 27;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time
        days --> 0;
        hours --> -6; -- Houston is 6 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @AN-3pick1;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-3; };

----> End Example: AN-3 picked horizon.

2.5.1 Adding more lines - overturned beds

Now it is time to interpret line AN-7. Much of what is done for AN-7 is just a repeat of what has been done for line AN-3. What is the same will be repeated without comment. What is different will be highlighted.

First is the question of what can be reused. The whole interpretation team can be reused for this part. The parent seismic_geometry_set, and the parent activity can be reused. But there will be a different seismic_geometry_set for the line, as well as a different binset and a different seismic_data_set.

There may be a choice for the seismic section coordinate system. Recall that this coordinate system contained the seismic datum for the time axis. That is, the time axis included the information that zero time corresponded to 800 ft. If the datum for line AN-7 is also 800 ft, the seismic coordinate system can be reused. But it doesn't have to be. For this example, assume that a new Seismic_coordinate_system, @section_cs_7, was developed for line AN-7. Note that in general, there must be a "seismic section coordinate system" for each seismic_data_set.

It is useful to force a difference for illustrative purposes. The geometry of the first interpreted surface was straightforward. For every bin point there was at most one picked time. Now it is useful to vary that interpretation by having more than one pick for some bin point indexes. This occurs frequently in the thrust belt when a formation folds back under (or over) itself. It can also occur when there are reverse faults, although I will show another way to handle that case later.

Epicentre has no problem with this situation. To see this, let's review how the previous picks were stored.

The Pty_geometry instance was a 2d_edge. This says that I will give you the description of an edge (line) in a 2d coordinate system. The coordinate system used was time vs bin point index. The instance of the data_value indicated that the grid used was the same as the one used for the binset, and that the bin point index values are to be given by implication, and not given explicitly. That is, look at the grid_1d_equal axis that was used as the binset grid. It contains the information that allows the computation of the bin point index values at each grid node. (In particular, they are 101., 102., ..., 783.).

The time values had to be given explicitly. By pairing up the time values with the implied bin point index values, the edge can be traced out on a map.

A key point in the above semantics is that a bin point index appears only once. When the seismic event "doubles back" on itself, a bin point index will appear more than once. So the above strategy will not work. For this case, it will be necessary to explicitly give the bin point index values, and a corresponding list of time values.

To do this, a grid_1d_parametric is used. This axis will have a number of points that is at least the length of the lists of data. Then the two lists of data will be given. Since it is permissible for the bin point index to appear more than once, it is possible for the event to double back.

----> Begin example: Another picked line AN-7

pickAN-7 = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-Apr-12: 2:08 pm
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 12; };
      time1 = TIME {
        hour --> 14;
        minute --> 8;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
joeDidIt7 = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Joe;
   activity --> @pickAN-7; };
 
AN-7pick1 = SEISMIC_FEATURE {
   identifier --> 'AN-7 doublet horizon (Strawn)';
   seismic_geometry_set --> @2dline7; };
 
AN-7edge1 = EARTH_POSITION_EDGE {
   identifier --> 'AN-7 doublet picks (Strawn)';
   geoscience_interpretation --> @pickAN-7;
   geologic_feature --> @AN-7pick1;
   binset --> @binset7; };
 
(* Now instantiate the parametric grid axis *)
 
param7 = GRID_1D_PARAMETRIC {
   name --> 'AN-7 Strawn parametric grid';
   connected --> FALSE;
   point_count --> 692; };
 
(* The pty geometry will use this grid *)
 
geometry71 = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-7edge1;
   activity --> @pickAN-7;
   data_value --> LINE_GRID {
      gframe7 = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @param7;
        coordinate_system --> @section_cs_7;
(* This is a coordinate system instantiated earlier *)
        descriptor --> LIST( @descr_71 );
        leaf_frame --> SET(@leaf_71, @LEAF_72 ); };
      descr_71 = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 1;
        count --> 692; };
      leaf_71 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> LIST(here are the 692 bin point axis values); };
      leaf_72 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 692 time picks ); }; };
 
(* Now back to "copying" the previous example *)
 
interpTieAN-71 = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-Apr-12: 2:08 pm
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 12; };
      time1 = TIME {
        hour --> 14;
        minute --> 8;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @AN-7pick1;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-7; };

----> End example: Another picked line AN-7

2.5.2 Adding more lines - Two segments

In this example (crossing line AN-2), the variation will be that the picked line is in segments. It may be in segments because there is a fault (normal or reverse, it doesn't matter), or because there is a bad data area that is not picked.

Epicentre has an easy way to combine these segments. Two earth_position_edges will be instantiated. They will then be combined into an earth_position_composite.

For this example, the geometry of the edges will be given as for AN-3. That is, the binset grid will be used, and the bin point indexes will be given by implication.

----> Begin Example: Another line AN-2

pickAN-2 = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-Apr-26: 10:15 am
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 26; };
      time1 = TIME {
        hour --> 10;
        minute --> 15;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
joeDidIt2 = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Joe;
   activity --> @pickAN-2; };
 
AN-2pick1 = SEISMIC_FEATURE {
   identifier --> 'AN-2 doublet horizon (Strawn)';
   seismic_geometry_set --> @2dline2; };
 
(* Create the composite edge which will combine the two segments *)
 
AN-2_edgecomp = EARTH_POSITION_COMPOSITE {
   identifier --> 'AN-2 composite pick (Strawn)';
   geoscience_interpretation --> @pickAN-2;
   part --> SET( @AN-2edge1, @AN-2edge2 );
   geologic_feature --> @AN-2pick1;
   binset --> @binset2; };
 
(* Need two edges, two pty_geometries *)
 
AN-2edge1 = EARTH_POSITION_EDGE {
   identifier --> 'AN-2 doublet picks (Strawn) first seg';
   identifying_whole --> @AN-2_edgecomp; --this is new
   geoscience_interpretation --> @pickAN-2;
   geologic_feature --> @AN-2pick1;
   binset --> @binset2; };
 
 
geometry21 = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-2edge1;
   activity --> @pickAN-2;
   data_value --> LINE_GRID {
      gframe21 = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @binpointgrid; -- from the binset
        coordinate_system --> @section_cs_2;
(* This is a coordinate system particular to this seismic data set *)
        descriptor --> LIST( @descr_21 );
        leaf_frame --> SET(@leaf_21, @LEAF_22 ); };
      descr_21 = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 12;
        count --> 213; };
(* Note. This descriptor says that the "picks" do not include the
   first 11 bin point indexes. There are 213 of them, which takes
   it less than halfway across the line. *)
      leaf_21 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> (use the grid_1d_equal values); };
      leaf_22 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 213 time picks ); }; };
(* Now the second edge *)
 
AN-2edge2 = EARTH_POSITION_EDGE {
   identifier --> 'AN-2 doublet picks (Strawn) second seg';
   identifying_whole --> @AN-2_edgecomp; --this is new
   geoscience_interpretation --> @pickAN-2;
   geologic_feature --> @AN-2pick1;
   binset --> @binset2; };
 
geometry22 = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-2edge2;
   activity --> @pickAN-2;
   data_value --> LINE_GRID {
      gframe22 = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @binpointgrid; -- from the binset
        coordinate_system --> @section_cs_2;
(* This is the same coordinate system as for the first edge *)
        descriptor --> LIST( @descr_22 );
        leaf_frame --> SET(@leaf_23, @LEAF_24 ); };
      descr_22 = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 248;
        count --> 412; };
(* Note. This descriptor picks up from the 248th point. (the first
   segment only went through 224), and goes through to 659 *)
      leaf_23 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> (use the grid_1d_equal values); };
      leaf_24 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 412 time picks ); };
};

----> Pause Example: Another line AN-2

A careful reading shows that the earth_position_composite references the two earth_position_edges. Likewise, the earth_position_edges each reference the earth_position_composite (for identity purposes). Typically the way this would work would be that the earth_position_edges would be instantiated first. (In general, you probably don't know that you will be combining segments). When it becomes clear that there will be segments that will be combined, the earth_position_composite will be instantiated. Then the various edges will be updated to reference the composite.

It can also be noted that the two edge segments were related to the seismic_feature. They need not be, since they get their identity from the composite. But it is possible for them to be. In general, if these segments are from separate interpretations, they will be separately related, and the composite will also be related.

The final step is to tie the seismic_feature to the geologic_feature (The Top of Strawn).

----> Continue Example: Another line AN-2

interpTieAN-21 = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-Apr-26: 10:15 am
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 26; };
      time1 = TIME {
        hour --> 10;
        minute --> 15;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @AN-2pick1;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-2; };

----> End example: Another line AN-2

2.5.3 Putting the edges together

The three edges (one of which is a composite) above implicitly represent a surface. We want to indicate that. We can do that by combining the three edges together into an earth_position_composite. This composite would form another seismic_feature. In this case the seismic_feature would be the "Top of Strawn," as have all the others, but it would not be identified by the seismic line from which an edge was picked. We will need to identify it by the parent seismic_geometry_set, "Anumu 2d survey."

Note that it is still a seismic_feature. As a final step, the seismic_feature will be related to a geologic_feature (lithostratigraphic_marker), "Top of Strawn." This is an interpretation stage.

----> Begin Example: Combining edges

group_Strawn = GEOSCIENCE_INTERPRETATION {
   name --> 'Group Strawn picks into surface';
   ref_existence_kind --> @PRV_actual;
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-Apr-26: 10:25 am
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 26; };
      time1 = TIME {
        hour --> 10;
        minute --> 25;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
Strawn_pick_group1 = SEISMIC_FEATURE {
   identifier --> 'Anumu Strawn surface';
   description --> 'This is a group of edges that implicitly define
              the surface of the Strawn in the Anumu prospect area.';
   seismic_geometry_set --> @parent_sgs; }; };
 
Strawn_epc1 = EARTH_POSITION_COMPOSITE {
   identifier --> 'Anumu Strawn Picks';
   geoscience_interpretation --> @group_Strawn;
   geologic_feature --> @Strawn_pick_group1;
   part --> SET( @AN-2_edgecomp, @AN-7edge1, @AN-3edge1 ); };
 
(* Now use the interpreted_feature_association to indicate that this group represents the Strawn *)
 
interpTieAN-21 = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-Apr-26: 10:25 am
      date1 = DATE {
        year --> 1999;
        month --> 4;
        day --> 26; }; 
      time1 = TIME {
        hour --> 10;
        minute --> 25;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @Strawn_pick_group;
   geologic_feature --> @Top_Strawn;
   caused_by --> @group_Strawn; };

----> End Example: Combining Edges

2.5.4 Summary of Picks Loading

It is unimportant that every pick was assigned to Joe. This was for convenience. If someone else made the picks, the activity could be assigned to that person. Alternatively, the activity could be assigned to the Anumu Team, which is a business_associate.

The picks were never related directly to a geologic_feature. That is, the picks themselves are a Seismic_feature. The relationship to a geologic_feature (lithostratigraphic_marker) is done through the use of the interpreted_feature_association. This was done deliberately. It is an attempt to separate the operation of making the picks from the activity of interpreting them. In the next section, we will see how this allows us to change the interpretation.

Note that the geometry of the edge was always given in bin point index vs time coordinates. It is also possible to give the geometry of the edges in other coordinate systems (for example, (x, y, z); or (lat, long, depth), or (bin point index, depth)). Some of these may require an operation to convert the data. The details of the operation can be recorded with the process model.

2.6 Add Picks and Change Interpretation

The breakpoint at the last chapter was the instantiation of the "group of picks" into a single instance. This is the recognition that we are putting together information from several lines to create a single object (The Top of Strawn). This chapter will build on that. We expect the set of lines to grow. That is, as more lines are available and picked, the information will be added to the composite to give a more complete picture of the surface.

The additional edges are added to the already created composite. This loses some information. For example, the instance, @Strawn_pick_group1, was created in the last section as a group of 3 edges. The date and interpreter were recorded as part of the interpretation activity. When a fourth edge is added to the set, there is no easy way to determine that it is an additional edge that was added later.

Will there ever be a second composite of edges? There may be. The semantics of the choice is as follows: As long as the original interpretation holds true, there will be only one composite. It may grow with time as additional edges are added to it. It is only when the interpretation changes, or a second interpretation needs to be considered alongside it. A second instance of the composite (which may also be interpreted as the Top of Strawn) will spawn a new composite.

For example, consider if it is found later that the edge picked from line AN-2 is not correct. Later evaluation shows that the line was processed poorly (the data was phase shifted about 100 degrees). The doublet pick remains a valid seismic_feature, but it can no longer be considered the Top of Strawn. Instead, assume that another pick was made and there are another set of pick values for AN-2 (that are interpreted as Top of Strawn). Then a new instance of earth_position_composite will be instantiated (with its activity and interpreter recorded) that represents this new interpretation.

An example of such a case is considered later in this chapter.

2.6.1 Add a pick to the Composite

Line AN-5 is picked. The pick is to be added to be recorded and added to the composite.

----> Begin Example: Add to composite

(* Add a fourth pick from line AN-5 *)
 
pickAN-5 = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-May-03: 9:18 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 3; };
      time1 = TIME {
        hour --> 9;
        minute --> 18;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time EDT
        days --> 0;
        hours --> -5; -- Houston is 6 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
billDidIt5 = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Bill;
   activity --> @pickAN-5; };
 
 
AN-5pick1 = SEISMIC_FEATURE {
   identifier --> 'AN-5 doublet horizon (Strawn)';
   seismic_geometry_set --> @2dline5; };
 
AN-5edge1 = EARTH_POSITION_EDGE {
   identifier --> 'AN-5 doublet picks (Strawn)';
   geoscience_interpretation --> @pickAN-5;
   geologic_feature --> @AN-5pick1;
   binset --> @binset5; };
 
geometry31 = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-5edge1;
   activity --> @pickAN-5;
   data_value --> LINE_GRID {
      gframe5 = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @binpointgrid; -- from the binset
        coordinate_system --> @section_cs_5;
        descriptor --> LIST( @descr_51 );
        leaf_frame --> SET(@leaf_51, @LEAF_52 ); };
      descr_51 = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 7;
        count --> 718; };
      leaf_51 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> (use the grid_1d_equal values); };
      leaf_52 = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 718 time picks ); }; };
 
interpTieAN-51 = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-May-03: 9:18 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 3; };
      time1 = TIME {
        hour --> 9;
        minute --> 18;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time EDT
        days --> 0;
        hours --> -5; -- Houston is 6 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @AN-3pick1;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-3; };
 
(* Now add the edge to the existing composite. *)
 
update @Strawn_epc1 
set part = part + ( @AN-5edge1 );

----> End Example: Add to composite

Continue this update process as long as new picked lines are to be added to the existing set of picks.

2.6.2 Change the interpretation

Assume all lines have been processed, picked, and the results stored in Epicentre. Furthermore, the six edges for the Top of Strawn have been collected in @Strawn_epc1 as instantiated and updated in these examples.

When the data is compared to well logs, it becomes clear that the pick for AN-2 is wrong. The data is reprocessed to shift it 100 degrees, and a new pick is made.

The following example will store the new pick. It will then create a new composite with the correct set of picks, and will indicate that the previous composite is no longer active.

----> Begin Example: Change Interpretation

pickAN-2b = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   name --> 'Strawn AN-2 repick';
   description --> 'Repick of the Strawn on AN-2';
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-May 21: 11:01 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 21; };
      time1 = TIME {
        hour --> 11;
        minute --> 1;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
billDidIt2b = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Bill;
   activity --> @pickAN-2b; };
 
AN-2pick2b = SEISMIC_FEATURE {
   identifier --> 'AN-2 doublet horizon repick (Strawn)';
   seismic_geometry_set --> @2dline2; };
 
(* Note: line AN-2 was reprocessed. The seismic_geometry_set was
   the same, as was the binset. But the seismic_data_set was different *)
 
AN-2edge2b = EARTH_POSITION_EDGE {
   identifier --> 'AN-2 repick (Strawn)';
   geoscience_interpretation --> @pickAN-2b;
   geologic_feature --> @AN-2pick2b;
   binset --> @binset2; }; -- the same binset
 
geometry2b = PTY_GEOMETRY_2D_EDGE{
   edge --> @AN-2edge2b;
   activity --> @pickAN-2b;
   data_value --> LINE_GRID {
      gframe2b = GEOMETRY_FRAME {
        detailed_type --> 'FT_LINE';
        grid_or_mesh --> @binpointgrid; -- from the binset
        coordinate_system --> @section_cs_2;
(* This is a coordinate system particular to this seismic data set *)
        descriptor --> LIST( @descr_21b );
        leaf_frame --> SET(@leaf_21b, @LEAF_22b ); };
      descr_21b = DESCRIPTOR {
        dimension --> 'INDEX_I';
        lower_bound --> 7;
        count --> 671; };
      leaf_21b = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_bin_point_axis;
        coordinate_system_axis --> 1;
        data_values --> (use the grid_1d_equal values); };
      leaf_22b = LEAF_FRAME {
        data_type --> 'DAE_C_FLOAT';
        ref_unit_of_measure --> @PRV_ms;
        coordinate_system_axis --> 2;
        data_values --> LIST( here are the 671 time picks ); }; };
 
interpTieAN-2b = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-May 21: 11:01 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 21; };
      time1 = TIME {
        hour --> 11;
        minute --> 1;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @AN-2pick2b;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-2b; };
 
(* Now the reinterpretation starts. Begin by instantiating a new
   activity - the reinterpretation activity *)
 
redo_Strawn = GEOSCIENCE_INTERPRETATION {
   ref_existence_kind --> @PRV_actual;
   name --> 'reinterpretation of AN-2 Strawn';
   description --> 'Reinterpret the Strawn picks on AN-2. Remove
                          original picks, and use this one.';
   containing_activity --> @parentactivity; -- instantiated earlier
   start_time --> TIMESTAMP { -- 1999-May 21: 11:01 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 21; };
      time1 = TIME {
        hour --> 11;
        minute --> 1;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; };
 
(* And say that Bill did it *)
 
billDidIt2c = BUSINESS_ASSOCIATE_ACTIVITY_ROLE {
   ref_business_associate_activity_role --> @PRV_interpreter;
   business_associate --> @Bill;
   activity --> @redo_Strawn; };
 
(* create the new composite *)
 
Strawn_epc2 = EARTH_POSITION_COMPOSITE {
   identifier --> 'Anumu Strawn Picks b';
   geoscience_interpretation --> @redo_Strawn;
   part --> SET( @AN-7edge1, @AN-3edge1, @AN-2edge2b, @AN-4edge1,
                 @AN-5edge1, @AN-1edge1 );
   geologic_feature --> @Strawn_pick_group;
   binset --> @binset2; }; };
 
(* This is tied to the seismic_feature that was used earlier.
   This is another interpretation (representation) of it *)
 
(* Tie this to the Strawn *)
 
interpTieStrawnb = INTERPRETED_FEATURE_ASSOCIATION {
   start_time --> TIMESTAMP { -- 1999-May-21: 11:01 am
      date1 = DATE {
        year --> 1999;
        month --> 5;
        day --> 21; };
      time1 = TIME {
        hour --> 11;
        minute --> 1;
        second --> 0.0;
      uct_offset --> DAYTIMEINTERVAL { -- local time (EDT)
        days --> 0;
        hours --> -5; -- Houston is 5 hours behind UCT
        mintues --> 0;
        seconds --> 0.0; }; }; 
   seismic_feature --> @Strawn_pick_group;
   geologic_feature --> @Top_Strawn;
   caused_by --> @pickAN-2b; };
 
(* This represents a second interpretation of the Strawn. If the
   first is still valid (an alternate interpretation), the work
   would stop here. But in this case, we want to invalidate the
   first interpretation. This is done by updating the earlier
   interpreted_feature_ association with an end_time and a
   terminated_by, which is the activity which terminated the association. *)
 
update @interpTieAN-21
set end_time --> 1999-May-21 11:01 am
AND set terminate_by --> @redo_Strawn;

----> End Example: Change Interpretation

2.7 Adding More Horizons

The addition of new horizons to the database is straightforward. There is no difference between these new horizons and the Top of Strawn as produced in the above. Also note that there is no implication of time ordering. These additional horizons may be picked and added to the database before, simultaneous with, or after the Top of Strawn picks.

The parent activity will be the same as the one already used. That is because we defined the parent activity to be the seismic interpretation, to include all lines and all horizons. The lithostratigraphic_marker, of course, will be different.

The next section is the part that ties these horizons together. This will be done using by developing an earth model.


[Seismic Table of Contents] [Usage Document Table of Contents]


Last modified: 02 January 1998
© Copyright 1998 POSC. All rights reserved.