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

Review German geometry-error docs, translate to English, rebuild site



German docs (docs/de):
- Fix broken shell cross-links (missing R_ prefix), missing .md, old
  wiki path, and wrong/missing #vertex anchors
- Fix error/check codes: CONCECUTIVE->CONSECUTIVE, C_ prefix on
  collapsed-to-line check, GS_S_->GE_S_ typo, correct requirement-ID
  and expected-result cells
- Fix German spelling/grammar and remove stray English fragments
- Unify headings/labels, remove stray <br /> lines
- Repoint all figure links from external GitLab URLs to local img/

English docs (docs/en):
- Translate all 21 R_GE_* detail files from the wiki-pointer stubs,
  preserving IDs, codes, links, images and tables verbatim
- Fix CONCECUTIVE->CONSECUTIVE in geometric.md

Rebuild both mkdocs sites into public/de and public/en.

Co-Authored-By: default avatarClaude Opus 4.8 (1M context) <noreply@anthropic.com>
parent 93fb6887
Pipeline #12421 passed with stages
in 15 seconds
......@@ -9,17 +9,18 @@
<link href=".." rel="prev"/>
<link href="../firstRun/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Installation - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -30,13 +31,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -55,39 +56,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,39 +153,31 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Installation
</span>
<span class="md-nav__icon md-icon"></span>
Installation
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -194,36 +186,28 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-from-3130">
<span class="md-ellipsis">
Versions from 3.13.0
</span>
</a>
Versions from 3.13.0
</a>
<nav aria-label="Versions from 3.13.0" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#release-versions">
<span class="md-ellipsis">
Release Versions
</span>
</a>
Release Versions
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-until-312x">
<span class="md-ellipsis">
Versions until 3.12.x
</span>
</a>
Versions until 3.12.x
</a>
<nav aria-label="Versions until 3.12.x" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#java">
<span class="md-ellipsis">
Java
</span>
</a>
Java
</a>
</li>
</ul>
</nav>
......@@ -233,248 +217,182 @@
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -501,36 +419,28 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-from-3130">
<span class="md-ellipsis">
Versions from 3.13.0
</span>
</a>
Versions from 3.13.0
</a>
<nav aria-label="Versions from 3.13.0" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#release-versions">
<span class="md-ellipsis">
Release Versions
</span>
</a>
Release Versions
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#versions-until-312x">
<span class="md-ellipsis">
Versions until 3.12.x
</span>
</a>
Versions until 3.12.x
</a>
<nav aria-label="Versions until 3.12.x" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#java">
<span class="md-ellipsis">
Java
</span>
</a>
Java
</a>
</li>
</ul>
</nav>
......@@ -603,7 +513,6 @@ Java runtimes of the Liberica distribution are included in different versions. <
</div>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -624,8 +533,8 @@ Java runtimes of the Liberica distribution are included in different versions. <
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,17 +9,18 @@
<link href="../basic/" rel="prev"/>
<link href="../schemaRequirements/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Overview - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -30,13 +31,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -55,39 +56,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,278 +153,206 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<a class="md-nav__link md-nav__link--active" href="./">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -461,7 +389,6 @@ A distinction is made between:</p>
</ul>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -482,8 +409,8 @@ A distinction is made between:</p>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -9,17 +9,18 @@
<link href="../requirements/" rel="prev"/>
<link href="../geometric/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Schema Requirements - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -30,13 +31,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -55,39 +56,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,109 +153,83 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Schema Requirements
</span>
<span class="md-nav__icon md-icon"></span>
Schema Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -264,25 +238,19 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#r_sc_schema_validation">
<span class="md-ellipsis">
R_SC_SCHEMA_VALIDATION
</span>
</a>
R_SC_SCHEMA_VALIDATION
</a>
<nav aria-label="R_SC_SCHEMA_VALIDATION" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#anforderung">
<span class="md-ellipsis">
Anforderung
</span>
</a>
Anforderung
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#prufung">
<span class="md-ellipsis">
Prüfung
</span>
</a>
Prüfung
</a>
</li>
</ul>
</nav>
......@@ -292,178 +260,130 @@
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -490,25 +410,19 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#r_sc_schema_validation">
<span class="md-ellipsis">
R_SC_SCHEMA_VALIDATION
</span>
</a>
R_SC_SCHEMA_VALIDATION
</a>
<nav aria-label="R_SC_SCHEMA_VALIDATION" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#anforderung">
<span class="md-ellipsis">
Anforderung
</span>
</a>
Anforderung
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#prufung">
<span class="md-ellipsis">
Prüfung
</span>
</a>
Prüfung
</a>
</li>
</ul>
</nav>
......@@ -570,7 +484,6 @@
</table>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -591,8 +504,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ 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 freely available and open source</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair is freely available and open source. Mail to: </p>"},{"location":"#projekts","title":"Projekts","text":"<p>CityDoctor was developed in several projects. At the moment CityDoctor is developed in the project UDigitDoctor.</p> <p>Past project:</p> <ul> <li>CityDoctor2</li> </ul>"},{"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":"qual_ade/","title":"Quality-ADE","text":"<p>CityDoctor uses the Quality-ADE</p>"},{"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":"udt_about/","title":"UDigiT-Doctor","text":"<p>Expansion of CityDoctor2 to enable integration with urban digital twins</p> <p></p> <p>The UDigiT-Doctor project continues the development of CityDoctor2, with the goal of enabling the validation and repair of urban digital twins with CityDoctor.</p>"},{"location":"udt_about/#objectives","title":"Objectives","text":"<p>In summary, the following scientific and technical objectives can be derived to allow for a transfer of the validation functionality of CityDoctor to urban digital twins:</p> <ul> <li>Design of an internal data model and methods for the creation of an integrated complete model. </li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data. </li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ul>"},{"location":"udt_about/#license","title":"License","text":"<p>UDigiT-Doctor, being an update of CityDoctor2, will continue to be released under the LGPL as FOSS.</p>"},{"location":"udt_about/#releases","title":"Releases","text":"<p>Releases of UDigiT-Doctor will be made available via the CityDoctor2 GitLab-repository.</p>"},{"location":"udt_about/#project-information","title":"Project Information","text":"<p>Project Duration: April 01, 2024 - July 01, 2027</p> <p>Project Website: UDigiT-Doctor: Hochschule f\u00fcr Technik Stuttgart UDigiT-Doctor: Berliner Hochschule f\u00fcr Technik</p> <p>Project Lead: Prof. Dr.-Ing. Volker Coors</p> <p>Collaboration Partner: Prof. Dr. Margitta Pries</p>"},{"location":"udt_about/#partners","title":"Partners","text":"<p>Cooperation Partners: Robert Bosch GmbH Geoplex GIS GmbH M.O.S.S. Computer Grafik Systeme GmbH LandPlan OS GmbH Point Cloud Technology GmbH virtualcitysystems GmbH</p> <p>Associative Partners: Open Geospatial Consortium Stadt Stuttgart Stadt Leverkusen </p> <p>Funding: Bundesamt f\u00fcr Bildung und Forschung</p> <p>Promoter: VDI Technologiezentrum </p>"},{"location":"udt_req_data_model/","title":"Requirements of the internal data model","text":""},{"location":"udt_req_data_model/#urban-digital-twin-data","title":"Urban digital twin data","text":"<p>In order to be able to validate and repair the models of urban digital twins, CityDoctor needs the capability to access their data.</p>"},{"location":"udt_req_data_model/#reference-model","title":"Reference model","text":"<p>While CityDoctor is capable of repairing geometrical errors, the repaired model can contain discrepancies with the real object. This is expected, since CityDoctor purely operates via model data. To alleviate this, functionalities for the usage of a reference model are desired. The reference model would allow CityDoctor to determine the quality of a repair step, enabling the implementation of more sophisticated healing-routines.</p>"},{"location":"udt_req_data_model/#data-format-support","title":"Data format support","text":"<p>The aforementioned requirements revolve around data that is not compatible with, or available as, CityGML. Therefore, to </p>"},{"location":"udt_req_overview/","title":"Requirements of UDigiT-Doctor","text":"<ol> <li>Design of an internal data model and methods for the creation of an integrated complete model.</li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data.</li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ol> Specific requirements of Applicable to requirement nr. Data model 1., 2., 3. Topological consistency 2., 3. Semantical validation 2., 4."},{"location":"udt_terms/","title":"Validation of urban digital twins","text":""},{"location":"udt_terms/#terms-and-definitions","title":"Terms and definitions","text":"<p>See also: Terms and definitions of CityDoctor2</p> <p>Urban digital twin</p> <p>An urban digital twin is a virtual, representative model of a real building. Digital twins are useful for various tasks, e.g. the simulation of certain processes. They also serve as a central access point to information and data of the building, including access to installed sensors and building management systems.</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>"},{"location":"zipFiles/","title":"Zip Archives","text":"<p>CityDoctor is capable of parsing zip archives to enable the validation of contained CityGML files.</p>"},{"location":"zipFiles/#loading-a-zip-archive","title":"Loading a zip archive","text":"<p>To load a zip archive, select a zip file using file loading dialoge. CityDoctor will analyze the zip file for potential CityGml files.</p>"},{"location":"zipFiles/#zip-entry-manager","title":"Zip entry manager","text":"<p>CityDoctor will show the zip entry manager after successfully loading a zip archive. The zip entry manager has the following buttons: </p> <ol> <li>Show model: Shows the city model of the selected entry in the main window of CityDoctor, giving access to the normal CityDoctor functionality. Only available for decompressed entries.</li> <li>Decompress entry: Decompresses the selected entry.</li> <li>Error statistics: Shows the error statistics of the selected entry. Only available for validated entries.</li> <li>Decompress all entries: Decompresses all entries of the archive.</li> <li>Check all: Opens the checking dialoge, allowing batch validation of all entries. See validation for more details.</li> <li>Save reports: Allows saving of validation reports. Available after at least one entry has been validated.</li> </ol> <p></p> <p>Entries display their current state via color coding. Possible states are:</p> <ul> <li>compressed(black): A compressed entry is still 'zipped'.</li> <li>decompressed(blue): A decompressed entry has been successfully 'unzipped' into the memory.</li> <li>empty model(gray): A decompressed entry containing no city model or a model without any city objects.</li> <li>erroneous entry(dark red): An entry which could not be successfully decompressed, due to either having an invalid CityGML file, being too big to be held in memory or encountering a problem while reading the file. The respective reason will be shown in the entry's metadata.</li> <li>validated with / without errors (bright red / green respectively)</li> </ul> <p>Note</p> <p>The original zip file or its entries will not be changed. Decompressed data is a copy of the source entry.</p>"},{"location":"zipFiles/#validation","title":"Validation","text":""},{"location":"zipFiles/#validation-of-individual-entries","title":"Validation of individual entries","text":"<p>Decompressed entries can be validated individually through the CityDoctor main window. CityDoctor will retain the validation results for each entry in memory until the application is closed or a new zip archive is loaded.</p>"},{"location":"zipFiles/#batch-validation","title":"Batch validation","text":"<p>The \"Check all\" button in the zip entry manager opens the option window for the batch validation. This process does not require prior decompression of the entries and offers two modes of operation:</p>"},{"location":"zipFiles/#default-mode","title":"Default mode","text":"<p>The default batch validation mode validates each entry within the archive. Compressed entries will be automatically decompressed during this process. Like with the individual validation, the results are held in memory and can be inspected in CityDoctor.</p>"},{"location":"zipFiles/#low-memory-mode-stream-mode","title":"Low memory mode (stream mode)","text":"<p>Low memory mode utilizes datastreams to read and check the city model features individually. This significantly decreases memory overhead and usage by eliminating the need for entry decompression. However, this also means that the state of entries remains unchanged. As a result, the results of the validation cannot be inspected within CityDoctor and will be recorded in report files at the designated output location.</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 freely available and open source</p>"},{"location":"#citydoctorhealer","title":"CityDoctorHealer","text":"<p>The part responsible for the repair is freely available and open source. Mail to: </p>"},{"location":"#projekts","title":"Projekts","text":"<p>CityDoctor was developed in several projects. At the moment CityDoctor is developed in the project UDigitDoctor.</p> <p>Past project:</p> <ul> <li>CityDoctor2</li> </ul>"},{"location":"R_GE_MS/","title":"R_GE_MS","text":""},{"location":"R_GE_MS/#requirement","title":"Requirement","text":"ID R_GE_MS Description A MultiSurface is a collection of polygons without further restrictions. A MultiSurface is only valid if all polygons are valid. The requirements R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED, R_GE_R_SELF_INTERSECTION, R_GE_R_TOO_FEW_POINTS, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_INTERIOR_DISCONNECTED, R_GE_P_INTERSECTING_RINGS, R_GE_P_NON_PLANAR, R_GE_P_ORIENTATION_RINGS_SAME must be satisfied Error code --"},{"location":"R_GE_MS/#check","title":"Check","text":"<p>No further checks necessary. The individual requirements have their own checks to verify them.</p>"},{"location":"R_GE_MS/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result <p>Existing test cases can be used. </p>"},{"location":"R_GE_P_HOLE_OUTSIDE/","title":"R_GE_P_HOLE_OUTSIDE","text":""},{"location":"R_GE_P_HOLE_OUTSIDE/#requirement","title":"Requirement","text":"ID R_GE_P_HOLE_OUTSIDE Description An interior ring must not be completely outside the exterior ring. Error code GE_P_HOLE_OUTSIDE <p>Example: </p>"},{"location":"R_GE_P_HOLE_OUTSIDE/#check","title":"Check","text":"ID C_GE_P_HOLE_OUTSIDE Requirement ID R_GE_P_HOLE_OUTSIDE Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_NON_PLANAR, R_GE_P_ORIENTATION_RINGS_SAME Description Error code GE_P_HOLE_OUTSIDE"},{"location":"R_GE_P_HOLE_OUTSIDE/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0004-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK for this requirement, GE_S_NOT_CLOSED error in later checks GE-gml:PO-0004-T0002 SimpleSolid_SrefBS-GE-gml-PO-0004-T0001.gml GE_P_HOLE_OUTSIDE in Polygon: _Simple_BD.1_PG.2"},{"location":"R_GE_P_INNER_RINGS_NESTED/","title":"R_GE_P_INNER_RINGS_NESTED","text":""},{"location":"R_GE_P_INNER_RINGS_NESTED/#requirement","title":"Requirement","text":"ID R_GE_P_INNER_RINGS_NESTED Description Interior rings must not be inside another interior ring. Error code GE_P_INNER_RINGS_NESTED <p>Example: </p>"},{"location":"R_GE_P_INNER_RINGS_NESTED/#check","title":"Check","text":"ID C_GE_P_INNER_RINGS_NESTED Requirement ID R_GE_P_INNER_RINGS_NESTED Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_NON_PLANAR, R_GE_P_ORIENTATION_RINGS_SAME Description Error code GE_P_INNER_RINGS_NESTED"},{"location":"R_GE_P_INNER_RINGS_NESTED/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0005-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK for this requirement, GE_S_NOT_CLOSED error in later checks GE-gml:PO-0005-T0002 SimpleSolid_SrefBS-GE-gml-PO-0005-T0001.gml GE_P_INNER_RINGS_NESTED in Polygon: _Simple_BD.1_PG.2"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/","title":"R_GE_P_INTERIOR_DISCONNECTED","text":""},{"location":"R_GE_P_INTERIOR_DISCONNECTED/#requirement","title":"Requirement","text":"ID R_GE_P_INTERIOR_DISCONNECTED Description The interior of a polygon must be connected. Parameter minVertexDistance A point touches an edge if the distance is smaller than minVertexDistance, see Vertex Requirement Error code GE_P_INTERIOR_DISCONNECTED <p>Examples: </p> <p></p>"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/#check","title":"Check","text":"ID C_GE_P_INTERIOR_DISCONNECTED Requirement ID R_GE_P_INTERIOR_DISCONNECTED Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_NON_PLANAR, GE_P_ORIENTATION_RINGS_SAME Description Error code GE_P_INTERIOR_DISCONNECTED"},{"location":"R_GE_P_INTERIOR_DISCONNECTED/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0003-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK for this requirement, GE_S_NOT_CLOSED error in later checks GE-gml:PO-0003-T0002 SimpleSolid_SrefBS-GE-gml-PO-0003-T0001.gml GE_P_INTERIOR_DISCONNECTED in Polygon _Simple_BD.1_PG.2 GE-gml:PO-0003-T0003 SimpleSolid_SrefBS-GE-gml-PO-0003-T0002.gml GE_P_INTERIOR_DISCONNECTED in Polygon _Simple_BD.1_PG.2"},{"location":"R_GE_P_INTERSECTING_RINGS/","title":"R_GE_P_INTERSECTING_RINGS","text":""},{"location":"R_GE_P_INTERSECTING_RINGS/#requirement","title":"Requirement","text":"ID R_GE_P_INTERSECTING_RINGS Description The exterior and interior rings must not intersect Parameter minVertexDistance Two rings do not intersect if only a single point of one ring touches the other. A point touches an edge only if the distance is less than minVertexDistance. Points can be considered the same despite (small) distances, see Vertex Requirement Error code GE_P_INTERSECTING_RINGS <p>Examples:</p> <p>Exterior ring intersects interior ring: </p> <p>Two interior rings intersect: </p>"},{"location":"R_GE_P_INTERSECTING_RINGS/#check","title":"Check","text":"ID C_GE_P_INTERSECTING_RINGS Requirement ID R_GE_P_INTERSECTING_RINGS Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_NON_PLANAR, R_GE_P_HOLE_OUTSIDE, R_GE_P_INNER_RINGS_NESTED, R_GE_P_ORIENTATION_RINGS_SAME Description If a point of an interior ring is outside the exterior ring or inside another interior ring, this is an intersection. Error code GE_P_INTERSECTING_RINGS"},{"location":"R_GE_P_INTERSECTING_RINGS/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0001-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0001.gml GE_P_INTERSECTING_RINGS in Polygon _Simple_BD.1_PG.2 GE-gml:PO-0001-T0002 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK for this requirement, GE_S_NOT_CLOSED error in later checks GE-gml:PO-0001-T0003 SimpleSolid_SrefBS-GE-gml-PO-0001-T0003.gml GE_P_INTERSECTING_RINGS in Polygon _Simple_BD.1_PG.2"},{"location":"R_GE_P_NON_PLANAR/","title":"R_GE_P_NON_PLANAR","text":""},{"location":"R_GE_P_NON_PLANAR/#requirement","title":"Requirement","text":"ID R_GE_P_NON_PLANAR Description Every polygon must be planar. Planarity is achieved when no point is farther than distanceTolerance from the regression plane of all points, and the normals of every triangle of the tessellated polygon do not have an angular deviation greater than angleTolerance. Parameter 1: type The type of the planarity check can be selected. Must be one of distance, angle, both.<ul><li>If the parameter is distance: Only the distance check is performed.</li><li> If the parameter is angle: Only the normal deviation check is performed.</li><li>If the parameter is both: Both checks are performed.</li></ul> Parameter 2: distanceTolerance Tolerance of the distance of a point from the regression plane Parameter 3: angleTolerance Tolerance of the angle of the triangle normals Error codes GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION <p>Normal deviation: </p>"},{"location":"R_GE_P_NON_PLANAR/#check","title":"Check","text":"ID C_GE_P_NON_PLANAR Requirement ID R_GE_P_NON_PLANAR Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL Description To determine the normal deviation, all polygons are tessellated in order to compute the triangle normals, whose angles are used for the comparison. The tessellation of the polygons is not deterministic, and therefore the result of the normal deviation check is not deterministic. For the distance check, a regression plane is created from all polygon points in order to compute the distance of the points to this plane. Error code GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE, GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION"},{"location":"R_GE_P_NON_PLANAR/#implementation","title":"Implementation","text":"<p>In CityDoctor2 only the distance check is active by default, since the normal check does not produce deterministic results.</p>"},{"location":"R_GE_P_NON_PLANAR/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0002-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK for this requirement, GE_S_NOT_CLOSED error in later checks GE-gml:PO-0002-T0002 SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml GE_P_NON_PLANAR_POLYGON_DISTANCE_PLANE in _Simple_BD.1_PG.2 with distanceTolerance = 0.01 GE-gml:PO-0002-T0003 SimpleSolid_SrefBS-GE-gml-PO-0002-T0001.gml OK for this requirement with distanceTolerance = 0.5, GE_P_ORIENTATION_RINGS_SAME in later checks GE-gml:PO-0002-T0004 SimpleSolid_SrefBS-GE-gml-PO-0002-T0002.gml GE_P_NON_PLANAR_POLYGON_NORMALS_DEVIATION in _Simple_BD.1_PG.1 with parameter type = angle"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/","title":"R_GE_P_ORIENTATION_RINGS_SAME","text":""},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/#requirement","title":"Requirement","text":"ID R_GE_P_ORIENTATION_RINGS_SAME Description Exterior and interior rings must not have the same orientation. Error code GE_P_ORIENTATION_RINGS_SAME <p>Example : </p>"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/#check","title":"Check","text":"ID C_GE_P_ORIENTATION_RINGS_SAME Requirement ID R_GE_P_ORIENTATION_RINGS_SAME Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_NON_PLANAR Description Error code GE_P_ORIENTATION_RINGS_SAME"},{"location":"R_GE_P_ORIENTATION_RINGS_SAME/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:PO-0006-T0001 SimpleSolid_SrefBS-GE-gml-PO-0001-T0002.gml OK GE-gml:PO-0006-T0002 SimpleSolid_SrefBS-GE-gml-PO-0006-T0001.gml GE_P_ORIENTATION_RINGS_SAME in Polygon: _Simple_BD.1_PG.2"},{"location":"R_GE_R_COLLAPSED_TO_LINE/","title":"R_GE_R_COLLAPSED_TO_LINE","text":""},{"location":"R_GE_R_COLLAPSED_TO_LINE/#requirement","title":"Requirement","text":"ID R_GE_R_COLLAPSED_TO_LINE Description A special case of self-intersection (GE_R_SELF_INTERSECTION): The ring is a line. If the ring represents a point, then the requirements GE_R_TOO_FEW_POINTS / GE_R_CONSECUTIVE_POINTS_SAME check whether this is an error. Error code GE_R_SELF_INTERSECTION, GE_R_COLLAPSED_TO_LINE, GE_R_TOO_FEW_POINTS, GE_R_CONSECUTIVE_POINTS_SAME"},{"location":"R_GE_R_COLLAPSED_TO_LINE/#check","title":"Check","text":"ID C_GE_R_COLLAPSED_TO_LINE Requirement ID R_GE_R_COLLAPSED_TO_LINE Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED Description Ring as a point cannot happen, due to the preconditions. Error code GE_R_COLLAPSED_TO_LINE <p>The requirement is fulfilled by R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED and R_GE_R_SELF_INTERSECTION and therefore requires no separate implementation.</p>"},{"location":"R_GE_R_COLLAPSED_TO_LINE/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:LR-0005-T0001 GE-gml:LR-0005-T0001.gml GE_R_SELF_INTERSECTION"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/","title":"R_GE_R_CONSECUTIVE_POINTS_SAME","text":""},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/#requirement","title":"Requirement","text":"ID R_GE_R_CONSECUTIVE_POINTS_SAME Description Points within a ring should not repeat (except the first and the last one in the case of GML, see R_GE_R_NOT_CLOSED). This error often occurs when two points are at the same location. Parameter minVertexDistance Points can be considered the same despite (small) distances, see Vertex Requirement Error code GE_R_CONSECUTIVE_POINTS_SAME <p>For example this ring is erroneous:</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre> <p>This ring is also erroneous with the parameter minVertexDistance = 0.1</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;0.05 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre> <p>The next example shows an erroneous ring with a point that occurs twice but where the repetition is not consecutive. This results in a self-intersection, which is not covered by this requirement.</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre>"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/#check","title":"Check","text":"ID C_GE_R_CONSECUTIVE_POINTS_SAME Requirement ID R_GE_R_CONSECUTIVE_POINTS_SAME Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_NOT_CLOSED, R_GE_R_TOO_FEW_POINTS Description Checks whether a point repeats Error code GE_R_CONSECUTIVE_POINTS_SAME ID C_GE_R_DUPLICATE_POINT Requirement ID R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (partially) Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_NOT_CLOSED, R_GE_R_TOO_FEW_POINTS Description Detects consecutive as well as other repeating points. Error code GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION"},{"location":"R_GE_R_CONSECUTIVE_POINTS_SAME/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:LR-0002-T0001 SimpleSolid_SrefBS.gml OK GE-gml:LR-0002-T0002 SimpleSolid_SrefBS-GE-gml-LR-0002-T0001.gml GE_R_CONSECUTIVE_POINTS_SAME in ring:_Simple_BD.1_PG.6_LR.1 GE-gml:LR-0002-T0003 SimpleSolid_SrefBS-GE-gml-LR-0002-T0002.gml OK for this requirement, but has error GE_R_SELF_INTERSECTION detected by C_GE_R_DUPLICATE_POINT GE-gml:LR-0002-T0004 SimpleSolid_SrefBS-GE-gml-LR-0002-T0003.gml OK for this requirement, but has error GE_R_SELF_INTERSECTION detected by C_GE_R_DUPLICATE_POINT GE-gml:LR-0002-T0005 SimpleSolid_SrefBS-GE-gml-LR-0002-T0004.gml GE_R_CONSECUTIVE_POINTS_SAME in ring:_Simple_BD.1_PG.6_LR.1 with parameter minVertexDistance = 0.1, GE_S_NOT_CLOSED error when minVertexDistance = 0.01 GE-gml:LR-0002-T0006 SimpleSolid_SrefBS-GE-gml-LR-0002-T0005.gml Not executed because GE_R_TOO_FEW_POINTS in ring:_Simple_BD.1_PG.6_LR.1"},{"location":"R_GE_R_NOT_CLOSED/","title":"R_GE_R_NOT_CLOSED","text":""},{"location":"R_GE_R_NOT_CLOSED/#requirement","title":"Requirement","text":"ID R_GE_R_NOT_CLOSED Description In GML the first and last point must be the same. Parameter minVertexDistance Points can be considered the same despite (small) distances, see Vertex Requirement Error code GE_R_NOT_CLOSED <p>For example this ring is erroneous:</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre> <p>OK with parameter minVertexDistance = 0.1:</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;1.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;0.0 0.0 0.05&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre>"},{"location":"R_GE_R_NOT_CLOSED/#check","title":"Check","text":"ID C_GE_R_NOT_CLOSED Requirement ID R_GE_R_NOT_CLOSED Preconditions R_SC_SCHEMA_VALIDATION Description The first and last point within a ring should be the same. Error code GE_R_NOT_CLOSED"},{"location":"R_GE_R_NOT_CLOSED/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:LR-0003-T0001 SimpleSolid_SrefBS.gml OK GE-gml:LR-0003-T0002 SimpleSolid_SrefBS-GE-gml-LR-0003-T0001.gml GE_R_NOT_CLOSED GE-gml:LR-0003-T0003 SimpleSolid_SrefBS-GE-gml-LR-0003-T0002.gml OK with parameter minVertexDistance = 0.1"},{"location":"R_GE_R_SELF_INTERSECTION/","title":"R_GE_R_SELF_INTERSECTION","text":""},{"location":"R_GE_R_SELF_INTERSECTION/#requirement","title":"Requirement","text":"ID R_GE_R_SELF_INTERSECTION Description A ring should be simple, i.e. it should not self-intersect. The self-intersection may be at a concrete point, or not. Parameter minVertexDistance Points can be considered the same despite (small) distances, see Vertex Requirement. This parameter is also used to determine when a point touches an edge. Error code GE_R_SELF_INTERSECTION <p>Examples of self-intersections:</p> <p>Bowtie: </p> <p>Point touches edge with parameter minVertexDistance: </p> <p>Duplicate points: </p> <p>Duplicate edge (same as duplicate points): </p>"},{"location":"R_GE_R_SELF_INTERSECTION/#check","title":"Check","text":"ID C_GE_R_SELF_INTERSECTION Requirement ID R_GE_R_SELF_INTERSECTION Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_TOO_FEW_POINTS, R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_NOT_CLOSED Description Detects duplicate points and self-intersecting edges. Error codes GE_R_SELF_INTERSECTION ID C_GE_R_DUPLICATE_POINT Requirement ID R_GE_R_CONSECUTIVE_POINTS_SAME, R_GE_R_SELF_INTERSECTION (partially) Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_TOO_FEW_POINTS, R_GE_R_NOT_CLOSED Description Detects repeating and non-repeating duplicate points. The latter is a self-intersection. Error codes GE_R_CONSECUTIVE_POINTS_SAME, GE_R_SELF_INTERSECTION"},{"location":"R_GE_R_SELF_INTERSECTION/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:LR-0004-T0001 SimpleSolid_SrefBS.gml OK GE-gml:LR-0004-T0002 SimpleSolid_SrefBS-GE-gml-LR-0002-T0002.gml Duplicate points (example, not representative of the error in the model):GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1 GE-gml:LR-0004-T0003 SimpleSolid_SrefBS-GE-gml-LR-0002-T0003.gml Duplicate points (results in a duplicate edge)GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1 GE-gml:LR-0004-T0004 SimpleSolid_SrefBS-GE-gml-LR-0004-T0004.gml Bowtie (example, not representative of the error in the model): GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.6_LR.1 GE-gml:LR-0004-T0005 SimpleSolid_SrefBS-GE-gml-LR-0004-T0005.gml Touching point with parameter minVertexDistance = 0.1: GE_R_SELF_INTERSECTION in ring: _Simple_BD.1_PG.2_LR.1 GE-gml:LR-0004-T0006 SimpleSolid_SrefBS-GE-gml-LR-0004-T0005.gml OK for this requirement with parameter minVertexDistance = 0.01, GE_S_NOT_CLOSED in later checks"},{"location":"R_GE_R_TOO_FEW_POINTS/","title":"R_GE_R_TOO_FEW_POINTS","text":""},{"location":"R_GE_R_TOO_FEW_POINTS/#requirement","title":"Requirement","text":"ID R_GE_R_TOO_FEW_POINTS Description A ring must have at least 3 points. For GML rings this requirement ignores the fact that the first and the last point are the same (see R_GE_R_NOT_CLOSED). According to this requirement a GML ring is valid if it contains at least 3 distinct points, but it is then not closed (the requirement R_GE_R_NOT_CLOSED is not fulfilled). Parameter minVertexDistance Points can be considered the same despite (small) distances, see Vertex Requirement Error code GE_R_TOO_FEW_POINTS <p>For example, this ring is erroneous:</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre> <p>Valid rings:</p> <p>(This ring is not closed, but has enough distinct points to satisfy this requirement.)</p> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre> <pre><code>&lt;gml:LinearRing&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;1.0 0.0 0.0&lt;/gml:pos&gt; \n&lt;gml:pos&gt;0.0 1.0 0.0&lt;/gml:pos&gt;\n&lt;gml:pos&gt;0.0 0.0 0.0&lt;/gml:pos&gt;\n&lt;/gml:LinearRing&gt;\n</code></pre>"},{"location":"R_GE_R_TOO_FEW_POINTS/#check","title":"Check","text":"ID C_GE_R_TOO_FEW_POINTS Requirement ID R_GE_R_TOO_FEW_POINTS Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_NOT_CLOSED Description Ring must contain at least 3 distinct points Error code GE_R_TOO_FEW_POINTS"},{"location":"R_GE_R_TOO_FEW_POINTS/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:LR-0001-T0001 SimpleSolid_SrefBS.gml OK GE-gml:LR-0001-T0002 SimpleSolid_SrefBS-GE-gml-LR-0001-T0001.gml GE_R_TOO_FEW_POINTSin ring: _Simple_BD.1_PG.6_LR.1 GE-gml:LR-0001-T0003 SimpleSolid_SrefBS-GE-gml-LR-0001-T0002.gml Check not executed because GE_R_NOT_CLOSEDring _Simple_BD.1_PG.6_LR.1 is not closed, but has 3 points."},{"location":"R_GE_SO/","title":"R_GE_SO","text":""},{"location":"R_GE_SO/#requirement","title":"Requirement","text":"ID R_GE_SO Description A solid is a collection of polygons with restrictions. The geometry must be 'watertight'. See the definition of solids in Appendix A of the CityGML QIE. A solid is valid if the requirements R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS, GE_S_NOT_CLOSED, GE_S_NON_MANIFOLD_VERTEX, GE_S_NON_MANIFOLD_EDGE, GE_S_MULTIPLE_CONNECTED_COMPONENTS, GE_S_POLYGON_WRONG_ORIENTATION, R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION, R_GE_S_SELF_INTERSECTION are satisfied. Error code --"},{"location":"R_GE_SO/#check","title":"Check","text":"<p>no further check necessary</p>"},{"location":"R_GE_SO/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result <p>The existing test cases of the individual checks can be used.</p>"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/","title":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION","text":""},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/#requirement","title":"Requirement","text":"ID R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION Description All polygons have the wrong orientation (defined in GE_S_POLYGON_WRONG_ORIENTATION), so that all polygons point inward. Error code GE_S_ALL_POLYGONS_WRONG_ORIENTATION"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/#check","title":"Check","text":"ID C_GE_S_ALL_POLYGONS_WRONG_ORIENTATION Requirement ID R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS, GE_S_NOT_CLOSED, GE_S_NON_MANIFOLD_VERTEX, GE_S_NON_MANIFOLD_EDGE, GE_S_MULTIPLE_CONNECTED_COMPONENTS, GE_S_SELF_INTERSECTION, GE_S_POLYGON_WRONG_ORIENTATION Description Error code GE_S_ALL_POLYGONS_WRONG_ORIENTATION"},{"location":"R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0008-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0008-T0002 SimpleSolid_SrefBS-GE-gml-SO-0008-T0001.gml GE_S_ALL_POLYGONS_WRONG_ORIENTATION"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/","title":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS","text":""},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/#requirement","title":"Requirement","text":"ID R_GE_S_MULTIPLE_CONNECTED_COMPONENTS Description 1+ polygons are not connected to the same shell. Error code GE_S_MULTIPLE_CONNECTED_COMPONENTS"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/#check","title":"Check","text":"ID C_GE_S_MULTIPLE_CONNECTED_COMPONENTS Requirement ID R_GE_S_MULTIPLE_CONNECTED_COMPONENTS Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS Description Build a dual graph (polygons become nodes, and polygons that share an edge are connected in the graph). If the graph is not connected, there are multiple connected components. Error code GE_S_MULTIPLE_CONNECTED_COMPONENTS"},{"location":"R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0005-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0005-T0002 SimpleSolid_SrefBS-GE-gml-SO-0005-T0001.gml GE_S_MULTIPLE_CONNECTED_COMPONENTS"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/","title":"R_GE_S_NON_MANIFOLD_EDGE","text":""},{"location":"R_GE_S_NON_MANIFOLD_EDGE/#requirement","title":"Requirement","text":"ID R_GE_S_NON_MANIFOLD_EDGE Description Every edge should bound exactly 2 polygons. Error code GE_S_NON_MANIFOLD_EDGE Comment This requirement is similar to GE_S_NOT_CLOSED: If an edge bounds more than 2 polygons, then it is a GE_S_NON_MANIFOLD_EDGE error. If an edge bounds only one polygon, it is a GE_S_NOT_CLOSED error (a hole in the solid)"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/#check","title":"Check","text":"ID C_GE_S_NON_MANIFOLD_EDGE Requirement ID R_GE_S_NON_MANIFOLD_EDGE Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS Description Error code GE_S_NON_MANIFOLD_EDGE"},{"location":"R_GE_S_NON_MANIFOLD_EDGE/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0004-T0000 SimpleSolid_SrefBS.gml OK GE-gml:SO-0004-T0001 SimpleSolid_SrefBS-GE-gml-SO-0004-T0001.gml GE_S_NON_MANIFOLD_EDGE"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/","title":"R_GE_S_NON_MANIFOLD_VERTEX","text":""},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/#requirement","title":"Requirement","text":"ID R_GE_S_NON_MANIFOLD_VERTEX Description Every polygon incident to a point of a solid must be connected to the other incident polygons via edges. The point and its incident polygons must form an 'umbrella'. Error code GE_S_NON_MANIFOLD_VERTEX"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/#check","title":"Check","text":"ID C_GE_S_NON_MANIFOLD_VERTEX Requirement ID R_GE_S_NON_MANIFOLD_VERTEX Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS Description Error code GE_S_NON_MANIFOLD_VERTEX"},{"location":"R_GE_S_NON_MANIFOLD_VERTEX/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0003-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0003-T0002 SimpleSolid_SrefBS-GE-gml-SO-0003-T0001.gml GE_S_NON_MANIFOLD_VERTEX"},{"location":"R_GE_S_NOT_CLOSED/","title":"R_GE_S_NOT_CLOSED","text":""},{"location":"R_GE_S_NOT_CLOSED/#requirement","title":"Requirement","text":"ID R_GE_S_NOT_CLOSED Description The shell must not have any holes; it must be watertight. Error code GE_S_NOT_CLOSED"},{"location":"R_GE_S_NOT_CLOSED/#check","title":"Check","text":"ID C_GE_S_NOT_CLOSED Requirement ID R_GE_S_NOT_CLOSED Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS Description Error code GE_S_NOT_CLOSED <p>The check collects all edges and matches them to their respective opposite edges. If an edge has no opposite edge, a hole in the shell is detected here and an error is reported.</p>"},{"location":"R_GE_S_NOT_CLOSED/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0002-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0002-T0002 SimpleSolid_SrefBS-GE-gml-SO-0002-T0001.gml GE_S_NOT_CLOSED"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/","title":"R_GE_S_POLYGON_WRONG_ORIENTATION","text":""},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/#requirement","title":"Requirement","text":"ID R_GE_S_POLYGON_WRONG_ORIENTATION Description A polygon must be oriented so that the normal of the exterior ring points outward. The points are arranged counter-clockwise. Error code GE_S_POLYGON_WRONG_ORIENTATION"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/#check","title":"Check","text":"ID C_GE_S_POLYGON_WRONG_ORIENTATION Requirement ID R_GE_S_POLYGON_WRONG_ORIENTATION Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS, GE_S_NOT_CLOSED, GE_S_NON_MANIFOLD_EDGE Description Error code GE_S_POLYGON_WRONG_ORIENTATION"},{"location":"R_GE_S_POLYGON_WRONG_ORIENTATION/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0007-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0007-T0002 SimpleSolid_SrefBS-GE-gml-SO-0007-T0001.gml GE_S_POLYGON_WRONG_ORIENTATION"},{"location":"R_GE_S_SELF_INTERSECTION/","title":"R_GE_S_SELF_INTERSECTION","text":""},{"location":"R_GE_S_SELF_INTERSECTION/#requirement","title":"Requirement","text":"ID R_GE_S_SELF_INTERSECTION Description The solid must not self-intersect Error code GE_S_SELF_INTERSECTION <p>Example (left = OK, right = invalid): </p>"},{"location":"R_GE_S_SELF_INTERSECTION/#check","title":"Check","text":"ID C_GE_S_SELF_INTERSECTION Requirement ID R_GE_S_SELF_INTERSECTION Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL, GE_S_TOO_FEW_POLYGONS, GE_S_NOT_CLOSED, GE_S_NON_MANIFOLD_VERTEX, GE_S_NON_MANIFOLD_EDGE, GE_S_MULTIPLE_CONNECTED_COMPONENTS, GE_S_POLYGON_WRONG_ORIENTATION Description Error code GE_S_SELF_INTERSECTION"},{"location":"R_GE_S_SELF_INTERSECTION/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0006-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0006-T0002 SimpleSolid_SrefBS-GE-gml-SO-0006-T0001.gml GE_S_SELF_INTERSECTION"},{"location":"R_GE_S_TOO_FEW_POLYGONS/","title":"R_GE_S_TOO_FEW_POLYGONS","text":""},{"location":"R_GE_S_TOO_FEW_POLYGONS/#requirement","title":"Requirement","text":"ID R_GE_S_TOO_FEW_POLYGONS Description Solids must have at least 4 polygons. Error code GE_S_TOO_FEW_POLYGONS"},{"location":"R_GE_S_TOO_FEW_POLYGONS/#check","title":"Check","text":"ID C_GE_S_TOO_FEW_POLYGONS Requirement ID R_GE_S_TOO_FEW_POLYGONS Preconditions R_SC_SCHEMA_VALIDATION, R_GE_R_ALL, R_GE_P_ALL Description Error code GE_S_TOO_FEW_POLYGONS"},{"location":"R_GE_S_TOO_FEW_POLYGONS/#test-cases","title":"Test cases","text":"Test case ID CityGML model Expected result GE-gml:SO-0001-T0001 SimpleSolid_SrefBS.gml OK GE-gml:SO-0001-T0002 SimpleSolid_SrefBS-GE-gml-SO-0001-T0001.gml GE_S_TOO_FEW_POLYGONS"},{"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_CONSECUTIVE_POINTS_SAME C_GE_R_CONSECUTIVE_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":"qual_ade/","title":"Quality-ADE","text":"<p>CityDoctor uses the Quality-ADE</p>"},{"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":"udt_about/","title":"UDigiT-Doctor","text":"<p>Expansion of CityDoctor2 to enable integration with urban digital twins</p> <p></p> <p>The UDigiT-Doctor project continues the development of CityDoctor2, with the goal of enabling the validation and repair of urban digital twins with CityDoctor.</p>"},{"location":"udt_about/#objectives","title":"Objectives","text":"<p>In summary, the following scientific and technical objectives can be derived to allow for a transfer of the validation functionality of CityDoctor to urban digital twins:</p> <ul> <li>Design of an internal data model and methods for the creation of an integrated complete model. </li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data. </li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ul>"},{"location":"udt_about/#license","title":"License","text":"<p>UDigiT-Doctor, being an update of CityDoctor2, will continue to be released under the LGPL as FOSS.</p>"},{"location":"udt_about/#releases","title":"Releases","text":"<p>Releases of UDigiT-Doctor will be made available via the CityDoctor2 GitLab-repository.</p>"},{"location":"udt_about/#project-information","title":"Project Information","text":"<p>Project Duration: April 01, 2024 - July 01, 2027</p> <p>Project Website: UDigiT-Doctor: Hochschule f\u00fcr Technik Stuttgart UDigiT-Doctor: Berliner Hochschule f\u00fcr Technik</p> <p>Project Lead: Prof. Dr.-Ing. Volker Coors</p> <p>Collaboration Partner: Prof. Dr. Margitta Pries</p>"},{"location":"udt_about/#partners","title":"Partners","text":"<p>Cooperation Partners: Robert Bosch GmbH Geoplex GIS GmbH M.O.S.S. Computer Grafik Systeme GmbH LandPlan OS GmbH Point Cloud Technology GmbH virtualcitysystems GmbH</p> <p>Associative Partners: Open Geospatial Consortium Stadt Stuttgart Stadt Leverkusen </p> <p>Funding: Bundesamt f\u00fcr Bildung und Forschung</p> <p>Promoter: VDI Technologiezentrum </p>"},{"location":"udt_req_data_model/","title":"Requirements of the internal data model","text":""},{"location":"udt_req_data_model/#urban-digital-twin-data","title":"Urban digital twin data","text":"<p>In order to be able to validate and repair the models of urban digital twins, CityDoctor needs the capability to access their data.</p>"},{"location":"udt_req_data_model/#reference-model","title":"Reference model","text":"<p>While CityDoctor is capable of repairing geometrical errors, the repaired model can contain discrepancies with the real object. This is expected, since CityDoctor purely operates via model data. To alleviate this, functionalities for the usage of a reference model are desired. The reference model would allow CityDoctor to determine the quality of a repair step, enabling the implementation of more sophisticated healing-routines.</p>"},{"location":"udt_req_data_model/#data-format-support","title":"Data format support","text":"<p>The aforementioned requirements revolve around data that is not compatible with, or available as, CityGML. Therefore, to </p>"},{"location":"udt_req_overview/","title":"Requirements of UDigiT-Doctor","text":"<ol> <li>Design of an internal data model and methods for the creation of an integrated complete model.</li> <li>Validation of the topological relations between objects, to assure data consistency of a generic base building model and specific use-cases (e.g. gas/water/electricity supply networks and their respective building service-connections)</li> <li>Improving repair and validation functionality by incorporating comparisons with reference data.</li> <li>Extensive, modifiable validation functionality for semantical data.</li> </ol> Specific requirements of Applicable to requirement nr. Data model 1., 2., 3. Topological consistency 2., 3. Semantical validation 2., 4."},{"location":"udt_terms/","title":"Validation of urban digital twins","text":""},{"location":"udt_terms/#terms-and-definitions","title":"Terms and definitions","text":"<p>See also: Terms and definitions of CityDoctor2</p> <p>Urban digital twin</p> <p>An urban digital twin is a virtual, representative model of a real building. Digital twins are useful for various tasks, e.g. the simulation of certain processes. They also serve as a central access point to information and data of the building, including access to installed sensors and building management systems.</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>"},{"location":"zipFiles/","title":"Zip Archives","text":"<p>CityDoctor is capable of parsing zip archives to enable the validation of contained CityGML files.</p>"},{"location":"zipFiles/#loading-a-zip-archive","title":"Loading a zip archive","text":"<p>To load a zip archive, select a zip file using file loading dialoge. CityDoctor will analyze the zip file for potential CityGml files.</p>"},{"location":"zipFiles/#zip-entry-manager","title":"Zip entry manager","text":"<p>CityDoctor will show the zip entry manager after successfully loading a zip archive. The zip entry manager has the following buttons: </p> <ol> <li>Show model: Shows the city model of the selected entry in the main window of CityDoctor, giving access to the normal CityDoctor functionality. Only available for decompressed entries.</li> <li>Decompress entry: Decompresses the selected entry.</li> <li>Error statistics: Shows the error statistics of the selected entry. Only available for validated entries.</li> <li>Decompress all entries: Decompresses all entries of the archive.</li> <li>Check all: Opens the checking dialoge, allowing batch validation of all entries. See validation for more details.</li> <li>Save reports: Allows saving of validation reports. Available after at least one entry has been validated.</li> </ol> <p></p> <p>Entries display their current state via color coding. Possible states are:</p> <ul> <li>compressed(black): A compressed entry is still 'zipped'.</li> <li>decompressed(blue): A decompressed entry has been successfully 'unzipped' into the memory.</li> <li>empty model(gray): A decompressed entry containing no city model or a model without any city objects.</li> <li>erroneous entry(dark red): An entry which could not be successfully decompressed, due to either having an invalid CityGML file, being too big to be held in memory or encountering a problem while reading the file. The respective reason will be shown in the entry's metadata.</li> <li>validated with / without errors (bright red / green respectively)</li> </ul> <p>Note</p> <p>The original zip file or its entries will not be changed. Decompressed data is a copy of the source entry.</p>"},{"location":"zipFiles/#validation","title":"Validation","text":""},{"location":"zipFiles/#validation-of-individual-entries","title":"Validation of individual entries","text":"<p>Decompressed entries can be validated individually through the CityDoctor main window. CityDoctor will retain the validation results for each entry in memory until the application is closed or a new zip archive is loaded.</p>"},{"location":"zipFiles/#batch-validation","title":"Batch validation","text":"<p>The \"Check all\" button in the zip entry manager opens the option window for the batch validation. This process does not require prior decompression of the entries and offers two modes of operation:</p>"},{"location":"zipFiles/#default-mode","title":"Default mode","text":"<p>The default batch validation mode validates each entry within the archive. Compressed entries will be automatically decompressed during this process. Like with the individual validation, the results are held in memory and can be inspected in CityDoctor.</p>"},{"location":"zipFiles/#low-memory-mode-stream-mode","title":"Low memory mode (stream mode)","text":"<p>Low memory mode utilizes datastreams to read and check the city model features individually. This significantly decreases memory overhead and usage by eliminating the need for entry decompression. However, this also means that the state of entries remains unchanged. As a result, the results of the validation cannot be inspected within CityDoctor and will be recorded in report files at the designated output location.</p>"}]}
\ No newline at end of file
......@@ -9,17 +9,18 @@
<link href="../geometric/" rel="prev"/>
<link href="../R_GE_R_TOO_FEW_POINTS/" rel="next"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Semantic Requirements - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -30,13 +31,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -55,39 +56,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -95,17 +95,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -119,7 +119,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -137,14 +137,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -153,123 +153,93 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input checked="" class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input checked="" class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="true" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="true" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" id="__toc" type="checkbox"/>
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" id="__toc" type="checkbox"/>
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Semantic Requirements
</span>
<span class="md-nav__icon md-icon"></span>
Semantic Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<a class="md-nav__link md-nav__link--active" href="./">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
<nav aria-label="Table of contents" class="md-nav md-nav--secondary">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
......@@ -278,32 +248,24 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#schematron">
<span class="md-ellipsis">
Schematron
</span>
</a>
Schematron
</a>
<nav aria-label="Schematron" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130">
<span class="md-ellipsis">
CityDoctor &gt;= 3.13.0
</span>
</a>
CityDoctor &gt;= 3.13.0
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130_1">
<span class="md-ellipsis">
CityDoctor &lt; 3.13.0
</span>
</a>
CityDoctor &lt; 3.13.0
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fehlerformat">
<span class="md-ellipsis">
Fehlerformat
</span>
</a>
Fehlerformat
</a>
</li>
</ul>
</nav>
......@@ -312,165 +274,121 @@
</nav>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -497,32 +415,24 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#schematron">
<span class="md-ellipsis">
Schematron
</span>
</a>
Schematron
</a>
<nav aria-label="Schematron" class="md-nav">
<ul class="md-nav__list">
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130">
<span class="md-ellipsis">
CityDoctor &gt;= 3.13.0
</span>
</a>
CityDoctor &gt;= 3.13.0
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#citydoctor-3130_1">
<span class="md-ellipsis">
CityDoctor &lt; 3.13.0
</span>
</a>
CityDoctor &lt; 3.13.0
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#fehlerformat">
<span class="md-ellipsis">
Fehlerformat
</span>
</a>
Fehlerformat
</a>
</li>
</ul>
</nav>
......@@ -593,7 +503,6 @@ 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>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -614,8 +523,8 @@ Nur in CityDoctor &lt; 3.13.0:
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -2,158 +2,197 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_MS/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_HOLE_OUTSIDE/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INNER_RINGS_NESTED/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERIOR_DISCONNECTED/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_INTERSECTING_RINGS/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_NON_PLANAR/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_P_ORIENTATION_RINGS_SAME/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_COLLAPSED_TO_LINE/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_CONSECUTIVE_POINTS_SAME/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_NOT_CLOSED/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_SELF_INTERSECTION/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_R_TOO_FEW_POINTS/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_SO/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_EDGE/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NON_MANIFOLD_VERTEX/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_NOT_CLOSED/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_POLYGON_WRONG_ORIENTATION/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_SELF_INTERSECTION/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/R_GE_S_TOO_FEW_POLYGONS/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/basic/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/firstRun/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/geometric/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/qual_ade/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requiredSoftware/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/requirements/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/schemaRequirements/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/semantic/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_about/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_data_model/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_overview/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_sem/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_topo/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_terms/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/userInterface/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/validationPlan/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/zipFiles/</loc>
<lastmod>2025-06-27</lastmod>
<lastmod>2026-07-17</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
\ No newline at end of file
No preview for this file type
......@@ -7,17 +7,18 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_about/" rel="canonical"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>UDigiT-Doctor - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -28,13 +29,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -53,39 +54,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -93,17 +93,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -117,7 +117,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -135,14 +135,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -151,277 +151,205 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -448,38 +376,28 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#objectives">
<span class="md-ellipsis">
Objectives
</span>
</a>
Objectives
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#license">
<span class="md-ellipsis">
License
</span>
</a>
License
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#releases">
<span class="md-ellipsis">
Releases
</span>
</a>
Releases
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#project-information">
<span class="md-ellipsis">
Project Information
</span>
</a>
Project Information
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#partners">
<span class="md-ellipsis">
Partners
</span>
</a>
Partners
</a>
</li>
</ul>
</nav>
......@@ -532,7 +450,6 @@ Prof. Dr. Margitta Pries</p>
<a href="https://www.vditz.de/">VDI Technologiezentrum</a> </p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -553,8 +470,8 @@ Prof. Dr. Margitta Pries</p>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -7,17 +7,18 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_data_model/" rel="canonical"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Requirements of the internal data model - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -28,13 +29,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -53,39 +54,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -93,17 +93,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -117,7 +117,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -135,14 +135,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -151,277 +151,205 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -448,24 +376,18 @@
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="#urban-digital-twin-data">
<span class="md-ellipsis">
Urban digital twin data
</span>
</a>
Urban digital twin data
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#reference-model">
<span class="md-ellipsis">
Reference model
</span>
</a>
Reference model
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="#data-format-support">
<span class="md-ellipsis">
Data format support
</span>
</a>
Data format support
</a>
</li>
</ul>
</nav>
......@@ -486,7 +408,6 @@ to determine the quality of a repair step, enabling the implementation of more s
<p>The aforementioned requirements revolve around data that is not compatible with, or available as, CityGML. Therefore, to </p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -507,8 +428,8 @@ to determine the quality of a repair step, enabling the implementation of more s
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -7,17 +7,18 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_overview/" rel="canonical"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Requirements of UDigiT-Doctor - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -28,13 +29,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -53,39 +54,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -93,17 +93,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -117,7 +117,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -135,14 +135,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -151,277 +151,205 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -478,7 +406,6 @@
</table>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -499,8 +426,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
......@@ -7,17 +7,18 @@
<meta content="width=device-width,initial-scale=1" name="viewport"/>
<link href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/udt_req_sem/" rel="canonical"/>
<link href="../img/citydoctor_logo.png" rel="icon"/>
<meta content="mkdocs-1.6.1, mkdocs-material-9.5.34" name="generator"/>
<meta content="mkdocs-1.4.2, mkdocs-material-9.0.6" name="generator"/>
<title>Udt req sem - CityDoctor2</title>
<link href="../assets/stylesheets/main.35f28582.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.06af60db.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/main.558e4712.min.css" rel="stylesheet"/>
<link href="../assets/stylesheets/palette.2505c338.min.css" rel="stylesheet"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&amp;display=fallback" rel="stylesheet"/>
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link href="https://unpkg.com/mermaid/dist/mermaid.css" rel="stylesheet"/>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body data-md-color-accent="indigo" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<body data-md-color-accent="" data-md-color-primary="red" data-md-color-scheme="default" dir="ltr">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input autocomplete="off" class="md-toggle" data-md-toggle="drawer" id="__drawer" type="checkbox"/>
<input autocomplete="off" class="md-toggle" data-md-toggle="search" id="__search" type="checkbox"/>
<label class="md-overlay" for="__drawer"></label>
......@@ -25,13 +26,13 @@
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<header class="md-header" data-md-component="header">
<nav aria-label="Header" class="md-header__inner md-grid">
<a aria-label="CityDoctor2" class="md-header__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
......@@ -50,39 +51,38 @@
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_0" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Darkmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary="red" data-md-color-scheme="default" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_2" hidden="" title="Use Darkmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="indigo" data-md-color-scheme="slate" id="__palette_1" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_0" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg>
<input aria-label="Use Lightmode" class="md-option" data-md-color-accent="" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary="" data-md-color-scheme="slate" id="__palette_2" name="__palette" type="radio"/>
<label class="md-header__button md-icon" for="__palette_1" hidden="" title="Use Lightmode">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"></path></svg>
</label>
</form>
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button aria-label="Select language" class="md-header__button md-icon">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.5 17.5 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"></path></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a class="md-select__link" href="https://transfer.hft-stuttgart.de/pages/citydoctor/citydoctorhomepage/de/" hreflang="de">
Deutsch
</a>
Deutsch
</a>
</li>
<li class="md-select__item">
<a class="md-select__link" href="../None" hreflang="en">
English
</a>
<a class="md-select__link" href=".." hreflang="en">
English
</a>
</li>
</ul>
</div>
</div>
</div>
<label class="md-header__button md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
......@@ -90,17 +90,17 @@
<form class="md-search__form" name="search">
<input aria-label="Search" autocapitalize="off" autocomplete="off" autocorrect="off" class="md-search__input" data-md-component="search-query" name="query" placeholder="Search" required="" spellcheck="false" type="text"/>
<label class="md-search__icon md-icon" for="__search">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg>
</label>
<nav aria-label="Search" class="md-search__options">
<button aria-label="Clear" class="md-search__icon md-icon" tabindex="-1" title="Clear" type="reset">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix="" tabindex="0">
<div class="md-search__scrollwrap" data-md-scrollfix="">
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
......@@ -114,7 +114,7 @@
<div class="md-header__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -132,14 +132,14 @@
<nav aria-label="Navigation" class="md-nav md-nav--primary" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a aria-label="CityDoctor2" class="md-nav__button md-logo" data-md-component="logo" href=".." title="CityDoctor2">
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg>
<svg viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"></path></svg>
</a>
CityDoctor2
</label>
<div class="md-nav__source">
<a class="md-source" data-md-component="source" href="https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2" title="Go to repository">
<div class="md-source__icon md-icon">
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg>
<svg viewbox="0 0 448 512" xmlns="http://www.w3.org/2000/svg"><!--! Font Awesome Free 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"></path></svg>
</div>
<div class="md-source__repository">
CityDoctor2
......@@ -148,277 +148,205 @@
</div>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1" type="checkbox"/>
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="">
<span class="md-ellipsis">
CityDoctor2
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1" id="__nav_1" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1" tabindex="0">
CityDoctor2
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_label" class="md-nav" data-md-level="1">
<nav aria-label="CityDoctor2" class="md-nav" data-md-level="1">
<label class="md-nav__title" for="__nav_1">
<span class="md-nav__icon md-icon"></span>
CityDoctor2
</label>
CityDoctor2
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="..">
<span class="md-ellipsis">
About
</span>
</a>
About
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requiredSoftware/">
<span class="md-ellipsis">
Installation
</span>
</a>
Installation
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../firstRun/">
<span class="md-ellipsis">
First Start
</span>
</a>
First Start
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../userInterface/">
<span class="md-ellipsis">
User Interface
</span>
</a>
User Interface
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../zipFiles/">
<span class="md-ellipsis">
Zip files
</span>
</a>
Zip files
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../validationPlan/">
<span class="md-ellipsis">
Validation Plan
</span>
</a>
Validation Plan
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../qual_ade/">
<span class="md-ellipsis">
Quality-ADE
</span>
</a>
Quality-ADE
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8" id="__nav_1_8_label" tabindex="0">
<span class="md-ellipsis">
Requirements
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8" id="__nav_1_8" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8" tabindex="0">
Requirements
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_label" class="md-nav" data-md-level="2">
<nav aria-label="Requirements" class="md-nav" data-md-level="2">
<label class="md-nav__title" for="__nav_1_8">
<span class="md-nav__icon md-icon"></span>
Requirements
</label>
Requirements
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../basic/">
<span class="md-ellipsis">
Fundamentals
</span>
</a>
Fundamentals
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../requirements/">
<span class="md-ellipsis">
Overview
</span>
</a>
Overview
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../schemaRequirements/">
<span class="md-ellipsis">
Schema Requirements
</span>
</a>
Schema Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../geometric/">
<span class="md-ellipsis">
Geometric Requirements
</span>
</a>
Geometric Requirements
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../semantic/">
<span class="md-ellipsis">
Semantic Requirements
</span>
</a>
Semantic Requirements
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle" id="__nav_1_8_6" type="checkbox"/>
<label class="md-nav__link" for="__nav_1_8_6" id="__nav_1_8_6_label" tabindex="0">
<span class="md-ellipsis">
Details
</span>
<span class="md-nav__icon md-icon"></span>
<input class="md-nav__toggle md-toggle" data-md-toggle="__nav_1_8_6" id="__nav_1_8_6" type="checkbox"/>
<label aria-expanded="false" class="md-nav__link" for="__nav_1_8_6" tabindex="0">
Details
<span class="md-nav__icon md-icon"></span>
</label>
<nav aria-expanded="false" aria-labelledby="__nav_1_8_6_label" class="md-nav" data-md-level="3">
<nav aria-label="Details" class="md-nav" data-md-level="3">
<label class="md-nav__title" for="__nav_1_8_6">
<span class="md-nav__icon md-icon"></span>
Details
</label>
Details
</label>
<ul class="md-nav__list" data-md-scrollfix="">
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_TOO_FEW_POINTS/">
<span class="md-ellipsis">
R_TOO_FEW_POINTS
</span>
</a>
R_TOO_FEW_POINTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_CONSECUTIVE_POINTS_SAME/">
<span class="md-ellipsis">
R_CONSECUTIVE_POINTS_SAME
</span>
</a>
R_CONSECUTIVE_POINTS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_NOT_CLOSED/">
<span class="md-ellipsis">
R_RING_NOT_CLOSED
</span>
</a>
R_RING_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_SELF_INTERSECTION/">
<span class="md-ellipsis">
R_RING_SELF_INTERSECTION
</span>
</a>
R_RING_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_R_COLLAPSED_TO_LINE/">
<span class="md-ellipsis">
R_COLLAPSED_TO_LINE
</span>
</a>
R_COLLAPSED_TO_LINE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERSECTING_RINGS/">
<span class="md-ellipsis">
P_INTERSECTING_RINGS
</span>
</a>
P_INTERSECTING_RINGS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_NON_PLANAR/">
<span class="md-ellipsis">
P_NON_PLANAR
</span>
</a>
P_NON_PLANAR
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INTERIOR_DISCONNECTED/">
<span class="md-ellipsis">
P_INTERIOR_DISCONNECTED
</span>
</a>
P_INTERIOR_DISCONNECTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_HOLE_OUTSIDE/">
<span class="md-ellipsis">
P_HOLE_OUTSIDE
</span>
</a>
P_HOLE_OUTSIDE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_INNER_RINGS_NESTED/">
<span class="md-ellipsis">
P_INNER_RINGS_NESTED
</span>
</a>
P_INNER_RINGS_NESTED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_P_ORIENTATION_RINGS_SAME/">
<span class="md-ellipsis">
P_ORIENTATION_RINGS_SAME
</span>
</a>
P_ORIENTATION_RINGS_SAME
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_MS/">
<span class="md-ellipsis">
MULTI_SURFACE
</span>
</a>
MULTI_SURFACE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_TOO_FEW_POLYGONS/">
<span class="md-ellipsis">
S_TOO_FEW_POLYGONS
</span>
</a>
S_TOO_FEW_POLYGONS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NOT_CLOSED/">
<span class="md-ellipsis">
S_NOT_CLOSED
</span>
</a>
S_NOT_CLOSED
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_VERTEX/">
<span class="md-ellipsis">
S_NON_MANIFOLD_VERTEX
</span>
</a>
S_NON_MANIFOLD_VERTEX
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_NON_MANIFOLD_EDGE/">
<span class="md-ellipsis">
S_NON_MANIFOLD_EDGE
</span>
</a>
S_NON_MANIFOLD_EDGE
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_MULTIPLE_CONNECTED_COMPONENTS/">
<span class="md-ellipsis">
S_MULTIPLE_CONNECTED_COMPONENTS
</span>
</a>
S_MULTIPLE_CONNECTED_COMPONENTS
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_SELF_INTERSECTION/">
<span class="md-ellipsis">
S_SELF_INTERSECTION
</span>
</a>
S_SELF_INTERSECTION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_POLYGON_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_POLYGON_WRONG_ORIENTATION
</span>
</a>
S_POLYGON_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_S_ALL_POLYGONS_WRONG_ORIENTATION/">
<span class="md-ellipsis">
S_ALL_POLYGONS_WRONG_ORIENTATION
</span>
</a>
S_ALL_POLYGONS_WRONG_ORIENTATION
</a>
</li>
<li class="md-nav__item">
<a class="md-nav__link" href="../R_GE_SO/">
<span class="md-ellipsis">
SOLID
</span>
</a>
SOLID
</a>
</li>
</ul>
</nav>
......@@ -444,10 +372,8 @@
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>Udt req sem</h1>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
......@@ -468,8 +394,8 @@
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.07f07601.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.56dfad97.min.js"></script>
<script id="__config" type="application/json">{"base": "..", "features": ["content.code.annotate", "navigation.sections"], "search": "../assets/javascripts/workers/search.e5c33ebb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../assets/javascripts/bundle.51d95adb.min.js"></script>
<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</body>
</html>
\ No newline at end of file
Supports Markdown
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