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.
- What postProcessor is for
- The panel
- Content: taking the set in
- Audit: reviewing the wetSotE
- Audit: reading the findings
- Levels
- Who yields: the rules
- What is found
- Deciding
- Writing the products
- Fixing a finding by hand
- Attributes: adjusting attributes
- Edits: the edits, and writing them
- The delivery report
- Settings: the office's reference data
- Example: the Amsterdam re-issue
- S-101 cells and S-102 surfaces
- Limits of this version
- Troubleshooting
- 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).
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.
- Right-click anywhere on the panel for the colour table (day, dusk, night), Free panel (never dock), Our own title bar, and this manual, the quick card and the acceptance test.
- The same three documents are in the plugin menu: Quick card, Manual and Acceptance test.
- The acceptance test walks through every function of the panel, script by script, in the order of the work: what to do, and what the panel must show. Run it in every version — ours, and every one delivered to another office. Fill it in on screen — pass, fail or not run, with a note — and put the delivery report's times in its timesheet, beside those of the version before: a version that works slower shows there. save results writes it, answers and all, as a file to keep beside the delivery report. Printed, it is a paper form.
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
- 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. - 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). - 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.
- 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.
- 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. - 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.
- 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.
- deselect all and select all set every tick; tick single cells as you like.
- 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:
staged\— the copy of the set whose tile was pushed (replaced when it is staged again);review\<time>\— one review: the findings per cell and the layers shown in the chart;products\<time>\jobs\— one write: what each worker was asked to write;edits\<time>.json— the edits of one staging, as Edits lists them, written once each action is done;journal\<time>.jsonl— the steps, for the delivery report.
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
- A group
Peau du Monde | postProcessor · <set>at the top of the Layers panel. A new review replaces the group of the previous one. - The wetSotE, the wet|dry boundary and the land area, one layer per usage band and class, named and stacked as
ENCoreGIS | Pro does (
U6 | 05 Depth area (area),U6 | 08 Land area (area),U6 | 53 Shoreline Construction (line), …), with ENCoreGIS's styles. Layers are in EPSG:3857. The project is in the office's project CRS (§15): an empty one takes it when the panel opens and when a set is staged, and keeps it once the set's layers are in; one with layers in another CRS asks first. - The depth contours (
U6 | 13 Depth contour (line)) with the skin, and the soundings (U6 | 24 Sounding (point)) when they are ready, in their place in the stack, with ENCoreGIS's styles. The soundings are thinned as ENCoreGIS | Pro thins them: the shoalest first, more of them as you zoom in, all of them from 1:5,000. - Depth colours, contours and soundings follow ENCoreGIS | Pro's chart settings, the project variables
enc_shallow_contour,enc_safety_contour,enc_deep_contour,enc_sounding_portrayal(0 all soundings, 1 only those at or shallower than the safety contour, 2 only those at or deeper) andenc_extra_contourwithenc_extra_contour_on(an extra contour in red). When a project has none, ENCoreGIS's defaults are set: 4, 6 and 10 m, all soundings, no extra contour. A project that has them keeps its own. With the defaults, water deeper than 6 m is white. - Two layers on top:
findings, a point per finding coloured by level (A B C D), andpicked finding.
5 · Audit: reading the findings
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:
- the title, and under it, in italics, the words of the rule the finding breaks, quoted from the document it cites — for example “Boundary of an area object crosses itself.” — S-58 8.0.0, check 78 (C);
- the standard it answers to (for example
S-58 78 (C)) and its level; - Rule — which rule decided who keeps the water — or Why no solution;
- Left as it is — what happens if nobody touches it;
- The solution — how many vertices move and by how much at most, how many m² of water are re-stated and which area gains them, and which other features move along because they use the same edge (depth contours, quality and survey meta areas).
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).
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.
| Level | The fix | What you decide on |
|---|---|---|
| A | Below 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. |
| B | The 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. |
| C | Decide: 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. |
| D | By 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.
- COALNE, SLCONS, GATCON and DAMCON win anything. By the rules an edge carrying one of them does not move;
the inland
slconsandgatconcount too. Pylons and bridges do not anchor. - Pontoons, hulks and floating docks win against water.
- A depth area wins from an unsurveyed area, but never beyond the M_SREL polygon the depth area lies in.
- Depth area against depth area: the shallower range keeps it. The chart never states deeper water than before.
- 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).
- Both edges anchored: no rule moves either (but see A solution that breaks nothing below).
When the first try does not work
- A node moves. When the crossing stretch runs from node to node, the node itself moves, less than 200 mm. Everything coupled to it moves with it: every edge at the node, and whatever lies on that coordinate without sharing it. That can be a depth contour on its own edge, another edge's vertex (an M_QUAL boundary, for example), a duplicate node or an isolated node. So the chart stays topologically sound. Where a coastline, shoreline construction, gate or dam meets the node, it moves along; the finding names it. A node on the data limit, or with a line passing through it without a vertex, does not move.
- Edges that run along each other separate by one lattice step. One area is squeezed between the two edges as a spike of no width; the step gives it a sliver, taken from the area on the side the rules name.
- Against the rule, below resolution. When only the edge a rule protects can clear the crossing, it moves, but
only by one lattice step (level A). The finding says which rule was set aside, for example
against the rule (R-PP18): … by R-PP13.
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:
- a sounding or other point object inside the area the move sweeps, or landing on the moved line: it would lie in another area than before;
- a swept area partly inside and partly outside the data coverage;
- the outer border of the quality (M_QUAL) or survey (M_SREL) coverage moving. A border between two such areas may move: what one loses, the other gains. A depth edge moving across such a border changes nothing about it;
- an edge crossed in more places than before, where the two may not cross: two edges of the skin, two edges of one feature, or the borders of two quality (M_QUAL) or other meta areas that may not overlap. A depth edge may cross a survey (M_SREL) or quality border, as the chain-node structure allows;
- any new finding. The whole cell is reviewed again before it is written.
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:
- in an ENC cell — lying along it: a coastline, shoreline construction, gate or dam; containing it: a gate, dam, river, tunnel, dry dock, canal, lake, lock basin or dock area; and a causeway, shoreline construction, mooring facility, wreck, obstruction or pylon that is partly submerged at high water, always dry, or subject to inundation (WATLEV 1, 2 or 6);
- in an Inland cell — lying along it: a coastline, shoreline construction, gate or dam, the inland
slconsandgatcontoo; containing it: a gate (gatcontoo), dam, river, tunnel, dry dock, canal, lake, the inland lock basinlokbsnor a dock area; a shoreline construction, mooring facility, wreck, obstruction, pylon or underwater rock that is partly submerged at high water or always dry (WATLEV 1 or 2); and an inlandslconsoruwtrocabove mean water level too (watlev8).
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
| Finding | Standard | Solvable? |
|---|---|---|
| Edges cross between nodes | S-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 itself | S-58 78 (C) | Usually A or B; C where two nodes a hair apart can be made one; otherwise D |
| Edges run along each other | S-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 edge | S-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 allows | S-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 file | S-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
- go and no go set the decision of the picked finding. Only findings with a solution — or, under chartObjects, an offer (§5) — take one.
- With the dropdown on show level A, B or C, the button beside it reads go: every level A, B or C. It gives a go to every finding of that level that has a solution and no decision yet. It never touches another level and never overrides a decision you made. Under show all and show level D the button is not there.
- A C finding carries a cure. Look at each in the chart before a go, and before go: every level C. A no go on it makes it D — the cartographer's, by hand. A gap offered after the other solutions of this cell counts on them: give them a go too, and the write takes the gap after them.
- Look at every B in the chart before a go, and before go: every level B: the numbers tell you how far a depth boundary moves.
- A go is an edit. The moment you give it, it appears in Edits (§13), and Edits' write button counts it: write edits to products (547). A no go takes it away again. Nothing is written from Audit.
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:
- each moved coordinate is checked to still be where the review saw it, then overwritten in place;
- 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;
- 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;
- 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.
- 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. - 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.
- 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. - 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.
- 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).
- 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.
- 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.
- 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
_altset; 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.
- A node dragged onto another node: the two become one, every edge and feature on the other re-pointed to it.
- A vertex dragged onto a node, or a node onto a vertex: the edge is split there into two edges, both ending at the node. A vertex dragged onto another edge's vertex: a node is made there and both edges are split. With topological editing on, snapping to a segment adds the vertex to that edge for you.
- A vertex dragged onto its own node, or onto the next vertex of its edge: the edge loses that coordinate.
- Two edges that now run the same stretch — the pieces on either side of a closed hole, for instance — become one edge, and the areas on both sides share it. A stretch already drawn twice between duplicate nodes cannot be moved together any further: delete one of the two lines in the layer, and its twin takes its place; the duplicate node merges into the other.
- Nothing is created or deleted but node and edge records: every feature keeps its identifier, class and attributes; every area's rings must still close, or the edit is refused. The cell's record counts (DSSI) follow.
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
- Anything but the above: an added line, a deleted line no other edge runs, edges that no longer meet at their node, a node landing on a sounding or other point object. The file must read back with the records the plan names and no others, every other record as it was, and the DSID's issue date and numbers unchanged.
- A new finding: the cell is reviewed again; a finding it did not have refuses the edit, and the finding you opened must be gone.
- A sounding or other point object swept into another area, or on the new line; the quality or survey coverage changed. Nothing is deleted or moved to make room.
- The data limit may move, as long as the extent of the cell's data coverage stays as the catalogue records it, and no neighbouring cell of the same usage band has its data limit on that stretch.
- An update file of the cell that changes an edited record: updates address records by name and coordinates by position.
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.
- After staging, the objects of every base cell are listed in the background. The status line counts the cells,
Listing objects 64/128, then says242,665 objects in 128 cells(Amsterdam: about a minute and a half). - The list follows the chart: only objects on screen are listed. Zoom in and the list gets shorter; pan and it
changes. Under the usage band (
U6) the object layers read as dataBridge names them,Notice mark [notmrk], with how many are on screen. They are folded closed. - Unfold an object layer and all its geometries show on the chart: every object of that class in that usage
band, in the whole set, in thin blue under the red picked object. With a search in the bar it is the same: the
search shortens the list, not the chart. Fold it again and they leave the chart. The layer you select is the
one shown: select another — its row, one of its objects or an attribute of one — and the layer before is
unchecked in the Layers panel, never removed; check it there to see it again. The picked object goes and comes
back with the layer it was picked in, and Audit's
picked findingis unchecked while you work here, checked again when you pick a finding. - The search bar above the list searches the whole set, not only the screen, as you type. It lists what
it finds by usage band and object class, each class with how many it found and why. What you type is read as:
- an LNAM (
1F2B0CF02BA10001), a FOID (7979 217066401 1or7979/217066401/1) or a FIDN (217066401); ACRONYM=value:ORIENT=0,catnmk=58,OBJNAM=brug. A number must be equal; a text must contain the value.ORIENT=alone finds every object that carries ORIENT. Where Inland ENC has an attribute in lower case beside a maritime one, the case you type picks it (catlamis notCATLAM);- anything else as words: objects whose OBJNAM or NOBJNM contains them, together with the object classes,
attributes and values the feature catalogues call by those words, Dutch included. On Amsterdam,
brugfinds 120: bridges by name and by class, pylons with CATPYL bridge pier, and more.windmolenfinds the 31 landmarks with CATLMK windmotor.
brugsearched in the whole of Amsterdam: bridges by name and by class, aggregates by name (unfolded), pylons and radio calling-in points by their category, each class with the reason it was found. - an LNAM (
- Unfold a layer for its objects: LNAM, OBJNAM and the cells it lies in (the first 1,000 when there are more). An object cut by a cell border is one row, however many cells hold a piece of it, and the layer counts objects, not pieces. Click an object: it is drawn on the chart in red, every piece of it, as the geometry it is — a dotted line for a line, points for a point object, thin striping with a dotted rim for an area, so the chart underneath stays readable — and the view pans to it, keeping its scale. Only one picked object is drawn at a time.
- Unfold an object for its FOID and its attributes. Double-click a value to change it. An enumerated attribute
offers its values with their meanings (
1 — coverage available). add attribute… adds one, and offers only the attributes the object's class may carry: for an Inland ENC cell those the Inland ENC Feature Catalogue of the cell's edition binds to the class — mandatory first, then conditional, then optional — and otherwise the class's attributes in the S-57 catalogue; the class is found in the catalogue by its code. The Feature Catalogues are the IEHG's, as published: postProcessor carries 2.3, 2.4 and 2.5.1 indata\ienc_fc(open data of the Inland ENC Harmonization Group,ienc.openecdis.org); for another edition it reads the office's copy in dataBridge'sienc_fcfolder. In an Inland ENC cell an attribute is named, typed and valued as that catalogue has it — on a 2.4 cell 18019 readscatsen — Category of sensor, a list — in its row, in add attribute…, in the new-object dialog and in Edits, and a value is saved by that type. Every class is named as the cell's catalogue names it —Daymark [daymar], which the S-57 catalogue lacks, and on a 2.3 cell an anchor berth isachare, as 2.3 has it, so a set of 2.3 and 2.4 cells lists its anchor berths under both names. Clearing a value removes the attribute. Changed rows saychangedorremoved. - What hangs on the object. Between the FOID and the attributes the object says what stands with it —
nothing is shown where there is nothing:
- on this node — the other features on the same node (
3 features on it). Normal, not an error: a buoy, its topmark and its light share one position, and a light shares the pile it stands on; - family — what this object is master, slave or peer of (
2 slaves). A topmark carries no pointer of its own; its master names it, and that is read backwards and shown here; - in a collection — the aggregations (
C_AGGR) and associations (C_ASSO) the object belongs to, with their other members under them.
- on this node — the other features on the same node (
- Relocate, add and delete an object. Three buttons under the list. They change records, not
only values, so every one of them carries the warning that an update made by your production system will no
longer match this cell — the same warning the hand editor gives (§11).
- relocate… — with an object in hand, click the new place on the chart. If more than one feature stands on that node, you are asked first: move them all, or leave the others where they are and give this one a node of its own. The nodes are on the chart while the object layer is unfolded: green where one feature stands on them, orange where more do.
- delete object — the object and its geometry go. A node another feature still stands on stays where it is. A pointer naming the deleted object is taken out of the feature that held it, and an aggregation left with fewer than two members goes with it.
- A line or an area cut by a cell border is deleted in every cell of its usage band: the question names the cells, and Edits keeps one edit that is written into all of them together, or into none. A piece in another usage band stays, and the question says so. Relocate moves a point, which lies in one cell.
- add object… — nothing needs to be picked first. Pick the class (the search finds it by
name or acronym; when every cell is an ENC, only the classes an ENC may hold are offered), then click the place, draw the line place by place (right-click
ends it) or draw the outline corner by corner — freely, across cell borders if it lies across them. The
drawing is divided by the cells: every cell it falls in gets its piece, all under one FOID with the same
attributes, and along a cell border a piece shares the border the cell already draws. A point goes to the cell
that holds it. What falls outside every cell is left off, and said; where the place lies in cells of more than
one usage band, you are asked which. A class an ENC may not hold — one only the Inland ENC has, or one the ENC
product specification prohibits (§3.2) — is refused where the drawing lands in an ENC cell, and the status
line says why. The object gets a FOID of your own agency, counted down from
the top of the range so it can never collide with one your production system hands out; the lowest used
is kept in your settings file.
Once it is drawn, a dialog asks its attributes: what the catalogue binds to the class, by name with the acronym beside it — in an Inland ENC cell the Feature Catalogue of its edition, mandatory first, then conditional, then optional; in a maritime cell the mandatory attributes of the ENC product specification (§3.5.2), and never one it prohibits. An enumerated attribute offers its values by their meanings; a list attribute, every value to tick. SCAMIN is filled in: in an Inland ENC cell the value for your region (Settings → officeSettings → Inland rules of) in the Encoding Guide of the edition the set declares — 2.4.1 for a set of product specification 2.4, the latest edition when the set holds several — and Europe's where your region is not set or its list gives none; in a maritime cell the step the S-57 guide gives past the cell's compilation scale. The dialog names the list it used. Change the value if you want, for this object only. The dialog does not save while a mandatory attribute is empty, and names what is still to fill; Cancel adds nothing. The answers are written as S-57 codes them. A drawing that lies in cells of different catalogues is refused: one catalogue at a time.
Each of these becomes a row in Edits (§13) once it has been checked — the cell is reviewed again, and an edit that would create a finding is refused before it can be saved. An edit of point objects alone — a buoy, its topmark and its light — is not reviewed again: the check proves that nothing the review reads has changed (R-PP7b), and says so in the delivery report. - walradar — for a user whose VTS cannot show unsurveyed areas. The button reads the office's own cells as
they stand and puts one edit in Edits (§13). Written, it makes a set of its own in
production, beside the product,<set>_WALRADAR: the product with every unsurveyed area a depth area — DRVAL2 the shoalest DRVAL1 of the depth areas it shares an edge with, DRVAL1 0.1 m shoaler and neither ever below 0 m (a walradar depth is never dry: beside a depth area that dries it is 0 – 0), INFORM synthetic data for WALRADAR. The cells keep their names and editions, and the product keeps its unsurveyed areas.
A hole in the survey stays; the shore goes. An unsurveyed area whose outline lies on depth areas all round is left as it is — judged as the chart shows it: unsurveyed areas that meet count as one, across a cell border too. One that touches land is always replaced, 0 – 0 where no depth area touches it. One that touches neither a depth area nor land is left as it is. The edit names every area it leaves. A depth area here is a DEPARE or the Inland ENC's owndepare; what replaces an unsurveyed area is always a DEPARE. - One object, every cell. An object cut by cell borders is in each cell with the same FOID, and the standards
ask for the same attributes in every piece. So a change goes to every piece with that FOID, in every cell of
the set:
- the FOID row says how many cells the object is in (
128 cells); - the object is one row: a change shows on it, and counts once;
- only what you changed is written to the other pieces. Their other attributes stay as they are.
- the FOID row says how many cells the object is in (
- save edit (n) — n counts the objects — puts the changes in Edits (§13), one
row per object, where they are written into the product of this staging, the same
<set>_altNevery edit goes into (§10). In the list a saved object reads saved until it is written, then written or refused with the reason. discard changes forgets what is not saved; an object saved to Edits goes back to what was saved.
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:
- only attribute values change; every record keeps its name, version, FOID and pointers, nothing else in the file moves, and the saved cell must read back with the new values;
- a value is written as S-57 stores it (a decimal comma becomes a point); a character the cell's character set cannot carry is refused;
- if the product changed since the list showed it, the save is refused;
- TXTDSC, NTXTDS and PICREP may only name one file that the exchange set holds;
- all pieces or none: every cell is prepared and checked before any is written. If one piece of an object is
refused, no piece of it is written. Other objects in the same save go ahead. On Amsterdam this matters: 96 cells
carry national text at lexical level 0 and 32 at level 1, so a name with
üfits some pieces and not others; - the prepared cells go in place together, each copied first to the save's
jobs\beforefolder in the workspace. The catalogue CRCs are patched and the whole catalogue verified. If a cell cannot be written or the catalogue cannot follow, every cell of the save and the catalogue are put back, and nothing is saved.
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
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.
- Each saved row carries a tick. write edits to products (n) writes the ticked rows and leaves the others saved; the button counts the ticks.
- remove edit takes a saved row away. A removed solution is undone in Audit, a removed attribute edit is the Attributes' change again. A written row stays.
- Writing goes in this order: solutions cell by cell, then cures — the cells side by side, a cell's own cures one after another, a gap's fill after the other cures of its cell — then hand edits one by one, then geometry (relocate, add, delete) one by one, then the suggestions of a model's run, a cell's as one job and the cells side by side, then attributes in one save, its cells prepared side by side first; last the copies under your own code and the walradar set. Each is checked against the product as it stands (§10, §11, §12), and each patches the catalogue or puts everything back. A cure whose finding an earlier edit of the same write already took is marked cleared, not refused. The status line says what was written, cleared and refused, and the time it took.
- The edits of a staging are kept in its workspace, written once each action is done — a go, a tick, a write's answers — and at once when the set is staged again or QGIS closes. Staging the set again starts a fresh list, as it starts a fresh review: a solution belongs to the review that found it. Hand edits and attribute edits saved before a new review stay.
- The workspace is a cache, emptied at every start of the plugin. The staged copy, the reviews, the edit
list and the journal go when QGIS next starts. Write the edits you want before you close QGIS: the product set
and its delivery report, written into
reviewsafter every write, are what outlive the session. A staging another running QGIS holds is left alone; aworkspacefolder in the home directory is emptied only when postProcessor made it (it holdspostProcessor workspace.txt); the office'sreference.gpkgis never touched. - delivery report and open products folder are here too.
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.
- The edits go into a working copy of the cell in the workspace, never into the product, with the same checks as any other write.
- From there the cell is written as a new cell under your own code: your producer code with the original's
usage band and cell code (
BE7XXXXX.000becomes1R7XXXXX.000), every feature a new FOID under your agency code — one object keeps one FOID across the copies, and every pointer follows it — and edition 1, update 0, issued today. - The copies go into an exchange set of their own beside the product:
<set>_alt1_copies\ENC_ROOT, with its ownCATALOG.031and the text and picture files the copies name. The product keeps the other office's cell as it was delivered. - Writing again in the same staging makes the copies again from the work so far, with the same FOIDs.
- Refused, the reason named: a cell with update files staged beside it (a copy is a new cell with none), a copy that would take the name of one of your own cells in the staging or of another copy, and an object that lies both in your cells and in another office's.
- An S-101 cell is copied under your S-100 producer code, into an S-100 exchange set of its own (§17).
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.
- 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.
- 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.
- 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.
- 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.
- 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
- producer code: the two characters every cell name starts with, such as
1R. Typed in lower case, it is kept in capitals. - agency code: the number the cells' FOIDs carry as AGEN, such as
7979, from 1 to 65534. - agency name: kept as you type it.
- S-100 producer code: the four characters an S-101 dataset name carries after
101, as the IHO registry gave them to the office. Optional; typed in lower case, it is kept in capitals. It makes an S-101 cell or an S-102 surface the office's own, and names the copies of another office's S-101 cells (§17). - background map (OpenStreetMap): ticked, loading a set puts OpenStreetMap under the chart (§3); unticked, it does not, and nothing reaches OpenStreetMap's tile service for the plugin. One already in the project stays.
- home directory: the folder on this workstation's own disk where postProcessor keeps its work;
choose picks it. save makes three folders in it:
productionfor every product (§10), its copies and the walradar set;reviewsfor every delivery report (§14); andworkspace(§3). It must lie on a fixed disk, outside OneDrive: a network share (a mapped drive, or\\server\share), a USB stick, a CD and any folder OneDrive keeps (on an office laptopDocumentsoften lies in it) are refused, and so is a path longer than 100 characters, each with the reason; so is a folder whoseworkspacealready holds files of your own, since the workspace is emptied at every start. An external disk that Windows counts as fixed is taken. Until one is set nothing is written — staging and reviewing need none — and the status line says so: Nothing is written: no home directory is set. - project CRS: the EPSG code the office's projects are in, typed as
3857orEPSG:3857; save keeps it asEPSG:3857and names it (WGS 84 / Pseudo-Mercator), and refuses a code QGIS does not know. EPSG:3857 until you type another. A project without layers takes it when the panel opens, when you make a project while the panel is open, and when a set is staged into it — and keeps it once the set's layers are in, whatever QGIS would otherwise take from the first layer. A project with layers in another CRS asks: switch to the office's, or keep its own; keep holds for that project until QGIS closes. With the panel closed, no project is touched. - signing certificate: the office's Data Server certificate, a PEM file, which Convert signs its S-101 sets with (§17); choose picks it. Optional: without it a set goes out unsigned. The private key is never kept here, nor anywhere: Convert asks for it at every run.
- session lock, 2FA: ticked, a dialog shows a QR code. Scan it with an authenticator app on your phone, type the six digits it then shows and confirm: 2FA is on, and lockSession stands above the tabs (§2). cancel, and the box goes back unticked; nothing is kept. Unticked, the code is cleared: ticking it again shows a new QR to scan. The box acts at once, without save.
- save keeps them together. A value that does not fit is refused in the status line, and nothing is saved.
- The codes are yours to type. The IHO list of data producer codes pairs the first two, and none is worked out from another.
- A copy of postProcessor delivered for one office carries its settings fixed: officeSettings shows them and keeps them whatever is typed, and says so (Fixed in this delivery: producer code, agency code, …).
buoyageSystems
The areas where one system of navigational marks applies. This is chartProduction's MARSYS tab, with the same face and the same drawing.
- Choose the system (IALA A, IALA B, CEVNI (inland), No system, Other system) and press Draw area on the chart. Click each corner; a double-click or a right-click closes the area. Backspace takes the last corner back. Esc abandons the ring, and Esc again ends the drawing.
- A corner snaps to the corners and edges of the areas already stored, so neighbouring areas share their boundary without a sliver.
- The list shows each area's system and how much it covers, in km² on the ellipsoid.
- Show on map adds the areas to the chart as buoyageSystems. Remove area… asks first, then removes the picked area.
- Copy chartProduction's areas adds the areas this version carries from chartProduction — IALA A and CEVNI (inland), as they were drawn there — beside the areas you drew. None is copied twice, and your own stay as they are. Where the two overlap (0.6 km²) the smaller, CEVNI, decides.
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
- The office's VMB models: how a source — a layer of your own, a WFS — maps onto chart objects. They are kept in the same local file as the rest of settings, each registration a new version; nothing is overwritten.
- new model… and open… open the editor: the source's columns on the left, the model in the middle, and on the right a dropdown of the class it maps — the hybrid AtoN layer for floating aids, or any object class of the catalogue — with that class's attributes below it.
- Register… asks for the model's name. It is refused, with every reason, until Check passes and a Source ID (the source's own key column) is set, or when the source's geometry is not one the class takes.
- A model made on a WFS or an OGC API – Features service keeps the service's link, and opens it again by
itself — in the editor and in run model… — without adding it to your project.
No secret in the service's address is kept — a user name, a password, an API key, a token, a signature, or a
header that carries one: QGIS's own authentication (
authcfg) reaches a closed service. An address the plugin cannot read completely is not kept at all, and it says so; the editor's export writes none either. A model made on a file keeps the file's name only. - export… writes a model as a file to share; import… registers a colleague's. withdraw… takes a model off the list; its versions stay in the file.
16 · Example: the Amsterdam re-issue
- 128 base cells, Inland ENC 2.4, usage band 6; catalogue clean.
- Review on eight workers, 8½ to 9 minutes beside the chart (2026-09-27); with 0.6.7 (2026-09-28): 910 findings — 865 A, 15 B, 10 C, 20 D. 40 of the 880 solutions were found after the rules, breaking nothing, with the rule set aside named where there is one. 874 of them move less than 2 cm, and the largest 17.7 cm; none moves 200 mm or more. The ten C are cures: five times node it, once each make two nodes one and give the hole to the area that holds it, and one fill the space in 1R67YBC2, offered three times — for the hole, and with the crossing and the broken coverage edge it clears (§6).
- Left at D: 20 runs of land meeting water with nothing allowed drawn between. Runs along bridge piers are no findings: a pier with land underneath is what the standard asks for.
- Every A, B and C given a go and written: 873 solutions and 5 cures written, none refused; 7 solutions and 4 cures cleared along with the others — those cures gone before their turn — and the broken coverage edge with them. The work in the cells took 58 seconds for the solutions and about 2¼ minutes for the cures. The coordinate repairs keep every file's length; the cures change records (two cells 16 octets shorter) and carry the warning. No dataset header changed, the catalogue verifies, and the delivered set itself is as it was. That was 0.6.5 (2026-09-27); 0.6.7 writes 1R67YBC2's fill from the crossing's own edit, the broken coverage edge and the hole reading cleared, and leaves that cell with no finding at all (measured on the cell, 2026-09-28).
- Reviewed again (§10), the product holds 20 findings, every one the delivery's own: land meeting water with nothing allowed between — five where a shoreline construction lacks its WATLEV, fifteen where a coastline or shoreline construction is to be drawn. Those belong in production, or by hand (§11, §12).
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
- In Content (§3), choose the set's
S100_ROOTfolder, or any folder above it. The set is found by its exchange catalogue,CATALOG.XML, and shows as a tile per product: S-101 purple, S-102 red, each with the scale and purpose its catalogue states. A folder holding S-57 sets as well shows their tiles beside them. Push a tile to stage it: one set and one product at a time. - An S-101 cell is known by its dataset header, which says it is encoded by S-100 Part 10a — not by its name, since
an 8-character S-101 name is an S-57 name too. The table gives each file its issue date, its edition number, its
standard (S-101 or S-102) and its standard edition. The status line counts them as it counts cells:
Staged 7 files: 4 S-101 cells, 3 S-102 surfaces. - An S-101 cell is read as delivered, its update datasets applied in their sequence (S-101 PS 11.3.3) — records, attributes, associations and coordinates as S-100 Part 10a writes them — for the audit and Attributes, as an S-57 cell is. A cell whose updates do not follow on — another edition, a cancellation, a gap — is declined, with the reason. The wetSotE review reads the base cell; where an update changes the skin or a depth contour, the status line says so: not checked — the wetSotE review reads the base cell.
- The catalogue is held against the files: listed but missing, present but not listed. S-100 has no CRC; it signs each dataset instead (see Edits and the write below).
- A cell is the office's own by the S-100 producer code saved in officeSettings (§15) — the fourth to seventh characters of its name — and, for S-101, by the agency its features' FOIDs carry. An S-102 surface names no agency, so its code alone answers. Until the S-100 producer code is saved, no S-100 cell is the office's.
- Each is outlined in
cells: an S-101 cell by its Data Coverage, an S-102 surface by the box its metadata states. - An S-102 file whose name does not follow S-102 PS 11.2.3 — one with a space in it, for instance — is not staged, as an S-57 file outside its naming rule is not.
- The S-101 base cells and the S-102 surfaces are ticked; update datasets and declined cells are not.
The chart
- An S-101 cell is drawn as an S-57 cell is, with the same styles: each feature goes into the S-57 class its catalogue gives the type as alias — Depth Area as DEPARE, Land Area as LNDARE, Depth Contour as DEPCNT, Sounding as SOUNDG, and so on — and each attribute goes by its alias where that is an S-57 acronym (DRVAL1, VALDCO).
- S-101 has no usage band. A cell is placed by its scale — the largest optimum display scale of its Data Coverage
(S-101 PS 4.5.3) — and a layer reads
1:22000 | 05 Depth Area (area)where an S-57 one readsU5 | 05 Depth area (area). The larger scale draws over the smaller. - Each ticked S-102 surface is drawn under the vector layers:
S-102 | depth | <file>in the depth areas' classes and colours — drying, then to the shallow, the safety and the deep contour, read from the project'senc_…variables when it is drawn — and beside itS-102 | uncertainty | <file>, light to dark red, hidden until you tick it. The review's line says how many surfaces were previewed. - S-102 3.0.0 stores depths, positive down (its only vertical coordinate system, EPSG 6498). A surface whose metadata
states heights instead (EPSG 6499) is drawn with its values turned, so its water does not show as drying ground,
and the line names it:
stored as heights (verticalCS 6499), drawn turned: …. The audit says the 6499 is outside the specification (S-158:102 102_1010).
The review
- S-101's curves and points are the review's edges and nodes: a curve runs between the points it begins and ends at, and a surface is bounded by rings of curves. The skin of the earth is S-101's four types — Depth Area, Dredged Area, Land Area and Unsurveyed Area (DCEG 2.5.1.1). A pontoon, a hulk and a floating dock, skin in an S-57 cell, are not skin in an S-101 one. The data limit is the Data Coverage, all of it.
- The rules (§7) are the same, each type read by its alias. Where S-158:101 words a rule for S-101 itself, its words are the rule: what may stand between land and water is the list of S-158:101 101_1116.
- A finding speaks S-101: curve and point where an S-57 finding says edge and node, and each type by its catalogue name (Depth Area 0–5 m). It cites the S-158:101 check that the IHO's workbook pairs with the S-58 check an S-57 finding cites: S-58 42 → 101_0001, 1565 → 101_1116, 77 → 101_1209. Where the workbook pairs nothing, an edge crossing itself cites S-158:100 100_0042, a crossing or an invalid area 100_0021, and edges running along each other DCEG 2.5.1.1 (coincident boundaries of the skin are not to be duplicated), without a classification. The levels A–D and the cures are the same.
- A cell the review cannot read as a graph is not reviewed, and the reason is on its row: a curve of more than one segment or not loxodromic (S-101 PS 4.8.1), a curve that does not begin or end at its point, a composite curve inside another, CMFX unequal to CMFY, or an origin shift. The audit and Attributes still read it.
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.
- This version carries the checks dataBridge implements: 83 of S-158:101's 391 active checks (65 of its 456 are deleted for S-101 2.0.0 and are no checks of the audit), 1 of S-158:100's 412 — a type, attribute or association the catalogue does not describe — and 17 of S-158:102's 49. Their number grows in later versions.
- 11 of S-158:101's checks are proven on the IHO's test datasets. A finding of any other check ends in (untested) (§5).
- 101_0001, 101_1116 and 101_1209 belong to the wetSotE review, which cites them. The audit does not run them a second time.
- S-158:101 is written for S-101 2.0.0, and S-158:102 for S-102 3.0.0. A cell or surface of another edition is audited all the same, and told so under its data set or its metadata: S-158:102 is written for S-102 3.0.0; this surface is of 2.2, and was audited by it all the same. A 2.2 surface is also told which checks do not apply to it as written — 16 of the 49, where S-102 2.2.0 differs from 3.0.0 — and a surface of another 2.x edition that they are not named yet. Their findings stay listed, for you to read with that in mind.
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
- Each cell is named by the Feature Catalogue of its own edition: a 1.x cell by 1.1.0, a 2.0 cell by 2.0.0,
a 2.1 cell by 2.1.0. postProcessor carries the three, as the IHO publishes them (
data\s101_fc). - The tree shows the scale (
1:22000); under it each type by the catalogue's name and code (Depth Area [DepthArea]), with how many are on screen; under that its objects by FOID and name. - Under an object come its FOID; information, the information types it points to, each with its
attributes; associated features, the features it is associated with, by association and role, both ways;
and its attributes, as
depthRangeMinimumValue — Depth Range Minimum Value, an enumeration's value with its meaning. A complex attribute is a row with its sub-attributes under it; a repeated attribute is numbered (featureName 2). - Double-click a value to change it. An enumeration offers its listed values, or only those the binding permits; a boolean offers true and false; the rest are typed. Nothing is refused for its content: a value is written as S-100 Part 10a encodes it.
- add attribute… offers the type's bindings, mandatory first, leaving out those already at their upper bound. Under a complex attribute it offers that attribute's members.
- The search bar finds the objects whose type, name, attributes, FOID or LNAM hold what you type, and says why.
- An information type's attributes are changed as a feature's are. An association's own attributes are shown, not changed.
- Saved where the value lives, as for S-57 (§12): a changed value goes into the record that set it, the base cell's or an update's; an attribute added goes into the record that holds the object; an attribute removed comes off that record, its sub-attributes with it. An add or a removal on a record that an update modifies is refused, with the reason: it would shift the positions that update's instructions address (S-100 Part 10a 5.1.2). A changed value shifts none. Every file written is proven as an S-57 cell is (§12, What is guarded).
- Relocate, add and delete an object work as §12 says, on S-101's own records. For an information type the
three buttons stay off: it has no geometry.
- relocate… moves a point feature's point. Where more features stand on it, the question is S-57's in S-101's words: move them all, or give this one a point of its own. A point that a curve begins or ends at takes the curve's end along; it cannot be given to one feature alone. Soundings, a multi point, are not moved here.
- delete object takes the feature and every geometry record that only it used; every association naming it goes too. A feature standing on a point that goes is asked about. An information type is never deleted, since others may use it. Equipment on a point of its own whose structure goes stays, and the edit says so.
- add object… offers the catalogue's types by name, each with the primitives it may take, and never the skin of the earth. Once the object is drawn, the dialog asks the type's mandatory attributes from the catalogue's bindings — a mandatory complex attribute by its mandatory members — an enumeration by its values, one that may repeat as a list, and the name, kept as one featureName. The rest is set in Attributes. A line becomes a curve between two points, a closed line a curve that begins and ends at one point, an area a closed curve drawn clockwise and a surface of it (S-101 PS 4.8.1). The drawing must lie inside the cell's Data Coverage, and never along a curve the cell already holds. It is divided by the cells' coverage as §12 says; where it falls in cells of more than one scale you are asked which. The FOID is your agency's, from your counter. A type or attribute missing from the cell's dictionaries is added to them.
- A geometry edit is written into the base dataset. An update that touches a record the edit changes refuses it, and so does an object an update inserted, with the file named: … was inserted by the update file …: a geometry edit is written into the base file only.
Edits and the write
- The product is made as an S-57 set's is (§10):
<set>_alt1inproduction, itsS100_ROOTcopied from the staged set, and every edit written into the dataset that holds its value. Edition, update number and issue date stay as they are. - Signatures. S-100 signs each dataset in its exchange catalogue (S-100 Part 15), and a dataset the write
changes is no longer the file its signature was made of. The write signs nothing again: every dataset it
changes goes out unsigned (the set Convert makes is signed, below). Its entry in
CATALOG.XMLloses its signature value, the catalogue's own signature file goes, and everything else in the catalogue stays octet for octet — proven, or the write is put back whole. The write's line ends· written without signatures (R-PP97): 1 signature that no longer held taken out of the catalogue, and the delivery report says the same. - Cures, hand edits and object edits change S-101 records, as they change S-57 ones, and carry the same warning: an update the producer issues will not match (§11).
- Copies under your own code (§13): an S-101 cell of another producer, once edited, is copied as
101+ your S-100 producer code + the rest of its name, edition 1, issued today, every FOID renewed under your agency. The copies go into<set>_alt1_copies\S100_ROOT— the cells inS-101\DATASET_FILES, the support files they name inS-101\SUPPORT_FILES— with aCATALOG.XMLof their own. Each copy's entry is its original's as delivered, with the copy's name, edition and date, your producer code and agency name, and no signature. - run model… compares the floating aids of the S-101 cells as §13 compares an S-57 cell's.
An S-101 aid is the buoy, its topmark — the buoy's own complex attribute
topmark, not a feature — and its light, bound to the buoy as its equipment (Structure/Equipment, DCEG 25.15). Each column of the model is read from the attribute the catalogue gives that S-57 acronym as alias, a complex attribute's member by its path: LITCHR from rhythmOfLight's lightCharacteristic, TOPSHP from topmark's topmarkDaymarkShape. A suggestion is written as a relocate, as attribute edits, as an add object with its light and topmark, or as a delete object. A light is bound only where the cell's catalogue binds the pair; the 1.1.0 catalogue binds none, so in a 1.x cell such a suggestion is refused, with the reason. A column the S-101 family has no attribute for is refused by name, never dropped, and so is a value the catalogue does not permit there — a MARSYS a buoy's binding does not list, a light characteristic S-101 does not know — and a topmark for a buoy that takes none, such as an Installation Buoy. The reason names what is permitted. A CEVNI mark takes S-57's own classes, as in an ENC cell (§13): S-101's lateral categories are IALA's. - walradar is not offered for an S-101 cell.
Convert: an S-57 set to S-101
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.
- The set is the one staged in Content, named in its tile's words; the charts are the S-57 cells ticked there. Nothing staged, or nothing ticked, and the tab says so.
- General settings, for the whole set: the S-100 producer code from officeSettings (§15; shown
here, not typed — without one nothing is converted); the Feature Catalogue edition, 2.0.0 offered
first — the edition readers in the field know — and 2.1.0 (2026) chosen deliberately; the
issue date, today; the dataset edition, 1; the language of names and the national
language, ISO 639-2/T, filled from the office's region (
nldfor the Netherlands) and yours to change; the organisation named in the exchange catalogue, the agency name; for navigation and copyright, unticked unless you tick them. - Signature. The signing certificate comes from officeSettings (§15); the signing key is
asked here, at every run, and kept for the run alone: its path is written into no file — not the job the worker
reads, not the settings, not a report. Both given, the set is signed by S-100 Part 15 — each dataset's signature
in the catalogue, the catalogue's own in
CATALOG.SIGN— and the pair is checked before any chart is converted. Neither given, the set goes out unsigned, and the line says so. One without the other is refused. - The charts, one row each: name, product, usage and compilation scale as the cell has them; then the
fields the producer sets, filled in as S-65 Annex B 2.2.6 gives them — the optimum display scale from the
compilation scale (1:50 000 becomes 1:45 000, the next smaller denominator of Table 2-3), the maximum half
of it, the minimum empty; the navigation purpose from the usage band — overview for 1 and 2, transit
for 3, 4 and the river's 7, port for 5, 6 and the river's 8 and 9 — yours to change; the dataset's name
tail (its name is
101+ producer code + tail) and its title. What you type stays while you switch tabs, and is checked by the converter's own rules at write: a scale that is not in S-65's table, a maximum larger than the optimum, a minimum not smaller than it, are refused with the words of the rule, and nothing is converted. - An Inland ENC chart is converted through its maritime twin: a copy made in the workspace, never
in the product, that says it is an ENC and keeps every record it can byte for byte. A class with a maritime
counterpart is renamed (
bridgebecomes BRIDGE); a class the ENC does not have — notice marks, waterway axes, the Inland-only areas — is deleted, and so is a pointer to it; an attribute likewise, and a value the ENC does not know is dropped; an empty MARSYS is filled from the office's region. A CEVNI lateral mark goes by the office's rules for floating aids (§13): catlam 10 becomes a special purpose buoy with category 54, channel separation; a category the ENC has not, and a mark whose colour would have to change sides, are deleted and said — a colour is never swapped. The will change column counts it per chart (n renamed, m deleted, k attributes dropped), and the list under the table shows the picked chart's changes by object layer and object, each with its reason, before anything is written. - write converts the charts one after another in the panel's worker and writes one
exchange set into
production\<set>_S101in the home directory (_S101_2the next time):S100_ROOT\CATALOG.XML, the datasets inS-101\DATASET_FILES, and beside the set the converter's report of each dataset,<dataset>.report.txtand.json, withconversion.jsonfor the whole. The text and picture files a cell names (TXTDSC, NTXTDS, PICREP) go with it, under the names S-101 asks for (101+ producer code + the S-57 name's third to eighth characters) intoS-101\SUPPORT_FILES, listed in the catalogue; a text that is not UTF-8 is re-encoded from ISO 8859-1 and said; a file the set does not hold is refused by name. The line counts what was written, what was written with refusals the report names (an S-57 value the Feature Catalogue cannot take is refused by name, never dropped in silence), what was refused whole and what failed, and names where the datasets lie —S100_ROOT\S-101\DATASET_FILES, the reports beside the set — since the set's own folder holds the reports alone; go to products opens that folder in the file manager. To audit the product, stage it in Content and run review Full (§5). The delivery report carries the step with its time (§14). - Nothing is converted without a home directory (§15), nor while another job has the panel's worker.
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
- Every move is looked for under 200 mm first; the data limit never moves.
- By hand, vertices and nodes move and vertices come and go; a line is not added, and is deleted only where another edge runs its stretch (§11).
- In dense depth bands (0.1 m steps) a one- or two-vertex move sometimes has no room; those are C with a cure where the fault is in the topology, and D with that reason otherwise.
- A land edge against water counts only what is drawn on it. Something drawn a few centimetres off it is named in the finding, but does not clear it.
- The wetSotE review, the chart and the solutions read the base cell; the audit and Attributes read the cell with its updates applied. No update file is ever written anew: a change goes into the files the set has.
- Peau du Monde's "overhang the chart" notch and F11 full screen are not in this panel.
- The session lock (§2) locks the panel, not QGIS, and stops no work already running.
- S-100 signatures: a changed S-101 dataset goes out unsigned (§17). Convert signs the set it makes; the write does not sign again.
- Convert converts S-57 to S-101, not the other way, one staged set at a time, the cells as they stand: repairs not yet written are not in the product (§17).
- S-158: 83 of S-158:101's 391 active checks, 1 of S-158:100's 412 and 17 of S-158:102's 49 are in this version (§17). A check not in it reads not implemented in the delivery report.
- S-102 surfaces are staged, previewed and audited, never edited or written. A 2.x surface is audited by S-158:102, which is written for 3.0.0; the checks that do not apply to 2.x are not named yet.
- One exchange set at a time: an S-57 set and an S-100 set are staged apart.
- In an S-101 cell, a geometry that lives in an update — inserted or changed there — is not edited, and an attribute is not added to or removed from a record an update modifies (§17).
- A piece of an S-101 drawing that meets the data limit is refused in a cell whose record layout (its DDR) describes no composite curve: sharing the limit needs one, and the layout is never grown.
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
_altset 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_contourandenc_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_portrayal1 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
productionfolder (<set>_alt1) it writes the repairs into. - Home directory
- The folder on the workstation's own disk that officeSettings names, with
production,reviewsand 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.XMLinS100_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).