Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
7346bcf0
Commit
7346bcf0
authored
Mar 06, 2026
by
Matthias Betz
Browse files
fix roof unfragmented check
parent
4b27a7e4
Pipeline
#12354
passed with stage
in 2 minutes and 12 seconds
Changes
11
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/AbstractErrorVisitor.java
View file @
7346bcf0
...
...
@@ -37,7 +37,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import
de.hft.stuttgart.citydoctor2.check.error.SolidError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.check.error.XMLValidationError
;
...
...
@@ -181,7 +181,7 @@ public abstract class AbstractErrorVisitor implements ErrorVisitor {
}
@Override
public
void
visit
(
Surface
Unf
ragmentedError
err
)
{
public
void
visit
(
Surface
F
ragmentedError
err
)
{
}
@Override
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/ErrorVisitor.java
View file @
7346bcf0
...
...
@@ -55,7 +55,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import
de.hft.stuttgart.citydoctor2.check.error.SolidError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.check.error.XMLValidationError
;
...
...
@@ -135,7 +135,7 @@ public interface ErrorVisitor {
public
void
visit
(
SchematronError
err
);
public
void
visit
(
Surface
Unf
ragmentedError
err
);
public
void
visit
(
Surface
F
ragmentedError
err
);
public
void
visit
(
DegeneratedRingError
err
);
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/HealingMethod.java
View file @
7346bcf0
...
...
@@ -48,7 +48,7 @@ import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError;
import
de.hft.stuttgart.citydoctor2.check.error.SchematronError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.check.error.XMLValidationError
;
...
...
@@ -189,7 +189,7 @@ public interface HealingMethod {
return
false
;
}
default
boolean
visit
(
Surface
Unf
ragmentedError
err
,
ModificationListener
l
)
{
default
boolean
visit
(
Surface
F
ragmentedError
err
,
ModificationListener
l
)
{
return
false
;
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/QualityAdeErrorVisitor.java
View file @
7346bcf0
...
...
@@ -55,7 +55,7 @@ import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError;
import
de.hft.stuttgart.citydoctor2.check.error.SchematronError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.check.error.XMLValidationError
;
...
...
@@ -367,7 +367,7 @@ public class QualityAdeErrorVisitor extends AbstractErrorVisitor {
}
@Override
public
void
visit
(
Surface
Unf
ragmentedError
err
)
{
public
void
visit
(
Surface
F
ragmentedError
err
)
{
// not translated
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/Requirement.java
View file @
7346bcf0
...
...
@@ -63,7 +63,7 @@ public class Requirement implements Serializable {
public
static
final
Requirement
R_GE_R_NULL_AREA
=
new
Requirement
(
"R_GE_R_NULL_AREA"
,
RequirementType
.
GEOMETRY
);
public
static
final
Requirement
R_SE_BS_GROUND_UNFRAGMENTED
=
new
Requirement
(
"R_SE_BS_GROUND_UNFRAGMENTED"
,
RequirementType
.
SEMANTIC
);
public
static
final
Requirement
R_SE_BS_ROOF_UNFRAGMENTED
=
new
Requirement
(
"R_SE_BS_
G
RO
UND
_UNFRAGMENTED"
,
RequirementType
.
SEMANTIC
);
public
static
final
Requirement
R_SE_BS_ROOF_UNFRAGMENTED
=
new
Requirement
(
"R_SE_BS_RO
OF
_UNFRAGMENTED"
,
RequirementType
.
SEMANTIC
);
public
static
final
Requirement
R_SE_BS_IS_CEILING
=
new
Requirement
(
"R_SE_BS_IS_CEILING"
,
RequirementType
.
SEMANTIC
);
public
static
final
Requirement
R_SE_BS_IS_FLOOR
=
new
Requirement
(
"R_SE_BS_IS_FLOOR"
,
RequirementType
.
SEMANTIC
);
public
static
final
Requirement
R_SE_BS_IS_WALL
=
new
Requirement
(
"R_SE_BS_IS_WALL"
,
RequirementType
.
SEMANTIC
);
...
...
@@ -83,6 +83,7 @@ public class Requirement implements Serializable {
defaultParameters
.
add
(
new
DefaultParameter
(
UPPER_ANGLE_NAME
,
"135"
,
Unit
.
DEGREE
));
R_SE_BS_IS_WALL
.
parameters
=
Collections
.
unmodifiableList
(
defaultParameters
);
defaultParameters
=
new
ArrayList
<>();
defaultParameters
.
add
(
new
DefaultParameter
(
MAX_ANGLE_DEVIATION
,
"1"
,
Unit
.
DEGREE
));
R_SE_BS_ROOF_UNFRAGMENTED
.
parameters
=
Collections
.
unmodifiableList
(
defaultParameters
);
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/Surface
Unf
ragmentedError.java
→
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/check/error/Surface
F
ragmentedError.java
View file @
7346bcf0
...
...
@@ -36,7 +36,7 @@ import java.io.Serial;
* @author Matthias Betz
*
*/
public
class
Surface
Unf
ragmentedError
implements
CheckError
{
public
class
Surface
F
ragmentedError
implements
CheckError
{
@Serial
private
static
final
long
serialVersionUID
=
3146243879393474196L
;
...
...
@@ -44,7 +44,7 @@ public class SurfaceUnfragmentedError implements CheckError {
private
final
BoundarySurface
bs
;
private
final
double
angleDeviation
;
public
Surface
Unf
ragmentedError
(
BoundarySurface
bs
,
double
angleDerivation
)
{
public
Surface
F
ragmentedError
(
BoundarySurface
bs
,
double
angleDerivation
)
{
this
.
bs
=
bs
;
this
.
angleDeviation
=
angleDerivation
;
}
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/semantics/RoofSurfaceUnfragmentedCheck.java
View file @
7346bcf0
...
...
@@ -29,6 +29,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckId;
import
de.hft.stuttgart.citydoctor2.check.CheckResult
;
import
de.hft.stuttgart.citydoctor2.check.Requirement
;
import
de.hft.stuttgart.citydoctor2.check.RequirementType
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.checks.util.CollectionUtils
;
import
de.hft.stuttgart.citydoctor2.checks.util.UnfragmentedCheck
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
...
...
@@ -80,6 +81,10 @@ public class RoofSurfaceUnfragmentedCheck extends Check {
}
// only use lod1 and lod2 polygons
CheckResult
cr
=
UnfragmentedCheck
.
checkForFragmentedBoundarySurfaces
(
this
,
bs
,
maxAngleDeviation
);
if
(
cr
.
getResultStatus
()
==
ResultStatus
.
OK
)
{
// check if neighboring roof surfaces have the same average normal
// they should be merged
}
bs
.
addCheckResult
(
cr
);
}
...
...
CityDoctorParent/CityDoctorValidation/src/main/java/de/hft/stuttgart/citydoctor2/checks/util/UnfragmentedCheck.java
View file @
7346bcf0
...
...
@@ -24,7 +24,7 @@ import java.util.List;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.check.CheckResult
;
import
de.hft.stuttgart.citydoctor2.check.ResultStatus
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundarySurface
;
import
de.hft.stuttgart.citydoctor2.datastructure.Geometry
;
import
de.hft.stuttgart.citydoctor2.datastructure.Polygon
;
...
...
@@ -75,7 +75,7 @@ public class UnfragmentedCheck {
double
dot
=
averageNormal
.
dot
(
n
);
double
acos
=
Math
.
acos
(
dot
);
if
(
acos
>
delta
)
{
Surface
Unf
ragmentedError
err
=
new
Surface
Unf
ragmentedError
(
bs
,
acos
);
Surface
F
ragmentedError
err
=
new
Surface
F
ragmentedError
(
bs
,
acos
);
return
new
CheckResult
(
c
,
ResultStatus
.
ERROR
,
err
);
}
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/GlobalErrorVisitor.java
View file @
7346bcf0
...
...
@@ -39,7 +39,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import
de.hft.stuttgart.citydoctor2.check.error.SolidError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.check.error.XMLValidationError
;
...
...
@@ -186,7 +186,7 @@ public class GlobalErrorVisitor implements ErrorVisitor {
}
@Override
public
void
visit
(
Surface
Unf
ragmentedError
err
)
{
public
void
visit
(
Surface
F
ragmentedError
err
)
{
}
@Override
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/ListErrorVisitor.java
View file @
7346bcf0
...
...
@@ -41,7 +41,7 @@ import de.hft.stuttgart.citydoctor2.check.error.SchematronError;
import
de.hft.stuttgart.citydoctor2.check.error.SolidError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.DegeneratedRingError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
...
...
@@ -243,7 +243,7 @@ public class ListErrorVisitor implements ErrorVisitor {
}
@Override
public
void
visit
(
Surface
Unf
ragmentedError
err
)
{
public
void
visit
(
Surface
F
ragmentedError
err
)
{
// nothing to display
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/ErrorItemVisitor.java
View file @
7346bcf0
...
...
@@ -36,7 +36,7 @@ import de.hft.stuttgart.citydoctor2.check.error.RingTooFewPointsError;
import
de.hft.stuttgart.citydoctor2.check.error.SchematronError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidNotClosedError
;
import
de.hft.stuttgart.citydoctor2.check.error.SolidSelfIntError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
Unf
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.Surface
F
ragmentedError
;
import
de.hft.stuttgart.citydoctor2.check.error.TooFewPolygonsError
;
import
de.hft.stuttgart.citydoctor2.check.error.UnknownCheckError
;
import
de.hft.stuttgart.citydoctor2.datastructure.ConcretePolygon
;
...
...
@@ -396,7 +396,7 @@ public class ErrorItemVisitor extends AbstractErrorVisitor {
}
@Override
public
void
visit
(
Surface
Unf
ragmentedError
err
)
{
public
void
visit
(
Surface
F
ragmentedError
err
)
{
TextNode
textNode
=
new
TextNode
(
Localization
.
getText
(
"ErrorItemVisitor.deviation"
)
+
": "
+
err
.
getAngleDeviation
());
TreeItem
<
Renderable
>
textItem
=
new
TreeItem
<>(
textNode
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment