# Notes Just a place to store arbitrary information, TODOs and so on. Maybe, it is concept for later documentation, or just keep-up-the-good-work (`kutgw`). ## Ideas ### General - Implement graph as server, which can execute queries from clients (e.g. via channels). - Building needs much more memory for `Germany.pbf` (~ `14 GB`) due to sc-edges and meta-info. When creating metrics, memory-consumption shrinks to `10/11 GB` and lower, probably because these values are released. It could make sense to implement simple (de-)serialization for the graph (`map-file.rfmi`, standing for `raw fmi`). - Write __working-off chunks__ in builder in separate function using `From` or `Into` - Use population-data to get routes - Maybe use [realistic src-dst-routes][acm/micro-travel-demand] ([GitHub-repo][github/vbuchhold/routing-framework]) - Set population of specific spots and interpolate somehow - [worldometers][worldometers/germany] - [German Federal Statistical Office][destatis] - [different population-data of Baden-Württemberg][statistik-bw] - [different population-data of Germany, but per mini-square][atlas.zensus2011.de] - Zensus: `10 %` of population every 10 years - Mikrozensus: `1 %` of population every year - [area-statistics (e.g. traffic-area in percent)][statistikportal] - Get population from osm-data - Take nodes/ways and distribute according to max-speed (low speed <-> high population-density). - Take city-level and let routes go from lower to higher levels. - Reduce visibility of modules and control public-access, e.g. of module `defaults`, which is only needed in tests. - Mention and explain cargo-features somewhere. ### Build-script \- ### Documentation - Write down alternative implementation-approaches - Routing from src-node to dst-node where dst-node has at least the city-level of the src-node. ### Extend tests - extend routing-tests - implement routing-tests for parsed pbf-files (just comparing src-id, dst-id and distance) - Take results from actions of commit f28d88a for parsing-tests (fmi). - Test personalized routing explicitly using certain alpha-values and new expected paths. - How to test exploration? - Create graph of 2 nodes and 8 edges, where 3 edges are dominated by the others. - At least `2d + 1` edges are needed. - Test restriction(?) - Test created route-files. - Test edge-ids (especially parsing). - Write config-tests without checking content, so configs can be checked automatically. ### Extend configs - Warn user when parsing `pbf`-map, if unused categories are provided in the config. - Write parser __parsing all configs__ at once. - Cleanup `kebab-cases` and `snake_cases` etc. - Check if writing-cfg contains shortcut-indices when `is_ch-graph == false`. - Some configs are damaged! ### Extend parsing - Use __preprocessing-phase__ for `pbf`-parser to count edges and __allocate memory__ accordingly. - Print __edit-link__ for weird osm-content (in addition to currently printed warnings). - __Parse lanes__ (currently, default is used). - tags: `lanes`, `lanes:backward` (`way-id: 33172848`) ### Extend routing \- ### Extend balancing - Update route-counts of shortcuts after updating normal edges. - Flatten the found routes after the loops and cumulate all workloads for sc-edges at once. This reduces the access to edges. - Use `ch-constructor` (written in `c/cpp`) as binary or build wrapping rust-crate? ## Info - [C with Rust][rust-docs/c-with-rust] - [OSM-tags][taginfo] - serde-yaml - `https://stackoverflow.com/questions/53243795/how-do-you-read-a-yaml-file-in-rust` - `https://serde.rs/attributes.html` - `https://serde.rs/container-attrs.html` - `https://serde.rs/variant-attrs.html` - `https://serde.rs/field-attrs.html` - `https://serde.rs/enum-representations.html` - `https://docs.rs/serde_yaml/0.8.11/serde_yaml/` - Mapviewer-libs - actix-web (Rust) - [leafletjs (JavaScript)][leafletjs] - [Marble (C++ or python)][kde/marble] - [JMapViewer (Java)][osm/wiki/jmapviewer] ### License [When is a program and its plug-ins considered a single combined program?][gnu/licenses/gpl-faq/gplplugins] [acm/micro-travel-demand]: https://dl.acm.org/doi/10.1145/3347146.3359361 [atlas.zensus2011.de]: https://atlas.zensus2011.de/ [destatis]: https://www.destatis.de/DE/Service/Statistik-Visualisiert/RegionalatlasAktuell.html [github/vbuchhold/routing-framework]: https://github.com/vbuchhold/routing-framework [gnu/licenses/gpl-faq/gplplugins]: https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins [kde/marble]: http://api.kde.org/4.x-api/kdeedu-apidocs/marble/html/namespaceMarble.html [leafletjs]: https://leafletjs.com/ [osm/wiki/jmapviewer]: https://wiki.openstreetmap.org/wiki/JMapViewer [rust-docs/c-with-rust]: https://rust-embedded.github.io/book/interoperability/c-with-rust.html [statistik-bw]: https://www.statistik-bw.de/Intermaptiv/?re=gemeinde&ags=08317057&i=01202&r=0&g=0001&afk=5&fkt=besetzung&fko=mittel [statistikportal]: https://www.statistikportal.de/de/flaechenatlas [taginfo]: https://taginfo.openstreetmap.org/ [worldometers/germany]: https://www.worldometers.info/world-population/germany-population/