8. Changelog

This appendix provides an overview of the most important changes in version 4.0 of the 3D City Database and version 4.1 of the Importer/Exporter compared to the previous release version 3.3.0.

8.1. 3D City Database relational schema

8.1.1. General changes

  • New metadata tables ADE, SCHEMA, SCHEMA_REFERENCING and SCHEMA_TO_OBJECTCLASS for registering CityGML ADEs
  • Added OBJECTCLASS_ID column to all feature tables to distinguish objects from CityGML ADEs. Also extended OBJECTCLASS table by more feature-specific details and inserted new entries for feature properties such as geometry, generic attributes etc.
  • Added NOT NULL constraints on each OBJECTCLASS_ID column
  • New prefilled metadata table AGGREGATION_INFO that supports the automatic generation of DELETE and ENVELOPE scripts
  • Changed delete rule of one foreign key in link tables to ON DELETE CASCADE to produce better delete scripts

8.2. 3D City Database scripts

  • Moved interactive prompts from SQL to batch/shell scripts for better setup automation
  • Provide batch (Windows) and shell scripts (UNIX, macOS) for both PostgreSQL and Oracle DBMS
  • Re-added scripts to create a read-only user (UTIL folder), called GRANT_ACCESS and REVOKE_ACCESS (removed in v3.x). Also includes a read-write option.
  • New MIGRATION scripts to upgrade from a 3DCityDB v2.1.0 or v3.3.2 to v4.0.0.
  • Tidier folder and script structure:
    • Removed folders PL_SQL (Oracle) and PL_pgSQL (PostgreSQL) to make CITYDB_PKG a top-level directory under the SQLScripts folder
    • Moved OBJECTCLASS_INSTANCES script to SCHEMA/OBJECTCLASS folder
    • PostgreSQL: New SCHEMAS directory in UTIL folder
    • Oracle: One instead of two CREATE_DB scripts
    • Oracle: Moved versioning scripts to its own directory in the UTIL folder
    • Oracle: Renamed CREATE_DB folder in UTIL directory to HINTS
  • Oracle: Better treatment if SDO_GEORASTER support is missing
  • Oracle: Defining spatial metadata on all geometry columns with new function set_schema_sdo_metadata in CITYDB_CONSTRAINT package instead of a hard-coded part in SPATIAL_INDEX.sql script

8.3. 3D City Database stored procedures

8.3.1. General changes

  • New packages: CITYDB_CONSTRAINT and CITYDB_OBJCLASS
  • Removed parts with dynamic SQL where possible. Required renaming of some function arguments to avoid conflicts with column names in querys
  • PostgreSQL: Added volatility categories for better query planning

8.3.2. UTIL package

  • Updated version numbers in citydb_version function
  • Moved update_schema_constraints and update_table_constraint procedures into new CITYDB_CONSTRAINT package and renamed them to set_schema_fkey_delete_rule and set_fkey_delete_rule. Change data type for on_delete_param to CHAR as only one letter is needed to set a new delete rule: ‘a’ for ON DELETE NO ACTION , ‘n’for ON DELETE SET NULL (‘n’), ‘c’ for ON DELETE CASCADE or (PostgreSQL-only) ‘r’ for ON DELETE RESTRICT
  • Moved objectclass_id_to_table_name function to new CITYDB_OBJCLASS package.
  • Added schema_name parameter to functions db_metadata and db_info
  • Removed schema_name parameter from get_seq_values function
  • Oracle: Removed schema_name parameter from construct_solid function

8.3.3. IDX package

  • Oracle: Added schema_name parameter to get_index function
  • Oracle: Dropping spatial indexes will not delete spatial metadata anymore

8.3.4. SRS package

  • Added schema_name parameter to is_db_ref_sys_3d function
  • Oracle: Added schema_name parameter to get_dim function
  • Oracle: Do not delete spatial metadata when spatial index is not valid

8.3.5. STAT package

  • Exclude new metadata tables from database report

8.3.6. DELETE package

  • Aligned API of Oracle version with PostgreSQL (no more _pre and _post methods)
  • Two delete endpoints are provided for each feature class: Delete by single ID value or delete by a set of IDs
  • All 1:n references are deleted right away. Replaced all explicit cleanup scripts (except for cleanup_appearances) with one generic cleanup function
  • New prefix del_ instead of delete_
  • The DELETE scripts have been generated automatically by the ADE Manager Plugin of the Importer/Exporter. This process shall be repeated when introducing ADE extensions to the database schema.

8.3.7. DELETE_BY_LINEAGE package

  • The package and included stored procedures have been removed
  • New function del_delete_cityobjects_by_lineage in DELETE package

8.3.8. ENVELOPE package

  • New prefix env_ instead of get_envelope_ (except for get_envelope_cityobjects function)
  • The ENVELOPE scripts have been generated automatically by the ADE Manager Plugin of the Importer/Exporter. This process shall be repeated when introducing ADE extensions to the database schema.

8.4. 3D City Database Importer/Exporter

The new version 4.1 of the Importer/Exporter contains many bug fixes as well as stability and performance improvements. A full list of fixes and changes is available from the GitHub repository at https://github.com/3dcitydb/importer-exporter.

8.4.1. General changes

  • Java 8 is required since version 3.3.0.
  • The Importer/Exporter can now connect to both Oracle and PostgreSQL.
  • Temporary information required during data imports and exports (e.g., for resolving of XLink references) can now optionally be stored to a local file-based database instead of using temporary tables in the 3D City Database instance.
  • 3.1: Importer/Exporter now checks the version of the 3DCityDB before connecting
  • 3.1: Re-Added user dialog to control GMLID_CODESPACE during import
  • 3.1: Added user dialog to calculate the ENVELOPE of city objects in the database
  • 3.3: The location of the main config file (‘project.xml’) has been changed to %HOMEDRIVE%%HOMEPATH%3dcitydbimporter-exporterconfig (Windows 7 and higher) respectively $HOME/3dcitydb/importer-exporter/config (UNIX/Linux, Mac OS families). Old config files can still be loaded manually (note: was ../importer-exporter-3.0/.. in versions 3.0 to 3.2)
  • 4.1: OSM Nominatim is now used as default geocoder for the map window. Google Map API services can still be used for the map window and for KML/COLLADA exports but require an API key.
  • 4.2: Reworked Plugin API to support non-GUI plugins.

8.4.2. CityGML import

  • 4.2: Fixed broken feature type filter for CityGML imports.
  • 4.2: Added possibility to define a gml:id prefix for the UUIDs that are created during CityGML imports.
  • 4.1: Added support for importing CityGML data from (G)ZIP files.
  • CityGML import now supports CityGML versions 2.0, 1.0 and 0.4.
  • A new import log optionally tracks all successfully imported top-level city objects in a separate CSV file. In case an import process aborts abnormally, this file can be used to understand which city objects have been processed and stored in the database before termination.
  • The import process now follows a fail-on-first-error strategy, i.e. the import terminates upon the first error thrown instead of trying to continue.
  • Improved import of texture atlases. Each texture atlas is only stored once in the database (new table ‘tex_image’) even if it is referenced by more than one city object.
  • Local appearance information is now resolved in main memory to reduce import times instead of using temporary database tables.
  • Texture metadata is imported even if texture images are chosen to be not imported
  • 3.1: Changed the way global appearances are imported
  • 3.1: Fixed bug in BRIDGE importer preventing import of bridges with thematic surfaces

8.4.3. CityGML export

  • 4.2: Property projections can now also be defined for abstract feature types.
  • 4.1: Added support for using SQL and XML queries for CityGML exports to be able express more flexible and complex filter conditions.
  • 4.1: Added support for exporting CityGML content to (G)ZIP files.
  • Database content can now be exported to CityGML 2.0 or 1.0. When exporting to CityGML 1.0, feature types only available in CityGML 2.0 such as bridges and tunnels are omitted.
  • City object group members can now be exported as-reference (using XLink references) instead of as-value to reduce export times. However, note that filter criteria are not applied in this case, which might result in CityGML files containing non-resolvable XLink references.
  • When exporting city objects with textures, the texture image files can now be organized into subfolders. This reduces the number of files per folder.

8.4.4. KML/COLLADA/glTF export

  • Support for glTF version 2.0 in addition to version 1.0. New COLLADA2glTF binaries (version 2.1.3) for Windows, Linux and MacOS.
  • Solved bugs that might prevent exporting LandUse 3D models from functioning correctly.

8.5. Web Feature Service

  • Since 3.0: Added a basic Web Feature Service interface for the 3D City Database
  • Fixed a SQL Injection vulnerability with version 3.3.0. It is strongly recommended to update to this version.

8.6. 3D Web Map Client

  • Introduced geolocation-based features such as the first-person view on mobile devices.
  • Support for glTF 2.0.
  • Support for Cesium 3D Tiles.