Flood risk map
Combine historical incidents, rainfall, water levels and site information to identify exposed areas and explain the basis of the risk assessment.
Demonstrate how existing data and sensors can help assess risk, monitor conditions and support action at one pilot location.
POC means proof of concept. Start with a small scope that can be tested and evaluated. Prioritise existing sensors and records; identify additional requirements after reviewing data gaps.
Use Dataran Merdeka as the proposed starting point. Subject to technical confirmation, the study should cover the catchment, drainage, receiving river and assets that influence conditions at the location.
Combine historical incidents, rainfall, water levels and site information to identify exposed areas and explain the basis of the risk assessment.
Map sensors, drains, rivers, pumps where relevant, and affected roads, with identified locations, conditions and data owners.
Bring readings, trends, update times, incidents and review status into one view for management and operations teams.
Confirm the hotspot, area boundary, problem to be tested, intended users and success measures. Identify the coordination team and the owner of each dataset.
Output: a POC scope brief and a record of agreed decisions.
Review the sensor register, coordinates, measurement types, historical records, operational status and access methods. Test sample data for suitable time and location coverage.
Output: a data register, selected sensor list and gaps to address.
Jointly check sensor locations, water routes, drainage, reference levels and critical assets. Match existing records against conditions in the field.
Output: a pilot base map and verified asset inventory.
Connect data through read-only access or approved file imports. Standardise formats, units, timestamps and IDs; prepare the map, dashboard and data quality labels.
Output: a POC view using selected data with traceable sources.
Replay historical events, compare the displays and model with field records, and test missing, delayed or out-of-range readings. Observe live conditions if sensor access is available.
Output: a test report, identified discrepancies and corrections.
Review the acceptance criteria with DBKL. Record benefits, limitations, operating costs and data gaps before deciding whether to accept, improve or expand the POC.
Output: an evaluation report and recommendations for the next phase.
Use when the connection is approved and stable. Show the latest reading time and connection status.
Use for risk mapping and event replay. State the event date and record period.
Use for scenario testing. Clearly label assumptions and distinguish them from actual observations.
Use this list for the initial review. Confirm each dataset’s availability, owner, accuracy and permitted use before integration.
| Requirement | Key information | Format / access | Source coordination |
|---|---|---|---|
| Location scope | Pilot boundary, incident points, relevant catchments, receiving river and affected roads. | GIS map or plan with coordinates; GeoJSON, SHP or KML where available. | DBKL and relevant geospatial data owners. |
| Sensor register | ID, coordinates, measurement type, unit, reporting interval, owner, operational status, maintenance and calibration records. | CSV / Excel; technical documentation and station list. | DBKL, sensor owners and relevant system providers. |
| Readings & connections | Sensor ID, value, timestamp, time zone, unit, quality flag, reference level and station-specific thresholds where available. | Read-only API / CSV or JSON export. Start with 7–30 days of sample data where available. | Data owners and the source system’s technical team. |
| Incident records | Date, start / recession times, location, recorded depth or extent, photographs, impacts and actions. Match rainfall and water levels for the same period. | CSV / Excel / GIS; supporting reports. Aim for 3–5 years where available. | DBKL; JPS and MetMalaysia for related records, subject to confirmed access. |
| Assets & topography | Drains, rivers, ponds, pumps where relevant, dimensions, capacity, flow direction, ground / bed levels, condition and discharge locations. | GIS, technical plans, elevation models or survey records with coordinate systems and datums. | DBKL, JPS and relevant asset / plan owners. |
| Operating procedures | Incident status definitions, approved thresholds, field verification methods, follow-up actions and closure evidence. | Operating procedures, sample reports and existing status formats. | DBKL operations teams and relevant agencies. |
| Party | Main role | Required output |
|---|---|---|
| DBKL | Confirm the location, scope, operational use, data access and acceptance evaluation. | Agreed scope, selected data and operational feedback. |
| Data owners & technical teams | Provide samples, metadata, access and explanations of data quality and limitations. Involve JPS / MetMalaysia according to the required datasets. | Usable datasets, documentation and update methods. |
| Implementation team | Organise data, develop integrations, prepare maps and the dashboard, and conduct joint testing. | A working POC, test logs, user guidance and an evaluation report. |
| Operations & field teams | Verify assets and incidents, trial workflows and record differences between the displays and site conditions. | Field evidence, action records and improvement recommendations. |
| Relevant coordinating agencies | Support cross-agency coordination, including JWP where required under the agreed governance arrangements. | Resolution of data-sharing issues and follow-up decisions. |
A planning estimate after the scope, access and initial data samples are confirmed. Actual duration depends on data quality, integration conditions and joint review times.
Confirm the location, data register, success measures and site checks.
Clean data and build integrations, the GIS inventory, initial risk map and dashboard.
Replay events, review live data where available and verify operational workflows.
Assess acceptance, hand over documentation and agree follow-up requirements.
Finalise numerical targets, tolerances and test periods after reviewing sample data. Acceptance must be supported by evidence that can be reviewed jointly.
| Aspect | Proposed acceptance criteria | Review evidence |
|---|---|---|
| Data integrity | All sources within scope have identified IDs, locations, units, timestamps and owners. Gaps and questionable readings are flagged. | Data register, sample source matches and a quality report. |
| Updates | Readings are displayed at the agreed intervals. Delays, connection interruptions and recovery can be identified. | Source / display timestamp logs and disconnection test records. |
| Maps & assets | Hotspots, assets and sensors within scope are matched to verified locations. The basis and limitations of risk categories are explained. | Review maps, GIS inventory and field verification. |
| Model & events | Replay at least one event with sufficient records. If the model is calibrated, use another event for independent evaluation where available; report errors and limitations. | Comparisons of available timing, levels / impacts and agreed tolerances. Model validation remains limited where data are insufficient. |
| Operational usefulness | Users can identify locations, read trends, distinguish actual data from simulation and record follow-up actions for a sample incident. | User test scenarios and operations team feedback. |
| Handover & decisions | Documentation, limitations, open issues and operating requirements are handed over. Jointly record the decision to accept, improve or expand the POC. | Evaluation report, quick guide and follow-up action list. |
Agree on Dataran Merdeka or an alternative location based on data suitability, water-flow connections and operational use.
Collect the sensor list, sample readings, asset maps and matching incident records. Include owners, formats and access methods.
Identify sources that can be connected, data gaps, sensor coverage, reference levels and field verification methods.
Record the scope, outputs, schedule, roles, agreed costs, access methods and acceptance criteria before integration development starts.
A reference to help data owners and technical teams prepare information in a consistent format. Each category includes sample values, a JSON structure and a downloadable file.
| Category | Sample data | Key fields |
|---|---|---|
| River | RIV-DEMO-001 · width 18 m | ID, alignment, flow direction, cross-sections, datum and sensor / downstream connections. |
| Drain / drainage | DRN-DEMO-001 · 1.2 m × 1.0 m | ID, alignment, dimensions, invert levels, material, downstream connection and blockage inspections. |
| Water-level sensor | WL-DEMO-001 · elevation 26.4 m; gauge height 2.4 m | Sensor ID, monitored asset, coordinates, unit, datum, gauge zero, timestamp and quality. |
| Rain gauge | RG-DEMO-001 · 4 mm in 5 minutes | ID, coordinates, resolution, reporting interval, interval rainfall, intensity and accumulated totals. |
| Weather & forecasts | WX-DEMO-001 · 27.5 °C; humidity 88% | Coverage location, temperature, humidity, wind and observation time; forecast issue and validity times. |
| Pump house | PMP-DEMO-001 · 2 pumps; current flow 0.30 m³/s | Pump house and pump unit IDs, intake / discharge locations, capacity, status, flow and power supply. |
| Retention pond | PND-DEMO-001 · capacity 6,000 m³ | Boundary, capacity, bed level, datum, stage–storage curve, inlets and outlets. |
| Culvert | CUL-DEMO-001 · single box opening | Alignment, shape, opening dimensions, barrel count, length, inlet / outlet levels and connections. |
| Catchment | CAT-DEMO-001 · 49,200 m² | Boundary, area, impervious surfaces, slope, reference rain gauge and outlet. |
| Exposed road | RD-DEMO-001 · two lanes | Road ID, alignment, low-point elevation, datum, drainage connections and route importance. |
| Flood incident | INC-DEMO-001 · depth 0.18 m; duration 50 minutes | Incident ID, location, start / recession times, depth, affected area, assets, actions and evidence. |
assets stores asset information and geometry; observations stores readings over time. Match them using asset_id. Forecasts use forecasts; incidents use incidents.[longitude, latitude] order. Use points for sensors / pumps, lines for rivers / drains and polygons for ponds / catchments. Reference: GeoJSON, RFC 7946.2026-09-11T14:00:00+08:00. observed_at is the reading time; received_at is the receipt time. Forecasts have their own issue times and validity periods.null for unknown values. Never replace missing readings with zero. Retain source_id, source_record_id and quality_flag; set delay thresholds according to actual reporting intervals.source_id and source_record_id pair; retain changes as versions / audit logs when a source corrects a record.Cross-sections and boundary conditions are required for modelling. This single example cross-section is insufficient for an actual hydraulic model.
Download river (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "RIV-DEMO-001",
"geometry": {
"type": "LineString",
"coordinates": [
[
101.6955,
3.1518
],
[
101.6956,
3.1508
],
[
101.6957,
3.1498
]
]
},
"properties": {
"asset_id": "RIV-DEMO-001",
"asset_type": "river",
"name": "Example river segment",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"flow_direction": "coordinate_order_upstream_to_downstream",
"length_m": 223,
"typical_width_m": 18.0,
"roughness_manning_n": 0.035,
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"cross_sections": [
{
"section_id": "XS-DEMO-001",
"chainage_m": 111,
"profile": [
{
"offset_m": 0,
"elevation_m": 28.8
},
{
"offset_m": 3,
"elevation_m": 24.0
},
{
"offset_m": 15,
"elevation_m": 24.0
},
{
"offset_m": 18,
"elevation_m": 28.8
}
]
}
],
"water_level_sensor_ids": [
"WL-DEMO-001"
],
"downstream_boundary": {
"type": "external_outlet",
"boundary_id": "BOUNDARY-DEMO-OUTLET",
"water_level_series_id": null,
"status": "requires_verified_boundary_data"
}
}
}
]
},
"observations": [],
"forecasts": [],
"incidents": []
}
The blockage percentage is an inspection estimate, not a sensor reading. Example connection: drain → culvert → pond.
Download drain / drainage (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "DRN-DEMO-001",
"geometry": {
"type": "LineString",
"coordinates": [
[
101.6928,
3.1502
],
[
101.6936,
3.1502
]
]
},
"properties": {
"asset_id": "DRN-DEMO-001",
"asset_type": "drain",
"name": "Example drain A",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"upstream_catchment_id": "CAT-DEMO-001",
"downstream_asset_id": "CUL-DEMO-001",
"flow_direction": "coordinate_order_upstream_to_downstream",
"length_m": 89,
"section_shape": "rectangular",
"width_m": 1.2,
"internal_depth_m": 1.0,
"material": "concrete",
"roughness_manning_n": 0.015,
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"upstream_invert_elevation_m": 25.6,
"downstream_invert_elevation_m": 25.2
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-DRN-001",
"asset_id": "DRN-DEMO-001",
"source_record_id": "OBS-DEMO-DRN-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"blockage_estimate": {
"value": 20,
"unit": "percent",
"method": "visual_estimate"
},
"sediment_depth": {
"value": 0.1,
"unit": "m"
}
},
"observation_type": "field_inspection",
"condition": "requires_cleaning"
}
],
"forecasts": [],
"incidents": []
}
The 26.4 m elevation uses a fictional local datum. Gauge height is 26.4 − 24.0 = 2.4 m; it is not flood depth above the road. The thresholds are fictional and unapproved.
Download water-level sensor (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "WL-DEMO-001",
"geometry": {
"type": "Point",
"coordinates": [
101.6956,
3.1508
]
},
"properties": {
"asset_id": "WL-DEMO-001",
"asset_type": "water_level_sensor",
"name": "Example water-level sensor",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"monitored_asset_id": "RIV-DEMO-001",
"sensor_type": "radar",
"measurement": "water_surface_elevation",
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"reporting_interval_seconds": 300,
"last_calibrated_at": null,
"calibration_status": "not_verified",
"gauge_zero_elevation_m": 24.0,
"thresholds": {
"metric": "water_surface_elevation",
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"alert": 27.0,
"warning": 28.0,
"danger": 28.5,
"approval_status": "illustrative_not_approved"
}
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-WL-001",
"asset_id": "WL-DEMO-001",
"source_record_id": "OBS-DEMO-WL-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"water_surface_elevation": {
"value": 26.4,
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM"
},
"gauge_height": {
"value": 2.4,
"unit": "m",
"gauge_zero_elevation_m": 24.0,
"vertical_datum_id": "DEMO-LOCAL-DATUM"
},
"battery_voltage": {
"value": 12.4,
"unit": "V"
}
},
"observation_type": "sensor_reading",
"monitored_asset_id": "RIV-DEMO-001"
}
],
"forecasts": [],
"incidents": []
}
4 mm in 5 minutes equals an average intensity of 48 mm/h for that interval; it does not mean 48 mm fell over an hour. Each total has its own period.
Download rain gauge (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "RG-DEMO-001",
"geometry": {
"type": "Point",
"coordinates": [
101.6932,
3.1512
]
},
"properties": {
"asset_id": "RG-DEMO-001",
"asset_type": "rain_gauge",
"name": "Example rain gauge",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"sensor_type": "tipping_bucket",
"resolution_mm": 0.2,
"reporting_interval_seconds": 300,
"last_calibrated_at": null,
"calibration_status": "not_verified"
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-RG-001",
"asset_id": "RG-DEMO-001",
"source_record_id": "OBS-DEMO-RG-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"rainfall_interval": {
"value": 4.0,
"unit": "mm",
"period_start": "2026-09-11T13:55:00+08:00",
"period_end": "2026-09-11T14:00:00+08:00"
},
"rainfall_intensity": {
"value": 48.0,
"unit": "mm/h",
"averaging_period_seconds": 300,
"method": "interval_mm_times_3600_divided_by_seconds"
},
"rainfall_last_hour": {
"value": 23.4,
"unit": "mm",
"period_start": "2026-09-11T13:00:00+08:00",
"period_end": "2026-09-11T14:00:00+08:00"
},
"rainfall_since_midnight": {
"value": 31.2,
"unit": "mm",
"period_start": "2026-09-11T00:00:00+08:00",
"period_end": "2026-09-11T14:00:00+08:00"
}
},
"observation_type": "sensor_reading",
"interval_boundary": "start_exclusive_end_inclusive"
}
],
"forecasts": [],
"incidents": []
}
Observations and forecasts are listed separately. The example 70% rain probability is not a rainfall amount. This is not an official MetMalaysia API response.
Download weather & forecasts (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "WX-DEMO-001",
"geometry": {
"type": "Point",
"coordinates": [
101.6932,
3.1512
]
},
"properties": {
"asset_id": "WX-DEMO-001",
"asset_type": "weather_station",
"name": "Example weather station",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"reporting_interval_seconds": 600
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-WX-001",
"asset_id": "WX-DEMO-001",
"source_record_id": "OBS-DEMO-WX-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"air_temperature": {
"value": 27.5,
"unit": "degC"
},
"relative_humidity": {
"value": 88,
"unit": "percent"
},
"wind_speed": {
"value": 2.8,
"unit": "m/s"
},
"wind_direction_from": {
"value": 240,
"unit": "degree_true_north"
},
"air_pressure": {
"value": 1008.2,
"unit": "hPa"
}
},
"observation_type": "weather_observation",
"condition_code": "rain"
}
],
"forecasts": [
{
"forecast_id": "FC-DEMO-001",
"site_id": "POC-DEMO-DM",
"coverage_asset_id": "CAT-DEMO-001",
"source_id": "SOURCE-DEMO",
"data_mode": "synthetic_example",
"issued_at": "2026-09-11T13:00:00+08:00",
"valid_from": "2026-09-11T14:00:00+08:00",
"valid_to": "2026-09-11T17:00:00+08:00",
"condition_code": "rain",
"rain_probability_percent": 70,
"official_warning": null,
"quality_flag": "example_unverified"
}
],
"incidents": []
}
Installed capacity of 0.70 m³/s differs from the current flow of 0.30 m³/s. One pump is running and one is on standby. This telemetry example is not a pump control command.
Download pump house (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "PMP-DEMO-001",
"geometry": {
"type": "Point",
"coordinates": [
101.6942,
3.1503
]
},
"properties": {
"asset_id": "PMP-DEMO-001",
"asset_type": "pump_house",
"name": "Example pump house",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"intake_asset_id": "PND-DEMO-001",
"discharge_asset_id": "RIV-DEMO-001",
"discharge_location": {
"type": "Point",
"coordinates": [
101.6956,
3.1508
]
},
"power_supply": "grid_with_backup_generator",
"rated_total_capacity_m3_s": 0.7,
"pumps": [
{
"pump_id": "PUMP-DEMO-A",
"rated_flow_m3_s": 0.35,
"rated_head_m": 5.0
},
{
"pump_id": "PUMP-DEMO-B",
"rated_flow_m3_s": 0.35,
"rated_head_m": 5.0
}
],
"control_access": "read_only_for_poc"
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-PMP-001",
"asset_id": "PMP-DEMO-001",
"source_record_id": "OBS-DEMO-PMP-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"intake_water_surface_elevation": {
"value": 24.2,
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM"
},
"receiving_water_surface_elevation": {
"value": 26.4,
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM"
},
"total_discharge_flow": {
"value": 0.3,
"unit": "m3/s"
},
"total_dynamic_head": {
"value": 4.5,
"unit": "m"
}
},
"observation_type": "pump_telemetry",
"operating_mode": "automatic",
"power_status": "available",
"alarm_codes": [],
"pump_statuses": [
{
"pump_id": "PUMP-DEMO-A",
"status": "running",
"discharge_flow_m3_s": 0.3
},
{
"pump_id": "PUMP-DEMO-B",
"status": "standby",
"discharge_flow_m3_s": 0.0
}
]
}
],
"forecasts": [],
"incidents": []
}
Example storage of 2,400 m³ leaves 3,600 m³ available. The polygon is schematic; replace the area and capacity curve with actual survey data.
Download retention pond (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "PND-DEMO-001",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
101.694,
3.15
],
[
101.6944,
3.15
],
[
101.6944,
3.1504
],
[
101.694,
3.1504
],
[
101.694,
3.15
]
]
]
},
"properties": {
"asset_id": "PND-DEMO-001",
"asset_type": "retention_pond",
"name": "Example retention pond",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"surface_area_at_full_supply_m2": 2000,
"storage_capacity_m3": 6000,
"geometry_note": "Footprint schematic; example hydraulic area is not computed from this polygon.",
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"bottom_elevation_m": 23.0,
"full_supply_elevation_m": 26.0,
"inlet_asset_ids": [
"CUL-DEMO-001"
],
"outlet_asset_ids": [
"PMP-DEMO-001"
],
"stage_storage_curve": [
{
"water_surface_elevation_m": 23.0,
"storage_m3": 0
},
{
"water_surface_elevation_m": 24.2,
"storage_m3": 2400
},
{
"water_surface_elevation_m": 26.0,
"storage_m3": 6000
}
],
"spillway": {
"crest_elevation_m": 26.0,
"width_m": 2.0,
"destination_asset_id": "RIV-DEMO-001",
"status": "illustrative_unverified"
}
}
}
]
},
"observations": [
{
"observation_id": "OBS-DEMO-PND-001",
"asset_id": "PND-DEMO-001",
"source_record_id": "OBS-DEMO-PND-001",
"source_id": "SOURCE-DEMO",
"observed_at": "2026-09-11T14:00:00+08:00",
"received_at": "2026-09-11T14:00:05+08:00",
"data_mode": "synthetic_example",
"quality_flag": "example_unverified",
"measurements": {
"water_surface_elevation": {
"value": 24.2,
"unit": "m",
"vertical_datum_id": "DEMO-LOCAL-DATUM"
},
"stored_volume": {
"value": 2400,
"unit": "m3",
"method": "example_stage_storage_curve"
},
"available_storage": {
"value": 3600,
"unit": "m3",
"method": "capacity_minus_stored_volume"
}
},
"observation_type": "derived_asset_state"
}
],
"forecasts": [],
"incidents": []
}
The culvert connects drainage to the pond in this fictional network. Actual capacity cannot be determined from width alone.
Download culvert (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "CUL-DEMO-001",
"geometry": {
"type": "LineString",
"coordinates": [
[
101.6936,
3.1502
],
[
101.694,
3.1502
]
]
},
"properties": {
"asset_id": "CUL-DEMO-001",
"asset_type": "culvert",
"name": "Example culvert",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"upstream_asset_id": "DRN-DEMO-001",
"downstream_asset_id": "PND-DEMO-001",
"flow_direction": "coordinate_order_upstream_to_downstream",
"section_shape": "box",
"barrel_count": 1,
"internal_width_m": 1.2,
"internal_height_m": 1.0,
"length_m": 44,
"roughness_manning_n": 0.015,
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"inlet_invert_elevation_m": 25.2,
"outlet_invert_elevation_m": 25.1,
"flap_gate_present": false
}
}
]
},
"observations": [],
"forecasts": [],
"incidents": []
}
The runoff coefficient and water travel time are uncalibrated example assumptions. Actual catchment mapping must be based on topography and drainage.
Download catchment (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "CAT-DEMO-001",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
101.6918,
3.1498
],
[
101.6938,
3.1498
],
[
101.6938,
3.1518
],
[
101.6918,
3.1518
],
[
101.6918,
3.1498
]
]
]
},
"properties": {
"asset_id": "CAT-DEMO-001",
"asset_type": "catchment",
"name": "Example catchment",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"area_m2": 49200,
"area_basis": "rounded_schematic_polygon_area",
"impervious_area_percent": 78,
"mean_slope_percent": 1.2,
"rainfall_gauge_id": "RG-DEMO-001",
"outlet_asset_id": "DRN-DEMO-001",
"runoff_model_parameters": {
"method": "illustrative_runoff_coefficient",
"runoff_coefficient": 0.75,
"travel_time_minutes": 10,
"calibration_status": "not_calibrated"
}
}
}
]
},
"observations": [],
"forecasts": [],
"incidents": []
}
Road elevation allows water depth to be interpreted when the levels use the same reference. Route status must be verified by the operations team.
Download exposed road (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "RD-DEMO-001",
"geometry": {
"type": "LineString",
"coordinates": [
[
101.6928,
3.15
],
[
101.6936,
3.15
]
]
},
"properties": {
"asset_id": "RD-DEMO-001",
"asset_type": "road_segment",
"name": "Example road segment",
"site_id": "POC-DEMO-DM",
"data_mode": "synthetic_example",
"data_owner": null,
"verification_status": "unverified_example",
"source_id": "SOURCE-DEMO",
"updated_at": "2026-09-11T14:00:00+08:00",
"length_m": 89,
"lane_count": 2,
"critical_access": false,
"drainage_asset_ids": [
"DRN-DEMO-001"
],
"vertical_datum_id": "DEMO-LOCAL-DATUM",
"low_point_elevation_m": 26.2,
"survey_status": "not_surveyed"
}
}
]
},
"observations": [],
"forecasts": [],
"incidents": []
}
The example incident is dated 1 September; the other sample sensor readings dated 11 September are not matched to it. Records from the actual event period are needed for historical testing.
Download flood incident (.json){
"schema_version": "proposed-poc-1.0",
"data_mode": "synthetic_example",
"disclaimer": "All asset names, locations, dimensions, thresholds, readings and forecasts are fictional examples of the format. They are not actual DBKL/JPS/MetMalaysia inventory records, sensor readings or forecasts. This is not an official agency API contract.",
"site": {
"site_id": "POC-DEMO-DM",
"name": "Dataran Merdeka — example POC context",
"status": "proposed_pilot_not_confirmed"
},
"metadata": {
"source_id": "SOURCE-DEMO",
"source_name": "Synthetic dataset for the POC guide",
"coordinate_reference": "WGS84",
"coordinate_order": [
"longitude",
"latitude"
],
"timezone": "Asia/Kuala_Lumpur",
"vertical_datum": {
"id": "DEMO-LOCAL-DATUM",
"name": "Fictional local datum; not an official reference level",
"verified": false
},
"null_policy": "null means unknown or unavailable; never replace missing readings with zero",
"cross_references": "Related asset IDs may be in other examples; use the combined file for all IDs."
},
"assets": {
"type": "FeatureCollection",
"features": []
},
"observations": [],
"forecasts": [],
"incidents": [
{
"incident_id": "INC-DEMO-001",
"site_id": "POC-DEMO-DM",
"source_id": "SOURCE-DEMO",
"source_record_id": "INC-DEMO-001",
"data_mode": "synthetic_example",
"incident_type": "surface_flooding",
"geometry": {
"type": "Point",
"coordinates": [
101.693,
3.15
]
},
"reported_at": "2026-09-01T15:35:00+08:00",
"started_at": "2026-09-01T15:20:00+08:00",
"receded_at": "2026-09-01T16:10:00+08:00",
"max_depth": {
"value": 0.18,
"unit": "m",
"reference": "local_road_surface"
},
"affected_area": {
"value": 300,
"unit": "m2",
"method": "field_estimate"
},
"affected_asset_ids": [
"RD-DEMO-001",
"DRN-DEMO-001"
],
"verification_status": "example_unverified",
"status": "closed_example",
"rainfall_observation_ids": [],
"water_level_observation_ids": [],
"matching_event_data_status": "required_for_historical_replay",
"actions": [
{
"action_id": "ACTION-DEMO-001",
"action_type": "drain_inspection",
"recorded_at": "2026-09-01T15:50:00+08:00",
"status": "completed_example",
"note": "Example drainage inspection note."
}
],
"evidence_files": []
}
]
}