Project overview

This page is a case-study scaffold rather than a definitive project atlas. It is meant to show how OpenGeo.tools methods might be applied in a southern Mozambique project setting where energy infrastructure, settlements, hydrology, and environmental constraints all matter.

Spatial context

The broader Temane area sits in a low-relief coastal setting influenced by settlement corridors, access roads, drainage networks, wetlands, and coastal landforms. In this kind of geography, distance alone is rarely enough. Small shifts in route or site geometry can change the interaction with settlements, flood-prone ground, and water features materially.

Why this case is useful

Temane is pedagogically useful because it brings several recurring geospatial problems together:

Data layers that matter

For a first-pass case build, the following layers are usually high value:

Layer family Why it matters
Settlements and place names Establishes population context and access relationships
Roads and tracks Supports route access, logistics, and mobility review
Water features and coastal context Important for crossing logic, flood risk awareness, and landform context
Administrative boundaries Helps package context maps for non-specialist review
Public-service and infrastructure features Supports screening and field prioritization

Build the local context package

This repo now contains a localized copy of the Temane folio source data and a generation script that creates smaller local layers for this site.

node scripts/temane/export_temane_folio_layers.mjs

The script reads from data/raw/temane-folio/ and writes the Temane-local outputs into src/data/examples/.

const temaneExtent = [
  [34.6, -22.45],
  [35.6, -21.2]
];

temaneExtent

Local source layers used on this page

const temaneAdminAreas = await FileAttachment("../data/examples/temane-admin-areas-local.geojson").json();
const temaneWaterAreas = await FileAttachment("../data/examples/temane-water.geojson").json();
const temaneCoastline = await FileAttachment("../data/examples/temane-coastline-local.geojson").json();
const temaneRoads = await FileAttachment("../data/examples/temane-roads-local.geojson").json();
const temanePowerLines = await FileAttachment("../data/examples/temane-power-lines-local.geojson").json();
const temanePowerPoints = await FileAttachment("../data/examples/temane-power-points-local.geojson").json();
const temaneAmenities = await FileAttachment("../data/examples/temane-amenities-local.geojson").json();
const temanePlaceLabels = await FileAttachment("../data/examples/temane-place-labels-local.geojson").json();

({
  adminAreas: temaneAdminAreas.features.length,
  waterAreas: temaneWaterAreas.features.length,
  coastline: temaneCoastline.features.length,
  roads: temaneRoads.features.length,
  powerLines: temanePowerLines.features.length,
  powerPoints: temanePowerPoints.features.length,
  amenities: temaneAmenities.features.length,
  places: temanePlaceLabels.features.length
})

Live project context example

This figure is now built from the localized folio-derived layers rather than the thin earlier subset. It is still a static SVG figure, but it now reflects the local study frame and a more meaningful layer stack.

renderGeojsonMap({
  title: "Temane local context from localized folio layers",
  subtitle: "Administrative context, hydrology, coastal edge, roads, power, settlements, and amenities inside the Temane study frame.",
  width: 820,
  height: 540,
  extent: temaneExtent,
  layers: [
    {data: temaneWaterAreas, fill: "#4b90b3", stroke: "#86c0db", strokeWidth: 0.4, opacity: 0.24},
    {data: temaneCoastline, stroke: "#86c0db", strokeWidth: 1.6, opacity: 0.9},
    {data: temaneAdminAreas, fill: "none", stroke: "#556660", strokeWidth: 0.8, opacity: 0.9},
    {data: temaneRoads, stroke: "#d7b97a", strokeWidth: 0.8, opacity: 0.62},
    {data: temanePowerLines, stroke: "#9ec3a7", strokeWidth: 1.8, opacity: 0.88},
    {data: temanePowerPoints, fill: "#f1d391", stroke: "#14211f", pointRadius: 1.8, strokeWidth: 0.3, opacity: 0.85},
    {data: temaneAmenities, fill: "#e08bb6", stroke: "#ffffff", pointRadius: 4.4, strokeWidth: 0.8},
    {
      data: temanePlaceLabels,
      fill: "#f3f2eb",
      stroke: "#0f1715",
      pointRadius: 4.6,
      strokeWidth: 1,
      labels: (feature) => feature.properties?.name,
      labelDx: 8,
      labelDy: -8,
      labelSize: 13
    }
  ]
})

Possible methods applied

This case is well suited to:

Suggested workflow

  1. Generate the Temane-local layers with the local script.
  2. Review the static context figure to confirm the layer stack is sensible.
  3. Pull targeted OSM updates with Overpass for schools, clinics, water crossings, or settlements.
  4. Classify likely receptors and low-confidence features separately.
  5. Build a compact MapLibre view for team review and discussion.

Outputs

Useful outputs from this case scaffold would include:

Limitations

The main limitation is still data completeness. Open reference layers in this geography may underrepresent clinics, schools, small settlements, or seasonally important water features. Any serious project use would need local review and project-specific data integration.

Why it belongs in OpenGeo.tools

Temane demonstrates the central theme of the site: practical geospatial work rarely starts with perfect data, but it still benefits from disciplined methods, repeatable local scripts, and honest handling of uncertainty.