{"name": "roadnetwork", "package_name": "roadnetwork", "version": "0.6.4", "experimental": false, "qgis_min": "3.40.0", "qgis_max": "3.99.0", "downloads": 41, "uploaded_by": "kimaidou", "upload_datetime": "2026-11-11T14:07:21.315727", "changelog": "Version 0.6.4:\n\n**Highlights**\n\n* **Managed objects**: the split and merge of lines in Lizmap now give the right references, even for lines\ndrawn in the opposite direction of the road, and the lines connected to an edited line stay connected\n* **Security**: the `SECURITY DEFINER` functions set their `search_path`, and the read-only functions\nwork even if the `search_path` of the caller does not contain `public`\n\n\n\n* **SQL**: new trigger function `update_managed_object_linked_geometries`: when the geometry of a managed line\nis updated, the lines of the same table and road which were connected to its start or end are shortened\nor extended to stay connected. Their references, and cumulative distances, follow the new references\nof the line, and their geometry is calculated again from them. The function `add_managed_objects_triggers`\ncreates this trigger `trg_update_managed_object_linked_geometries` on the line tables,\nand now returns one line per trigger with its name (migration `upgrade_to_43.sql`)\n\n\n* **Lizmap**: in the form `Create the geometry from references` of the editing panel, the fields `Offset` and `Side`\nare hidden by default: click on `Offset` to display them\n* **Lizmap**: the button `Merge two lines` of the popup no longer requires the right to delete features,\nbut the rights to create features and modify the geometry. The editing rights needed to display the buttons\n`Split a line at a point` and `Merge two lines` can be changed with the new constants\n`ROAD_SPLIT_NEEDED_RIGHTS` and `ROAD_MERGE_NEEDED_RIGHTS` of the script `road_network.js`\n* **SQL**: merge of two managed object lines (Lizmap action `merge_selected_lines`): the merged feature\nis now the feature chosen first, with its field values, instead of the feature with the lowest start references.\nIts references, and its cumulative distances if the table has these fields, are calculated from the merged line\nin the direction of the road, even if the table has no trigger calculating them (migration `upgrade_to_43.sql`)\n* **SQL**: the functions called from outside the plugin which only read data (`get_reference_from_point`,\n`get_road_point_from_reference`, `get_road_substring_from_references`, `get_managed_object_geometry_from_references`,\n`get_snapped_line_from_track`, `get_road_sections_from_snapped_line`, `get_spatial_road`)\nand the trigger function `calculate_managed_object_references` now set their `search_path` to `public`:\nthey work even if the `search_path` of the caller does not contain the schema `public`, where PostGIS is installed\n(migration `upgrade_to_43.sql`)\n* **SQL**: security: the `SECURITY DEFINER` functions `copy_data_to_editing_session`, `drop_editing_session`\nand `toggle_foreign_key_constraints` now set their `search_path` to `public, pg_temp`,\nand `merge_editing_session_data` prefixes the objects of the production schema (migration `upgrade_to_43.sql`)\n\n\n* **SQL**: split of a managed object line by a point (Lizmap action `split_line_by_point`): for a line drawn\nin the opposite direction of the road, each part could get the references of the other part,\nor start after its end. The two parts now follow the direction of the road, like the geometries\ncalculated from the references, and their four references, and their cumulative distances\nif the table has these fields, are calculated in the direction of the road (migration `upgrade_to_43.sql`)\n* **SQL**: the trigger calculating the references of the managed objects (`trg_calculate_managed_object_references`)\ngave a start reference greater than the end reference for a line drawn in the opposite direction of the road.\nThey are now inverted, like in the algorithm `Update managed objects from the road graph`\n* **Lizmap**: in the form `Create the geometry from references` of the editing panel, the start and end references\nof a line drawn in the opposite direction of the road were displayed in the drawing order.\nThey are now ordered in the direction of the road, like the geometry created from them\n\nVersion 0.6.3:\n\n**Highlights**\n\n* **Performance**: merging an editing session is much faster on long roads: only the managed objects\nwhich may be impacted by the modifications are updated, for example 0.4 s instead of 13 s for a new crossroad\n* **Fixes**: more precise cumulative distances (to the centimeter), and the managed lines are no longer\nshortened by 1 cm at each merge\n\n**Upgrade notes**\n\n* Run the algorithm `Upgrade database structure` to upgrade the database (migration 42).\nIt calculates again the references of all the edges, which can take a few minutes on a large road graph\n* Optionally, run the algorithm `Update managed objects from the road graph` on each managed table\nto correct their cumulative distances\n\n\n* **SQL**: faster merge of the editing sessions: only the managed objects which may be impacted\nby the modifications are updated (near the modified edges, downstream of them if the road geometry has changed,\nor near a modified marker), instead of all the objects of the modified roads.\nFor example on a road of 118 km with 1,250 objects: 0.4 s instead of 13 s for a new crossroad,\nand 5 s instead of 13 s for a realigned edge (migration `upgrade_to_42.sql`)\n\n\n* **SQL**: the cumulative distances greater than 10 km were rounded to 10 cm (1 m above 100 km),\nfor the edges and the managed objects. The migration calculates again the references of all the edges\n(about 17 s for the 7,809 edges of the demo data). The managed objects are corrected when they are updated,\nor with the algorithm `Update managed objects from the road graph`\n* **SQL**: the managed lines with the update policy `geometry` were shortened by 1 cm at each merge\n* **SQL**: a managed object whose geometry cannot be calculated from its references no longer cancels the merge:\nit is not updated, and a warning is displayed\n* **SQL**: the list of the last updated managed objects (`last_updated_objects_ids`) is emptied\nwhen a merge does not update any object: it still contained the objects of the previous merge\n* **Tools panel**: the references displayed on click or on hover now show the marker `0`, and the abscissa,\noffset or cumulative distance `0`, instead of an empty field\n\nVersion 0.6.2:\n\n**Highlights**\n\n* **Performance**: editing long roads is much faster, for example adding an edge crossing a road\nof 135 edges takes about 0.6 s instead of 8 to 13 s\n* **Docs**: new explanation of the impacts of the modifications on the references, with a diagram\n\n**Upgrade notes**\n\n* Run the algorithm `Upgrade database structure` to upgrade the database (migration 41)\n\n\n* **SQL**: faster editing of long roads: the references of a road are no longer calculated several times\nfor one modification, and splitting an edge only calculates the references of its two parts.\nFor example on a road of 135 edges, adding a crossing edge takes about 0.6 s instead of 8 to 13 s\n(migration `upgrade_to_41.sql`)\n* **Docs**: in the page `Road graph editing`, explain the impacts of the modifications of the edges and markers\non the references, upstream and downstream, with a diagram\n* **Docs**: in the page `Road graph editing`, warn against editing directly the production schema `road_graph`,\nand explain how to correct the whole road graph after a first import with an editing session covering all the data", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/roadnetwork/version/0.6.4/download/"}