Skip to content

Commit 199dcbc

Browse files
songololoclaude
andcommitted
QGIS plugin: version bump, progress=False for dual builds, import path fixes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 9f2a3a9 commit 199dcbc

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

qgis_plugin/cityseer_qgis/metadata.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name=Cityseer
33
qgisMinimumVersion=4.0
44
description=Urban network analysis: centrality, accessibility, and statistics
5-
version=4.24.0b4
5+
version=4.25.0b1
66
author=Benchmark Urbanism
77
email=gareth.simons@ucl.ac.uk
88

@@ -13,7 +13,16 @@ about=Cityseer provides Processing algorithms for urban network analysis: networ
1313
(angular) paths, boundary polygons, and deterministic distance-based sampling.
1414
Requires the cityseer Python library: pip install cityseer
1515

16-
changelog=4.24.0
16+
changelog=4.25.0
17+
- New CityNetwork class-based API wrapping network construction, centrality, and layers
18+
- Fast dual graph builder bypassing NetworkX for direct LineString-to-NetworkStructure construction
19+
- Incremental diff-based network updates preserving unchanged node indices
20+
- Feature status tracking (active, deleted, invalid_geometry, duplicate, short_self_loop)
21+
- Save/load with parquet persistence and full state roundtrip
22+
- Boundary polygon support for automatic live node assignment
23+
- Construction from GeoDataFrame, WKTs, NetworkX, or OSM
24+
25+
4.24.0
1726
- Endpoint-aware angular centrality using doubled state-space on dual graphs
1827
- Brandes multi-predecessor backpropagation for angular betweenness
1928
- Dynamic slope penalty using Tobler's hiking function for z-aware networks

qgis_plugin/cityseer_qgis/utils/converters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,13 +105,15 @@ def build_dual_network(
105105
crs=layer.crs().authid(),
106106
boundary=boundary,
107107
build_nodes_gdf=False,
108+
progress=False,
108109
)
109110
else:
110111
ns, _nodes_gdf, state = dual.build_dual(
111112
current_wkts,
112113
crs=layer.crs().authid(),
113114
boundary=boundary,
114115
build_nodes_gdf=False,
116+
progress=False,
115117
)
116118

117119
state["layer_cache_key"] = layer_cache_key

qgis_plugin/profile_build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def profile_phases(wkts: dict[int, str]):
8181
import itertools
8282

8383
from cityseer import rustalgos
84-
from cityseer_qgis.utils.converters import (
84+
from cityseer.tools.dual import (
8585
_coords_to_wkt,
8686
_cumulative_lengths,
8787
_interpolate_at,

qgis_plugin/validate_coord_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import argparse
1616
import sys
1717

18-
from cityseer_qgis.utils.converters import (
18+
from cityseer.tools.dual import (
1919
_coords_to_wkt,
2020
_cumulative_lengths,
2121
_interpolate_at,

0 commit comments

Comments
 (0)