README.md 5.22 KB
Newer Older
1
2
3
4
# CityDoctor2 Extensions
Extension modules to the core functionality of CityDoctor2. 

# Loading
Riegel's avatar
Riegel committed
5
6
 
The extension modules can be loaded into Maven by two methods:
7

Riegel's avatar
Riegel committed
8
9
10
11
1. Adjusting the pom.xml file of CityDoctorParent by moving the respective modules out of the comment block in the module list (found near the end of the file).
2. Importing the module with Maven.

The CityDoctorGUI extension module is loaded by default.
12
13
14

# Building

Riegel's avatar
Riegel committed
15
16
17
If a module was loaded by including it in the module list of CityDoctorParent, Maven will
automatically build it while building CityDoctor2.  
If a module is imported with Maven, it needs to be built directly with Maven.
18

Riegel's avatar
Riegel committed
19
After building, the jars can be found in the **/target** subdirectory of each respective extension module's directory.
20
21
22
23
24

# Module Information

## CityDoctorGUI

Riegel's avatar
Riegel committed
25
26
The GUI module offers a graphical user interface for CityDoctor2, including a model viewer, allowing the visual
inspection of validation results and detected errors.
27

28
### View-Plugins
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

The GUI is expandable via plugins, enabling the creation of views for custom functionalities or extensions of the CityDoctor2 core.  
Custom views can be created by extending the Abstract class `View` of the CityDoctorGUI and need to be registered by calling
`ViewRegistration.registerView(View view);` before starting the GUI.

### Usage

> ⚠ CityDoctorGUI requires a JDK/JRE containing the JavaFX library to run.  

Prebuilt binaries for the GUI are available in [CityDoctorReleases](https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctorreleases).
After extracting the archive the GUI can be started with **start.bat**.

Binaries can be built with Maven using the create-binaries profile from the CityDoctorParent directory:  
```
mvn install -P create-binaries
```   

Lastly, the GUI can also be started by calling `MainWindow.main(args[])`.

48
---
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63

## CityDoctorHealer

CityDoctorHealer implements functionalities for the automated repair of geometries containing errors.
The healer uses naive approaches to fix geometrical errors, and thus, it cannot be guaranteed that semantical
correctness is maintained after the healing process.  


### Usage

Usage of CityDoctorHealer is similar to [CityDoctor](https://transfer.hft-stuttgart.de/gitlab/citydoctor/citydoctor2/-/tree/dev_GUI#usage).
An example start command looks like this:
```
java -classpath libs/*;plugins/*;CityDoctorHealer-<version>.jar de.hft.stuttgart.citydoctor2.CityDoctorHealer -in <path-to-gml-file>.gml -config <path-to-validation-config>.yml -xmlReport <path-to-xml-output>.xml -pdfReport <path-to-pdf-output>.pdf -out <path-to-output-gml>.gml
```
64
65
Note: Unlike CityDoctor core, the _-out_ argument is required.  
The -xml-output and -pdfReport arguments are still optional. 
66
67
68
69

To prevent infinite loops the `Healer` class has a limit for the number of healing iterations (default: 200). This limit
can be changed by calling `Healer.setNumberOfIterations(int limit)`. 

70
71
---

Riegel's avatar
Riegel committed
72
73
74
75
76
77
78
79
80
81
82
83
## CityDoctorHealerGUI


CityDoctorGUI-view for CityDoctorHealer. Allows fine control over the automated healing steps, including a preview of the
result of each healing step.

### Usage

See [CityDoctorGUI View-plugins](#view-plugins)

---

84
85
86
87
88
## CityDoctorHealerGenetic

CityDoctorHealerGenetic uses a genetical algorithm to establish an optimal CityDoctorHealer healing-plan for geometries containing errors.

### Usage
Riegel's avatar
Riegel committed
89
90
> ⚠ This module is currently not being developed and in a prototypical state. As of CityDoctor2 version 3.15.0, this module is
> still functional, but may break at any point.
91
92
93

Usage is nearly identical to CityDoctorHealer, only requiring changing the classpath to the HealerGenetic jar.

Riegel's avatar
Riegel committed
94
A View-Plugin for CityDoctorGUI is included.
95

96
97
---

Riegel's avatar
Riegel committed
98
## CityDoctorAutoPro
99

100

Riegel's avatar
Riegel committed
101
102
The AutoPro (short for automated processing) module is an interface for the conversion of the internal data model to a C++
representation, to allow use of advanced functionalities of CGAL with CityDoctor2.
103
104
105

### Usage

Riegel's avatar
Riegel committed
106
107
108
109
110
111
> ⚠ The AutoPro module is deprecated and will be removed in a future release, once the CGAL functionalities have been ported to Java.

AutoPro requires a collection of .dll-files to run, some of which are not available as FOSS and thus cannot be
distributed with this project.  
Access to the collection, or information about the required .dll-files, can be granted upon request for a valid reason.
Contact a Maintainer of this project for further information in this regard.
112

113
---
114
115
116

## CityDoctorWebService

117
Contains a web service implementation for CityDoctor2.
118
119
120

### Usage
> ⚠ This module has been abandoned. As of writing the module is still functional, but it may break at any time.
Riegel's avatar
Riegel committed
121
>Issues, bug reports and suggestions for this module will not be processed.
122

123
124
125
126
127
> ⚠ CityDoctorWebservice requires connection to a PostgreSQL Server. Connection parameters need to be set in the
pgpass.conf file found in the /DBScripts directory.
> 
The PostgreSQL Server needs to contain a database called "CityDoctorDB" with a schema called "citydoctordb".  
The required tables will be automatically created by the web service if they're missing.
128

129
130
To run the web service, build the module and [deploy CityDoctorWebService.war](https://tomcat.apache.org/tomcat-9.0-doc/deployer-howto.html)
to a Tomcat server (version 8 or 9).
131

132
---
133
134
135
136


## License
[LGPL](http://www.gnu.org/licenses/lgpl-3.0.de.html)