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:
- All Seam values are reliable
- Seam value for 'TO' is reliable
- 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