Field guide
From two point files to a reviewable deviation report
Start with correspondence and a shared coordinate background. Then calculate the differences and explain what each result can support.
Compare corresponding observations, not just two files
An as built survey comparison answers a specific question: how far does an observed point lie from its corresponding design position? A byte comparison cannot answer that question. A changed row order may produce many text differences while every coordinate remains the same. Conversely, one small coordinate edit can matter more than a completely different file layout. This workspace reads two independently mapped point files and reports the displacement for each confirmed pair.
Use it for a review of surveyed anchors, column positions, set-out checks or other identifiable points. The calculation does not establish that the correct physical feature was measured. Keep the field notes and point descriptions alongside the report. A matching identifier is useful evidence of an intended correspondence; it is not an independent check of the instrument setup, observation quality or design revision.
Prepare two files with a shared coordinate background
Start with UTF-8 CSV or TXT exports from your design source and field software. Each file can use comma, semicolon or tab separators, with or without a header. Map point ID, northing, easting, elevation and description separately for each side. PNEZD and PENZD describe column order, not different coordinate systems. If the headings say X and Y, consult the export specification before deciding which axis is northing. XLSX workbooks are also accepted for this input: explicitly choose the worksheet, and replace formulas, dates or error cells with plain values before importing.
The two sources must refer to the same planar grid, local origin and height datum. Their horizontal unit labels must agree, and their elevation unit labels must also agree. Horizontal and vertical units can differ from one another if both files describe them consistently. Record the common reference in the notes field and confirm it before comparing. Convert units explicitly in the format converter when necessary. Changing a label alone does not change the underlying numbers, and this tool performs no datum transformation.
Read each source and inspect the findings
Choose the design file in section A and the measured file in section B, or paste a short table into either input. Review the detected columns, confirm their meaning and read that source. Both sources need to be read before the comparison button becomes available. The importer keeps original fields, source filenames, record identities and physical line numbers, including descriptions that occupy several quoted lines.
A malformed record remains in the source and in the full JSON report. It is never quietly removed to improve the result. Structural errors prevent that paired record from being evaluated. A missing or invalid numeric coordinate prevents the affected component from being calculated. This is especially important for elevation: an empty elevation means no vertical result, rather than a zero height or a successful vertical check.
Choose an auditable matching method
Exact point ID mode matches identifiers as text. Leading zeros, case and surrounding spaces are preserved, so 0012 and 12 remain different identifiers. Only an ID occurring once in each source can be paired automatically. If an ID occurs twice on either side, all unresolved records for that ID appear in the unmatched list. The engine never selects the first or last observation merely because it appears in a convenient row.
When the files use different names, choose explicit source-row pairs. Enter one design line and one measured line per row, separated by a comma. For files with a one-line header, the first data record normally starts at line 2. A record may participate in only one pair. Explicit mode compares only the pairs you list; all other records remain separately accountable. Use field documentation to make those choices, and retain the resulting JSON so another person can review the exact correspondence.
Understand the differences and the direction sketch
Every signed difference is measured minus design. Delta E is the measured easting minus design easting; delta N uses northing in the same order. Horizontal displacement is the square root of delta E squared plus delta N squared. Delta Z is measured elevation minus design elevation. A positive elevation difference therefore means the measured feature is higher than its design point. It does not automatically mean material should be cut: the construction instruction depends on what those features represent.
Select a result row to see both original field arrays and a direction sketch. North is up and east is right. The plotted line starts at a common origin and ends in the displacement direction; its length is scaled for readability. It is not a site plan or a depiction of the point's geographic position. The numeric azimuth is clockwise from north. A zero horizontal displacement has no defined direction, so the report leaves that azimuth empty.
Work through a complete example
The paired synthetic example includes design point 001 at northing 5000.000, easting 2000.000 and elevation 100.000 metres. Its measured counterpart is at northing 5000.040, easting 2000.030 and elevation 100.010. The component differences are therefore delta N = +0.040, delta E = +0.030 and delta Z = +0.010 metres. Horizontal displacement is sqrt(0.040² + 0.030²) = 0.050 metres. The displacement points northeast, approximately 36.869898 degrees clockwise from north.
With example tolerances of 0.050 metres horizontally and 0.020 metres vertically, both components are within the inclusive limits. The second point demonstrates an exceedance, the third lacks elevations, and the repeated DUP identifier demonstrates ambiguous matching. The example values illustrate behavior; they are not recommended acceptance limits. Read both example files and confirm their shared reference before running the calculation, just as you would with a received field file.
Set tolerances before interpreting status
Enter a non-negative finite tolerance for horizontal displacement and another for the absolute elevation difference. Zero is allowed when the task is exact equality. The comparison treats the boundary as included and evaluates unrounded differences, with a small floating-point allowance at nonzero boundaries. Decimal source strings are subtracted before conversion to floating point to reduce cancellation against large coordinate origins. Unsupported numeric extremes remain unassessable.
The horizontal and vertical statuses are separate. A pair is marked within only when both can be evaluated and both meet their thresholds. A pair with one unavailable component and no exceedance is partial. Any evaluable component outside its limit produces an exceedance, while the other component still shows its own status. This prevents missing elevation from appearing as a complete pass. Neither a green status nor the absence of exceedances certifies an engineering survey.
Review exceptions, then export a complete record
Filter by exceedance, partial results or unassessable pairs. Sort by largest horizontal displacement or largest absolute elevation difference, and search a point identifier to locate a specific feature. The table is paginated to remain usable on larger jobs; its page size does not limit exports. Summary statistics use only evaluable components and show their maximum and mean horizontal displacement, together with the maximum absolute elevation difference.
Download all pairs, exceedances or unmatched records as separate spreadsheet-protected CSV reports. The report columns include source lines, unit labels, tolerance settings, reference notes, time and tool version. Display and CSV decimal settings affect presentation only. Save the full JSON for original coordinate strings, additional columns, duplicate-ID groups and exact matching choices. A printed report contains the pair and unmatched lists. Keep the JSON alongside a rounded CSV when a later reviewer may need more precision.
Know what the result cannot establish
This workspace compares corresponding planar points. It does not register a laser scan, calculate a point-to-surface distance, fit a transformation, evaluate a terrain model or infer the identity of neighboring features. Latitude and longitude are not suitable inputs for these planar distances. A large common displacement can be a clue to an origin or reference mismatch, but the software does not diagnose or correct that mismatch automatically.
Processing stays in the browser, and each source is limited to 10 MiB and 100,000 records. Long comparisons run in a worker and can be cancelled without losing input. Clearing or editing a source invalidates the previous result; changing a tolerance also requires a new calculation. Save the review records you need before closing the page. Coordinate content is not placed in a shareable URL or automatically saved in browser storage.