Version: [6478] roadnetwork 0.6.4

Version 0.6.4:

**Highlights**

* **Managed objects**: the split and merge of lines in Lizmap now give
the right references, even for lines
drawn in the opposite direction of the road, and the lines connected
to an edited line stay connected
* **Security**: the `SECURITY DEFINER` functions set their
`search_path`, and the read-only functions
work even if the `search_path` of the caller does not contain `public`



* **SQL**: new trigger function
`update_managed_object_linked_geometries`: when the geometry of a
managed line
is updated, the lines of the same table and road which were connected
to its start or end are shortened
or extended to stay connected. Their references, and cumulative
distances, follow the new references
of the line, and their geometry is calculated again from them. The
function `add_managed_objects_triggers`
creates this trigger `trg_update_managed_object_linked_geometries` on
the line tables,
and now returns one line per trigger with its name (migration
`upgrade_to_43.sql`)


* **Lizmap**: in the form `Create the geometry from references` of the
editing panel, the fields `Offset` and `Side`
are hidden by default: click on `Offset` to display them
* **Lizmap**: the button `Merge two lines` of the popup no longer
requires the right to delete features,
but the rights to create features and modify the geometry. The editing
rights needed to display the buttons
`Split a line at a point` and `Merge two lines` can be changed with
the new constants
`ROAD_SPLIT_NEEDED_RIGHTS` and `ROAD_MERGE_NEEDED_RIGHTS` of the
script `road_network.js`
* **SQL**: merge of two managed object lines (Lizmap action
`merge_selected_lines`): the merged feature
is now the feature chosen first, with its field values, instead of the
feature with the lowest start references.
Its references, and its cumulative distances if the table has these
fields, are calculated from the merged line
in the direction of the road, even if the table has no trigger
calculating them (migration `upgrade_to_43.sql`)
* **SQL**: the functions called from outside the plugin which only
read data (`get_reference_from_point`,
`get_road_point_from_reference`, `get_road_substring_from_references`,
`get_managed_object_geometry_from_references`,
`get_snapped_line_from_track`, `get_road_sections_from_snapped_line`,
`get_spatial_road`)
and the trigger function `calculate_managed_object_references` now set
their `search_path` to `public`:
they work even if the `search_path` of the caller does not contain the
schema `public`, where PostGIS is installed
(migration `upgrade_to_43.sql`)
* **SQL**: security: the `SECURITY DEFINER` functions
`copy_data_to_editing_session`, `drop_editing_session`
and `toggle_foreign_key_constraints` now set their `search_path` to
`public, pg_temp`,
and `merge_editing_session_data` prefixes the objects of the
production schema (migration `upgrade_to_43.sql`)


* **SQL**: split of a managed object line by a point (Lizmap action
`split_line_by_point`): for a line drawn
in the opposite direction of the road, each part could get the
references of the other part,
or start after its end. The two parts now follow the direction of the
road, like the geometries
calculated from the references, and their four references, and their
cumulative distances
if the table has these fields, are calculated in the direction of the
road (migration `upgrade_to_43.sql`)
* **SQL**: the trigger calculating the references of the managed
objects (`trg_calculate_managed_object_references`)
gave a start reference greater than the end reference for a line drawn
in the opposite direction of the road.
They are now inverted, like in the algorithm `Update managed objects
from the road graph`
* **Lizmap**: in the form `Create the geometry from references` of the
editing panel, the start and end references
of a line drawn in the opposite direction of the road were displayed
in the drawing order.
They are now ordered in the direction of the road, like the geometry
created from them

Version 0.6.3:

**Highlights**

* **Performance**: merging an editing session is much faster on long
roads: only the managed objects
which may be impacted by the modifications are updated, for example
0.4 s instead of 13 s for a new crossroad
* **Fixes**: more precise cumulative distances (to the centimeter),
and the managed lines are no longer
shortened by 1 cm at each merge

**Upgrade notes**

* Run the algorithm `Upgrade database structure` to upgrade the
database (migration 42).
It calculates again the references of all the edges, which can take a
few minutes on a large road graph
* Optionally, run the algorithm `Update managed objects from the road
graph` on each managed table
to correct their cumulative distances


* **SQL**: faster merge of the editing sessions: only the managed
objects which may be impacted
by the modifications are updated (near the modified edges, downstream
of them if the road geometry has changed,
or near a modified marker), instead of all the objects of the modified
roads.
For example on a road of 118 km with 1,250 objects: 0.4 s instead of
13 s for a new crossroad,
and 5 s instead of 13 s for a realigned edge (migration
`upgrade_to_42.sql`)


* **SQL**: the cumulative distances greater than 10 km were rounded to
10 cm (1 m above 100 km),
for the edges and the managed objects. The migration calculates again
the references of all the edges
(about 17 s for the 7,809 edges of the demo data). The managed objects
are corrected when they are updated,
or with the algorithm `Update managed objects from the road graph`
* **SQL**: the managed lines with the update policy `geometry` were
shortened by 1 cm at each merge
* **SQL**: a managed object whose geometry cannot be calculated from
its references no longer cancels the merge:
it is not updated, and a warning is displayed
* **SQL**: the list of the last updated managed objects
(`last_updated_objects_ids`) is emptied
when a merge does not update any object: it still contained the
objects of the previous merge
* **Tools panel**: the references displayed on click or on hover now
show the marker `0`, and the abscissa,
offset or cumulative distance `0`, instead of an empty field

Version 0.6.2:

**Highlights**

* **Performance**: editing long roads is much faster, for example
adding an edge crossing a road
of 135 edges takes about 0.6 s instead of 8 to 13 s
* **Docs**: new explanation of the impacts of the modifications on the
references, with a diagram

**Upgrade notes**

* Run the algorithm `Upgrade database structure` to upgrade the
database (migration 41)


* **SQL**: faster editing of long roads: the references of a road are
no longer calculated several times
for one modification, and splitting an edge only calculates the
references of its two parts.
For example on a road of 135 edges, adding a crossing edge takes about
0.6 s instead of 8 to 13 s
(migration `upgrade_to_41.sql`)
* **Docs**: in the page `Road graph editing`, explain the impacts of
the modifications of the edges and markers
on the references, upstream and downstream, with a diagram
* **Docs**: in the page `Road graph editing`, warn against editing
directly the production schema `road_graph`,
and explain how to correct the whole road graph after a first import
with an editing session covering all the data

yes

kimaidou

2026-11-11T20:07:21.315727+00:00

3.40.0

3.99.0

None

no

Version management

Plugin details