graph filtered by lithology

hi there, 

I am trying to produce a graph, say a SPT vs depth plot showing only data from a given geology unit as defined in Geology Section. i.e would like to retrieve a plot showing all the available data belonging to a particular layer. 

trying to use filters in output section but unable to get it right. 

thanks 

Parents
  • You did not provide a specific example so I am making the following assumptions. If these assumptions are not correct please provide a specific example.

    1. You have a graph report that plots SPT vs depth for multiple boreholes.  It has a keyset of PointID, depth.

    2. Your SPT data is in a table called SAMPLE. It has fields for Depth, Bottom, Blows1, Blows2, Blows3.

    3. In your graph report, your independent variable expression is something like <<SAMPLE.Depth>> and your dependent variable data expression is something like <<SAMPLE.Blows2>>+<<SAMPLE.Blows3>>

    4. You only want to print SPT data that falls in a layer as defined in a Table called LITHOLOGY by a field called Strata_ID

    It is important to understand that the normal gINT filter will only allow you to filter based on data that is in the same table as the graphed variables (or in the Point table).  In this case the independent variable and dependent variable is in the SAMPLE table.  Thus you could set a filter for the field [SAMPLE].[Depth] with a criteria of > 10 which would only plot SPT values for depths greater than 10. If you had a field in your SAMPLE table that identified the layer associated with each sample you could use this to filter (making sure to enclose text values in quotes). However, you want to filter based on the depth falling within a range in another table.  As Phil Wade stated, gINT provides a range filter to the right of the standard filters to allow you to do this (note that the range filter is not provided for all reports and keysets).  An example of this is shown in the picture below.

    In this case I have set the range filter to look at the LITHOLOGY.Strata_ID field and see if the depth falls in a range that is Identified as COE-CL.

    This range filter assumes that the Depth field of the SAMPLE table is used to determine if the sample falls within the desired range. If you want to use some other depth you will have to do some additional programing.  For example, I plot my SPT N values at the bottom of the sample rather than the top (others plot it at the midpoint of the sample or at the midpoint of the 2nd and 3rd 6" of drive).  Thus I want to only plot those results where the bottom of the sample falls within the target lithology range, not the top of the sample. To accomplish this, I have setup a report Variable called Strata_ID_Filter.  I then set the independent variable data expression to:

    <<Switch(_
      <<HasData(<<Report Var.Strata_ID_Filter>>,False,True)>>,<<SAMPLE.Bottom>>,_
      <<SqlRange(<<SAMPLE.Bottom>>,[LITHOLOGY].[Strata_ID])>>=<<Report Var.Strata_ID_Filter>>,<<SAMPLE.Bottom>>,_
      True,""_
    )>>

    This says that if the report variable Strata_ID_Filter is left empty, always plot all of the data at the sample bottom depth (unfiltered). If the Strata_ID_Filter variable has data (ie something like "COE-CL"), only plot the SPT data if the bottom of the sample falls within a range that is defined in the LITHOLOGY table as having the desired value. Otherwise, don't plot the SPT data. You could make this more complex to accommodate multiple criteria with an OR condition etc.

    Hope this helps.

Reply
  • You did not provide a specific example so I am making the following assumptions. If these assumptions are not correct please provide a specific example.

    1. You have a graph report that plots SPT vs depth for multiple boreholes.  It has a keyset of PointID, depth.

    2. Your SPT data is in a table called SAMPLE. It has fields for Depth, Bottom, Blows1, Blows2, Blows3.

    3. In your graph report, your independent variable expression is something like <<SAMPLE.Depth>> and your dependent variable data expression is something like <<SAMPLE.Blows2>>+<<SAMPLE.Blows3>>

    4. You only want to print SPT data that falls in a layer as defined in a Table called LITHOLOGY by a field called Strata_ID

    It is important to understand that the normal gINT filter will only allow you to filter based on data that is in the same table as the graphed variables (or in the Point table).  In this case the independent variable and dependent variable is in the SAMPLE table.  Thus you could set a filter for the field [SAMPLE].[Depth] with a criteria of > 10 which would only plot SPT values for depths greater than 10. If you had a field in your SAMPLE table that identified the layer associated with each sample you could use this to filter (making sure to enclose text values in quotes). However, you want to filter based on the depth falling within a range in another table.  As Phil Wade stated, gINT provides a range filter to the right of the standard filters to allow you to do this (note that the range filter is not provided for all reports and keysets).  An example of this is shown in the picture below.

    In this case I have set the range filter to look at the LITHOLOGY.Strata_ID field and see if the depth falls in a range that is Identified as COE-CL.

    This range filter assumes that the Depth field of the SAMPLE table is used to determine if the sample falls within the desired range. If you want to use some other depth you will have to do some additional programing.  For example, I plot my SPT N values at the bottom of the sample rather than the top (others plot it at the midpoint of the sample or at the midpoint of the 2nd and 3rd 6" of drive).  Thus I want to only plot those results where the bottom of the sample falls within the target lithology range, not the top of the sample. To accomplish this, I have setup a report Variable called Strata_ID_Filter.  I then set the independent variable data expression to:

    <<Switch(_
      <<HasData(<<Report Var.Strata_ID_Filter>>,False,True)>>,<<SAMPLE.Bottom>>,_
      <<SqlRange(<<SAMPLE.Bottom>>,[LITHOLOGY].[Strata_ID])>>=<<Report Var.Strata_ID_Filter>>,<<SAMPLE.Bottom>>,_
      True,""_
    )>>

    This says that if the report variable Strata_ID_Filter is left empty, always plot all of the data at the sample bottom depth (unfiltered). If the Strata_ID_Filter variable has data (ie something like "COE-CL"), only plot the SPT data if the bottom of the sample falls within a range that is defined in the LITHOLOGY table as having the desired value. Otherwise, don't plot the SPT data. You could make this more complex to accommodate multiple criteria with an OR condition etc.

    Hope this helps.

Children
No Data