Key takeaway

A tuple can pass latitude and longitude range checks while being assigned to the wrong place. Preserve the format and reference-system conventions that give its numbers meaning.

Ask which number describes which axis

A receiver sees two plausible numbers and assumes the first is latitude. The producer meant longitude. Both numbers remain within ordinary latitude and longitude ranges, so a basic validator reports no problem. The map can place a plausible point at a different location without any malformed data.

RFC 7946 specifies longitude followed by latitude for GeoJSON positions and uses WGS84 coordinates equivalent to CRS84, in decimal degrees. That format rule must not be replaced by a general belief that every geographic tuple is latitude first. Conversely, the rule for GeoJSON does not describe every other geospatial interface.

Supporting referencesRFC 7946: The GeoJSON Format

Use a fixture that cannot hide a swap

This hypothetical receiving contract uses the invented coordinate pair [12,55]. Under GeoJSON’s longitude/latitude convention it means longitude 12 and latitude 55. If the same pair is read as latitude/longitude, it means latitude 12 and longitude 55. Both interpretations pass simple range checks; they are different positions.

A second source explicitly follows the authority axis order for EPSG:4326, shown in the PROJ documentation as latitude then longitude. Its tuple [55,12] can describe the same position as the first GeoJSON tuple when each convention is applied correctly. Raw tuple inequality therefore does not prove geographic disagreement.

The useful acceptance test checks the declared axis meanings and expected position together. Avoid a symmetric fixture such as [10,10], which would conceal a swap. No point here identifies a customer, ship or actual company asset.

Illustrative source conventionTupleInterpretationDecision
GeoJSON / CRS84[12,55]Longitude 12; latitude 55Declared fixture position
EPSG:4326 authority axes[55,12]Latitude 55; longitude 12Same position under explicit convention
GeoJSON tuple misread latitude first[12,55]Latitude 12; longitude 55Reject swapped interpretation
Projected coordinates; CRS missing[500000,6100000]Zone/datum not establishedHold; do not guess a projection

A CRS label does not override an interface contract

PROJ explains that it respects authority-defined axis ordering and documents differences from customary GIS conventions and from particular interfaces. The correct review is therefore more specific than “swap EPSG:4326.” Identify the file format, API or function, its axis convention, library version and any explicit axis-order option used by the pipeline.

Keep the full source CRS description where available. PROJ recommends WKT or authority identifiers over less informative PROJ strings and warns that conversions between representations can lose information. A short label copied from a spreadsheet header may omit the datum, projection or other detail needed to choose a transformation.

If a projected source uses metres, changing its label to GeoJSON or decimal degrees does not reproject the coordinates. Establish the source reference system, a suitable transformation and the target convention before accepting the result. An unknown zone or datum should remain an unresolved fact, not the most convenient interpretation of the numeric range.

Keep height and transformations visible

A third coordinate needs its own meaning. RFC 7946 defines an optional third position value as height in metres relative to the WGS84 reference ellipsoid. A source elevation expressed against another vertical reference should not silently inherit that interpretation. Ask which vertical reference and units the source actually retained.

The mapping record should contain original coordinates, source CRS and axes, target CRS and axes, units, transformation implementation/version, relevant resources and expected fixture results. Preserve the original values alongside the derivative so a later correction can be traced. A successful transformation call establishes an output, not independent accuracy of the source observation.

Inspect representative control positions and the failure behavior for missing reference information. If the package mixes coordinate conventions across periods or systems, use a field/period mapping rather than applying one global swap. The test should expose an incompatible row instead of quietly relocating it.

Release an interpretation someone else can reproduce

For the illustration, the declared GeoJSON [12,55] and authority-ordered [55,12] agree after their conventions are applied. The misread tuple fails; the projected point remains held until its CRS is established. These are four different evidence states, even though every row contains numbers.

The inventory builder can capture reference-system and history gaps before a sample is proposed. The diligence question builder can request the actual receiving convention and fixture result. Correct geographic interpretation does not grant permission to disclose locations, establish anonymization or certify navigation or surveying accuracy. Keep the release claim to the coordinate contract actually reviewed.

Tools for this decision

Data inventory builder →Diligence question builder →