TerraScan + Flai: How to Automate Classification Without Changing Your Delivery Workflow

Most TerraScan users don't need to replace their workflow. What they need is to stop spending most of each project on classification passes that any trained analyst could run in their sleep.
Flai handles those passes automatically. Your team opens the output in TerraScan, cleans up the edge cases and delivers to the client with the same format, the same quality checks and the same deliverable. The only thing that changes is how much of the day goes to repetitive classification instead of work that actually requires judgment.
This post walks through exactly how that integration works, step by step, and where the time savings come from.
Why TerraScan Users Are Looking at Automated Classification
TerraScan is the industry standard for a reason. Its macro system is powerful, its QC tools are mature, and every aerial mapping team has years of macros, parameter settings and operator knowledge built into its workflows.
The problem isn't TerraScan. The problem is what TerraScan asks of your team.
A typical urban project requires multiple classification passes: ground extraction, building identification, low/medium/high vegetation separation and noise filtering. Each pass needs a trained operator, and each operator pass introduces variability. When the next project is queued behind this one, the bottleneck is always the same: classification time.
LiDAR data volumes are growing and drone sensors are everywhere, but the number of specialists who can classify the points has stayed flat. That means your team's capacity ceiling hasn't moved even as the pipeline has grown, so the projects keep arriving while the classification queue refuses to shrink.
That's why people search for "TerraScan automated classification," and it's also why "TerraScan alternative" is such a common search, even though most of the people typing it plan to keep TerraScan. They aren't trying to leave the tool; they want it to do more, faster.
What Flai Actually Does in a TerraScan Workflow
Flai is a point cloud classification engine. You give it raw LAS or LAZ files, and it returns classified LAS or LAZ files with the same class codes TerraScan expects.
That last part matters. Flai outputs standard ASPRS class codes (ground = 2, vegetation = 3, building = 6, water = 9, and so on up to 29 classes). When you open those files in TerraScan, nothing looks foreign, because the layer structure is what your operators already use. If your client's spec calls for low, medium and high vegetation (classes 3, 4 and 5), Flai handles that too: a Reclassify by Height Above Ground step in the same processing flow splits vegetation using the height thresholds from your spec, so the files arrive in TerraScan already stratified.
The Flai CLI runs on your hardware, on-premise or in the cloud depending on your setup. No data leaves your network unless you choose the cloud option, and for teams with data sovereignty requirements, the self-hosted deployment is the same software running on your own server.
Nine Pre-Trained Models
Flai ships nine pre-trained models, all powered by one AI engine and each tuned for a specific capture type. Instead of a one-size-fits-all classifier, you select the model that matches your data, which is why accuracy holds up across the range of projects mapping teams actually run.
- Aerial mapping: the flagship airborne model, covering ground, water, buildings, vegetation, bridges, wires, towers, vehicles, solar panels and more
- Noise filtering: removes atmospheric returns, birds and scan-edge artifacts before any other model runs
- Utilities & powerline: conductors, towers, insulators, guy wires and tension wires for corridor work
- Mobile mapping: road surfaces, sidewalks, signs, traffic lights and other roadside assets from vehicle LiDAR
- Railroad: track, catenary system and rail corridor assets
- Forestry: stems, canopy and ground beneath canopy
- Bathymetry: water surface and seabed from through-water LiDAR
- Indoor / BIM: floors, walls, structural elements and plant equipment for scan-to-BIM
- Defence & public safety: 3D situational awareness for GEOINT workflows
For most aerial mapping teams, the aerial model covers the majority of projects, while the powerline, railroad and forestry models apply to specific deliverables. You select the model that matches the acquisition, and Flai applies it.
The Workflow, Step by Step
Here is a typical flight-strip workflow for an urban project, first done manually in TerraScan and then with Flai running before TerraScan QC.
Before: Manual TerraScan Classification
- Ingest raw LAS: import flight strips and apply trajectory corrections
- Noise filter: run a TerraScan macro to remove low-noise points
- Ground extraction: run the TerraScan ground routine (TIN-based), review it and adjust parameters per strip
- Building classification: run the building detection macro, then manually correct flat-roof failures and overhangs
- Vegetation separation: classify low/medium/high by height above ground and review dense areas
- Additional classes: manually classify bridges, powerlines and cars as the spec requires
- Strip-level QC: check class boundaries at strip edges and reclassify misses
- Final QC: operator review of the full tile set before export
- Export: deliver LAS/LAZ to the client or pass it to further processing
After: Flai + TerraScan
- Ingest raw LAS: import flight strips and apply trajectory corrections (unchanged)
- Run the Flai flow: point the Flai command line tool at the raw LAS directory and run your saved classification flow
- Flai classifies: ground, buildings, low/medium/high vegetation (split by height above ground to your spec's thresholds), noise, water, powerlines, bridges and additional classes in a single pass, with classified LAS/LAZ as output
- Open in TerraScan: the classified output imports directly, and class codes match your existing layer setup
- Edge-case QC: an operator reviews Flai output for site-specific anomalies such as complex building geometry, dense mixed vegetation or spec-specific class requirements
- Additional classes: any project-specific classes outside Flai's output are added manually (smaller scope, since most points are already classified)
- Strip-level QC: check class boundaries at strip edges, starting from automated output instead of manual passes
- Final QC: operator sign-off before export (shorter, because the input quality is higher)
- Export: deliver LAS/LAZ to the client in the same format (unchanged)
Operator time is now concentrated in QC and edge cases instead of classification passes.
Note: Steps 1 and 9 are identical, and steps 2–6 are where the time savings accumulate. The delivery format, client-facing output and downstream pipeline stay the same.
Before vs. After: Who Does What
| Step | Manual TerraScan | Flai + TerraScan |
|---|---|---|
| Noise filter | Operator runs a macro | Included in the Flai run |
| Ground extraction | Operator runs the routine, reviews and adjusts per strip | Automated |
| Building classification | Macro plus manual correction | Automated, operator checks edge cases |
| Vegetation separation | Operator applies height thresholds and reviews | Automated, split to your spec's height thresholds |
| Additional classes (powerlines, bridges) | Fully manual | Automated where the model covers them |
| Strip-level QC | Full boundary check | Boundary check on automated output |
| Final QC | Full review | Targeted review of known edge cases |
Flai's published figure is 50–99% less editing time than manual classification, and where your project lands in that range depends on scene complexity and the number of classes in the spec.
The Flai processing run happens while your operators are doing other work. It doesn't add to their workload, because it runs in the background and returns classified files for your team to pick up.
What Your Team Keeps Doing
This is worth stating plainly, because it's the part that most often gets lost in conversations about automated classification.
Flai does not replace the TerraScan operators on your team. It removes the repetitive passes that take up most of their time, and what remains is the work your operators do better than any algorithm:
- Site-specific judgment: recognizing that a flat object is a greenhouse roof and not ground, because they know this particular region
- Spec interpretation: understanding that a client's "low vegetation" threshold differs from the default and adjusting for it
- Edge-case review: catching the building that Flai clipped at the roofline because a tree crown was growing through the eave
- Client-specific delivery: making sure the final dataset matches the project spec, CRS, tiling scheme and naming convention
None of that changes. The delivery workflow is identical, the client receives the same format, and your team runs the same QC checklist, which simply takes less time because the input is cleaner.
Accuracy: What to Expect in Production
Flai reaches F1 scores of 0.98+ across key classes, and it produces the same output every time it runs on the same data, which matters when a delivery spec requires consistency across a large campaign.
No classifier is perfect, and it's worth being direct about that. Complex scenes, where classes meet and the geometry is unusual, are where any automated output needs the most review, and they are also the scenes that trip up TerraScan macros. That is why QC stays in the workflow, focused on those scenes instead of spread across the whole dataset.
In Flai's evaluation on data captured with the AISPECO Heliux LITE system, reported savings were up to 50% less manual QC in urban areas and around 25% in rural areas (read the evaluation).
Vegetation stratification works the same way in production. Slovenian transmission operator ELES runs a Flai template that classifies the corridor and then splits vegetation into low, medium and high by height above ground in the same automated run (read the ELES case).
Both figures assume your team uses Flai output for targeted QC rather than skipping review entirely. Automated classification and human QC work together, and that combination is the workflow.
Setting Up the Integration
You set the classification up once in the Flai web app and then run it locally on every project, so the steps are short.
What you need:
- A Linux, Windows (via WSL) or macOS machine with access to the raw LAS/LAZ files, ideally with a compatible GPU (the tool falls back to the CPU without one, at a longer processing time)
- The Flai command line tool, a precompiled executable (installation and system requirements are on docs.flai.ai)
- A Flai license (see flai.ai/pricing)
- A saved Flai flow with local reader and writer nodes, the Aerial Mapping FlaiNet classifier and, if your spec needs it, the Reclassify by Height Above Ground step for low/medium/high vegetation
Running the flow:
run_flai_flow \
--flow_id <your-flow-id> \
--local_point_cloud_reader_1 /path/to/raw-strips/ \
--local_point_cloud_writer_1 /path/to/classified/
The command takes the flow ID plus the folders linked to the flow's reader and writer nodes. Classified files land in the output folder, and you open them in TerraScan exactly as you would any classified LAS dataset. The full walkthrough, including how to find the node keys, is in Running Flai flows on your local machines.
For teams running batch jobs: because it is a single command, the tool is easy to call from an existing automation script, and the same flow runs the same way on every project.
For teams with data sensitivity requirements: the command line tool processes your point clouds on your own hardware. The self-hosted deployment (Flai CORE) runs behind your firewall with no external dependencies.
Frequently Asked Questions
Is Flai a TerraScan alternative?
For classification, yes. Flai replaces the ground, building and vegetation macro passes that take up most of the project time. Most teams searching for a TerraScan alternative don't actually want to give up TerraScan's QC and editing tools, though, so they run Flai first and keep TerraScan for review and delivery. If you want to replace TerraScan classification completely, Flai's output is standard ASPRS LAS that any downstream tool can read.
Does Flai output the same class codes TerraScan uses?
Yes. Flai uses standard ASPRS classification codes, the same scheme TerraScan reads natively: ground is class 2, low/medium/high vegetation are classes 3, 4 and 5, buildings are class 6, and so on. The vegetation split comes from a height-above-ground step in the Flai processing flow, and you set the thresholds to match your client's spec. When you open Flai-classified LAS files in TerraScan, the classes land where your team expects them, so no remapping or conversion is required.
Can I run Flai on existing TerraScan projects without restarting the workflow?
Yes. Flai works on raw, unclassified LAS/LAZ files, so if you have a project mid-flight with unclassified strips, you can point Flai at those strips and classify them before picking up the QC phase in TerraScan. You don't need to restart from scratch or change your project folder structure, which means there's no sunk cost to recover and no disruption to work already done.
How accurate is Flai's automated classification compared to a trained TerraScan operator?
Flai reaches F1 scores of 0.98+ across key classes. Accuracy is lower in complex boundary cases like dense mixed canopy and partially occluded structures, which are also the scenes that need the most manual effort in a TerraScan-only workflow. In the AISPECO Heliux evaluation, that translated into up to 50% less manual QC on urban areas, because there are far fewer misses to correct.
Does Flai slow down the pipeline if it runs before TerraScan QC?
No, it speeds it up. In the AISPECO Heliux evaluation, Flai classified a 3.4 km² dense urban dataset of about 117 million points in 7 minutes 10 seconds (see the processing times), and that runs while your team works on something else. Operators pick up classified files for QC instead of spending hours running classification passes first, which makes project turnaround faster overall.
What happens if Flai misclassifies something?
You correct Flai misses in the TerraScan QC step, exactly where you would correct a macro misclassification today. The difference is that your operators review a fully classified cloud instead of building the classification pass by pass, while the QC and delivery workflow stays the same.
Can I keep classes my team has already classified?
Yes. If your input files already carry labels you trust, such as a ground class your team produced in TerraScan, a Flai flow can keep those input classes unchanged and apply Flai classification to everything else. It uses the Aerial Mapping FlaiNet classifier with conditional remapping, and the output is standard LAS that TerraScan reads without issue (see how it works).
Conclusion
The objection we hear most from TerraScan users is: "We've spent years building this workflow, and we can't afford to break it."
That objection is reasonable, but it assumes automated classification means choosing one tool over the other.
Flai runs before your TerraScan QC, not instead of it. It handles the repetitive volume of ground, buildings and vegetation, so your team's time in TerraScan goes to the work that actually requires judgment. The output format and the delivery stay the same, and the only difference is how many hours the project took.
The easiest way to test this is on a project your team has already completed. Run Flai on the raw strips, open the output in TerraScan next to your manually classified result and compare them, using data you already know against a benchmark you trust.
Start a free Flai trial → Free trials are available for both online and local deployments. Or contact us to run a benchmark on your own data first.