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
02de0a22
Commit
02de0a22
authored
Oct 30, 2024
by
Riegel
Browse files
Reformat code
parent
ad3589e8
Pipeline
#10297
passed with stage
in 1 minute and 5 seconds
Changes
61
Pipelines
1
Show whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/ReliefObject.java
View file @
02de0a22
...
...
@@ -18,19 +18,18 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.citygml4j.core.model.relief.ReliefFeature
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
org.citygml4j.core.model.relief.ReliefFeature
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
ReliefObject
extends
CityObject
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Storey.java
View file @
02de0a22
...
...
@@ -12,7 +12,7 @@ import java.io.Serial;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Storey
extends
AbstractBuildingSubdivision
{
public
class
Storey
extends
AbstractBuildingSubdivision
{
@Serial
private
static
final
long
serialVersionUID
=
5162814691642668089L
;
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/SurfaceFeatureType.java
View file @
02de0a22
...
...
@@ -22,7 +22,6 @@ package de.hft.stuttgart.citydoctor2.datastructure;
* Availabel bridge types in CityGML
*
* @author Matthias Betz
*
*/
public
enum
SurfaceFeatureType
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/TinObject.java
View file @
02de0a22
...
...
@@ -18,10 +18,9 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.model.relief.TINRelief
;
...
...
@@ -31,9 +30,9 @@ import org.xmlobjects.gml.model.geometry.primitives.Triangle;
import
org.xmlobjects.gml.model.geometry.primitives.TriangleArrayProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.TriangulatedSurface
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
TinObject
extends
CityObject
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/TransportationObject.java
View file @
02de0a22
...
...
@@ -18,10 +18,13 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
org.citygml4j.core.model.core.AbstractCityObject
;
import
org.citygml4j.core.model.core.AbstractSpace
;
import
org.citygml4j.core.model.transportation.AbstractTransportationSpace
;
...
...
@@ -31,19 +34,14 @@ import org.citygml4j.core.util.geometry.GeometryFactory;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurface
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.CheckId
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Representation of a transportation object.
*
* @author Matthias Betz
*
*/
public
class
TransportationObject
extends
CityObject
{
...
...
@@ -70,7 +68,7 @@ public class TransportationObject extends CityObject {
@Override
public
void
reCreateGeometries
(
GeometryFactory
factory
,
ParserConfiguration
config
)
{
for
(
Geometry
geom
:
getGeometries
())
{
if
(
geom
instanceof
ImplicitGeometryHolder
){
if
(
geom
instanceof
ImplicitGeometryHolder
)
{
continue
;
}
if
(
geom
.
getType
()
==
GeometryType
.
MULTI_SURFACE
)
{
...
...
@@ -239,7 +237,7 @@ public class TransportationObject extends CityObject {
@Override
public
void
unsetGmlGeometries
()
{
switch
(
type
)
{
case
ROAD
,
TRACK
,
RAILWAY
,
SQUARE
,
TRANSPORTATION_COMPLEX:
case
ROAD
,
TRACK
,
RAILWAY
,
SQUARE
,
TRANSPORTATION_COMPLEX:
AbstractTransportationSpace
tc
=
(
AbstractTransportationSpace
)
ato
;
tc
.
getDeprecatedProperties
().
setLod1MultiSurface
(
null
);
tc
.
setLod2MultiSurface
(
null
);
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Tunnel.java
View file @
02de0a22
...
...
@@ -15,7 +15,7 @@ import java.io.Serial;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Tunnel
extends
AbstractTunnel
{
public
class
Tunnel
extends
AbstractTunnel
{
@Serial
private
static
final
long
serialVersionUID
=
5316281216192555555L
;
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/TunnelFurniture.java
View file @
02de0a22
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
org.citygml4j.core.model.building.BuildingFurniture
;
import
java.io.Serial
;
...
...
@@ -15,7 +14,7 @@ public class TunnelFurniture extends AbstractFurniture {
}
@Override
public
Copyable
createCopyInstance
(){
public
Copyable
createCopyInstance
()
{
return
new
BuildingRoomFurniture
();
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/TunnelHollow.java
View file @
02de0a22
...
...
@@ -8,18 +8,18 @@ import java.io.Serial;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
TunnelHollow
extends
AbstractRoom
{
public
class
TunnelHollow
extends
AbstractRoom
{
@Serial
private
static
final
long
serialVersionUID
=
-
276088332165299253L
;
private
final
List
<
TunnelFurnitureProperty
>
furnitureRefs
=
new
ArrayList
<>(
2
);
private
CityObject
parent
;
public
void
setGmlObject
(
org
.
citygml4j
.
core
.
model
.
tunnel
.
HollowSpace
gmlHollowSpace
){
public
void
setGmlObject
(
org
.
citygml4j
.
core
.
model
.
tunnel
.
HollowSpace
gmlHollowSpace
)
{
super
.
cgmlRoom
=
gmlHollowSpace
;
}
public
void
setParent
(
CityObject
parent
){
public
void
setParent
(
CityObject
parent
)
{
this
.
parent
=
parent
;
}
...
...
@@ -36,7 +36,7 @@ public class TunnelHollow extends AbstractRoom{
}
@Override
public
void
fillValues
(
Copyable
original
,
CopyHandler
handler
){
public
void
fillValues
(
Copyable
original
,
CopyHandler
handler
)
{
super
.
fillValues
(
original
,
handler
);
TunnelHollow
oHollow
=
(
TunnelHollow
)
original
;
...
...
@@ -44,7 +44,7 @@ public class TunnelHollow extends AbstractRoom{
}
@Override
public
void
collectInstances
(
CopyHandler
handler
){
public
void
collectInstances
(
CopyHandler
handler
)
{
super
.
collectInstances
(
handler
);
handler
.
addInstance
(
parent
);
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/TunnelPart.java
View file @
02de0a22
...
...
@@ -50,5 +50,6 @@ public class TunnelPart extends AbstractTunnel {
return
new
TunnelPart
();
}
private
TunnelPart
(){}
private
TunnelPart
()
{
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vegetation.java
View file @
02de0a22
...
...
@@ -18,9 +18,10 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
java.io.Serial
;
import
java.util.Collections
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
org.citygml4j.core.model.core.AbstractCityObject
;
import
org.citygml4j.core.model.vegetation.AbstractVegetationObject
;
import
org.citygml4j.core.model.vegetation.PlantCover
;
...
...
@@ -33,16 +34,13 @@ import org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty;
import
org.xmlobjects.gml.model.geometry.primitives.Solid
;
import
org.xmlobjects.gml.model.geometry.primitives.SolidProperty
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
java.io.Serial
;
import
java.util.Collections
;
/**
* Representation of CityGML vegetation objects
*
* @author Matthias Betz
*
*/
public
class
Vegetation
extends
CityObject
{
...
...
@@ -68,7 +66,7 @@ public class Vegetation extends CityObject {
@Override
public
void
reCreateGeometries
(
GeometryFactory
factory
,
ParserConfiguration
config
)
{
for
(
Geometry
geom
:
getGeometries
())
{
if
(
geom
instanceof
ImplicitGeometryHolder
){
if
(
geom
instanceof
ImplicitGeometryHolder
)
{
continue
;
}
if
(
geom
.
getType
()
==
GeometryType
.
MULTI_SURFACE
)
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Vertex.java
View file @
02de0a22
...
...
@@ -18,22 +18,21 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
de.hft.stuttgart.citydoctor2.math.Vector3d
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
de.hft.stuttgart.citydoctor2.utils.SerializablePair
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
de.hft.stuttgart.citydoctor2.math.Vector3d
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
de.hft.stuttgart.citydoctor2.utils.SerializablePair
;
/**
* Contains the vertex information of a point in a linear ring
*
* @author Matthias Betz
*
*/
public
class
Vertex
extends
Vector3d
implements
Copyable
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/WaterObject.java
View file @
02de0a22
...
...
@@ -18,27 +18,25 @@
*/
package
de.hft.stuttgart.citydoctor2.datastructure
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
org.citygml4j.core.model.core.AbstractCityObject
;
import
org.citygml4j.core.model.waterbody.WaterBody
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurface
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
de.hft.stuttgart.citydoctor2.utils.CopyHandler
;
import
de.hft.stuttgart.citydoctor2.utils.Copyable
;
import
java.io.Serial
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* Represents cityGML water body objects.
*
* @author Matthias Betz
*
*/
public
class
WaterObject
extends
CityObject
{
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3FeatureMapper.java
View file @
02de0a22
...
...
@@ -18,51 +18,37 @@
*/
package
de.hft.stuttgart.citydoctor2.mapper.citygml3
;
import
java.nio.file.Path
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.datastructure.AbstractBuilding
;
import
de.hft.stuttgart.citydoctor2.datastructure.AbstractTunnel
;
import
de.hft.stuttgart.citydoctor2.datastructure.BridgeConstructiveElement
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.datastructure.Building
;
import
de.hft.stuttgart.citydoctor2.datastructure.BuildingPart
;
import
de.hft.stuttgart.citydoctor2.datastructure.BuildingRoom
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing
;
import
de.hft.stuttgart.citydoctor2.datastructure.Polygon
;
import
de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType
;
import
de.hft.stuttgart.citydoctor2.datastructure.TunnelFurniture
;
import
de.hft.stuttgart.citydoctor2.datastructure.TunnelPart
;
import
de.hft.stuttgart.citydoctor2.datastructure.TransportationObject.TransportationType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vegetation.VegetationType
;
import
de.hft.stuttgart.citydoctor2.math.graph.KDTree
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.model.CityGMLVersion
;
import
org.citygml4j.core.model.bridge.AbstractBridge
;
import
org.citygml4j.core.model.bridge.Bridge
;
import
org.citygml4j.core.model.bridge.BridgeConstructiveElementProperty
;
import
org.citygml4j.core.model.bridge.BridgeInstallation
;
import
org.citygml4j.core.model.bridge.BridgeInstallationProperty
;
import
org.citygml4j.core.model.bridge.BridgePart
;
import
org.citygml4j.core.model.bridge.BridgePartProperty
;
import
org.citygml4j.core.model.building.*
;
import
org.citygml4j.core.model.building.BuildingFurniture
;
import
org.citygml4j.core.model.bridge.*
;
import
org.citygml4j.core.model.building.BuildingUnit
;
import
org.citygml4j.core.model.building.Storey
;
import
org.citygml4j.core.model.building.*
;
import
org.citygml4j.core.model.construction.AbstractConstruction
;
import
org.citygml4j.core.model.core.*
;
import
org.citygml4j.core.model.deprecated.transportation.TransportationComplex
;
import
org.citygml4j.core.model.landuse.LandUse
;
import
org.citygml4j.core.model.transportation.AbstractTransportationSpace
;
import
org.citygml4j.core.model.transportation.AuxiliaryTrafficArea
;
import
org.citygml4j.core.model.transportation.AuxiliaryTrafficSpace
;
import
org.citygml4j.core.model.transportation.AuxiliaryTrafficSpaceProperty
;
import
org.citygml4j.core.model.transportation.Railway
;
import
org.citygml4j.core.model.transportation.Road
;
import
org.citygml4j.core.model.transportation.Square
;
import
org.citygml4j.core.model.transportation.Track
;
import
org.citygml4j.core.model.transportation.TrafficArea
;
import
org.citygml4j.core.model.transportation.TrafficSpace
;
import
org.citygml4j.core.model.transportation.TrafficSpaceProperty
;
import
org.citygml4j.core.model.tunnel.*
;
import
org.citygml4j.core.model.transportation.*
;
import
org.citygml4j.core.model.tunnel.Tunnel
;
import
org.citygml4j.core.model.tunnel.*
;
import
org.citygml4j.core.model.vegetation.AbstractVegetationObject
;
import
org.citygml4j.core.model.vegetation.PlantCover
;
import
org.citygml4j.core.model.vegetation.SolitaryVegetationObject
;
...
...
@@ -75,33 +61,25 @@ import org.xmlobjects.gml.model.geometry.GeometryProperty;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurface
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.complexes.CompositeSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractSolid
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.Shell
;
import
org.xmlobjects.gml.model.geometry.primitives.ShellProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.Solid
;
import
org.xmlobjects.gml.model.geometry.primitives.SolidProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.*
;
import
de.hft.stuttgart.citydoctor2.datastructure.BridgeObject.BridgeType
;
import
de.hft.stuttgart.citydoctor2.datastructure.TransportationObject.TransportationType
;
import
de.hft.stuttgart.citydoctor2.datastructure.Vegetation.VegetationType
;
import
de.hft.stuttgart.citydoctor2.math.graph.KDTree
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
java.nio.file.Path
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
class
Citygml3FeatureMapper
extends
ObjectWalker
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
Citygml3FeatureMapper
.
class
);
private
final
CityDoctorModel
model
;
private
Map
<
String
,
ConcretePolygon
>
polygonMap
=
new
HashMap
<>();
private
List
<
ResolvableReference
>
references
=
new
ArrayList
<>();
private
Map
<
Vertex
,
Vertex
>
vertexMap
=
new
HashMap
<>();
private
final
ParserConfiguration
config
;
private
final
Path
directory
;
private
final
double
neighborDistance
;
private
Map
<
String
,
ConcretePolygon
>
polygonMap
=
new
HashMap
<>();
private
List
<
ResolvableReference
>
references
=
new
ArrayList
<>();
private
Map
<
Vertex
,
Vertex
>
vertexMap
=
new
HashMap
<>();
public
Citygml3FeatureMapper
(
ParserConfiguration
config
,
Path
path
)
{
this
.
config
=
config
;
...
...
@@ -110,6 +88,13 @@ public class Citygml3FeatureMapper extends ObjectWalker {
neighborDistance
=
1.8d
/
Math
.
pow
(
10
,
config
.
getNumberOfRoundingPlaces
());
}
public
static
void
parseId
(
AbstractGML
gml
,
GmlElement
gmlElement
)
{
String
id
=
gml
.
getId
();
if
(
id
!=
null
)
{
gmlElement
.
setGmlId
(
new
GmlId
(
id
));
}
}
@Override
public
void
visit
(
AbstractSpace
space
)
{
// if we are here, an AbstractSpace thing was read that is not handled in the
...
...
@@ -129,7 +114,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
@Override
public
void
visit
(
org
.
citygml4j
.
core
.
model
.
generics
.
GenericOccupiedSpace
gos
){
public
void
visit
(
org
.
citygml4j
.
core
.
model
.
generics
.
GenericOccupiedSpace
gos
)
{
GenericCityObject
gco
=
new
GenericCityObject
();
gco
.
setGmlObject
(
gos
);
mapAbstractOccupiedSpace
(
gos
,
gco
);
...
...
@@ -139,7 +124,6 @@ public class Citygml3FeatureMapper extends ObjectWalker {
model
.
addGenericCityObject
(
gco
);
}
@Override
public
void
visit
(
org
.
citygml4j
.
core
.
model
.
building
.
Building
gmlBuilding
)
{
Building
cdBuilding
=
new
Building
();
...
...
@@ -245,8 +229,6 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
@Override
public
void
visit
(
Bridge
bridge
)
{
BridgeObject
bo
=
new
BridgeObject
(
BridgeType
.
BRIDGE
,
bridge
);
...
...
@@ -359,7 +341,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
@Override
public
void
visit
(
Tunnel
tunnel
){
public
void
visit
(
Tunnel
tunnel
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Tunnel
tu
=
new
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Tunnel
();
for
(
TunnelPartProperty
tPartProperty
:
tunnel
.
getTunnelParts
())
{
if
(!
tPartProperty
.
isSetObject
())
{
...
...
@@ -435,7 +417,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
}
}
for
(
TunnelFurnitureProperty
tfProp
:
gmlTunnel
.
getTunnelFurniture
()){
for
(
TunnelFurnitureProperty
tfProp
:
gmlTunnel
.
getTunnelFurniture
())
{
var
gmlTf
=
tfProp
.
getObject
();
if
(
gmlTf
==
null
)
{
continue
;
...
...
@@ -445,7 +427,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
}
private
Installation
mapTunnelInstallation
(
TunnelInstallation
gmlTi
){
private
Installation
mapTunnelInstallation
(
TunnelInstallation
gmlTi
)
{
Installation
ti
=
new
Installation
();
ti
.
setGmlObject
(
gmlTi
);
mapAbstractOccupiedSpace
(
gmlTi
,
ti
);
...
...
@@ -483,10 +465,10 @@ public class Citygml3FeatureMapper extends ObjectWalker {
return
ti
;
}
private
TunnelHollow
mapTunnelHollow
(
HollowSpace
gmlHo
){
private
TunnelHollow
mapTunnelHollow
(
HollowSpace
gmlHo
)
{
TunnelHollow
tHollow
=
new
TunnelHollow
();
tHollow
.
setGmlObject
(
gmlHo
);
mapAbstractUnoccupiedSpace
(
gmlHo
,
tHollow
);
mapAbstractUnoccupiedSpace
(
gmlHo
,
tHollow
);
SurfaceMapper
surfaceMapper
=
new
SurfaceMapper
(
polygonMap
,
references
,
vertexMap
,
config
);
for
(
AbstractSpaceBoundaryProperty
surfaceProp
:
gmlHo
.
getBoundaries
())
{
...
...
@@ -513,7 +495,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
Installation
bi
=
mapTunnelInstallation
(
gmlTi
);
tHollow
.
addRoomInstallation
(
bi
);
}
for
(
TunnelFurnitureProperty
tfProp
:
gmlHo
.
getTunnelFurniture
()){
for
(
TunnelFurnitureProperty
tfProp
:
gmlHo
.
getTunnelFurniture
())
{
var
gmlHref
=
tfProp
.
getHref
();
if
(
gmlHref
==
null
)
{
continue
;
...
...
@@ -523,7 +505,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
return
tHollow
;
}
private
TunnelFurniture
mapTunnelFurniture
(
org
.
citygml4j
.
core
.
model
.
tunnel
.
TunnelFurniture
gmlTf
){
private
TunnelFurniture
mapTunnelFurniture
(
org
.
citygml4j
.
core
.
model
.
tunnel
.
TunnelFurniture
gmlTf
)
{
TunnelFurniture
tf
=
new
TunnelFurniture
();
tf
.
setGmlObject
(
gmlTf
);
mapAbstractOccupiedSpace
(
gmlTf
,
tf
);
...
...
@@ -739,7 +721,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
}
private
void
parseAndAddCompositeSurface
(
MultiSurfaceProperty
ms
,
Lod
lod
,
CityObject
co
){
private
void
parseAndAddCompositeSurface
(
MultiSurfaceProperty
ms
,
Lod
lod
,
CityObject
co
)
{
if
(
ms
==
null
||
ms
.
getObject
()
==
null
)
{
return
;
}
...
...
@@ -755,19 +737,20 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
private
void
parseImplicitGeometry
(
AbstractOccupiedSpace
aos
,
CityObject
co
){
for
(
int
i
=
1
;
i
<=
3
;
i
++){
if
(
aos
.
getImplicitRepresentation
(
i
)
==
null
){
private
void
parseImplicitGeometry
(
AbstractOccupiedSpace
aos
,
CityObject
co
)
{
for
(
int
i
=
1
;
i
<=
3
;
i
++)
{
if
(
aos
.
getImplicitRepresentation
(
i
)
==
null
)
{
continue
;
}
if
(
aos
.
getImplicitRepresentation
(
i
).
getObject
()
!=
null
){
if
(
aos
.
getImplicitRepresentation
(
i
).
getObject
()
!=
null
)
{
ImplicitGeometry
impGeom
=
aos
.
getImplicitRepresentation
(
i
).
getObject
();
ImplicitGeometryHolder
igh
=
resolveImplicitGeometry
(
impGeom
,
i
);
if
(
igh
!=
null
){
if
(
igh
!=
null
)
{
co
.
addGeometry
(
igh
);
}
}
else
if
(
aos
.
getImplicitRepresentation
(
i
).
getHref
()
!=
null
){
// TODO: HREF handling of implicit geometries
}
else
if
(
aos
.
getImplicitRepresentation
(
i
).
getHref
()
!=
null
)
{
// Hrefs of ImplicitGeometries point to its RelativeGeometry.
// Can be ignored for CD since the Href is only used for repeating the RelativeGeometry at different LODs
}
...
...
@@ -777,30 +760,30 @@ public class Citygml3FeatureMapper extends ObjectWalker {
private
ImplicitGeometryHolder
resolveImplicitGeometry
(
ImplicitGeometry
ig
,
int
lodInt
)
{
ImplicitGeometryHolder
igh
=
null
;
if
(
ig
.
getLibraryObject
()
!=
null
){
if
(
ig
.
getLibraryObject
()
!=
null
)
{
Path
libraryObjectPath
=
directory
.
resolve
(
ig
.
getLibraryObject
());
LibraryObject
libObj
=
LibraryObject
.
of
(
libraryObjectPath
,
config
);
if
(
libObj
!=
null
){
if
(
libObj
!=
null
)
{
igh
=
new
ImplicitGeometryHolder
(
ig
,
libObj
);
}
}
else
if
(
ig
.
getRelativeGeometry
()
!=
null
){
}
else
if
(
ig
.
getRelativeGeometry
()
!=
null
)
{
AbstractGeometry
aGeom
=
ig
.
getRelativeGeometry
().
getObject
();
Geometry
geom
=
null
;
Lod
lod
=
Lod
.
values
()[
lodInt
];
RelativeGeometry
relGeo
=
null
;
if
(
aGeom
instanceof
MultiSurface
ms
){
if
(
aGeom
instanceof
MultiSurface
ms
)
{
geom
=
parseMultiSurface
(
ms
,
lod
);
}
else
if
(
aGeom
instanceof
Solid
s
){
}
else
if
(
aGeom
instanceof
Solid
s
)
{
geom
=
parseSolid
(
s
,
lod
);
}
else
if
(
aGeom
instanceof
CompositeSurface
cs
){
}
else
if
(
aGeom
instanceof
CompositeSurface
cs
)
{
geom
=
parseCompositeSurface
(
cs
,
lod
);
}
if
(
geom
!=
null
){
if
(
geom
!=
null
)
{
relGeo
=
RelativeGeometry
.
of
(
geom
);
igh
=
new
ImplicitGeometryHolder
(
ig
,
relGeo
);
}
}
else
{
}
else
{
logger
.
error
(
String
.
format
(
"Implicit geometry of GML-ID %s has no referenced geometry."
,
ig
.
getId
()));
}
return
igh
;
...
...
@@ -845,8 +828,8 @@ public class Citygml3FeatureMapper extends ObjectWalker {
private
List
<
ConcretePolygon
>
resolveCompositePolygon
(
CompositePolygon
comp
)
{
List
<
ConcretePolygon
>
polygons
=
new
ArrayList
<>();
for
(
ConcretePolygon
conc:
comp
.
getCompositeMembers
()){
if
(
conc
instanceof
CompositePolygon
recComp
){
for
(
ConcretePolygon
conc
:
comp
.
getCompositeMembers
())
{
if
(
conc
instanceof
CompositePolygon
recComp
)
{
polygons
.
addAll
(
resolveCompositePolygon
(
recComp
));
}
else
{
polygons
.
add
(
conc
);
...
...
@@ -884,7 +867,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
cdBuilding
.
addBuildingRoom
(
br
);
}
for
(
AbstractBuildingSubdivisionProperty
abs
:
gmlAb
.
getBuildingSubdivisions
())
{
for
(
AbstractBuildingSubdivisionProperty
abs
:
gmlAb
.
getBuildingSubdivisions
())
{
var
gmlABS
=
abs
.
getObject
();
if
(
gmlABS
==
null
)
{
continue
;
...
...
@@ -892,8 +875,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
if
(
gmlABS
instanceof
Storey
gmlStorey
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Storey
storey
=
mapBuildingStorey
(
gmlStorey
);
cdBuilding
.
addStorey
(
storey
);
}
else
if
(
gmlABS
instanceof
BuildingUnit
gmlBU
){
}
else
if
(
gmlABS
instanceof
BuildingUnit
gmlBU
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
BuildingUnit
bu
=
mapBuildingUnit
(
gmlBU
);
cdBuilding
.
addBuildingUnit
(
bu
);
}
...
...
@@ -928,7 +910,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
}
}
for
(
BuildingFurnitureProperty
bfProp
:
gmlAb
.
getBuildingFurniture
()){
for
(
BuildingFurnitureProperty
bfProp
:
gmlAb
.
getBuildingFurniture
())
{
var
gmlBf
=
bfProp
.
getObject
();
if
(
gmlBf
==
null
)
{
continue
;
...
...
@@ -942,7 +924,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
BuildingRoom
br
=
new
BuildingRoom
();
br
.
setGmlObject
(
gmlBr
);
mapAbstractUnoccupiedSpace
(
gmlBr
,
br
);
mapAbstractUnoccupiedSpace
(
gmlBr
,
br
);
SurfaceMapper
surfaceMapper
=
new
SurfaceMapper
(
polygonMap
,
references
,
vertexMap
,
config
);
for
(
AbstractSpaceBoundaryProperty
surfaceProp
:
gmlBr
.
getBoundaries
())
{
...
...
@@ -969,7 +951,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
Installation
bi
=
mapBuildingInstallation
(
gmlBi
);
br
.
addRoomInstallation
(
bi
);
}
for
(
BuildingFurnitureProperty
bfProp
:
gmlBr
.
getBuildingFurniture
()){
for
(
BuildingFurnitureProperty
bfProp
:
gmlBr
.
getBuildingFurniture
())
{
var
gmlHref
=
bfProp
.
getHref
();
if
(
gmlHref
==
null
)
{
continue
;
...
...
@@ -981,7 +963,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
return
br
;
}
private
BuildingRoomFurniture
mapBuildingFurniture
(
BuildingFurniture
gmlAF
){
private
BuildingRoomFurniture
mapBuildingFurniture
(
BuildingFurniture
gmlAF
)
{
BuildingRoomFurniture
bf
=
new
BuildingRoomFurniture
();
bf
.
setGmlObject
(
gmlAF
);
mapAbstractOccupiedSpace
(
gmlAF
,
bf
);
...
...
@@ -1006,7 +988,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
private
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Storey
mapBuildingStorey
(
Storey
gmlStorey
){
private
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Storey
mapBuildingStorey
(
Storey
gmlStorey
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Storey
storey
=
new
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
Storey
();
storey
.
setGmlObject
(
gmlStorey
);
mapAbstractSpace
(
gmlStorey
,
storey
);
...
...
@@ -1030,7 +1012,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
return
storey
;
}
private
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
BuildingUnit
mapBuildingUnit
(
BuildingUnit
gmlBU
){
private
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
BuildingUnit
mapBuildingUnit
(
BuildingUnit
gmlBU
)
{
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
BuildingUnit
bu
=
new
de
.
hft
.
stuttgart
.
citydoctor2
.
datastructure
.
BuildingUnit
();
bu
.
setGmlObject
(
gmlBU
);
mapAbstractSpace
(
gmlBU
,
bu
);
...
...
@@ -1065,13 +1047,6 @@ public class Citygml3FeatureMapper extends ObjectWalker {
}
}
public
static
void
parseId
(
AbstractGML
gml
,
GmlElement
gmlElement
)
{
String
id
=
gml
.
getId
();
if
(
id
!=
null
)
{
gmlElement
.
setGmlId
(
new
GmlId
(
id
));
}
}
private
Installation
mapBuildingInstallation
(
org
.
citygml4j
.
core
.
model
.
building
.
BuildingInstallation
gmlBi
)
{
Installation
bi
=
new
Installation
();
bi
.
setGmlObject
(
gmlBi
);
...
...
@@ -1194,7 +1169,7 @@ public class Citygml3FeatureMapper extends ObjectWalker {
for
(
Geometry
geom
:
co
.
getGeometries
())
{
KDTree
tree
=
new
KDTree
();
for
(
Polygon
poly
:
geom
.
getPolygons
())
{
if
(
poly
instanceof
CompositePolygon
){
if
(
poly
instanceof
CompositePolygon
)
{
continue
;
}
LinearRing
lr
=
poly
.
getExteriorRing
();
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/Citygml3GeometryMapper.java
View file @
02de0a22
...
...
@@ -18,26 +18,25 @@
*/
package
de.hft.stuttgart.citydoctor2.mapper.citygml3
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.locationtech.proj4j.BasicCoordinateTransform
;
import
org.locationtech.proj4j.ProjCoordinate
;
import
org.xmlobjects.gml.model.geometry.complexes.CompositeSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.*
;
import
org.xmlobjects.gml.model.geometry.primitives.Polygon
;
import
org.xmlobjects.gml.model.geometry.primitives.*
;
import
org.xmlobjects.gml.visitor.GeometryWalker
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing.LinearRingType
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
Citygml3GeometryMapper
extends
GeometryWalker
{
...
...
@@ -59,7 +58,7 @@ public class Citygml3GeometryMapper extends GeometryWalker {
public
void
visit
(
Polygon
polygon
)
{
parsePolygon
(
polygon
.
getId
(),
polygon
.
getExterior
(),
polygon
.
getInterior
());
if
(
polygon
.
getExterior
()
==
null
)
{
logger
.
warn
(
String
.
format
(
"No exterior: %s"
,
polygon
.
getId
()));
logger
.
warn
(
String
.
format
(
"No exterior: %s"
,
polygon
.
getId
()));
}
}
...
...
@@ -93,7 +92,7 @@ public class Citygml3GeometryMapper extends GeometryWalker {
}
@Override
public
void
visit
(
CompositeSurface
cs
){
public
void
visit
(
CompositeSurface
cs
)
{
if
(
cs
.
getSurfaceMembers
()
!=
null
&&
cs
.
getSurfaceMembers
().
isEmpty
())
{
logger
.
warn
(
"CompositeSurface %s is empty"
,
cs
.
getId
());
return
;
...
...
@@ -101,7 +100,7 @@ public class Citygml3GeometryMapper extends GeometryWalker {
List
<
SurfaceProperty
>
surfaceMember
=
cs
.
getSurfaceMembers
();
Citygml3GeometryMapper
recursiveMapper
=
new
Citygml3GeometryMapper
(
config
,
vertexMap
);
CompositePolygon
comp
=
new
CompositePolygon
();
if
(
cs
.
getId
()
==
null
){
if
(
cs
.
getId
()
==
null
)
{
comp
.
setGmlId
(
GmlId
.
generateId
());
}
else
{
comp
.
setGmlId
(
new
GmlId
(
cs
.
getId
()));
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/mapper/citygml3/SurfaceMapper.java
View file @
02de0a22
...
...
@@ -18,34 +18,20 @@
*/
package
de.hft.stuttgart.citydoctor2.mapper.citygml3
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
org.citygml4j.core.model.construction.AbstractConstructionSurface
;
import
org.citygml4j.core.model.construction.AbstractFillingSurface
;
import
org.citygml4j.core.model.construction.AbstractFillingSurfaceProperty
;
import
org.citygml4j.core.model.construction.CeilingSurface
;
import
org.citygml4j.core.model.construction.DoorSurface
;
import
org.citygml4j.core.model.construction.FloorSurface
;
import
org.citygml4j.core.model.construction.GroundSurface
;
import
org.citygml4j.core.model.construction.InteriorWallSurface
;
import
org.citygml4j.core.model.construction.OuterCeilingSurface
;
import
org.citygml4j.core.model.construction.OuterFloorSurface
;
import
org.citygml4j.core.model.construction.RoofSurface
;
import
org.citygml4j.core.model.construction.WallSurface
;
import
org.citygml4j.core.model.construction.WindowSurface
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.citygml4j.core.model.construction.*
;
import
org.citygml4j.core.model.core.AbstractThematicSurface
;
import
org.citygml4j.core.model.core.ClosureSurface
;
import
org.citygml4j.core.visitor.ObjectWalker
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurface
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.complexes.CompositeSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
SurfaceMapper
extends
ObjectWalker
{
...
...
@@ -86,7 +72,7 @@ public class SurfaceMapper extends ObjectWalker {
Opening
o
;
if
(
afs
instanceof
DoorSurface
ds
)
{
o
=
new
Opening
(
OpeningType
.
DOOR
,
SurfaceFeatureType
.
BUILDING
,
cdSurface
,
ds
);
}
else
if
(
afs
instanceof
WindowSurface
ws
){
}
else
if
(
afs
instanceof
WindowSurface
ws
)
{
o
=
new
Opening
(
OpeningType
.
WINDOW
,
SurfaceFeatureType
.
BUILDING
,
cdSurface
,
ws
);
}
else
{
o
=
new
Opening
(
OpeningType
.
UNKNOWN
,
SurfaceFeatureType
.
BUILDING
,
cdSurface
,
afs
);
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/utils/CityGmlUtils.java
View file @
02de0a22
...
...
@@ -18,30 +18,26 @@
*/
package
de.hft.stuttgart.citydoctor2.utils
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
de.hft.stuttgart.citydoctor2.datastructure.LinearRing
;
import
de.hft.stuttgart.citydoctor2.datastructure.Polygon
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
import
org.locationtech.proj4j.BasicCoordinateTransform
;
import
org.locationtech.proj4j.ProjCoordinate
;
import
org.xmlobjects.gml.model.geometry.aggregates.MultiSurface
;
import
org.xmlobjects.gml.model.geometry.complexes.CompositeSurface
;
import
org.xmlobjects.gml.model.geometry.primitives.AbstractRingProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.Shell
;
import
org.xmlobjects.gml.model.geometry.primitives.ShellProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.Solid
;
import
org.xmlobjects.gml.model.geometry.primitives.SurfaceProperty
;
import
org.xmlobjects.gml.model.geometry.primitives.*
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
java.util.ArrayList
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
/**
* Utility class dedicated to create CityGML4j datastructures.
*
* @author Matthias Betz
*
*/
public
final
class
CityGmlUtils
{
...
...
@@ -86,14 +82,14 @@ public final class CityGmlUtils {
for
(
ConcretePolygon
cd
:
cdMembers
)
{
surfaces
.
add
(
resolveCompositeMember
(
factory
,
cd
,
config
));
}
if
(
surfaces
.
isEmpty
()){
if
(
surfaces
.
isEmpty
())
{
return
null
;
}
return
new
CompositeSurface
(
surfaces
);
}
private
static
SurfaceProperty
resolveCompositeMember
(
GeometryFactory
factory
,
ConcretePolygon
cdPoly
,
ParserConfiguration
config
){
ParserConfiguration
config
)
{
if
(
cdPoly
instanceof
CompositePolygon
comp
)
{
return
new
SurfaceProperty
(
createGmlComposite
(
factory
,
comp
,
config
));
}
else
{
...
...
@@ -169,7 +165,7 @@ public final class CityGmlUtils {
for
(
Polygon
cdPoly
:
geom
.
getPolygons
())
{
if
(
cdPoly
instanceof
ConcretePolygon
conc
&&
conc
.
isCompositeMember
())
{
compositePolygons
.
add
(
conc
.
getPartOfComposite
());
}
else
if
(
cdPoly
instanceof
CompositePolygon
composite
)
{
}
else
if
(
cdPoly
instanceof
CompositePolygon
composite
)
{
compositePolygons
.
add
(
composite
);
}
else
if
(!
cdPoly
.
isLink
())
{
// is not part of a boundary surface
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/CityDoctorController.java
View file @
02de0a22
package
de.hft.stuttgart.citydoctor2.gui
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.StringJoiner
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.function.Function
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.gui.tree.*
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.model.core.CityModel
;
import
org.xml.sax.SAXParseException
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.Checker
;
import
de.hft.stuttgart.citydoctor2.check.ErrorId
;
import
de.hft.stuttgart.citydoctor2.check.ValidationConfiguration
;
import
de.hft.stuttgart.citydoctor2.check.error.SchematronError
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.exceptions.CityDoctorWriteException
;
import
de.hft.stuttgart.citydoctor2.gui.table.ErrorStat
;
import
de.hft.stuttgart.citydoctor2.gui.tree.*
;
import
de.hft.stuttgart.citydoctor2.mapper.citygml3.GMLValidationHandler
;
import
de.hft.stuttgart.citydoctor2.parser.CityGmlParseException
;
import
de.hft.stuttgart.citydoctor2.parser.CityGmlParser
;
import
de.hft.stuttgart.citydoctor2.parser.InvalidGmlFileException
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.parser.ProgressListener
;
import
de.hft.stuttgart.citydoctor2.parser.*
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
javafx.application.Platform
;
import
javafx.scene.chart.XYChart.Data
;
...
...
@@ -42,6 +21,15 @@ import javafx.scene.control.TreeItem;
import
javafx.scene.control.TreeView
;
import
javafx.stage.FileChooser
;
import
javafx.stage.FileChooser.ExtensionFilter
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.citygml4j.core.model.core.CityModel
;
import
org.xml.sax.SAXParseException
;
import
java.io.File
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicInteger
;
import
java.util.function.Function
;
public
class
CityDoctorController
{
...
...
@@ -150,7 +138,7 @@ public class CityDoctorController {
}
}
private
void
setupFeatureTabs
(){
private
void
setupFeatureTabs
()
{
mainWindow
.
setDisableOfFeatureTab
(
FeatureType
.
BUILDING
,
model
.
getBuildings
().
isEmpty
());
mainWindow
.
setDisableOfFeatureTab
(
FeatureType
.
VEGETATION
,
model
.
getVegetation
().
isEmpty
());
mainWindow
.
setDisableOfFeatureTab
(
FeatureType
.
TRANSPORTATION
,
model
.
getTransportation
().
isEmpty
());
...
...
@@ -298,7 +286,7 @@ public class CityDoctorController {
addMoreButtonIfNecessary
(
trans
,
transView
,
transRoot
,
transportationChunkNr
);
}
private
void
buildTunnel
(
List
<
Tunnel
>
tunnels
){
private
void
buildTunnel
(
List
<
Tunnel
>
tunnels
)
{
if
(
tunnels
.
isEmpty
())
{
return
;
}
...
...
@@ -575,7 +563,7 @@ public class CityDoctorController {
}
private
void
createBuildingStoreyNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
){
private
void
createBuildingStoreyNodes
(
Building
ab
,
TreeItem
<
Renderable
>
root
)
{
List
<
Storey
>
storeys
=
ab
.
getBuildingStoreys
();
if
(
storeys
.
isEmpty
())
{
return
;
...
...
@@ -1087,7 +1075,7 @@ public class CityDoctorController {
transportationChunkNr
);
}
public
void
fillTreeViewWithErrorTunnel
(){
public
void
fillTreeViewWithErrorTunnel
()
{
if
(
model
==
null
)
{
return
;
}
...
...
@@ -1264,7 +1252,7 @@ public class CityDoctorController {
return
currentConfig
;
}
public
void
setOriginBB
(
BoundingBox
origin
){
public
void
setOriginBB
(
BoundingBox
origin
)
{
this
.
originBB
=
origin
;
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/MainToolBar.java
View file @
02de0a22
package
de.hft.stuttgart.citydoctor2.gui
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
import
de.hft.stuttgart.citydoctor2.utils.Localization
;
import
javafx.fxml.FXML
;
import
javafx.fxml.FXMLLoader
;
import
javafx.scene.control.Button
;
import
javafx.scene.control.Tab
;
import
javafx.scene.control.TabPane
;
import
javafx.scene.control.ToggleButton
;
import
javafx.scene.control.Tooltip
;
import
javafx.scene.control.TreeView
;
import
javafx.scene.control.*
;
import
javafx.scene.image.Image
;
import
javafx.scene.image.ImageView
;
import
javafx.scene.layout.HBox
;
import
javafx.stage.Stage
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
java.io.IOException
;
import
java.io.InputStream
;
public
class
MainToolBar
{
...
...
@@ -320,7 +314,7 @@ public class MainToolBar {
});
}
private
void
setupResetCameraButton
(){
private
void
setupResetCameraButton
()
{
resetCameraBtn
.
setDisable
(
true
);
resetCameraBtn
.
setTooltip
(
new
Tooltip
(
Localization
.
getText
(
"MainToolBar.resetCamera"
)));
resetCameraBtn
.
setOnAction
(
ae
->
mainWindow
.
resetCamera
());
...
...
@@ -336,7 +330,8 @@ public class MainToolBar {
renderer
.
hideRoofs
();
}
else
{
renderer
.
showRoofs
();
}});
}
});
}
...
...
@@ -376,7 +371,7 @@ public class MainToolBar {
return
lod4Btn
;
}
public
ToggleButton
getHideRoofBtn
(){
public
ToggleButton
getHideRoofBtn
()
{
return
hideRoofBtn
;
}
...
...
@@ -388,7 +383,7 @@ public class MainToolBar {
return
saveBtn
;
}
public
Button
getResetCameraBtn
(){
public
Button
getResetCameraBtn
()
{
return
resetCameraBtn
;
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/MainWindow.java
View file @
02de0a22
package
de.hft.stuttgart.citydoctor2.gui
;
import
java.awt.image.BufferedImage
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.util.List
;
import
java.util.Locale
;
import
java.util.Optional
;
import
java.util.Timer
;
import
java.util.TimerTask
;
import
javax.imageio.ImageIO
;
import
javafx.scene.chart.NumberAxis
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.CityDoctorValidation
;
import
de.hft.stuttgart.citydoctor2.check.ValidationConfiguration
;
import
de.hft.stuttgart.citydoctor2.datastructure.BoundingBox
;
...
...
@@ -35,35 +19,9 @@ import javafx.beans.value.ChangeListener;
import
javafx.embed.swing.SwingFXUtils
;
import
javafx.fxml.FXML
;
import
javafx.fxml.FXMLLoader
;
import
javafx.scene.AmbientLight
;
import
javafx.scene.Group
;
import
javafx.scene.Node
;
import
javafx.scene.PerspectiveCamera
;
import
javafx.scene.Scene
;
import
javafx.scene.SceneAntialiasing
;
import
javafx.scene.SubScene
;
import
javafx.scene.control.Alert
;
import
javafx.scene.*
;
import
javafx.scene.control.*
;
import
javafx.scene.control.Alert.AlertType
;
import
javafx.scene.control.Button
;
import
javafx.scene.control.ButtonType
;
import
javafx.scene.control.ComboBox
;
import
javafx.scene.control.ContextMenu
;
import
javafx.scene.control.Label
;
import
javafx.scene.control.ListCell
;
import
javafx.scene.control.ListView
;
import
javafx.scene.control.MenuItem
;
import
javafx.scene.control.ProgressBar
;
import
javafx.scene.control.RadioButton
;
import
javafx.scene.control.SplitPane
;
import
javafx.scene.control.Tab
;
import
javafx.scene.control.TabPane
;
import
javafx.scene.control.TextArea
;
import
javafx.scene.control.TextField
;
import
javafx.scene.control.ToggleButton
;
import
javafx.scene.control.ToggleGroup
;
import
javafx.scene.control.ToolBar
;
import
javafx.scene.control.TreeItem
;
import
javafx.scene.control.TreeView
;
import
javafx.scene.image.Image
;
import
javafx.scene.image.ImageView
;
import
javafx.scene.image.WritableImage
;
...
...
@@ -78,6 +36,15 @@ import javafx.scene.layout.Priority;
import
javafx.scene.paint.Color
;
import
javafx.scene.transform.Rotate
;
import
javafx.stage.Stage
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
javax.imageio.ImageIO
;
import
java.awt.image.BufferedImage
;
import
java.io.File
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
java.util.*
;
public
class
MainWindow
extends
Application
{
...
...
@@ -673,7 +640,7 @@ public class MainWindow extends Application {
});
}
public
void
setDisableOfFeatureTab
(
FeatureType
featureType
,
boolean
value
){
public
void
setDisableOfFeatureTab
(
FeatureType
featureType
,
boolean
value
)
{
switch
(
featureType
)
{
case
BUILDING:
buildingsTab
.
setDisable
(
value
);
...
...
@@ -708,7 +675,7 @@ public class MainWindow extends Application {
}
}
public
void
activateAllTabs
(){
public
void
activateAllTabs
()
{
buildingsTab
.
setDisable
(
false
);
vegetationTab
.
setDisable
(
false
);
transportationTab
.
setDisable
(
false
);
...
...
@@ -921,7 +888,7 @@ public class MainWindow extends Application {
alignNorthArrow
();
}
if
(
me
.
getButton
()
==
MouseButton
.
SECONDARY
)
{
double
translationSpeed
=
Math
.
abs
(
camera
.
getTranslateZ
())
/
1000
;
double
translationSpeed
=
Math
.
abs
(
camera
.
getTranslateZ
())
/
1000
;
double
deltaX
=
me
.
getScreenX
()
-
dragX
;
double
deltaY
=
me
.
getScreenY
()
-
dragY
;
dragX
=
me
.
getScreenX
();
...
...
@@ -942,27 +909,27 @@ public class MainWindow extends Application {
cameraXRotation
.
setAngle
(
cameraYRot
);
}
public
void
alignNorthArrow
(){
public
void
alignNorthArrow
()
{
double
absRotZ
=
cameraZRotation
.
getAngle
()
-
360
*
Math
.
floor
(
cameraZRotation
.
getAngle
()
/
360
);
double
absRotX
=
cameraXRotation
.
getAngle
()
-
360
*
Math
.
floor
(
cameraXRotation
.
getAngle
()
/
360
);
double
northRot
;
if
(
80
<=
absRotX
&&
absRotX
<=
260
){
northRot
=
360
-
absRotZ
;
if
(
northArrow
.
getImage
()
!=
north
){
if
(
80
<=
absRotX
&&
absRotX
<=
260
)
{
northRot
=
360
-
absRotZ
;
if
(
northArrow
.
getImage
()
!=
north
)
{
northArrow
.
setImage
(
north
);
}
}
else
{
//Camera is below horizon line -> flip north arrow horizontally
northRot
=
(
absRotZ
+
180
)
%
360
;
if
(
northArrow
.
getImage
()
!=
northFlip
){
northRot
=
(
absRotZ
+
180
)
%
360
;
if
(
northArrow
.
getImage
()
!=
northFlip
)
{
northArrow
.
setImage
(
northFlip
);
}
}
northArrow
.
setRotate
(
northRot
);
}
public
void
resetCamera
(){
public
void
resetCamera
()
{
cameraXRot
=
CAMERA_INITIAL_X_ANGLE
;
cameraYRot
=
CAMERA_INITIAL_Y_ANGLE
;
cameraZRotation
.
setAngle
(
cameraXRot
);
...
...
@@ -1092,15 +1059,15 @@ public class MainWindow extends Application {
return
mainToolBar
.
getWorldBtn
();
}
public
Button
getResetCameraBtn
(){
public
Button
getResetCameraBtn
()
{
return
mainToolBar
.
getResetCameraBtn
();
}
public
ToggleButton
getHideRoofBtn
(){
public
ToggleButton
getHideRoofBtn
()
{
return
mainToolBar
.
getHideRoofBtn
();
}
public
ImageView
getNorthArrow
(){
public
ImageView
getNorthArrow
()
{
return
northArrow
;
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java
View file @
02de0a22
package
de.hft.stuttgart.citydoctor2.gui
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Set
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
de.hft.stuttgart.citydoctor2.check.CheckError
;
import
de.hft.stuttgart.citydoctor2.check.Checkable
;
import
de.hft.stuttgart.citydoctor2.datastructure.*
;
import
de.hft.stuttgart.citydoctor2.gui.filter.ViewFilter
;
import
de.hft.stuttgart.citydoctor2.gui.tree.EdgeNode
;
import
de.hft.stuttgart.citydoctor2.gui.tree.ErrorItemVisitor
;
import
de.hft.stuttgart.citydoctor2.gui.tree.ErrorNode
;
import
de.hft.stuttgart.citydoctor2.gui.tree.LinearRingNode
;
import
de.hft.stuttgart.citydoctor2.gui.tree.PolygonNode
;
import
de.hft.stuttgart.citydoctor2.gui.tree.Renderable
;
import
de.hft.stuttgart.citydoctor2.gui.tree.VertexNode
;
import
de.hft.stuttgart.citydoctor2.gui.tree.*
;
import
de.hft.stuttgart.citydoctor2.math.Triangle3d
;
import
javafx.application.Platform
;
import
javafx.scene.control.TreeItem
;
import
javafx.scene.paint.Color
;
import
javafx.scene.shape.CullFace
;
import
javafx.scene.shape.DrawMode
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
java.io.IOException
;
import
java.util.*
;
public
class
Renderer
{
...
...
@@ -99,8 +88,8 @@ public class Renderer {
});
roofFilter
=
new
ViewFilter
()
{
@Override
public
boolean
allowedToUse
(
CityObject
co
,
Geometry
geom
){
if
(!
this
.
isEnabled
()){
public
boolean
allowedToUse
(
CityObject
co
,
Geometry
geom
)
{
if
(!
this
.
isEnabled
())
{
return
true
;
}
return
this
.
useGeometry
(
co
,
geom
);
...
...
@@ -108,7 +97,7 @@ public class Renderer {
@Override
public
boolean
useGeometry
(
CityObject
co
,
Geometry
geom
)
{
if
(
co
instanceof
BoundarySurface
bs
){
if
(
co
instanceof
BoundarySurface
bs
)
{
return
bs
.
getType
()
!=
BoundarySurfaceType
.
ROOF
;
}
return
true
;
...
...
@@ -174,14 +163,14 @@ public class Renderer {
}
}
public
void
hideRoofs
(){
public
void
hideRoofs
()
{
roofFilter
.
setEnable
(
true
);
if
(
refresher
!=
null
)
{
refresher
.
run
();
}
}
public
void
showRoofs
(){
public
void
showRoofs
()
{
roofFilter
.
setEnable
(
false
);
if
(
refresher
!=
null
)
{
refresher
.
run
();
...
...
@@ -221,13 +210,13 @@ public class Renderer {
}
for
(
BuildingRoom
br
:
b
.
getBuildingRooms
())
{
addPolygons
(
br
,
polygons
);
for
(
BoundarySurface
bs
:
br
.
getBoundarySurfaceList
()){
for
(
BoundarySurface
bs
:
br
.
getBoundarySurfaceList
())
{
addPolygons
(
bs
,
polygons
);
}
}
for
(
BuildingRoomFurniture
brf
:
b
.
getBuildingRoomFurnitureList
()){
for
(
BuildingRoomFurniture
brf
:
b
.
getBuildingRoomFurnitureList
())
{
addPolygons
(
brf
,
polygons
);
for
(
BoundarySurface
bs
:
brf
.
getBoundarySurfaceList
()){
for
(
BoundarySurface
bs
:
brf
.
getBoundarySurfaceList
())
{
addPolygons
(
bs
,
polygons
);
}
}
...
...
@@ -271,7 +260,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
AbstractRoom
room
){
public
void
render
(
AbstractRoom
room
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupRoomPolygons
=
setupRoomPolygons
(
room
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupRoomPolygons
));
...
...
@@ -296,7 +285,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
AbstractFurniture
furniture
){
public
void
render
(
AbstractFurniture
furniture
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupFurniturePolygons
=
setupFurniturePolygons
(
furniture
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupFurniturePolygons
));
...
...
@@ -321,7 +310,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
Storey
storey
){
public
void
render
(
Storey
storey
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupStoreyPolygons
=
setupStoreyPolygons
(
storey
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupStoreyPolygons
));
...
...
@@ -346,7 +335,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
BuildingUnit
buildingUnit
){
public
void
render
(
BuildingUnit
buildingUnit
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupBuildingUnitPolgons
=
setupBuildingUnitPolygons
(
buildingUnit
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupBuildingUnitPolgons
));
...
...
@@ -371,7 +360,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
Tunnel
tunnel
){
public
void
render
(
Tunnel
tunnel
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupTunnelPolygons
=
setupTunnelPolygons
(
tunnel
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupTunnelPolygons
));
...
...
@@ -401,13 +390,13 @@ public class Renderer {
}
for
(
TunnelHollow
th
:
tunnel
.
getTunnelHollows
())
{
addPolygons
(
th
,
polygons
);
for
(
BoundarySurface
bs
:
th
.
getBoundarySurfaceList
()){
for
(
BoundarySurface
bs
:
th
.
getBoundarySurfaceList
())
{
addPolygons
(
bs
,
polygons
);
}
}
for
(
TunnelFurniture
tf
:
tunnel
.
getTunnelFurnitureList
()){
for
(
TunnelFurniture
tf
:
tunnel
.
getTunnelFurnitureList
())
{
addPolygons
(
tf
,
polygons
);
for
(
BoundarySurface
bs
:
tf
.
getBoundarySurfaceList
()){
for
(
BoundarySurface
bs
:
tf
.
getBoundarySurfaceList
())
{
addPolygons
(
bs
,
polygons
);
}
}
...
...
@@ -551,7 +540,7 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
GenericCityObject
gco
){
public
void
render
(
GenericCityObject
gco
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupGenericCityObjectPolygons
=
setupGenericCityObjectPolygons
(
gco
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupGenericCityObjectPolygons
));
...
...
@@ -669,7 +658,7 @@ public class Renderer {
private
void
addGeometryDataToView
(
Geometry
geom
)
{
for
(
Polygon
p
:
geom
.
getPolygons
())
{
if
(
p
instanceof
CompositePolygon
){
if
(
p
instanceof
CompositePolygon
)
{
continue
;
}
addPolygonToView
(
p
);
...
...
@@ -823,7 +812,7 @@ public class Renderer {
renderCityObjects
(
water
,
Color
.
LIGHTSKYBLUE
);
}
public
void
renderCityFurniture
(
List
<
CityFurniture
>
cityFurniture
){
public
void
renderCityFurniture
(
List
<
CityFurniture
>
cityFurniture
)
{
errorUpdater
=
null
;
refresher
=
()
->
{
Platform
.
runLater
(()
->
{
...
...
@@ -915,7 +904,7 @@ public class Renderer {
refresher
.
run
();
}
public
void
renderTunnels
(
List
<
Tunnel
>
objects
){
public
void
renderTunnels
(
List
<
Tunnel
>
objects
)
{
errorUpdater
=
null
;
refresher
=
()
->
{
Platform
.
runLater
(()
->
{
...
...
@@ -960,7 +949,7 @@ public class Renderer {
}
for
(
BuildingRoom
br
:
ab
.
getBuildingRooms
())
{
addPolygons
(
br
,
polygons
);
for
(
BoundarySurface
bs
:
br
.
getBoundarySurfaceList
()){
for
(
BoundarySurface
bs
:
br
.
getBoundarySurfaceList
())
{
addPolygons
(
bs
,
polygons
);
}
}
...
...
@@ -972,7 +961,8 @@ public class Renderer {
}
}
public
void
collectTunnelPolygons
(
Set
<
ConcretePolygon
>
polygons
,
AbstractTunnel
at
)
{}
public
void
collectTunnelPolygons
(
Set
<
ConcretePolygon
>
polygons
,
AbstractTunnel
at
)
{
}
private
void
collectCityFurniture
(
Set
<
ConcretePolygon
>
polygons
,
CityFurniture
cf
)
{
addPolygons
(
cf
,
polygons
);
...
...
Prev
1
2
3
4
Next
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