50c2f66d8bc2464daea35b6b41d.../README.md
2025-04-25 08:02:47 +00:00

68 lines
2.5 KiB
Markdown

# Pipeline route calculation
A function that exposes the pipeline route calculations.
The pipeline route can be defined by various means
- `kml` route file
- `kmz` route file
- `csv` of the x,y, and optionally z coordinates of the pipeline.
If the elevation is missing, we utilise one of the following services to obtain
the elevation of each waypoint on the pipeline.
- Google maps
- Map box
- Open elevation
This function implements the calculation of this following part of the BPML:
```mermaid
flowchart LR
Start((Start))
Start --> KML{User upload .kml or .csv?}
KML -->|.kml| V("Calculate pipeline measures (Vincenty's Method) - Calculation #2")
KML -->|.csv| POS{Is position in UTM or Lat/Lon?}
POS -->|UTM| PROJ(Poject to Lat/Lon - Calculation #3)
PROJ --> MEAS
POS -->|Lat/Lon| MEAS{Does the file contain the measure?}
MEAS -->|no| V
MEAS -->|yes| Done
V --> Done((Done))
```
## Input
### Arguments
- `elevation_provider`: a `string` value should be one of the following types
- `mapbox`
- `google_maps`
- `open_elevation`
- `pipeline_id`: an `array` of `strings` which should each be a valid uuid representing a pipeline.
- `route_file`: an `array` of `objects` containing the details of the uploaded file.
Note the pipeline_id array and route_file array should be the length such that
the first entry in each array corresponds to one another.
### Environment
- `ORG_ID`: the organization id
- `PROJECT_ID`: the id of the data project where the pipeline data is found
- `ENV`: the environment of the platform e.g. `dev` or `stg` etc.
## Testing the function locally
You can run and test the function locally by running
```bash
cargo run
```
Then you can check it work with `curl` as follows
```bash
curl -X POST localhost:8080 -v \
-d "\"{\\\"elevation_provider\\\": \\\"open_elevation\\\", \\\"formData\\\": {\\\"elevationProvider\\\": \\\"open_elevation\\\", \\\"pipeline_datasetIds\\\": \\\"\\\", \\\"pipeline_organizationId\\\": \\\"2cbfe270-d195-48ad-aed1-24145924635c\\\", \\\"pipeline_resourceClientIds\\\": [], \\\"pipeline_resourceIds\\\": [], \\\"pipeline_resourceTypeId\\\": null, \\\"pipeline_workspaceId\\\": null, \\\"routeFile\\\": [{\\\"fileId\\\": \\\"a97c1871-b6b2-4ea0-8a04-43ae4c7d76e3\\\", \\\"revisionId\\\": \\\"975b4034-aad1-4e12-b531-fb0cf0b6f255\\\"}]}, \\\"input\\\": null, \\\"pipeline_id\\\": [\\\"0195a527-f16b-7d83-b936-35bc2dd92f9d\\\"], \\\"route_file\\\": [{\\\"fileId\\\": \\\"a97c1871-b6b2-4ea0-8a04-43ae4c7d76e3\\\", \\\"revisionId\\\": \\\"975b4034-aad1-4e12-b531-fb0cf0b6f255\\\"}]}\""
```