Overview

The Fixmap option is found in Grid Calc under the Set Up or Model (in the Splits Definition option) submenus. A set of mapfiles for each seam in the horizon table must exist before Fixmap can be run.

Fixmap creates a new set of mapfiles with a 'z' appended to each horizon name. The new mapfiles can be used for modelling structure roofs, floors and thicknesses. Wherever a drillhole does not penetrate a seam, whether the seam exists at the location or not, the Fixmap process will create values for the structure roofs and floors by analysing the surrounding strata.

In areas where the geologist knows that coal was never deposited, such as the edge of a sedimentary basin, previously created limit polygons can be used to set estimated coal horizon thickness values to zero. Otherwise thicknesses are calculated by using the inverse distance modelling method. It is important to understand that those portions of horizons missing because of the washouts, burning, oxidation, mining, etc. should not be excluded from the interpolation .

All drillholes located outside the limiting polygon, where thickness has been set to zero, will have identical structure roof and floor values estimated by evaluating the interburden thicknesses of the surrounding drillholes.

Fixmap determines the thickness of the missing intervals - both coal and burden - by inspecting the nearest holes containing the missing information - and applying the inverse distance weighting technique. Having arrived at estimates for the strata thicknesses, Fixmap adjusts the thicknesses to make them fit in the known stratigraphic information.

Diagram 1 - Original Interpretation

Diagram 2 - Fixmap Interpolated Interpretation

Pinchouts forced with Seam Extent Polygons

Diagram 3 - Original Interpretation

Diagram 4 - Limit Polygons (for B Seam)

Stratigraphic thicknesses may be set to zero by using pre-created limit lines. Limit lines are specified on the Define Splits panel as a name template. For each seam you can create a limit line layer in a design database. The layer name must contain the strata and a common prefix or suffix (for example, LIMIT.A, LIMIT.A1) - the name template would be LIMIT.%S . The thickness of a missing interval that falls outside of its limit line is forced to zero.

Diagram 5 - Pinchouts

Diagram 6 - Example

Fixmap is used to create proper structure grids. When a limit is specified in the Define Splits panel, the drillhole thickness values are set to zero anywhere they appear outside of the limiting polygon.

The example below is typical of most drilling programs. The drillhole in the middle does not penetrate the floor of the seam. Fixmap cannot calculate a seam floor value for this hole unless some additional database manipulation occurs. A flag field must exist in the record that contains the lithological information. Flag values must denote one of three situations for each seam:

  1. All Seam values are reliable
  2. Seam value for 'TO' is reliable
  3. Seam value for 'FROM' is reliable

Diagram 7 - Fixmap/Drillhole

A script similar to the example below must be run on the drillhole database containing the flagged values. The script will automatically create mapfiles with the appropriate seam intercept values. Values for intercepts flagged as missing or inaccurate will be created by Fixmap.

environment coal
! Filename=flagmap.dbg
! Create a map file using a drillhole database with a lithology record "lith"
! and a flag in that record called "flag" containing...
!
!  R - roof is good
!  F - floor is good
!  blank - both roof and floor are good
using database ?'Database: '/?'Datasheet: ' alias db
assign output ! to ?'Map file name: '
define initialize
  always
    mapseam = upcase(?'Seam code: ');
        prompt! = " Mapping seam " & mapseam;
        pad = " -99.000";
        stop "End of initialization".
end of initialize definition
define map
  if no_more_data(dB) then
    stop 'Map file generation complete'.
  if current_record(dB:header) then
    map_hole = substr(dB:header:holeid,1,8);
        map_east = format(dB:header:east,'F12.3');
        map_north = format(dB:header:north,'F12.3');
        map_elev = format(dB:header:collar,'F8.3');
        new_hole = true.
  if current_record(dB:lith) and dB:lith:seam eq mapseam and new_hole then
    map_seam = substr(dB:lith:seam,1,5);
        first_sr = dB:header:collar-dB:lith:from;
        good_roof = dB:lith:flag eq ' ' or dB:lith:flag eq 'R' or dB:lith:flag eq 'r';
        sum_tk = 0
        good_thick - good_roof;
        new_hole = false.
  if current_record(dB:lith) and dB:lith:seam eq mapseam then
    last sf = dB:header:collar-dB:lith:to;
        good_floor - dB:lith:flag eq ' ' or dB:lith:flag eq 'F' or dB:lith:flag eq 'f';
        good_thick = good_thick and good_floor.
  always
    read dB.
  if ( no_more_data(dB) or current_record(dB:header) ) and not new_hole then
    first_SR = good_roof*first_SR+(not good_roof)*(-99);
        last_SF = good_floor*last_SF+(not good_floor)*(-99);
        sum_tk = good_thick*sum_tk+(not good_thick)*(-99);
        map_SR = format(first_SR,'F8.3');
        map_SF = format(last_st,'F8.3');
        map_tk = format(sum_tk,'F8.3');
        map_St = format(sum_St,'F8.3');
        output! = map_hole &
                  map_east &
                          map_north &
                          "   " &
                          map_seam &
                          map_elev &
                          pad &
                          pad &
                          map_SR &
                          map_SF &
                          map_tk &
                          pad &
                          pad &
                          pad &
                          map_St.
end of map definition

Associated documentation:

  • Hand Editing Mapfiles
  • Creating a Fixmap Database
  • Common Fixmap Problems