Commit 709cd9cd authored by Rushikesh Padsala's avatar Rushikesh Padsala
Browse files

Merge branch 'beta7' into 'master'

Initial commit

See merge request energy-ade/energy-ade-2-3dcitydb!1
parents f37efb20 31a9fd12
.gradle
build/
!gradle/wrapper/gradle-wrapper.jar
!**/src/main/**/build/
!**/src/test/**/build/
### IntelliJ IDEA ###
.idea/modules.xml
.idea/jarRepositories.xml
.idea/compiler.xml
.idea/libraries/
*.iws
*.iml
*.ipr
out/
!**/src/main/**/out/
!**/src/test/**/out/
### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/
### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
### VS Code ###
.vscode/
### Mac OS ###
.DS_Store
\ No newline at end of file
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
energy-ade2-citydb
\ No newline at end of file
<component name="ArtifactManager">
<artifact type="jar" name="energy-ade2-citydb:jar">
<output-path>$PROJECT_DIR$/out/artifacts/energy_ade2_citydb_jar</output-path>
<root id="archive" name="energy-ade2-citydb.jar">
<element id="module-output" name="energy-ade2-citydb.main" />
<element id="module-output" name="DigiTwins4PEDs.main" />
<element id="module-output" name="DigiTwins4PEDs.energy-ade-samples.main" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-juli/10.1.29/e98eedfa681bbf3b53d409567613cef32b6092c3/tomcat-juli-10.1.29.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/xsom/2.3.2/157dc2bf479c524d63a214e8fe9888f45a667db/xsom-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.7.1/6f81b3c053433a8a40a378d2b4f056c5c31e50ff/junit-jupiter-params-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.oracle.sdoapi/sdoapi/23.5.0.24.07/b9edd683fb98e3d00a2732e9e96b2dde14e29f6f/sdoapi-23.5.0.24.07.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.16.0/3eb54effe40946dfb06dc5cd6c7ce4116cd51ea4/commons-lang3-3.16.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools.ogc/net.opengis.ows/31.3/949e4c83a8ccae7142e4e5962dcd069c0c2b5258/net.opengis.ows-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/txw2/2.3.2/ce5be7da2e442c25ec14c766cb60cb802741727b/txw2-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-io/commons-io/2.16.1/377d592e740dc77124e0901291dbfaa6810a200e/commons-io-2.16.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.common/2.15.0/e0f1608a9855651e899d609b106ae78f903a2f04/org.eclipse.emf.common-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tika/tika-core/2.9.2/796a21391780339e3d4862626339b49df170024e/tika-core-2.9.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.locationtech.jts/jts-core/1.20.0/25b72c9548a328cb1aea8a6b89d710a31ade5403/jts-core-1.20.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-launcher/1.7.1/fba1a549c3b51882a912eb454cad924a573d0df4/junit-platform-launcher-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.media/jai_core/1.1.3/b179d2efb1174658483e8b41bf4ac9d2eb5de438/jai_core-1.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-epsg-wkt/31.3/71222b6e4900a9a3599f9f670ccfcb29dc065b83/gt-epsg-wkt-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-core/5.5.0/499325bfd1e59f2914c774a4cf0dfbdad771821b/impexp-core-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.activation/jakarta.activation-api/1.2.1/562a587face36ec7eff2db7f2fc95425c6602bc1/jakarta.activation-api-1.2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5/5.1.3/d1638d1e5f2793f187d4144c702a93524ba6fd3b/httpcore5-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/j3d-core-utils/1.5.2/b4771c3c5a4f7088e27171ead7f20f9fbe07bc18/j3d-core-utils-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.xmlresolver/xmlresolver/5.2.2/5624ede8b8e374979194acaae9f34cff23b62b3e/xmlresolver-5.2.2-data.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/swingx-all/1.6.10/21ce028e26ff0259d50c4c66aa80a96ac5fccc00/swingx-all-1.6.10.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.10.0/d533ff2c286eaf963566f92baf5f8a06628d2609/junit-platform-commons-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.istack/istack-commons-runtime/3.0.8/d6a97364045aa6b99bf2d3c566a3f98599c2d296/istack-commons-runtime-3.0.8.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-commons/1.7.1/7c49f0074842d07f4335de2389d624a7437d1407/junit-platform-commons-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.7.1/d276a968c57f5d60a421dedd1f8b6ca2fae09e86/junit-platform-engine-1.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.univocity/univocity-parsers/2.9.1/81827d186e42129f23c3f1e002b757ad4b4e769/univocity-parsers-2.9.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf-swingx/3.5.1/302fc178747b5dc0ef6e3916756b7f03ad87448d/flatlaf-swingx-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.vertical-blank/sql-formatter/2.0.5/96c4c0e7c0a5be639ae8f56ca812410b1a00f5d2/sql-formatter-2.0.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.7.1/7fcfa59c5533abb41f86b1408960737eeaf1f49f/junit-jupiter-engine-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/info.picocli/picocli/4.7.6/77c2cb87814b6a03d431fc856024a9f8ff605ad4/picocli-4.7.6.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-codec/commons-codec/1.17.1/973638b7149d333563584137ebf13a691bb60579/commons-codec-1.17.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-client-gui/5.5.0/9ae31b0777ce3009d3625ebc86672e4bec726a70/impexp-client-gui-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-metadata/31.3/1a9a85d27dbc53d479450203aae6ff678859ffed/gt-metadata-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-api/31.3/d12331559725dcc0758a0429c133873df3e99c42/gt-api-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.27.0/91b2c29d8a6148b5e2e4930f070d4840e2e48e34/error_prone_annotations-2.27.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/tech.uom.lib/uom-lib-common/2.1/17d8a4458116466b004976f3c7834be185cffb86/uom-lib-common-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ejml/ejml-core/0.41/92ac2bee332a5697c42e576b94d563ba8c25877c/ejml-core-0.41.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.7.1/a4a80ea9b0cca47781edcf9f2d4f1f4f7ce9436e/junit-jupiter-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/3dcitydb-ade-citygml4j/1.2.0/fe169ce5b14e28eba49b12899940722d4c4ce94a/3dcitydb-ade-citygml4j-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jvnet.staxex/stax-ex/1.8.1/78011e483a21102fb4858f3e8f269a677e50aa23/stax-ex-1.8.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf/3.5.1/8e4295f9ba5756736fa60a3a567fd9cd8840594f/flatlaf-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.oracle.database.jdbc/ojdbc11/23.5.0.24.07/6e07003d57be5e280ef0492209e20fa27edec5b6/ojdbc11-23.5.0.24.07.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/it.geosolutions.jgridshift/jgridshift-core/1.3/314702a7b6e634e1c74589983a6762974b9c51c8/jgridshift-core-1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/swingx-ws/1.1.6/3b49e4b6ab3bd66ee753765539c89abe7ecedec7/swingx-ws-1.1.6.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-compress/1.27.1/a19151084758e2fbb6b41eddaa88e7b8ff4e6599/commons-compress-1.27.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.fastinfoset/FastInfoset/1.2.16/4eb6a0adad553bf759ffe86927df6f3b848c8bea/FastInfoset-1.2.16.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/3.42.0/638ec33f363a94d41a4f03c3e7d3dcfba64e402d/checker-qual-3.42.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.10.0/2fe4ba3d31d5067878e468c96aa039005a9134d3/junit-jupiter-api-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.3.0/152ea56b3a72f655d4fd677fc0ef2596c3dd5e6e/opentest4j-1.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.sun.xml.bind.external/relaxng-datatype/2.3.2/d202e2c8bdd0a5286490260e311f0df1955f4dbf/relaxng-datatype-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.xmlresolver/xmlresolver/5.2.2/152378e04ba01898847bf38fad5023c7d52f0c9d/xmlresolver-5.2.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.tomcat/tomcat-jdbc/10.1.29/76f4a58c65976a6340981ca5438f8f0ed7e3913e/tomcat-jdbc-10.1.29.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.postgis/postgis-geometry/2024.1.0/5796f9c7af460346155e7882d70941ac88779a7c/postgis-geometry-2024.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-api/5.7.1/a7261dff44e64aea7f621842eac5977fd6d2412d/junit-jupiter-api-5.7.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-referencing/31.3/c61240c5396e0e1828ea6b35427570e6741ccbf6/gt-referencing-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.gson/gson/2.11.0/527175ca6d81050b53bdd4c457a6d6e017626b0e/gson-2.11.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-config/5.5.0/76dde140997188d79a178bf200ab015e3ff34234/impexp-config-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/2.0.13/80229737f704b121a318bba5d5deacbcf395bc77/slf4j-api-2.0.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/texture-atlas-creator/1.5.0/d452d9b768b88dfa4cbb8faca93fb7fbff4d166a/texture-atlas-creator-1.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.github.weisj/jsvg/1.4.0/3f057f61a79b63015dcdb3ae15f935951e4bedd9/jsvg-1.4.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.formdev/flatlaf-extras/3.5.1/42cf9ed86d4ae9d95a6013db792c8f2df642ca56/flatlaf-extras-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.ecore/2.15.0/ccfc09c8b6a0d4fadde09216d8a07678d38998de/org.eclipse.emf.ecore-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/javax.measure/unit-api/2.1.3/76e3c98cc101cdb8ebf437e4327e8de4ab92613/unit-api-2.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.1/7ea550039f115fcc40990925490b8ebd4b93024a/apiguardian-api-1.1.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citygml4j/citygml4j/2.13.0/e08fae3557b5e0d51bd4882c9e87656248de277a/citygml4j-2.13.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/vecmath/1.5.2/79846ba34cbd89e2422d74d53752f993dcc2ccaf/vecmath-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/si.uom/si-quantity/2.1/5617d2cf30898ffcc760807009fe947483bd867b/si-quantity-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.geographiclib/GeographicLib-Java/1.49/7ff2164e69fa04e1ef2ca5079e1cee298a936ea1/GeographicLib-Java-1.49.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.core5/httpcore5-h2/5.1.3/4664b59b09f5ee008e37a963bbb92f4068e91696/httpcore5-h2-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-vis-plugin/5.5.0/b1e50511d3a5bf50e5dd174b89454719640343ee/impexp-vis-plugin-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.platform/junit-platform-engine/1.10.0/276c4edcf64fabb5a139fa7b4f99330d7a93b804/junit-platform-engine-1.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.postgresql/postgresql/42.7.4/264310fd7b2cd76738787dc0b9f7ea2e3b11adc1/postgresql-42.7.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-pool/commons-pool/1.5.4/75b6e20c596ed2945a259cea26d7fadd298398e6/commons-pool-1.5.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.sf.saxon/Saxon-HE/12.5/57c007520e2879387b8d13d0a512e9566eeffa73/Saxon-HE-12.5.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/net.postgis/postgis-jdbc/2024.1.0/4d369c43c20784bf61a3a2e52ec939dab3e1a2cc/postgis-jdbc-2024.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.eclipse.emf/org.eclipse.emf.ecore.xmi/2.15.0/9aa1a584be1df1eb0ef8fae7123784af6e51f47a/org.eclipse.emf.ecore.xmi-2.15.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-util/5.5.0/df531278608e84dee60df5d5836f818e7798708e/impexp-util-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-params/5.10.0/9041c7365495a897a64782ea5a6fdb99dab1814e/junit-jupiter-params-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citygml4j/citygson/1.2.0/e06d33cb006b87d0951d1dab3e671686af7295ba/citygson-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools/gt-epsg-extension/31.3/eee976608c4fa889f07830cc0c59f1d7c2a9145c/gt-epsg-extension-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/impexp-client-cli/5.5.0/a5d3334b4524edf16c93f7277e730483551e7a9f/impexp-client-cli-5.5.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/si.uom/si-units/2.1/7e812192ff1abbef6c79123249840c42b4e145d4/si-units-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/java3d/j3d-core/1.5.2/fc4d1da847ea5c4526bac4af90faafcbe60ba3a8/j3d-core-1.5.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.citydb/sqlbuilder/2.3.0/8106eb1cc6f51e720eef07ad2928069684915718/sqlbuilder-2.3.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter/5.10.0/8fea1d9c58b2156f1b998f2f18da04bc9e087f74/junit-jupiter-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.xml.bind/jakarta.xml.bind-api/2.3.2/8d49996a4338670764d7ca4b85a1c4ccf7fe665d/jakarta.xml.bind-api-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.junit.jupiter/junit-jupiter-engine/5.10.0/90587932d718fc51a48112d33045a18476c542ad/junit-jupiter-engine-5.10.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.geotools.ogc/org.w3.xlink/31.3/ce8814c9858f554d7819d4a835a6a371a693604/org.w3.xlink-31.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fifesoft/rsyntaxtextarea/3.5.1/b862174232441c6ed6361765ffc8b7e4584ca208/rsyntaxtextarea-3.5.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/jakarta.annotation/jakarta.annotation-api/1.3.4/a858ec3f0ebd2b8d855c1ddded2cde9b381b0517/jakarta.annotation-api-1.3.4.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apiguardian/apiguardian-api/1.1.0/fc9dff4bb36d627bdc553de77e1f17efd790876c/apiguardian-api-1.1.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/systems.uom/systems-common/2.1/a173cc6f1fedc8b32498d6cc9599251baa72de27/systems-common-2.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.glassfish.jaxb/jaxb-runtime/2.3.2/5528bc882ea499a09d720b42af11785c4fc6be2a/jaxb-runtime-2.3.2.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents.client5/httpclient5/5.1.3/13c984b7b881afcff3a7f0bb95878724a48a4b66/httpclient5-5.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.opentest4j/opentest4j/1.2.0/28c11eb91f9b6d8e200631d46e20a7f407f2a046/opentest4j-1.2.0.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-nop/2.0.13/f46230afff57b938ff9e7ac315270a83fdf21e87/slf4j-nop-2.0.13.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.ejml/ejml-ddense/0.41/782c80d4c3c8a3432c4641f24c177f336a360f9c/ejml-ddense-0.41.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/tech.units/indriya/2.1.3/d3cc55737619a2f50382592d369726e49d4f69bf/indriya-2.1.3.jar" path-in-jar="/" />
<element id="extracted-dir" path="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.h2database/h2/2.3.232/4fcc05d966ccdb2812ae8b9a718f69226c0cf4e2/h2-2.3.232.jar" path-in-jar="/" />
</root>
</artifact>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT">
<builds>
<build path="$PROJECT_DIR$/../energy-ade2-citygml4j" name="energy-ade2-citygml4j">
<projects>
<project path="$PROJECT_DIR$/../energy-ade2-citygml4j" />
<project path="$PROJECT_DIR$/../energy-ade2-citygml4j/energy-ade-samples" />
</projects>
</build>
</builds>
</compositeBuild>
</compositeConfiguration>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="C:/Gradle" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/../energy-ade2-citygml4j" />
<option value="$PROJECT_DIR$/../energy-ade2-citygml4j/energy-ade-samples" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredPackages">
<value>
<list size="2">
<item index="0" class="java.lang.String" itemvalue="transformers" />
<item index="1" class="java.lang.String" itemvalue="pygls" />
</list>
</value>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$/../digitwins4peds" />
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="liberica-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$/../energy-ade2-citygml4j" vcs="Git" />
</component>
</project>
\ No newline at end of file
# Energy ADE 2 3DCityDB
# Energy ADE (ver 2 beta 7) module for importer/exporter plugin v5.5.1 for 3DCityDB v4.4.2 - Work in Progress
[Java 17](https://bell-sw.com/pages/downloads/#jdk-17-lts) is the minimum requirement.
This is a 3DCityDB importer/exporter plugin module for the **Energy Application Domain Extension** (Energy ADE) v2 beta7 for CityGML.
## Getting started
There are
currently _no plans to migrate_ the Energy ADE 2 module to citygml4j v3, CityGML 3 or 3DCityDB v5.
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
Priority List:
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
## Add your files
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
```
cd existing_repo
git remote add origin https://transfer.hft-stuttgart.de/gitlab/energy-ade/energy-ade-2-3dcitydb.git
git branch -M master
git push -uf origin master
```
## Integrate with your tools
- [ ] [Set up project integrations](https://transfer.hft-stuttgart.de/gitlab/energy-ade/energy-ade-2-3dcitydb/-/settings/integrations)
## Collaborate with your team
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
## Test and Deploy
Use the built-in continuous integration in GitLab.
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
***
# Editing this README
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
## Suggestions for a good README
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
## Name
Choose a self-explaining name for your project.
## Description
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
## Badges
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
## Visuals
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
## Installation
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
## Usage
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
## Support
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
## Roadmap
If you have ideas for releases in the future, it is a good idea to list them in the README.
## Contributing
State if you are open to contributions and what your requirements are for accepting them.
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
## Authors and acknowledgment
Show your appreciation to those who have contributed to the project.
## License
For open source projects, say how it is licensed.
## Project status
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
- Timeseries
- DataType
- Core
- Resource
- UrbanFunctionAreas
- WeatherStation
- Layered Construction
- Schedule
- Devices
- BuildingPhysics
- Occupancy
\ No newline at end of file
plugins {
id 'java'
id 'java-library'
id 'distribution'
id 'maven-publish'
id 'signing'
id 'io.github.gradle-nexus.publish-plugin' version '2.0.0'
}
group = 'de.stuttgart.hft'
version = 'beta7'
description 'Energy ADE2 extension for the 3DCityDB'
repositories {
maven {
url 'https://3dcitydb.org/maven'
}
maven {
url 'https://repo.osgeo.org/repository/release'
}
mavenCentral()
mavenLocal()
}
configurations {
citygml4j
}
dependencies {
api 'org.citydb:impexp-client-gui:5.5.1'
api 'org.citygml4j.ade:energy-ade2-citygml4j:2.0.1'
citygml4j('org.citygml4j.ade:energy-ade2-citygml4j:2.0.1') {
transitive = false
}
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
}
test {
useJUnitPlatform()
}
distributions.main {
distributionBaseName = 'energy-ade2'
contents {
from 'README.md'
into('lib') {
from jar
from configurations.citygml4j
}
into('schema-mapping') {
from "$rootDir/resources/database/schema-mapping"
}
into('3dcitydb') {
from "$rootDir/resources/database/3dcitydb"
}
}
}
\ No newline at end of file
#Wed Feb 12 14:58:14 CET 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#!/bin/sh
#
# Copyright © 2015-2021 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--
-- CityGML Energy ADE 2.0 (beta 7)
--
-- Last update: 2025-06-25
--
-- This DDL script installs the 3DCityDB schema for the Energy ADE 2.0. It must be run
-- from within the ADE Manager plugin of the 3DCityDB Importer/Exporter.
--
-- This script was first automatically generated using the 3DCityDB ADE Manager
-- and successively edited and restructured by:
--
-- Dr. Giorgio Agugiaro
-- 3D Geoinformation group
-- Delft University of Technology
-- The Netherlands
--
-- https://3d.bk.tudelft.nl/gagugiaro/
--
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ***************************** CREATE_ADE_DB.SQL execution START ************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create Sequences ***********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CREATE SEQUENCE ng2_ctyobj_relation_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_optical_property_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_qualified_attribute_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
CREATE SEQUENCE ng2_suitability_seq INCREMENT BY 1 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1 NO CYCLE OWNED BY NONE;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create tables **************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
CREATE TABLE ng2_address_to_building_unit (
address_id BIGINT NOT NULL,
building_unit_id BIGINT NOT NULL,
PRIMARY KEY (address_id, building_unit_id)
);
-- --------------------------------------------------------------------
-- ng2_building - extends building table
-- --------------------------------------------------------------------
CREATE TABLE ng2_building (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
is_protected NUMERIC,
constr_weight VARCHAR,
constr_weight_codespace VARCHAR,
attic_thm_status VARCHAR,
basement_thm_status VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
CREATE TABLE ng2_building_partition (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- Thermal Zone attributes
heat_capacity NUMERIC,
heat_capacity_uom VARCHAR,
infiltration_rate NUMERIC,
infiltration_rate_uom VARCHAR,
is_cooled NUMERIC,
is_heated NUMERIC,
coincides_with_lod2_hull NUMERIC,
coincides_with_lod3_hull NUMERIC,
-- Usage Zone and BuildingUnit attributes
type VARCHAR,
type_codespace VARCHAR,
-- Usage Zone attributes
is_primary NUMERIC,
num_of_building_units INTEGER,
int_heat_gains NUMERIC,
int_heat_gains_uom VARCHAR,
int_heat_gains_conv NUMERIC,
int_heat_gains_conv_uom VARCHAR,
int_heat_gains_lat NUMERIC,
int_heat_gains_lat_uom VARCHAR,
int_heat_gains_rad NUMERIC,
int_heat_gains_rad_uom VARCHAR,
-- BuildingUnit attributes
num_of_rooms INTEGER,
owner_name VARCHAR,
ownership_type VARCHAR,
ownership_type_codespace VARCHAR,
-- Used to store the FK to the schedule(s)
cooling_schedule_id BIGINT,
heating_schedule_id BIGINT,
ventilation_schedule_id BIGINT,
-- Used to store the association from UsageZone to BuildingUnit
usage_zone_id BIGINT,
-- Used to store the association from ThermalZone to UsageZone
thermal_zone_id BIGINT,
-- Parent id (Building(Part) of a ThermalZone, UsageZone or BuildintUnit
building_id BIGINT,
-- FK to the geometries in the surface_geometry table
lod1_solid_id BIGINT,
lod2_solid_id BIGINT,
lod3_solid_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_cityobject - extends cityobject table
-- --------------------------------------------------------------------
CREATE TABLE ng2_cityobject (
id BIGINT PRIMARY KEY,
layered_construction_id BIGINT,
ref_point geometry(POINTZ)
);
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
CREATE TABLE ng2_ctyobj_relation (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_ctyobj_relation_seq'::regclass),
-- this refers to ng2_cityobject (id), i.e. the source
ng2_cityobject_id BIGINT,
-- this refers to cityobject (id), i.e. the target
cityobject_id BIGINT,
relation_type VARCHAR,
relation_type_codespace VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
CREATE TABLE ng2_device (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- AbstractDevice attributes (also for LightingDevice, GenericDevice, GenericElectricalDevice)
model VARCHAR,
num_of_devices INTEGER,
year_of_manufacture INTEGER,
installed_power NUMERIC,
installed_power_uom VARCHAR,
nominal_efficiency NUMERIC,
nominal_efficiency_uom VARCHAR,
efficiency_indicator VARCHAR,
heat_diss NUMERIC,
heat_diss_uom VARCHAR,
heat_diss_conv NUMERIC,
heat_diss_conv_uom VARCHAR,
heat_diss_lat NUMERIC,
heat_diss_lat_uom VARCHAR,
heat_diss_rad NUMERIC,
heat_diss_rad_uom VARCHAR,
-- HeatPump attributes
heat_source VARCHAR,
cop_source_temp NUMERIC,
cop_source_temp_uom VARCHAR,
cop_operation_temp NUMERIC,
cop_operation_temp_uom VARCHAR,
-- Boiler attributes
has_condensation NUMERIC,
-- MovableShadingDevice attributes
type VARCHAR,
type_codespace VARCHAR,
installation_side VARCHAR,
max_cover_ratio NUMERIC,
max_cover_ratio_uom VARCHAR,
-- FK to table optical_property
transmittance_id BIGINT,
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
CREATE TABLE ng2_device_operation (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
yearly_global_efficiency NUMERIC,
-- FK
schedule_id BIGINT,
device_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
CREATE TABLE ng2_energy_perf_cert (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
label VARCHAR,
value NUMERIC,
value_uom VARCHAR,
issue_date DATE,
expiration_date DATE,
cert_method VARCHAR,
cert_uri VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
CREATE TABLE ng2_layer (
id BIGINT PRIMARY KEY,
thickness NUMERIC,
thickness_uom VARCHAR,
material_id BIGINT,
-- FK
layered_construction_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_layered_construction
-- --------------------------------------------------------------------
CREATE TABLE ng2_layered_construction (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
u_value NUMERIC,
u_value_uom VARCHAR,
g_value NUMERIC,
g_value_uom VARCHAR,
glazing_ratio NUMERIC,
glazing_ratio_uom VARCHAR,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FKs
layered_construction_id BIGINT,
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
CREATE TABLE ng2_library (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
author VARCHAR,
source VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
CREATE TABLE ng2_material (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- Abstract library attributes
library_code VARCHAR,
library_code_codespace VARCHAR,
-- SolidMaterial attributes
thm_conductivity NUMERIC,
thm_conductivity_uom VARCHAR,
spec_heat_capacity NUMERIC,
spec_heat_capacity_uom VARCHAR,
density NUMERIC,
density_uom VARCHAR,
permeance NUMERIC,
permeance_uom VARCHAR,
porosity NUMERIC,
porosity_uom VARCHAR,
embodied_carbon NUMERIC,
embodied_carbon_uom VARCHAR,
embodied_energy NUMERIC,
embodied_energy_uom VARCHAR,
-- Gas attributes
is_ventilated NUMERIC,
r_value NUMERIC,
r_value_uom VARCHAR,
-- FK
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
CREATE TABLE ng2_occupants (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
num_of_occupants INTEGER,
heat_diss NUMERIC,
heat_diss_uom VARCHAR,
heat_diss_conv NUMERIC,
heat_diss_conv_uom VARCHAR,
heat_diss_lat NUMERIC,
heat_diss_lat_uom VARCHAR,
heat_diss_rad NUMERIC,
heat_diss_rad_uom VARCHAR,
avg_diet_type VARCHAR,
avg_diet_type_codespace VARCHAR,
avg_income_level VARCHAR,
avg_income_level_codespace VARCHAR,
avg_instr_level VARCHAR,
avg_instr_level_codespace VARCHAR,
-- FK
schedule_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_opening - extends (building) opening table
-- --------------------------------------------------------------------
CREATE TABLE ng2_opening (
id BIGINT PRIMARY KEY,
area NUMERIC,
area_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
ground_view_factor NUMERIC,
ground_view_factor_uom VARCHAR,
sky_view_factor NUMERIC,
sky_view_factor_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
CREATE TABLE ng2_optical_property (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_optical_property_seq'::regclass),
objectclass_id INTEGER,
fraction NUMERIC,
fraction_uom VARCHAR,
surface VARCHAR,
wavelength_range VARCHAR,
-- FK
layered_construction_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
CREATE TABLE ng2_qualified_attribute (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_qualified_attribute_seq'::regclass),
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
value NUMERIC,
value_uom VARCHAR,
description VARCHAR,
source VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
CREATE TABLE ng2_refurbishment_measure (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
start_date DATE,
end_date DATE,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FK
building_id BIGINT,
building_partition_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
CREATE TABLE ng2_resource (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
enduse VARCHAR,
enduse_codespace VARCHAR,
status VARCHAR,
operation_type VARCHAR,
operation_type_codespace VARCHAR,
year INTEGER,
amount_type VARCHAR,
amount_type_codespace VARCHAR,
amount NUMERIC,
amount_uom VARCHAR,
time_series_id BIGINT,
is_amount_normalized NUMERIC,
normalization_param VARCHAR,
normalization_value NUMERIC,
normalization_value_uom VARCHAR,
co2_equivalent NUMERIC,
co2_equivalent_uom VARCHAR,
costs_money NUMERIC,
costs_money_uom VARCHAR,
yields_money NUMERIC,
yields_money_uom VARCHAR,
-- Attributes for Energy
energy_carrier VARCHAR,
energy_carrier_codespace VARCHAR,
maximum_load NUMERIC,
maximum_load_uom VARCHAR,
source VARCHAR,
source_codespace VARCHAR,
-- Attributes for Waste
is_dangerous NUMERIC,
is_recyclable NUMERIC,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
CREATE TABLE ng2_schedule (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
library_code VARCHAR,
library_code_codespace VARCHAR,
type VARCHAR,
type_codespace VARCHAR,
start_time TIME WITHOUT TIME ZONE,
start_day INTEGER,
start_month INTEGER,
start_year INTEGER,
time_interval NUMERIC,
time_interval_unit VARCHAR,
-- time_interval_factor INTEGER, -- used for temporalExtent
-- time_interval_radix INTEGER, -- used for temporalExtent
-- DualValue Schedule
idle_value NUMERIC,
idle_value_uom VARCHAR,
usage_value NUMERIC,
usage_value_uom VARCHAR,
start_usage_time TIME WITHOUT TIME ZONE,
end_usage_time TIME WITHOUT TIME ZONE,
-- Atomic Schedule
constant_value NUMERIC,
constant_value_uom VARCHAR,
-- FK
time_series_id BIGINT,
library_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
CREATE TABLE ng2_schedule_component (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
repetitions INTEGER NOT NULL DEFAULT 1,
additional_gap NUMERIC,
additional_gap_unit VARCHAR,
-- additional_gap_factor INTEGER,
-- additional_gap_radix INTEGER,
-- FK
parent_schedule_id BIGINT,
schedule_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
CREATE TABLE ng2_solar_collector (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
type VARCHAR,
type_codespace VARCHAR,
cell_type VARCHAR,
cell_type_codespace VARCHAR,
module_area NUMERIC,
module_area_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
aperture_area NUMERIC,
aperture_area_uom VARCHAR,
opt_efficiency NUMERIC,
opt_efficiency_uom VARCHAR,
lin_heat_loss_coeff NUMERIC,
quad_heat_loss_coeff NUMERIC,
-- FK
lod2_multi_surface_id BIGINT,
lod3_multi_surface_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
CREATE TABLE ng2_storage_device (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
medium VARCHAR,
medium_codespace VARCHAR,
preparation_temp NUMERIC,
preparation_temp_uom VARCHAR,
thm_losses_factor NUMERIC,
thm_losses_factor_uom VARCHAR,
volume NUMERIC,
volume_uom VARCHAR,
batt_techn VARCHAR,
batt_techn_codespace VARCHAR,
power_capacity NUMERIC,
power_capacity_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
CREATE TABLE ng2_suitability (
id BIGINT PRIMARY KEY DEFAULT nextval('ng2_suitability_seq'::regclass),
reason VARCHAR,
reason_codespace VARCHAR,
value NUMERIC,
value_uom VARCHAR,
description VARCHAR,
schedule_id BIGINT,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
CREATE TABLE ng2_them_surf_to_thermal_zone (
thematic_surface_id BIGINT NOT NULL,
thermal_zone_id BIGINT NOT NULL,
PRIMARY KEY (thematic_surface_id, thermal_zone_id)
);
-- --------------------------------------------------------------------
-- ng2_thematic_surface - extends (building) thematic_surface table
-- --------------------------------------------------------------------
CREATE TABLE ng2_thematic_surface (
id BIGINT PRIMARY KEY,
total_surf_area NUMERIC,
total_surf_area_uom VARCHAR,
opaque_surf_area NUMERIC,
opaque_surf_area_uom VARCHAR,
open_to_surf_ratio NUMERIC,
open_to_surf_ratio_uom VARCHAR,
thickness NUMERIC,
thickness_uom VARCHAR,
azimuth NUMERIC,
azimuth_uom VARCHAR,
inclination NUMERIC,
inclination_uom VARCHAR,
ground_view_factor NUMERIC,
ground_view_factor_uom VARCHAR,
sky_view_factor NUMERIC,
sky_view_factor_uom VARCHAR,
is_adiabatic NUMERIC,
heat_capacity NUMERIC,
heat_capacity_uom VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
CREATE TABLE ng2_time_series (
id BIGINT PRIMARY KEY,
objectclass_id INTEGER,
-- AbstractTieSeries attributes
acquisition_method VARCHAR,
acquisition_method_codespace VARCHAR,
interpolation_type VARCHAR,
source VARCHAR,
-- Other attributes
period_begin TIMESTAMP WITH TIME ZONE,
period_end TIMESTAMP WITH TIME ZONE,
start_time TIME WITHOUT TIME ZONE,
start_day INTEGER,
start_month INTEGER,
temporal_extent NUMERIC,
temporal_extent_unit VARCHAR,
-- temporal_extent_factor INTEGER,
-- temporal_extent_radix INTEGER,
time_interval NUMERIC,
time_interval_unit VARCHAR,
-- time_interval_factor INTEGER,
-- time_interval_radix INTEGER,
values_list TEXT,
values_list_uom VARCHAR,
uom VARCHAR,
file_uri VARCHAR,
num_of_header_lines INTEGER,
field_separator VARCHAR,
record_separator VARCHAR,
value_column_number INTEGER,
decimal_symbol VARCHAR,
auth_type VARCHAR,
auth_type_codespace VARCHAR,
base_url VARCHAR,
connection_type VARCHAR,
connection_type_codespace VARCHAR,
datastream_id VARCHAR,
link_to_observation VARCHAR,
link_to_sensor_description VARCHAR,
mqtt_server VARCHAR,
mqtt_topic VARCHAR,
observation_id VARCHAR,
observation_property VARCHAR,
sensor_id VARCHAR,
sensor_name VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
CREATE TABLE ng2_urban_function_area (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
code VARCHAR,
code_codespace VARCHAR
);
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
CREATE TABLE ng2_utl_ntw_connection (
id BIGINT PRIMARY KEY,
network_type VARCHAR,
network_type_codespace VARCHAR,
connection_status VARCHAR,
function_in_network VARCHAR,
function_in_network_codespace VARCHAR,
usage_in_network VARCHAR,
usage_in_network_codespace VARCHAR,
network_id VARCHAR,
network_node_id VARCHAR,
-- FK
cityobject_id BIGINT
);
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
CREATE TABLE ng2_weather_data (
id BIGINT PRIMARY KEY,
type VARCHAR,
type_codespace VARCHAR,
value_type VARCHAR,
value_type_codespace VARCHAR,
yearly_value NUMERIC,
yearly_value_uom VARCHAR,
library_code VARCHAR,
library_code_codespace VARCHAR,
-- FK
time_series_id BIGINT,
cityobject_id BIGINT,
--
position geometry(POINTZ)
);
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create foreign keys ********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
ALTER TABLE ng2_address_to_building_unit ADD CONSTRAINT ng2_addr_to_bdgu_fk1 FOREIGN KEY (address_id) REFERENCES address (id) ON DELETE CASCADE;
ALTER TABLE ng2_address_to_building_unit ADD CONSTRAINT ng2_addr_to_bdgu_fk2 FOREIGN KEY (building_unit_id) REFERENCES ng2_building_partition (id) ON DELETE CASCADE;
-- --------------------------------------------------------------------
-- ng2_building
-- --------------------------------------------------------------------
ALTER TABLE ng2_building ADD CONSTRAINT ng2_bdg_fk FOREIGN KEY (id) REFERENCES building (id);
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod1_fk FOREIGN KEY (lod1_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod2_fk FOREIGN KEY (lod2_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_lod3_fk FOREIGN KEY (lod3_solid_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_uz_fk FOREIGN KEY (usage_zone_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_tz_fk FOREIGN KEY (thermal_zone_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id);
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk1 FOREIGN KEY (cooling_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk2 FOREIGN KEY (heating_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_building_partition ADD CONSTRAINT ng2_bdgp_sched_fk3 FOREIGN KEY (ventilation_schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_cityobject
-- --------------------------------------------------------------------
ALTER TABLE ng2_cityobject ADD CONSTRAINT ng2_cto_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_cityobject ADD CONSTRAINT ng2_cto_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
ALTER TABLE ng2_ctyobj_relation ADD CONSTRAINT ng2_cto_rel_fk2 FOREIGN KEY (cityobject_id) REFERENCES cityobject (id) ON DELETE SET NULL;
ALTER TABLE ng2_ctyobj_relation ADD CONSTRAINT ng2_cto_rel_fk1 FOREIGN KEY (ng2_cityobject_id) REFERENCES ng2_cityobject (id);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_opt_fk FOREIGN KEY (transmittance_id) REFERENCES ng2_optical_property (id) ON DELETE SET NULL;
ALTER TABLE ng2_device ADD CONSTRAINT ng2_dev_ng2_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_device_operation ADD CONSTRAINT ng2_dev_opr_dev_fk FOREIGN KEY (device_id) REFERENCES ng2_device (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id) ON DELETE SET NULL;
ALTER TABLE ng2_energy_perf_cert ADD CONSTRAINT ng2_epc_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_mat_fk FOREIGN KEY (material_id) REFERENCES ng2_material (id) ON DELETE SET NULL;
ALTER TABLE ng2_layer ADD CONSTRAINT ng2_lyr_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_layered_construction
-- --------------------------------------------------------------------
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id) ON DELETE SET NULL;
ALTER TABLE ng2_layered_construction ADD CONSTRAINT ng2_lcns_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
ALTER TABLE ng2_library ADD CONSTRAINT ng2_lib_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_library ADD CONSTRAINT ng2_lib_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
ALTER TABLE ng2_material ADD CONSTRAINT ng2_mat_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_material ADD CONSTRAINT ng2_mat_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
ALTER TABLE ng2_occupants ADD CONSTRAINT ng2_occ_ng2_bdgp_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_opening
-- --------------------------------------------------------------------
ALTER TABLE ng2_opening ADD CONSTRAINT ng2_opn_fk FOREIGN KEY (id) REFERENCES opening (id);
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
ALTER TABLE ng2_optical_property ADD CONSTRAINT ng2_optpty_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_optical_property ADD CONSTRAINT ng2_optpty_lcns_fk FOREIGN KEY (layered_construction_id) REFERENCES ng2_layered_construction (id);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id);
ALTER TABLE ng2_qualified_attribute ADD CONSTRAINT ng2_qatt_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_bdg_fk FOREIGN KEY (building_id) REFERENCES ng2_building (id) ON DELETE SET NULL;
ALTER TABLE ng2_refurbishment_measure ADD CONSTRAINT ng2_refurb_bdg_part_fk FOREIGN KEY (building_partition_id) REFERENCES ng2_building_partition (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_resource ADD CONSTRAINT ng2_res_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_schedule ADD CONSTRAINT ng2_sched_lib_fk FOREIGN KEY (library_id) REFERENCES ng2_library (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_sched_fk1 FOREIGN KEY (parent_schedule_id) REFERENCES ng2_schedule (id);
ALTER TABLE ng2_schedule_component ADD CONSTRAINT ng2_sched_comp_sched_fk2 FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_fk FOREIGN KEY (id) REFERENCES ng2_device (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_lod2_fk FOREIGN KEY (lod2_multi_surface_id) REFERENCES surface_geometry (id);
ALTER TABLE ng2_solar_collector ADD CONSTRAINT ng2_sol_coll_lod3_fk FOREIGN KEY (lod3_multi_surface_id) REFERENCES surface_geometry (id);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
ALTER TABLE ng2_storage_device ADD CONSTRAINT ng2_sto_dev_fk FOREIGN KEY (id) REFERENCES ng2_device (id);
ALTER TABLE ng2_storage_device ADD CONSTRAINT ng2_sto_dev_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
ALTER TABLE ng2_suitability ADD CONSTRAINT ng2_suit_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id);
ALTER TABLE ng2_suitability ADD CONSTRAINT ng2_suit_sched_fk FOREIGN KEY (schedule_id) REFERENCES ng2_schedule (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
ALTER TABLE ng2_them_surf_to_thermal_zone ADD CONSTRAINT ng2_thm_surf_to_tz_fk2 FOREIGN KEY (thermal_zone_id) REFERENCES ng2_building_partition (id);
ALTER TABLE ng2_them_surf_to_thermal_zone ADD CONSTRAINT ng2_thm_surf_to_tz_fk1 FOREIGN KEY (thematic_surface_id) REFERENCES thematic_surface (id) ON DELETE CASCADE;
-- --------------------------------------------------------------------
-- ng2_thematic_surface
-- --------------------------------------------------------------------
ALTER TABLE ng2_thematic_surface ADD CONSTRAINT ng2_them_surf_fk FOREIGN KEY (id) REFERENCES thematic_surface (id);
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
ALTER TABLE ng2_time_series ADD CONSTRAINT ng2_ts_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_time_series ADD CONSTRAINT ng2_ts_oc_fk FOREIGN KEY (objectclass_id) REFERENCES objectclass (id);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
ALTER TABLE ng2_urban_function_area ADD CONSTRAINT ng2_ufa_fk FOREIGN KEY (id) REFERENCES cityobjectgroup (id);
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
ALTER TABLE ng2_utl_ntw_connection ADD CONSTRAINT ng2_utl_ntw_con_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_utl_ntw_connection ADD CONSTRAINT ng2_utl_ntw_con_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_fk FOREIGN KEY (id) REFERENCES cityobject (id);
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_ts_fk FOREIGN KEY (time_series_id) REFERENCES ng2_time_series (id) ON DELETE SET NULL;
ALTER TABLE ng2_weather_data ADD CONSTRAINT ng2_wth_data_ng2_cto_fk FOREIGN KEY (cityobject_id) REFERENCES ng2_cityobject (id) ON DELETE SET NULL;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Create Indexes *************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- --------------------------------------------------------------------
-- ng2_address_to_building_unit
-- --------------------------------------------------------------------
CREATE INDEX ng2_address_to_bdgu_fk1x ON ng2_address_to_building_unit USING btree (address_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_address_to_bdgu_fk2x ON ng2_address_to_building_unit USING btree (building_unit_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_building
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_building_partition
-- --------------------------------------------------------------------
CREATE INDEX ng2_bdgp_oc_fkx ON ng2_building_partition USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk1x ON ng2_building_partition USING btree (cooling_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk2x ON ng2_building_partition USING btree (heating_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_sched_fk3x ON ng2_building_partition USING btree (ventilation_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_uz_fkx ON ng2_building_partition USING btree (usage_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_tz_fkx ON ng2_building_partition USING btree (thermal_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_bdg_fkx ON ng2_building_partition USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid1_fkx ON ng2_building_partition USING btree (lod1_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid2_fkx ON ng2_building_partition USING btree (lod2_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_bdgp_solid3_fkx ON ng2_building_partition USING btree (lod3_solid_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_cityobject
-- --------------------------------------------------------------------
CREATE INDEX ng2_cto_ref_point_spx ON ng2_cityobject USING gist (ref_point);
CREATE INDEX ng2_cto_lcns_fkx ON ng2_cityobject USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_ctyobj_relation
-- --------------------------------------------------------------------
CREATE INDEX ng2_cto_rel_fk1x ON ng2_ctyobj_relation USING btree (ng2_cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_cto_rel_fk2x ON ng2_ctyobj_relation USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_device
-- --------------------------------------------------------------------
CREATE INDEX ng2_dev_oc_fkx ON ng2_device USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_opt_fkx ON ng2_device USING btree (transmittance_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_cto_fkx ON ng2_device USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_device_operation
-- --------------------------------------------------------------------
CREATE INDEX ng2_dev_opr_sched_fkx ON ng2_device_operation USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_dev_opr_dev_fkx ON ng2_device_operation USING btree (device_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_energy_perf_cert
-- --------------------------------------------------------------------
CREATE INDEX ng2_epc_bdg_fkx ON ng2_energy_perf_cert USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_epc_bdg_part_fkx ON ng2_energy_perf_cert USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_layer
-- --------------------------------------------------------------------
CREATE INDEX ng2_lyr_mat_fkx ON ng2_layer USING btree (material_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lyr_lcns_fkx ON ng2_layer USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_layered_constr
-- --------------------------------------------------------------------
CREATE INDEX ng2_lcns_oc_fkx ON ng2_layered_construction USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lcns_lcns_fkx ON ng2_layered_construction USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_lcns_lib_fkx ON ng2_layered_construction USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_library
-- --------------------------------------------------------------------
CREATE INDEX ng2_lib_oc_fkx ON ng2_library USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_material
-- --------------------------------------------------------------------
CREATE INDEX ng2_mat_oc_fkx ON ng2_material USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_mat_lib_fkx ON ng2_material USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_occupants
-- --------------------------------------------------------------------
CREATE INDEX ng2_occ_sched_fkx ON ng2_occupants USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_occ_ng2_bdgp_fkx ON ng2_occupants USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_opening
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_optical_property
-- --------------------------------------------------------------------
CREATE INDEX ng2_optpty_oc_fkx ON ng2_optical_property USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_optpty_lcns_fkx ON ng2_optical_property USING btree (layered_construction_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_qualified_attribute
-- --------------------------------------------------------------------
CREATE INDEX ng2_qual_attr_oc_fkx ON ng2_qualified_attribute USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_bdg_fkx ON ng2_qualified_attribute USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_bdg_part_fkx ON ng2_qualified_attribute USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_qual_attr_type_idx ON ng2_qualified_attribute USING btree (type ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_refurbishment_measure
-- --------------------------------------------------------------------
CREATE INDEX ng2_ref_meas_bdg_fkx ON ng2_refurbishment_measure USING btree (building_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_ref_meas_bdg_part_fkx ON ng2_refurbishment_measure USING btree (building_partition_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_resource
-- --------------------------------------------------------------------
CREATE INDEX ng2_res_oc_fkx ON ng2_resource USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_res_ts_fkx ON ng2_resource USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_res_cto_fkx ON ng2_resource USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_schedule
-- --------------------------------------------------------------------
CREATE INDEX ng2_sched_oc_fkx ON ng2_schedule USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_ts_fkx ON ng2_schedule USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_lib_fkx ON ng2_schedule USING btree (library_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_schedule_component
-- --------------------------------------------------------------------
CREATE INDEX ng2_sched_comp_sched_fk1x ON ng2_schedule_component USING btree (parent_schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sched_comp_sched_fk2x ON ng2_schedule_component USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_solar_collector
-- --------------------------------------------------------------------
CREATE INDEX ng2_sol_col_oc_fkx ON ng2_solar_collector USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sol_col_lod2_fkx ON ng2_solar_collector USING btree (lod2_multi_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_sol_col_lod3_fkx ON ng2_solar_collector USING btree (lod2_multi_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_storage_device
-- --------------------------------------------------------------------
CREATE INDEX ng2_sto_dev_oc_fkx ON ng2_storage_device USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_suitability
-- --------------------------------------------------------------------
CREATE INDEX ng2_suit_cto_fkx ON ng2_suitability USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_suit_sched_fkx ON ng2_suitability USING btree (schedule_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_suit_reas_fkx ON ng2_suitability USING btree (reason ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_them_surf_to_thermal_zone
-- --------------------------------------------------------------------
CREATE INDEX ng2_thm_surf_to_tz_fk1x ON ng2_them_surf_to_thermal_zone USING btree (thematic_surface_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_thm_surf_to_tz_fk2x ON ng2_them_surf_to_thermal_zone USING btree (thermal_zone_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_thematic_surface
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_time_series
-- --------------------------------------------------------------------
CREATE INDEX ng2_ts_oc_fkx ON ng2_time_series USING btree (objectclass_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_urban_function_area
-- --------------------------------------------------------------------
-- no indices needed
-- --------------------------------------------------------------------
-- ng2_utl_ntw_connection
-- --------------------------------------------------------------------
CREATE INDEX ng2_utl_ntw_conn_cto_fkx ON ng2_utl_ntw_connection USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- --------------------------------------------------------------------
-- ng2_weather_data
-- --------------------------------------------------------------------
CREATE INDEX ng2_wht_data_ts_fkx ON ng2_weather_data USING btree (time_series_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
CREATE INDEX ng2_wht_data_cto_fkx ON ng2_weather_data USING btree (cityobject_id ASC NULLS LAST) WITH (FILLFACTOR = 90);
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--
-- CityGML Energy ADE 2.0 (beta 7)
--
-- Last update: 2025-05-09
--
-- This DDL script uninstalls the 3DCityDB schema for the Energy ADE 2.0. It must be run
-- from within the ADE Manager plugin of the 3DCityDB Importer/Exporter.
--
-- This script was first automatically generated using the 3DCityDB ADE Manager
-- and successively edited and restructured by:
--
-- Dr. Giorgio Agugiaro
-- 3D Geoinformation group
-- Delft University of Technology
-- The Netherlands
--
-- https://3d.bk.tudelft.nl/gagugiaro/
--
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ******************************* DROP_ADE_DB.SQL execution START ************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop foreign keys **********************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ALTER TABLE ng2_address_to_building_unit DROP CONSTRAINT ng2_addr_to_bdgu_fk1;
ALTER TABLE ng2_address_to_building_unit DROP CONSTRAINT ng2_addr_to_bdgu_fk2;
ALTER TABLE ng2_building DROP CONSTRAINT ng2_bdg_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_bdg_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod1_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod2_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_lod3_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_oc_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk1;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk2;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_sched_fk3;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_tz_fk;
ALTER TABLE ng2_building_partition DROP CONSTRAINT ng2_bdgp_uz_fk;
ALTER TABLE ng2_cityobject DROP CONSTRAINT ng2_cto_fk;
ALTER TABLE ng2_cityobject DROP CONSTRAINT ng2_cto_lcns_fk;
ALTER TABLE ng2_ctyobj_relation DROP CONSTRAINT ng2_cto_rel_fk1;
ALTER TABLE ng2_ctyobj_relation DROP CONSTRAINT ng2_cto_rel_fk2;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_ng2_cto_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_oc_fk;
ALTER TABLE ng2_device DROP CONSTRAINT ng2_dev_opt_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_dev_fk;
ALTER TABLE ng2_device_operation DROP CONSTRAINT ng2_dev_opr_sched_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_bdg_fk;
ALTER TABLE ng2_energy_perf_cert DROP CONSTRAINT ng2_epc_bdg_part_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_lcns_fk;
ALTER TABLE ng2_layer DROP CONSTRAINT ng2_lyr_mat_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_lcns_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_oc_fk;
ALTER TABLE ng2_layered_construction DROP CONSTRAINT ng2_lcns_lib_fk;
ALTER TABLE ng2_library DROP CONSTRAINT ng2_lib_fk;
ALTER TABLE ng2_library DROP CONSTRAINT ng2_lib_oc_fk;
ALTER TABLE ng2_material DROP CONSTRAINT ng2_mat_fk;
ALTER TABLE ng2_material DROP CONSTRAINT ng2_mat_lib_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_ng2_bdgp_fk;
ALTER TABLE ng2_occupants DROP CONSTRAINT ng2_occ_sched_fk;
ALTER TABLE ng2_opening DROP CONSTRAINT ng2_opn_fk;
ALTER TABLE ng2_optical_property DROP CONSTRAINT ng2_optpty_lcns_fk;
ALTER TABLE ng2_optical_property DROP CONSTRAINT ng2_optpty_oc_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_oc_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_bdg_fk;
ALTER TABLE ng2_qualified_attribute DROP CONSTRAINT ng2_qatt_bdg_part_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_bdg_fk;
ALTER TABLE ng2_refurbishment_measure DROP CONSTRAINT ng2_refurb_bdg_part_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_oc_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_ts_fk;
ALTER TABLE ng2_resource DROP CONSTRAINT ng2_res_cto_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_oc_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_ts_fk;
ALTER TABLE ng2_schedule DROP CONSTRAINT ng2_sched_lib_fk;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_fk;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_sched_fk1;
ALTER TABLE ng2_schedule_component DROP CONSTRAINT ng2_sched_comp_sched_fk2;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_oc_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_lod2_fk;
ALTER TABLE ng2_solar_collector DROP CONSTRAINT ng2_sol_coll_lod3_fk;
ALTER TABLE ng2_storage_device DROP CONSTRAINT ng2_sto_dev_fk;
ALTER TABLE ng2_storage_device DROP CONSTRAINT ng2_sto_dev_oc_fk;
ALTER TABLE ng2_suitability DROP CONSTRAINT ng2_suit_cto_fk;
ALTER TABLE ng2_suitability DROP CONSTRAINT ng2_suit_sched_fk;
ALTER TABLE ng2_them_surf_to_thermal_zone DROP CONSTRAINT ng2_thm_surf_to_tz_fk1;
ALTER TABLE ng2_them_surf_to_thermal_zone DROP CONSTRAINT ng2_thm_surf_to_tz_fk2;
ALTER TABLE ng2_thematic_surface DROP CONSTRAINT ng2_them_surf_fk;
ALTER TABLE ng2_time_series DROP CONSTRAINT ng2_ts_fk;
ALTER TABLE ng2_time_series DROP CONSTRAINT ng2_ts_oc_fk;
ALTER TABLE ng2_urban_function_area DROP CONSTRAINT ng2_ufa_fk;
ALTER TABLE ng2_utl_ntw_connection DROP CONSTRAINT ng2_utl_ntw_con_cto_fk;
ALTER TABLE ng2_utl_ntw_connection DROP CONSTRAINT ng2_utl_ntw_con_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_ng2_cto_fk;
ALTER TABLE ng2_weather_data DROP CONSTRAINT ng2_wth_data_ts_fk;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop tables ***************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DROP TABLE ng2_address_to_building_unit CASCADE;
DROP TABLE ng2_building CASCADE;
DROP TABLE ng2_building_partition CASCADE;
DROP TABLE ng2_cityobject CASCADE;
DROP TABLE ng2_ctyobj_relation CASCADE;
DROP TABLE ng2_device CASCADE;
DROP TABLE ng2_device_operation CASCADE;
DROP TABLE ng2_energy_perf_cert CASCADE;
DROP TABLE ng2_layer CASCADE;
DROP TABLE ng2_layered_construction CASCADE;
DROP TABLE ng2_library CASCADE;
DROP TABLE ng2_material CASCADE;
DROP TABLE ng2_occupants CASCADE;
DROP TABLE ng2_opening CASCADE;
DROP TABLE ng2_optical_property CASCADE;
DROP TABLE ng2_qualified_attribute CASCADE;
DROP TABLE ng2_refurbishment_measure CASCADE;
DROP TABLE ng2_resource CASCADE;
DROP TABLE ng2_schedule CASCADE;
DROP TABLE ng2_schedule_component CASCADE;
DROP TABLE ng2_solar_collector CASCADE;
DROP TABLE ng2_storage_device CASCADE;
DROP TABLE ng2_suitability CASCADE;
DROP TABLE ng2_them_surf_to_thermal_zone CASCADE;
DROP TABLE ng2_thematic_surface CASCADE;
DROP TABLE ng2_time_series CASCADE;
DROP TABLE ng2_urban_function_area CASCADE;
DROP TABLE ng2_utl_ntw_connection CASCADE;
DROP TABLE ng2_weather_data CASCADE;
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- *********************************** Drop Sequences *************************************
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
DROP SEQUENCE ng2_ctyobj_relation_seq;
DROP SEQUENCE ng2_optical_property_seq;
DROP SEQUENCE ng2_qualified_attribute_seq;
DROP SEQUENCE ng2_suitability_seq;
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--
****************************************************************************************
****************************************************************************************
CityGML Energy ADE 2.0 (beta 7)
Last update: 2025-06-25
This schema mapping file was first automatically generated using the ADE Manager
of the 3DCityDB Importer/Exporter and successively manually edited and restructured.
****************************************************************************************
This file was generated by:
Dr. Giorgio Agugiaro
3D Geoinformation group
Delft University of Technology
The Netherlands
https://3d.bk.tudelft.nl/gagugiaro/
****************************************************************************************
****************************************************************************************
-->
<schemaMapping xmlns="http://www.3dcitydb.org/database/schema/1.0">
<metadata>
<name>Energy ADE</name>
<version>2.0 beta 7 (2025-06-25)</version>
<description>Database schema for the 3DCityDB 4.x</description>
<dbPrefix>ng2</dbPrefix>
</metadata>
<applicationSchemas>
<schema id="ng2" isADERoot="true">
<namespace context="citygml-2.0">http://www.citygml.org/ade/energy/2.0</namespace>
</schema>
</applicationSchemas>
<!-- Mapping of the complex types -->
<complexTypes>
<!-- Abstract Optical Property -->
<complexType abstract="true" id="ng2_AbstractOpticalProperty_Type" table="ng2_optical_property" objectClassId="11001" path="AbstractOpticalProperty" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="fraction" schema="ng2">
<attribute column="fraction" type="double" path="." schema="ng2"/>
<attribute column="fraction_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Emissivity-->
<complexType id="ng2_EmissivityType" table="ng2_optical_property" objectClassId="11002" path="Emissivity" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="surface" type="string" path="surface" schema="ng2"/>
</complexType>
<!-- Reflectance -->
<complexType id="ng2_ReflectanceType" table="ng2_optical_property" objectClassId="11003" path="Reflectance" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="surface" type="string" path="surface" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="wavelength_range" type="string" path="wavelengthRange" schema="ng2"/>
</complexType>
<!-- Transmittance -->
<complexType id="ng2_TransmittanceType" table="ng2_optical_property" objectClassId="11004" path="Transmittance" schema="ng2">
<extension base="ng2_AbstractOpticalProperty_Type"/>
<attribute minOccurs="1" maxOccurs="1" column="wavelength_range" type="string" path="wavelengthRange" schema="ng2"/>
</complexType>
<!-- Abstract Qualified Attribute (height, area, volume) -->
<complexType abstract="true" id="ng2_AbstractQualifiedAttributeType" table="ng2_qualified_attribute" objectClassId="11005" path="AbstractQualifiedAttribute" schema="ng2">
<attribute maxOccurs="1" column="description" type="string" path="description" schema="ng2"/>
<attribute maxOccurs="1" column="source" type="string" path="description" schema="ng2"/>
</complexType>
<!-- Qualified Area -->
<complexType id="ng2_QualifiedAreaType" table="ng2_qualified_attribute" objectClassId="11006" path="QualifiedArea" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Qualified Height -->
<complexType id="ng2_QualifiedHeightType" table="ng2_qualified_attribute" objectClassId="11007" path="QualifiedHeight" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- Qualified Volume -->
<complexType id="ng2_QualifiedVolumeType" table="ng2_qualified_attribute" objectClassId="11008" path="QualifiedVolume" schema="ng2">
<extension base="ng2_AbstractQualifiedAttributeType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</complexType>
<!-- CityObjectRelation -->
<complexType id="ng2_CityObjectRelationType" table="ng2_ctyobj_relation" objectClassId="11009" path="CityObjectRelation" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="relationType" schema="ng2">
<attribute column="relation_type" type="string" path="." schema="ng2"/>
<attribute column="relation_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="AbstractCityObjectType" path="relatedTo" schema="ng2" relationType="association">
<join table="cityobject" fromColumn="cityobject_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</complexType>
<!-- Suitability -->
<complexType id="ng2_SuitabilityType" table="ng2_suitability" objectClassId="11010" path="Suitability" schema="ng2">
<complexAttribute minOccurs="1" maxOccurs="1" path="reason" schema="ng2">
<attribute column="reason_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="reason" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="description" type="string" path="description" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="value" schema="ng2">
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
<attribute column="value" type="double" path="." schema="ng2"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="schedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</complexType>
</complexTypes>
<!-- Features and new CityObjects -->
<featureTypes>
<!-- Abstract Time Series -->
<featureType abstract="true" id="ng2_AbstractTimeSeriesType" table="ng2_time_series" objectClassId="11020" path="AbstractTimeSeries" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="acquisitionMethod" schema="ng2">
<attribute column="acquisition_method" type="string" path="." schema="ng2"/>
<attribute column="acquisition_method_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="interpolation_type" type="string" path="interpolationType" schema="ng2"/>
<attribute maxOccurs="1" column="source" type="string" path="source" schema="ng2"/>
</featureType>
<!-- Regular Time Series -->
<featureType id="ng2_RegularTimeSeriesType" table="ng2_time_series" objectClassId="11021" path="RegularTimeSeries" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexProperty minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<type path="TimePeriod" schema="ng2">
<attribute minOccurs="1" maxOccurs="1" column="period_begin" type="timestamp" path="beginPosition" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="period_end" type="timestamp" path="endPosition" schema="ng2"/>
</type>
</complexProperty>
<complexAttribute minOccurs="1" maxOccurs="1" path="values" schema="ng2">
<attribute column="values_list" type="clob" path="." schema="ng2"/>
<attribute column="values_list_uom" type="string" path="@uom" schema="ng2"/>
</complexAttribute>
</featureType>
<!-- Regular Time Series File -->
<featureType id="ng2_RegularTimeSeriesFileType" table="ng2_time_series" objectClassId="11022" path="RegularTimeSeriesFile" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute minOccurs="1" maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="file_uri" type="string" path="file" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<attribute maxOccurs="1" column="num_of_header_lines" type="integer" path="numberOfHeaderLines" schema="ng2"/>
<attribute maxOccurs="1" column="field_separator" type="string" path="fieldSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="record_separator" type="string" path="recordSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="decimal_symbol" type="string" path="decimalSymbol" schema="ng2"/>
<attribute maxOccurs="1" column="value_column_number" type="integer" path="valueColumnNumber" schema="ng2"/>
<complexProperty minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<type path="TimePeriod" schema="ng2">
<attribute minOccurs="1" maxOccurs="1" column="period_begin" type="timestamp" path="beginPosition" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="period_end" type="timestamp" path="endPosition" schema="ng2"/>
</type>
</complexProperty>
</featureType>
<!-- Typical Values Time Series -->
<featureType id="ng2_TypicalValuesTimeSeriesType" table="ng2_time_series" objectClassId="11023" path="TypicalValuesTimeSeries" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="values" schema="ng2">
<attribute column="values_list" type="clob" path="." schema="ng2"/>
<attribute column="values_list_uom" type="string" path="@uom" schema="ng2"/>
</complexAttribute>
</featureType>
<!-- Typical Values Time Series File -->
<featureType id="ng2_TypicalValuesTimeSeriesFileType" table="ng2_time_series" objectClassId="11024" path="TypicalValuesTimeSeriesFile" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="file_uri" type="string" path="file" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="timeInterval" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<attribute maxOccurs="1" column="num_of_header_lines" type="integer" path="numberOfHeaderLines" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="field_separator" type="string" path="fieldSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="record_separator" type="string" path="recordSeparator" schema="ng2"/>
<attribute maxOccurs="1" column="decimal_symbol" type="string" path="decimalSymbol" schema="ng2"/>
<attribute maxOccurs="1" column="value_column_number" type="integer" path="valueColumnNumber" schema="ng2"/>
</featureType>
<!-- Sensor Connection -->
<featureType id="ng2_SensorConnectionType" table="ng2_time_series" objectClassId="11025" path="SensorConnection" schema="ng2">
<extension base="ng2_AbstractTimeSeriesType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="temporal_extent" type="double" path="." schema="ng2"/>
<attribute column="temporal_extent_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="temporal_extent_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="temporal_extent_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="connectionType" schema="ng2">
<attribute column="connection_type" type="string" path="." schema="ng2"/>
<attribute column="connection_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="observation_property" type="string" path="observationProperty" schema="ng2"/>
<attribute maxOccurs="1" column="uom" type="string" path="uom" schema="ng2"/>
<attribute maxOccurs="1" column="sensor_id" type="string" path="sensorID" schema="ng2"/>
<attribute maxOccurs="1" column="sensor_name" type="string" path="sensorName" schema="ng2"/>
<attribute maxOccurs="1" column="observation_id" type="string" path="observationID" schema="ng2"/>
<attribute maxOccurs="1" column="datastream_id" type="string" path="datastreamID" schema="ng2"/>
<attribute maxOccurs="1" column="base_url" type="string" path="baseURL" schema="ng2"/>
<complexAttribute maxOccurs="1" path="authType" schema="ng2">
<attribute column="auth_type" type="string" path="." schema="ng2"/>
<attribute column="auth_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="mqtt_server" type="string" path="mqttServer" schema="ng2"/>
<attribute maxOccurs="1" column="mqtt_topic" type="string" path="mqttTopic" schema="ng2"/>
<attribute maxOccurs="1" column="link_to_observation" type="string" path="linkToObservation" schema="ng2"/>
<attribute maxOccurs="1" column="link_to_sensor_description" type="string" path="linkToSensorDescription" schema="ng2"/>
</featureType>
<!-- Abstract Schedule -->
<featureType abstract="true" id="ng2_AbstractScheduleType" table="ng2_schedule" objectClassId="11030" path="AbstractSchedule" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="start_time" type="timestamp" path="startTime" schema="ng2"/>
<attribute maxOccurs="1" column="start_day" type="integer" path="startDay" schema="ng2"/>
<attribute maxOccurs="1" column="start_month" type="integer" path="startMonth" schema="ng2"/>
<attribute maxOccurs="1" column="start_year" type="integer" path="startYear" schema="ng2"/>
<complexAttribute maxOccurs="1" path="temporalExtent" schema="ng2">
<attribute column="time_interval" type="double" path="." schema="ng2"/>
<attribute column="time_interval_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="time_interval_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="time_interval_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
</featureType>
<!-- Atomic Schedule -->
<featureType id="ng2_AtomicScheduleType" table="ng2_schedule" objectClassId="11031" path="AtomicSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<complexAttribute minOccurs="0" maxOccurs="1" path="constantValue" schema="ng2">
<attribute column="constant_value" type="double" path="." schema="ng2"/>
<attribute column="constant_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="0" maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeSeries" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Dual Value Schedule -->
<featureType id="ng2_DualValueScheduleType" table="ng2_schedule" objectClassId="11032" path="DualValueSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="idleValue" schema="ng2">
<attribute column="idle_value" type="double" path="." schema="ng2"/>
<attribute column="idle_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="usageValue" schema="ng2">
<attribute column="usage_value" type="double" path="." schema="ng2"/>
<attribute column="usage_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="start_usage_time" type="timestamp" path="startUsageTime" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="end_usage_time" type="timestamp" path="endUsageTime" schema="ng2"/>
</featureType>
<!-- Composite Schedule -->
<featureType id="ng2_CompositeScheduleType" table="ng2_schedule" objectClassId="11033" path="CompositeSchedule" schema="ng2">
<extension base="ng2_AbstractScheduleType"/>
<featureProperty minOccurs="1" target="ng2_ScheduleComponentType" path="scheduleComponent" schema="ng2" relationType="composition">
<join table="ng2_schedule_component" fromColumn="id" toColumn="parent_schedule_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Schedule Component -->
<featureType id="ng2_ScheduleComponentType" table="ng2_schedule_component" objectClassId="11034" path="ScheduleComponent" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="repetitions" type="integer" path="repetitions" schema="ng2"/>
<complexAttribute maxOccurs="1" path="additionalGap" schema="ng2">
<attribute column="additional_gap" type="double" path="." schema="ng2"/>
<attribute column="additional_gap_unit" type="string" path="@unit" schema="gml"/>
<!-- <attribute column="additional_gap_radix" type="integer" path="@radix" schema="gml"/> -->
<!-- <attribute column="additional_gap_factor" type="integer" path="@factor" schema="gml"/> -->
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_AbstractScheduleType" path="scheduleComponentMember" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Energy Performance Certificate -->
<featureType id="ng2_EnergyPerformanceCertificateType" table="ng2_energy_perf_cert" objectClassId="11040" path="EnergyPerformanceCertificate" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="value" schema="ng2">
<attribute column="value" type="double" path="." schema="ng2"/>
<attribute column="value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="label" type="string" path="label" schema="ng2"/>
<attribute maxOccurs="1" column="issue_date" type="date" path="issueDate" schema="ng2"/>
<attribute maxOccurs="1" column="expiration_date" type="date" path="expirationDate" schema="ng2"/>
<attribute maxOccurs="1" column="cert_method" type="string" path="certificationMethod" schema="ng2"/>
<attribute maxOccurs="1" column="cert_uri" type="string" path="certificationURI" schema="ng2"/>
</featureType>
<!-- Refurbishment Measure -->
<featureType id="ng2_RefurbishmentMeasureType" table="ng2_refurbishment_measure" objectClassId="11041" path="RefurbishmentMeasure" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="0" maxOccurs="1" column="start_date" type="date" path="startDate" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="end_date" type="date" path="endDate" schema="ng2"/>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Utility Network Connection -->
<featureType id="ng2_UtilityNetworkConnectionType" table="ng2_utl_ntw_connection" objectClassId="11042" path="UtilityNetworkConnection" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="networkType" schema="ng2">
<attribute column="network_type" type="string" path="." schema="ng2"/>
<attribute column="network_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="connection_status" type="string" path="connectionStatus" schema="ng2"/>
<complexAttribute maxOccurs="1" path="functionInNetwork" schema="ng2">
<attribute column="function_in_network" type="string" path="." schema="ng2"/>
<attribute column="function_in_network_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="usageInNetwork" schema="ng2">
<attribute column="usage_in_network" type="string" path="." schema="ng2"/>
<attribute column="usage_in_network_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="network_id" type="string" path="networkID" schema="ng2"/>
<attribute maxOccurs="1" column="network_node_id" type="string" path="networkNodeID" schema="ng2"/>
</featureType>
<!-- Weather Data -->
<featureType id="ng2_WeatherDataType" table="ng2_weather_data" objectClassId="11043" path="WeatherData" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="valueType" schema="ng2">
<attribute column="value_type" type="string" path="." schema="ng2"/>
<attribute column="value_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="yearlyValue" schema="ng2">
<attribute column="yearly_value" type="double" path="." schema="ng2"/>
<attribute column="yearly_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeSeries" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<geometryProperty maxOccurs="1" inlineColumn="position" type="Point" path="position" schema="ng2"/>
</featureType>
<!-- Abstract Layered Construction -->
<featureType abstract="true" id="ng2_AbstractLayeredConstructionType" table="ng2_layered_construction" objectClassId="11050" path="AbstractLayeredConstruction" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
</featureType>
<!-- Layered Construction -->
<featureType id="ng2_LayeredConstructionType" table="ng2_layered_construction" objectClassId="11051" path="LayeredConstruction" schema="ng2">
<extension base="ng2_AbstractLayeredConstructionType"/>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="uValue" schema="ng2">
<attribute column="u_value" type="double" path="." schema="ng2"/>
<attribute column="u_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="gValue" schema="ng2">
<attribute column="g_value" type="double" path="." schema="ng2"/>
<attribute column="g_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="glazingRatio" schema="ng2">
<attribute column="glazing_ratio" type="double" path="." schema="ng2"/>
<attribute column="glazing_ratio_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexProperty refType="ng2_EmissivityType" path="emissivity" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_ReflectanceType" path="reflectance" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_TransmittanceType" path="transmittance" schema="ng2">
<join table="ng2_optical_property" fromColumn="id" toColumn="layered_construction_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<featureProperty target="ng2_LayerType" path="layer" schema="ng2" relationType="composition">
<join table="ng2_layer" fromColumn="id" toColumn="layered_construction_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Reverse Layered Construction -->
<featureType id="ng2_ReverseLayeredConstructionType" table="ng2_layered_construction" objectClassId="11052" path="ReverseLayeredConstruction" schema="ng2">
<extension base="ng2_AbstractLayeredConstructionType"/>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_LayeredConstructionType" path="baseLayeredConstruction" schema="ng2" relationType="association">
<join table="ng2_layered_construction" fromColumn="layered_construction_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Layer -->
<featureType id="ng2_LayerType" table="ng2_layer" objectClassId="11053" path="Layer" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="thickness" schema="ng2">
<attribute column="thickness" type="double" path="." schema="ng2"/>
<attribute column="thickness_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty minOccurs="1" maxOccurs="1" target="ng2_AbstractMaterialType" path="material" schema="ng2" relationType="aggregation">
<join table="ng2_material" fromColumn="material_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Abstract Material -->
<featureType abstract="true" id="ng2_AbstractMaterialType" table="ng2_material" objectClassId="11054" path="AbstractMaterial" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="libraryCode" schema="ng2">
<attribute column="library_code" type="string" path="." schema="ng2"/>
<attribute column="library_code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Solid Material -->
<featureType id="ng2_SolidMaterialType" table="ng2_material" objectClassId="11055" path="SolidMaterial" schema="ng2">
<extension base="ng2_AbstractMaterialType"/>
<complexAttribute maxOccurs="1" path="thermalConductivity" schema="ng2">
<attribute column="thm_conductivity" type="double" path="." schema="ng2"/>
<attribute column="thm_conductivity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="density" schema="ng2">
<attribute column="density" type="double" path="." schema="ng2"/>
<attribute column="density_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="specificHeatCapacity" schema="ng2">
<attribute column="spec_heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="spec_heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="permeance" schema="ng2">
<attribute column="permeance" type="double" path="." schema="ng2"/>
<attribute column="permeance_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="porosity" schema="ng2">
<attribute column="porosity" type="double" path="." schema="ng2"/>
<attribute column="porosity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="embodiedEnergy" schema="ng2">
<attribute column="embodied_energy" type="double" path="." schema="ng2"/>
<attribute column="embodied_energy_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="embodiedCarbon" schema="ng2">
<attribute column="embodied_carbon" type="double" path="." schema="ng2"/>
<attribute column="embodied_carbon_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Gas -->
<featureType id="ng2_GasType" table="ng2_material" objectClassId="11056" path="Gas" schema="ng2">
<extension base="ng2_AbstractMaterialType"/>
<attribute maxOccurs="1" column="is_ventilated" type="boolean" path="isVentilated" schema="ng2"/>
<complexAttribute maxOccurs="1" path="rValue" schema="ng2">
<attribute column="r_value" type="double" path="." schema="ng2"/>
<attribute column="r_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- AbstractResource -->
<featureType abstract="true" id="ng2_AbstractResourceType" table="ng2_resource" objectClassId="11070" path="AbstractResource" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<attribute minOccurs="1" maxOccurs="1" column="status" type="string" path="status" schema="ng2"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="operationType" schema="ng2">
<attribute column="operation_type" type="string" path="." schema="ng2"/>
<attribute column="operation_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="amountType" schema="ng2">
<attribute column="amount_type" type="string" path="." schema="ng2"/>
<attribute column="amount_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="amount" schema="ng2">
<attribute column="amount" type="double" path="." schema="ng2"/>
<attribute column="amount_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractTimeSeriesType" path="timeDependentAmount" schema="ng2" relationType="composition">
<join table="ng2_time_series" fromColumn="time_series_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<attribute minOccurs="1" maxOccurs="1" column="is_amount_normalized" type="boolean" path="isAmountNormalized" schema="ng2"/>
<complexAttribute maxOccurs="1" path="normalizationValue" schema="ng2">
<attribute column="normalization_value" type="double" path="." schema="ng2"/>
<attribute column="normalization_value_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute column="normalization_param" type="string" maxOccurs="1" path="normalizationParameter" schema="ng2"/>
<complexAttribute maxOccurs="1" path="co2Equivalent" schema="ng2">
<attribute column="co2_equivalent" type="double" path="." schema="ng2"/>
<attribute column="co2_equivalent_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="year" type="integer" path="year" schema="ng2"/>
<complexAttribute maxOccurs="1" path="costsMoney" schema="ng2">
<attribute column="costs_money" type="double" path="." schema="ng2"/>
<attribute column="co2_equivalent_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="yieldsMoney" schema="ng2">
<attribute column="yields_money" type="double" path="." schema="ng2"/>
<attribute column="yields_money_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Construction Material -->
<featureType id="ng2_ConstructionMaterialType" table="ng2_resource" objectClassId="11071" path="ConstructionMaterial" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Energy -->
<featureType id="ng2_EnergyType" table="ng2_resource" objectClassId="11072" path="Energy" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="energyCarrier" schema="ng2">
<attribute column="energy_carrier" type="string" path="." schema="ng2"/>
<attribute column="energy_carrier_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="maximumLoad" schema="ng2">
<attribute column="maximum_load" type="double" path="." schema="ng2"/>
<attribute column="maximum_load_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="source" schema="ng2">
<attribute column="source" type="string" path="." schema="ng2"/>
<attribute column="source_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Food -->
<featureType id="ng2_FoodType" table="ng2_resource" objectClassId="11073" path="Food" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Other Resource -->
<featureType id="ng2_OtherResourceType" table="ng2_resource" objectClassId="11074" path="OtherResource" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Urban Space -->
<featureType id="ng2_UrbanSpaceType" table="ng2_resource" objectClassId="11075" path="UrbanSpace" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Resources: Waste -->
<featureType id="ng2_WasteType" table="ng2_resource" objectClassId="11076" path="Waste" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_dangerous" type="boolean" path="isDangerous" schema="ng2"/>
<attribute maxOccurs="1" column="is_recyclable" type="boolean" path="isRecyclable" schema="ng2"/>
</featureType>
<!-- Resources: Water -->
<featureType id="ng2_WaterType" table="ng2_resource" objectClassId="11077" path="Water" schema="ng2">
<extension base="ng2_AbstractResourceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="endUse" schema="ng2">
<attribute column="enduse" type="string" path="." schema="ng2"/>
<attribute column="enduse_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Abstract Building Partition -->
<featureType abstract="true" id="ng2_AbstractBuildingPartitionType" table="ng2_building_partition" objectClassId="11080" path="AbstractBuildingPartition" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexProperty refType="ng2_QualifiedAreaType" path="area" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_partition_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedVolumeType" path="volume" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_partition_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<geometryProperty maxOccurs="1" lod="1" refColumn="lod1_solid_id" type="AbstractSolid" path="lod1Solid" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="2" refColumn="lod2_solid_id" type="AbstractSolid" path="lod2Solid" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="3" refColumn="lod3_solid_id" type="AbstractSolid" path="lod3Solid" schema="ng2"/>
</featureType>
<!-- Abstract Thermal Zone -->
<featureType abstract="true" id="ng2_AbstractThermalZoneType" table="ng2_building_partition" objectClassId="11045" path="AbstractThermalZone" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
<featureProperty target="ng2_AbstractUsageZoneType" path="usageZone" schema="ng2" relationType="association">
<join table="ng2_building_partition" fromColumn="id" toColumn="thermal_zone_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Thermal Zone -->
<featureType id="ng2_ThermalZoneType" table="ng2_building_partition" objectClassId="11081" path="ThermalZone" schema="ng2">
<extension base="ng2_AbstractThermalZoneType"/>
<complexAttribute maxOccurs="1" path="heatCapacity" schema="ng2">
<attribute column="heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="infiltrationRate" schema="ng2">
<attribute column="infiltration_rate" type="double" path="." schema="ng2"/>
<attribute column="infiltration_rate_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="is_cooled" type="boolean" path="isCooled" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="is_heated" type="boolean" path="isHeated" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="coincides_with_lod2_hull" type="boolean" path="coincidesWithLod2Hull" schema="ng2"/>
<attribute minOccurs="1" maxOccurs="1" column="coincides_with_lod3_hull" type="boolean" path="coincidesWithLod3Hull" schema="ng2"/>
<featureProperty target="AbstractBoundarySurfaceType" path="thermalBoundary" schema="ng2" relationType="composition">
<joinTable table="ng2_them_surf_to_thermal_zone">
<join table="ng2_building_partition" fromColumn="thermal_zone_id" toColumn="id" toRole="parent"/>
<inverseJoin table="thematic_surface" fromColumn="thematic_surface_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</inverseJoin>
</joinTable>
</featureProperty>
<!-- To be tested: Improved version that does not require the association table -->
<!--
<featureProperty target="AbstractBoundarySurfaceType" path="thermalBoundary" schema="ng2">
<joinTable table="ng2_thematic_surface">
<join table="ng2_building_partition" fromColumn="id" toColumn="thermal_zone_id" toRole="parent"/>
<inverseJoin table="thematic_surface" fromColumn="id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</inverseJoin>
</joinTable>
</featureProperty>
-->
</featureType>
<!-- Attic Floor Surface -->
<featureType id="ng2_AtticFloorSurfaceType" table="thematic_surface" objectClassId="11082" path="AtticFloorSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Basement Ceiling Surface -->
<featureType id="ng2_BasementCeilingSurfaceType" table="thematic_surface" objectClassId="11083" path="BasementCeilingSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Intermediate Floor Surface -->
<featureType id="ng2_IntermediateFloorSurfaceType" table="thematic_surface" objectClassId="11084" path="IntermediateFloorSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Party Wall Surface -->
<featureType id="ng2_PartyWallSurfaceType" table="thematic_surface" objectClassId="11085" path="PartyWallSurface" schema="ng2">
<extension base="AbstractBoundarySurfaceType"/>
</featureType>
<!-- Abstract Usage Zone -->
<featureType abstract="true" id="ng2_AbstractUsageZoneType" table="ng2_building_partition" objectClassId="11090" path="AbstractUsageZone" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
<featureProperty target="ng2_AbstractBuildingUnitType" path="buildingUnit" schema="ng2" relationType="association">
<join table="ng2_building_partition" fromColumn="id" toColumn="usage_zone_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Usage Zone -->
<featureType id="ng2_UsageZoneType" table="ng2_building_partition" objectClassId="11091" path="UsageZone" schema="ng2">
<extension base="ng2_AbstractUsageZoneType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute column="is_primary" type="boolean" maxOccurs="1" path="isPrimary" schema="ng2"/>
<attribute column="num_of_building_units" type="integer" maxOccurs="1" path="numberOfBuildingUnits" schema="ng2"/>
<complexAttribute maxOccurs="1" path="internalHeatGains" schema="ng2">
<attribute column="int_heat_gains" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsConvectiveFraction" schema="ng2">
<attribute column="int_heat_gains_conv" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsLatentFraction" schema="ng2">
<attribute column="int_heat_gains_lat" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="internalHeatGainsRadiantFraction" schema="ng2">
<attribute column="int_heat_gains_rad" type="double" path="." schema="ng2"/>
<attribute column="int_heat_gains_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="coolingSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="cooling_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="heatingSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="heating_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="ventilationSchedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="ventilation_schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_OccupantsType" path="occupiedBy" schema="ng2" relationType="aggregation">
<join table="ng2_occupants" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Abstract Building Unit -->
<featureType abstract="true" id="ng2_AbstractBuildingUnitType" table="ng2_building_partition" objectClassId="11092" path="AbstractBuildingUnit" schema="ng2">
<extension base="ng2_AbstractBuildingPartitionType"/>
</featureType>
<!-- Building Unit -->
<featureType id="ng2_BuildingUnitType" table="ng2_building_partition" objectClassId="11093" path="BuildingUnit" schema="ng2">
<extension base="ng2_AbstractBuildingUnitType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="num_of_rooms" type="integer" path="numberOfRooms" schema="ng2"/>
<attribute maxOccurs="1" column="owner_name" type="string" path="ownerName" schema="ng2"/>
<complexAttribute maxOccurs="1" path="ownershipType" schema="ng2">
<attribute column="ownership_type" type="string" path="." schema="ng2"/>
<attribute column="ownership_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty target="AddressType" path="address" schema="ng2" relationType="association">
<joinTable table="ng2_address_to_building_unit">
<join table="ng2_building_partition" fromColumn="building_unit_id" toColumn="id" toRole="parent"/>
<inverseJoin table="address" fromColumn="address_id" toColumn="id" toRole="parent"/>
</joinTable>
</featureProperty>
<featureProperty target="ng2_EnergyPerformanceCertificateType" path="energyPerformanceCertificate" schema="ng2" relationType="composition">
<join table="ng2_energy_perf_cert" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_RefurbishmentMeasureType" path="refurbishmentMeasure" schema="ng2" relationType="composition">
<join table="ng2_refurbishment_measure" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_OccupantsType" path="occupiedBy" schema="ng2" relationType="aggregation">
<join table="ng2_occupants" fromColumn="id" toColumn="building_partition_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Occupants -->
<featureType id="ng2_OccupantsType" table="ng2_occupants" objectClassId="11094" path="Occupants" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="type" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="num_of_occupants" type="integer" path="numberOfOccupants" schema="ng2"/>
<complexAttribute maxOccurs="1" path="heatDissipation" schema="ng2">
<attribute column="heat_diss" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationConvectiveFraction" schema="ng2">
<attribute column="heat_diss_conv" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationLatentFraction" schema="ng2">
<attribute column="heat_diss_lat" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationRadiantFraction" schema="ng2">
<attribute column="heat_diss_rad" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageDietType" schema="ng2">
<attribute column="avg_diet_type" type="string" path="." schema="ng2"/>
<attribute column="avg_diet_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageIncomeLevel" schema="ng2">
<attribute column="avg_income_level" type="string" path="." schema="ng2"/>
<attribute column="avg_income_level_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="averageInstructionLevel" schema="ng2">
<attribute column="avg_instr_level" type="string" path="." schema="ng2"/>
<attribute column="avg_instr_level_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="occupancyRate" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Device Operation -->
<featureType id="ng2_DeviceOperationType" table="ng2_device_operation" objectClassId="11100" path="DeviceOperation" schema="ng2">
<extension base="AbstractFeatureType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="yearly_global_efficiency" type="double" path="yearlyGlobalEfficiency" schema="ng2"/>
<featureProperty maxOccurs="1" target="ng2_AbstractScheduleType" path="schedule" schema="ng2" relationType="aggregation">
<join table="ng2_schedule" fromColumn="schedule_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Abstract Device -->
<featureType abstract="true" id="ng2_AbstractDeviceType" table="ng2_device" objectClassId="11101" path="AbstractDevice" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<attribute maxOccurs="1" column="model" type="string" path="model" schema="ng2"/>
<attribute maxOccurs="1" column="year_of_manufacture" type="integer" path="yearOfManufacture" schema="ng2"/>
<attribute maxOccurs="1" column="num_of_devices" type="integer" path="numberOfDevices" schema="ng2"/>
<complexAttribute maxOccurs="1" path="installedPower" schema="ng2">
<attribute column="installed_power" type="double" path="." schema="ng2"/>
<attribute column="installed_power_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="nominalEfficiency" schema="ng2">
<attribute column="nominal_efficiency" type="double" path="." schema="ng2"/>
<attribute column="nominal_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="efficiency_indicator" type="string" path="efficiencyIndicator" schema="ng2"/>
<complexAttribute maxOccurs="1" path="heatDissipation" schema="ng2">
<attribute column="heat_diss" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationConvectiveFraction" schema="ng2">
<attribute column="heat_diss_conv" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_conv_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationLatentFraction" schema="ng2">
<attribute column="heat_diss_lat" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_lat_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="heatDissipationRadiantFraction" schema="ng2">
<attribute column="heat_diss_rad" type="double" path="." schema="ng2"/>
<attribute column="heat_diss_rad_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<featureProperty target="ng2_DeviceOperationType" path="deviceOperation" schema="ng2" relationType="aggregation">
<join table="ng2_device_operation" fromColumn="id" toColumn="device_id" toRole="child"/>
</featureProperty>
</featureType>
<!-- Boiler -->
<featureType id="ng2_BoilerType" table="ng2_device" objectClassId="11102" path="Boiler" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<attribute column="has_condensation" type="boolean" minOccurs="1" maxOccurs="1" path="hasCondensation" schema="ng2"/>
</featureType>
<!-- Generic Device -->
<featureType id="ng2_GenericDeviceType" table="ng2_device" objectClassId="11103" path="GenericDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Generic Electrical Device -->
<featureType id="ng2_GenericElectricalDeviceType" table="ng2_device" objectClassId="11104" path="GenericElectricalDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Lighting Device -->
<featureType id="ng2_LightingDeviceType" table="ng2_device" objectClassId="11105" path="LightingDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
</featureType>
<!-- Heat Pump -->
<featureType id="ng2_HeatPumpType" table="ng2_device" objectClassId="11106" path="HeatPump" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="heatSource" schema="ng2">
<attribute column="heat_source" type="string" path="." schema="ng2"/>
<attribute column="heat_source_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="copSourceTemperature" schema="ng2">
<attribute column="cop_source_temp" type="double" path="." schema="ng2"/>
<attribute column="cop_source_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="copOperationTemperature" schema="ng2">
<attribute column="cop_operation_temp" type="double" path="." schema="ng2"/>
<attribute column="cop_operation_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Movable Shading Device -->
<featureType id="ng2_MovableShadingDeviceType" table="ng2_device" objectClassId="11107" path="MovableShadingDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute minOccurs="1" maxOccurs="1" column="installation_side" type="string" path="installationSide" schema="ng2"/>
<complexAttribute maxOccurs="1" path="maximumCoverRatio" schema="ng2">
<attribute column="max_cover_ratio" type="double" path="." schema="ng2"/>
<attribute column="max_cover_ratio_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexProperty maxOccurs="1" refType="ng2_TransmittanceType" path="transmittance" schema="ng2">
<join table="ng2_optical_property" fromColumn="transmittance_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
</featureType>
<!-- Electrical Storage Device -->
<featureType id="ng2_ElectricalStorageDeviceType" table="ng2_storage_device" objectClassId="11108" path="ElectricalStorageDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="batteryTechnology" schema="ng2">
<attribute column="batt_techn" type="string" path="." schema="ng2"/>
<attribute column="batt_techn_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="powerCapacity" schema="ng2">
<attribute column="power_capacity" type="double" path="." schema="ng2"/>
<attribute column="power_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Thermal Storage Device -->
<featureType id="ng2_ThermalStorageDeviceType" table="ng2_storage_device" objectClassId="11109" path="ThermalStorageDevice" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="preparationTemperature" schema="ng2">
<attribute column="preparation_temp" type="double" path="." schema="ng2"/>
<attribute column="preparation_temp_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="medium" schema="ng2">
<attribute column="medium" type="string" path="." schema="ng2"/>
<attribute column="medium_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="thermalLossesFactor" schema="ng2">
<attribute column="thm_losses_factor_uom" type="string" path="@uom" schema="gml"/>
<attribute column="thm_losses_factor" type="double" path="." schema="ng2"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="volume" schema="ng2">
<attribute column="volume" type="double" path="." schema="ng2"/>
<attribute column="volume_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Abstract Solar Collector -->
<featureType abstract="true" id="ng2_AbstractSolarCollectorType" table="ng2_solar_collector" objectClassId="11110" path="AbstractSolarCollector" schema="ng2">
<extension base="ng2_AbstractDeviceType">
<join table="ng2_device" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="moduleArea" schema="ng2">
<attribute column="module_area" type="double" path="." schema="ng2"/>
<attribute column="module_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="apertureArea" schema="ng2">
<attribute column="aperture_area" type="double" path="." schema="ng2"/>
<attribute column="aperture_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="azimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="inclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<geometryProperty maxOccurs="1" lod="2" refColumn="lod2_multi_surface_id" type="MultiSurface" path="lod2MultiSurface" schema="ng2"/>
<geometryProperty maxOccurs="1" lod="3" refColumn="lod3_multi_surface_id" type="MultiSurface" path="lod3MultiSurface" schema="ng2"/>
</featureType>
<!-- Generic Solar Collector -->
<featureType id="ng2_GenericSolarCollectorType" table="ng2_solar_collector" objectClassId="11111" path="GenericSolarCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
</featureType>
<!-- Photovoltaic Collector -->
<featureType id="ng2_PhotovoltaicCollectorType" table="ng2_solar_collector" objectClassId="11112" path="PhotovoltaicCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="cellType" schema="ng2">
<attribute column="cell_type" type="string" path="." schema="ng2"/>
<attribute column="cell_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Solar Thermal Collector -->
<featureType id="ng2_SolarThermalCollectorType" table="ng2_solar_collector" objectClassId="11113" path="SolarThermalCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="collectorType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="opticalEfficiency" schema="ng2">
<attribute column="opt_efficiency" type="double" path="." schema="ng2"/>
<attribute column="opt_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="lin_heat_loss_coeff" type="double" path="linearHeatLossCoefficient" schema="ng2"/>
<attribute maxOccurs="1" column="quad_heat_loss_coeff" type="double" path="quadraticHeatLossCoefficient" schema="ng2"/>
</featureType>
<!-- Photovoltaic Thermal Collector -->
<featureType id="ng2_PhotovoltaicThermalCollectorType" table="ng2_solar_collector" objectClassId="11114" path="PhotovoltaicThermalCollector" schema="ng2">
<extension base="ng2_AbstractSolarCollectorType"/>
<complexAttribute minOccurs="1" maxOccurs="1" path="collectorType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute minOccurs="1" maxOccurs="1" path="cellType" schema="ng2">
<attribute column="cell_type" type="string" path="." schema="ng2"/>
<attribute column="cell_type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="opticalEfficiency" schema="ng2">
<attribute column="opt_efficiency" type="double" path="." schema="ng2"/>
<attribute column="opt_efficiency_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="lin_heat_loss_coeff" type="double" path="linearHeatLossCoefficient" schema="ng2"/>
<attribute maxOccurs="1" column="quad_heat_loss_coeff" type="double" path="quadraticHeatLossCoefficient" schema="ng2"/>
</featureType>
<!-- Urban Function Area -->
<featureType id="ng2_UrbanFunctionAreaType" table="ng2_urban_function_area" objectClassId="11120" topLevel="true" path="UrbanFunctionArea" schema="ng2">
<extension base="CityObjectGroupType">
<join table="cityobjectgroup" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute minOccurs="1" maxOccurs="1" path="type" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="code" schema="ng2">
<attribute column="code" type="string" path="." schema="ng2"/>
<attribute column="code_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
</featureType>
<!-- Weather Station -->
<featureType id="ng2_WeatherStationType" table="cityobject" objectClassId="11130" topLevel="true" path="WeatherStation" schema="ng2">
<extension base="AbstractCityObjectType"/>
</featureType>
<!-- Abstract Library -->
<featureType abstract="true" id="ng2_AbstractLibraryType" table="ng2_library" objectClassId="11140" path="AbstractLibrary" schema="ng2">
<extension base="AbstractCityObjectType">
<join table="cityobject" fromColumn="id" toColumn="id" toRole="parent"/>
</extension>
<complexAttribute maxOccurs="1" path="type" schema="ng2">
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
<attribute column="type" type="string" path="." schema="ng2"/>
</complexAttribute>
<attribute maxOccurs="1" column="source" type="string" path="source" schema="ng2"/>
<attribute maxOccurs="1" column="author" type="string" path="author" schema="ng2"/>
</featureType>
<!-- Layered Construction Library -->
<featureType id="ng2_LayeredConstructionLibraryType" table="ng2_library" objectClassId="11141" topLevel="true" path="LayeredConstructionLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractLayeredConstructionType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_layered_construction" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Material Library -->
<featureType id="ng2_MaterialLibraryType" table="ng2_library" objectClassId="11142" topLevel="true" path="MaterialLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractMaterialType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_material" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
<!-- Schedule Library -->
<featureType id="ng2_ScheduleLibraryType" table="ng2_library" objectClassId="11143" topLevel="true" path="ScheduleLibrary" schema="ng2">
<extension base="ng2_AbstractLibraryType"/>
<featureProperty target="ng2_AbstractScheduleType" path="libraryMember" schema="ng2" relationType="composition">
<join table="ng2_schedule" fromColumn="id" toColumn="library_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</featureType>
</featureTypes>
<!-- Mapping of new properties of existing CityGML CityObjects classes extended via ADE hook -->
<propertyInjections>
<!-- ADE _CityObject -->
<propertyInjection table="ng2_cityobject" defaultBase="AbstractCityObjectType">
<join table="ng2_cityobject" fromColumn="id" toColumn="id" toRole="child"/>
<complexProperty refType="ng2_CityObjectRelationType" path="relatedTo" schema="ng2">
<join table="ng2_ctyobj_relation" fromColumn="id" toColumn="ng2_cityobject_id" toRole="child"/>
</complexProperty>
<featureProperty target="ng2_UtilityNetworkConnectionType" path="utilityNetworkConnection" schema="ng2" relationType="composition">
<join table="ng2_utl_ntw_connection" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</featureProperty>
<featureProperty maxOccurs="1" target="ng2_AbstractLayeredConstructionType" path="layeredConstruction" schema="ng2" relationType="association"> <!-- could be "aggregation" -->
<join table="ng2_layered_construction" fromColumn="layered_construction_id" toColumn="id" toRole="parent">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractDeviceType" path="device" schema="ng2" relationType="aggregation">
<join table="ng2_device" fromColumn="id" toColumn="cityobject_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractResourceType" path="resource" schema="ng2" relationType="composition">
<join table="ng2_resource" fromColumn="id" toColumn="cityobject_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<complexProperty refType="ng2_SuitabilityType" path="suitability" schema="ng2">
<join table="ng2_suitability" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</complexProperty>
<featureProperty target="ng2_WeatherDataType" path="weatherData" schema="ng2" relationType="composition">
<join table="ng2_weather_data" fromColumn="id" toColumn="cityobject_id" toRole="child"/>
</featureProperty>
<geometryProperty inlineColumn="ref_point" type="Point" path="referencePoint" schema="ng2"/>
</propertyInjection>
<!-- ADE Building -->
<propertyInjection table="ng2_building" defaultBase="AbstractBuildingType">
<join table="ng2_building" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgType" schema="ng2">
<attribute column="type" type="string" path="." schema="ng2"/>
<attribute column="type_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgConstructionWeight" schema="ng2">
<attribute column="constr_weight" type="string" path="." schema="ng2"/>
<attribute column="constr_weight_codespace" type="string" path="@codespace" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_protected" type="boolean" path="bdgIsProtected" schema="ng2"/>
<attribute maxOccurs="1" column="attic_thm_status" type="string" path="bdgAtticThermalStatus" schema="ng2"/>
<attribute maxOccurs="1" column="basement_thm_status" type="string" path="bdgBasementThermalStatus" schema="ng2"/>
<complexProperty refType="ng2_QualifiedHeightType" path="bdgHeight" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedAreaType" path="bdgArea" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<complexProperty refType="ng2_QualifiedVolumeType" path="bdgVolume" schema="ng2">
<join table="ng2_qualified_attribute" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</complexProperty>
<featureProperty target="ng2_RefurbishmentMeasureType" path="refurbishmentMeasure" schema="ng2" relationType="composition">
<join table="ng2_refurbishment_measure" fromColumn="id" toColumn="building_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_EnergyPerformanceCertificateType" path="energyPerformanceCertificate" schema="ng2" relationType="composition">
<join table="ng2_energy_perf_cert" fromColumn="id" toColumn="building_id" toRole="child"/>
</featureProperty>
<featureProperty target="ng2_AbstractBuildingUnitType" path="buildingUnit" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractThermalZoneType" path="thermalZone" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
<featureProperty target="ng2_AbstractUsageZoneType" path="usageZone" schema="ng2" relationType="composition">
<join table="ng2_building_partition" fromColumn="id" toColumn="building_id" toRole="child">
<condition column="objectclass_id" value="${target.objectclass_id}" type="integer"/>
</join>
</featureProperty>
</propertyInjection>
<!-- (Building) ADE _BoundarySurface -->
<propertyInjection table="ng2_thematic_surface" defaultBase="AbstractBoundarySurfaceType">
<join table="ng2_thematic_surface" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgBdrySurfAzimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfGroundViewFactor" schema="ng2">
<attribute column="ground_view_factor" type="double" path="." schema="ng2"/>
<attribute column="ground_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfHeatCapacity" schema="ng2">
<attribute column="heat_capacity" type="double" path="." schema="ng2"/>
<attribute column="heat_capacity_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfInclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<attribute maxOccurs="1" column="is_adiabatic" type="boolean" path="bdgBdrySurfIsAdiabatic" schema="ng2"/>
<complexAttribute maxOccurs="1" path="bdgBdrySurfOpaqueSurfaceArea" schema="ng2">
<attribute column="opaque_surf_area" type="double" path="." schema="ng2"/>
<attribute column="opaque_surf_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfOpeningToSurfaceRatio" schema="ng2">
<attribute column="open_to_surf_ration" type="double" path="." schema="ng2"/>
<attribute column="open_to_surf_ration_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfSkyViewFactor" schema="ng2">
<attribute column="sky_view_factor" type="double" path="." schema="ng2"/>
<attribute column="sky_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfThickness" schema="ng2">
<attribute column="thickness" type="double" path="." schema="ng2"/>
<attribute column="thickness_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgBdrySurfTotalSurfaceArea" schema="ng2">
<attribute column="total_surf_area" type="double" path="." schema="ng2"/>
<attribute column="total_surf_area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</propertyInjection>
<!-- (Building) ADE _Opening -->
<propertyInjection table="ng2_opening" defaultBase="AbstractOpeningType">
<join table="ng2_opening" fromColumn="id" toColumn="id" toRole="child"/>
<complexAttribute maxOccurs="1" path="bdgOpnArea" schema="ng2">
<attribute column="area" type="double" path="." schema="ng2"/>
<attribute column="area_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnAzimuth" schema="ng2">
<attribute column="azimuth" type="double" path="." schema="ng2"/>
<attribute column="azimuth_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnGroundViewFactor" schema="ng2">
<attribute column="ground_view_factor" type="double" path="." schema="ng2"/>
<attribute column="ground_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnInclination" schema="ng2">
<attribute column="inclination" type="double" path="." schema="ng2"/>
<attribute column="inclination_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
<complexAttribute maxOccurs="1" path="bdgOpnSkyViewFactor" schema="ng2">
<attribute column="sky_view_factor" type="double" path="." schema="ng2"/>
<attribute column="sky_view_factor_uom" type="string" path="@uom" schema="gml"/>
</complexAttribute>
</propertyInjection>
</propertyInjections>
</schemaMapping>
rootProject.name = 'energy-ade2-citydb'
includeBuild '../energy-ade2-citygml4j'
\ No newline at end of file
package de.stuttgart.hft;
import de.stuttgart.hft.ade.energy2.exporter.ExportManager;
import de.stuttgart.hft.ade.energy2.importer.ImportManager;
import de.stuttgart.hft.ade.energy2.schema.ObjectMapper;
import de.stuttgart.hft.ade.energy2.schema.SchemaMapper;
import org.citydb.core.ade.ADEExtension;
import org.citydb.core.ade.ADEExtensionException;
import org.citydb.core.ade.ADEObjectMapper;
import org.citydb.core.ade.exporter.ADEExportManager;
import org.citydb.core.ade.importer.ADEImportManager;
import org.citydb.core.database.schema.mapping.SchemaMapping;
import org.citydb.gui.ImpExpLauncher;
import org.citygml4j.ade.energy.EnergyADEContext;
import org.citygml4j.model.citygml.ade.binding.ADEContext;
import java.nio.file.Paths;
import java.util.Collections;
import java.util.List;
public class EnergyADEExtension extends ADEExtension {
private final ObjectMapper objectMapper = new ObjectMapper();
private final SchemaMapper schemaMapper = new SchemaMapper();
private final EnergyADEContext context = new EnergyADEContext();
public static void main(String[] args) {
EnergyADEExtension adeExtension = new EnergyADEExtension();
adeExtension.setBasePath(Paths.get("resources/database").toAbsolutePath());
new ImpExpLauncher().withArgs(args)
.withADEExtension(adeExtension)
.start();
}
@Override
public void init(SchemaMapping schemaMapping) throws ADEExtensionException {
objectMapper.populateObjectClassIds(schemaMapping);
schemaMapper.populateSchemaNames(schemaMapping.getMetadata().getDBPrefix().toLowerCase());
}
@Override
public List<ADEContext> getADEContexts() {
return Collections.singletonList(context);
}
@Override
public ADEObjectMapper getADEObjectMapper() {
return objectMapper;
}
@Override
public ADEImportManager createADEImportManager() {
return new ImportManager(this, schemaMapper);
}
@Override
public ADEExportManager createADEExportManager() {
return new ExportManager(objectMapper, schemaMapper);
}
}
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