kartoza / WBR-SEMP

0 stars 3 forks source link

17. describe institutional aspects #56

Closed gubuntu closed 3 years ago

gubuntu commented 3 years ago
  1. GOVERNANCE, BIOSPHERE RESERVE MANAGEMENT AND COORDINATION: [Describe the following characteristics in the prospective that the site is being designated.]

17.1 Management and coordination structure:

ref biosphere_reserve_nomination_form_2013_en.pdf

zacharlie commented 3 years ago

17.1.1 What is the legal status of the biosphere reserve?

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.

zacharlie commented 3 years ago

17.1.2 What is the legal status of the core area(s) and the buffer zone(s)?

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:

zacharlie commented 3 years ago

17.1.3 Which administrative authorities have competence for each zone of the biosphere reserve (core area(s), buffer zone(s), transition area(s))?

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.

Local Municipality Coverage

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
zacharlie commented 3 years ago

17.1.4. Clarify the respective competence of each of these authorities. Make a distinction between each zone if necessary and mention any decentralized authority.

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.

zacharlie commented 3 years ago

17.1.5 Indicate the main land tenure (ownership) for each zone.

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.

Ownership Coverage

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.

Ownership Status

zacharlie commented 3 years ago

Moved to "Done" in project workflow but not closed, as changes are required once updates are performed with new proposed boundary.

gubuntu commented 3 years ago

well done @zacharlie, hectic analysis!