{"name": "movecost", "package_name": "movecost", "version": "4.0.1", "experimental": false, "qgis_min": "3.0.0", "qgis_max": "4.99.0", "downloads": 263, "uploaded_by": "enzo", "upload_datetime": "2026-09-10T02:44:15.451371", "changelog": "4.0.1 - Qt6 enum scoping (plugins.qgis.org Qt6 checker, 16 issues):\n- Fully scoped every Qt/QGIS enum flagged by the repository checker:\nQt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.\nSmoothTransformation, Qt.KeyboardModifier.ShiftModifier,\nQt.DockWidgetArea.RightDockWidgetArea, QgsRasterBandStats.Stats.All,\nQgsColorRampShader.Type.Interpolated (movecost.py,\nmovecost_dialog.py, layer_organizer.py).\n- The scoped forms resolve on both Qt5 (PyQt5) and Qt6 (PyQt6)\nbindings, verified against QGIS 3.x/Qt5; no behavior change.\n4.0.0 - Port to the movecost R package 3.0.0 (mc_* API):\n- movecost 3.0.0 removed the legacy movecost()/movebound()/movecorr()/\nmovealloc()/movecomp()/movenetw()/moverank() functions: every call\nnow errors with \".Defunct\". All 14 Processing scripts were ported\nto the new architecture: the cost surface is built once with\nmc_surface() and reused by every analysis (mc_accum, mc_paths,\nmc_corridor, mc_boundary, mc_alloc, mc_network, mc_rank, mc_comp).\n- Dependency stack updated: terra + sf + igraph + ggplot2 (raster is\nkept only because the QGIS R provider hands rasters over as\nRasterBrick; elevatr is needed by the by-polygon variants). The\nretired 2.x dependencies chron, gdistance, sp and Matrix are no\nlonger installed.\n- The parameter interface of every algorithm is UNCHANGED (existing\nmodels and pyArchInit keep working). Two new optional parameters:\nCorridor_Method (reach/through) on Movecorr \u2014 'through' is the new\ndirectional corridor of movecost 3.0 \u2014 and Penalty on Moverank,\nwhose LCPN is no longer capped at 6.\n- IrregularDTM is kept for compatibility but has no effect: NoData\ncells are excluded from the cost graph by construction in 3.0.\n- Result fields preserved (cost, length_m, length_km, time_converted,\narea_m2/km2/ha) plus the new cost_hms from mc_paths/mc_rank;\nmovebound polygons now carry the exact area and perimeter computed\nby mc_boundary; the corridor accumulated surfaces A/B are two\ncheap extra mc_accum() queries on the shared cost surface.\n- Plots are ggplot2-based and still saved to\n<tempdir>/movecost_plots/movecost_latest_plot.png for the\npyArchInit results panel.\n- Note: movecost 3.0.0 also corrects errors of the 2.2 cost\nfunctions (ks, ma, pcf, p, vl, h and dynamic-speed metabolic\ncosts with V=0): results with those settings differ (correctly)\nfrom the 2.x series.\n3.1.4 - Pass plugins.qgis.org Bandit + flake8 review (W503/W504 + B112/B110):\n- Collapsed the Qt5/Qt6 dock feature flags expression into a single\nline via getattr(QDockWidget, 'DockWidgetFeature', QDockWidget),\nremoving the multi-line OR that triggered W503 when split before\nand W504 when split after the operator.\n- Narrowed 4 broad 'except Exception:' handlers in plot-discovery\ncode to 'except (OSError, PermissionError):' to satisfy Bandit\nB112 (try-except-continue) and B110 (try-except-pass) rules.\nNo behavior change: the operations that can fail are filesystem\ncalls (os.listdir, glob, getmtime), which raise OSError variants.\n3.1.3 - Plugin repository W504 compliance:\n- In movecost_dialog.py (Qt5/Qt6 dock feature flags), moved the '|'\noperator to the beginning of the continuation lines instead of the\nend (modern PEP 8 recommendation; resolves W504 warnings from the\nplugins.qgis.org review).\n3.1.2 - Document Topo_Dist parameter in algorithm help files:\n- Added Topo_Dist parameter description to all 14 .rsx.help files\n(shown in the QGIS Processing parameter dialog when hovering).\n- Bumped Version 2.1 -> 2.2 marker in movecost.rsx.help ALG_DESC.\n3.1.1 - Plugin repository compliance:\n- Removed deprecated supportsQt6 metadata flag (Qt6 compatibility is\nnow determined solely by qgisMaximumVersion=4.99).\n- Cleaned up Python source files to satisfy plugins.qgis.org's\nBandit/flake8 review: removed ~30 unused imports, replaced bare\n'except:' with explicit 'except Exception:', fixed long lines,\nreplaced star imports in movecost_dialog with explicit imports,\nremoved orphan 'standard_library.install_aliases()' call.\n- No behavior changes; this is a tooling/cleanup release.\n3.1.0 - Support movecost R package 2.2 (topo.dist parameter):\n- New \"Topo_Dist\" parameter (default FALSE) added to all 14 algorithm scripts\n(movecost, movealloc, movebound, movecomp, movecorr, movenetw, moverank,\nplus their _by_polygon variants). When TRUE, accumulated cost is\ncalculated using topographic surface distance instead of planar\ndistance (surface = planar * sqrt(1 + slope^2)). Recommended for\ntime-based hiking functions; use with caution on metabolic energy\nfunctions which are derived from planar measurements.\n- Bumped minimum required movecost R package version from 2.1 to 2.2\n(auto-installer in each rsx will now prompt the update).\n3.0.1 - Fix Qt6 compatibility: replaced PyQt5 import in resources_rc.py with qgis.PyQt\n3.0 - Major UI redesign and improvements:\n- Converted dialog to dockable panel (QDockWidget) that docks to right side of QGIS\n- New tabbed interface: Algorithms, Results, Export, Settings\n- R Plot Viewer: displays plots directly in the plugin panel\n- Cost Summary: shows statistics from analysis results\n- Export options: CSV tables, HTML reports\n- Modern CSS styling with color-coded algorithm buttons\n- movecomp: now supports unlimited cost function comparison (comma-separated input)\n- All LCP outputs now include cost, time_converted, length_m, length_km fields\n- All polygon outputs now include area_m2, area_km2, area_ha fields\n- Fixed barrier support: proper sf to Spatial conversion for all algorithms\n- Layer organization: automatic grouping and styling of output layers\n2.1 - Qt6/QGIS 4 compatibility, removed deprecated rgdal dependency, multilingual help files\n2.0 - Initial release with sf/terra support", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/movecost/version/4.0.1/download/"}