osm2lanes icon indicating copy to clipboard operation
osm2lanes copied to clipboard

Default speed limits via `westnordost/osm-legal-default-speeds`

Open tordans opened this issue 2 years ago • 3 comments

For those cases where no maxspeed is given, osm2lanes could test out https://github.com/westnordost/osm-legal-default-speeds to get a set of default speed limits per country.

Unfortunately that would only work if no maxspeed is given; otherwise osm2lanes would need to compare what is received (or interpreted) from OSM with what the library responds with and try to merge both, which I image would be hard given the complexity of the table that the library relies on.

tordans avatar Aug 16 '22 10:08 tordans

Thanks for forwarding!

If maxspeed is explicitly given, we could probably trust it. Maybe in the eventual web editor interface, we could warn if the tagged value disagrees significantly with the legal default.

We may have to figure out how to actually call this library, but it runs natively and on web, so it should be possible. Or maybe we just consume https://github.com/westnordost/osm-legal-default-speeds/blob/master/demo/distribution/legal_default_speeds.json (or rather, use the Python script to generate up-to-date values)

dabreegster avatar Aug 16 '22 10:08 dabreegster

Unfortunately that would only work if no maxspeed is given

Reverse search is implemented too: https://westnordost.github.io/osm-legal-default-speeds/#tags=maxspeed%3D100&cc=DE

Or maybe we just consume https://github.com/westnordost/osm-legal-default-speeds/blob/master/demo/distribution/legal_default_speeds.json

So in other words, port the code that interprets that JSON (to Rust) (?)

Possible, it is about ~1000 lines of code (without test code).

About 700 lines of code is the parsing of the filter expression syntax as used in the second table on the wiki page, the rest is the matching logic.

However, the library should be callable from native code as Kotlin can be compiled to native. Though, I have never tried it and don't know what it would take to do that.

westnordost avatar Sep 02 '22 08:09 westnordost

However, the library should be callable from native code as Kotlin can be compiled to native. Though, I have never tried it and don't know what it would take to do that.

We'd also need to compile to WASM to run in web browsers, but this should work too. It's more a question of how much it complicates the build process to have non-Rust dependencies. I can investigate this when I find more time to focus on osm2lanes

dabreegster avatar Sep 02 '22 08:09 dabreegster