PEAU DU MONDE| postProcessor

User manual · v0.99.4 · reviewing and repairing the wet skin of the earth of an ENC, Inland ENC or S-101 exchange set, inside the production run and before issue.

  1. What postProcessor is for
  2. The panel
  3. Content: taking the set in
  4. Audit: reviewing the wetSotE
  5. Audit: reading the findings
  6. Levels
  7. Who yields: the rules
  8. What is found
  9. Deciding
  10. Writing the products
  11. Fixing a finding by hand
  12. Attributes: adjusting attributes
  13. Edits: the edits, and writing them
  14. The delivery report
  15. Settings: the office's reference data
  16. Example: the Amsterdam re-issue
  17. S-101 cells and S-102 surfaces
  18. Limits of this version
  19. Troubleshooting
  20. Glossary

1 · What postProcessor is for

The legacy production system writes Inland ENC cells whose wet skin of the earth — the depth areas, unsurveyed areas and the land and dry structures they meet — has faults: edges that cross each other between nodes, edges that run along each other, rings that touch themselves, the odd gap. The faults were always there; a chart kernel that judges geometry exactly now trips on them.

postProcessor runs after a production run, before the set is issued. It reviews the cells you choose, explains every fault, offers a repair where the repair is safe, and writes the repairs you approve into a new copy of the exchange set.

It works an exchange set of ENC cells (S-57; Maritime ENC in the table) as it works one of Inland ENC cells: the review, the repairs, walradar and the writes read no product. Where the two differ, each cell's dataset header decides (DSID PRSP 1 or 10): the attributes a cell is offered and a new object's mandatory attributes and SCAMIN (§12), the check the land|water finding cites (§8). An ENC cell never takes a class only the Inland ENC has (§12, §13).

An exchange set of the IHO's S-100 family is worked the same way: its S-101 cells take every function but walradar, and its S-102 surfaces are staged, drawn on the chart and audited (§17).

It also makes S-101 from S-57: the set staged — ENC or Inland ENC — is converted to one S-101 exchange set, every object and attribute by a written rule, signed with the office's key (§17, Convert).

What a repair may change is fixed: coordinate values, and nothing else. The dataset header (issue date, edition number, update number) is never touched, the files keep their exact length, every record keeps its name, version, attributes and pointers, and no coordinate is added or removed. That is also why the production system's next update still applies to the repaired cell. Only an edit you make by hand may go further — collapse points to one node, split or merge edges, add or remove a vertex (§11) — and every such edit carries the warning that the next update will not match.

2 · The panel

The plugin comes as one ZIP file. Install it with Plugins ▸ Manage and Install Plugins ▸ Install from ZIP; installing a newer ZIP later keeps your settings and your workspace. Enable Peau du Monde | postProcessor in the Plugin Manager, then click its toolbar button or choose Plugins ▸ Peau du Monde | postProcessor. The panel wears Peau du Monde's livery and has vertical tabs, top to bottom: Content takes the set in, Audit reviews the wet skin and decides, Attributes adjusts attributes, Convert converts the set staged to one S-101 exchange set (§17), Edits lists every edit the others made and writes them to the products, and Settings keeps the office's reference data (§15). With 2FA on, lockSession stands above them all, its name in red.

lockSession: the session lock

With 2FA ticked in officeSettings (§15), lockSession is the first tab. Pressing it asks Are you sure you want to lock your session?, with No chosen. No takes you back to the tab you were on. Yes locks the session: every other tab is hidden, and the panel shows the Peau du Monde mark and a field for the six digits of your authenticator. The code it shows now, then unlock or Enter, brings the tabs back, and the tab you were on. A wrong code is refused and cleared. Each code opens the lock once: a code just used, and the one that confirmed the scan, wait for the next.

The lock holds when QGIS closes: locked, the panel opens locked. It locks the panel, not QGIS: work already running goes on to its end, and the map and QGIS's own menus stay as they are. It keeps somebody at an unattended screen from doing something quickly.

3 · Content: taking the set in

content manager
Content with the Amsterdam re-issue staged: 128 base cells, all Inland ENC, product specification edition 2.4, ticked for review.
  1. Click select folder… and choose a folder: one exchange set's, or any folder above as many as it holds — a delivery, a download. postProcessor scans it, reading only, and shows each exchange set as a tile: a band down its left in the product's colour — S-57 dark green, S-101 purple, S-102 red, Inland ENC (IENC) light blue — carrying the product and its usage band (usage 5; for S-100 the scale band its catalogue states, 1:12,000), and the set's folder name on white beside it. A set of maritime and Inland cells, or of more than one usage, has a tile for each. Files beneath no catalogue are a set per folder under the one chosen. The newest set comes first, the oldest last. Under the folder line, search tiles shows only the tiles whose words hold what you type — a word of the set's name (reissue), a product, a usage — and counts them beside the field; cleared, every tile is back.
  2. Push a tile to stage that set: postProcessor copies it into its workspace and reads the copy from then on. The delivered set — on a USB stick, a network share — is never written; the repairs go into a duplicate in your home directory (§10, §15). The second screen, the list, shows at once: at its top back to tiles, the set named as its tile names it (IENC · usage 6 · 20260730_U6_…) and stage again; under them the table of that tile's files alone. back to tiles returns to the tiles, the one staged outlined: push it and its list comes back as you left it, ticks and all, nothing staged again. Push another tile to work another set. stage again stages the set afresh, every base cell ticked again: after saving officeSettings, for instance (§15). Before either, while edits are saved and not yet written, postProcessor asks first, saying how many; on no, nothing changes. A staging that fails changes nothing: the tiles come back with the reason on the status line, and the set staged before stays as it was. An S-100 set is staged the same way (§17).
  3. It checks the catalogue against the files: every CRC, anything listed but missing, anything present but not listed. Problems are reported (they appear under catalogue in Audit) and the review goes on.
  4. The table lists every S-57 data set file with its filename, issue date, edition number, standard (Inland ENC or Maritime ENC, from the dataset header) and standard edition.
  5. Base cells (.000) are ticked. Update files are listed for what they are and are not ticked: the audit and Attributes read each cell as delivered — its update files applied in sequence after its own update number, as S-57 Part 3 8.4 has it (records inserted, deleted and modified, attributes, pointers and coordinates) — and the audit checks the update files themselves (S-58 3, 32, 33, 34, 36a, 36b, 38, 1006, 1008, 1010, 1021a, 1024b, 1522b); an update file that does not apply — beyond a gap, or already in a re-issue — is a finding. The wetSotE review reads the base cell: a wetSotE changed in an update file is bad practice and not supported. Where an update does change it — a depth area's or a contour's record, or an edge or node under them — the status line says the cell's wetSotE is not checked, with the files; the cell is still ticked, its base cell reviewed (§4). A cell whose delivery is incomplete — an update file without its base cell, a gap in the update sequence, an update of another edition than its base — is declined: listed, not ticked, the reason on the status line; the rest of the set is worked.
  6. show soundings is off at every start: the chart is then the skin and the contours only. Ticked, the set's soundings are decluttered and join the chart as well (§4) — a few minutes on a large set. Ticked after the chart is drawn, they are prepared then; unticked, they leave the chart, and ticked again they come back at once. The review reads every sounding from the cells either way.
  7. Every producer's cells can be ticked, reviewed and worked. Staging still reads each cell against officeSettings (§15) — the producer code its name starts with, the agency code its dataset header names — and the status line says which cells are another office's. Another office's cell is never written under its code: what you write from it becomes a copy under your own code (§13). Before officeSettings is saved, no cell is the office's and nothing is written.
  8. deselect all and select all set every tick; tick single cells as you like.
  9. Go to Audit and click review wetSotE.

The status line, under both screens, says what happened: after the scan, e.g. 8 exchange sets found, 8 tiles: 4 S-101, 4 S-102. Push a tile to stage it.; after a tile, e.g. Staged 128 files (128 base cells) · one exchange set, counting broken update sequences and catalogue findings when there are any.

Loading a set also puts OpenStreetMap on the chart, in EPSG:3857, under every other layer — once: a project that already has it keeps its own. Without an internet connection it simply draws nothing. With officeSettings → background map (OpenStreetMap) unticked (§15) none is put there, and nothing reaches OpenStreetMap's tile service for the plugin; one the project already has stays.

Every cell in the list is outlined on the chart in the layer cells, just above OpenStreetMap: its data coverage (the M_COVR with CATCOV 1), not its rectangle, in a green dotted line with thin green lines across, and the cell name in the middle when it fits inside. The outlines appear one by one as each cell is read, a few seconds for a large cell; a new staging replaces the layer. The review's chart lies above them.

The workspace

Everything postProcessor makes while it works lives in the workspace, workspace\<set name>_<code>\ in your home directory (§15) — under your QGIS profile, pdm_postprocess\workspace\…, while none is set (the name's first 48 characters; the code keeps it unique and Windows' path limit out of the way). The repaired product set goes into the home directory's production folder (§10), and every delivery report into its reviews folder (§14). In the workspace:

4 · Audit: reviewing the wetSotE

review wetSotE, at the top of Audit, reviews the cells ticked in Content. It starts two things at once, each with worker processes of its own so QGIS stays usable: the review of every ticked cell, and the chart of the same cells. The largest cells start first, so the longest ones do not come last. The status line counts both and is drawn again every second: Reviewing 120/128 cells · at work: 3 cells, 52/107 findings solved · chart layers 128/128 · 3:28. It says how many cells are done, how many findings the cells at work have solved of those they found so far, and how long the review has run. A dense cell can take a minute or more; the findings count and the clock keep moving while it does. When the chart layers are built they are merged and loaded into the project while the review goes on. When the last cell is reviewed, the findings are listed in Audit.

review Full, beside it, runs the same review and then the audit of the same cells: dataBridge's S-58 8.0.0 checks, the Inland ENC Feature Catalogue checks — each cell against the catalogue of its own edition (§12), so one exchange set may hold cells of 2.3, 2.4 and 2.5, each cell's codes named as its own catalogue names them — and its quality checks, among them the vertex check: a line or area most of whose vertices add no shape, on every line and area but the depth areas, the dredged areas and the depth contours — coastlines, shoreline constructions and land areas among them. A cell of an edition the office has no catalogue for is audited against the previous one installed (the newest below it; for a cell older than all of them, the nearest above), and a warning under the cell says so: this FC is not supported by the auditor, the cell is audited against FC 2.4. please request support for this FC via info@peaudumonde.com. With no catalogue installed at all, the warning says the Feature Catalogue checks did not run. The audit runs after the review, in one worker, and the status line names the check at work: Reviewed 3 cells: 40 findings in 0:12 · Auditing 12/69 checks · check 507 · 0:31; when it ends, … · audited 69 checks: 120 findings (C 2 · E 100 · W 18) in 1:05. What the wetSotE review already lists is left out of the audit — S-58 42, 77 and 1565, the double-cover check — and so are the catalogue faults staging reports. The review's findings are listed as soon as the review ends; the audit's join them when it ends. An S-100 set is audited by the IHO's S-158 checks instead (§17).

With show soundings ticked (§3), the soundings are then decluttered, in a worker of their own; unticked, the chart is done here. You can work through the results and write while that runs. The status line ends in decluttering the soundings… and the clock, and then 2,413,736 soundings loaded · all in … with the time the whole job took. Ticked after that line, the soundings are a job of their own: the clock runs from the tick, and the line ends in all in … · 2,413,736 soundings loaded in …. A new review stops the chart of the previous one. Writing and saving have a clock of their own on their line, and their last line says how long they took. No line guesses the time left.

Measured on the 128 Amsterdam cells with eight review workers, 2026-09-27: the review alone takes about 8 minutes; with the chart beside it, as the panel runs them, 8½ to 9 minutes, the chart itself about 2½ of them. The 2.4 million soundings, when asked for, take about 7 minutes more.

What loads into the chart

map findings
One Amsterdam cell after review. Land in tan, shallow bands in blue, unsurveyed areas in grey; the dots are the findings — green level A, amber level B, red level C. (Depth-area boundaries are drawn as hairlines in this picture only, so the white deep water shows its bands.)

5 · Audit: reading the findings

results
Audit. The summary line counts the findings per level; each cell opens to its findings, level A first. Three level-A findings have a go; the picked level-B finding is explained under the list.

The list has two categories, both open from the start, each with its count: wetSotE — what the wetSotE review found, each cell with its findings — and chartObjects — what the audit of review Full found, each cell with its findings by object layer.

The dropdown in the line of buttons is set to show all. Choose show level A … show level D to list one level only. A cell with nothing of that level is hidden while the choice holds, and a category with no cell left. Your decisions stay as they are.

Pick a finding and the chart pans and zooms to it. The picked finding layer shows:

the finding — the edges involved
the edge as delivered
the edge as the solution would write it

Under the list you read, for the picked finding:

After review Full, the audit's findings stand under chartObjects in two groups: (M) mandatory, in red — a critical error or an error, the rule holding without a condition — and (C) conditional, in orange — a warning, a condition the cartographer judges. Under each group the cells, each cell's findings grouped by object layer as Attributes names it (Depth area (area) — 3); a finding on a record rather than an object stands under data set records, vector records or feature records, and the exchange set's own under exchange set. Their level column carries the S-58 severity in the row's colour — C critical error, E error, W warning — and the line above the list counts the findings by severity and by rule. A finding whose check has an offer — what the plugin can mend of it, said in words when the row is picked: remove RECDAT: a prohibited attribute, DRVAL1: 02.500 → 2.5 — takes a go like a solution: the go is an edit of kind offer in Edits, and the write makes the change in the product, through the attribute path, after reading the object as the product holds it; what the auditor saw and is no longer there is refused with the reason, and the audit runs again after the write. On a red finding the button beside go reads go: every 511, the check's number: a go to every finding of that check with an offer and no decision yet — never on an orange one. Today the offers are the red checks whose rule gives the value: 511, 547 and IE547, 512, 1679, an attribute of no known code (S57.ATTL), OBJNAM or another base attribute from its national-language twin (522, 572), DRVAL1 and DRVAL2 swapped (49), a date written as ISO 8601 where it reads one way only (1515a, 1515b), and three that patch the feature record itself in place — GRUP 1 (518a), RUIN 1 (S57.RUIN), the primitive the spatial records say (S57.PRIM) — one octet each, the record proven as it was around it; a prohibited object deleted through the geometry editor (504, judged by the worker before it is saved, the edit in Edits tagged with the finding), the issue date set to the update application date in the DSID (1523b, eight octets patched in place), a mandatory attribute added with no value where it is unknown (507, IE509 — 509 then asks for the value), PERSTA and PEREND removed where they are identical (568), and a data-set entry's IMPL set to BIN in the catalogue itself (EXCH.IMPL), mended at the end of the write, after every cell. On an S-101 dataset the S-158 findings on a feature carry its record, and the attribute rows that need no judgement take an offer through Attributes' S-101 writer: an attribute that may not stand beside a known sounding removed (101_1229, 101_1251), a padded value trimmed (101_0018, 101_0019), a wind turbine's dimension moved to the attribute its kind takes (101_1169, 101_1170), a duplicate featureName removed (101_1028) — and the proposals the record itself gives, taken on the go: a minimum and a maximum swapped (101_1101, 101_1105, 101_1389), height as elevation plus verticalLength (101_1027), one default name (101_1029), the name in the dataset's language made the default (101_1030), isMRCC where the name says so (101_1359), orientationValue, periodicDateRange or condition removed where they contradict the feature (101_1333, 101_1392, 101_1163), multiplicityKnown set to what the number says (101_1001, 101_1002), and a point a surface of the same class and values covers deleted through the geometry editor (101_0010) — always in the dataset, never through an S-57 cell. The other findings take no go: they are for production, and the delivery report lists them under back to production, by check (§14). A finding ends in (untested) when its check has not been proven on a test dataset built for it: the check is written from the standard's text, and its finding is as much to be read and judged as any other — only the check itself has not yet met the standard's own examples. The IHO's S-58 test datasets prove some of the maritime checks; there are none for Inland ENC, so every Inland check is untested. Pick one and the chart pans to the object; under the list you read the check's number, its severity, the object and its cell, and the catalogue the cell was judged by (Inland ENC 2.4 · judged by FC 2.4). The level filter shows them under show all only.

An object that lies in more than one cell — one object cut by the cell border, a feature record in each — is audited in each. Its finding stands under every cell whose copy holds the fault, and the rows are linked: pick one and it names the object's other cells and whether the finding stands there too — The object lies in 2 cells — also in 1R6TEST2.000 (RCID 12), where the finding stands too; one decision for all of them — or, where the auditor found nothing on the other copy, where the auditor did not find it: the copies differ. A go or no go on one of the rows is the decision on all of them, and the offer is one edit with a piece for every cell the object lies in. The write reads each copy: a copy that does not hold the fault as the audit saw it is left as it is, with the reason, and the others are written; each cell's row shows its own outcome.

Pick a finding of the vertex check — An edge carries vertices that lie on the straight line between their neighbours — and the chart draws that edge with every vertex: green where the check keeps it, orange where it lies exactly on the line between its neighbours — a vertex the edge could do without — and a node, white with a dark ring, at its two ends and wherever a vertex is a node of the set. The check reads one edge at a time, never counts a node, and leaves the data limit alone: the nodes where edges meet are the chart's topology, not vertices to spare. They leave the chart when you pick another row.

A cell whose update files change its wetSotE (§3) has, as its first row, what was not checked: Its wetSotE is changed by update file .001 (DEPARE 3; 40 edges): not checked — the wetSotE review reads the base cell — no level, no go. The line above the list counts such cells, the review's line names them, the delivery report says so in its review step (§14), and after review Full the audit lists it under the cell, a warning (UPD.WETSOTE).

map closeup b
A level-B finding, about two metres across. The delivered edge (red, dashed) crosses its neighbour (orange); the solution (green) moves one vertex 10 cm so the edges no longer cross. Grey with dashes is unsurveyed area. The shallower depth area keeps the water.
map closeup a
A level-A finding, about twenty centimetres across. The delivered edge crosses the anchored edge by less than a centimetre; the solution moves two vertices by one lattice step each (1.1 cm). At any chart scale the two lines are the same line — which is exactly why the kernel, and not the eye, finds these.

6 · Levels

A level says what the fix would do, so the consequence follows from the rules, not from a threshold someone picked. Whatever the level, a finding left alone is something the chart kernel trips on.

LevelThe fixWhat you decide on
ABelow resolution. No vertex moves past a neighbouring lattice point (one coordinate step, about 1 cm).Nothing the cell can express changes; the kernel stops tripping.
BThe boundary moves further than one lattice step. A move under 200 mm is looked for first; a rule's own move farther than that is offered only when nothing under 200 mm clears the finding.The largest move in metres, the m² of water re-stated, which area gains it, and any rule set aside. Look at it in the chart.
CDecide: a cure the tool can perform. Moving coordinates cannot fix it; the fault is in the topology, and the tool can mend it with one of four cures, tried in this order: node it — an edge gets a node where another edge's node already lies on it; point it at the right node — two edges each tied to the other's node are swapped over; make two nodes one — two nodes less than 200 mm apart become one, on the lattice point of the node more edges use; an edge that shrinks to nothing goes, and an area that would then touch itself there takes the loop as a hole; give the hole to the area that holds it — an area names as its hole a ring that lies outside it: the pointer moves to the area the ring lies in, and no coordinate changes. Water described by nothing is offered here too: fill the space gives it to the area around it that claims least (§8) — also where that area's own line ends within 200 mm of the other's, through a short line of its own; a crossing or a broken coverage the fill clears is offered with it, and written from any one of them the others read cleared. The cure is drawn on the chart and its words say what changes. Look at each, then give a go one at a time or with go: every level C. A go writes it like any solution; a no go makes the finding D.
DBy hand. No cure the tool can perform, or you said no to the one it offered. A crossing where no rule of §7 says which area keeps the water is D too, and says so. Apart from land meeting water with nothing drawn between, every D is a shape the tool has not met yet: send it in with the delivery report, and a cure for its kind is built.The reason says what was tried. Fix it in the chart (§11) or in the production system, or accept it knowingly.

Until 2026-09-24 the ladder read A, B, C, D, E. Its C, no rule decides, never occurred in any set reviewed and went into by hand; the letters then closed up: today's C was D, today's D was E. Older reports use the old letters.

A level-A solution is not assumed from a small overlap: the solver proves, for each one, that the moved vertex creates no other finding.

7 · Who yields: the rules

Two crossing edges are separated by moving one of them. The rules decide which edge stays, and so which area keeps the contested sliver of water.

  1. COALNE, SLCONS, GATCON and DAMCON win anything. By the rules an edge carrying one of them does not move; the inland slcons and gatcon count too. Pylons and bridges do not anchor.
  2. Pontoons, hulks and floating docks win against water.
  3. A depth area wins from an unsurveyed area, but never beyond the M_SREL polygon the depth area lies in.
  4. Depth area against depth area: the shallower range keeps it. The chart never states deeper water than before.
  5. Land does not meet water without an anchor. A land edge against water that carries none is a finding of its own (level D, by hand) and is never repaired, unless the chart shows something the standard allows there (see below).
  6. Both edges anchored: no rule moves either (but see A solution that breaks nothing below).

When the first try does not work

A solution that breaks nothing

When all of that leaves a finding unsolved, the search goes on, as far as slightly goes: every coordinate moves less than 200 mm on the horizontal plane. In this order: the edge a rule protects; a node of either edge, with everything coupled; an anchored edge; for a crossing on a land edge, the water edge and then the land edge; an edge crossing itself, or a stretch along another edge, further than one step. A rule may be set aside to do it, and the finding names the rule: breaks nothing (R-PP20): the SLCONS edge moves at most 0.7 cm; R-PP15 set aside. More than one lattice step is level B. The data limit never moves. When no position near the other edge's line clears the crossing, every position under 200 mm around the vertices where the two meet is tried, nearest first.

What breaks something, for every solution, by the rules or after them:

What may stand between land and water

A land edge against water is read by the list of the check that applies to the cell's product, whole: S-58 1565 for an ENC cell, the Inland ENC validation checks' 1565 (edition 2.4 rev1, the one at hand) for an Inland cell. An object on the list that shares the edge clears it, as the check asks; otherwise the edge is inspected on the chart itself, and what the list allows clears the part of the edge it covers, whether or not it shares the edge:

Each list is read as it writes its names: an Inland cell's uppercase lock basin (LOKBSN) is not on its list, and an inland class in an ENC cell never is. A harbour too small to navigate at the cell's scale is a dock area on land, closed off at its mouth by a closing line with no coastline on it: that is how the standard wants it, and it is no finding.

A bridge, built-up area, fairway, restricted area, anchor berth, turning basin or building may be drawn there, but it does not form the bank. The finding names those, and gives only the length that nothing allowed covers.

8 · What is found

FindingStandardSolvable?
Edges cross between nodesS-58 78 (C)Usually A or B, by a vertex move, a node move, against the rule below resolution, or a move that breaks nothing; when nothing under 200 mm clears it, C with a cure where the fault is in the topology, and D otherwise
An edge crosses itselfS-58 78 (C)Usually A or B; C where two nodes a hair apart can be made one; otherwise D
Edges run along each otherS-58 1 (E)A: one lattice step apart; B when further breaks nothing; D otherwise
An area ring is malformed (touches itself, hole outside its shell)S-58 78 (C)C where the hole lies outside the area and one other area holds it; otherwise D
Coverage broken along an edgeS-58 42 (C)C with the fill where its edges are the fill's; D otherwise
Water described by nothing (a gap)S-58 42 (C)C where the space can go to the area that claims least around it: an unsurveyed area, else the shallowest depth area, whose own line may end within 200 mm of the other's through a short line of its own. A crossing and a broken coverage the fill clears are offered with it. Where it can only once the cell's other solutions are written, the review works it out after them in the same pass, and its words begin after the other solutions of this cell. Otherwise D
Land meets water with nothing drawn between that the standard allowsS-58 1565 (E); on an Inland ENC cell IENC VC 1565 (W)D, per connected run of edges, with the uncovered length
Catalogue: CRC mismatch, missing or unlisted fileS-58 1016 (C)Reported only

An area that is invalid only because one of its edges crosses another, crosses itself, or runs along another, is not listed twice: the crossing is the finding. An edge that begins and ends at the same node meets itself there by construction; that is not a crossing.

9 · Deciding

10 · Writing the products

Writing happens in Edits (§13). write edits to products first makes a duplicate of the delivered product set in your home directory, in its production folder (§15). The duplicate has the same name with _alt1 on the set's own folder only — the first number free there — for example C:\postProcessor\production\20260730_U6_Aanloop Amsterdam_Reissue_NL_alt1\ENC_ROOT\…. Every subfolder and file keeps its name, and ENC_ROOT stays ENC_ROOT, as the product specification requires. That duplicate is the product of this staging: every later write, and every attribute save (§12), goes into the same _alt1, on top of what is there. Staging the set again starts a new one, _alt2, then _alt3; an earlier alternative is never overwritten. The delivered set itself is only read. The exchange set is copied from the staged copy the review read, and anything else in the set's folder from the delivered set. Then the go's are written into the duplicate, cell by cell, in worker processes. For every cell:

  1. each moved coordinate is checked to still be where the review saw it, then overwritten in place;
  2. the repaired file is compared with the product's cell as it was before this write octet for octet: the same length, and nothing changed outside the moved coordinates;
  3. the repaired cell is scrutinised again: no finding may appear that was not there before, and every approved finding must be gone. Solutions are found one at a time; when two approved solutions disagree once both are applied, those two are refused and the rest are written. When two move the same coordinate, the second is not applied;
  4. only then is the cell written.

Finally the catalogue's CRC of every repaired file is patched in place — the catalogue keeps its length and the name it was delivered with — and every listed CRC is verified against the products. An S-100 catalogue has no CRC: it loses the signatures of what was written instead (§17).

The status line says what was written, where, what was cleared along with them and what was refused. A finding that is gone from the cell after the write without a solution of its own, because another one cleared it, is marked cleared in the list; refused findings are marked refused, with the reason under it. open products folder opens the _alt set. A set that lies directly on a drive root has no folder of its own to name _alt1, and a set that is no longer reachable (the stick was pulled) cannot be duplicated; both are refused, in words, before anything is written.

If the catalogue cannot follow — a CRC that cannot be patched in place, a problem it did not have before — the written cells and the catalogue are put back as they were, and the status line says Not written with the reason. The product is never left inconsistent.

After writing

To see the result with your own eyes, select the _alt set in Content and review it again: the findings written are gone, the cures' among them, and what had no go, or was level D, remains. Writing from that staging again makes the next alternative in production: _alt1 staged and written becomes _alt2, not _alt1_alt1.

The finished product is yours to move, with the file manager, from production to where the office keeps its sets. Move it when you are done with the staging: a write from the same staging after the product has gone stops and says so (… is no longer in …: moved or removed) — stage the set again, from where it now lies, to write on. Without a home directory nothing is written: Edits says so, and officeSettings takes one (§15).

11 · Fixing a finding by hand

A finding the solver cannot answer — a level-D crossing, for example — can be fixed in the chart with QGIS's own editing tools. The plugin checks what you did and writes it with the same proofs a solution has.

  1. Pick the finding and press edit in the chart. The edges within 25 m of it, and every edge that meets those at a node, come on top of the chart as the layer hand edit · <cell>, with their vertices marked. The layer is already in editing; snapping to its vertices and topological editing are on, and the Vertex Tool is chosen.
  2. While the edit is open the chart shows only the SotE: the depth areas, the land and the other dry areas, the wet|dry border and the depth contours, and the edit layer. Everything else — soundings, findings, the picked object, the cell outlines, OpenStreetMap and your own layers — is hidden, and comes back when the edit is saved or closed.
  3. Every line is drawn by what it is: a depth contour dashed dark blue, an unsurveyed boundary violet, a water-against-land boundary ochre, a depth-area boundary magenta. The Layers panel lists the classes of each line (DEPARE | DEPCNT, DEPARE | UNSARE), so a colour always has a name. Clicking a line shows what it lies between and whether it is on the data limit.
  4. The metadata is not drawn. M_COVR, M_QUAL and M_SREL are not named on the lines, and a line that only metadata uses is left out of the layer: you cannot drag it, and you do not have to look at it. It still follows a node you move, and the check still reads it, so nothing is lost. A refusal does name it, so you know what an edit would have crossed.
  5. Move vertices and nodes. A node dragged with topological editing takes every edge ending there along; what lies on the node without sharing it (another edge's vertex, a duplicate node) moves with it too. Adding a line is refused; deleting one only when another edge runs the same stretch (see Collapsing to one node).
  6. Press check edit. The cell is prepared with your edit in a worker, beside the product, and judged. The list below the findings says what the edit moves, what the structure does to follow it, what it clears, where a placement is not shoal-safe, and, for each refusal, why and where. The status line says whether it passes.
  7. Change the edit and check again as often as needed: a change after a passing check must be checked again before it can be written.
  8. Press save edit. The edit becomes a row in Edits (§13), the layer closes, and your snapping and topological editing settings are as they were. When Edits writes it, the edit is checked again against the product as it stands, then written into the same _alt set; the catalogue's CRC follows or everything is put back, and the finding is marked by hand. close edit leaves without saving.

Collapsing to one node

Points you place on one coordinate are read as one node, and the structure follows: you decide where the line goes, the plugin makes DEPARE, DEPCNT and the wet|dry border fit it.

Such an edit — like a vertex added or removed — alters records, not just coordinate values. An update that production later makes against its own copy will not fit this cell, so the check, Edits' row, the status line at writing and the delivery report all carry the warning: this alters the product in a way that an update by the original production system will not match. The next change to that cell must be a new edition or re-issue.

Shoal safety is yours. After a passing check the list shows Shoal safety: lines for every sounding, or point object with a VALSOU, that lies in a depth area on an edited edge and is shoaler than the area's DRVAL1 — with where. The plugin never refuses on it.

What the check refuses

12 · Attributes: adjusting attributes

Someone forgot a name, got an ORIENT wrong, missed an attribute: adjust it here, in the cell, without reproducing the chart.

A cell with update files is listed as delivered — its updates applied — and a saved change goes where the value lives: a value an update set into that update's record, a value the updates never touched and a new attribute into the base cell's record, an attribute of an object an update inserted into that update. Removing a value an update set writes the delete character in the update's record; removing a base value takes it off the base record. Each file touched is proven as the base cell is (§10) and its CRC patched in the catalogue; no update file is ever written anew.

attribute manager
The Attributes on a 300 × 200 m view in Amsterdam: the object layers on screen with their counts, a notice mark unfolded, its ORIENT changed from 0 to 90 and not yet saved. Enumerated attributes show their meaning beside the value.

What is guarded

The content is yours: any attribute on any object, any value. What is guarded is the structure of the cell, the catalogue and the exchange set:

A refused change stays in the list, and every piece of the object says refused with the reason, so you can correct it and save again. On Amsterdam every one of the 242,665 objects can be edited this way. Changing an ORIENT took four seconds, the catalogue check included. A change to the coverage object, which is in all 128 cells, took 74 seconds.

13 · Edits: the edits, and writing them

edit manager
Edits after three go's in Audit: one row per edit, its kind, cell, what was wrong, the edit in words and its state; the picked row is spelled out below; the write button counts the ticked rows.

Every edit made in Audit and Attributes, and every suggestion of a model's run, is listed here, one row each: its kind (solution, by hand, attribute, geometry, suggestion, walradar, offer), the cell, what was wrong or which object, the edit in words, and its state — saved, written, refused with the reason, or cleared. Picking a row shows it in the chart.

Run model

run model… reads a source of floating aids through one of the office's models (§15) — the model's own service, or a point layer of the project — only inside the charts' coverage, and compares it with the buoys in the cells. The source is asked for the set's own area, the staged cells' outlines with a margin of 0.01°, so a national service sends the buoys around the set, not the whole country; until the outlines are drawn, the whole source is read. What differs comes back as suggestions, unticked, grouped under the model's name and, under it, by the kind of change: remove, add, update position, update characteristics (features, or a topmark or light that came or went), update both (a buoy that moved and changed: one suggestion that moves it and sets its values), and rewrite in the right case (a buoy in the other case). Each row says how many it holds and how many are ticked; ticking a kind's row ticks its suggestions, ticking the model's row ticks them all. An update both is written as its move first, then its values with the other attribute edits; if its values are refused after the move went in, it reads refused and says the move is written. The suggestions of one cell are written together, as one job, and the cells' jobs run side by side — as many at once as the review has workers, each putting its cell in place and patching the catalogue in turn. When a cell's suggestions cannot be written together, the job finds the one that cannot be written, refuses it with its reason and writes the others together (R-PP82), so one that cannot be written blocks no other. The status line counts the cells that have answered: Writing suggestions into <set>_alt1: 12/20 cells. Tick what you want and write: a floating aid is written as its family — the buoy, its topmark and its light, the buoy naming them as its slaves — in the case the office's buoyage areas say (BOYLAT under IALA, boylat under CEVNI). An ENC cell takes S-57's own classes under CEVNI too: a mark on the right-hand side becomes a port-hand BOYLAT (CATLAM 1, red), one on the left-hand side a starboard-hand BOYLAT (CATLAM 2, green), a preferred-channel mark stays as it is, and a bifurcation mark becomes a BOYSPP, channel separation mark (CATSPM 54). A colour never swaps: a mark whose colour disagrees with its side is refused and named, as is a CEVNI category an ENC has no counterpart for. An aid that lies in an ENC cell and an Inland cell at once is refused: one catalogue at a time. A model of another class than the floating aids is not compared yet.

Known discrepancies. An aid in your cells that another asset manager keeps is never in your source, so every run suggests removing it. Right-click such a suggestion: to ignore list. The object goes on the office's ignore list — a buoy of the cells by its FOID, a source's aid by its Source ID and the model — and the suggestion leaves Edits unwritten. From then on a run leaves the object out before it compares: it is not suggested, and it does not count when the run decides whether the source is complete enough to offer removals. A FOID on the list holds for every model; a Source ID for its own model. The delivery report says what you put on the list, and, under the run's step, how many the run left out. Settings → ignoreList shows the list; take off the list and the next run compares the object again.

Another office's cells: a copy under your own code

A cell of another producer (§3) is never written under its code. When the ticked edits touch one, write edits to products first asks: You are making a copy based on another office's work. You are responsible for handling licence and intellectual property. — make the copy, or Cancel and nothing at all is written.

When an edit changes records — not only coordinate values — the status line and the delivery report carry the warning: this alters the product in a way that an update by the original production system will not match. The next change to those cells must then be issued as a new edition or re-issue, not as an update.

14 · The delivery report

Every write leaves one page about this staging in the home directory's reviews folder, named by the product set and the time — …_alt1_delivery_report_20260928-143000.html — and Edits' status line says where. delivery report in Edits writes one there too and opens it in the browser. No report goes into the product's own folder. Without a home directory the button's page goes into the workspace (reports). Every page is a new one; earlier ones stay.

  1. Steps done to the exchange set: every automated step, from its start to its end and how long it took — staged (and the catalogue check), the cells outlined, the objects listed, reviewed and the chart drawn beside it, a model's run (the source, the rows read, what lay inside the charts, the suggestions by kind of change), the walradar reading, every edit opened and checked by hand, every write with its parts — the duplicate made, each solution, cure, hand edit, suggestion and attribute save, written or refused — and every report made. A step that started and did not end says so. The head names what the times were measured on: the version of postProcessor and of QGIS, the computer's logical processors and the workers each part used. Above the steps, a table of times:
    • processing time: the tool at work, per kind of step and in all, a moment counted once where steps run side by side (the chart beside the review, the object list beside both, the suggestions' cells beside each other, and the cures' cells);
    • production time: the writes — each from its start in Edits to the last file written in the exchange set, the copies and the walradar set included;
    • in the postProcessor: from the start of staging to the last step;
    • the cartographer's time: that, less processing — deciding, looking, drawing.
    Under the steps, the review cell by cell, each cell with its findings and its time, the longest first. A step recorded before times were kept reads not measured.
  2. Changes made in the product: every solution written, with what was wrong, what moved and how far, the water re-stated and which area gained it, and any rule set aside (marked when it was found after the rules); every cure, with the records it changed; every finding cleared along with another change, and what cleared it; every edit by hand and every geometry drawn; every suggestion from a model that was written; and every attribute saved, with the value it had and the value it has now; and the copies under your own code (§13), with the warning beside each.
  3. Back to production: what stays in the product, each with the reason and where it is.
    • findings without a solution;
    • the audit's findings of a full review, by check: how many and in which cells, an untested check's ending in (untested) (§5); for an S-100 set, every check of S-158 with its outcome (§17);
    • solutions, cures and hand edits refused at writing, and solutions decided no go;
    • suggestions from a model and geometry drawn by hand that were refused, with why;
    • the catalogue as delivered, and cells that could not be reviewed;
    • refused attribute changes.
  4. Actions for you: every attribute change to repeat in your collections of the other usage bands, where the same object has the same FOID but its own geometry; the solutions offered but not written, per cell — approved and waiting for a write, or not decided — which were solved here and are not production's; the suggestions from a model not written, by model and kind of change; and the copies of another office's work, with its warning.
  5. All findings, per cell, with the rule, the solution and the outcome.

The steps are recorded as they happen, in a journal per staging in the workspace. The page is built from the journal, the review, the decisions on screen and the suggestions in Edits. The workspace is emptied at the next start of QGIS (§13), and the approvals and suggestions not written with it: write before you close.

15 · Settings: the office's reference data

settings holds what the office sets once. It connects to no database. Everything is kept in one GeoPackage in your QGIS profile, pdm_postprocess\reference.gpkg, beside the workspace, so installing a newer ZIP leaves it in place. The file is made the first time you save; opening the panel never makes it.

officeSettings

buoyageSystems

The areas where one system of navigational marks applies. This is chartProduction's MARSYS tab, with the same face and the same drawing.

scaminValues

The SCAMIN a new object starts with comes, in an Inland ENC cell, from the Encoding Guide's value for your region (officeSettings → Inland rules of); in an ENC cell it is a step past the cell's compilation scale (§12), which this tab and the region do not change. The guide is the one of the edition the staged set declares (its cells' product specification edition): 2.4.1 or 2.5.1. A set that holds several editions takes the latest of them. 2.5 is the latest official edition and the ceiling: a set that declares a later one, or one no list is held for, and the tab with no set staged, take 2.5.1. Its head says which, and why. This tab lists the values for your region, one row per class and geometry, with the Encoding Guide line each comes from, and beside each the office's own. With no region set it lists Europe's, and a value your region's list does not give is Europe's too, marked so. Type a value there and the new-object dialog fills it in from then on; empty it, or set it back to the list's value, and the list's applies again. Only what you change is kept, so a later edition of the list still reaches everything you did not change. A value changed in the dialog itself is that object's only.

ignoreList

The known discrepancies the office put on its list from Edits (right-click a suggestion, to ignore list; see Run model): each object with its name and class, its cell, its FOID or the source's Source ID, the model and the suggestion it came from, and since when. run model… leaves them out. Pick one and take off the list: the next run compares it again. The list is kept in the office's file with the rest of settings, so it outlives the workspace.

vmbModels

Staging reads the producer code and the agency code to say whose each cell is (§3); nothing is written under another office's code (§13). Saving officeSettings while a set is staged asks you to stage the set again: stage again, on the list (§3).

16 · Example: the Amsterdam re-issue

17 · S-101 cells and S-102 surfaces

An exchange set of the IHO's S-100 family is worked with the same panel, in the same order. Its S-101 cells — the S-100 ENC — have every function an S-57 or Inland ENC cell has: staging, the chart, the wetSotE review with its solutions and cures, the hand editor, Attributes with its object edits, run model…, copies under your own code, the delivery report and review Full. Only walradar is not offered. Its S-102 surfaces — gridded bathymetry, a depth and its uncertainty in every cell of a grid — are staged, drawn on the chart and audited; nothing edits or writes them. This section says where the work differs. Everything else in this manual holds as written.

Taking the set in

The chart

The review

review Full: the audit by S-158

An S-100 set is audited by the IHO's S-158 checks where an S-57 set is audited by S-58's: each ticked S-101 cell, as delivered, by S-158:101 and by S-158:100's core; each ticked S-102 surface by S-158:102. The findings are listed as the S-58 audit's are (§5): under the cell and the type as its catalogue names it, with its primitive (Depth Area (area) — 3); a data set's under data set; a surface's under the surface's metadata or the coverage. The level is C, E or W, from S-158's critical error, error and warning, and they take no go.

The delivery report lists every check of S-158:101, S-158:100 and S-158:102 with its outcome — failed, passed, not implemented, or wetSotE review — so the office sees what was not checked (§14).

Attributes

Edits and the write

Convert: an S-57 set to S-101

conversion manager
Convert with eight cells of the Amsterdam re-issue ticked: the general settings of the set, a row per chart with S-65's display scales filled in and its purpose to choose, and under the table what the maritime twin of the picked Inland cell will do, by object layer and object, each with its reason.

Convert, the tab before Edits, converts the cells ticked in Content — ENC or Inland ENC — to one S-101 exchange set, with the S-57 to S-101 converter carried inside the plugin (s57to101 0.11.0): every object and attribute goes by a written rule, and a report beside each dataset says what each became and why. Repair first, then convert: the converter reads the staged cells as they stand, and nothing it meets there is repaired on the way.

What an S-102 surface is not

An S-102 surface is staged, previewed and audited, and no more: Attributes does not open it, and nothing writes it.

18 · Limits of this version

19 · Troubleshooting

"Not staged: 2 catalogues under this folder; select one exchange set at a time"
The folder holds more than one exchange set — an S-57 set and an S-100 set count as two. Select the one you mean.
The review seems to stand still
Look at the end of the status line: the clock runs every second while anything is at work. When the cell count stays, the findings count shows the dense cells still solving; on Amsterdam the densest cell takes a minute or two.
"no catalogue" in the status line
The folder has cells but no CATALOG.031. The review works; the products will have no catalogue either.
A cell shows "— not reviewed"
Its worker failed; the error is under it. The other cells are unaffected. An S-101 cell whose curves the review cannot read as a graph says why — a curve of more segments than one, a curve that does not end at its point — and is still audited and listed in Attributes (§17).
An S-102 surface shows its water as drying ground
Its metadata states no heights, but its values are heights. The preview reads a surface by the vertical coordinate system it states: one that states heights (EPSG 6499) is turned and named on the line (§17). The surface is its producer's to correct.
"… written without signatures (R-PP97) …"
Normal for an S-100 set in this version: what the write changed goes out unsigned (§17).
"… a geometry edit is written into the base file only"
The object, or a record under it, lives in an update dataset. Change it in production, or once a new edition holds it.
Findings refused at writing
Read the reason under the finding: the two together would create a finding, or the finding was still there. A finding whose vertex another solution moved first, and that is gone after the write, is not refused but cleared. Review the _alt set again and decide what is left on its own.
The chart shows nothing but white water
With the default safety settings water deeper than 6 m is white. Change the project variables enc_safety_contour and enc_deep_contour, or look at the findings layer.
No soundings in the chart
Tick show soundings in Content (§3). On a large set they come minutes later; the status line says when. With enc_sounding_portrayal 1 or 2 only one side of the safety contour is drawn. Zoomed out, only the shoalest are shown.
The panel opens locked, and the phone with the authenticator is lost
Ask your administrator to lift the lock. 2FA is then off: tick it again with the new phone.
"That code was not accepted"
Each code opens the lock once: wait for the next one. When no code is ever accepted, check the phone's clock: the codes follow the time.
The plugin does not start
postProcessor needs QGIS 4, or QGIS 3 from 3.34 with shapely 2 in its Python. When something is missing, QGIS's message bar says what, and the QGIS log (its tab Peau du Monde | postProcessor) names the versions found. After an update of the plugin files, restart QGIS.

20 · Glossary

wetSotE
The wet skin of the earth: the depth areas and unsurveyed areas that, with land and the dry structures, cover the cell without gaps or overlaps.
Edge, node
The shared boundary pieces an S-57 cell is built from. Neighbouring areas use the same edge; edges meet at nodes. An S-101 cell calls them curves and points.
Lattice step
The smallest coordinate difference a cell can store: 1/COMF of a degree, about 1.1 cm north–south and 0.7 cm east–west in the Netherlands.
Anchor
A coastline, shoreline construction, gate or dam on an edge. By the rules an anchored edge does not move; only a move under 200 mm that breaks nothing may take it along, and the finding says so.
Slightly
Less than 200 mm on the horizontal plane: the furthest any coordinate moves.
Cleared
Gone from the cell after a write or a hand edit that was made for another finding: the cell is reviewed again, and it is no longer there.
Breaks nothing
A move that sweeps no sounding or other point object, keeps the data coverage and the quality and survey coverage whole, and creates no finding.
M_SREL
The survey reliability area. A depth area may take water from an unsurveyed area only inside the M_SREL it lies in.
LNAM
The object's FOID (agency, feature number, subdivision) written as 16 hexadecimal characters, as dataBridge and GDAL show it.
Staged set, products
The copy of the delivered set that postProcessor reads; the duplicate in the home directory's production folder (<set>_alt1) it writes the repairs into.
Home directory
The folder on the workstation's own disk that officeSettings names, with production, reviews and the workspace in it. Nothing is written without it.
Go / no go
Your decision on a solution, or on an audit finding's offer. Nothing is written without a go.
Coupled
What moves with a node: its edges and everything on them, and whatever lies on the node's coordinate without sharing it (another edge's vertex, a duplicate node, an isolated node).
S-100, S-101, S-102
The IHO's framework for hydrographic data, and two of its products: S-101, the ENC — cells of features, as S-57 has them — and S-102, the bathymetric surface: a grid of depths with their uncertainty.
S-158
The IHO's validation checks for S-100 products — S-158:101 for S-101, S-158:102 for S-102, S-158:100 for what they share — as S-58 is for S-57.
Exchange catalogue
CATALOG.XML in S100_ROOT: the list of an S-100 exchange set's datasets, each with its discovery metadata and its signature, as CATALOG.031 is an S-57 set's.
Data Coverage
S-101's coverage feature: the area a cell's data covers, with its display scales; S-57's M_COVR with CATCOV 1.
Information type
An S-101 record without geometry that features point to: a contact, a spatial quality, a nautical information text.
Complex attribute
An S-101 attribute made of attributes: featureName holds name, language and nameUsage.
Maritime twin
The copy of an Inland ENC cell, made in the workspace, that Convert converts in its place: an ENC (PRSP 1) with the Inland classes and attributes renamed, dropped or deleted by the rules of §17, every other record byte for byte the cell's.
Untested
Said of a check not yet proven on a test dataset built for it (§5).
Delivery report
The page per staging with the steps done and their times, the changes made in the product, what goes back to production and the actions left for you (opleverrapport).