Merge pull request #662 from afischerdev/docs

Updated service, osmand doc, added docker doc
This commit is contained in:
afischerdev 2024-02-19 16:51:34 +01:00 committed by GitHub
commit 47ee77bc35
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 189 additions and 5 deletions

View file

@ -39,19 +39,52 @@ Please note: when they have a parameter 'weight' the result is not an absolute n
This parameters are needed to tell BRouter what to do. This parameters are needed to tell BRouter what to do.
### using profiles
For calulation BRouter uses a set of rules defined in a profile. See description of profile [rules](https://github.com/abrensch/brouter/blob/master/docs/developers/profile_developers_guide.md).
Here we talk about how we let BRouter know witch profile to use.
There are three ways:
1. use the parameter 'v' and 'fast'
```
"v"-->[motorcar|bicycle|foot]
"fast"-->[0|1]
This enables BRouter to look into the file serviceconfig.dat.
In there BRouter find the profile associated for e.g bicyle_fast trekking
This could be changed by the user calling the BRouter app server-mode.
```
2. use the profile parameter
```
profile=trekking
It needs an available file in the BRouter profile folder e.g. trekking.brf
```
3. use a remote profile
```
remoteProfile=a long string with routing rules
This is saved in BRouter profile folder temporary with the file name 'remote.brf'
```
### profile parameter ### profile parameter
Profile parameters affect the result of a profile. Profile parameters affect the result of a profile.
The variables inside a profile predefine a value e.g. avoidsteps=1
A parameter call gives the chance to change this start value without changing the profile e.g. avoidsteps=0
For the app it is a list of params concatenated by '&'. E.g. extraParams=avoidferry=1&avoidsteps=0 For the app it is a list of params concatenated by '&'. E.g. extraParams=avoidferry=1&avoidsteps=0
The server calls profile params by a prefix 'profile:'. E.g. ...&profile:avoidferry=1&profile:avoidsteps=0 The server calls profile params by a prefix 'profile:'. E.g. ...&profile:avoidferry=1&profile:avoidsteps=0
By using this parameter logic, there is no need to edit a profile before sending.
### using profile parameter inside an app ### using profile parameter inside an app
To be flexible it is possible to send a profile to BRouter - server or app. To be flexible it is possible to send a profile to BRouter - server or app.
Another variant is to send parameters for an existing profile that are different from the original profile. Another variant is to send parameters for an existing profile that are different from the original profile.
With the version 1.7.1 it is possible to collect parameters from the profile. With the version 1.7.1 it is possible to collect parameters from the profile.
The variable parameters are defined like this The variable parameters are defined like this
``` ```
assign avoid_path = false # %avoid_path% | Set to true to avoid pathes | boolean assign avoid_path = false # %avoid_path% | Set to true to avoid pathes | boolean
@ -61,9 +94,9 @@ Now you could do that with an calling app.
What to do to get it work? What to do to get it work?
- First copy the [RoutingParam](brouter-routing-app/src/main/java/btools/routingapp/RoutingParam.java) class to your source - use the same name and package name. - First copy the [RoutingParam](brouter-routing-app/src/main/java/btools/routingapp/RoutingParam.java) class to your source - use the same name and package name.
- Second analyze the profile for which you need the parameter. - Second analyze the profile for which you need the parameter.
This [BRouter routine](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L103) can do that, just copy it to your source to use it in your app. This [BRouter routine](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L103) can do that, just copy it to your source to use it in your app.
It builds a List<RoutingParam> you could send to BRouter app. It builds a List<RoutingParam> you could send to BRouter app.
- You find the call of BRouter app in comment at [RoutingParameterDialog](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L33) - You find the call of BRouter app in comment at [RoutingParameterDialog](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L33)
@ -79,7 +112,7 @@ intent.putExtra("runsilent", true);
startActivity(intent); startActivity(intent);
``` ```
This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog. This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.
### silent app call ### silent app call
@ -92,7 +125,7 @@ intent.putExtra("runsilent", true);
startActivity(intent); startActivity(intent);
``` ```
This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog. This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.
## other routing engine modes in app ## other routing engine modes in app

View file

@ -0,0 +1,125 @@
---
parent: Developers
---
# Docker help
In addition to the intro in readme.md about Docker, here are a few commands for daily work with the system.
Build the Docker with a version based name
```
$ docker build -t brouter-1.7.2 .
```
Start Docker with name additional to the Docker image name.
Please note:
The path for segments are on a Windows system.
Here the port used in server.sh is published.
```
$ docker run --rm -v "I:/Data/test/segment4":/segments4 --publish 17777:17777 --name brouter-1.7.2 brouter-1.7.2
```
and with a mount for profiles as well
```
$ docker run --rm -v "I:/Data/test/segment4":/segments4 -v "I:/Data/test/profiles2":/profiles2 --name brouter-1.7.2 brouter-1.7.2
```
Show the running Docker processes
```
$ docker ps
output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b23518e8791d brouter-1.7.2 "/bin/sh -c /bin/ser…" 5 minutes ago Up 5 minutes 0.0.0.0:17777->17777/tcp brouter-1.7.2
```
Fire some curl or wget commands to test if is realy useful running.
Stop a running Docker image - please note, this only works when starts docker image with name, see above
```
$ docker stop brouter-1.7.2
```
Docker available images
```
$ docker images
output:
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter-1.7.2 latest e39703dec2fa 2 hours ago 410MB
brouter latest 728f122c7388 3 hours ago 410MB
```
Control
## Docker with docker-compose
Use a git clone to build a local folder with last version.
Make a Docker container with version number inside your repository folder.
```
$ docker build -t brouter:1.7.2 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter-1.7.2 latest e39703dec2fa 3 hours ago 410MB
brouter 1.7.2 e39703dec2fa 3 hours ago 410MB
```
Start a container with composer
This needs a docker config file docker-compose.yml
Something like this:
```
version: '2'
services:
brouter:
image: brouter:1.7.2
restart: unless-stopped
ports:
- 17777:17777
volumes:
- type: bind
source: "I:/Data/test/segment4"
target: /segments4
# - type: bind
# source: "I:/Data/test/profiles2"
# target: /profiles2
```
Start it
```
$ docker-compose up -d
```
Have a look what is running
```
$ docker-compose ps
or
$ docker-compose ls
or
$ docker ps
```
Now update your repository (git pull) and build your Docker container with the new version tag
```
$ docker build -t brouter:1.7.3 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter 1.7.3 5edc998cb5ae 3 hours ago 410MB
brouter-1.7.2 latest e39703dec2fa 6 hours ago 410MB
```
Replace the version in Docker config file docker-compose.yml
```
image: brouter:1.7.3
```
Stop old running container and start the new one
```
$ docker-compose down
$ docker-compose up -d
```

View file

@ -67,3 +67,29 @@ application profiles"/>
The BRouter app should be launched before OsmAnd for this specific entry to The BRouter app should be launched before OsmAnd for this specific entry to
appear in OsmAnd. Therefore, if you cannot find "BRouter (offline)" navigation appear in OsmAnd. Therefore, if you cannot find "BRouter (offline)" navigation
option, you should force quit OsmAnd and restart it. option, you should force quit OsmAnd and restart it.
## OsmAnd version 4.7.1
From version 4.7.1 upwards Osmand supports the profile parameter for mapping:
Since Osmand version 3, many profiles can be defined in Osmand and the user can easily switch between these profiles.
This allow now when using the service-interface to address different brouter-profiles in a more flexible and better comprehensive way.
- If in Osmand a profile has "BRouter" defined as navigation service
- AND the profile-name looks like "Brouter[mysting]
==> then the profile "mystring" will be used in the Brouter-app!
(this new mapping replaces in that case the basic mapping defined above and based on the file "serviceconfig.dat)
### Examples: Osmand-profile name Brouter-app
```
[Brouter[trekking] "trekking" profile will be used (file trekking.brf)
[Brouter[racebike] "racebike" profile will be used (file racebike.brf)
....
```
Remark:
Currently Osmand do not check the defined name (case sensitiv) for the Brouter-profile (mystring).
If no profile is found, the routing will fail with "Could not calculate route.."!
<img src="osmand/brouter-osmand-4.7.1.png" alt="BRouter configuration in OsmAnd
application profiles"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB