Version: [6478] roadnetwork 0.6.0

Version 0.6.0:

**Highlights**

* **GPS tracks**: snap a GPS track, for example from a GPX file, on
the road graph,
and get the references of each road it follows (new SQL functions)
* **Performance**: the calculation of the references is about 9 times
faster for the edges,
and about 3.5 times faster for the managed objects
* **Road graph editing**: the field `no_intersection_cutting` is
respected by all the trigger functions,
drawing an edge across a highway interchange no longer hangs, and no
orphan node is created anymore
* **Managed objects**: new functions to add the reference fields and
the triggers calculating the references,
materialized view of the last updated objects, and fixed split of a
line by a point in Lizmap
* **Documentation**: reorganized and completed: Processing algorithms,
tables and fields, functions examples,
demo database, toolbar and panels, training plan

**Upgrade notes**

* Run the algorithm `Upgrade database structure` to upgrade the
database (migrations 31 to 39)
* The editing schema `editing_session` is renamed
`road_graph_editing`: recreate the QGIS administration project
with the algorithm `Create database local interface`, or update the
data sources of the existing projects
* The Python code of the layer actions is now stored in the plugin:
the plugin must be installed and activated
to use the actions of the administration project


* **SQL**: add the function
`road_graph.add_managed_object_reference_fields` which adds to a
managed object table
the reference fields corresponding to its geometry type (migration
`upgrade_to_39.sql`)
* **SQL**: add the function
`road_graph.add_managed_objects_triggers()` which creates the trigger
`trg_calculate_managed_object_references` on every table listed in
`road_graph.managed_objects`
with the new column `add_trigger_on_geom_change` set to `True`, if it
does not already exist
* **SQL**: add the materialized view `road_graph.vm_managed_objects`,
based on the view `v_managed_objects`
and refreshed at the end of the function `merge_editing_session_data`.
The QGIS administration project uses it instead of the view
`v_managed_objects`
* **SQL**: add the functions `road_graph.get_snapped_line_from_track`
which snaps an imprecise GPS track
(for example from a GPX file) on the road graph edges, without zigzags
between close roads,
and `road_graph.get_road_sections_from_snapped_line` which returns the
ordered list of the roads
followed by the snapped line, with their start and end references
(migration `upgrade_to_34.sql`)
* **Docs**: the `Database` menu now contains the pages `Useful
functions`,
which explains how to use these functions, and `Database structure`,
which embeds the SchemaSpy documentation
* **Docs**: explain the use of the field `no_intersection_cutting` in
the page `Road graph editing`


* **Docs**: reorganization and new content of the documentation:
new pages `Processing algorithms` and `Tables and fields`,
description of the toolbar and panels of the plugin, examples of the
linear referencing functions,
creation of a demo database, example of the impacts of a graph
modification on the business data,
the preparation of the business tables moved to the page `Managed
objects`,
and a training plan in appendix
* **QGIS project**: the Python code of the layer actions has been
moved into the plugin
(module `roadnetwork/actions`). The actions of the administration
project now only call
`plugins['roadnetwork'].run_action(...)`: `finalize_roundabout` (layer
`edges copie`),
`display_edited_data`, `create_editing_session` and
`drop_editing_session` (layer `editing_sessions`)
* **Processing**: remove the `Schema name` parameter from the
algorithms `Create database structure`
and `Upgrade database structure`: the plugin schema is always
`road_graph`
* **SQL**: rename the editing schema `editing_session` to
`road_graph_editing`
(migration `upgrade_to_32.sql`). The table
`road_graph.editing_sessions` and the functions
`*_editing_session*` keep their names. The QGIS administration project
and the plugin tools
use the new schema name: QGIS projects created before must be
recreated
with the algorithm `Create database local interface`, or their data
sources updated


* **Processing**: in the algorithm `Update managed objects from the
road graph`, the option
`Preserve start & end points when updating line geometries` had no
effect
* **QGIS**: in the panel `RoadNetwork tools`, pressing `Enter` in a
field did not run the search `Find`
* **QGIS**: the error message of the tool `Get references under the
cursor` raised an error itself
* **Processing**: the help of the algorithm `Merge editing session
data` was the help of the algorithm cloning the data
* **SQL**: the geometry of an editing session which status is not
`created` could still be modified
by setting its status back to `created` in the same query, or by
removing it (migration `upgrade_to_38.sql`)
* **Lizmap**: in the references form of the road network panel, the
button `Road` of the start references
went to the end of the road instead of its start
* **SQL**: split of a managed object linestring by a point (Lizmap
action `split_line_by_point`):
the references were not updated when the table has no trigger
calculating them.
The first part now ends, and the second part starts, at the references
of the cut point.
A feature digitized in the opposite direction of the road can now also
be split (migration `upgrade_to_37.sql`)
* **SQL**: drawing an edge across edges crossing without node
(bridges, highway interchanges) never ended:
the parts of each split edge created nodes at all their intersections,
which were propagated
to the edges crossing them, and so on. Only the intersections of the
drawn edge are now cut
* **SQL**: when a new edge crossed several edges, a second node, not
linked to any edge,
could be created 10 cm away from a crossing node (rounding of the
coordinates of the split parts)
* **SQL**: the edges with `no_intersection_cutting` set to `True` were
still cut by the nodes located on them,
for example a new edge with this value passing over an existing
crossroad.
They are now only cut when the start or end point of a created or
moved edge is located on them,
for example a new access road arriving in the middle of a highway edge
(migration `upgrade_to_36.sql`)
* **SQL**: performance of the references calculation: the
recalculation of the edges references
of all the roads (`update_edge_references`) is about 9 times faster,
with the same results.
With the road cache, the previous marker is only searched among the
markers of the road
(all the markers of the database were read), and the edge order is
stored in the cache
instead of being calculated again for each point
* **SQL**: performance of the update of the managed objects references
(`update_table_references_from_geometries`),
about 3.5 times faster on long roads: the road cache can now contain
several roads,
and is built for the roads of the objects before calculating their
references
* **SQL**: `get_ordered_edges` returned twice the edge of the roads
having only one edge
* **SQL**: when the first edge of a road is updated, for example when
it is split by a new node,
do not create a marker `0` if the road already has markers. Some roads
do not start with the marker `0`
(e.g. a road starting at the marker `4 + 918`): a wrong marker `0` was
created, or the editing failed
with the error `The object geometry must intersect the editing session
polygon`
if the start of the road was outside the editing session (migration
`upgrade_to_33.sql`)
* **SQL**: the session variables `road.graph.*` used by the topology
triggers are set with `SET LOCAL`,
so that their value cannot leak outside of the current transaction
(migration `upgrade_to_33.sql`)
* **SQL**: remove the `SET search_path` / `RESET search_path` inside
the functions
`drop_editing_session`, `editing_survey` and `split_edge_by_node`,
which now use the quoted schema name
`"road_graph"`. The function `merge_editing_session_data` has its
`search_path` set in its definition
* **Locator**: remove the prefix `rr`, which was ignored by QGIS
(plugin prefixes must have at least 3 characters).
The search is run without typing any prefix.

Version 0.5.7:

* **SQL**
* Add a **trigger function** to update a **managed object table
references** on insert or update
To use it, the table must be configured in
`road_graph.managed_objects`. Then create the trigger with:
```sql
CREATE TRIGGER trg_calculate_managed_object_references
BEFORE INSERT OR UPDATE OF geom
ON public.demo_painting
FOR EACH ROW EXECUTE PROCEDURE
road_graph.calculate_managed_object_references();
```
* Add **functions** `road_graph.merge_table_linestring_features` &
`road_graph.split_table_linestring_feature_by_point`
which are able to **merge two features** of the same table & **split a
feature** by a given point
* **Docs - Lizmap Web Client Javascript & CSS files**
* Add buttons to go to the **start/end of the route**
* Add a popup button to let the user **split the linestring** with the
clicked point.
* **QGIS Project**: layer `Roads` - Add expression based `road_order`
colummn


* **SQL** - `road_graph.merge_editing_session_data`: fix search_path
not well resetted
* **Docs - Lizmap Web Client - Javascript**:
* force the `road_code` value to be used when creating geometries
* use the `road_order` column for the autocompletion data source


* Docs - **Schemaspy**: add functions SQL definition

Version 0.5.6:

* **Translation** - Fix loading the language file

yes

kimaidou

2026-10-28T17:47:32.772645+00:00

3.40.0

3.99.0

None

no

Version management

Plugin details