Visualizing veg. formation and class data¶
The 17 vegetation formations are determined in large part by bioclimatic conditions. This notebook uses a series of climate/vegetation metrics from global datasets (annotated outside of this notebook) to visualize how these patterns vary by formation.
Reading these files directly from GCS requires installing a couple of packages:
mamba install fsspec gcsfs
In [1]:
Copied!
import os
import artlo
from artlo import plt
import numpy as np
import pandas as pd
import geopandas as gpd
import os
import artlo
from artlo import plt
import numpy as np
import pandas as pd
import geopandas as gpd
In [2]:
Copied!
# paths
base = '/home/cba/src/forestobs-nsw'
plots = os.path.join(base, 'docs', 'img')
sample_path = 'gs://nsw-scratch/vector/nsw-class-samples-200k-annotated.gpkg'
meta_path = 'gs://nsw-scratch/raster/nsw-veg-raw.csv'
# paths
base = '/home/cba/src/forestobs-nsw'
plots = os.path.join(base, 'docs', 'img')
sample_path = 'gs://nsw-scratch/vector/nsw-class-samples-200k-annotated.gpkg'
meta_path = 'gs://nsw-scratch/raster/nsw-veg-raw.csv'
In [3]:
Copied!
# plot settings
artlo.plot.set_style('salo-dark')
# plot settings
artlo.plot.set_style('salo-dark')
Reading and formatting the data¶
In [4]:
Copied!
# read the data into memory
meta = pd.read_csv(meta_path)
samples = gpd.read_file(sample_path)
# read the data into memory
meta = pd.read_csv(meta_path)
samples = gpd.read_file(sample_path)
In [5]:
Copied!
# link up the metadata class names to their numerical specs
class_nums = list(meta['ClassNumbe'].unique())
form_nums = list(meta['Formatio_1'].unique())
class_nums.sort()
form_nums.sort()
class_names = [meta['ClassName'][meta['ClassNumbe'] == class_num].iloc[0] for class_num in class_nums]
form_names = [meta['FormationN'][meta['Formatio_1'] == form_num].iloc[0] for form_num in form_nums]
# replace the numbers in the dataframe with names for easier plotting
for class_name, class_num in zip(class_names, class_nums):
samples['classes'][samples['classes'] == class_num] = class_name
for form_name, form_num in zip(form_names, form_nums):
samples['formations'][samples['formations'] == form_num] = form_name
# link up the metadata class names to their numerical specs
class_nums = list(meta['ClassNumbe'].unique())
form_nums = list(meta['Formatio_1'].unique())
class_nums.sort()
form_nums.sort()
class_names = [meta['ClassName'][meta['ClassNumbe'] == class_num].iloc[0] for class_num in class_nums]
form_names = [meta['FormationN'][meta['Formatio_1'] == form_num].iloc[0] for form_num in form_nums]
# replace the numbers in the dataframe with names for easier plotting
for class_name, class_num in zip(class_names, class_nums):
samples['classes'][samples['classes'] == class_num] = class_name
for form_name, form_num in zip(form_names, form_nums):
samples['formations'][samples['formations'] == form_num] = form_name
/tmp/ipykernel_5197/463801097.py:13: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy samples['classes'][samples['classes'] == class_num] = class_name /tmp/ipykernel_5197/463801097.py:16: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy samples['formations'][samples['formations'] == form_num] = form_name
Bar charts for each climate/veg pattern¶
In [ ]:
Copied!
# start plotting
columns = ['land_surface_temperature_mean', 'leaf_area_index_mean', 'cloud_cover_mean']
units = ['$^\circ$C', '$m^2 m^{-2}$', '%']
for column, unit in zip(columns, units):
bp = samples.boxplot(
column=column,
by='formations',
rot=90,
grid=False,
figsize=(5.5,6.5),
fontsize='small',
showfliers=False,
return_type='both',
patch_artist = True,
)
# add patch colors
#for row_key, (ax,row) in bp.iteritems():
# ax.set_xlabel('')
# for i, box in enumerate(row['boxes']):
# box.set_facecolor(form_colors[i])
# add labels
plt.suptitle(None)
plt.title(column)
plt.ylabel(units)
plt.tight_layout()
plt.savefig(os.path.join(plots, f'{column}.png'), dpi=200)
plt.close()
# start plotting
columns = ['land_surface_temperature_mean', 'leaf_area_index_mean', 'cloud_cover_mean']
units = ['$^\circ$C', '$m^2 m^{-2}$', '%']
for column, unit in zip(columns, units):
bp = samples.boxplot(
column=column,
by='formations',
rot=90,
grid=False,
figsize=(5.5,6.5),
fontsize='small',
showfliers=False,
return_type='both',
patch_artist = True,
)
# add patch colors
#for row_key, (ax,row) in bp.iteritems():
# ax.set_xlabel('')
# for i, box in enumerate(row['boxes']):
# box.set_facecolor(form_colors[i])
# add labels
plt.suptitle(None)
plt.title(column)
plt.ylabel(units)
plt.tight_layout()
plt.savefig(os.path.join(plots, f'{column}.png'), dpi=200)
plt.close()
In [6]:
Copied!
# plot all in a grid
subfigsize = (5.5, 6.5)
xsize, ysize = (4, 3)
figsize = (xsize * subfigsize[0], ysize * subfigsize[1])
fig, axs = plt.subplots(ysize, xsize, figsize=figsize)
columns = samples.columns[2:-1]
by='formations'
axs = axs.reshape(np.product((xsize, ysize)))
for idx, column in enumerate(columns):
if 'temperature' in column:
units = '$^\circ$C'
elif 'cloud' in column:
units = '%'
elif 'leaf_area' in column:
units = '$m^2 m^{-2}$'
bp = samples.boxplot(
column=column,
by=by,
ax=axs[idx],
rot=90,
grid=False,
figsize=subfigsize,
fontsize='small',
showfliers=False,
patch_artist = True,
)
# add labels
axs[idx].set_title(column)
axs[idx].set_ylabel(units)
fig.suptitle(None)
fig.tight_layout()
plt.savefig(os.path.join(plots, f"{by}-env-conditions.png"), dpi=200)
# plot all in a grid
subfigsize = (5.5, 6.5)
xsize, ysize = (4, 3)
figsize = (xsize * subfigsize[0], ysize * subfigsize[1])
fig, axs = plt.subplots(ysize, xsize, figsize=figsize)
columns = samples.columns[2:-1]
by='formations'
axs = axs.reshape(np.product((xsize, ysize)))
for idx, column in enumerate(columns):
if 'temperature' in column:
units = '$^\circ$C'
elif 'cloud' in column:
units = '%'
elif 'leaf_area' in column:
units = '$m^2 m^{-2}$'
bp = samples.boxplot(
column=column,
by=by,
ax=axs[idx],
rot=90,
grid=False,
figsize=subfigsize,
fontsize='small',
showfliers=False,
patch_artist = True,
)
# add labels
axs[idx].set_title(column)
axs[idx].set_ylabel(units)
fig.suptitle(None)
fig.tight_layout()
plt.savefig(os.path.join(plots, f"{by}-env-conditions.png"), dpi=200)
Listing the class and formation names¶
In [7]:
Copied!
for name, num in zip(form_names, form_nums):
print(f"form {int(num):03d}: {name}")
for name, num in zip(form_names, form_nums):
print(f"form {int(num):03d}: {name}")
form 000: Cleared form 001: Rainforests form 002: Wet sclerophyll forests (Shrubby subformation) form 003: Wet sclerophyll forests (Grassy subformation) form 004: Grassy woodlands form 005: Grasslands form 006: Dry sclerophyll forests (Shrub/grass subformation) form 007: Dry sclerophyll forests (Shrubby subformation) form 008: Heathlands form 009: Alpine complex form 010: Freshwater wetlands form 011: Forested wetlands form 012: Saline wetlands form 013: Semi-arid woodlands (Grassy subformation) form 014: Semi-arid woodlands (Shrubby subformation) form 015: Arid shrublands (Chenopod subformation) form 016: Arid shrublands (Acacia subformation)
In [8]:
Copied!
for name, num in zip(class_names, class_nums):
print(f"class {int(num):03d}: {name}")
for name, num in zip(class_names, class_nums):
print(f"class {int(num):03d}: {name}")
class 000: Cleared class 001: Subtropical Rainforests class 002: Northern Warm Temperate Rainforests class 003: Cool Temperate Rainforests class 004: Dry Rainforests class 005: Littoral Rainforests class 006: North Coast Wet Sclerophyll Forests class 007: South Coast Wet Sclerophyll Forests class 008: Northern Escarpment Wet Sclerophyll Forests class 009: Southern Escarpment Wet Sclerophyll Forests class 010: Northern Tableland Wet Sclerophyll Forests class 011: Southern Tableland Wet Sclerophyll Forests class 015: Sydney Coastal Dry Sclerophyll Forests class 016: Sydney Hinterland Dry Sclerophyll Forests class 017: Sydney Montane Dry Sclerophyll Forests class 019: Coastal Dune Dry Sclerophyll Forests class 020: North Coast Dry Sclerophyll Forests class 021: Northern Hinterland Wet Sclerophyll Forests class 022: South Coast Sands Dry Sclerophyll Forests class 024: Southern Lowland Wet Sclerophyll Forests class 025: Northern Escarpment Dry Sclerophyll Forests class 026: South East Dry Sclerophyll Forests class 027: Northern Tableland Dry Sclerophyll Forests class 028: Southern Tableland Dry Sclerophyll Forests class 029: Western Slopes Dry Sclerophyll Forests class 030: Pilliga Outwash Dry Sclerophyll Forests class 031: Wallum Sand Heaths class 032: Sydney Coastal Heaths class 033: Northern Montane Heaths class 034: Sydney Montane Heaths class 035: Southern Montane Heaths class 036: Alpine Heaths class 040: Tableland Clay Grassy Woodlands class 041: New England Grassy Woodlands class 042: Western Slopes Grassy Woodlands class 044: Western Peneplain Woodlands class 045: Subalpine Woodlands class 046: Temperate Montane Grasslands class 047: Semi-arid Floodplain Grasslands class 048: Coastal Swamp Forests class 050: Coastal Floodplain Forests class 051: Eastern Riverine Forests class 052: Inland Riverine Forests class 053: Inland Floodplain Woodlands class 054: Coastal Heath Swamps class 055: Montane Bogs and Fens class 056: Coastal Freshwater Lagoons and Floodplain Meadows class 057: Inland Saline Lakes class 058: Mangrove Swamps class 059: Riverine Chenopod Shrublands class 060: Aeolian Chenopod Shrublands class 061: Dune Mallee Woodlands class 062: Sand Plain Mallee Woodlands class 063: Semi-arid Sand Plain Woodlands class 064: Sydney Sand Flats Dry Sclerophyll Forests class 065: South Coast Heaths class 066: Northern Gorge Dry Sclerophyll Forests class 067: Clarence Dry Sclerophyll Forests class 068: New England Dry Sclerophyll Forests class 069: Hunter-Macleay Dry Sclerophyll Forests class 070: Coastal Headland and Foredune Scrubs class 071: Saltmarshes class 072: Coastal Valley Grassy Woodlands class 074: Montane Lakes class 075: Southern Warm Temperate Rainforests class 078: Montane Wet Sclerophyll Forests class 079: Central Gorge Dry Sclerophyll Forests class 080: Cumberland Dry Sclerophyll Forests class 081: Southern Hinterland Dry Sclerophyll Forests class 082: Southern Wattle Dry Sclerophyll Forests class 084: Upper Riverina Dry Sclerophyll Forests class 086: Southern Tableland Grassy Woodlands class 088: Riverine Sandhill Woodlands class 089: Inland Rocky Hill Woodlands class 090: Riverine Plain Woodlands class 091: Riverine Plain Grasslands class 092: Inland Floodplain Shrublands class 094: Subtropical Semi-arid Woodlands class 095: Desert Woodlands class 097: North-west Floodplain Woodlands class 098: Gibber Chenopod Shrublands class 099: Stony Desert Mulga Shrublands class 100: Sand Plain Mulga Shrublands class 101: Brigalow Clay Plain Woodlands class 102: North-west Plain Shrublands class 103: Gibber Transition Shrublands class 104: Alpine Fjaeldmarks class 106: Yetman Dry Sclerophyll Forests class 107: North-west Alluvial Sand Woodlands class 108: Inland Floodplain Swamps class 109: Floodplain Transition Woodlands class 110: Western Slopes Grasslands class 112: Seagrass Meadows class 113: North-west Slopes Dry Sclerophyll Woodlands class 114: Alpine Herbfields class 115: Alpine Bogs and Fens class 116: Maritime Grasslands class 117: Oceanic Rainforests class 118: Oceanic Cloud Forests class 119: Western Vine Thickets class 120: Temperate Swamp Forests class 124: Southern Riverina Grasslands class 125: Wadi Woodlands class 126: Floodplain-Estuarine Transition Forests
Listing sub-form dependencies¶
In [13]:
Copied!
for name, num in zip(form_names, form_nums):
subforms = list(meta['ClassName'][meta['Formatio_1'] == num].unique())
subforms.sort()
print(f"-- Form: {name} | Contains {len(subforms)} sub-forms --")
[print(subform) for subform in subforms]
print('')
for name, num in zip(form_names, form_nums):
subforms = list(meta['ClassName'][meta['Formatio_1'] == num].unique())
subforms.sort()
print(f"-- Form: {name} | Contains {len(subforms)} sub-forms --")
[print(subform) for subform in subforms]
print('')
-- Form: Cleared | Contains 1 sub-forms -- Cleared -- Form: Rainforests | Contains 9 sub-forms -- Cool Temperate Rainforests Dry Rainforests Littoral Rainforests Northern Warm Temperate Rainforests Oceanic Cloud Forests Oceanic Rainforests Southern Warm Temperate Rainforests Subtropical Rainforests Western Vine Thickets -- Form: Wet sclerophyll forests (Shrubby subformation) | Contains 4 sub-forms -- North Coast Wet Sclerophyll Forests Northern Escarpment Wet Sclerophyll Forests South Coast Wet Sclerophyll Forests Southern Escarpment Wet Sclerophyll Forests -- Form: Wet sclerophyll forests (Grassy subformation) | Contains 5 sub-forms -- Montane Wet Sclerophyll Forests Northern Hinterland Wet Sclerophyll Forests Northern Tableland Wet Sclerophyll Forests Southern Lowland Wet Sclerophyll Forests Southern Tableland Wet Sclerophyll Forests -- Form: Grassy woodlands | Contains 7 sub-forms -- Coastal Valley Grassy Woodlands Floodplain Transition Woodlands New England Grassy Woodlands Southern Tableland Grassy Woodlands Subalpine Woodlands Tableland Clay Grassy Woodlands Western Slopes Grassy Woodlands -- Form: Grasslands | Contains 6 sub-forms -- Maritime Grasslands Riverine Plain Grasslands Semi-arid Floodplain Grasslands Southern Riverina Grasslands Temperate Montane Grasslands Western Slopes Grasslands -- Form: Dry sclerophyll forests (Shrub/grass subformation) | Contains 10 sub-forms -- Central Gorge Dry Sclerophyll Forests Clarence Dry Sclerophyll Forests Cumberland Dry Sclerophyll Forests Hunter-Macleay Dry Sclerophyll Forests New England Dry Sclerophyll Forests North-west Slopes Dry Sclerophyll Woodlands Northern Gorge Dry Sclerophyll Forests Pilliga Outwash Dry Sclerophyll Forests Southern Hinterland Dry Sclerophyll Forests Upper Riverina Dry Sclerophyll Forests -- Form: Dry sclerophyll forests (Shrubby subformation) | Contains 14 sub-forms -- Coastal Dune Dry Sclerophyll Forests North Coast Dry Sclerophyll Forests Northern Escarpment Dry Sclerophyll Forests Northern Tableland Dry Sclerophyll Forests South Coast Sands Dry Sclerophyll Forests South East Dry Sclerophyll Forests Southern Tableland Dry Sclerophyll Forests Southern Wattle Dry Sclerophyll Forests Sydney Coastal Dry Sclerophyll Forests Sydney Hinterland Dry Sclerophyll Forests Sydney Montane Dry Sclerophyll Forests Sydney Sand Flats Dry Sclerophyll Forests Western Slopes Dry Sclerophyll Forests Yetman Dry Sclerophyll Forests -- Form: Heathlands | Contains 7 sub-forms -- Coastal Headland and Foredune Scrubs Northern Montane Heaths South Coast Heaths Southern Montane Heaths Sydney Coastal Heaths Sydney Montane Heaths Wallum Sand Heaths -- Form: Alpine complex | Contains 4 sub-forms -- Alpine Bogs and Fens Alpine Fjaeldmarks Alpine Heaths Alpine Herbfields -- Form: Freshwater wetlands | Contains 6 sub-forms -- Coastal Freshwater Lagoons and Floodplain Meadows Coastal Heath Swamps Inland Floodplain Shrublands Inland Floodplain Swamps Montane Bogs and Fens Montane Lakes -- Form: Forested wetlands | Contains 6 sub-forms -- Coastal Floodplain Forests Coastal Swamp Forests Eastern Riverine Forests Floodplain-Estuarine Transition Forests Inland Riverine Forests Temperate Swamp Forests -- Form: Saline wetlands | Contains 4 sub-forms -- Inland Saline Lakes Mangrove Swamps Saltmarshes Seagrass Meadows -- Form: Semi-arid woodlands (Grassy subformation) | Contains 5 sub-forms -- Brigalow Clay Plain Woodlands Inland Floodplain Woodlands North-west Floodplain Woodlands Riverine Plain Woodlands Wadi Woodlands -- Form: Semi-arid woodlands (Shrubby subformation) | Contains 9 sub-forms -- Desert Woodlands Dune Mallee Woodlands Inland Rocky Hill Woodlands North-west Alluvial Sand Woodlands Riverine Sandhill Woodlands Sand Plain Mallee Woodlands Semi-arid Sand Plain Woodlands Subtropical Semi-arid Woodlands Western Peneplain Woodlands -- Form: Arid shrublands (Chenopod subformation) | Contains 3 sub-forms -- Aeolian Chenopod Shrublands Gibber Chenopod Shrublands Riverine Chenopod Shrublands -- Form: Arid shrublands (Acacia subformation) | Contains 4 sub-forms -- Gibber Transition Shrublands North-west Plain Shrublands Sand Plain Mulga Shrublands Stony Desert Mulga Shrublands
Create a table of all form/subform names/classes¶
In [7]:
Copied!
for name, num in zip(form_names, form_nums):
subforms = list(meta['ClassName'][meta['Formatio_1'] == num].unique())
subforms.sort()
for subform in subforms:
subform_num = list(meta['ClassNumbe'][meta['ClassName'] == subform].unique())[0]
print(f"{name}, {subform}, {int(num)}, {subform_num}")
for name, num in zip(form_names, form_nums):
subforms = list(meta['ClassName'][meta['Formatio_1'] == num].unique())
subforms.sort()
for subform in subforms:
subform_num = list(meta['ClassNumbe'][meta['ClassName'] == subform].unique())[0]
print(f"{name}, {subform}, {int(num)}, {subform_num}")
Cleared, Cleared, 0, 0 Rainforests, Cool Temperate Rainforests, 1, 3 Rainforests, Dry Rainforests, 1, 4 Rainforests, Littoral Rainforests, 1, 5 Rainforests, Northern Warm Temperate Rainforests, 1, 2 Rainforests, Oceanic Cloud Forests, 1, 118 Rainforests, Oceanic Rainforests, 1, 117 Rainforests, Southern Warm Temperate Rainforests, 1, 75 Rainforests, Subtropical Rainforests, 1, 1 Rainforests, Western Vine Thickets, 1, 119 Wet sclerophyll forests (Shrubby subformation), North Coast Wet Sclerophyll Forests, 2, 6 Wet sclerophyll forests (Shrubby subformation), Northern Escarpment Wet Sclerophyll Forests, 2, 8 Wet sclerophyll forests (Shrubby subformation), South Coast Wet Sclerophyll Forests, 2, 7 Wet sclerophyll forests (Shrubby subformation), Southern Escarpment Wet Sclerophyll Forests, 2, 9 Wet sclerophyll forests (Grassy subformation), Montane Wet Sclerophyll Forests, 3, 78 Wet sclerophyll forests (Grassy subformation), Northern Hinterland Wet Sclerophyll Forests, 3, 21 Wet sclerophyll forests (Grassy subformation), Northern Tableland Wet Sclerophyll Forests, 3, 10 Wet sclerophyll forests (Grassy subformation), Southern Lowland Wet Sclerophyll Forests, 3, 24 Wet sclerophyll forests (Grassy subformation), Southern Tableland Wet Sclerophyll Forests, 3, 11 Grassy woodlands, Coastal Valley Grassy Woodlands, 4, 72 Grassy woodlands, Floodplain Transition Woodlands, 4, 109 Grassy woodlands, New England Grassy Woodlands, 4, 41 Grassy woodlands, Southern Tableland Grassy Woodlands, 4, 86 Grassy woodlands, Subalpine Woodlands, 4, 45 Grassy woodlands, Tableland Clay Grassy Woodlands, 4, 40 Grassy woodlands, Western Slopes Grassy Woodlands, 4, 42 Grasslands, Maritime Grasslands, 5, 116 Grasslands, Riverine Plain Grasslands, 5, 91 Grasslands, Semi-arid Floodplain Grasslands, 5, 47 Grasslands, Southern Riverina Grasslands, 5, 124 Grasslands, Temperate Montane Grasslands, 5, 46 Grasslands, Western Slopes Grasslands, 5, 110 Dry sclerophyll forests (Shrub/grass subformation), Central Gorge Dry Sclerophyll Forests, 6, 79 Dry sclerophyll forests (Shrub/grass subformation), Clarence Dry Sclerophyll Forests, 6, 67 Dry sclerophyll forests (Shrub/grass subformation), Cumberland Dry Sclerophyll Forests, 6, 80 Dry sclerophyll forests (Shrub/grass subformation), Hunter-Macleay Dry Sclerophyll Forests, 6, 69 Dry sclerophyll forests (Shrub/grass subformation), New England Dry Sclerophyll Forests, 6, 68 Dry sclerophyll forests (Shrub/grass subformation), North-west Slopes Dry Sclerophyll Woodlands, 6, 113 Dry sclerophyll forests (Shrub/grass subformation), Northern Gorge Dry Sclerophyll Forests, 6, 66 Dry sclerophyll forests (Shrub/grass subformation), Pilliga Outwash Dry Sclerophyll Forests, 6, 30 Dry sclerophyll forests (Shrub/grass subformation), Southern Hinterland Dry Sclerophyll Forests, 6, 81 Dry sclerophyll forests (Shrub/grass subformation), Upper Riverina Dry Sclerophyll Forests, 6, 84 Dry sclerophyll forests (Shrubby subformation), Coastal Dune Dry Sclerophyll Forests, 7, 19 Dry sclerophyll forests (Shrubby subformation), North Coast Dry Sclerophyll Forests, 7, 20 Dry sclerophyll forests (Shrubby subformation), Northern Escarpment Dry Sclerophyll Forests, 7, 25 Dry sclerophyll forests (Shrubby subformation), Northern Tableland Dry Sclerophyll Forests, 7, 27 Dry sclerophyll forests (Shrubby subformation), South Coast Sands Dry Sclerophyll Forests, 7, 22 Dry sclerophyll forests (Shrubby subformation), South East Dry Sclerophyll Forests, 7, 26 Dry sclerophyll forests (Shrubby subformation), Southern Tableland Dry Sclerophyll Forests, 7, 28 Dry sclerophyll forests (Shrubby subformation), Southern Wattle Dry Sclerophyll Forests, 7, 82 Dry sclerophyll forests (Shrubby subformation), Sydney Coastal Dry Sclerophyll Forests, 7, 15 Dry sclerophyll forests (Shrubby subformation), Sydney Hinterland Dry Sclerophyll Forests, 7, 16 Dry sclerophyll forests (Shrubby subformation), Sydney Montane Dry Sclerophyll Forests, 7, 17 Dry sclerophyll forests (Shrubby subformation), Sydney Sand Flats Dry Sclerophyll Forests, 7, 64 Dry sclerophyll forests (Shrubby subformation), Western Slopes Dry Sclerophyll Forests, 7, 29 Dry sclerophyll forests (Shrubby subformation), Yetman Dry Sclerophyll Forests, 7, 106 Heathlands, Coastal Headland and Foredune Scrubs, 8, 70 Heathlands, Northern Montane Heaths, 8, 33 Heathlands, South Coast Heaths, 8, 65 Heathlands, Southern Montane Heaths, 8, 35 Heathlands, Sydney Coastal Heaths, 8, 32 Heathlands, Sydney Montane Heaths, 8, 34 Heathlands, Wallum Sand Heaths, 8, 31 Alpine complex, Alpine Bogs and Fens, 9, 115 Alpine complex, Alpine Fjaeldmarks, 9, 104 Alpine complex, Alpine Heaths, 9, 36 Alpine complex, Alpine Herbfields, 9, 114 Freshwater wetlands, Coastal Freshwater Lagoons and Floodplain Meadows, 10, 56 Freshwater wetlands, Coastal Heath Swamps, 10, 54 Freshwater wetlands, Inland Floodplain Shrublands, 10, 92 Freshwater wetlands, Inland Floodplain Swamps, 10, 108 Freshwater wetlands, Montane Bogs and Fens, 10, 55 Freshwater wetlands, Montane Lakes, 10, 74 Forested wetlands, Coastal Floodplain Forests, 11, 50 Forested wetlands, Coastal Swamp Forests, 11, 48 Forested wetlands, Eastern Riverine Forests, 11, 51 Forested wetlands, Floodplain-Estuarine Transition Forests, 11, 126 Forested wetlands, Inland Riverine Forests, 11, 52 Forested wetlands, Temperate Swamp Forests, 11, 120 Saline wetlands, Inland Saline Lakes, 12, 57 Saline wetlands, Mangrove Swamps, 12, 58 Saline wetlands, Saltmarshes, 12, 71 Saline wetlands, Seagrass Meadows, 12, 112 Semi-arid woodlands (Grassy subformation), Brigalow Clay Plain Woodlands, 13, 101 Semi-arid woodlands (Grassy subformation), Inland Floodplain Woodlands, 13, 53 Semi-arid woodlands (Grassy subformation), North-west Floodplain Woodlands, 13, 97 Semi-arid woodlands (Grassy subformation), Riverine Plain Woodlands, 13, 90 Semi-arid woodlands (Grassy subformation), Wadi Woodlands, 13, 125 Semi-arid woodlands (Shrubby subformation), Desert Woodlands, 14, 95 Semi-arid woodlands (Shrubby subformation), Dune Mallee Woodlands, 14, 61 Semi-arid woodlands (Shrubby subformation), Inland Rocky Hill Woodlands, 14, 89 Semi-arid woodlands (Shrubby subformation), North-west Alluvial Sand Woodlands, 14, 107 Semi-arid woodlands (Shrubby subformation), Riverine Sandhill Woodlands, 14, 88 Semi-arid woodlands (Shrubby subformation), Sand Plain Mallee Woodlands, 14, 62 Semi-arid woodlands (Shrubby subformation), Semi-arid Sand Plain Woodlands, 14, 63 Semi-arid woodlands (Shrubby subformation), Subtropical Semi-arid Woodlands, 14, 94 Semi-arid woodlands (Shrubby subformation), Western Peneplain Woodlands, 14, 44 Arid shrublands (Chenopod subformation), Aeolian Chenopod Shrublands, 15, 60 Arid shrublands (Chenopod subformation), Gibber Chenopod Shrublands, 15, 98 Arid shrublands (Chenopod subformation), Riverine Chenopod Shrublands, 15, 59 Arid shrublands (Acacia subformation), Gibber Transition Shrublands, 16, 103 Arid shrublands (Acacia subformation), North-west Plain Shrublands, 16, 102 Arid shrublands (Acacia subformation), Sand Plain Mulga Shrublands, 16, 100 Arid shrublands (Acacia subformation), Stony Desert Mulga Shrublands, 16, 99