5.6 kmof conductor vectorised from one 118.8-million-point survey
A processing chain that takes a raw mobile-mapping point cloud and returns the overhead electrical network as drawable geometry: conductor spans fitted with the curve a hanging cable physically follows, poles as 3D points, and every span carrying its own fit error, sag and support percentage so a reviewer can sort the doubtful ones to the top instead of inspecting all of them.

A survey and geodata contractor delivering classified point clouds and utility asset geometry to network operators. Their classification runs on proprietary desktop tools licensed per seat at thousands each, and the step after it, turning classified wire points into line geometry a CAD or GIS user can actually draw with, is still largely manual.
Point-cloud classification is locked to per-seat desktop licences, and the drawing step after it is manual. Both costs scale with the size of the survey rather than with the value of the deliverable, which caps how much work can be taken on.
The chain runs on open-source components in Python, so the per-seat licence leaves the vectorisation step and the cost of a larger survey becomes compute rather than seats. Output is GeoJSON and DXF from the same geometry, so it lands in GIS and CAD without a conversion stage in between.
A conductor scanned from a street-level vehicle returns sparsely and in pieces. A single wire arrives as dozens of fragments broken by occlusion, parallel conductors in a bundle sit centimetres apart in plan, and a transmission corridor overhead is an order of magnitude sparser than the distribution network at street level, which is what lets it disappear entirely under defaults tuned for the latter.
Classified wire points are clustered into candidate spans, parallel conductors sharing a corridor are split apart on their lateral offset and sag cross-section rather than fitted as one thick line, and each span is fitted with the catenary a hanging cable actually follows, with parabola and straight-segment fallbacks. Poles take a separate path, clustered in plan only so a full vertical structure stays a single object. Spans broken by occlusion are merged back where the pieces are collinear and the refit holds.
Nobody inspects every span in a survey this size in 3D. Output that cannot say which of its own spans to distrust is output that has to be checked in full, which puts the manual cost straight back in.
Every span carries its own quality metrics, fit error on both axes, sag, point count, gap profile and the percentage of its length actually supported by returns, and the review viewer sorts and filters on any of them. Review starts with the spans worth doubting rather than with span zero.
Spans behind points are occluded, and that is the signal. A line partly hidden by the cloud is inside the conductor returns; one drawn fully unobstructed is floating in front of them.
The measurements kept moving the bottleneck, and we published where it had moved to each time rather than the number that flattered whichever stage we were working on. Geometry was never the limit; classification recall was. And two defaults, a height ceiling and a merge distance, were discarding an entire transmission corridor before anything downstream could see it. That is only findable if the pipeline is instrumented to be argued with.
Architecture evaluation
Two deep-learning segmentation architectures benchmarked on standard aerial and vehicle-mounted point-cloud datasets, with per-class metrics measured rather than taken from published tables, to pick the foundation for a production tool.
Vectorisation chain
Span clustering, bundle splitting, catenary fitting and the separate pole path, exporting GeoJSON and DXF, validated against ground-truth labels on a public benchmark tile.
Recall recovery and tile scale
Probability thresholding plus a classifier-independent corridor recovery step that recruits by geometry rather than by score, and tiled inference so a whole tile could be processed instead of a window.
Production survey
The chain run end to end on a 118.8-million-point mobile-mapping survey, with the parameter defaults re-derived against that data and a 3D review pass over the result.
Two defaults were the difference between the survey's transmission corridor existing in the output and not existing at all: a height ceiling that discarded roughly a quarter of a million points above twenty metres before fitting ever ran, and a merge distance shorter than the gaps occlusion leaves in a wire scanned from street level. Raising both recovered half a kilometre of high-confidence line that no previous export contained.
| Measure | Before | After |
|---|---|---|
| of conductor vectorised | 4,748 m | 5,644 m |
| spans fitted and graded by confidence | 317 | 333 |
Total length is the obvious aggregate and it prefers the wrong answer. Only the corridor-specific figure exposes conductors chaining across each other instead of along themselves.
Catenary span fitting
Each conductor is fitted with the curve a hanging cable physically follows, with parabola and segment fallbacks, and reports its own residual error.
Bundle splitting
Parallel conductors sharing a corridor are separated on lateral offset and sag cross-section rather than being fitted as one thick line through the middle.
Occlusion merging
A wire arriving as fragments is rejoined where the pieces are collinear and the refit holds, instead of being delivered as debris for someone to stitch by hand.
Per-span confidence tiers
Every span is graded and carries point count, support percentage, gap profile, sag and both error axes, so a review pass can start with what is worth doubting.
Pole extraction
Poles are clustered in plan only, so a full vertical structure stays one object rather than splitting by height, and are exported as 3D points with their height.
CAD and GIS output
GeoJSON line strings and DXF polylines generated from the same geometry, plus a browser viewer that draws the spans through the point cloud they were fitted to.
A mobile mapping vehicle drives a network and returns a hundred million points. Somewhere in that cloud is the overhead electrical network, and what the customer actually needs is not the points but the lines: each conductor span as a drawable curve, each pole as a point, in a file that opens in CAD and in GIS.
Getting there is a geometry problem more than a machine-learning one. Classified wire points are clustered into candidate spans, then parallel conductors sharing a corridor, which sit only centimetres apart in plan, are split apart on their lateral offset and the shape of their sag in cross-section. Each resulting span is fitted with a catenary, the curve a cable hanging under its own weight physically takes, with simpler fallbacks where the data will not support it. Poles run a parallel path, clustered in plan only so that a full vertical structure stays one object instead of breaking into slices by height.
Scanned from a street-level vehicle, a wire twenty-five metres up returns sparsely and arrives as debris: dozens of fragments broken wherever something stood between the sensor and the cable. Those pieces are merged back together where they are collinear and the refit holds, which is what turns a scatter of stubs back into a span.
Two defaults on this survey were worth more than any algorithmic change. A height ceiling tuned for the distribution network at street level was discarding every point above twenty metres before fitting ran, and the transmission corridor lives at twenty-two to thirty. And the distance allowed when rejoining broken pieces was shorter than the gaps occlusion actually leaves at that height, so even a clean rejoin was structurally impossible. Raising both took the survey from 4,748 to 5,644 metres of conductor, and produced eleven high-confidence spans entirely above twenty metres where previous exports had none at all.
None of that is useful without a way to distrust it. Every span is delivered with its own numbers, fit error on both axes, sag, point count, the gap profile along its run and the percentage of its length genuinely supported by returns, and the review viewer sorts on any of them. Occlusion becomes the check rather than the nuisance: a span drawn behind the points sits inside the conductor returns, and one floating clear of them does not.
Classification and vectorisation are separable problems, and the second one is mostly geometry. Book a technical session and we will look at a tile of your data and tell you which half is worth automating first.