Data dictionary
islands_canonical.csv
One row per island in the registry (backbone: OneMap island layer).slug— stable registry identifier (<atoll-code>-<normalized-name>)name— official island name (canonical value)dhivehi_name— Dhivehi (Thaana) name where availableatoll_code/atoll_name— administrative atollstatus— inhabited | uninhabited | resort | industrial | airport | agriculturalisland_type— original source category stringuse_category— declared usage (e.g. Resort, Agriculture)lat/lng— decimal degrees (WGS84), converted from source DMSarea_sq_km— land area (OneMapArea_ha/ 100)overall_completeness— 0–100 composite completeness scoreunresolved_conflicts— count of open cross-source conflictslast_updated— last ETL touch (ISO 8601)
islands_all_source_values.csv
The full source-first value store. One row per (island, field, source).island_slug,field_namesource— source slug (see source_registry.csv)raw_value— value exactly as published by the sourcenormalized_value— value after unit/format normalizationis_canonical— whether this row is the displayed valueconfidence_score— 0–1 (includes match confidence)verification_status— unverified | verified | disputed | outdateddate_scraped/date_published/date_verifiedsource_url— direct link to the source recordnotes
Field-name conventions: plain names (
population_total, lat, area_ha) are
normalized registry fields; prefixed names (env :: …, infra :: …,
history :: …, notes :: …, other :: …) preserve the original section and
label from the Atolls of Maldives archive.islands_conflicts.csv
One row per detected cross-source disagreement.conflict_id,island,island_slug,atoll,field_nameconflict_type— value-mismatch | missing-in-source | duplicate | no-census-match | …severity— low | medium | high | criticalstatus— unresolved | under_review | resolved | source_outdated | needs_external_confirmationcanonical_value— currently displayed valuesource_values— JSON array[{source, rawValue, normalizedValue, url, dateScraped, confidence}]confidence_score,reviewer_note,detected_at,reviewed_at
Severity rules: spelling variation → low; population/area/coordinate mismatch → medium (coordinates >5 km → high, >55 km → critical); atoll mismatch or island missing from an official layer → high; same name on different geometry → critical.
population.csv
One row per (island, source) population record.island_slug,island_name,atoll,source,census_yeartotal,male,female,resident_maldivian,householdsfetched_at
atolls.csv
code— administrative code (HA … S, Male)name— administrative namenatural_atoll— traditional/natural atoll nameisland_count
source_registry.csv
slug,name,organization,url,dataset_type,access_method,categorypriority— canonical priority (lower wins): manual 5 → OneMap 10 → Census 20 → StatsMap 30 → indicators 40 → Atolls of Maldives 50license,limitations,archive_path,processing_scriptlast_scrape,last_scrape_status,records_collected,field_values,documents
islands_canonical.geojson
FeatureCollection (WGS84). Polygon geometry from OneMap (point fallback). Properties:slug, name, dhivehiName, atoll, status, areaSqKm,
completeness, conflicts.Database snapshots
registry_snapshot_<date>.sqlite— full SQLite database, usable directly
DATABASE_URL=file:../data/registry.db)
postgres_dump_<date>.sql— PostgreSQL-compatible dump
createdb island_registry && psql island_registry -f <file>)