{"name": "TopoTidy", "package_name": "topotidy", "version": "1.13.2", "experimental": false, "qgis_min": "3.16.0", "qgis_max": "3.99.0", "downloads": 129, "uploaded_by": "kholifatkhur", "upload_datetime": "2026-08-03T03:15:22.342462", "changelog": "1.13.0\r\n- New \"Simplify\" tool: removes vertices from lines and polygons while\r\nkeeping their shape (Douglas-Peucker, snap-to-grid or Visvalingam), with\r\na tolerance. Like the other tools it can write a new layer or - the\r\ndefault - edit the input in place, preserving feature ids. In the\r\nProcessing Toolbox and on the panel's Cleanup tools.\r\n\r\n1.12.4\r\n- Fixed: \"Fix Geometry\" (and the other cleanup tools) aborted with\r\n\"Feature (N) has invalid geometry. Please fix the geometry or change the\r\nInvalid features filtering option\" the moment the input had an invalid\r\nfeature - which for a geometry-repair tool is exactly the input it is\r\nmeant to handle. The tools now read invalid features instead of stopping\r\non them, so Fix Geometry, Split, Dissolve and Multipart to Singleparts\r\nrun on messy data without needing the global Processing setting changed.\r\n\r\n1.12.3\r\n- Fixed: clicking through point errors in the report stopped zooming after\r\na few of them. Each point zoom used to derive its window from the current\r\n(already zoomed-in) extent, shrinking the view ~25x per click until it\r\ncollapsed to nothing. Point errors are now centred at a fixed close-up\r\nscale, so every one of them frames cleanly no matter how many you step\r\nthrough.\r\n\r\n1.12.2\r\n- Fixed: accepted exceptions came back as errors on \"Validate again\". The\r\nexceptions marked by hand in the report are now carried into the re-run\r\n(matched by rule and feature ids), the same way exceptions from a saved\r\nreport are - so once an error is accepted it stays accepted across a\r\nre-validation of the same data, instead of the report flipping back from\r\nclean to \"still has errors\".\r\n\r\n1.12.1\r\n- Fixed a crash (\"wrapped C/C++ object of type QgsVectorLayer has been\r\ndeleted\") when clicking an error in the report after its error layer had\r\nbeen removed from the project on a re-validation. Each error row now\r\ncarries its own CRS, so zooming to an error never touches the error\r\nlayer, and marking exceptions writes back to the layer only when it is\r\nstill alive. Old error layers are also no longer removed until the\r\nreplacement run has actually produced its own, so a failed re-validation\r\ncan no longer leave the report pointing at deleted layers.\r\n\r\n1.12.0\r\n- New \"Fix Geometry\" tool: attempts to create a valid representation of an\r\ninvalid geometry without losing any of the input vertices; already-valid\r\ngeometries are returned without further intervention. New-layer mode\r\nalways outputs a multi-geometry layer, exactly like the stock Fix\r\ngeometries; in-place mode rewrites only the invalid features (valid ones\r\nkeep their feature ids) and respects the input layer's own type, writing\r\none feature per part on a single-part layer so nothing is lost.\r\n- Repair method choice: \"Linework\" (keeps the original line-work) or\r\n\"Structure\" (rebuilds shells and holes), matching the stock tool. Method-\r\naware repair uses QGIS 3.28+; older builds fall back to the default\r\nmake-valid.\r\n- Fix Geometry is in the Processing Toolbox, on the panel's Cleanup tools,\r\nand behind the report's \"Fix Geometry\" button (opened set to in place).\r\nReplaces the previous native:fixgeometries link.\r\n\r\n1.11.0\r\n- Dissolve now edits the input layer in place too, the same way Split and\r\nMultipart to Singleparts do: a TopoTidy \"Dissolve\" algorithm with the\r\n\"Output mode\" choice, defaulting to editing the input directly. Pick the\r\nfield(s) to dissolve on (leave empty to merge everything), and the merged\r\nresult replaces the input's features on the same layer. When the layer\r\nstores a single-part geometry type, each dissolved group is written back\r\nas one feature per connected part so nothing is dropped. The report's\r\n\"Dissolve\" fix button opens it already set to in place.\r\n- The validation report is no longer one crowded view. It is split into\r\npages: \"Report\" (the rules summary and the errors of the selected rule),\r\n\"How to fix\" (the guidance and the fix buttons for that rule) and \"Log\".\r\nThe verdict banner and the action buttons stay visible on every page, and\r\na \"How to fix\" button on the Report page jumps straight to the fixes.\r\n\r\n1.10.0\r\n- Split and Multipart to Singleparts now edit the input layer in place.\r\nBoth are TopoTidy algorithms with the same \"Output mode\" choice as the\r\nother fixer tools (new fixed shp/layer, or edit the input directly), and\r\nthey default to editing in place - so fixing a crossing or exploding a\r\nmultipart feature changes the layer already on the map instead of leaving\r\na new copy to swap in. The report's \"Fix with\" buttons open them already\r\nset to in place.\r\n* \"Split with Lines (at self-intersections)\" nodes every crossing by\r\nsplitting the layer against itself, then replaces the input's\r\nfeatures with the result.\r\n* \"Multipart to Singleparts\" keeps the first part on the original\r\nfeature and adds the rest as new features on the same layer.\r\n- Error layers are now managed for you: each validation makes fresh error\r\nlayers, so the ones a previous run left on the map are pulled off before\r\nthe next run and - if you had them showing - the new ones are put back\r\nautomatically. No more piling up duplicate \"Topology errors\" layers and\r\nno more re-adding them by hand after \"Validate again\".\r\n- The validation report is now a dock panel instead of a floating window.\r\nPark it on the left, right or bottom edge of the canvas (it opens at the\r\nbottom by default) so it sits beside the map rather than covering it.\r\n- New \"Manual editing\" toolbar in the panel: icon buttons for Toggle\r\nediting, Vertex tool, Split features, Trim/Extend and Snapping, each with\r\nits QGIS tool icon, for the by-hand fixes that no automatic tool can\r\ndecide. Clicking one points the map tools at the layer selected in the\r\npanel and starts editing it.\r\n\r\n1.9.0\r\n- Rebuilt the TopoTidy panel as a topology setup, in the order ArcGIS asks\r\nfor: which layers take part, which rules they must obey, what the cluster\r\ntolerance is, then Validate. Rules now live in a Layer / Rule / Compared\r\nto table instead of a flat checkbox list, so the same layer can carry\r\nseveral rules and the two-layer rules can finally be reached from the\r\npanel. \"Add SHP...\" loads a shapefile straight into the map and the\r\ntopology; \"Add standard rules\" ticks everything that applies in one press.\r\nThe rule list is filtered to the geometry of the layer you picked, so an\r\nimpossible combination cannot be built.\r\n- New report window, the equivalent of the ArcGIS Error Inspector: a green\r\nor red banner, one row per rule with its error count, and - the part a\r\nplain list of violations leaves out - the tool that repairs that kind of\r\nerror, opened with the layer and tolerance already filled in. Dangles\r\noffer Extend / Snap Endpoints / Trim, crossings offer Split with Lines,\r\ncoverage errors offer Snap Geometries, and where no tool can decide the\r\nanswer the panel says so and offers to start editing instead.\r\n- New \"Validate again\" button: re-runs the same rules and shows each one as\r\n\"37 -> 0 (fixed)\" against the previous counts, with the banner reporting\r\nhow much better or worse things got, and stating plainly when nothing is\r\nleft to fix.\r\n- Reports can be saved as a standalone HTML page or a CSV.\r\n- Errors can be accepted as exceptions from the report; exceptions from a\r\nsaved error layer can be carried into the next run.\r\n- The panel now holds its layers by id rather than by object, so removing a\r\nlayer from the project no longer leaves it holding a dead reference.\r\n- New offline tests: tools/tests/test_rule_catalog.py checks every rule's\r\nalgorithm name, parameters, output keys and attribute columns against the\r\nreal algorithm sources (276 assertions), and tools/tests/test_report.py\r\ncovers the counting, the before/after comparison and both export formats\r\n(33 assertions).\r\n\r\n1.8.1\r\n- Fixed: \"Point Must Be Covered By Line\" reported distance = -1 for\r\npractically every error. The candidate search window was only as wide\r\nas the tolerance, and an error point is by definition further away\r\nthan that, so no nearest line was ever found. It now widens the search\r\nvia the spatial index when a point misses, and reports the real\r\ndistance - which is what makes the column sortable by severity.\r\n- Added tools/tests/: an offline test harness that runs the algorithms\r\nagainst a stub QGIS API, so the logic can be checked without a QGIS\r\ninstall. 41 assertions across the two-layer rules and the Validate\r\nTopology orchestration. See tools/tests/README.md for what this does\r\nand does not prove.\r\n\r\n1.8.0\r\n- New: the TopoTidy panel, a dock widget opened from the toolbar button\r\nor Vector > TopoTidy > TopoTidy Panel. Three numbered steps - pick the\r\nlayers, tick the checks, review the results - so a full validation no\r\nlonger means assembling a workflow out of Toolbox dialogs.\r\n- Clicking a result row zooms the map to that problem and highlights it,\r\nwhich is the piece the Processing Toolbox cannot offer.\r\n- Rows can be marked as acceptable (status \"exception\") straight from the\r\npanel, and the error layers can be added to the map in one click.\r\n- A \"Fix things\" section opens the geometry-changing tools (Snap, Trim,\r\nExtend, Remove Duplicates, Remove Disconnected) in their usual dialogs.\r\n- The panel is a front-end only: it runs the same validate_topology\r\nalgorithm as the Toolbox, so results are identical either way and\r\nanything done in the panel can be reproduced in a model or script.\r\n\r\n1.7.0\r\n- New: \"Validate Topology (run several rules at once)\" - the batch\r\nvalidation pass. Pick a point, line and/or polygon layer, tick the\r\nrules to run, and every violation is collected into three error\r\nlayers (point / line / polygon, since one layer cannot mix geometry\r\ntypes). Each error carries the same columns whichever rule produced\r\nit: rule, layer, fid_a, fid_b, value, status.\r\n- New: exception handling. Errors are written with status \"new\"; mark\r\nthe acceptable ones as \"exception\", save the report, and pass it back\r\nvia the \"previous error layer\" parameter on the next run to have them\r\nreturned as exceptions instead of new violations. Matching is by rule\r\nplus feature IDs, so it survives geometry being redrawn.\r\n- Rules whose input layer was not supplied are skipped rather than\r\nfailing the run, and a per-rule summary is printed to the log.\r\n\r\n1.6.0\r\n- New: topology rules that compare TWO layers, the ArcGIS-style\r\n\"must ... of another feature class\" checks. Cross-layer validation no\r\nlonger requires leaving TopoTidy for the core Topology Checker:\r\n* Must Not Overlap With (polygon vs polygon)\r\n* Must Be Covered By Boundary Of (line vs polygon)\r\n* Point Must Be Covered By Line (point vs line, with an optional\r\nstricter \"endpoints only\" mode)\r\n* Must Be Inside (point or line vs polygon, with an optional\r\n\"strictly inside\" mode)\r\nAll four take a tolerance, report the offending geometry itself (the\r\noverlap area, the uncovered stretch, the stray point), and warn in the\r\nlog when the two layers use different CRSs.\r\n- New shared module topology_pairs.py holding the reference-layer\r\nindexing and candidate lookup used by every two-layer rule.\r\n- 4 new Before/After help illustrations, generated by the same script as\r\nthe existing 14, so all 18 share identical type sizes and layout.\r\n\r\n1.5.1\r\n- All 14 help-panel Before/After illustrations regenerated from a single\r\nshared script (tools/make_illustrations.py), so every image now uses\r\nexactly the same type sizes: DejaVu Sans Bold 16 px for the\r\nBEFORE/AFTER label and DejaVu Serif Bold 12 px for the caption under\r\neach panel. Previously only \"Extend\" used the 12 px caption; the other\r\n13 illustrations rendered their caption at roughly a quarter of that\r\nsize (3-4 px of ink), which was unreadable in the QGIS help panel.\r\n- Panel geometry, palette and the arrow between panels are now identical\r\nacross all 14 images.\r\n- Captions reworded for consistency (the previous ones were too small to\r\nread); edit the SPECS table in tools/make_illustrations.py and re-run\r\nthe script to change any wording.\r\n\r\n1.5.0\r\n- New tool: \"Extend\" - the counterpart to \"Trim\". Extends dangling\r\n\"undershoot\" line endpoints forward, along the direction of their\r\nfinal segment, until they meet another feature (closing small gaps\r\nleft where a line was digitized a little short of a junction).\r\nIncludes the same \"Max extend length\" / \"Junction tolerance\"\r\nparameters and \"Output mode\" (new layer vs. in-place) choice as the\r\nother fixer tools.\r\n\r\n1.4.0\r\n- All help-panel illustrations redrawn from scratch: fully in English\r\n(was Indonesian \"SEBELUM/SESUDAH\"), pixel-precise and perfectly\r\naligned (previously hand-drawn shapes could look slightly offset/\r\njittery), and generally clearer - especially \"Must Not Have Gaps\",\r\nwhich now uses two simple rectangles with an obvious gap instead of\r\nan oddly-shaped pair of polygons.\r\n- New tool: \"Trim\" - trims short dangling overshoot spurs in a line\r\nnetwork back to the nearest real junction.\r\n- Every geometry-changing (\"fixer\") tool - Snap Network Endpoints,\r\nRemove Duplicate Lines, Remove Disconnected Network Lines, and the\r\nnew Trim - now has an \"Output mode\" choice: create a brand-new\r\nfixed shp/layer (input untouched, previous behaviour), or edit the\r\ninput layer directly in place with no new output created at all.\r\n- \"Must Be Disjoint\" is no longer report-only: it now has an \"Edit\r\nmode\" choice of Report only / Move overlapping points apart / Delete\r\none point from each overlapping cluster, combined with the same new\r\nOutput mode (new layer vs. in-place) when a fix mode is selected.\r\n- Help text and category badges for every tool translated to English\r\nand clarified.\r\n\r\n1.3.0\r\n- Added a Before/After illustration to every tool's help panel showing\r\nwhat the algorithm does to sample geometry.\r\n- Added a clear category badge at the top of every tool's help panel:\r\n\"creates a new FIXED shp/layer\" for the 3 network-cleanup tools (Snap\r\nNetwork Endpoints, Remove Duplicate Lines, Remove Disconnected Network\r\nLines), or \"creates a new REPORT-only shp/layer, input untouched\" for\r\nthe 9 topology-rule-check tools.\r\n\r\n1.2.1\r\n- Fixed 49 Qt6-incompatible unscoped enum references (e.g.\r\nQgsFeatureSink.FastInsert -> QgsFeatureSink.Flag.FastInsert,\r\nQgsProcessing.TypeVectorLine -> QgsProcessing.SourceType.TypeVectorLine)\r\nacross all algorithm files, for compatibility with upcoming Qt6-based\r\nQGIS builds. No behavior change; fully-qualified enum paths work\r\nidentically on current Qt5-based QGIS.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/topotidy/version/1.13.2/download/"}