Closed gubuntu closed 3 years ago
Waterberg Biosphere Reserve is a Biosphere reserve recognised by The Department of Environment, Forestry and Fisheries as a part of the THE SOUTH AFRICAN STRATEGY FOR THE BIOSPHERE RESERVE PROGRAMME (2016 – 2020) and is internationally recognized as a component of the UNESCO Man and the Biosphere (MAB) Programme.
BRs can be seen as informal institutions because their management plans are not necessarily legally binding. The question of providing BRs legal recognition in national legislation has been a recurring subject of discussions within the UNESCO Biosphere Reserve Programme and regional BR network. In the South African context, BRs are all independent, apolitical, not-for-profit bodies.
The intention of the South African Biosphere reserve strategy is that BRs programmes produce mapped, broad zonation plans, including zone descriptions, which are publicly available online in GIS format. The BRs’ zonation plans (broad and ultimately detailed) are then to be integrated into municipal spatial planning and other spatial planning initiatives, after which detailed integrated spatial plans may be developed for the BR. As described in the Status of Biosphere Reserves in South Africa at the 2014 biodiversity planning forum, the intent is to produce a Spatial Zonationplan for Biosphere Reserves that provides the following protections to various zones:
All areas fall under the jurisdiction of the Waterberg District Municipality (DC36), which has mandates dictated by the National Government and the National Department of Environment, Forestry and Fisheries. The Spatial Planning and Land Use Management Act gives additional regulatory authority to the Department of Rural Development and Land Reform additional authority on land use management and planning approcal. Areas within the biosphere reserve zones are supported by cooperative governance frameworks and a network of agencies including National Departments, Local authorities, UNESCO and various national and international agencies in the public and private sectors.
The zones are currently split between core, buffer and transition areas which are allocated in line with the Strategic Environmental Management plan, which are not continuous areas and extend across multiple local municipalities which hold local administrative authority across various parts of the respective areas.
Coverage assessment was determined by using the QGIS vector overlap analysis utility on the local municipalities by each respective zone type.
Municipality | Total ha | Coverage % | Core ha | Buffer ha | Transition ha |
---|---|---|---|---|---|
MODIMOLLE (LIM365) | 616234.8259 | 98.9481 | 86478.4252 | 281085.4025 | 248670.9982 |
MOGALAKWENA (LIM367) | 604960.1700 | 98.1114 | 123336.4459 | 241883.5985 | 239740.1255 |
AGANANG (LIM352) | 165074.9120 | 88.2284 | 0.0000 | 20785.1785 | 144289.7335 |
THABAZIMBI (LIM361) | 714347.7354 | 72.4326 | 263136.4555 | 410525.5403 | 40685.7395 |
BELA-BELA (LIM366) | 131937.5851 | 39.0814 | 5939.2296 | 81753.5190 | 44244.8365 |
LEPHALALE (LIM362) | 674640.6878 | 34.4180 | 193618.4714 | 413085.6303 | 67936.5861 |
MOOKGOPONG (LIM364) | 125030.3087 | 29.2764 | 26782.4258 | 82420.8753 | 15827.0076 |
BLOUBERG (LIM351) | 25582.4225 | 5.6342 | 58.6364 | 25519.5089 | 4.2772 |
POLOKWANE (LIM354) | 17274.5734 | 4.5870 | 7315.5160 | 9791.9498 | 167.1075 |
LEPELE-NKUMPI (LIM355) | 10968.0803 | 3.1668 | 9494.9508 | 1473.1295 | 0.0000 |
MOSES KOTANE (NW375) | 18022.1426 | 3.1512 | 4850.6138 | 13171.5288 | 0.0000 |
MADIBENG (NW372) | 11784.9206 | 3.0696 | 2900.8545 | 8884.0661 | 0.0000 |
RAMOTSHERE MOILOA (NW385) | 12612.9377 | 1.7536 | 12611.7125 | 1.2252 | 0.0000 |
MOLEMOLE (LIM353) | 1753.1730 | 0.5238 | 0.0000 | 1752.5806 | 0.5925 |
TSHWANE | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
METSWEDING | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
Dr JS Moroka Local Municipality(MP316) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
Thembisile Local Municipality(MP315) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
ELIAS MOTSOALEDI (LIM472) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
GREATER MARBLE HALL (LIM471) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
MUSINA (LIM341) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
MAKHADO (LIM344) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
RUSTENBURG (NW373) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
MORETELE (NW371) | 0.0000 | 0.0000 | 0.0000 | 0.0000 | 0.0000 |
Protected areas are managed in line with the National Environmental Management: Protected Areas Act, which appoints the National Government as a trustee of the protected areas. The act prescribes a national framework which makes provision for cooperative governance, biodiversity conservation, sustainable use and local community participation in the declaration and management of protected areas on state, private and communal land, as described in the IUCN 2009 Case Study. The majority of the National level Protected areas within the regional zones are Private Game Reserves.
Additional protected areas are recognised within the region of interest, including UNCESCO Biodiversity reserves, RAMSAR Sites and Important Bird Areas.
Additional jurisdictions for some villages may fall under the LIMPOPO TRADITIONAL LEADERSHIP AND INSTITUTIONS ACT or legislation governed with the Limpopo Department of Cooperative Governance, Human Settlements and Traditional Affairs or the National Department of Cooperative Governance and Traditional Affairs Traditional Leadership and Governance Framework Act.
Area Type | Area (ha) |
---|---|
Buffer – No Owner Data | 0.01816 |
Core – Public Land | 2186.46456 |
Core – No Owner Data | 5610.87252 |
Buffer – Public Land | 12461.51772 |
Core – Private Land | 228095018.54583 |
Transition – Private Land | 915529107.95890 |
Buffer – Private Land | 1670910929.57535 |
Note that "Public" indicates land tenure where the state retains ownership, or for servitude areas where third parties hold rights which supersede the rights of the land owner. These areas have been further divided into areas based on their legal status and protection level as a National Protected Area, or International area of special interest.
Status | Area (ha) |
---|---|
Private Core Area | 146755294.7935 |
Public Core Area | 747.1318 |
Special Core Area | 0.0008 |
Protected Core Area | 5610.8717 |
Special Private Core Area | 1014430.2996 |
Special Public Core Area | 72.2352 |
Protected Private Core Area | 80325293.4527 |
Protected Public Core Area | 1367.0976 |
Private Buffer Area | 1544013957.8369 |
Public Buffer Area | 11962.5977 |
Special Buffer Area | 0.0148 |
Protected Buffer Area | 0.0034 |
Special Private Buffer Area | 3104720.0958 |
Special Public Buffer Area | 487.0345 |
Protected Private Buffer Area | 123792251.6426 |
Protected Public Buffer Area | 11.8856 |
Private Transition Area | 912332712.3819 |
Public Transition Area | 4359.4412 |
Special Transition Area | 0.0041 |
Protected Transition Area | 0.0000 |
Special Private Transition Area | 684425.3364 |
Special Public Transition Area | 45.5192 |
Protected Private Transition Area | 2511970.2406 |
Protected Public Transition Area | 0.3204 |
The process for establishing these figures was to identify features which intersected the new area bounds which where available from various data layers taken from the RSA Surveyor General data. This was done by using a spatial selection to identify intersecting features and return a feature count of the results.
def getCountInArea(input_source, aoi_source):
processing.run("native:selectbylocation",
{'INPUT': input_source,'PREDICATE':[0],
'INTERSECT':aoi_source,'METHOD':0})
aoi_layers = QgsProject.instance().mapLayersByName('wbr_new_boundary')
aoi = aoi_layers[0]
aoi_source = aoi.source()
sg_layers = ['communal_land',
'erf',
'farm_portion',
'magisterial',
'park',
'private_open_place',
'proclamation_area',
'surveyed_informal_erf',
'unaliented_river_bed',
'unaliented_state_land']
layers = [layer for layer in QgsProject.instance().mapLayers().values()]
for layer in layers:
if layer.name() in sg_layers:
try:
getCountInArea(layer.source(), aoi_source)
print('{0}:{1}'.format(layer.name(),layer.selectedFeatureCount()))
except Exception as err:
print(err)
The results identified layers which had the relevant features.
farm_portion:13617
erf:96958
servitude_areas:2342
park:450
unaliented_state_land:2
surveyed_informal_erf:1
communal_land:0
magisterial:0
private_open_place:0
proclamation_area:0
unaliented_river_bed:0
These layers were introspected for land ownership defining attributes beyond what is distinguishable simply from the layer name. Parent farm boundaries were used to compensate for gaps in farm portion data for private land areas. These layers were then split, clipped to the AOI bounds and dissolved into distinct layers based on those attributes and clipped to the bounds of the project area by individual zone for evaluation. In this instance, on "Farm Portions" with the "STATE LAND" attribute were able to be distinguished from other ownership types via attribute information.
Each dissolved layer was assigned it's layer name as a single identifying attribute, the total coverage area and the relevant ownership and protection attribute value as detailed below.
layers = [layer for layer in QgsProject.instance().mapLayers().values()]
state_layers = ['parks_transition',
'parks_buffer',
'parks_core',
'fp_stateland_buffer',
'fp_stateland_core',
'fp_stateland_transition',
'unalienatedstateland_buffer',
'unalienatedstateland_core',
'unalienatedstateland_transition',
'servitudes_core',
'servitudes_buffer',
'servitudes_transition']
private_layers = ['erf_core',
'erf_buffer',
'erf_transition',
'parent_farms_core',
'parent_farms_buffer',
'parent_farms_transition',
'farmportions_buffer',
'farmportions_core',
'farmportions_transition',
'informalerf_buffer',
'informalerf_core',
'informalerf_transition']
protected_layers = ['pa_national_core',
'pa_national_buffer',
'pa_national_transition']
special_layers = ['pa_international_core',
'pa_international_buffer',
'pa_international_transition']
for layer in layers:
if layer.name() in state_layers:
try:
print(layer.name())
layer.startEditing()
fieldsIndex = [i for i in range(len(layer.fields().names()))]
layer.dataProvider().deleteAttributes(fieldsIndex)
layer.updateFields()
layer.dataProvider().addAttributes([QgsField('layer', QVariant.String)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(1, layer.name())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('area', QVariant.Double)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(2, feature.geometry().area())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('ownership', QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
feature['ownership'] = 2
layer.updateFeature(feature)
layer.updateFields()
layer.commitChanges()
except Exception as err:
print(err)
elif layer.name() in private_layers:
try:
print(layer.name())
layer.startEditing()
fieldsIndex = [i for i in range(len(layer.fields().names()))]
layer.dataProvider().deleteAttributes(fieldsIndex)
layer.updateFields()
layer.dataProvider().addAttributes([QgsField('layer', QVariant.String)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(1, layer.name())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('area', QVariant.Double)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(2, feature.geometry().area())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('ownership', QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
feature['ownership'] = 1
layer.updateFeature(feature)
layer.updateFields()
layer.commitChanges()
except Exception as err:
print(err)
elif layer.name() in protected_layers:
try:
print(layer.name())
layer.startEditing()
fieldsIndex = [i for i in range(len(layer.fields().names()))]
layer.dataProvider().deleteAttributes(fieldsIndex)
layer.updateFields()
layer.dataProvider().addAttributes([QgsField('layer', QVariant.String)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(1, layer.name())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('area', QVariant.Double)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(2, feature.geometry().area())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('protected', QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
feature['protected'] = 2
layer.updateFeature(feature)
layer.updateFields()
layer.commitChanges()
except Exception as err:
print(err)
elif layer.name() in special_layers:
try:
print(layer.name())
layer.startEditing()
fieldsIndex = [i for i in range(len(layer.fields().names()))]
layer.dataProvider().deleteAttributes(fieldsIndex)
layer.updateFields()
layer.dataProvider().addAttributes([QgsField('layer', QVariant.String)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(1, layer.name())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('area', QVariant.Double)])
layer.updateFields()
for feature in layer.getFeatures():
feature.setAttribute(2, feature.geometry().area())
layer.updateFeature(feature)
layer.dataProvider().addAttributes([QgsField('protected', QVariant.Int)])
layer.updateFields()
for feature in layer.getFeatures():
feature['protected'] = 1
layer.updateFeature(feature)
layer.updateFields()
layer.commitChanges()
except Exception as err:
print(err)
The resulting features had coverage areas outlined in the following summary
Layer | Area (ha) |
---|---|
parent_farms_buffer | 1561265.07678 |
erf_buffer | 4326.87580 |
erf_core | 325.68925 |
erf_transition | 8368.70191 |
farmportions_buffer | 1499745.91574 |
farmportions_core | 708108.36660 |
farmportions_transition | 732381.25398 |
informalerf_buffer | 1219.48159 |
pa_international_buffer | 339148.77055 |
pa_international_core | 222701.63458 |
pa_international_transition | 118371.70083 |
pa_national_buffer | 7958.31354 |
pa_national_core | 539168.64636 |
pa_national_transition | 147.34526 |
parent_farms_core | 721131.88120 |
parent_farms_transition | 791592.78018 |
parks_buffer | 330.69725 |
parks_core | 0.00293 |
parks_transition | 438.82119 |
servitudes_buffer | 5398.54212 |
servitudes_core | 1005.06325 |
servitudes_transition | 2231.26304 |
unalienatedstateland_buffer | 1153.04760 |
unalienatedstateland_core | 0.00267 |
unalienatedstateland_transition | 0.00017 |
As many of these areas also have overlapping ownership information, the features were distinguished by ownership type and unioned in a fashion that gave the priority of ownership to public areas inclusing state land and servitudes. This was achieved by assigning an integer index value for the ownership attribute (1 for private and 2 for public). As protected areas are a distinct indicator of land use and tenure, but do not directly match the available property boundaries avilable from current data sources, an additional attribute was aggregated in the same manner by assigning International areas of special interest, such as Biosphere Reserves and RAMSAR sites, a protection status value of 1, with National level protected areas which have legal protections (Private Game Reserves and National Parks) a status of 2.
The union was performed by manual iteration over each layer using the GRASS GIS v.overlay algorithm with the OR operator. The results were aggregated utilising a spatial aggregation (with group by $geometry
filter) and a "maximum" method applied to the relevant fields in order to identify the relevant ownership and protection status by the relevant priority level.
These fields were then concatenated into a new field "status" and aggregated on that result. The following status definition formula is a preliminary work in progress and should be further modified to better group elements by land ownership type in future versions to minimise the manual processing required for more meaningful spatial representation and symbolisation.
CASE
WHEN ("zone"='core' AND "protection"=0 AND "ownership"=0) THEN '1 - Core Area'
WHEN ("zone"='core' AND "protection"=0 AND "ownership"=1) THEN '2 - Private Core Area'
WHEN ("zone"='core' AND "protection"=0 AND "ownership"=2) THEN '3 - Public Core Area'
WHEN ("zone"='core' AND "protection"=1 AND "ownership"=0) THEN '4 - Special Core Area'
WHEN ("zone"='core' AND "protection"=2 AND "ownership"=0) THEN '5 - Protected Core Area'
WHEN ("zone"='core' AND "protection"=1 AND "ownership"=1) THEN '6 - Special Private Core Area'
WHEN ("zone"='core' AND "protection"=1 AND "ownership"=2) THEN '7 - Special Public Core Area'
WHEN ("zone"='core' AND "protection"=2 AND "ownership"=1) THEN '8 - Protected Private Core Area'
WHEN ("zone"='core' AND "protection"=2 AND "ownership"=2) THEN '9 - Protected Public Core Area'
WHEN ("zone"='buffer' AND "protection"=0 AND "ownership"=0) THEN '10 - Buffer Area'
WHEN ("zone"='buffer' AND "protection"=0 AND "ownership"=1) THEN '11 - Private Buffer Area'
WHEN ("zone"='buffer' AND "protection"=0 AND "ownership"=2) THEN '12 - Public Buffer Area'
WHEN ("zone"='buffer' AND "protection"=1 AND "ownership"=0) THEN '13 - Special Buffer Area'
WHEN ("zone"='buffer' AND "protection"=2 AND "ownership"=0) THEN '14 - Protected Buffer Area'
WHEN ("zone"='buffer' AND "protection"=1 AND "ownership"=1) THEN '15 - Special Private Buffer Area'
WHEN ("zone"='buffer' AND "protection"=1 AND "ownership"=2) THEN '16 - Special Public Buffer Area'
WHEN ("zone"='buffer' AND "protection"=2 AND "ownership"=1) THEN '17 - Protected Private Buffer Area'
WHEN ("zone"='buffer' AND "protection"=2 AND "ownership"=2) THEN '18 - Protected Public Buffer Area'
WHEN ("zone"='transition' AND "protection"=0 AND "ownership"=0) THEN '19 - Transition Area'
WHEN ("zone"='transition' AND "protection"=0 AND "ownership"=1) THEN '20 - Private Transition Area'
WHEN ("zone"='transition' AND "protection"=0 AND "ownership"=2) THEN '21 - Public Transition Area'
WHEN ("zone"='transition' AND "protection"=1 AND "ownership"=0) THEN '22 - Special Transition Area'
WHEN ("zone"='transition' AND "protection"=2 AND "ownership"=0) THEN '23 - Protected Transition Area'
WHEN ("zone"='transition' AND "protection"=1 AND "ownership"=1) THEN '24 - Special Private Transition Area'
WHEN ("zone"='transition' AND "protection"=1 AND "ownership"=2) THEN '25 - Special Public Transition Area'
WHEN ("zone"='transition' AND "protection"=2 AND "ownership"=1) THEN '26 - Protected Private Transition Area'
WHEN ("zone"='transition' AND "protection"=2 AND "ownership"=2) THEN '27 - Protected Public Transition Area'
ELSE 'Other' END
The consolidated results are summarised and displayed at the start of this section.
Moved to "Done" in project workflow but not closed, as changes are required once updates are performed with new proposed boundary.
well done @zacharlie, hectic analysis!
17.1 Management and coordination structure:
ref biosphere_reserve_nomination_form_2013_en.pdf