Git Product home page Git Product logo

mpm-wofe's Introduction

Mineral Potential Mapping - Weights of Evidence

Weights of evidence (WofE) is a data-driven method for mineral potential mapping that is based on Bayesian statistics. It evaluates the relationship between a set of known mineral deposits/occurrences and an individual map and compares the observed correlation to the expected correlation.

Three R scripts have been developed as part of Geoscience Australia's Exploring for the Future program. Geoscience Australia’s Exploring for the Future program provides precompetitive information to inform decision-making by government, community, and industry on the sustainable development of Australia's mineral, energy, and groundwater resources. By gathering, analysing, and interpreting new and existing precompetitive geoscience data and knowledge, we are building a national picture of Australia’s geology and resource potential. This leads to a strong economy, resilient society and sustainable environment for the benefit of all Australians. This includes supporting Australia’s transition to net zero emissions, strong, sustainable resources and agriculture sectors, and economic opportunities and social benefits for Australia’s regional and remote communities. The Exploring for the Future program, which commenced in 2016, is an eight year, $225m investment by the Australian Government.

Based on the ArcSDM toolbox for ArcGIS Pro (https://github.com/gtkfi/ArcSDM), three R scripts have been developed that replicate the Calculate Weights, Calculate Response, and Area-Frequency tools within the Weights of Evidence toolbox. The R scripts have been developed in order to remove the dependency on licenses for ArcGIS and the Spatial Analyst toolbox.

Calculate Weights evaluates the Contrast and Studentized contrast values for each map value and indicates where the optimal threshold occurs using the GEN_CLASS field. It is up to the user to determine if that threshold is geologically meaningful, and manually change it if required. Test data supplied has manually selected thresholds for the maps used in Calculate Response.

Calculate Response generates the mineral potential map for a user specified number of input maps and their corresponding weights tables from the Calculate Weights tool. The script also produces a corresponding standard deviation and confidence map.

Calculate AUC evaluates the area under the curve for an individual input map or output mineral potential map. It outputs an Receiver-Operating Characteristic curve and a table containing relevant statistics for additional analysis.

Dependencies

The scripts have been developed in R Studio 2022.02.2 (Build 485) using the following packages and versions:

  • tcltk (1.2-11)
  • rgdal (1.6-2)
  • terra (1.5-34)
  • vita (1.0.0)
  • caret (6.0-93)
  • sp (1.5-0)
  • dplyr (1.0.9)
  • modEvA (3.82)
  • pROC (1.18.0)

Running

If running scripts in R Studio, please check "Source on Save" button to ensure script reads in any user input correctly.

Please ensure that there are no spaces in either folder pathnames or file pathnames. Currently scripts throw an error if a space is encountered in pathnames.

Calculate Weights

  • Calculate Weights requires a Geotiff file (must be Integer type) that represents the map to be tested and a shapefile containing the known mineral deposits/occurrrences. Both the Geotiff and shapefile must be in the same coordinate system. The script assumes a projected coordinate system in meters.
  • The script requests information from the user including:
    • Calculation type - use ascending where low map values are favourable, use descending when high map values are favourable, use categorical for unordered map data such as lithology.
    • Confidence threshold for Studentized Contrast - minimum confidence required for results to be considered statistically valid (values between 0.5 and 2 are recommended).
    • Unit Area in km2 - what is the estimated footprint size of the deposits (1km2 is recommended for regional-scale analysis)?
    • Missing Data Value - what is the missing data value (to account for missing data in the map)? This is not the same as NULL or N/A values that fall outside the study area mask.
  • The Calculate Weights script outputs a weights table with the relevant statistics for user review.

Calculate Response

  • Requires a user specified number of Geotiff files (must be Integer type) that represent the maps to be integrated to produce the mineral potential map, along with each map's corresponding weights table from the Calculate Weights script, and a shapefile containing the known mineral deposits/occurrrences. Note that the Geotiff files and shapefile must be in the same coordinate system. The script assumes a projected coordinate system in meters.
  • It is strongly recommended that users convert each input map to binary prior to input to the Calculate Response tool in order to speed up processing. The binary map threshold should be determined using the GEN_CLASS field in the Calculate Weights output table (or modified accordingly if the statistical threshold determined by the script does not make geological sense). The Calculate Weights tool should be re-run on the binary map prior to running Calculate Response.
  • The script requests information from the user including:
    • Number of input maps - how many input maps are to be included in the mineral potential map?
    • Missing Data Value - what is the missing data value (to account for missing data in the map). This is not the same as NULL or N/A values that fall outside the study area mask.
  • Calculate Response outputs 3 maps:
    • Posterior probability - the mineral potential map
    • Standard deviation of posterior probability - standard deviation of the mineral potential map
    • Confidence in posterior probability - posterior probability/standard deviation of posterior probability

Calculate AUC

  • Calculate AUC requires an input Geotiff file (on a 0-1 probability scale) that represents the map to be tested and a shapefile containing the known mineral deposits/occurrences. If the map to be tested contains values outside the 0-1 range, please transform the values and save to new Geotiff file prior to using as input for this script. Both the Geotiff and shapefile must be in the same coordinate system.
  • The script outputs the Receiver-Operating Characteristic curve with the corresponding Area Under the Curve value. A csv file is also produced that contains statistics relevant to the AUC calculations.

mpm-wofe's People

Contributors

arianne-ga avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

richardscottoz

mpm-wofe's Issues

README suggestions

Some thoughts:

Related to the nice provided example:

Perhaps include what you used here for people running the script to reproduce

Confidence:
Missing Values:

CalculateWeights:

Running this on the numeric examples should be straightforward for people to make themselves the binary rasters for later.

For the categorical, perhaps not:

E.g. for people that don't look at this example and go 'oh, hey, IOCGs, hence Mt Isa - Corella formation and associated proterozoic-y friends'.

So how you went from the first pass run on the data to the 1-2 split, even if 'AF expert knowledge applied here'.

However, considering computationally for people that don't know anything re: Mt Isa geology, what could be a good data driven first pass selection [even if very rough]. e.g. so you could just run the whole thing, even a range of, whether this quantile of top weights or whatever. Then adjust later.

terra version?

> packageVersion('terra')
[1] ‘1.7.55

script has

class_km2 = (unclassRast@ptr[["res"]])/(1000)

in version I have installed recently, to work

class_km2 = (unclassRast@cpp[["res"]])/(1000)

so presumably something changed recently?

confCont not found

> calcType <- askforInput("calcType")
Enter calculation type ((a)scending, (d)escending, (c)categorical: confCont <- askforInput("confCont")
> unitArea <- askforInput("unitArea")
Enter unit area (km2): missData <- askforInput("missData")
> 
> calcType <- as.character(calcType)
> confCont <- as.numeric(confCont)
Error: object 'confCont' not found

rgdal

This is deprecated - e.g. won't install now as of a couple of months ago I think.

Maybe there's a quick mod or different version of your AUC script which perhaps uses terra?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.