- Breaking: Java 11 is now the minimum required version for running the Importer/Exporter.
- Added a too-few-points check when importing curve geometries. By default, invalid curve geometries will cause the
import to fail unless using the
no-fail-fast
flag. #301, #304 - Added option to auto-commit delete operations to avoid database errors caused by too many statements in a transaction.
- Added point and curve styling settings for
Transportation
,CityFurniture
, andVegetation
features to the VIS export. #310, #311
- Fixed ADE info dialog to correctly show CityJSON support.
- Export of tunnel boundary surfaces did not include ADE properties.
- The CityJSON
"extension"
property is now automatically included when exporting ADE content to CityJSON format. - Improved error messages in case the OS-specific default web browser cannot be opened. #299
- Fixed start scripts for UNIX/Linux.
- Updated all dependencies to their latest versions.
- Updated FlatLaf to 3.4.1
- Updated rsyntaxtextarea to 3.4.0
- Updated sql-formatter to 2.0.5
- Updated GeoTools to 31.0
- Updated PostgreSQL JDBC driver to 42.7.3
- Updated PostGIS JDBC driver to 2023.1.0
- Update Oracle JDBC driver to 23.3.0.23.09
- Update Oracle sdoapi to 23.3.0.0
- Updated tika-core to 2.9.2
- Updated slf4j-nop to 2.0.10
- Updated h2 to 2.2.224
- Updated Saxon-HE to 12.4
- Updated tomcat-jdbc to 10.1.20
- Updated commons-compress to 1.26.1
- Fixed global-to-local appearance converter to avoid duplicate exports.#298
- Fixed exception when dropping empty cache tables.
- Added UI options to set the dataset metadata e.g. name, description and bounding box. #278
- Added UI preferences dialog to customize XML namespaces for CityGML exports. #279
- Added option to specify default start mode for plugins. #293
- Added support for XSLT/XPath 2.0 and 3.0 through Saxon-HE.
- Improved exception handling when loading plugins fails.
- Fixed query builder to correctly determine whether to use left joins in case
<not>
is used. #281 - Fixed NPE due to duplicate ZIP entries. #292
- Fixed a bug in the SrsComboBox component.
- Fixed display of plugin extensions to include extension interfaces defined for a super class.
- Fixed NPE when recalculating envelope in case the LoD filter is used.
- Fixed a bug when creating a solid surfaces with inner rings.
- Fixed inconsistent value of the
gen:dateAttribute
attribute after database import and export.
- Updated FlatLaf to 3.2.1
- Updated rsyntaxtextarea to 3.3.4
- Updated picocli to 4.7.5
- Updated sql-formatter to 2.0.4
- Updated slf4j-nop to 2.0.7
- Updated citygml4j to 2.12.4
- Updated PostgreSQL JDBC drivers to 42.6.0
- Updated GeoTools to 28.4
- Updated tomcat-jdbc to 10.0.27
- Updated commons-compress to 1.24.0
- Updated tika-core to 2.8.0
- Updated h2 to 2.2.220
- The CityGML/CityJSON import operation has been improved to avoid duplicate top-level city objects in the database.
The identifiers of all top-level city objects to be imported from the input files are collected and queried
in the database. If conflicting city objects with identical identifiers are found in the database, the user
can choose from different strategies to resolve the conflict. #273
- The city objects from the input files take precedence and overwrite the city objects in the database. For this purpose, the duplicate objects in the database can be either physically deleted or terminated.
- Alternatively, conflicting city objects from the input files are skipped or imported anyway. The latter option still results in duplicate objects and corresponds to the import mode of earlier versions of the Importer/Exporter.
- Added an option to convert global appearances to local ones on-the-fly when exporting to CityGML. #269
- ID lists used as filters for import and delete operations can now be composed of multiple CSV files. #271
- Added a timeout when prompting for a password on the command-line. #256
- Changed the API for handling internal events. This change has an impact on plugins and ADE extensions using the event bus of the Importer/Exporter. For this reason, please make sure that your plugins and ADE extensions have been built for and tested with this version of the Importer/Exporter.
- Fixed missing appearances in CityJSON exports when the appearances are stored as global appearances in the database. #269
- Fixed loading of plugins and ADE extensions in case their path contains symbolic links. #273
- Fixed localization issues when internally converting strings. One effect of this issue was that the import operation failed to find the predefined 3DCityDB tables by their name and, thus, the import itself failed. #108
- Fixed export of global appearances when replacing ids. #276
- Fixed invalid line numbers in CSV preview in case the CSV files use a non-system line separator.
- Fixed NPE when using a relative path for the delete log.
- Fixed support for glob patterns and symbolic links when providing input files for the CLI commands.
- Fixed invalid XML schema of the Importer/Exporter configuration file.
- Updated citygml4j to 2.12.2
- Updated PostgreSQL driver to 42.5.1
- Updated GeoTools to 27.2 and replaced
gt-epsg-hsql
withgt-epsg-wkt
.
- Fixed XXE vulnerabilities when parsing XML files. #258
- Fixed connection timeout issue in CityGML exports. #263
- Fixed building of queries requiring
SELECT DISTINCT
statement. #264
- Added an option to replace all identifiers of features and geometries with UUIDs when exporting to CityGML/CityJSON. #249
- Extended options for defining the subdirectories and filenames for storing tiles when tiling is enabled for CityGML exports. #250
- Consistently use
switchLocale
instead ofdoTranslation
. #247 - Added default preferences component for internal use. #247
- Moved default preferences classes to GUI plugin package. #247
- Added DefaultView and DefaultViewComponent to the GUI extension plugin. #247
- Updated Docker images to Java 17. #253
- Avoid duplicate entries for the
implicit_geometry
table, if the same implicit geometry is used in different input files during the CityGML import. This fix requires a 3DCityDB version 4.3.0 or higher to work. #243 - Fixed bug in the output of the VIS exporter when filenames of texture files contain
#
characters. #254 - Fixed example balloon templates for KML exports to support generic measure attributes. #210
- Updated PostgreSQL driver to 42.3.4
- Updated Oracle driver to 21.3.0.0
- Updated GeoTools to 26.4.
- Fixed initialization of GUI extensions. #244
- Fixed missing srsName on envelopes when using an LoD filer. #248
- Added the possibility to generate a
SELECT
statement from an XML query expression used in the Importer/Exporter. #231 - Added an option to control whether to compute the number of top-level features matching the filter criteria for CityGML exports. This can take a long time on large databases. When disabled, the export process starts immediately instead. #235
- Changed the handling of date-time values and timezones in the Importer/Exporter. Before this change,
xsd:date
values in CityGML exports could be different from the values stored in the database in case different timezone settings were used for the database server and the import and export operations. #226 - Reworked the use of import log files in both the GUI and the CLI. #228
- Users must now provide the full path to the import log file. Providing just a directory is not supported anymore.
- Added the three modes
append
,truncate
andunique
for creating the log file.
- Simplified database queries used by the CityGML export operation for top-level features involving many nested features/tables to avoid extremely large result sets causing performance issues. #234
- Improved validation of XML queries to report more errors besides XML schema violations. #224, #239
- When using an LoD filter for CityGML/CityJSON exports, the bounding box of the city objects is now calculated
based on the exported geometries instead of using the
ENVELOPE
value stored in the database. #104, #239
- Fixed bug in parsing of XPath expressions of XML queries that caused a slash
/
being part of a literal value to be interpreted as step operator. #220, #221 - Fixed bug in mapping the spatial
disjoint
filter operator in XML queries to SQL. #227 - The
dimension
attribute of query geometries in XML queries is now parsed correctly. #227 - Empty strings for gml:id attributes are no longer imported but the
GMLID
column is set toNULL
instead. - Fixed incorrect mapping of boolean values in XML queries to SQL. #229, #230
- Fixed SQL exception when terminating city objects in the database using a delete list filter. #237
- Fixed SQL filter to accept ";" characters in the SQL string. #240
- The SRS information was not correctly updated in the GUI after changing the reference system on the
Database
tab. - Avoid importing empty CityGML boundary surfaces for unreferenced semantic surfaces in CityJSON input files.
- Updated H2 database used for local caching to 2.1.210. #236
- Updated PostgreSQL driver to 42.3.1 and PostGIS driver to 2021.1.0.
- Updated citygml4j to 2.12.0.
- Added Docker files to build your own images for the Importer/Exporter command-line interface. Pre-built Docker images are available from Docker Hub at https://hub.docker.com/r/3dcitydb/impexp. #209
- Added an import list filter to the import operation for both the GUI and the CLI that allows a user to provide a CSV file containing identifiers of features that shall be imported or skipped. #202
- Enhanced feature version filter to support searching for terminated features. #192, #185
- Added a Plugins section to the preferences tab of the Importer/Exporter GUI that lists all installed and available plugins and lets a user dynamically enable and disable plugins. #194
- Added the
FeatureImportExtension
plugin extension that lets you hook your code into the import operation. #195 MetadataProvider
is now a plugin extension in its own right and can be used withoutFeatureExportExtension
.- Affine transformations are now also available for the CityGML/CityJSON export operation. #196
- Added support for importing
gml:MultiGeometry
objects in case they only contain points or curves. - Added support for providing database connection details via environment variables when running the Importer/Exporter on the command line. #212
- CityJSON output now uses the latest CityJSON version 1.0.3.
- CityGML/CityJSON import and export operations now fail fast on errors by default. #215
- Avoid pollution of database schema with temporary tables in case an import or export operation terminates abnormally. #190
- Breaking: Refactoring of the Plugin API. #200
- Breaking: Replaced
impexp-client
module with two separate modulesimpexp-client-cli
andimpexp-client-gui
to enable Docker images for the command-line interface. #187 - Moved installer build script to 3dcitydb-suite repository. #186
- Breaking: Restructured source code to avoid packages being spread over different modules.
- Fixed inconsistent behaviour of the feature version filter for different CLI commands. #188
- Fixed NPE during imports when at least one ADE extension is loaded and the dataset contains 3DCityDB ADE properties.
- Fixed
StatementFinalizer
of the Tomcat JDBC pool to be thread-safe to avoid that connections cannot be released from the pool. #189
- Updated PostgreSQL driver to 42.2.23 and Oracle driver to 21.1.0.
- Updated citygml4j to 2.11.4.
- Completely redesigned command-line interface (CLI) to be able to invoke default import, export and delete operations without the need for passing an XML config file. #147
- CityJSON import and export. #88, #92, #89, #166
- Improved CityGML export performance (up tp 10-15 times faster in case the Importer/Exporter is not running on the same machine or in the same local network as the database server). #126, #136, #137
- Implemented a more modern GUI look & feel that scales better on HiDPI displays. #149
- Extended ADE export API to support the export of ADE data in KML/COLLADA/glTF. #124
- Enhanced LoD export filter with the option to only export the minimum or maximum LoD of a city object. #133
- Added a feature version filter to be able to query city objects that have been terminated in the database.
- Added more filter options to the KML/COLLADA/glTF export and substantially reworked the preference settings. A bounding box filter is not mandatory for KML/COLLADA/glTF exports anymore.
- Added support for exporting binary glTF and Draco compression in KML/COLLADA/glTF exports. #142
- Added support for importing and exporting arbitrary surfaces as exterior of solids. #130
- GML geometry types not supported by the
SURFACE_GEOMETRY
table are internally mapped to agml:MultiSurface
to be able to import them. #130 - Added a database ID filter to the XML query language.
- Added explicit CLI script in addition to the start script for simplifying the use of Importer/Exporter CLI mode. #123
- Users can now choose to write log messages to a specific log file and not just a log directory.
- Completely updated user manual at https://3dcitydb-docs.readthedocs.io/en/release-v4.3.0/
- General tweaks, bugfixes, and code refactoring
- Instead of Oracle, PostgreSQL/PostGIS is now the default database connection. #162
- Reworked GUI and config file to manage and store one workspace per connection for Oracle databases. #164
- When importing local geometry XLinks into a 3DCityDB instance of version 4.1, the
IS_XLINK
column ofSURFACE_GEOMETRY
is now filled with value2
, which allows to substantially improve the export performance. #159
- Fixed bug in SQL query builder. #122
- Fixed possible database deadlocks when updating involved tables during XLink resolution.
- Fixed NPE in CityGML exports in case the output file path has no parent folder.
- Fixed export of XLinks to surface data members.
- XLinks in WaterBody objects are now exported differently depending on the target CityGML version.
- Fixed bug in CityGML export which caused a city object to be exported on multiple tiles in rare cases.
- Fixed missing tile counter in export status dialog when using XML queries.
- Fixed bug when reading ZIP input files which could cause the application to freeze.
- Fixed error due to incorrect database ID values when importing a
gml:OrientableSurface
. - Fixed bug in resolving geometry XLinks across top-level features.
- Fixed missing X3D materials in KML/COLLADA/glTF exports when theme is set to
none
. - Color settings are used as fallback in COLLADA/glTF exports when the selected theme is not available for a feature.
- Fixed hierarchical geometry query to work with Oracle 11g and previous versions.
- Updated to latest versions of the ADE manager plugin and the Spreadsheet Generator plugin.
- Upgrade PostgreSQL driver to 42.2.14 and PostGIS to 2.5.0.
- Updated citygml4j to 2.11.3.
- Starting from this version, all 3DCityDB Maven artifacts are maintained in the JFrog Artifactory Cloud using the new repository link https://citydb.jfrog.io/artifactory/maven. #183
- Added support for sorting the top-level features in a CityGML export based on one or more
simple thematic attributes. The sorting criteria can be defined using the new
<sortBy>
element of the XML query language. #86 - Added support for implicit geometries of nested sub-features in KML/COLLADA/glTF exports. #93, #94
- Added a delete operation to the CLI through the new
-delete
option. A corresponding<delete>
element in the config file lets you define the behavior of the delete operation (e.g. by providing a filter expression). #102 - Added support for importing
gml:PolygonPatch
geometry objects. - Added installation via CLI to the documentation. #99
- Added import and export counter for global appearances. #95, #115
- Added date picker in GUI.
- Added a link to the online documentation in the
Help
menu of the GUI.
- Reworked the feature counter filter for CityGML imports and exports. Instead of providing a lower and upper
boundary, you can now provide the total
count
of features and thestart index
of the first feature. For exports, this is mapped to SQLLIMIT
andOFFSET
clauses. Note that the definition in the XML query language now uses a<limit>
element instead of the previous<count>
element. - Improved SQL query builder to create more concise SQL statements.
- Fixed memory leak for large exports under PostgreSQL.
- Fixed OpenStreetMap data not showing in the map window. #97
- Fixed NPE when importing invalid xAL address elements. #103
- Fixed NPE when exporting PlantCover features as KML/COLLADA/glTF. #91
- Fixed memory issue due to re-opening of ZIP files in CityGML imports.
- Fixed import of curve geometries. If a curve geometry was given by several curve segments, then the interior start and end points of the segments were imported into the database. This has been corrected.
- Fixed the
IzPack
library to support automated install scripts.
- Updated to latest versions of the ADE manager plugin and the Spreadsheet Generator plugin.
- Updated to latest PostgreSQL driver v42.2.10.
- Updated to latest Oracle driver 19.3.
- Updated citygml4j to 2.10.5.
- Updated sqlbuilder to 2.2.1.
- Added config option to suppress the product information header comment.
- Moved input and output file information from internal config to external API.
- Added the
-pid-file
command-line argument to create a file storing the process ID of the Importer/Exporter at the provided path. This can be useful to check whether the Importer/Exporter is running or to issue akill
command to end it. - Added GUI warning dialogs if a Importer/Exporter module does not support ADEs registered in the database.
- Updated Spreadsheet Plugin to version 3.1.2.
- Updated ADE Manager Plugin to version 1.1.2.
- Updated 3DCityDB-Web-Map to version 1.7.1.
- Added
distinct
to complex SQL queries to avoid exporting duplicates of a top-level feature. - Fixed memory leak when importing ZIP files.
- Fixed database schema mapping to correctly support qualified XML attributes in CityGML and ADE XML schemas.
- Fixed NPE in XPath parser.
- Reworked Plugin API to support non-GUI plugins. #78
- Added
CityGMLExportExtension
as a first non-GUI extension point for plugins. Using this extension, a plugin receives and can process all CityGML features before they are written to the output file. Besides using XSLT stylesheets for CityGML exports, this adds another way of having full control over the output. - Due to the changes to the Plugin API, make sure to only use plugins built for this version.
- Added
- Property projections can now also be defined for abstract feature types.
- Added possibility to define a gml:id prefix for the UUIDs that are created during CityGML imports.
- Added config options to control the writing of
gml:Envelope
elements on features and the rootCityModel
. - Added config options to define XML prefixes and schema locations for the CityGML output file.
- Fixed broken feature type filter for CityGML imports. #75
- Fixed NPE in
GeometryConverter
when using affine transformations during CityGML imports. #77 - The CLI version of the Importer/Exporter now returns an exit code of 1 on failures.
- Updated citygml4j to 2.9.1.
- Added support for using SQL queries and XML-based filter expressions in CityGML exports. Please refer to the documentation to learn more about the new filter capabilities.
- Added support for importing CityGML data from ZIP/GZIP files and for exporting CityGML content to ZIP/GZIP files. #62, #63
- Added a counter and a progress bar to spreadsheet exports. #50
- Due to changes in the Google Maps API license and usage terms, the Google services now require an API key
(read more here). This affects the map window
and the KML/COLLADA/glTF export of the Importer/Exporter, where Google services are used for address searches and for
retrieving height values from the Google Earth terrain model. #61
- If you want to continue using the Goolge services, then enter your Google API key in the corresponding global preferences dialog that has been added in this release.
- The map window now uses OSM Nominatim as the default geocoding service, so no need for a Google API key.
- Querying height values from the Google Earth terrain model in KML/COLLADA/glTF exports requires the Google Elevation service though. Simply deactivate this option if you do not have an API key.
- When running on Java 9 or higher, the following warning was printed to the console:
WARNING: Illegal reflective access by com.sun.xml.bind.v2.runtime.reflect.opt.Injector
. This JAXB issue has been resolved in this release by updating to citygml4j 2.8.1. - Fixed SQL error when querying the highest LOD of
PlantCover
objects in KML/COLLADA/glTF exports. #72 - Fixed error in spreadsheet exports when column titles have leading and trailing whitespaces. #65
- Fixed bug when using the Importer/Exporter installer in non-GUI installations. #47, #64
- Fixed NPE when using a local cache for CityGML exports.
- Fixed NPE when exporting appearances without textures.
- Fixed CityGML writer to use default namespaces in tiled exports.
- Upgrade to latest PostgreSQL driver v42.2.5 and PostGIS driver v2.3.0.
- Upgrade to latest Oracle driver 18.3.
- Added new extension mechanism to support arbitrary CityGML ADEs.
- Added new ADE manager plugin to dynamically extend a 3DCityDB instance with support for a given CityGML ADE.
- Added support for connecting to different database schemas with the same user.
- Added support for XSL transformations on CityGML imports and exports.
- New database operation panel to change the spatial reference system used in the database (incl. optional coordinate transformation).
- New database operation panel to show supported ADEs.
- Added support for importing CityGML files with flat hierarchies.
- Added support for importing gml:MultiGeometry objects consisting only of surfaces. #28
- Improved parsing of xAL addresses on CityGML imports.
- New LoD filter for CityGML exports.
- Added query language for CityGML exports.
- Added support for exporting to glTF v2.0.
- Updated
collada2gltf
to latest version 2.1.3. - Added styling of log messages on the console window.
- Introduced XML-based schema mapping file to denote the mapping of XML schema elements onto relational structures.
- Source code has been split into modules that are available as Maven artifacts from Bintray.
- Switched from Ant to Gradle as build system.
- Fixed bug when resolving geometry Xlinks and replacing gml:ids.
- Fixed bug in BBOX calculation on CityGML imports.
- Fixed
ConcurrentLockManager
to avoid concurrent modification issues. - Fixed bug in PlantCover importer.
- Fixed bug in tiled CityGML exports.
- Fixed KML/COLLADA/glTF export query for LandUse. #52
- Fixed NPE in LandUse exporter. #51
- Replaced DOS paths in KML network links. #31
- Fixed bug in handling of surface_geometries with multiple surface_data. #25
- Fixed KML/COLLADA/glTF export of appearances with more than one theme. #24
- 3DCityDB Docker images are now available for a range of 3DCityDB versions to support continuous integration workflows.