Proximity

  • distance to 2d area

    distance to 2d area distance to 2d area receives any 3D field into its left input port and it receives triangulated polygons (from triangulate_polygon, or other sources) into its right input port. Its function is similar to buffer distance or distance to shape. It adds a data component to the input 3D field and using plume_shell, you can cut structures inside or outside of the input polygons. Only the x and y coordinates of the polygons are used because distance to 2d area cuts a projected slice that is z invariant. distance to 2d area recalculates when either input field is changed or the “Accept” button is pressed.

  • distance to surface

    distance to surface distance to surface receives any 3D field into its left input port and it receives a surface (from create_tin, surface from horizons, slice, etc.) into its right input port. Its function is similar to distance to shape. It adds a data component to the input 3D field referencing the cutting surface. With this new data component you can use a subsettting module like plume to pass either side of the 3D field as defined by the cutting surface, thereby allowing cutting of structures along any surface. The surface can originate from a TIN surface, a slice plane or a geologic surface. The cutting surface can be multi-valued in Z, which means the surface can have instances where there are more one z value for a single x, y coordinate. This might occur with a wavy fault surface that is nearly vertical, or a fault surface with recumbent folds.

  • distance to shape

    distance to shape distance to shape receives any 3D field into its input port and outputs the same field with an additional data component. Using plume_shell, you can cut structures with either a cylinder or rotated rectangle. The cutting action is z invariant (like a cookie cutter). Depending on the resolution of the input field, rectangles may not have sharp corners. With rectilinear fields (and non-rotated rectangles), the threshold module can replace plume_shell to produce sharp corners (by removing whole cells). plume can be used to output 3D fields for additional filtering or mapping.

  • buffer distance

    buffer distance buffer distance receives any 3D field into its left input port and it receives polylines (from read_lines, import vector gis, import_cad, isolines, or other sources) into its right input port. Its function is similar to distance to shape. It adds a data component to the input 3D field and using plume_shell, you can cut structures along the path of the input polylines. Only the x and y coordinates of the polylines are used because buffer distance creates data to cut a projected region that is z invariant. buffer distance recalculates when either input field is changed or the “Execute” button is pressed. “Thick Fences” can be produced with the output of this module.

  • distance to tunnel center

    distance to tunnel center The distance to tunnel center module is similar to the distance to surface module in that it receives any 3D field into its left input port, BUT instead of a surface, it receives a line (along the trajectory of a tunnel, boring or mineshaft) into its right input port. The distance to tunnel center module then cuts a cylinder, of user defined radius, along the line trajectory. The algorithm is identical in concept to distance to surface in that it adds a data component to the input 3D field referencing the distance from the line (trajectory). With this new data component you can use a subsetting module like plume_volume to pass either portion of the 3D field (inside the cylinder or outside the cylinder), thereby allowing cutting tunnels along any trajectory. The trajectory line can originate from any one of a number of sources such read_lines, import cad or import vector gis.

  • overburden

    overburden The overburden module computes the complete volume required to excavate a plume or ore body given the pit wall slope (measured from vertical) and the excavation digging accuracy (we refer to as buffer size). overburden receives any 3D field into its input port and outputs the same field with an additional data component. Its function is similar to distance to shape, but instead involves computing a new data component based on the nodal values in the 3D field and two user defined parameter values called Wall Slope and buffer size (addressing excavation accuracy). The data component is subset according to a concentration input (based on the subsetting level you want excavated). For example, once overburden has been run for GOLD at a 45 degree pit wall slope, the user would select 45-deg:overburden_GOLD and subset all data below 1 ppm to render a 45 degree slope pit which would excavate everything higher than 1 ppm concentration. A volumetrics calculation could be made on these criteria which would encompass the excavation and the ore body above 1 ppm.

Subsections of Proximity

distance to 2d area

distance to 2d area receives any 3D field into its left input port and it receives triangulated polygons (from triangulate_polygon, or other sources) into its right input port. Its function is similar to buffer distance or distance to shape. It adds a data component to the input 3D field and using plume_shell, you can cut structures inside or outside of the input polygons. Only the x and y coordinates of the polygons are used because distance to 2d area cuts a projected slice that is z invariant. distance to 2d area recalculates when either input field is changed or the “Accept” button is pressed.

Module Input Ports

  • Input Field [Field] Accepts a data field.
  • Input Area [Field] Accepts a field with the area to include/exclude

Module Output Ports

  • Output Field [Field] Outputs the field with area data to allow subsetting

The first thing to know, is that distance to 2d area does not cut.

It provides data with which you can then subset using other modules like plume or intersection.

Without the subsetting modules AFTER distance to 2d area, you would see no affect of having distance to 2d area in your application other than it adds a new nodal data component called distance to 2d area (or whatever you’ve renamed your module to be).

distance to 2d area needs a SURFACE as its input. It does not care where that surface comes from and it certainly does not need to be from a DWG file. The surface can be complex, meaning that it can have holes in it, or it can be separate disjoint pieces of surface(s).

If you’re starting with lines, it is required that the lines form a closed polyline. It is not enough that the lines appear to be a closed path, they must be truly closed, with each successive segment precisely connected to the last and next. CAD files are often poorly drawn and are not closed (though they can be well drawn and properly closed also).

Our draw_lines module can certainly be used to create a Closed polyline, but you must make sure to turn on the “Closed” toggle for each line segment to ensure it is closed.

Once you have one or more closed polylines, you will need to pass those through triangulate_polylines modules to create a TIN surface from the closed polylines. You should confirm (by connecting it to the viewer) that you are getting the correct surface before proceeding to distance to 2d area. If triangulate_polylines will not run, your lines are not closed.

Once you have your surface(s) and you pass that to the right input port of distance to 2d area, the output of distance to 2d area is data with which you can subset your original model. The data is zero (0.0) at the boundaries of your surface: is less than zero (negative) inside the surface; and is greater than zero (positive) outside of the surface. To get everything inside, you need to choose “Below Level” in the subsetting modules rather than the Default “Above Level”.

distance to surface

distance to surface receives any 3D field into its left input port and it receives a surface (from create_tin, surface from horizons, slice, etc.) into its right input port. Its function is similar to distance to shape. It adds a data component to the input 3D field referencing the cutting surface. With this new data component you can use a subsettting module like plume to pass either side of the 3D field as defined by the cutting surface, thereby allowing cutting of structures along any surface. The surface can originate from a TIN surface, a slice plane or a geologic surface. The cutting surface can be multi-valued in Z, which means the surface can have instances where there are more one z value for a single x, y coordinate. This might occur with a wavy fault surface that is nearly vertical, or a fault surface with recumbent folds.

distance to surface recalculates when either input field is changed or the “Accept” button is pressed.

The general approach with distance to surface is:

  • Create a cutting surface representing either a fault plane, a scouring surface (unconformity), or an excavation.
  • Create a 3D model of the object you wish to cut.
  • Pass the 3D model into the left port of distance to surface, and the cutting surface to the right port of distance to surface and hit accept.

Module Input Ports

  • Input 3D Field [Field] Accepts a data field.
  • Input Surface [Field] Accepts a field with the surface to cut the input volume/surface

Module Output Ports

  • Output Field [Field] Outputs the field with distance to surface data to allow subsetting

distance to shape

distance to shape receives any 3D field into its input port and outputs the same field with an additional data component. Using plume_shell, you can cut structures with either a cylinder or rotated rectangle. The cutting action is z invariant (like a cookie cutter). Depending on the resolution of the input field, rectangles may not have sharp corners. With rectilinear fields (and non-rotated rectangles), the threshold module can replace plume_shell to produce sharp corners (by removing whole cells). plume can be used to output 3D fields for additional filtering or mapping.

Module Input Ports

  • Input Field [Field] Accepts a data field.

Module Output Ports

  • Output Field [Field] Outputs the field with data to allow subsetting.

buffer distance

buffer distance receives any 3D field into its left input port and it receives polylines (from read_lines, import vector gis, import_cad, isolines, or other sources) into its right input port. Its function is similar to distance to shape. It adds a data component to the input 3D field and using plume_shell, you can cut structures along the path of the input polylines. Only the x and y coordinates of the polylines are used because buffer distance creates data to cut a projected region that is z invariant. buffer distance recalculates when either input field is changed or the “Execute” button is pressed. “Thick Fences” can be produced with the output of this module.

Module Input Ports

  • Input Field [Field] Accepts a data field.
  • Input Fence LIne [Field] Accepts a field with the line(s) to cut the input volume/surface

Module Output Ports

  • Output Field [Field] Outputs the field with distance to path(s) data to allow subsetting

distance to tunnel center

The distance to tunnel center module is similar to the distance to surface module in that it receives any 3D field into its left input port, BUT instead of a surface, it receives a line (along the trajectory of a tunnel, boring or mineshaft) into its right input port. The distance to tunnel center module then cuts a cylinder, of user defined radius, along the line trajectory. The algorithm is identical in concept to distance to surface in that it adds a data component to the input 3D field referencing the distance from the line (trajectory). With this new data component you can use a subsetting module like plume_volume to pass either portion of the 3D field (inside the cylinder or outside the cylinder), thereby allowing cutting tunnels along any trajectory. The trajectory line can originate from any one of a number of sources such read_lines, import cad or import vector gis.

The general approach is to subset the distance to tunnel center data component with either constant_shellor plume_volume. The choice of 1.0 for the subsetting level will result in cutting AT the user radius, while less than 1.0 is inside the cylinder wall and greater than 1.0 is outside the cylinder wall.

Module Input Ports

  • Input Field [Field] Accepts a data field.
  • Input Tunnel Line [Field] Accepts a field with the surface to cut the input volume/surface

Module Output Ports

  • Output Field [Field] Outputs the field with distance to tunnel line data to allow subsetting

overburden

The overburden module computes the complete volume required to excavate a plume or ore body given the pit wall slope (measured from vertical) and the excavation digging accuracy (we refer to as buffer size).

overburden receives any 3D field into its input port and outputs the same field with an additional data component. Its function is similar to distance to shape, but instead involves computing a new data component based on the nodal values in the 3D field and two user defined parameter values called Wall Slope and buffer size (addressing excavation accuracy). The data component is subset according to a concentration input (based on the subsetting level you want excavated). For example, once overburden has been run for GOLD at a 45 degree pit wall slope, the user would select 45-deg:overburden_GOLD and subset all data below 1 ppm to render a 45 degree slope pit which would excavate everything higher than 1 ppm concentration. A volumetrics calculation could be made on these criteria which would encompass the excavation and the ore body above 1 ppm.

NOTES:

  • It is much safer and more understandable to work at Z Scale = 1. Otherwise, the apparent angle of your pit will be very different than the input angle

    • As the Z Scale increases, the angle of pit sidewalls looks more vertical, since the tangent of the apparent angle is the tangent of the actual angle multiplied times the Z Scale.
  • The overburden module must be placed before any scaling modules (such as explode_and_scale) to ensure an accurate slope angle during computations and subsequent visualizations.

  • The grid resolution and resulting cell aspect ratios are very important.

    • You cannot see any pit wall slope differences if those differences create a slope which is less than one cell wide from the bottom of the pit to the top.
    • Therefore, very high resolutions in X-Y are needed for large sites with shallow pits. Expect long run times for overburden.

Note on angles: Angles are defined from the vertical and are specified in degrees.

  • A vertical wall pit is created with an angle of Zero (0.0) degrees
  • A 2:1 pitch slope from horizontal would be an angle whose arctangent = 2.0. This is 63.4 degree from horizontal and therefore you would enter 26.6 degrees (from vertical)

Module Input Ports

  • Input Field [Field] Accepts a data field.

Module Output Ports

  • Output Field [Field] Outputs the enhanced field with overburden data

Create Buffer Around Plume - This toggle determines if the overburden computations are rigorous and determine the buffer on all side of the plume (ore body). If this is off, the module runs much quicker.

Buffer Size - An accuracy level resulting in the amount of excavation outside the subsetting level of interest. For example, a type-in of 10.0 would result in 10 feet of over-excavation from the subsetting level of interest.

Overburden creates a data component name that includes the wall slope, module name (including #1 or #2 if there are more than one copy in your application), and original data component (analyte) name. (i.e. 30-deg:overburden#1 of Benzene)

The overburden data component may be subset by modules such as plume, isosurface, plume_shell, etc.