It's more about the general data structure and not just the objectives.
So my idea was that we in the end just have a table with some columns and every possible mining area as a row / individual. The columns could be the following:
- patch / mining area number: id; do we need one or is the row number enough?
- mining (true / false): indicating if an individual should be mining area or not in this generation
- yield (in $ ?): yield value of a given resource (to be researched) * area of the mining cell (can also be preprocessed in GIS or other if we dont manage to do it in Python easily)
- biomass (in tonnes): preprocess by summing up the biomass within a mining area, by assigning biomass to landuse like in tutorial and then just sum the raster cell values / pixel
Then the table would look like this:
id | mining | yield | biomass |
---|---|---|---|
1 | true | 20000 | 500 |
2 | true | 550000 | 1200 |
- id from shapefile
- contains all mining (true/false)
- contains geometry
Taking into account that our calculation of mining yield needs some flexibility to change it later on, an approach could also look like this:
id | mining | resource | biomass | area | distance | geometry |
---|---|---|---|---|---|---|
{7E38CB67-E30C-40FE-8D59-8D6F79E0B07B} | true | gold | 500 | 1000 | 10 | geometry... |
{4F3976CD-F3E6-42E5-826D-298719D02C0F} | false | diamonds | 1200 | 2000 | 35 | geometry... |
- only FALSE
- no geometry
id | mining | resource | biomass | area | distance |
---|---|---|---|---|---|
{7E38CB67-E30C-40FE-8D59-8D6F79E0B07B} | false | gold | 500 | 1000 | distance |
{4F3976CD-F3E6-42E5-826D-298719D02C0F} | false | diamonds | 1200 | 2000 | distance |
An idea to include the ecological impact (i.e. distance to water / protected area) could be to weight the yield and / or biomass values with the distances, e.g.:
- yield = yield * (distance to nearest protected area / maximum distance of all mining areas in Mato Grosso)
The objective implementation would just be something like:
all_yields = []
for mine in mine_list:
yield = np.where(mining == true, yield, 0)
tot_yield = np.sum(yield)
all_yields.append(tot_yield)
biomass = np.where(mining == false, biomass, 0)
A table-like approach seems feasible, as discussed. We would then need a shapefile as input that fulfills the follfowing cirteria and contains the following information:
id
mining_status
for starters, our intput data should only contain mining blocks that are "possible" mining blocks. Blocks that are already established are not considered in our first analysis. Themining_status
of all of these should beFALSE
. This is basically our control variable.resource
Type of mined resource, translated if possiblearea
already in the dataset, unit is important herebiomass
The amount of biomass contained in the mining block, in tonnes/ha. A proposed workflow is given below.
In the end we want to have a summed biomass for each mining block, no matter which land use types with which corresposing biomass amount were present in the input.
The landuse raster
1 | 1 | 2 |
---|---|---|
1 | 2 | 2 |
4 | 3 | 2 |
with (1 = water, 2 = forest, etc. see tutorial) contains numbers which stand for classes. These numbers could be replaced with the biomass amounts, also given in the tutorial. They are there given in tonnes/ha, but the cell size is actually 6.25 ha. For example water = 0 (obviously), forrest = 300 * 6.25 = 1875. The raster would then be
0 | 0 | 1875 |
---|---|---|
0 | 1875 | 1875 |
? | ? | 1875 |
If then for each mining polygon the area sum of all pixel values in that polygon would be calculated (not the area mean), that would be the value of biomass a mining block contains.