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:
- infrastructure decisions in a developing transport landscape
- uneven open-data coverage across settlements and public facilities
- hydrology and wetland context that changes route logic quickly
- the need to move between local static figures and inspectable browser maps
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:
- sensitive receptor screening
- corridor comparison
- access-route mapping
- field-pack preparation
- staged OSM extraction with iterative validation
Suggested workflow
- Generate the Temane-local layers with the local script.
- Review the static context figure to confirm the layer stack is sensible.
- Pull targeted OSM updates with Overpass for schools, clinics, water crossings, or settlements.
- Classify likely receptors and low-confidence features separately.
- Build a compact MapLibre view for team review and discussion.
Outputs
Useful outputs from this case scaffold would include:
- a receptor screening layer
- an access and crossings map
- a concise project context web map
- a field pack with settlement, water, and road overlays
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.