#1214 The dissolve derives one grid per call and reads coverage by the nonzero rule; the testcases that pin it
dms_union_polygon and dms_split_union_polygon no longer fold their elements pairwise on a grid
derived per tile: every element is cleaned alone and the rings are noded once on one lattice
for the whole call, taken from the values unit's declared range when it has one and from the
extent of all the elements otherwise, so the result does not depend on the order of the
elements or on the tiling of the attribute. The family page gets that rule in the grid table
and a paragraph under it, and lists the three testcases that ship with 20.20.0 for the dissolve
and the crossing sweep; the dms_union_polygon page describes the dissolve as it now works, with
the nonzero rule that lets an element wound the wrong way round add instead of cutting a hole.
Engine commit f136489d7.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
#1214 The rest of the dms_ family: six pages, and the statements they make stale
dms_polygon, dms_union_polygon, dms_split_polygon, dms_split_union_polygon,
dms_overlay_polygon and dms_polygon_connectivity get a page each, in the layout of their geos_
counterparts and leaning on the family page for the shared semantics. The two Minkowski
operators are named on the shared minkowski_sum and minkowski_difference pages, where the
other four backends already are.
Three statements were true when they were written a day ago and are not any more, so they are
corrected rather than left to age: the family page said the rest of the family did not exist
yet, the operators page said it was to be developed, and Cleaning invalid polygons told the
reader to unite an argument with itself because dms_polygon did not exist. That example now
calls dms_polygon, and points at dms_union_polygon for cleaning a whole layer at once.
The family page also gains the sections the family now has (cleaning, dissolving, splitting,
overlay, growing) and says plainly that all six point types are supported throughout, which is
wider than any of the libraries.
Cross references both ways: the four xxx_overlay_polygon and four xxx_polygon_connectivity
pages, Polygon_connectivity and box_connectivity now name their dms_ counterpart, and the
pair-finding table on the operators page has a row for each of the two.
Since GeoDMS 20.20.0, engine fd3dd0b8.
The six pages are new, so they are built and indexed but do not appear in the menu of
geodms.nl until nav/geodms.md in the converter lists them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
#1214 dms polygon operators: a family page, and the Cleaning invalid polygons example
The four operator pages repeated the shared semantics four times over and had no worked
example to point at. Two new pages take that over.
dms polygon operators: what the prefix means, the even-odd rule as the meaning of a polygon
that is not valid and the three consequences a modeller can use (ring orientation does not
matter on input, a bow tie is two triangles, an unclosed ring is closed), the grid per
argument form as the tolerance, what the result looks like, a table of which family to reach
for, the trace line that reports the snapping, and the operators of the family that do not
exist yet.
Cleaning invalid polygons, under Configuration examples: cleaning a source with
dms_union(A, A), using an invalid ring as an operand directly, closing a three unit gap
between two neighbours with a grid of 10, and the hole that a difference cuts, each with its
area and vertex count. Every number on the page is one that examples\testcases\oper_dms_overlay.dms
checks, so the page cannot drift from the engine without that battery going red.
Both pages name the eight regression configurations by file name. They ship with the setup in
examples\testcases (nsi\DmsSetupScript.nsh:209), so a reader can run them against their own
installation.
The four operator pages, polygon operators, Geometric functions and Configuration examples
link to the two new pages.
Both pages are new, so they are built and indexed but do not appear in the menu of geodms.nl
until nav/geodms.md in the converter lists them.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>