| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| example_input.json | ||
| README.md | ||
Pipeline route calculation
A function that exposes the pipeline route calculations.
The pipeline route can be defined by various means
kmlroute filekmzroute filecsvof 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:
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
org_id: as string which should be a validuuidfor the organizationproject_id: the id of the data project where the pipeline data is foundelevation_provider: astringvalue should be one of the following typesmapboxgoogle_mapsopen_elevation
pipeline_id: anarrayofstringswhich should each be a valid uuid representing a pipeline.route_file: anarrayofobjectscontaining 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.
Creating the function on the platform
To create this function on the platform using the cli set up the port forwarding as shown in README.
Then run the following command to create the function.
cargo run functions create \
-f functions/pipeline_route \
-d "Processes a pipeline route KML/KMZ/CSV file and creates the pipeline route sequence" \
-i org_id=string \
-i project_id=string \
-i elevation_provider=string \
-i pipeline_id=array \
-i route_file=array
Testing the function locally
You can run and test the function locally by running
cargo run
Then you can check it work with curl as follows
curl localhost:8080 -d $(jq '. | tojson' functions/pipeline_route/example_input.json)