2  Current Layers

This step builds two current-condition spatial layers for each of the seven TBCMP counties using the input layers from Step 1. All processing is implemented in R/funcs.R and executed in R/02_current_layers.R.

Overview

For each county, two layers are produced that together characterize the current state of the coastal landscape in terms of habitat type, protection status, and restoration potential:

Layer Description
nativelyr Native (non-restorable) habitats within existing or proposed conservation lands
restorelyr Restorable lands within existing or proposed conservation, sub-classified by habitat type

Input Layers

Seven county-wide layers from Step 1 are loaded at the start of the script:

Object File Description
fluccs data/01_inputs/fluccs.RData FLUCCS code lookup table
tbcmp_cnt data/01_inputs/tbcmp_cnt.RData Seven-county boundary polygons
coastal_stratum data/01_inputs/coastal_stratum.RData Coastal stratum (MLLW to 5 ft NAVD88)
soils data/01_inputs/soils.RData Soils classified as Xeric (100), Mesic (200), or Hydric (300)
salinity_layer data/01_inputs/salinity_layer.RData Three-class salinity zones
prop data/01_inputs/prop.RData Proposed conservation lands
exst data/01_inputs/exst.RData Existing conservation lands

Land use/land cover (LULC) is loaded separately for each county within the processing loop, as it is too large to hold all seven counties in memory simultaneously.

County Processing Loop

The script loops over all seven counties in tbcmp_cnt. For each county, the following steps are performed:

  1. Load the county LULC layer (lulc_<county>.RData)
  2. Call build_current_lyrs() to produce the two output layers
  3. Save each layer as <layer>_<county>.RData in data/02_current_layers/

The county-wide shared layers (coastal_stratum, soils, salinity_layer, prop, exst) are passed in full and clipped to the county boundary inside build_current_lyrs(). This keeps the loop clean and ensures the clipping logic is encapsulated with the function that uses it.

LULC Preparation

Before any conservation overlay is applied, the LULC layer is prepared by add_coast_up(). This function performs two tasks:

FLUCCS join: The FLUCCS code lookup table is joined to the LULC polygons by FLUCCSCODE, attaching Habitat habitat category labels to each polygon (e.g., Native Uplands, Restorable, Mangrove Forests, Salt Marshes, Seagrasses, etc.).

Coastal Uplands reclassification: Native Upland polygons that spatially overlap the coastal stratum are extracted and relabelled as Coastal Uplands. This separates upland habitats within the tidal zone from those further inland, as they have different vulnerability and restoration context. The remaining Native Uplands layer is trimmed to remove the overlap so there is no double-counting.

Developed and Open Water removal: Polygons classified as Developed or Open Water are dropped from the prepared layer. These categories are not relevant to habitat conservation or restoration potential.

Conservation Overlay

build_current_lyrs() intersects the prepared LULC with the conservation land boundaries to produce the native and restorable layers.

For each category, the LULC geometry is intersected with:

  • Existing conservation (exst) producing exstall
  • Proposed conservation (prop) producing propall

Each resulting feature retains its Habitat category label and a typ field ("Existing" or "Proposed").

nativelyr is the union of propall and exstall for all categories except Restorable. It represents the current standing stock of native habitat that is already under some form of conservation protection.

Restorable Land Classification

restorelyr is built from the Restorable category features in propall and exstall. These are degraded or altered lands within conservation boundaries that have potential for ecological restoration. For each conservation type (Existing and Proposed), restorable areas are sub-classified into five habitat categories using the soils layer, coastal stratum, and salinity zone as a three-stage spatial filter:

Stage 1: Soil type

The soils layer splits restorable land into two groups:

  • Xeric soils (gridcode 100): well-drained upland soils for candidate upland habitats
  • Non-xeric soils (gridcode 200 or 300): seasonally or permanently saturated soils for candidate wetland habitats

Stage 2: Tidal position

Each soil group is then split by intersection with the coastal stratum:

  • Xeric soils inside the coastal stratum to Coastal Uplands
  • Xeric soils outside the coastal stratum to Native Uplands
  • Non-xeric soils inside the coastal stratum to tidal wetlands (further classified below)
  • Non-xeric soils outside the coastal stratum to Freshwater Wetlands

Stage 3: Salinity zone (tidal wetlands only)

Tidal wetlands (non-xeric soils within the coastal stratum) are split by intersection with the salinity layer:

  • Tidal wetlands in the 0.5–18 psu zone to Salt Marshes (following the 18 psu boundary follows Eleuterius and Eleuterius (1979))
  • Tidal wetlands in all other salinity zones (Fresh < 0.5 psu and Euhaline > 18 psu) to Mangrove Forests/Salt Barrens
Eleuterius, L. N., and C. K. Eleuterius. 1979. “Tide Levels and Salt Marsh Zonation.” Bulletin of Marine Science 29 (3): 394–400.

The classification logic is summarised in the decision tree below:

Restorable land
├── Xeric soils (gridcode 100)
│   ├── Inside coastal stratum  →  Coastal Uplands
│   └── Outside coastal stratum →  Native Uplands
└── Non-xeric soils (gridcode 200/300)
    ├── Outside coastal stratum →  Freshwater Wetlands
    └── Inside coastal stratum
        ├── Salinity 0.5–18 psu →  Salt Marshes
        └── All other salinity  →  Mangrove Forests/Salt Barrens

Output Files

All output files are written to data/02_current_layers/. Each layer is saved with a county suffix:

File pattern Object Type
nativelyr_<county>.RData nativelyr_<county> sf POLYGON, columns: Habitat, typ
restorelyr_<county>.RData restorelyr_<county> sf POLYGON, columns: Habitat, typ

Key Functions

Function Purpose
add_coast_up() Join FLUCCS lookup, reclassify coastal uplands, remove developed/open water
build_current_lyrs() Apply conservation overlay and classify restorable lands into habitat categories
fixgeo() Union, cast to individual POLYGON, and zero-buffer geometries to resolve topology errors