Skip to content
Octo × Thematic PT Request an assessment

Octo for thematic mapping

The script classifies. What the map claims, you decide.

Boundaries and the 2022 Census table come from the IBGE APIs; the join, classification, legend and the 27 sheets, one per state, come from short scripts with QGIS, PostGIS and Python. Octo downloads, checks the codes, shows the same data in several methods side by side and points out the classic mistakes. Which variable, which method, how many classes and what the map claims stay with whoever is accountable for it.

Illustration with fictitious data: a terminal downloads boundaries and a table from IBGE; a density histogram shows where the Jenks and quantile breaks fall; Octo, at the center, takes the same data to three small maps classified in different ways and to a checklist for human review $ IBGE boundaries and table boundaries × table 4714 check the codes $ classification into 5 classes EqualInterval: empty class DENSITY (POP/KM²) · FICTITIOUS — JENKS - - QUANTILES LONG TAIL SAME DATA JENKS QUANTILES EQUAL INTERV. CHOICE → PERSON REVIEW RATE, NOT COUNT NO DATA ≠ ZERO SMALL DENOMINATOR TITLE: PERSON gdf.plot(column="density", scheme=...) OCTO × THEMATIC FICTITIOUS DATA T-05
QGIS4.2.3and LTR 3.44.15, released September 25, 2026, per the roadmap
mapclassify 2.11.017entries in the list of classifiers
Sources13listed at the end of the page
01

What Octo does in thematic mapping.

Six possible deliverables, drawn from the research. All with open-source software or what the client already has, and all go to review by whoever is accountable for the map.

IBGE data, checked

Downloads 2022 Census boundaries and tables through the IBGE APIs, records a SHA-256 hash and checks the codes on both sides before joining. A mismatch stops the batch.

Deliverable: dated folder with boundaries, table and check

Classification compared

The same data in natural breaks, quantiles, equal intervals and head/tail, side by side, with counts per class, a goodness-of-fit measure and an empty-class warning.

Deliverable: comparison figure + CSV for the choice

Symbols and cartograms

Absolute counts become a proportional symbol (area ∝ value) at a point inside the municipality, or a Dorling cartogram, with each unit's displacement reported.

Deliverable: layers ready to symbolize

Flow maps

Origin-destination in PostGIS: curved lines, proportional width, totals at the destination and a table of what each threshold hides, so a person can decide the cutoff.

Deliverable: commented SQL + threshold table

Review of classic mistakes

Counts in a choropleth, no-data painted as zero, rates from small populations, the wrong color ramp, boundaries and data from different years, a legend with no source or year.

Deliverable: list of findings per map

Sheets in batch

Style saved as QML with PyQGIS and an atlas by state with qgis_process, without opening QGIS: title, legend, source, year and reference system on every sheet.

Deliverable: PDFs by state with the approved layout
02

Eight arms, one thematic map.

The same Octo cycle, applied to thematic mapping. Each arm has a narrow role; the ones who choose the variable, the method and what the map claims are people.

  1. Discovery

    Surveys what already exists

    Maps already published, styles, layouts and QGIS projects, source spreadsheets, software version and where each piece of data comes from.

  2. Data

    Pins down the key and the year

    The 7-digit IBGE code as text, the year of the data and of the boundaries, the variable's unit and whether it is a count, a rate or a density.

  3. Security

    Takes care of sensitive data

    Origin-destination surveys, health and social registry data contain personal data; very small population units expose people. Assessed with the client (under Brazil's LGPD data protection law) before anything leaves the environment.

  4. Architecture

    Picks the path

    A figure in geopandas or a sheet in QGIS; symbol, cartogram or choropleth; SQL in PostGIS or a script; atlas from the command line.

  5. Development

    Writes the script

    Download with hash, checked join, compared classification, QML style and batch by state, with the source of each syntax noted in the file.

  6. Review

    Looks for the classic mistakes

    Counts in a choropleth, no-data as zero, empty classes, the wrong ramp, a legend with no source, year or reference system. Checks the map, not just the absence of errors.

  7. Release

    Delivers the proof

    Only with your OK, it generates the sheets in batch in a proof folder. Publishing, printing or sending to the end client is a person's decision.

  8. Documentation

    Records each choice

    Source, table, variable, data and boundary year, method, breaks and reference system for each map. A choice made for one study is not assumed right for another.

Octo works with read access and as support. It does not correct official data, does not choose what the map claims and does not sign cartographic products: that belongs to licensed people.

03

Each dataset, its map and its path.

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

TaskPathNote
Municipal boundaries by stateBoundaries API v3, intrarregiao=municipioSimplified: not suitable for measuring area
2022 Census dataAggregates API v3, table 4714Values as text; symbols for no data
Join table and boundaries7-digit IBGE code, as textStop if a code exists on only one side
Rate or densitySequential choroplethCompare methods side by side
Absolute countProportional symbols or cartogramSymbol area ∝ value
Change with a neutral midpointDiverging choroplethLight center at zero or at the mean
Classifymapclassify or QGIS graduatedSame breaks in both
FlowsPostGIS ST_MakeLine + data-driven widthThreshold decided by a person
Sheets in batchqgis_process run native:atlaslayouttomultiplepdfQT_QPA_PLATFORM=offscreen on a server
04

From a one-off map to a self-updating atlas.

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

A proposal, not a promise

1 Today

On-demand maps, reviewed

You describe the map and Octo downloads the data, checks the join and shows the classification options before the final figure.

  • IBGE download with hash and check
  • Methods compared side by side
  • List of classic mistakes per map
Benefit: an informed choice, without redoing it by hand
2 Next

House styles and sheets

Approved styles become reusable QML, and maps repeated by state or region come out in batch.

  • QML and QGIS project generated by script
  • Atlas by state from the command line
  • Symbols, cartograms and flows in SQL
Benefit: the team reviews 27 identical sheets instead of building 27
3 Later

Self-updating atlas

When IBGE publishes new data, the pipeline downloads, checks, regenerates the proofs and waits for approval.

  • Automatic stop when the format changes
  • Fixed breaks to compare years
  • Log of source, method and breaks for each edition
Benefit: updates don't depend on someone remembering
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.

3

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

ConfirmedClassifiers and QGIS
mapclassify 2.11.0 lists 17 entries, including FisherJenks, Quantiles, EqualInterval and HeadTailBreaks. QGIS graduated symbology offers quantiles, equal and fixed intervals, logarithmic, Jenks, pretty breaks and standard deviation.Source: mapclassify API (pysal.org); QGIS manual
ConfirmedBatch without opening QGIS
qgis_process lists, describes and runs algorithms, with --json and --project_path; the atlas comes out as several PDFs through native:atlaslayouttomultiplepdf.Source: qgis_process and cartography algorithms (docs.qgis.org)
ConfirmedVersions as of October 29, 2026
QGIS 4.2.3 and LTR 3.44.15 (released September 25, 2026, per the roadmap); GDAL 3.13.3 (August 18, 2026); geopandas 1.2.0; matplotlib 3.11.2; Cartopy 0.26.0; pyproj 3.8.0.Source: qgis.org, gdal.org, PyPI
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.

IBGE, QGIS, GDAL, PySAL and GeoPandas documentation used in the research, accessed on October 31, 2026.

Your next thematic map, with the choices in plain view.

The assessment starts with a map your team already makes by hand. You get the same map redone by script, with the classification options side by side and the list of what to review, and decide with it in hand.