News

citygml4j 2.0ea released as a Maven artifact

Added by Claus Nagel 6 months ago

In answer to a feature request submitted through citygml4j's issue tracker (find the request here), I have published citygml4j 2.0ea as a Maven artifact today. I hope this will help all Maven users who want to develop CityGML-aware software with citygml4j.

The citygml4j artifact has already been synced with the central Maven repository (see here) and hence is ready to be used. I will deploy artifacts for the previous versions of citygml4j in the next days.

Note that the 2.0ea artifact requires Java 6 or higher due to JAXB not supporting Java 5 since version 2.2.5 anymore.

Have fun :-)
Claus

citygml4j 2.0ea released

Added by Claus Nagel 10 months ago

citygml4j 2.0ea has been released today and is available for download from the Files section.

This is an early access release of the next major version 2.0 of citygml4j.
As announced two months ago, its most notable new feature is the full support for CityGML 2.0.
Further additions and changes include:

  • Read-only support for CityGML 0.4.0 (full support has been discontinued)
  • Added filtered CityGML reader
  • Added support for <gml:MultiGeometry>
  • CityGML XML chunks can now be accessed directly from readers before unmarshalling
  • Updated all example programs shipped with the library
  • Updated to GML 3.1.1.2 (due to OGC Xlink Policy)
  • Updated to JAXB 2.2.5-2
  • Incorporated JAMA 1.0.2 library for matrix calculations
  • Minor bug fixes

Check the Changelog for more details.

Unfortunately, I have not yet found the time to prepare more detailed release notes or code snippets in the Wiki as for previous releases. But I did not want to defer the pre-release any longer. The download package comes with a range of sample programs. I have updated all of them and added some new examples. So you can learn about the new features and changes by simply reviewing their source code. Each example provides its own Ant build script which allows you to easily run the program (note that some of the Ant scripts even have more than one run target).

Some sample programs you might want to inspect are located at:
  • samples/converting_citygml
    Demonstrates upgrading/downgrading a CityGML instance document between CityGML versions 2.0 and 1.0
  • samples/reading_citygml/citygml_v040_reader
    Illustrates the read-only support for CityGML 0.4.0 instance documents which are internally mapped onto CityGML 1.0.0
  • samples/reading_citygml/filtered_reader
    CityGML readers can be customized to only process specific CityGML feature types and to skip the rest
  • samples/reading_citygml/multithreaded_reader
    When reading CityGML chunk-wise, the chunks can be fed to several threads before unmarshalling in order to speed up processing

The support for CityGML 2.0 required some minor changes to the citygml4j API. Thus, if you replace the citygml4j.jar library file in exisiting projects with the latest version 2.0ea, you will most likely run into compile errors. The following list provides the most important reasons.

  • Changes to the enumeration of CityGML elements in CityGMLClass
    In CityGML 2.0, some feature types share the same name across CityGML modules. For example, there exists a WallSurface feature in the Building, Bridge, and Tunnel modules (in fact, all boundary surfaces share the same name). In order to ensure unique values in the CityGMLClass enumeration, some of the entries had to be renamed correspondingly. Simply update to the new values. For example, WALL_SURFACE needs to be replaced with BUILDING_WALL_SURFACE.
  • Interface layer removed
    The citygml4j object model is split into interfaces and implementation classes in citygml4j 1.0. Since there has only been a single implementation of the interfaces, this separation has been resolved. In citygml4j 2.0ea, all object classes are located in org.citygml4j.model and share the same name as the interfaces in version 1.0. If you have not explicitly used the implementation classes from the package org.citygml4j.impl in your code, then you do not have to adapt any import statements.
  • CityGML factories removed
    Due to the above change, the factories for creating instances of the object classes became obsolete and have been deleted. Every create method has been replaced by a constructor of the corresponding object class. For example, the following citygml4j 1.0 snippet
    1 CityGMLFactory citygml = new CityGMLFactory();
    2 ...
    3 Building building = citygml.createBuilding();
    
    can be easily rewritten as
    1 Building building = new Building();
    

Since this is an early access release, your feedback is required and desired. Please report any bugs or defects through the issue tracker on this site.
Any other discussions or questions are welcome in the Forums section.

Have fun :-)
Claus

citygml4j 2.0 to be released soon

Added by Claus Nagel 12 months ago

On 24 April 2012, the Open Geospatial Consortium membership adopted version 2.0 of CityGML (see the official press release for more information).

I have been working since then on adding support for CityGML 2.0 in citygml4j. Most of the implementation work is complete and a release candidate of the upcoming version 2.0 of citygml4j will hopefully be available soon. Only minor things such as testing, some modifications to the sample programs, and Wiki documentation are still open. However, I am strongly focusing on my PhD thesis currently - so stay tuned!

Besides some new features and bugfixes, citygml4j 2.0 will also bring minor changes to the API in order to support CityGML 2.0. My current plans are to discontinue the full support for CityGML 0.4.0 as this version has never been an official OGC standard. Reading CityGML 0.4.0 instances will still be possible by internally mapping them onto CityGML 1.0 instances. But support for writing and validating will be canceled. Let me know what you all think about this by leaving a comment below.

You can follow the development in the 1.1-devel branch (initially, a minor revision of CityGML to version 1.1 was planned) of the citygml4j SVN repository. The branch is highly unstable and is not recommended for porting exisiting citygml4j-based software.

Cheers,
Claus

citygml4j 1.0 released

Added by Claus Nagel over 2 years ago

I am happy to announce that citygml4j has finally reached version 1.0 after almost two years of development and its first release back in 2008. citygml4j 1.0 is available for download from the Files section.

citygml4j 1.0 is a major release and built on top of the previous early access release which has been published seven months ago. The most notable changes between this release and its early access version are:

  • Simple access to all geometry representations of a city object in all levels of detail
  • gml:RectifiedGridCoverage is now supported
  • <app:Appearance> elements of parent CityGML features are accessible when reading a CityGML document chunk-wise
  • Added abstract walker classes implementing the functor interfaces for visiting geometries, features, and GML objects
  • Added common root interface ModelObject to the citygml4j data model
  • Improved memory consumption of CityGML reader classes when reading a CityGML document chunk-wise
  • Minor bug fixes

Browse the Changelog and the release notes for more details.

Thanks for using citygml4j.
Have fun :-)

citygml4j 1.0ea released

Added by Claus Nagel about 3 years ago

citygml4j 1.0ea has been released and is available for download from the Files section.

This is an early access release of the next major revision of citygml4j.
It brings many new features and functionalities to citygml4j developers, such as:
  • CityGML reader and writer classes
  • Visitor pattern support
  • CityGML tree-walker classes
  • Feature splitter
  • XLink resolver
  • Traversing up the CityGML tree using parent pointers
  • Deep and shallow copies of content classes
  • XML validation
  • XML Schema handling
  • Redesign of handling ADEs
  • Tight coupling between citygml4j and JAXB relaxed and
  • Smaller big fixes in citygml4j interface layer

The distribution package comes with over 30 sample citygml4j programs which illustrate the usage of the new features.
Browse the release notes for more details.

Since this is an early access release, your feedback is required and desired. Please report any bugs or defects through the
issue tracker on this site. Any other discussion is welcome in the Forums section.

Please note, that version 1.0ea is not backwards compatible with any previous version of citygml4j.

SVN trunk sources cleaned from @Override annotations

Added by Claus Nagel about 4 years ago

The SVN trunk sources have been cleaned from @Override annotations on methods implementing an interface (see last news entry).
Thus, starting from now both Java 1.5 and 1.6 versions of the citygml4j library can be directly built from the trunk.

Hope this helps in your Java 1.5 and CityGML software development.
Have fun :)

citygml4j 0.2.1 for Java 1.5 published

Added by Claus Nagel about 4 years ago

I just published a new build of the citygml4j 0.2.1 library which has been compiled with Java 1.5.
This version of the citygml4j library is meant to be used in software projects which are restricted
to Java 1.5 and is available for download from the Files section.

The build is based on the previous version 0.2.1 release. In contrast to Java 1.6, Java 1.5 does not
support @Override annotations on methods implementing an interface definition. This required minor
source code changes. I created a new SVN branch for this purpose. You can obtain the changed sources
from here:

http://opportunity.bv.tu-berlin.de/svn/citygml4j/branches/java5/0.2.1

I will gradually delete these @Override annotations from the trunk version over the next few days as well.
Thus, in the future, the build.xml ant script can be used to build citygml4j for either Java version without having
to change the source code.

citygml4j 0.2.1 released

Added by Claus Nagel over 4 years ago

citygml4j 0.2.1 has been released and is available for download from the Files section.

With this release citygml4j is moved to the previously published JAXB version 2.1.10.
Furthermore it includes some minor implementation changes.
See the Changelog for more details.

It is recommended to switch to this new release.

Tutorial on converting between CityGML versions published

Added by Claus Nagel over 4 years ago

A new tutorial on citygml4j's built-in support for converting content objects between different CityGML versions has been published. This new feature has been introduced in citygml4j version 0.2.0 and can also be used for the purpose of creating shallow copies of the same CityGML version, reclassifying of content objects, partially converting a complete instance document, and converting user-defined content objects in the context of Application Domain Extensions (ADE).

The tutorial is accessible at http://opportunity.bv.tu-berlin.de/software/wiki/citygml4j/Converting_content_objects_between_different_CityGML_versions

Tutorial on CityGML ADEs published

Added by Claus Nagel over 4 years ago

A comprehensive tutorial on how to incorporate CityGML Application Domain Extensions (ADE) into your citygml4j application has been published. The tutorial includes example source code based on the CityGML Noise ADE.

The ADE tutorial is accessible at http://opportunity.bv.tu-berlin.de/software/wiki/citygml4j/Adding_your_own_Application_Domain_Extensions_(ADE)_to_citygml4j

1 2 Next »

Also available in: Atom