For the complete documentation index, see llms.txt. This page is also available as Markdown.

Georeference Map

Georeference API

Georeference a 3D map by tying its map-local coordinate frame to real-world WGS84 coordinates. You provide a set of control points, each pairing a map-local position (x, y, z in meters) with a known geographic location (latitude, longitude, altitude). The server solves the map's origin and heading from these pairs, so no compass heading is required.

Once a map is georeferenced, you can use GPS-based localization features such as GeoHint and receive results in geographic coordinates. See Georeferencing Maps for the underlying concept.

Provide at least 3 control points. They must not all lie on the same vertical line (they cannot be horizontally coincident), otherwise the heading cannot be resolved. More well-distributed points improve accuracy. Use at least 6 decimal places for latitude and longitude to reach centimetre-level accuracy.

Georeference a map from control points

post

Georeferences a 3D map by fitting its map-local coordinate frame to real-world WGS84 coordinates using a set of control point pairs. Each control point ties a map-local position (x, y, z in meters) to a known geographic location (latitude, longitude, altitude). The origin and heading are solved from the point pairs, so no compass heading needs to be supplied. Requires at least 3 control points. Re-running overwrites the map's existing georeference.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
mapCodestringRequired

The public code of the map to georeference.

Example: MAP_RJFKKWQ1787J
Body
solveScalebooleanOptional

When true, also solve a uniform scale factor. Useful as a data-quality check: a correctly scaled metric scan should return a scale close to 1.0. The scale is reported only and is not applied at query time.

Default: falseExample: false
rejectOutliersbooleanOptional

When true (default), iteratively drop control points whose horizontal residual exceeds outlierThresholdMeters, then re-fit. Recommended, since real GPS surveys usually contain a few bad fixes. The fit will not drop below 3 points.

Default: trueExample: true
outlierThresholdMetersnumberOptional

Horizontal residual (in meters) above which a control point is rejected as an outlier. Only applies when rejectOutliers is true.

Default: 2.5Example: 2.5
Responses
200

Map georeferenced successfully

application/json
messagestringOptionalExample: Map geo-referenced successfully
mapIdstringOptional

Internal ID of the georeferenced map.

headingnumberOptional

Solved heading in degrees (0 to 360, clockwise from true north).

scalenumberOptional

Solved uniform scale factor (1.0 for a metric scan). Reported only; not applied at query time.

rmseMetersnumberOptional

3D root-mean-square residual across inlier control points.

horizontalRmseMetersnumberOptional

Horizontal-only RMSE across inliers. This is the reliable accuracy metric, since GPS altitude is noisy.

maxErrorMetersnumberOptional

Largest residual among the inlier control points.

numControlPointsintegerOptional

Total number of control points provided.

numInliersintegerOptional

Number of control points kept after outlier rejection.

inliersstring[]Optional

Names of the control points used in the final fit (null for unnamed points).

rejectedstring[]Optional

Names of the control points dropped as outliers (null for unnamed points).

post/vps/map/{mapCode}/georeference

Sample Request

Sample Response

Reading the Result

The response reports both the solved georeference and quality metrics so you can judge the fit:

  • origin and heading are the solved values applied to the map. origin is the WGS84 location of map-local (0, 0, 0), and heading is degrees clockwise from true north.

  • horizontalRmseMeters is the most reliable accuracy indicator. GPS altitude is noisy, so horizontal error is the number to watch.

  • scale is reported only when solveScale is true and is not applied at query time. A metric scan should return a value close to 1.0; a value far from 1.0 suggests a scaling problem in the scan.

  • inliers / rejected and residuals show which control points were used and how far each landed from the final fit, so you can spot and remove bad GPS readings.

  • tiltCheck verifies that the solved up axis is close to true vertical, confirming the map is gravity aligned.

Georeferencing is idempotent: calling the endpoint again overwrites the map's existing georeference with the new solution.

Last updated

Was this helpful?