val3dity
(version 2.5.1)
val3dity—pronounced ‘val-three-dity’—allows us to validate 3D primitives according to the international standard ISO19107. Think of it as PostGIS ST_IsValid, but for 3D primitives.
In short, it verifies whether a 3D primitive respects the definition as given in ISO19107 and GML/CityGML. The validation of the following 3D primitives is fully supported:
MultiSurface
CompositeSurface
Solid
MultiSolid
CompositeSolid
Unlike many other validation tools in 3D GIS, inner rings in polygons/surfaces are supported and so are cavities in solids (also called voids or inner shells).
However, as is the case for many formats used in practice, only planar and linear primitives are allowed: no curves or spheres or other parametrically-modelled primitives are supported. There is no plan to support these geometries.
val3dity accepts as input:
For the CityJSON and IndoorGML formats, extra validations (specific to the format) are performed, eg the overlap between different parts of a building, or the validation of the navigation graph in IndoorGML.
Note
If you use val3dity in a scientific context, please cite these articles:
Ledoux, Hugo (2019). val3dity: validation of 3D GIS primitives according to the international standards. Open Geospatial Data, Software and Standards, 3(1), 2018, pp.1 [DOI]
Ledoux, Hugo (2013). On the validation of solids represented with the international standards for geographic information. Computer-Aided Civil and Infrastructure Engineering, 28(9):693-706. [PDF] [DOI]
Content
- Installation
- Using val3dity
- Errors
- 101 – TOO_FEW_POINTS
- 102 – CONSECUTIVE_POINTS_SAME
- 103 – RING_NOT_CLOSED
- 104 – RING_SELF_INTERSECTION
- 201 – INTERSECTION_RINGS
- 202 – DUPLICATED_RINGS
- 203 – NON_PLANAR_POLYGON_DISTANCE_PLANE
- 204 – NON_PLANAR_POLYGON_NORMALS_DEVIATION
- 205 – POLYGON_INTERIOR_DISCONNECTED
- 206 – INNER_RING_OUTSIDE
- 207 – INNER_RINGS_NESTED
- 208 – ORIENTATION_RINGS_SAME
- 300 – NOT_VALID_2_MANIFOLD
- 301 – TOO_FEW_POLYGONS
- 302 – SHELL_NOT_CLOSED
- 303 – NON_MANIFOLD_CASE
- 305 – MULTIPLE_CONNECTED_COMPONENTS
- 306 – SHELL_SELF_INTERSECTION
- 307 – POLYGON_WRONG_ORIENTATION
- 401 – INTERSECTION_SHELLS
- 402 – DUPLICATED_SHELLS
- 403 – INNER_SHELL_OUTSIDE
- 404 – SOLID_INTERIOR_DISCONNECTED
- 405 – WRONG_ORIENTATION_SHELL
- 501 – INTERSECTION_SOLIDS
- 502 – DUPLICATED_SOLIDS
- 503 – DISCONNECTED_SOLIDS
- 601 – BUILDINGPARTS_OVERLAP
- 701 – CELLS_OVERLAP
- 702 – DUAL_VERTEX_OUTSIDE_CELL
- 703 – PRIMAL_DUAL_XLINKS_ERROR
- 704 – PRIMAL_DUAL_ADJACENCIES_INCONSISTENT
- 901 – INVALID_INPUT_FILE
- 902 – EMPTY_PRIMITIVE
- 903 – WRONG_INPUT_PARAMETERS
- 904 – FORMAT_NOT_SUPPORTED
- 905 – INVALID_JSON
- 906 – PRIMITIVE_NO_GEOMETRY
- 999 – UNKNOWN_ERROR
- Definitions
- FAQ
- Who validates the validator, huh?
- I get many errors 203 and 204, but my planes look planar to me. Why is that?
- I don’t see all the errors in my solid
- I’m sure my 3D primitive is valid, but the validator says that something is wrong
- Do you validate the topological relationships between the solids?
- The IDs for the geometries, shells, and surfaces in the report, are they 0-based or 1-based?
- Where can I get files containing
Solids
orCompositeSolid
?
- Contact