Commit fbef97bb authored by Matthias Betz's avatar Matthias Betz
Browse files

translate headlines in geometry requirements

parent 0a185c70
......@@ -69,7 +69,7 @@ The following requirements are defined for the three respective geometric levels
| [R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION](R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION.md) | normals all pointing in wrong direction | GE_S_ALL_POLYGONS_WRONG_ORIENTATION | C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION |
| R_GE_S_ALL | Container for: R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED, R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS, R_GE_S_SELF_INTERSECTION, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION | -- | -- |
## Parameter Überblick
## Parameter Overview
| Name | Description | Used in | Unit |
| ---- | ------------ | ------------ | ------- |
......@@ -78,7 +78,7 @@ The following requirements are defined for the three respective geometric levels
| distanceTolerance | Distance from the regression plane before a point is considered not in plane | R_GE_P_NON_PLANAR | Meter |
| angleTolerance | Difference in normal vectors before a plane is not considered planar | R_GE_P_NON_PLANAR | Radiant |
## Abhängigkeitsbaum
## Dependency tree
This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.
......@@ -130,7 +130,7 @@ graph TD;
S0006-->S0008;
```
## Multisurface und Solid Geometrie
## Multisurface and Solid geometry
In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.
| Requirement ID | Description | Dependencies | Error code | Known checks |
......
......@@ -245,18 +245,18 @@
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#parameter-uberblick">
Parameter Überblick
<a class="md-nav__link" href="#parameter-overview">
Parameter Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#abhangigkeitsbaum">
Abhängigkeitsbaum
<a class="md-nav__link" href="#dependency-tree">
Dependency tree
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#multisurface-und-solid-geometrie">
Multisurface und Solid Geometrie
<a class="md-nav__link" href="#multisurface-and-solid-geometry">
Multisurface and Solid geometry
</a>
</li>
</ul>
......@@ -430,18 +430,18 @@
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#parameter-uberblick">
Parameter Überblick
<a class="md-nav__link" href="#parameter-overview">
Parameter Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#abhangigkeitsbaum">
Abhängigkeitsbaum
<a class="md-nav__link" href="#dependency-tree">
Dependency tree
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#multisurface-und-solid-geometrie">
Multisurface und Solid Geometrie
<a class="md-nav__link" href="#multisurface-and-solid-geometry">
Multisurface and Solid geometry
</a>
</li>
</ul>
......@@ -652,7 +652,7 @@ if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s
</tr>
</tbody>
</table>
<h2 id="parameter-uberblick">Parameter Überblick<a class="headerlink" href="#parameter-uberblick" title="Permanent link">#</a></h2>
<h2 id="parameter-overview">Parameter Overview<a class="headerlink" href="#parameter-overview" title="Permanent link">#</a></h2>
<table>
<thead>
<tr>
......@@ -689,7 +689,7 @@ if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s
</tr>
</tbody>
</table>
<h2 id="abhangigkeitsbaum">Abhängigkeitsbaum<a class="headerlink" href="#abhangigkeitsbaum" title="Permanent link">#</a></h2>
<h2 id="dependency-tree">Dependency tree<a class="headerlink" href="#dependency-tree" title="Permanent link">#</a></h2>
<p>This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.</p>
<div class="mermaid">graph TD;
X0001[R_SC_SCHEMA_VALIDATION]
......@@ -737,7 +737,7 @@ if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s
S0005--&gt;S0006;
S0006--&gt;S0008;
</div>
<h2 id="multisurface-und-solid-geometrie">Multisurface und Solid Geometrie<a class="headerlink" href="#multisurface-und-solid-geometrie" title="Permanent link">#</a></h2>
<h2 id="multisurface-and-solid-geometry">Multisurface and Solid geometry<a class="headerlink" href="#multisurface-and-solid-geometry" title="Permanent link">#</a></h2>
<p>In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.</p>
<table>
<thead>
......
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"CityDoctor2","text":"<p> Development of a automatic repair system for virtual city models </p> <p>CityDoctor2 is a quality check software for 3D city models in CityGML format. CityDoctor can read CityGML 1/2 documents and since version 3.12 can also read CityGML 3 with restrictions. All check results can be output in xml or pdf form. Additionally CityDoctor implements the QualityADE to save test results directly into CityGML.</p> <p></p>"},{"location":"#licence-versions","title":"Licence / Versions","text":""},{"location":"#citydoctorvalidation","title":"CityDoctorValidation","text":"<p>The validation part of CityDoctor is freely available and open source</p>"},{"location":"#citydoctorgui","title":"CityDoctorGUI","text":"<p>The graphical interface is free but not open source (see Installation)</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair can be obtained only in consultation with us. Mail to: </p>"},{"location":"#projekt","title":"Projekt","text":"<p>Project duration: 01.11.2018 - 31.12.2021</p>"},{"location":"#partner","title":"Partner","text":"<p>Project responsible: Prof. Dr. Margitta Pries</p> <p>Collaboration partner: Prof. Dr.-Ing. Volker Coors</p> <p>Cooperation partner: 3DIS GmbH 3dpartzz GmbH con terra GmbH Geoplex GIS GmbH Mark Wewetzer M.O.S.S. Computer Grafik Systeme GmbH Steinbeis - Transferzentrum Virtual City Systems</p> <p>Associative partner: Landesamt f\u00fcr Geoinformation und Landentwicklung Baden-W\u00fcrttemberg </p> <p>Funder: Bundesministerium f\u00fcr Bildung und Forschung </p> <p>Project sponsor: VDI Technologiezentrum </p> <p></p>"},{"location":"R_GE_MS/","title":"R_GE_MS","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001</p>"},{"location":"R_GE_P_HOLE_OUTSIDE/","title":"R_GE_P_HOLE_OUTSIDE","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004</p>"},{"location":"R_GE_P_INNER_RINGS_NESTED/","title":"R_GE_P_INNER_RINGS_NESTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005</p>"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/","title":"R_GE_P_INTERIOR_DISCONNECTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003 </p>"},{"location":"R_GE_P_INTERSECTING_RINGS/","title":"R_GE_P_INTERSECTING_RINGS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001</p>"},{"location":"R_GE_P_NON_PLANAR/","title":"R_GE_P_NON_PLANAR","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002 </p>"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/","title":"R_GE_P_ORIENTATION_RINGS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006 </p>"},{"location":"R_GE_R_COLLAPSED_TO_LINE/","title":"R_GE_R_COLLAPSED_TO_LINE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005</p>"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/","title":"R_GE_R_CONSECUTIVE_POINTS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002</p>"},{"location":"R_GE_R_NOT_CLOSED/","title":"R_GE_R_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003</p>"},{"location":"R_GE_R_SELF_INTERSECTION/","title":"R_GE_R_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004</p>"},{"location":"R_GE_R_TOO_FEW_POINTS/","title":"R_GE_R_TOO_FEW_POINTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001</p>"},{"location":"R_GE_SO/","title":"R_GE_SO","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009</p>"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/","title":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008</p>"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/","title":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005</p>"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/","title":"R_GE_S_NON_MANIFOLD_EDGE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004</p>"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/","title":"R_GE_S_NON_MANIFOLD_VERTEX","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003</p>"},{"location":"R_GE_S_NOT_CLOSED/","title":"R_GE_S_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002</p>"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/","title":"R_GE_S_POLYGON_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007</p>"},{"location":"R_GE_S_SELF_INTERSECTION/","title":"R_GE_S_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006</p>"},{"location":"R_GE_S_TOO_FEW_POLYGONS/","title":"R_GE_S_TOO_FEW_POLYGONS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001</p>"},{"location":"basic/","title":"Validation of 3D city models encoded in CityGML","text":""},{"location":"basic/#terms-and-definitions","title":"Terms and definitions","text":"<p>as defined in CityGML Quality Interoperability Experiment, chapter 3</p> <p>Validation</p> <p>Process of validating a CityGML data set against a specified set of requirements. A valid data set is conformant to these requirements.</p> <p>Requirements</p> <p>Rules and restrictions to define data structure and content unambiguously. Requirements can be derived from the CityGML Standard document or be defined separately as refinement of the CityGML standard to avoid ambiguities of the standard and/or specify further requirements (user/application dependent).</p> <p>Check</p> <p>Algorithmic implementation to check if a requirement is met in a validation software. </p> <p>Error</p> <p>Result of a check in case of non-conformance.</p> <p>Validation plan</p> <p>Structured list of requirements, usually depending on use case.</p>"},{"location":"basic/#additional-defintions","title":"Additional defintions","text":"<p>XSD valid</p> <p>A CityGML is conform to the schema or XSD valid if it validates against the CityGML XML schema.</p>"},{"location":"firstRun/","title":"First run","text":""},{"location":"firstRun/#start","title":"Start","text":"<p>After extracting the zip file the file structure should be similar to the example image, depending on the version (GUI or batch). </p> <p>To start CityDoctor the start.bat or start.sh should be used. It is possible to use the command in your own start scripts as needed.</p> <p>The .bat/.sh file only contains the following command (example for windows and the GUI version):</p> <pre><code>java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter\n</code></pre> <p>Note</p> <p>The exact command has changed over the development history of CityDoctor.</p> <p>For the batch version the command is similar and can be adapted for other operating systems.</p> <p>Note</p> <p>The command can also be used for Linux and Mac but the \";\" has to be replaced by \":\".</p>"},{"location":"geometric/","title":"Geometry Requirements","text":""},{"location":"geometric/#error-codes-for-geometric-errors","title":"Error codes for geometric errors","text":"<p>as defined in the CityGML Quality Interoperability Experiment, chapter 7.5.</p> <p>Note</p> <p>The requirements were renamed in CityDoctor to be more human readable. The were renamed according to the error codes.</p> <p>All the geometric errors are in the \"GE\" domain. Also, since the geometric validation is performed at 3 different levels (based on the primitives), the requirements also contain the level:</p> <ul> <li>Ring: R</li> <li>Polygon: P</li> <li>Shell: S</li> </ul> <p>Error codes follow the same system as the requirements mentioned fundamentals. A violation of each respective data quality requirement should result in an error which must be reported with an error code according to the requirement ID. For each error code, extra information can (and should) be returned. For instance: if a ring is not closed (GE_R_NOT_CLOSED) then the ID of the ring (e.g., its position (first, second..) in the polygon) should be returned; if a polygon is not planar (GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE) then the ID of the polygon and the max. deviation from the reference plane should be returned; or if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s) should be returned.</p>"},{"location":"geometric/#vertex-requirement","title":"Vertex Requirement","text":"<p>Vertices A and B are the same if the euclidean distance between them is smaller than (minVertexDistance). It is also used to check whether a point is touching an edge. If a point is within minVertexDistance distance to an edge it is considered touching. This parameter is used in multiple checks with the same value:</p> <ul> <li>R_GE_R_CONSECUTIVE_POINTS_SAME</li> <li>R_GE_R_NOT_CLOSED</li> <li>R_GE_R_SELF_INTERSECTION</li> <li>R_GE_P_INTERIOR_DISCONNECTED</li> </ul> <p>The following requirements are defined for the three respective geometric levels (adopted from Ledoux (2013)):</p>"},{"location":"geometric/#linear-ring","title":"Linear Ring","text":"Requirement ID Description Error code Known checks R_GE_R_TOO_FEW_POINTS too few points GE_R_TOO_FEW_POINTS C_GE_R_TOO_FEW_POINTS R_GE_R_CONSECUTIVE_POINTS_SAME 2 consecutive points are the same GE_R_CONCECUTIVE_POINTS_SAME C_GE_R_CONCECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT R_GE_R_NOT_CLOSED first-last points are not the same GE_R_NOT_CLOSED C_GE_R_NOT_CLOSED R_GE_R_SELF_INTERSECTION self-intersects, i.e., a bowtie GE_R_SELF_INTERSECTION C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT R_GE_R_COLLAPSED_TO_LINE Currently not in use as it is redundant with R_GE_R_SELF_INTERSECTION is point or line GE_R_COLLAPSED_TO_LINE C_GE_R_COLLAPSED_TO_LINE R_GE_R_ALL Container for: R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION -- --"},{"location":"geometric/#polygon","title":"Polygon","text":"Requirement ID Description Error code Known checks R_GE_P_INTERSECTING_RINGS 2+ rings intersect GE_P_INTERSECTING_RINGS C_GE_P_INTERSECTING_RINGS R_GE_P_NON_PLANAR Non planar polygon, both distance and normal deviation GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION C_GE_P_NON_PLANAR R_GE_P_INTERIOR_DISCONNECTED interior is not connected GE_P_INTERIOR_DISCONNECTED C_GE_P_INTERIOR_DISCONNECTED R_GE_P_HOLE_OUTSIDE 1 or more interior rings are located outside the exterior ring GE_P_HOLE_OUTSIDE C_GE_P_HOLE_OUTSIDE R_GE_P_INNER_RINGS_NESTED interior ring is located inside other GE_P_INNER_RINGS_NESTED C_GE_P_INNER_RINGS_NESTED R_GE_P_ORIENTATION_RINGS_SAME exterior and interior rings have same orientation GE_P_ORIENTATION_RINGS_SAME C_GE_P_ORIENTATION_RINGS_SAME R_GE_P_ALL Container for: R_GE_P_INTERSECTING_RINGS, R_GE_P_NON_PLANAR, R_GE_P_INTERIOR_DISCONNECTED, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_ORIENTATION_RINGS_SAME, R_GE_R_ALL -- --"},{"location":"geometric/#solid-shell","title":"Solid / Shell","text":"Requirement ID Description Error code Known checks R_GE_S_TOO_FEW_POLYGONS &lt;4 polygons GE_S_TOO_FEW_POLYGONS C_GE_S_TOO_FEW_POLYGONS R_GE_S_NOT_CLOSED there is 1+ hole(s) on the surface GE_S_NOT_CLOSED C_GE_S_NOT_CLOSED R_GE_S_NON_MANIFOLD_VERTEX Each shell must be simple GE_S_NON_MANIFOLD_VERTEX C_GE_S_NON_MANIFOLD_VERTEX R_GE_S_NON_MANIFOLD_EDGE Each edge of a shell should have exactly 2 incident polygons. GE_S_NON_MANIFOLD_EDGE C_GE_S_NON_MANIFOLD_EDGE R_GE_S_MULTIPLE_CONNECTED_COMPONENTS 1+ polygons not connected to main shell GE_S_MULTIPLE_CONNECTED_COMPONENTS C_GE_S_MULTIPLE_CONNECTED_COMPONENTS R_GE_S_SELF_INTERSECTION Solid self intersects GE_S_SELF_INTERSECTION C_GE_S_SELF_INTERSECTION R_GE_S_POLYGON_WRONG_ORIENTATION orientation of a polygon not correct GE_S_POLYGON_WRONG_ORIENTATION C_GE_S_POLYGON_WRONG_ORIENTATION R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION normals all pointing in wrong direction GE_S_ALL_POLYGONS_WRONG_ORIENTATION C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION R_GE_S_ALL Container for: R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED, R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS, R_GE_S_SELF_INTERSECTION, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION -- --"},{"location":"geometric/#parameter-uberblick","title":"Parameter \u00dcberblick","text":"Name Description Used in Unit minVertexDistance The minimum distance between two points before they are considered the same point R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION, R_GE_P_INTERIOR_DISCONNECTED Meter type Planar check type, can be distance, angle, both sein R_GE_P_NON_PLANAR - distanceTolerance Distance from the regression plane before a point is considered not in plane R_GE_P_NON_PLANAR Meter angleTolerance Difference in normal vectors before a plane is not considered planar R_GE_P_NON_PLANAR Radiant"},{"location":"geometric/#abhangigkeitsbaum","title":"Abh\u00e4ngigkeitsbaum","text":"<p>This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.</p> <pre><code>graph TD;\n X0001[R_SC_SCHEMA_VALIDATION]\n R0001[R_GE_R_TOO_FEW_POINTS]\n R0002[R_GE_R_CONSECUTIVE_POINTS_SAME]\n R0003[R_GE_R_NOT_CLOSED]\n R0004[R_GE_R_SELF_INTERSECTION]\n P0001[R_GE_P_INTERSECTING_RINGS]\n P0002[R_GE_P_NON_PLANAR]\n P0003[R_GE_P_INTERIOR_DISCONNECTED]\n P0004[R_GE_P_HOLE_OUTSIDE]\n P0005[R_GE_P_INNER_RINGS_NESTED]\n P0006[R_GE_P_ORIENTATION_RINGS_SAME]\n\n S0001[R_GE_S_TOO_FEW_POLYGONS]\n S0002[R_GE_S_NOT_CLOSED]\n S0003[R_GE_S_NON_MANIFOLD_VERTEX]\n S0004[R_GE_S_NON_MANIFOLD_EDGE]\n S0005[R_GE_S_MULTIPLE_CONNECTED_COMPONENTS]\n S0006[R_GE_S_SELF_INTERSECTION]\n S0007[R_GE_S_POLYGON_WRONG_ORIENTATION]\n S0008[R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION]\n\n X0001--&gt;R0003;\n R0003--&gt;R0001;\n R0001--&gt;R0002;\n R0002--&gt;R0004;\n R0004--&gt;P0002;\n P0002--&gt;P0006;\n P0006--&gt;P0003;\n P0006--&gt;P0004;\n P0006--&gt;P0005;\n P0004--&gt;P0001;\n P0005--&gt;P0001;\n P0001--&gt;S0001;\n P0003--&gt;S0001;\n S0001--&gt;S0002;\n S0001--&gt;S0004;\n S0001--&gt;S0003;\n S0001--&gt;S0005;\n S0002--&gt;S0007;\n S0004--&gt;S0007;\n S0007--&gt;S0006;\n S0003--&gt;S0006;\n S0005--&gt;S0006;\n S0006--&gt;S0008; \n</code></pre>"},{"location":"geometric/#multisurface-und-solid-geometrie","title":"Multisurface und Solid Geometrie","text":"<p>In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.</p> Requirement ID Description Dependencies Error code Known checks R_GE_MS valid multisurface geometry R_SC-SCHEMA-VALIDATION, R_GE_P_ALL -- -- R_GE_SO valid solid geometry R_SC-SCHEMA-VALIDATION, R_GE_S_ALL -- --"},{"location":"requiredSoftware/","title":"Required Software","text":""},{"location":"requiredSoftware/#versions-from-3130","title":"Versions from 3.13.0","text":"<p>Starting with version 3.13.0, a repository was created on the university's transfer portal, which will henceforth be used as a repository for finished releases: https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases</p> <p>The versions are divided there between CityDoctorValidation and CityDoctorGUI and under these folders there are the corresponding version folders.</p>"},{"location":"requiredSoftware/#release-versions","title":"Release Versions","text":"<p>For each CityDoctor variant (CityDoctorValidation or CityDoctorGUI) four different versions are provided for download. Java runtimes of the Liberica distribution are included in different versions. </p> Version Description CityDoctor*-no-runtime.zip This version does not include a runtime for Java. If you already have a Java version 17 installed on your PC use this. See Java CityDoctor*-win.zip Includes a Windows Java Runtime to run CityDoctor, no Java needs to be installed. CityDoctor*-lin.zip Includes a Linux Java Runtime to run CityDoctor CityDoctor*-mac.zip Includes a Mac Java Runtime to run CityDoctor"},{"location":"requiredSoftware/#versions-until-312x","title":"Versions until 3.12.x","text":"<p>CityDoctor can be downloaded from various sites. The most recent place is a gitlab repository. Alternatively, releases are also listed on the CityDoctor homepage of the BHT. There are always two versions:</p> <ul> <li>CityDoctorGUI-3.x.x.zip: This is the graphical interface including the checks. Suitable for the end user on a desktop PC.</li> <li>CityDoctorValidation-3.x.x.zip: This is the batch version suitable for integration into servers or other existing systems and has no graphical interface but works file-based as a process.</li> </ul> <p>Note</p> <p>There are sometimes special versions that have been created for testing different delivery options. Example: CityDoctorGUI-x.x.x-win.zip contains the JavaFX libraries so that a Java environment without JavaFX can also be used.</p>"},{"location":"requiredSoftware/#java","title":"Java","text":"<p>Before CityDoctor version 3.12.x Java 8 is required either as JDK or as JRE. From version 3.12.x Java 17 is required.</p> <p>Warning</p> <p>It is important that the installed Java version includes the JavaFX libraries. These are needed for the graphical user interface.</p> <p>The Liberica JRE oder JDK has proven itself for use with CityDoctor.</p> <p>Note</p> <p>The Liberica distribution is 100% free and open source.</p> <p>Note</p> <p>For the development with CityDoctor a JDK is required.</p>"},{"location":"requirements/","title":"Anforderungen und Pr\u00fcfungen f\u00fcr die Validierung von CityGML-Modellen","text":"<p>The requirements are the basic building blocks for a validation plan to validate CityGML models. For naming conventions and definitions, see fundamentals. </p> <p>A requirement can be validated by one or more checks. A check validates one or more requirements on a model. Each check can have preconditions. If these preconditions are not met, the check is not executed. A distinction is made between:</p> <ul> <li>Schema Requirements</li> <li>Geometry Requirements</li> <li>Semantic Requirements</li> </ul>"},{"location":"schemaRequirements/","title":"Schema Requirements","text":""},{"location":"schemaRequirements/#r_sc_schema_validation","title":"R_SC_SCHEMA_VALIDATION","text":""},{"location":"schemaRequirements/#anforderung","title":"Anforderung","text":"ID R_SC_SCHEMA_VALIDATION Description A basic requirement is that each CityGML document must be well defined and XSD valid. Error code SC-SCHEMA-NOT-VALID"},{"location":"schemaRequirements/#prufung","title":"Pr\u00fcfung","text":"ID SC_SCHEMA_VALIDATION Anforderungs ID R_SC_SCHEMA_VALIDATION Requirements none Description Tools to perform XSD validation are available and give reliable results Error code SC_SCHEMA_NOT_VALID"},{"location":"semantic/","title":"Semantic Requirements","text":"<p>The semantic requirements are mostly attribute based. This results in 3 error states for an attribute:</p> <ul> <li>SE_ATTRIBUTE_WRONG_VALUE: If an attribute has a wrong value.</li> <li>SE_ATTRIBUTE_MISSING: If an attribute is missing but should be present.</li> <li>SE_ATTRIBUTE_INVALID: If an attribute is present but forbidden.</li> </ul>"},{"location":"semantic/#schematron","title":"Schematron","text":"<p>In CityDoctor wurde das XML Validierungssystem Schematron integriert um flexibel Attributpr\u00fcfungen anzupassen und zu unterst\u00fctzen. </p> <p>Hier ist ein Beispiel f\u00fcr eine Schematron Datei die CityDoctor integrieren kann:</p>"},{"location":"semantic/#citydoctor-3130","title":"CityDoctor &gt;= 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n\n</code></pre>"},{"location":"semantic/#citydoctor-3130_1","title":"CityDoctor &lt; 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n</code></pre> <p>Diese Datei pr\u00fcft, dass alle Buildings in sich selbst oder in einem ihrer Unterelementen ein Solid beliebigen LODSs vorhanden ist. Au\u00dferdem stellt die Datei sicher, dass jedes BuildingPart ein Solid enth\u00e4lt. Wenn dies nicht der Fall ist wird eine Fehlermeldung ausgegeben. Die Fehlermeldung ist dabei so formattiert, dass CityDoctor sie interpretieren und in das interne Datenmodell einbinden kann.</p>"},{"location":"semantic/#fehlerformat","title":"Fehlerformat","text":"<p>Das Fehlerformat ist ein CSV-Format mit || als Trennzeichen</p> <pre><code>parent id||child id||error code||error type||is generic attribute\n</code></pre> <p>Die Fehlermeldung besteht aus den folgenden Teilen:</p> <ul> <li>Die <code>parent id</code> ist die gml id des obersten Elements z.B. Building oder Bridge. </li> <li>Falls der Fehler in einem Unterelement aufgetreten ist so kann diese ID in dem Feld f\u00fcr die <code>child id</code> eingetragen werden.</li> <li>Im Feld <code>error type</code> ist einer der 3 Fehlertypen einzutragen: <code>SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID</code>.</li> </ul> <p>note Nur in CityDoctor &lt; 3.13.0: * Um ein generisches Attribut mit dem Namen <code>measuredHeight</code> von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen <code>true</code> einzutragen wenn es sich um ein generisches Attribut handelt ansonsten <code>false</code>. </p>"},{"location":"userInterface/","title":"User interface","text":""},{"location":"userInterface/#citydoctor","title":"CityDoctor","text":"<p>In the upper bar the following buttons are in order:</p> <ul> <li>Load: Opens the dialog for loading a CityGML file</li> <li>Validation: Opens the dialog to check a loaded CityGML</li> <li>Validation results: Opens the dialog for writing a test protocol in xml or pdf form</li> <li>Grid: Shows/hides the grid instead of filled polygons</li> <li>Backsides: Shows/hides backs of polygons</li> <li>Global View: Loads all elements of a CityGML into the view</li> <li>LODs: Turns individual LODs on or off from the view</li> <li>Save: Saves a CityGML file back, if the file was checked the QualityADE is written too.</li> <li>About: Opens the dialog with information about the project CityDoctor2</li> <li>View: Switches different views. There is only one for the validation part.</li> <li>Language: Here you can set the language (German/English)</li> </ul> <p>Warning</p> <p>Displaying the Global View can cause crashes with large CityGML files (&gt; 100mb depending on the system). The display may take a short time.</p>"},{"location":"userInterface/#load","title":"Load","text":"<p>The Load button opens the dialog for loading a CityGML file.</p> <p></p> <p>In the file bar a file path can be entered or selected via the Select button.</p> <p>In addition, other settings for reading the file can be specified.</p> <ul> <li>NumberOfRoundingPlaces: To how many decimal places are the read-in values rounded?</li> <li>XML-Validierung: Performs an XML validation. Errors are detected directly during the import and the import is aborted.</li> <li>Low Memory Consumption Mode : Saves RAM to allow larger files in the GUI. Slight performance costs during the validation process.</li> </ul> <p>When loading, the progress is approximately represented by the loading bar.</p> <p>Note</p> <p>Files can also be dragged and dropped directly from the file manager into the GUI without using the load dialog. The default values are assumed (8 decimal places, no XML validation).</p> <p>After loading a CityGML file, the elements are displayed in the individual tabs. Selecting an element will display it in the view.</p> <p></p> <p>Note</p> <p>By selecting the top element of a tab, all elements within this tab are displayed. As the above warning states, larger amounts of data will cause crashes.</p>"},{"location":"userInterface/#validation","title":"Validation","text":"<p>The validation plan can be customized in the check dialog. In addition to the available checks, the global parameters are also displayed here.</p> <p>The parameters can be changed with a double click in the value column. The unit is fixed.</p> <p>Note</p> <p>The numberOfRoundingPlaces parameter cannot be changed. It was set when the file was loaded.</p> <p>If checks should not be executed, they can be deactivated in the Active column.</p> <p>Warning</p> <p>If checks are disabled but other active checks need them as dependencies, they will be re-enabled during the check to ensure stability. See Requirements.</p> <p>In the Schematron file field, a path to a Schematron file can be entered. In this file flexible rules for the semantic requirements can be defined. See Semantic Requirements</p> <p>The test plan can be saved and loaded via the two buttons at the top right.</p> <p>After the check, elements with errors are colored red and elements without errors are colored green. When selecting an element that contains errors, the errors are displayed in the lower tab Errors. There you can select the error to display it in CityDoctor and get more information.</p> <p></p> <p>The elements can be filtered with the dropdown menu to show only faulty elements.</p>"},{"location":"userInterface/#validation-reports","title":"Validation reports","text":"<p>In this dialog there is again an overview of the errors in image form and the possibility to write an xml or pdf report.</p> <p></p>"},{"location":"validationPlan/","title":"Validation Plan","text":"<p>the validation plan for CityDoctor is specified in YAML.</p> <p>For version 3.12.x and later, an example looks like this:</p> <pre><code>globalParameters:\n numberOfRoundingPlaces: 8\n # in m\n minVertexDistance: 0.0001\n schematronPath: 'checkForSolid.xml'\nuseStreaming: true # (1)!\nrequirements:\n R_GE_R_TOO_FEW_POINTS:\n enabled: true\n R_GE_R_NOT_CLOSED:\n enabled: true\n R_GE_R_CONSECUTIVE_POINTS_SAME:\n enabled: true\n R_GE_R_SELF_INTERSECTION:\n enabled: true\n R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:\n enabled: true\n R_GE_P_INTERIOR_DISCONNECTED:\n enabled: true\n R_GE_P_INTERSECTING_RINGS:\n enabled: true\n R_GE_P_NON_PLANAR:\n enabled: true\n parameters:\n # one of (\"distance\", \"angle\", \"both\")\n type: distance\n # in m\n distanceTolerance: 0.01\n # in degree\n angleTolerance: 1\n R_GE_P_HOLE_OUTSIDE:\n enabled: true\n R_GE_P_ORIENTATION_RINGS_SAME:\n enabled: true\n R_GE_P_INNER_RINGS_NESTED:\n enabled: true\n R_GE_S_TOO_FEW_POLYGONS:\n enabled: true\n R_GE_S_NOT_CLOSED:\n enabled: true\n R_GE_S_NON_MANIFOLD_EDGE:\n enabled: true\n R_GE_S_POLYGON_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_NON_MANIFOLD_VERTEX:\n enabled: true\n R_GE_S_SELF_INTERSECTION:\n enabled: true\n R_SE_BS_IS_WALL:\n enabled: false\n parameters:\n lowerAngle: '45'\n upperAngle: '135'\n R_SE_BS_IS_FLOOR:\n enabled: false\n R_SE_BS_GROUND_UNFRAGMENTED:\n enabled: false\n R_SE_BS_IS_GROUND:\n enabled: false\n R_SE_BS_IS_CEILING:\n enabled: false\n</code></pre> <ol> <li>The parameter <code>useStreaming</code> is a switch to read a file piece by piece instead of reading the complete file before the check takes place. With this setting also files &gt; 2GB can be checked without large RAM requirements.</li> </ol> <p>In the validation plan you will find the same settings that are listed in the graphical user interface.</p> <p>All requirements that are to be checked are listed under requirements. The semantic checks are deactivated by default. </p>"}]}
\ No newline at end of file
{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"CityDoctor2","text":"<p> Development of a automatic repair system for virtual city models </p> <p>CityDoctor2 is a quality check software for 3D city models in CityGML format. CityDoctor can read CityGML 1/2 documents and since version 3.12 can also read CityGML 3 with restrictions. All check results can be output in xml or pdf form. Additionally CityDoctor implements the QualityADE to save test results directly into CityGML.</p> <p></p>"},{"location":"#licence-versions","title":"Licence / Versions","text":""},{"location":"#citydoctorvalidation","title":"CityDoctorValidation","text":"<p>The validation part of CityDoctor is freely available and open source</p>"},{"location":"#citydoctorgui","title":"CityDoctorGUI","text":"<p>The graphical interface is free but not open source (see Installation)</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair can be obtained only in consultation with us. Mail to: </p>"},{"location":"#projekt","title":"Projekt","text":"<p>Project duration: 01.11.2018 - 31.12.2021</p>"},{"location":"#partner","title":"Partner","text":"<p>Project responsible: Prof. Dr. Margitta Pries</p> <p>Collaboration partner: Prof. Dr.-Ing. Volker Coors</p> <p>Cooperation partner: 3DIS GmbH 3dpartzz GmbH con terra GmbH Geoplex GIS GmbH Mark Wewetzer M.O.S.S. Computer Grafik Systeme GmbH Steinbeis - Transferzentrum Virtual City Systems</p> <p>Associative partner: Landesamt f\u00fcr Geoinformation und Landentwicklung Baden-W\u00fcrttemberg </p> <p>Funder: Bundesministerium f\u00fcr Bildung und Forschung </p> <p>Project sponsor: VDI Technologiezentrum </p> <p></p>"},{"location":"R_GE_MS/","title":"R_GE_MS","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_MS_0001</p>"},{"location":"R_GE_P_HOLE_OUTSIDE/","title":"R_GE_P_HOLE_OUTSIDE","text":"<p>see https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0004</p>"},{"location":"R_GE_P_INNER_RINGS_NESTED/","title":"R_GE_P_INNER_RINGS_NESTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0005</p>"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/","title":"R_GE_P_INTERIOR_DISCONNECTED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0003 </p>"},{"location":"R_GE_P_INTERSECTING_RINGS/","title":"R_GE_P_INTERSECTING_RINGS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0001</p>"},{"location":"R_GE_P_NON_PLANAR/","title":"R_GE_P_NON_PLANAR","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0002 </p>"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/","title":"R_GE_P_ORIENTATION_RINGS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_PO_0006 </p>"},{"location":"R_GE_R_COLLAPSED_TO_LINE/","title":"R_GE_R_COLLAPSED_TO_LINE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0005</p>"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/","title":"R_GE_R_CONSECUTIVE_POINTS_SAME","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0002</p>"},{"location":"R_GE_R_NOT_CLOSED/","title":"R_GE_R_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0003</p>"},{"location":"R_GE_R_SELF_INTERSECTION/","title":"R_GE_R_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0004</p>"},{"location":"R_GE_R_TOO_FEW_POINTS/","title":"R_GE_R_TOO_FEW_POINTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_LR_0001</p>"},{"location":"R_GE_SO/","title":"R_GE_SO","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0009</p>"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/","title":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0008</p>"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/","title":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0005</p>"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/","title":"R_GE_S_NON_MANIFOLD_EDGE","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0004</p>"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/","title":"R_GE_S_NON_MANIFOLD_VERTEX","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0003</p>"},{"location":"R_GE_S_NOT_CLOSED/","title":"R_GE_S_NOT_CLOSED","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0002</p>"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/","title":"R_GE_S_POLYGON_WRONG_ORIENTATION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0007</p>"},{"location":"R_GE_S_SELF_INTERSECTION/","title":"R_GE_S_SELF_INTERSECTION","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0006</p>"},{"location":"R_GE_S_TOO_FEW_POLYGONS/","title":"R_GE_S_TOO_FEW_POLYGONS","text":"<p>siehe https://gitlab.com/volkercoors/CiD4Sim/-/wikis/validation/Requirements/GE_gml_SO_0001</p>"},{"location":"basic/","title":"Validation of 3D city models encoded in CityGML","text":""},{"location":"basic/#terms-and-definitions","title":"Terms and definitions","text":"<p>as defined in CityGML Quality Interoperability Experiment, chapter 3</p> <p>Validation</p> <p>Process of validating a CityGML data set against a specified set of requirements. A valid data set is conformant to these requirements.</p> <p>Requirements</p> <p>Rules and restrictions to define data structure and content unambiguously. Requirements can be derived from the CityGML Standard document or be defined separately as refinement of the CityGML standard to avoid ambiguities of the standard and/or specify further requirements (user/application dependent).</p> <p>Check</p> <p>Algorithmic implementation to check if a requirement is met in a validation software. </p> <p>Error</p> <p>Result of a check in case of non-conformance.</p> <p>Validation plan</p> <p>Structured list of requirements, usually depending on use case.</p>"},{"location":"basic/#additional-defintions","title":"Additional defintions","text":"<p>XSD valid</p> <p>A CityGML is conform to the schema or XSD valid if it validates against the CityGML XML schema.</p>"},{"location":"firstRun/","title":"First run","text":""},{"location":"firstRun/#start","title":"Start","text":"<p>After extracting the zip file the file structure should be similar to the example image, depending on the version (GUI or batch). </p> <p>To start CityDoctor the start.bat or start.sh should be used. It is possible to use the command in your own start scripts as needed.</p> <p>The .bat/.sh file only contains the following command (example for windows and the GUI version):</p> <pre><code>java -classpath app/*;plugins/* de.hft.stuttgart.citydoctor2.gui.CityDoctorGUIStarter\n</code></pre> <p>Note</p> <p>The exact command has changed over the development history of CityDoctor.</p> <p>For the batch version the command is similar and can be adapted for other operating systems.</p> <p>Note</p> <p>The command can also be used for Linux and Mac but the \";\" has to be replaced by \":\".</p>"},{"location":"geometric/","title":"Geometry Requirements","text":""},{"location":"geometric/#error-codes-for-geometric-errors","title":"Error codes for geometric errors","text":"<p>as defined in the CityGML Quality Interoperability Experiment, chapter 7.5.</p> <p>Note</p> <p>The requirements were renamed in CityDoctor to be more human readable. The were renamed according to the error codes.</p> <p>All the geometric errors are in the \"GE\" domain. Also, since the geometric validation is performed at 3 different levels (based on the primitives), the requirements also contain the level:</p> <ul> <li>Ring: R</li> <li>Polygon: P</li> <li>Shell: S</li> </ul> <p>Error codes follow the same system as the requirements mentioned fundamentals. A violation of each respective data quality requirement should result in an error which must be reported with an error code according to the requirement ID. For each error code, extra information can (and should) be returned. For instance: if a ring is not closed (GE_R_NOT_CLOSED) then the ID of the ring (e.g., its position (first, second..) in the polygon) should be returned; if a polygon is not planar (GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE) then the ID of the polygon and the max. deviation from the reference plane should be returned; or if a shell is not 'watertight' (GE_S_NOT_CLOSED) then the location of the hole(s) should be returned.</p>"},{"location":"geometric/#vertex-requirement","title":"Vertex Requirement","text":"<p>Vertices A and B are the same if the euclidean distance between them is smaller than (minVertexDistance). It is also used to check whether a point is touching an edge. If a point is within minVertexDistance distance to an edge it is considered touching. This parameter is used in multiple checks with the same value:</p> <ul> <li>R_GE_R_CONSECUTIVE_POINTS_SAME</li> <li>R_GE_R_NOT_CLOSED</li> <li>R_GE_R_SELF_INTERSECTION</li> <li>R_GE_P_INTERIOR_DISCONNECTED</li> </ul> <p>The following requirements are defined for the three respective geometric levels (adopted from Ledoux (2013)):</p>"},{"location":"geometric/#linear-ring","title":"Linear Ring","text":"Requirement ID Description Error code Known checks R_GE_R_TOO_FEW_POINTS too few points GE_R_TOO_FEW_POINTS C_GE_R_TOO_FEW_POINTS R_GE_R_CONSECUTIVE_POINTS_SAME 2 consecutive points are the same GE_R_CONCECUTIVE_POINTS_SAME C_GE_R_CONCECUTIVE_POINTS_SAME, C_GE_R_DUPLICATE_POINT R_GE_R_NOT_CLOSED first-last points are not the same GE_R_NOT_CLOSED C_GE_R_NOT_CLOSED R_GE_R_SELF_INTERSECTION self-intersects, i.e., a bowtie GE_R_SELF_INTERSECTION C_GE_R_SELF_INTERSECTION, C_GE_R_DUPLICATE_POINT R_GE_R_COLLAPSED_TO_LINE Currently not in use as it is redundant with R_GE_R_SELF_INTERSECTION is point or line GE_R_COLLAPSED_TO_LINE C_GE_R_COLLAPSED_TO_LINE R_GE_R_ALL Container for: R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION -- --"},{"location":"geometric/#polygon","title":"Polygon","text":"Requirement ID Description Error code Known checks R_GE_P_INTERSECTING_RINGS 2+ rings intersect GE_P_INTERSECTING_RINGS C_GE_P_INTERSECTING_RINGS R_GE_P_NON_PLANAR Non planar polygon, both distance and normal deviation GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION C_GE_P_NON_PLANAR R_GE_P_INTERIOR_DISCONNECTED interior is not connected GE_P_INTERIOR_DISCONNECTED C_GE_P_INTERIOR_DISCONNECTED R_GE_P_HOLE_OUTSIDE 1 or more interior rings are located outside the exterior ring GE_P_HOLE_OUTSIDE C_GE_P_HOLE_OUTSIDE R_GE_P_INNER_RINGS_NESTED interior ring is located inside other GE_P_INNER_RINGS_NESTED C_GE_P_INNER_RINGS_NESTED R_GE_P_ORIENTATION_RINGS_SAME exterior and interior rings have same orientation GE_P_ORIENTATION_RINGS_SAME C_GE_P_ORIENTATION_RINGS_SAME R_GE_P_ALL Container for: R_GE_P_INTERSECTING_RINGS, R_GE_P_NON_PLANAR, R_GE_P_INTERIOR_DISCONNECTED, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_ORIENTATION_RINGS_SAME, R_GE_R_ALL -- --"},{"location":"geometric/#solid-shell","title":"Solid / Shell","text":"Requirement ID Description Error code Known checks R_GE_S_TOO_FEW_POLYGONS &lt;4 polygons GE_S_TOO_FEW_POLYGONS C_GE_S_TOO_FEW_POLYGONS R_GE_S_NOT_CLOSED there is 1+ hole(s) on the surface GE_S_NOT_CLOSED C_GE_S_NOT_CLOSED R_GE_S_NON_MANIFOLD_VERTEX Each shell must be simple GE_S_NON_MANIFOLD_VERTEX C_GE_S_NON_MANIFOLD_VERTEX R_GE_S_NON_MANIFOLD_EDGE Each edge of a shell should have exactly 2 incident polygons. GE_S_NON_MANIFOLD_EDGE C_GE_S_NON_MANIFOLD_EDGE R_GE_S_MULTIPLE_CONNECTED_COMPONENTS 1+ polygons not connected to main shell GE_S_MULTIPLE_CONNECTED_COMPONENTS C_GE_S_MULTIPLE_CONNECTED_COMPONENTS R_GE_S_SELF_INTERSECTION Solid self intersects GE_S_SELF_INTERSECTION C_GE_S_SELF_INTERSECTION R_GE_S_POLYGON_WRONG_ORIENTATION orientation of a polygon not correct GE_S_POLYGON_WRONG_ORIENTATION C_GE_S_POLYGON_WRONG_ORIENTATION R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION normals all pointing in wrong direction GE_S_ALL_POLYGONS_WRONG_ORIENTATION C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION R_GE_S_ALL Container for: R_GE_S_TOO_FEW_POLYGONS, R_GE_S_NOT_CLOSED, R_GE_S_NON_MANIFOLD_VERTEX, R_GE_S_NON_MANIFOLD_EDGE, R_GE_S_MULTIPLE_CONNECTED_COMPONENTS, R_GE_S_SELF_INTERSECTION, R_GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION -- --"},{"location":"geometric/#parameter-overview","title":"Parameter Overview","text":"Name Description Used in Unit minVertexDistance The minimum distance between two points before they are considered the same point R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION, R_GE_P_INTERIOR_DISCONNECTED Meter type Planar check type, can be distance, angle, both sein R_GE_P_NON_PLANAR - distanceTolerance Distance from the regression plane before a point is considered not in plane R_GE_P_NON_PLANAR Meter angleTolerance Difference in normal vectors before a plane is not considered planar R_GE_P_NON_PLANAR Radiant"},{"location":"geometric/#dependency-tree","title":"Dependency tree","text":"<p>This is the order the checks will be executed. If one of the depending checks is not executed or has reported an error the following check will not be executed.</p> <pre><code>graph TD;\n X0001[R_SC_SCHEMA_VALIDATION]\n R0001[R_GE_R_TOO_FEW_POINTS]\n R0002[R_GE_R_CONSECUTIVE_POINTS_SAME]\n R0003[R_GE_R_NOT_CLOSED]\n R0004[R_GE_R_SELF_INTERSECTION]\n P0001[R_GE_P_INTERSECTING_RINGS]\n P0002[R_GE_P_NON_PLANAR]\n P0003[R_GE_P_INTERIOR_DISCONNECTED]\n P0004[R_GE_P_HOLE_OUTSIDE]\n P0005[R_GE_P_INNER_RINGS_NESTED]\n P0006[R_GE_P_ORIENTATION_RINGS_SAME]\n\n S0001[R_GE_S_TOO_FEW_POLYGONS]\n S0002[R_GE_S_NOT_CLOSED]\n S0003[R_GE_S_NON_MANIFOLD_VERTEX]\n S0004[R_GE_S_NON_MANIFOLD_EDGE]\n S0005[R_GE_S_MULTIPLE_CONNECTED_COMPONENTS]\n S0006[R_GE_S_SELF_INTERSECTION]\n S0007[R_GE_S_POLYGON_WRONG_ORIENTATION]\n S0008[R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION]\n\n X0001--&gt;R0003;\n R0003--&gt;R0001;\n R0001--&gt;R0002;\n R0002--&gt;R0004;\n R0004--&gt;P0002;\n P0002--&gt;P0006;\n P0006--&gt;P0003;\n P0006--&gt;P0004;\n P0006--&gt;P0005;\n P0004--&gt;P0001;\n P0005--&gt;P0001;\n P0001--&gt;S0001;\n P0003--&gt;S0001;\n S0001--&gt;S0002;\n S0001--&gt;S0004;\n S0001--&gt;S0003;\n S0001--&gt;S0005;\n S0002--&gt;S0007;\n S0004--&gt;S0007;\n S0007--&gt;S0006;\n S0003--&gt;S0006;\n S0005--&gt;S0006;\n S0006--&gt;S0008; \n</code></pre>"},{"location":"geometric/#multisurface-and-solid-geometry","title":"Multisurface and Solid geometry","text":"<p>In order to simplify the definition of a validation plan, two requirement will be introduced in addition to the CityGML QIE: valid MultiSurface and valid Solid geometry. These requirements are just a collection of the linear ring, polygon and shell requirements. No extra check is required.</p> Requirement ID Description Dependencies Error code Known checks R_GE_MS valid multisurface geometry R_SC-SCHEMA-VALIDATION, R_GE_P_ALL -- -- R_GE_SO valid solid geometry R_SC-SCHEMA-VALIDATION, R_GE_S_ALL -- --"},{"location":"requiredSoftware/","title":"Required Software","text":""},{"location":"requiredSoftware/#versions-from-3130","title":"Versions from 3.13.0","text":"<p>Starting with version 3.13.0, a repository was created on the university's transfer portal, which will henceforth be used as a repository for finished releases: https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases</p> <p>The versions are divided there between CityDoctorValidation and CityDoctorGUI and under these folders there are the corresponding version folders.</p>"},{"location":"requiredSoftware/#release-versions","title":"Release Versions","text":"<p>For each CityDoctor variant (CityDoctorValidation or CityDoctorGUI) four different versions are provided for download. Java runtimes of the Liberica distribution are included in different versions. </p> Version Description CityDoctor*-no-runtime.zip This version does not include a runtime for Java. If you already have a Java version 17 installed on your PC use this. See Java CityDoctor*-win.zip Includes a Windows Java Runtime to run CityDoctor, no Java needs to be installed. CityDoctor*-lin.zip Includes a Linux Java Runtime to run CityDoctor CityDoctor*-mac.zip Includes a Mac Java Runtime to run CityDoctor"},{"location":"requiredSoftware/#versions-until-312x","title":"Versions until 3.12.x","text":"<p>CityDoctor can be downloaded from various sites. The most recent place is a gitlab repository. Alternatively, releases are also listed on the CityDoctor homepage of the BHT. There are always two versions:</p> <ul> <li>CityDoctorGUI-3.x.x.zip: This is the graphical interface including the checks. Suitable for the end user on a desktop PC.</li> <li>CityDoctorValidation-3.x.x.zip: This is the batch version suitable for integration into servers or other existing systems and has no graphical interface but works file-based as a process.</li> </ul> <p>Note</p> <p>There are sometimes special versions that have been created for testing different delivery options. Example: CityDoctorGUI-x.x.x-win.zip contains the JavaFX libraries so that a Java environment without JavaFX can also be used.</p>"},{"location":"requiredSoftware/#java","title":"Java","text":"<p>Before CityDoctor version 3.12.x Java 8 is required either as JDK or as JRE. From version 3.12.x Java 17 is required.</p> <p>Warning</p> <p>It is important that the installed Java version includes the JavaFX libraries. These are needed for the graphical user interface.</p> <p>The Liberica JRE oder JDK has proven itself for use with CityDoctor.</p> <p>Note</p> <p>The Liberica distribution is 100% free and open source.</p> <p>Note</p> <p>For the development with CityDoctor a JDK is required.</p>"},{"location":"requirements/","title":"Anforderungen und Pr\u00fcfungen f\u00fcr die Validierung von CityGML-Modellen","text":"<p>The requirements are the basic building blocks for a validation plan to validate CityGML models. For naming conventions and definitions, see fundamentals. </p> <p>A requirement can be validated by one or more checks. A check validates one or more requirements on a model. Each check can have preconditions. If these preconditions are not met, the check is not executed. A distinction is made between:</p> <ul> <li>Schema Requirements</li> <li>Geometry Requirements</li> <li>Semantic Requirements</li> </ul>"},{"location":"schemaRequirements/","title":"Schema Requirements","text":""},{"location":"schemaRequirements/#r_sc_schema_validation","title":"R_SC_SCHEMA_VALIDATION","text":""},{"location":"schemaRequirements/#anforderung","title":"Anforderung","text":"ID R_SC_SCHEMA_VALIDATION Description A basic requirement is that each CityGML document must be well defined and XSD valid. Error code SC-SCHEMA-NOT-VALID"},{"location":"schemaRequirements/#prufung","title":"Pr\u00fcfung","text":"ID SC_SCHEMA_VALIDATION Anforderungs ID R_SC_SCHEMA_VALIDATION Requirements none Description Tools to perform XSD validation are available and give reliable results Error code SC_SCHEMA_NOT_VALID"},{"location":"semantic/","title":"Semantic Requirements","text":"<p>The semantic requirements are mostly attribute based. This results in 3 error states for an attribute:</p> <ul> <li>SE_ATTRIBUTE_WRONG_VALUE: If an attribute has a wrong value.</li> <li>SE_ATTRIBUTE_MISSING: If an attribute is missing but should be present.</li> <li>SE_ATTRIBUTE_INVALID: If an attribute is present but forbidden.</li> </ul>"},{"location":"semantic/#schematron","title":"Schematron","text":"<p>In CityDoctor wurde das XML Validierungssystem Schematron integriert um flexibel Attributpr\u00fcfungen anzupassen und zu unterst\u00fctzen. </p> <p>Hier ist ein Beispiel f\u00fcr eine Schematron Datei die CityDoctor integrieren kann:</p>"},{"location":"semantic/#citydoctor-3130","title":"CityDoctor &gt;= 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n\n</code></pre>"},{"location":"semantic/#citydoctor-3130_1","title":"CityDoctor &lt; 3.13.0","text":"<pre><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;schema xmlns=\"http://purl.oclc.org/dsdl/schematron\" queryBinding=\"xslt2\"&gt;\n &lt;ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/&gt;\n &lt;ns prefix=\"bldg\" uri=\"http://www.opengis.net/citygml/building/2.0\"/&gt;\n\n &lt;pattern&gt;\n &lt;rule context=\"//*:Building\"&gt;\n &lt;assert test=\"count(descendant::*:lod1Solid) &amp;gt; 0 or count(descendant::*:lod2Solid) &amp;gt; 0 or count(descendant::*:lod3Solid) &amp;gt; 0 or count(descendant::*:lod4Solid) &amp;gt; 0\"&gt;&lt;value-of select=\"@gml:id | @id\"/&gt;||||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;rule context=\"//*:BuildingPart\"&gt;\n &lt;assert test=\"count(*:lod1Solid) = 1 or count(*:lod2Solid) = 1 or count(*:lod3Solid) = 1 or count(*:lod4Solid) = 1\"&gt;&lt;value-of select=\"ancestor::*:Building/@*:id\"/&gt;||&lt;value-of select=\"@gml:id | @id\"/&gt;||SE_ATTRIBUTE_MISSING||any solid||false&lt;/assert&gt;\n &lt;/rule&gt;\n &lt;/pattern&gt;\n&lt;/schema&gt; \n</code></pre> <p>Diese Datei pr\u00fcft, dass alle Buildings in sich selbst oder in einem ihrer Unterelementen ein Solid beliebigen LODSs vorhanden ist. Au\u00dferdem stellt die Datei sicher, dass jedes BuildingPart ein Solid enth\u00e4lt. Wenn dies nicht der Fall ist wird eine Fehlermeldung ausgegeben. Die Fehlermeldung ist dabei so formattiert, dass CityDoctor sie interpretieren und in das interne Datenmodell einbinden kann.</p>"},{"location":"semantic/#fehlerformat","title":"Fehlerformat","text":"<p>Das Fehlerformat ist ein CSV-Format mit || als Trennzeichen</p> <pre><code>parent id||child id||error code||error type||is generic attribute\n</code></pre> <p>Die Fehlermeldung besteht aus den folgenden Teilen:</p> <ul> <li>Die <code>parent id</code> ist die gml id des obersten Elements z.B. Building oder Bridge. </li> <li>Falls der Fehler in einem Unterelement aufgetreten ist so kann diese ID in dem Feld f\u00fcr die <code>child id</code> eingetragen werden.</li> <li>Im Feld <code>error type</code> ist einer der 3 Fehlertypen einzutragen: <code>SE_ATTRIBUTE_WRONG_VALUE, SE_ATTRIBUTE_MISSING, SE_ATTRIBUTE_INVALID</code>.</li> </ul> <p>note Nur in CityDoctor &lt; 3.13.0: * Um ein generisches Attribut mit dem Namen <code>measuredHeight</code> von dem nicht generischen Attribut zu unterscheiden ist im letzten Feld vorgesehen <code>true</code> einzutragen wenn es sich um ein generisches Attribut handelt ansonsten <code>false</code>. </p>"},{"location":"userInterface/","title":"User interface","text":""},{"location":"userInterface/#citydoctor","title":"CityDoctor","text":"<p>In the upper bar the following buttons are in order:</p> <ul> <li>Load: Opens the dialog for loading a CityGML file</li> <li>Validation: Opens the dialog to check a loaded CityGML</li> <li>Validation results: Opens the dialog for writing a test protocol in xml or pdf form</li> <li>Grid: Shows/hides the grid instead of filled polygons</li> <li>Backsides: Shows/hides backs of polygons</li> <li>Global View: Loads all elements of a CityGML into the view</li> <li>LODs: Turns individual LODs on or off from the view</li> <li>Save: Saves a CityGML file back, if the file was checked the QualityADE is written too.</li> <li>About: Opens the dialog with information about the project CityDoctor2</li> <li>View: Switches different views. There is only one for the validation part.</li> <li>Language: Here you can set the language (German/English)</li> </ul> <p>Warning</p> <p>Displaying the Global View can cause crashes with large CityGML files (&gt; 100mb depending on the system). The display may take a short time.</p>"},{"location":"userInterface/#load","title":"Load","text":"<p>The Load button opens the dialog for loading a CityGML file.</p> <p></p> <p>In the file bar a file path can be entered or selected via the Select button.</p> <p>In addition, other settings for reading the file can be specified.</p> <ul> <li>NumberOfRoundingPlaces: To how many decimal places are the read-in values rounded?</li> <li>XML-Validierung: Performs an XML validation. Errors are detected directly during the import and the import is aborted.</li> <li>Low Memory Consumption Mode : Saves RAM to allow larger files in the GUI. Slight performance costs during the validation process.</li> </ul> <p>When loading, the progress is approximately represented by the loading bar.</p> <p>Note</p> <p>Files can also be dragged and dropped directly from the file manager into the GUI without using the load dialog. The default values are assumed (8 decimal places, no XML validation).</p> <p>After loading a CityGML file, the elements are displayed in the individual tabs. Selecting an element will display it in the view.</p> <p></p> <p>Note</p> <p>By selecting the top element of a tab, all elements within this tab are displayed. As the above warning states, larger amounts of data will cause crashes.</p>"},{"location":"userInterface/#validation","title":"Validation","text":"<p>The validation plan can be customized in the check dialog. In addition to the available checks, the global parameters are also displayed here.</p> <p>The parameters can be changed with a double click in the value column. The unit is fixed.</p> <p>Note</p> <p>The numberOfRoundingPlaces parameter cannot be changed. It was set when the file was loaded.</p> <p>If checks should not be executed, they can be deactivated in the Active column.</p> <p>Warning</p> <p>If checks are disabled but other active checks need them as dependencies, they will be re-enabled during the check to ensure stability. See Requirements.</p> <p>In the Schematron file field, a path to a Schematron file can be entered. In this file flexible rules for the semantic requirements can be defined. See Semantic Requirements</p> <p>The test plan can be saved and loaded via the two buttons at the top right.</p> <p>After the check, elements with errors are colored red and elements without errors are colored green. When selecting an element that contains errors, the errors are displayed in the lower tab Errors. There you can select the error to display it in CityDoctor and get more information.</p> <p></p> <p>The elements can be filtered with the dropdown menu to show only faulty elements.</p>"},{"location":"userInterface/#validation-reports","title":"Validation reports","text":"<p>In this dialog there is again an overview of the errors in image form and the possibility to write an xml or pdf report.</p> <p></p>"},{"location":"validationPlan/","title":"Validation Plan","text":"<p>the validation plan for CityDoctor is specified in YAML.</p> <p>For version 3.12.x and later, an example looks like this:</p> <pre><code>globalParameters:\n numberOfRoundingPlaces: 8\n # in m\n minVertexDistance: 0.0001\n schematronPath: 'checkForSolid.xml'\nuseStreaming: true # (1)!\nrequirements:\n R_GE_R_TOO_FEW_POINTS:\n enabled: true\n R_GE_R_NOT_CLOSED:\n enabled: true\n R_GE_R_CONSECUTIVE_POINTS_SAME:\n enabled: true\n R_GE_R_SELF_INTERSECTION:\n enabled: true\n R_GE_S_MULTIPLE_CONNECTED_COMPONENTS:\n enabled: true\n R_GE_P_INTERIOR_DISCONNECTED:\n enabled: true\n R_GE_P_INTERSECTING_RINGS:\n enabled: true\n R_GE_P_NON_PLANAR:\n enabled: true\n parameters:\n # one of (\"distance\", \"angle\", \"both\")\n type: distance\n # in m\n distanceTolerance: 0.01\n # in degree\n angleTolerance: 1\n R_GE_P_HOLE_OUTSIDE:\n enabled: true\n R_GE_P_ORIENTATION_RINGS_SAME:\n enabled: true\n R_GE_P_INNER_RINGS_NESTED:\n enabled: true\n R_GE_S_TOO_FEW_POLYGONS:\n enabled: true\n R_GE_S_NOT_CLOSED:\n enabled: true\n R_GE_S_NON_MANIFOLD_EDGE:\n enabled: true\n R_GE_S_POLYGON_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION:\n enabled: true\n R_GE_S_NON_MANIFOLD_VERTEX:\n enabled: true\n R_GE_S_SELF_INTERSECTION:\n enabled: true\n R_SE_BS_IS_WALL:\n enabled: false\n parameters:\n lowerAngle: '45'\n upperAngle: '135'\n R_SE_BS_IS_FLOOR:\n enabled: false\n R_SE_BS_GROUND_UNFRAGMENTED:\n enabled: false\n R_SE_BS_IS_GROUND:\n enabled: false\n R_SE_BS_IS_CEILING:\n enabled: false\n</code></pre> <ol> <li>The parameter <code>useStreaming</code> is a switch to read a file piece by piece instead of reading the complete file before the check takes place. With this setting also files &gt; 2GB can be checked without large RAM requirements.</li> </ol> <p>In the validation plan you will find the same settings that are listed in the graphical user interface.</p> <p>All requirements that are to be checked are listed under requirements. The semantic checks are deactivated by default. </p>"}]}
\ No newline at end of file
......@@ -2,157 +2,157 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_MS/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_HOLE_OUTSIDE/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INNER_RINGS_NESTED/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERIOR_DISCONNECTED/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERSECTING_RINGS/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_NON_PLANAR/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_ORIENTATION_RINGS_SAME/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_COLLAPSED_TO_LINE/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_CONSECUTIVE_POINTS_SAME/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_NOT_CLOSED/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_SELF_INTERSECTION/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_TOO_FEW_POINTS/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_SO/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_EDGE/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_VERTEX/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NOT_CLOSED/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_POLYGON_WRONG_ORIENTATION/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_SELF_INTERSECTION/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_TOO_FEW_POLYGONS/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/basic/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/firstRun/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/geometric/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requiredSoftware/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requirements/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/schemaRequirements/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/semantic/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/userInterface/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/validationPlan/</loc>
<lastmod>2023-06-05</lastmod>
<lastmod>2023-12-08</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
\ No newline at end of file
No preview for this file type
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment