Multi-scale dataset, no slivers
Validates the boundary coverage, simplifies neighbors together for each scale and proves with numbers that no gaps or overlaps remain.
Deliverable: one coverage per scale + per-polygon reportOcto for cartographic generalization
Simplifying, smoothing and aggregating already run without opening the interface, in PostGIS, QGIS, GRASS and mapshaper. What's new is coverage simplification: neighboring municipalities simplified together, with no gaps or slivers on the shared boundary. Octo builds the chain by scale, measures what changed and hands it over for review. The selection rule, the final tolerance and signing the product stay with the technical lead.
Six possible deliverables, drawn from the research. All work on a copy, with the original dataset read-only, and all go to review by whoever is accountable for the product.
Validates the boundary coverage, simplifies neighbors together for each scale and proves with numbers that no gaps or overlaps remain.
Deliverable: one coverage per scale + per-polygon reportRuns Douglas-Peucker, Visvalingam and coverage simplification on the same layer and puts vertices, area deviation and Hausdorff distance side by side.
Deliverable: metrics table + maps to choose fromWrites the cartographer's rule (stream order, road class, minimum area) and checks the count against Töpfer's radical law.
Deliverable: versioned rule + expected × actual countSmooths rivers without changing road angles and moves a highway away from the river it hugs, keeping a map of what changed at each step.
Deliverable: derived layer + error maps + remaining conflictsAggregates buildings by morphological closing, treating streets and rivers as barriers, and counts how many buildings fell into each block.
Deliverable: built-up area + layer of what was removedPre-generalizes by zoom range with the cartographer's rule and leaves only the fine simplification to tippecanoe, instead of relying on density-based dropping.
Deliverable: layers by zoom ready for vector tilesThe same Octo cycle, applied to generalization. Each arm has a narrow role; the ones who decide what disappears, approve the scale and sign the product are people.
PostGIS, GEOS, QGIS and GRASS versions, where the dataset lives, which derived products exist and how they are made today.
CRS in meters, join key (municipality code, segment code), whether the layer is a coverage, which one is the source and which one is the copy.
Read-only source dataset, credentials outside the script (.pgpass, service) and data with usage restrictions assessed with the client before anything leaves the environment.
Feature by feature or coverage; PostGIS, QGIS or GRASS; pre-generalization by zoom or tippecanoe only.
Scripts with a simulation mode, an error map for each step and a metrics report, with the source of each syntax noted in the file.
Validates the output coverage, compares it with an already approved version and separates the cases the cartographer needs to see at the output scale.
Only with your OK, it writes to a working schema or folder. Replacing the product in use is a person's job.
Tool versions, tolerances, selection rule and the result of each run. One product's rule is not assumed ready for another.
Octo works with read access and as support. It does not edit the original dataset, does not replace official products and does not sign map sheets: that belongs to the licensed technical lead.
The criteria Octo uses to choose, always checked against the version installed at the client.
| Task | Path | Note |
|---|---|---|
| Simplify boundaries that form a coverage | ST_CoverageSimplify, native:coveragesimplify, shapely.coverage_simplify | Validate before and after |
| Validate coverage | ST_CoverageInvalidEdges, native:coveragevalidate | Gap width in CRS units |
| Clean a dirty coverage | ST_CoverageClean (PostGIS 3.6) or mapshaper | Changes the data: human review |
| Simplify rivers and roads | ST_SimplifyPreserveTopology, v.generalize method=douglas | Check the failures (error=) |
| Simplify for the web | mapshaper -simplify weighted, tippecanoe | Check at each zoom level |
| Smooth | ST_ChaikinSmoothing, method=chaiken, native:smoothgeometry | Vertices double: simplify afterward |
| Aggregate buildings | Closing buffer + barriers (Shapely or PostGIS) | In ArcGIS, Aggregate Polygons requires Advanced |
| Select by scale | Attribute filter + radical law as a check | The rule belongs to the cartographer |
| Move river and road apart | v.generalize method=displacement | Heavy on memory; run per sheet |
| Choose the tolerance afterward | ST_SetEffectiveArea | Effective area stored in the M coordinate |
Three steps. Each one only makes sense after the previous one has shown results with your mapping team.
A proposal, not a promise
You point to a layer and a scale; Octo runs the available algorithms and shows what each one changed.
The boundary and hydrography dataset gets versions by scale, generated by the same rule at each update.
Building aggregation, displacement and zoom layers for web maps join the same chain, always with a review queue.
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.
ST_SimplifyPreserveTopology does not preserve boundaries shared between polygons and points to ST_CoverageSimplify; ogr2ogr -simplify preserves topology per feature, but not across the whole layer.Source: postgis.net/docs; gdal.org, ogr2ogrST_CoverageSimplify has existed since PostGIS 3.4 (GEOS 3.12), native:coveragesimplify since QGIS 3.36 and shapely.coverage_simplify since Shapely 2.1; ST_CoverageClean arrived in PostGIS 3.6, with GEOS 3.14.Source: PostGIS, QGIS and Shapely documentation; PostGIS 3.6.0 announcementv.generalize has 13 methods, including displacement; the manual says finding alpha and beta is a matter of trial and error, suggests 10 to 100 iterations and warns that the method uses a lot of memory.Source: GRASS 8.5 manual, v.generalizeOcto prepares everything, but does not sign. The document of record stays with whoever is accountable for it.
Surveys, calculates, organizes and produces the documents: spreadsheets, reports, sheets, maps and drafts.
Deliverable: material ready to checkThe 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 signerOcto 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 ARTProject documentation, the original algorithm papers and public agency pages, accessed on October 31, 2026.
The assessment starts with a layer your team already generalizes by hand, without touching the original dataset. You get the versions by scale with a report of what changed, and decide with them in hand.