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 (PostGIS is only for 2D ones).
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:
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, only planar and linear primitives are allowed: no curves or spheres or other parametrically-modelled primitives are supported (and there is no plan to do so!).
val3dity accepts as input:
Most of the details are available in this scientific article, if you use val3dity for scientific purposes please cite this article:
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]
- Using val3dity
- 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
- 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
- 609 – CITYOBJECT_HAS_NO_GEOMETRY
- 901 – INVALID_INPUT_FILE
- 902 – EMPTY_PRIMITIVE
- 903 – WRONG_INPUT_PARAMETERS
- 999 – UNKNOWN_ERROR
- Who validates the validator, huh?
- How to interpret the report?
- 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
- The validation report says that there are no solids in my CityGML file, but I can see the buildings with my viewer!
- Can my GML file contain more than one
- The validator says my CityGML file is invalid?
- Do you validate the topological relationships between the solids?
- The IDs for the shells and surfaces in the report, are they 0-based or 1-based?
- Where can I get files containing