Skip to content
Octo × Projections PT Request an assessment

Octo for projections and geodesy

The coordinate changes systems. Whether the deviation is acceptable, you decide.

Since February 25, 2015, only SIRGAS 2000 is valid in Brazil, and converting legacy data, GNSS point heights and projection choice can all run in batch with PROJ, GDAL, QGIS and pyproj. Octo inventories the collection, lists the possible operations, forces the best one, checks against checkpoints and measures area and scale instead of assuming. Source realization, tolerance and the signed product stay with licensed professionals.

A terminal transforms coordinates from SAD69 to SIRGAS 2000 with the best operation; Octo, at the center, takes the result to a globe with Brazil's UTM zones highlighted and to a badge showing the normal height computed as h minus eta $ cs2cs --only-best --no-ballpark EPSG:4618 EPSG:4674 -23.41287 -46.98124 -23.41331 -46.98165 0.000 PC-01 deviation 0.08 m ok PC-06 deviation 0.71 m OUT SAD69 → SIRGAS 2000 · NTv2 GRID EXAGGERATED ARROWS · FICTITIOUS DATA ZONES 18S TO 25S 23S · EPSG:31983 HEIGHT HN = h − η ELLIPSOID ogr2ogr -ct_opt ONLY_BEST=YES OCTO × GEODESY SIRGAS 2000 · 2000.4 G-01
PROJ9.9.0from September 15, 2026, with EPSG database v13.102
SIRGAS 2000 only2015transition ended February 25, 2015 (R.PR 01/2015)
IBGE grids on the CDN4SAD69, SAD69(96), Córrego Alegre 1961 and 1970-72
Sources13listed at the end of the page
01

What Octo does with projections and geodesy.

Six possible deliverables, drawn from the research. All work on a copy, with the PROJ and EPSG database versions recorded, and all go to review by whoever is accountable for the product.

CRS inventory of the collection

Reads the declared system of each layer with ogrinfo -json and gdalinfo -json, identifies the EPSG code and separates what is already SIRGAS 2000, what is SAD69 or Córrego Alegre, what is WGS 84 and what has no CRS.

Deliverable: spreadsheet per layer, without changing anything

Migration to SIRGAS 2000

Converts SAD69, SAD69(96) and Córrego Alegre with IBGE's grids distributed on the PROJ CDN, forcing the best operation and failing when the grid is missing, instead of falling back to an approximation.

Deliverable: converted copy + log + check

Explicit operation

When the accountable professional pins the method, it carries the same operation to ogr2ogr -ct, to the OPERATION parameter of qgis_process, to ST_TransformPipeline in PostGIS and to pyproj's Transformer.

Deliverable: one pipeline, the same in every tool

Normal heights for GNSS points

Computes HN = h − η with the hgeoHNOR2020 grids, choosing the grid by polygon (Imbituba, Santana, western strip), and compares with IBGE's official service and nearby benchmarks (RN).

Deliverable: table per point with uncertainty and difference

Measured projection choice

Measures area, scale and convergence in UTM, Albers (EPSG:10857) and Polyconic with Proj.get_factors and compares with the geodesic area, so whoever decides can see the effect of each option in numbers.

Deliverable: table of options with pros and cons

The same result on every machine

Compares PROJ, EPSG database and grid versions across workstations and the server, because 9.8.1 rolled the EPSG database back from v12.049 to v12.029 and two machines may convert differently.

Deliverable: version and difference chart
02

Eight arms, one checked coordinate.

The same Octo cycle, applied to reference systems. Each arm has a narrow role; the ones who decide the realization, accept the tolerance and sign the product are people.

  1. Discovery

    Surveys what already exists

    PROJ, GDAL, QGIS, PostGIS and EPSG database versions on each machine, installed grids and the declared CRS of each file in the collection.

  2. Data

    Pins down references

    CRS of each layer, source realization, height type (ellipsoidal, normal, inherited) and the field where the height lives.

  3. Security

    Takes care of access and data

    Official collection read-only; separate working copies. Cadastral data with personal information stays in the client's environment and is assessed (LGPD) before going to any external service.

  4. Architecture

    Picks the path

    ogr2ogr or qgis_process; automatic operation with ONLY_BEST or a pinned pipeline; local grid or CDN; local computation checked against the IBGE service.

  5. Development

    Writes the script

    Python and shell with a log, a trial mode, an explicit failure when the grid is missing and the source of each syntax noted in the file.

  6. Review

    Checks by the numbers

    Independent checkpoints, IBGE's official service and nearby benchmarks. No errors is not the same as checked.

  7. Release

    Delivers the copy

    Only with your OK, it delivers the converted copy and the report. Replacing the official collection is done by a person.

  8. Documentation

    Records what applies to your project

    PROJ and EPSG database versions, operation used, grid and SHA-256, accepted tolerance and who accepted it. A choice made for one project does not automatically apply to another.

Octo works with read access and as support. It does not decide the realization, does not set tolerances, does not sign products and does not replace ProGriD or the IBGE service as the official reference.

03

Each task, its own path.

The criteria Octo uses to choose, with the documentation for the installed version.

TaskPathNote
Know what's in the collectionogrinfo -json -so, gdalinfo -json, projinfo --identifyNothing is changed
List operations and accuracyprojinfo -s A -t B --summary--spatial-test intersects and --area change the list
Download only the grid you needprojsync --file br_ibge_SAD69_003.tifOr PROJ_NETWORK=ON; on a closed network, copy the grid
Transform pointscs2cs --only-best --no-ballparkError if the grid for the best operation is missing
Transform vectorsogr2ogr -ct_opt ONLY_BEST=YES or -ct with a pipeline-ct_opt since GDAL 3.11
Reproject in QGIS in batchqgis_process run native:reprojectlayer with OPERATIONOverrides the project setting for that layer
Reproject in the databaseST_Transform; ST_TransformPipeline to pin the methodCheck the PROJ version linked to PostGIS
Normal heighthgeoHNOR2020 grids + IBGE serviceNot on the PROJ CDN
Height included in the transformation3D CRS on both sides (cs2cs --3d)Since PROJ 9.1, without 3D on both sides the height doesn't change
Measure distortionpyproj.Proj.get_factors + GeodGeodesic area as the reference
04

From one-off conversions to an in-house standard.

Three steps. Each one only makes sense after the previous one has shown results on your team.

A proposal, not a promise

1 Today

Inventory and check

Octo shows what's in the collection and how each machine converts, without changing anything.

  • CRS spreadsheet per layer
  • Chart of PROJ, EPSG database and grid versions
  • List of questions about the realization
Benefit: know the size of the problem before converting
2 Next

Migration and heights in batch

Conversions with the best operation, checked against checkpoints, and normal heights checked against the official service.

  • Collection converted on a copy, with a log
  • Normal height per point with uncertainty
  • Deviation report for the accountable professional
Benefit: the team reviews deviations, not file after file
3 Later

In-house reference standard

Approved operations become pinned pipelines, the same in QGIS, the database and the scripts.

  • Approved pipeline per data type
  • Chosen projection and rationale per product
  • Automatic check on every new file
Benefit: the same coordinate in every tool
05

Confirmed by sources.

Every point below has a source published by the responsible body (Planalto, IBGE, the Brazilian Army, CONCAR), by the project or by the standards organization. The sources are in the next section.

4

points with a published source, each with its reference alongside.

ConfirmedSIRGAS 2000 only since February 25, 2015
R.PR 01/2015 ended the transition, ended the concurrent use of SAD 69 and Córrego Alegre, and treats WGS 84 and SIRGAS2000 as identical for positioning after January 1, 1994.Source: IBGE, R.PR 01/2015 (geoftp.ibge.gov.br)
ConfirmedGrids outside ProGriD
The grids are two-dimensional only, require knowing the source realization, and IBGE takes no responsibility for their use outside ProGriD, in third-party systems.Source: IBGE, R.PR 01/2015, annex, items 1.1, 1.3 and 1.6
ConfirmedhgeoHNOR2020
HNmod = h − η; five 5′ grids (Imbituba, Santana, MAPGEO2015 western strip); RMSE of 6.5 cm at the 1,297 stations of the final computation; the service interpolates by bicubic spline and returns .txt, .csv and .kml.Source: IBGE, Relatórios Metodológicos vol. 47 (2021)
ConfirmedIBGE grids in PROJ
Four br_ibge grids on the CDN, converted from NTv2 to GeoTIFF, CC BY-SA 4.0. For the SAD69 grids, the declared area of use (south of 14° S and east of 53° W) is narrower than the grid rectangle. hgeoHNOR2020 is not on the list.Source: cdn.proj.org and the CDN's files.geojson
06

What Octo does and what stays with you.

Octo prepares everything, but does not sign. The document of record stays with whoever is accountable for it.

Octo prepares

Surveys, calculates, organizes and produces the documents: spreadsheets, reports, sheets, maps and drafts.

Deliverable: material ready to check

Your team checks

The licensed professional checks what Octo delivered before signing. If something doesn't add up, it goes back to Octo with the correction.

Step: review by the signer

Who signs

Octo does not sign. Designs, technical reports, ART/RRT (Brazil's professional responsibility records), accountability reports and any official document are still signed by the company's or agency's licensed professional: here, the cartographic engineer or another licensed professional, with an ART; official data goes into the INDE only after approval by the competent authority.

Sign-off: licensed professional, with ART
07

Sources.

Documents from IBGE, SIRGAS and the PROJ, GDAL, QGIS, pyproj, geopandas and PostGIS projects used in the research, accessed on October 31, 2026.

Your collection in SIRGAS 2000, checked point by point.

The assessment starts with an inventory of the collection and a chart of the versions each machine uses, without changing anything. You get the list of what to convert, of the questions only your team can answer and of how to check, and decide with it in hand.