{"name": "TfC Tools", "package_name": "tfc_tools", "version": "2.4", "experimental": false, "qgis_min": "3.40.0", "qgis_max": "3.99.0", "downloads": 29, "uploaded_by": "transportforcairo", "upload_datetime": "2026-07-21T05:44:12.438462", "changelog": "Version 2.4:\n\u2022 New GTFS editing workflow: edit the SDI source layers in QGIS, then re-export GTFS \u2014 Refresh SDI is now the hub that validates edits and rebuilds derived layers\n\u2022 Pre-flight GTFS attribute validation in Refresh SDI \u2014 checks stop/agency IDs, route_type, agency timezone, interval times, headways and cross-layer foreign keys; reports issues in the log, with an optional Strict validation mode that aborts on errors\n\u2022 Safe key repairs in Refresh SDI (opt-in) \u2014 remaps agency_id stored as a gid to its text code and coerces integer keys stored as \"1.0\" back to INTEGER, fixing common foreign_key_violation causes\n\u2022 Exported GeoPackages embed a default read-only QGIS edit form \u2014 locks the recomputed transit_trips_view columns and adds not-null/unique constraints on stop_id and agency_id\n\u2022 Export SDI (PostGIS) now ships the transit_trips base table (matching the RouteLab export), so Refresh SDI can fully rebuild transit_trips_view after edits\n\u2022 Refresh SDI recomputes trips_view terminal/vehicle/geometry-derived columns from the view when the base table is absent (legacy GeoPackages)\n\u2022 Updated in-plugin help and User Guide for the editing workflow, validation and key-repair options\nVersion 2.3:\n\u2022 GIS2GTFS feed version bug fix \u2014 feed_name no longer silently used as feed_version\n\u2022 Interval attribution in Vehicle and Passenger Flow now ID-based (onboard_instances.interval_id \u2192 transit_intervals.observer_id), replacing timestamp bucketing\n\u2022 6-tier hierarchical occupancy imputation with per-cell confidence fields (imputation_tier, imputation_method), replacing single-median fallback\n\u2022 Batch feature writing in memory layer export, fixing crashes on large layers and pandas nullable type leaks\nVersion 2.2:\n\u2022 Dynamic GTFS calendar derived from interval day-of-week flags, replacing the hardcoded Ground_Daily / Ground_Weekdays services\n\u2022 Per-interval trip expansion in GIS2GTFS, fixing duplicate trip/start-time errors and incorrect arrival times when intervals overlap\n\u2022 New runtime library compatibility check at plugin load (warns on out-of-range pandas, geopandas, shapely, numpy)\n\u2022 Forward compatibility with pandas 3.0\n\u2022 Vehicle and Passenger Flow joins now key on stable interval IDs instead of interval names, robust to renames and legacy exports\nVersion 2.1:\n\u2022 New advanced stop-extraction parameters exposed in RL2GPKG and Refresh SDI\n\u2022 New 6-tier OD travel-time estimation with fallback cascade, tagged by calculation method\n\u2022 Big performance improvements in Refresh SDI\n\u2022 Smart Postgres refresh path\nVersion 2.0:\n\u2022 New tools: RL2GPKG, SDI2GPKG, Revenue Estimator, Refresh SDI\n\u2022 GeoPackage input supported alongside PostgreSQL\n\u2022 Vehicle and Passenger Flow updates\n\u2022 Optional fallback headway for null values\nVersion 1.1:\n\u2022 Dynamic time intervals pulled directly from the database instead of static \u201cmorning\u201d and \u201cafternoon\u201d intervals\n\u2022 Lighter plugin with fewer required libraries\n\u2022 Help panel updated with clearer explanations and a link to the User Guide PDF", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/tfc_tools/version/2.4/download/"}