[general]
name=02Route 3D - Multi-Criteria 3D Mobility Studio
qgisMinimumVersion=3.28
qgisMaximumVersion=4.99
description=3D routing and urban mobility analysis for 15 user profiles (wheelchair, senior, child, bicycle, scooter, car, truck...): slope-aware shortest paths, Pareto routes, isochrones, OD matrices, accessibility and walkability audits, and an interactive 3D route viewer.
version=1.0.0
author=Yusuf Eminoglu
email=yusuf.eminoglu@deu.edu.tr

about=
    02Route 3D finds and inspects routes the way different people actually move through a city. It routes over your own QGIS line network or a bounded OpenStreetMap download, scores every edge with a multi-criteria (AHP) cost built from terrain, optional environmental rasters, road hierarchy, surface, one-way rules and access tags, and shows the result in an interactive 3D (WebGL) route viewer.
    
    MOBILITY PROFILES (15)
    Standard Adult, Senior, Child / Safe Walk, Stroller, Wheelchair / Barrier-Free, Runner, City Bicycle, Mountain / Gravel Bike, E-Scooter, Passenger Car, Delivery Van, Heavy Goods Truck, Emergency Responder, Scenic Walk and Safe Night Walk. Each profile has its own speed, slope, stair, surface and road-class limits, and every tool applies the same limits: a wheelchair route never crosses stairs, whichever tool computed it.
    
    PROCESSING ALGORITHMS (16)
    - Routing: Compute 3D Route (turn costs, time of day); Transit + Walk Route (GTFS, RAPTOR); Multi-Objective Pareto Routes (NAMOA*); Batch Route Planner; Origin-Destination Cost Matrix; Emergency Evacuation & Hazard Avoidance.
    - Accessibility: 3D Isochrone (street-corridor service area); Accessibility & Equity Scorecard (E2SFCA, Gini); Walkability & Barrier-Free Audit; Solar & Shade Exposure (building shadows).
    - Network and data: Routing Network Readiness Audit; MCDA Friction Surface; GPS Track Map Matching (HMM / Viterbi).
    - Reports and export: Route Scorecard (HTML); Standalone 3D WebGL Report; AutoCAD DXF (3D polyline + profile).
    
    CHECKED BEFORE AND AFTER ROUTING
    The readiness audit marks blocked segments, one-way links, disconnected parts and surface problems before you route. Every route reports how far its ends were snapped to the network, how many nodes were explored and which edges it had to avoid. Walking times follow Tobler's hiking function; energy use follows Minetti's metabolic cost model.
    
    OUTPUTS
    LineStringZ layers, GPX 1.1, 3D GeoJSON, AutoCAD DXF and self-contained offline 3D HTML.
    
    User manual: https://geophilo.com/zero2route3d/
    Source code and issues: https://github.com/YusufEminoglu/zero2route3d (a star on GitHub helps the project).
    
    Acknowledgment: the inclusive mobility profiles are inspired by Transform Transport / Systematica research (UX-Mobility: Multi-User Walkability Route Planner, https://transformtransport.org/research/inclusive-mobility/ux-mobility-multi-user-walkability-route-planner/).

tracker=https://github.com/YusufEminoglu/zero2route3d/issues
repository=https://github.com/YusufEminoglu/zero2route3d
homepage=https://geophilo.com/zero2route3d/

category=Analysis
tags=network, shortest path, gtfs, public transport, transit, raptor, turn costs, shadow, network audit, topology, modal access, od matrix, routing, 3d, mobility, accessibility, walkability, inclusive mobility, pedestrian, wheelchair, bicycle, micromobility, least cost path, threejs, webgl, elevation, slope, tobler, kinematics, minetti, pareto, mcda, ahp, isochrone, service area, e2sfca, spatial equity, evacuation, solar exposure, map matching, gps, gpx, dxf, cad, urban analytics, zero2

icon=icons/icon.png

experimental=False
deprecated=False
hasProcessingProvider=yes
license=GPL-2.0-or-later

changelog=
    1.0.0 - Engineering and honesty:
        - Tested on QGIS 3.28, 3.34, 3.44 LTR and QGIS 4.2 (Qt6) in CI, including a check that every QGIS and Qt name the plugin uses exists in each version.
        - Fix: the MCDA Friction Surface crashed on QGIS 3.28 to 3.38 (it used a QGIS 3.40 enum).
        - The 3D viewer places the sun for a chosen date and solar time (same formula as the shade analysis): building and tree shadows follow it; at night the sun light switches off.
        - Download failures (Overpass, Open-Elevation), cancelling and projected CRSs are covered by tests; the viewer has unit, smoke and pixel-baseline tests.
        - Documentation no longer claims what the plugin does not do: the elevation download is Open-Elevation (SRTM-based, not Copernicus 30 m), the viewer opens in the browser, the Pareto heat objective needs a temperature raster.

    0.9.0 - Deeper analysis:
        - New algorithm Transit + Walk Route (GTFS): earliest-arrival journeys by public transport (RAPTOR) with walking legs routed on the street network; wheelchair users only get accessible stops and trips.
        - Turn costs at junctions for cars, vans, trucks, bikes, scooters, wheelchairs and strollers (left turns across traffic, sharp turns, U-turns; trucks cannot take hairpins); drive-on-left option.
        - Departure time: after dark walkers and cyclists avoid unlit streets and main roads without sidewalks; the heat weight follows the sun.
        - Isochrones follow the streets (land within a corridor of reachable streets) instead of a hull that covered blocks, rivers and rail lines.
        - Solar exposure computes real building shadows from a footprint layer with heights, for any day of the year.
        - Pareto routes prune with a lower bound for every objective (NAMOA*).
        - Fix: two points beside the same long street segment no longer fail to route.

    0.8.0 - A truthful 3D viewer:
        - Real terrain: heights sampled from the selected DEM around the routes (sampled in the background task); without a DEM the viewer says its surface is approximate.
        - Elevation chart with distance and height axes, coloured by slope; hovering it moves the walker in 3D and playback moves its cursor.
        - Other profiles are drawn as coloured ribbons, with a comparison table (distance, time, climb, max slope and differences).
        - Routes now sit on the terrain: the route ribbon was squashed to 12 percent of its height and sank under hills.
        - Renders only when something changes; trees instanced and buildings merged (about half the draw calls).
        - Basemap tiles placed correctly in Web Mercator, uploaded in batches, with a DEM hillshade when offline.
        - Live link to QGIS by server-sent events instead of polling every 1.5 s; unreadable route files and lost links are shown.
        - Keyboard control (Space, arrows, Home/End, R), visible focus, reduced motion, screen-reader labels.
        - Snapshot at 2x or 4x and video with a caption and the map credit; MP4 in Safari.
        - Fixes: route ends at 0 m without a DEM (false 400 percent slopes), chart values read at the wrong places, exaggeration not applied to the route, capture buttons hidden behind the bottom panel.

    0.7.0 - Faster routing:
        - A 50 x 50 OD matrix on a 10,000-edge network takes about 7 s instead of over a minute: one search per origin instead of one per pair.
        - Routes on the same network reuse the built graph and every evaluated edge cost (another profile, the OD matrix, a second click).
        - Tighter, still exact A* bound; edge costs and raster samples computed once per edge instead of on every visit; raster coordinate transforms built once per layer.
        - Snapping finds the nearest node per network component in one pass and now covers the full snap radius at high latitudes.
        - Pareto routes keep paths as parent pointers instead of copying them into every label.
        - Benchmark suite (1k/10k/100k edges) with a CI speed gate.

    0.6.0 - QGIS no longer freezes:
        - Route calculation, the OD matrix, OpenStreetMap downloads and the DEM download run in the background with progress and a cancel button in the QGIS task bar.
        - DEM download budget: large extents use a coarser grid (the real cell size is shown in the layer name) and ask before many requests or when a DEM layer is already selected.
        - Processing algorithms can be cancelled during the OpenStreetMap download.
        - The dock remembers profiles, weights and playback settings between sessions; layer choices are saved in the project.
        - Scenarios: save points, profiles, weights and results to a JSON file, load them later and compare the new routes with the saved run.

    0.5.0 - Correct routes for every profile:
        - Pedestrians may walk against one-way streets; cyclists only where oneway:bicycle=no; vehicles never.
        - Wheelchair and stroller routes never use slopes above 8.33 percent / 10 percent (previously only penalised).
        - Pareto routes: admissible time bound from each profile's real top speed, correct epsilon dominance, and a warning when the search is cut short.
        - Nodes without elevation take their neighbours' height instead of 0 m; DEM slopes are measured over at least 10 m, so DEM noise on short segments no longer blocks routes.
        - Vehicles respect posted speed limits (maxspeed) in cost and travel time.
        - GPS map matching: metric projection, nearest candidates and network distances between candidates.
        - Alternative routes penalise the primary route instead of forbidding it, so they also work across single bridges.
        - Overpass and Open-Elevation failures now show their real cause; the local viewer server no longer exposes the route to other web pages; QGIS 4 (Qt6) QAction import.

    0.4.1 - Repository moved to GitHub:
        - The repository and issue tracker are now on GitHub (github.com/YusufEminoglu/zero2route3d); the user manual stays at geophilo.com/zero2route3d.
        - Clearer plugin description.

    0.4.0 - Profile-Aware Routing & Network QA:
        - Added modal access filtering for pedestrians, bicycles and motor vehicles using OSM-style tags and road-class defaults.
        - Added Routing Network Readiness Audit as the fifteenth Processing algorithm.
        - Added bounded network snapping, route diagnostics, weak-component topology fixes, real convex-hull isochrone area, and projected-center CRS correction.

    0.3.0 - Official QGIS Hub Release & UX Urban Mobility Evolution:
        - Transitioned out of experimental status for official QGIS Plugin Hub publication.
        - Enhanced metadata, shortest path descriptions, and added formal research acknowledgment for Transform Transport inclusive mobility inspiration.

    0.2.9 - Full Map Extent DEM & -5m Relative Skirt Extrusion:
        - Query Open-Elevation DEM for the full map canvas extent and normalized Web 3D terrain skirts to scene minimum elevation with -5m base plinth.

    0.2.8 - Point A & Point B 3D Billboard Text Sizing:
        - Dynamically measured text width and scaled the pill textbox background and sprite aspect ratio so that "Point A (Origin)" and "Point B (Destination)" fit with comfortable margins.

    0.2.7 - Rollback to Verified Web Basemap Milestone:
        - Reverted Web 3D studio and codebase back to v0.2.1 basemap milestone while preserving updated transparent 3D diorama brand icons.

    0.2.1 - Web Basemap Coverage & Geolocator A/B Pin Enhancements:
        - Resolved Web 3D basemap tile cutoff by dynamically choosing optimal zoom levels and loading all bounding tiles without artificial truncation.
        - Added lettered A/B geolocator pins and billboard badges in WebGL 3D, and composite font marker symbology and halo labeling in QGIS.

    0.2.0 - Correctness and honesty release:
        - Removed fabricated data: the NDVI, LST and NDBI rasters labelled as
          Copernicus Sentinel-2 products were generated from a hash of the pixel
          indices and fed into the routing cost; the 3D studio displayed a
          built-in demo route as if it were real; trees were placed
          procedurally; four algorithms substituted a hard-coded line in Izmir
          when input geometry was missing.
        - Missing elevation, heat and greenery data are now reported as absent
          instead of being replaced by 0.0, 0.5 and 0.4, which made a network
          with no DEM look flat and fully barrier-free compliant.
        - Corrected the Minetti metabolic cost equation, which overstated
          walking energy roughly fivefold.
        - Fixed field construction that raised TypeError on QGIS 4, so every
          algorithm producing a layer failed there before writing a feature.
        - Added coordinate reprojection throughout: projected inputs were being
          consumed as WGS84 degrees.
        - Fixed the isochrone profile list, which mapped Passenger Car to a
          mountain bike and left six profiles unreachable.
        - Fixed the accessibility, walkability, cost surface, DXF, HTML and
          solar algorithms, each of which crashed, produced nothing, or scored
          against invented inputs.
        - The standalone HTML export rendered a blank page for every user.
        - Processing outputs now carry symbology, field aliases and metadata.
        - Closing the dock no longer deletes the route layers you just added.
        - Restored the complete GPL-2 licence text and corrected the documented
          algorithm identifiers, 11 of which were wrong.

    0.1.0 - Initial release:
        - Interactive card-based QGIS Dock with adaptive dark/light styling.
        - 15 mobility profiles across pedestrian, micromobility and vehicle categories.
        - Multi-criteria raster cost surfaces (DEM, Slope, LST, Tree Canopy, Road Hierarchy).
        - Hardware-accelerated 3D WebGL studio (in the browser) with chase and drone cam, and elevation HUD.
        - 3D LineStringZ vector layer creation and GPX/GeoJSON export.
        - Native QGIS Processing provider with 14 headless algorithms.
