← Field notes

Measurement · September 7, 2026 · 10 min

We read 434 pages of plan sets and got 332 cross-sections

We ran 434 plan-set pages through our reader and digitized 332 stationed cross-sections. Here is the full count, including the set that gave up 28 lines.

Five plan sets, 434 source pages in, 332 stationed cross-sections out, and 6,481 polylines under them. One of those five sets — FL-002, 116 pages — produced 28 polylines off a single page. The largest set, FL-011, gave 15 stationed sections off 171 pages.

We are publishing the whole count, including that page, because every vendor in this space gates on "vector PDF" and not one of them publishes a denominator. "Works on vector PDFs" is a filter, not a yield. Here is our yield, with the ugly row left in.

The count

Plan setSource pagesStationed cross-sections digitizedPolylines exported
test1441242,117
Oregon56881,081
FL-003471042,665
FL-01117115590
FL-002116128
Total4343326,481

"Oregon" is the location, not the owner. The set is FHWA Federal Lands Highway project OR FLAP DOT CRGNSA 100(9), Historic Columbia River Highway, public domain, pulled by hand from SAM.gov on 2026-09-04. It is not Oregon DOT.

The run also throws work away, and it counts what it throws away rather than dropping it quietly: 4,661 fragments shorter than 5 ft, 64 over an export cap, and 994 with no horizontal extent on the Oregon set. Sections withheld because the station number could not be read: 0, on all five sets. Reading the station was never the thing that stopped us here.

What 332 is not

332 is the number of cross-sections that came out. There is no denominator. Nobody has counted how many stationed sections exist across those 434 pages, so 332 is not coverage, not a hit rate, and not recall. If you divide it by anything on this page you will get a number that means nothing.

Two more limits, stated plainly. First, no set of results on disk was produced by the engine as it stands today — the counts above came off two earlier builds (eng2:93d3981c1a78adf8 and eng2:eb8296d2cb079217) and the current build is a third (eng2:e5b8092cdb02022e). Second, and more important: of the 26 result sets on disk, all 26 are marked not exportable, carry no surface at all — zero points, zero faces — and record a refusal. Every one of them refuses for the same three reasons — the handedness of the section frame is unconfirmed, the alignment is absent, and the alignment's curvature is unknown.

Mathyra has never shipped a surface. Not a trial one, not a partial one. 6,481 polylines is a count of geometry recovered off paper, and geometry recovered off paper is not a dirt model. Anyone quoting a line count at you without saying whether it ever became a surface is quoting you the easy half. Our reason for emitting a named refusal instead of a plausible number is why the engine refuses to guess.

What a page has to carry before anything comes off it

A cross-section sheet is only recoverable if four things are simultaneously true, and vector geometry is only the first.

The page has to be drawn, not scanned. Real path objects with coordinates, not a raster image of lines. That is the gate every vendor advertises.

The station has to be readable as text. If the station label is outlined, converted to curves, or split across text runs, the section has no name and cannot be tied to anything.

The vertical scale has to be recoverable. Cross-section grids carry an elevation ladder up the side, and the numbers on that ladder are what turn a y-coordinate on a page into an elevation. Without it you have a shape, not a grade.

The offset scale has to be recoverable and its zero has to be locatable, because the offset zero is what names which roadway you are looking at.

Miss any one and the page yields nothing — while still being a perfectly good vector PDF.

One comma

Here is how thin the margin is. A pattern in our code that read numbers off the elevation ladder accepted at most four digits and no punctuation — the four-digit rule that discarded every elevation label above 9,999. It is applied in exactly two places, both of them reading that ladder. An elevation printed as 6,550 — with the comma a drafter would naturally type — did not match, and was discarded before any vertical scale could be fitted to the page.

Fixing that one pattern took a Colorado set — a corpus set, not one of the five above, so none of these numbers are in the 434 — from 0 to 26 stationed sections, 854 polylines, 39,787 coordinates. Vertical scales recovered went from 0 to 208, across 137 attempts to fit one. Oregon was unchanged at 88 sections and four existing result sets came out byte-identical, which is how we knew the change was surgical rather than lucky.

Colorado then refused to ship anyway, for a separate and good reason.

We do not have per-page reason codes for FL-002's other 115 pages, so we cannot tell you why they gave nothing — only that they did. We also cannot currently split 434 into cross-section sheets versus plan, profile and detail sheets, so the 434 is every page in the five sets, not 434 section sheets.

Vector is necessary. It is nowhere near sufficient.

Windows go missing. On one 56-page set — the Oregon cross-section volume — 100 of 211 offset scales were lost by the routine that decides where one section's grid ends and the next begins. A candidate fix reaches 162 sections, but the 76 newly reached sections score a median 1.106 ft against the 84 already-carried sections' 0.323 ft, so the new ones are visibly worse than the ones we had. That fix is deferred, not merged; the shipping code still uses the old routine, and a test holds the deferral in place so it cannot be merged by accident. We made the loss visible. We have not fixed it.

You cannot tell the lines apart. A drafter's pen setting — width, colour, dash pattern — is the only machine-visible handle on which line is subgrade, which is finished grade, which is existing ground. These pen-setting counts were measured over a different section population than the census table above — 86 Oregon sections and 111 FL-003 sections, against the table's 88 and 104. The style-family work ran under a later engine than the packages the census table describes, and we do not currently reconcile the two populations set by set. Treat the two tables as two measurements, not one. On Oregon, sections carry between 1 and 7 distinct pen settings: 19 sections have one, 22 have two, 13 have three, 12 have four, 8 have five, 9 have six, 3 have seven. Only 19 of 86 sections are unambiguous. On FL-003 it is worse and more uniform: every one of the 111 sections in this measurement carries between 8 and 15 distinct pen settings, with 10, 11 and 12 the most common. Zero of 111 are unambiguous.

The legend does not rescue this, and neither does the style itself — why a pen setting does not tell you which line is the dirt. On this corpus, legends do not map line styles to surfaces, and the layer names that would disambiguate them live in the PDF's layer metadata rather than printed on the sheet. This is not a complaint about any agency's drafting — it is a plan set doing exactly its job, which is to be read by a person. More on what that job implies for automation.

The worst defect on this page is ours

We join drawn strokes into continuous lines by matching endpoints. That routine never asks whether the joined result is still a single value at each offset — whether it is still, in plain terms, a ground line rather than a scribble. 37% of one pen family's polylines come out multi-valued.

The worst case we have measured is Oregon page 21, station 40575: a ground line traced out and back over the same offsets, then dropped 64.04 ft straight down at offset 39.83 where it terminated on the plot frame — one of the frame, grid and title-block furniture an extractor mistakes for ground — all inside one exported polyline. That is a busted section — the kind of line that, in any tool a contractor actually relied on, would reach a takeoff unnoticed.

The run does catch it, 305 times, under a named refusal for conflicting elevations at the same offset. We tried the obvious repair — split every polyline at each reversal — and the count went from 305 to 305. The collisions are between the pieces, not inside them. Still open.

We are more comfortable publishing this than the census. A count you cannot check is marketing; a defect with a station number on it is something you can hold us to.

The two places something other than our own code has scored us

Sixty elevations were frozen off the sheets before the reading code was written, read by hand by a person who could not see the software's answer; 59 were scoreable. Against those 59, the run scores p95 0.126 ft with 58 of 59 within 0.50 ft. The same bytes previously scored p95 0.892 ft; the change to 0.126 ft is entirely a correction to the measuring harness, not an engine improvement. The harness had been misreading closed pavement boxes; the bytes being scored did not change at all. Two further caveats belong with it: the hand readings were recorded to 0.1 ft, so roughly 0.05 of that 0.126 is the reader's own rounding, and no elevation was ever read twice, so the reader's repeatability was never tested. The canonical artifact for this gate reads FAIL and is deliberately kept out of our v1 roster. The earlier version of this same measurement is the half-foot that was not there.

Separately, on one corridor, we scored our digitized sections against the designer's own LandXML. The grade line lands at median 0.325 ft, p95 0.833 ft, over 86 sections — but only after a fix to how we scope the vertical scale, which moved that p95 from 3.619 ft. Matching individual pen families to actual surfaces is far weaker: the solid black family lands within 0.50 ft of the finished TIN on 19 of 80 scored sections, median RMS 1.503 ft over 80 scored sections on one corridor. Every semantic classification the run proposed came back ABSTAIN. Zero classes confirmed.

And that comparison is worth less than it looks. The agencies themselves document that cross-section sheets are plotted from the same corridor model the bid-package LandXML is exported from. We have not measured that dependency; we adopted it as a binding limit on what our own numbers can mean, and under that limit scoring our reading against the designer's model measures plot recovery rather than accuracy: it cannot say how close either one is to the ground. Which means a sheet-versus-model comparison can retire exactly one leg of our standing disclaimer — the designer's model — and can never touch the surveyed value or the hand-read elevation.

Why the denominator is the number you actually need

The reason a yield figure matters more here than in most software is what these agency documents say about who carries the model's risk. FHWA’s technical brief "Utilizing 3D Digital Data in Highway Construction" (FHWA-HIF-17-031, April 2017) makes an engineering point rather than a contractual one: "The data is often not sufficient for construction due to a variety of reasons. The most notable is that the original ground basis for the design differs to field conditions." The same brief recommends design practices "that prioritize the 3D model as the source of the contract plans," which cuts toward elevating the model, not subordinating it. Caltrans ranks "supplemental project information" last of six contract parts in Standard Specifications 5-1.02 (2025 Edition) and describes electronic design files in the subsection of that name — though whether a given project’s model carries that status is set by its special provisions, not by the Standard Specifications. TxDOT’s PS&E Preparation Manual posts cross sections and 3D models under a section headed "For Information only," with a mandated disclaimer that the data "is for non-construction purposes, only". WisDOT requires the contractor to build to the plans.

So when a takeoff tool tells you it reads vector PDFs, the question that decides your bid is not whether it opens the file. It is: of the sections on these sheets, how many came out, how many were refused, and by what named reason. We have published our 332 and told you we cannot yet supply its denominator.

On cross-sheet agreement — whether the same station read off a plan, a profile and a section tells you the same thing — our current position, carried into the reports themselves, is NOT CLAIMED: the bar was 12 scoreable station comparisons and the honest count is 0, with the most favourable ruling reaching 7. What happened when we compared one station across a plan, a profile and a section. Completeness of the denominator is also NOT CLAIMED: 56 of 104 cross-sheet comparison units are absent across four sets, none with a recorded reason, cause inconclusive. External accuracy is unmeasured, and we say so in the report rather than in a footnote.

Mathyra is in private development. There is no product to buy and no surface has ever left the building. What exists is a count, its limits, and a list of defects with station numbers attached. How we sort what a plan set contains, by truth tier.

Mathyra is in private development. Figures quoted here are measurements from our own engineering runs, with their limits stated; nothing above claims an accuracy we have not shown.