Comments (4)
I just added a new branch citygml3-devel
that provides a first glimpse of the upcoming citygml4j 3.0 with full support for the latest draft of CityGML 3.0. I basically followed my initial wish list as outlined above. These are the major new features and changes:
- Completely revised object model that follows the conceputal model of CityGML 3.0, and also covers the concepts from CityGML 2.0/1.0.
DeprecatedProperties
objects allow for representing feature properties that have been removed in CityGML 3.0. - Readers and writers supporting CityGML 3.0, 2.0 and 1.0. So it is super easy, for example, to read a CityGML 1.0 dataset and write it back as CityGML 3.0. Note that not every conversion is lossless though. You might have to add some code to handle features and properties that are not available in the target version. For example:
- Mapping CityGML 2.0/1.0 features in LoD 0-3 to CityGML 3.0 should work fine and not require any additional code;
- Mapping CityGML 2.0/1.0 features in LoD4 to CityGML 3.0 cannot be done automatically because there is no LoD4 in CityGML 3.0 anymore;
- Mapping CityGML 3.0 features to CityGML 2.0/1.0 only works automatically if the features are also available in CityGML 2.0/1.0.
I can think of adding some default strategies for the non-lossless cases.
- An
ObjectWalker
to visit the objects in your CityGML tree. I merged the different feature and geometry walkers into just one class to simplify the interface. - ADE interface that allows for supporting ADEs by implementing your own ADE object classes. I simplified the interface at various places, so I hope providing your own ADE extension has become easier.
- Removed JAXB as XML binding framework. I am now using xml-objects, which applies a different approach. Instead of compiling XML schemas into a set of fixed and predefined classes, you register
ObjectBuilder
andObjectSerializer
for the main XML elements. The builders are invoked during parsing to map the XML elements onto the model objects, and serializers are in charge of marshalling objects back to XML content. There are a lot of advantages:- Unlike JAXB, the object classes are completely independent from the builders and serializers. No need for annotating the object classes, and no reflection in the background. You can even use xml-objects to unmarshal into foreign classes.
- One
ObjectBuilder
can be used to map different XML elements onto the same target object. This is especially handy when dealing with different namespaces like in CityGML 3.0, 2.0 and 1.0. In the JAXB world, there is always a fixed 1:1 relation between an XML structure and a Java class. - Likewise, one
ObjectSerializer
can be used to marshall the same object class to different XML elements. - Both
ObjectBuilder
s andObjectSerializer
s can be replaced at runtime to inject your own mapping code. - Lightweight
The branch is ready to be used and tested. I plan to add examples for the main use cases like reading and writing CityGML files soon.
Have fun.
from citygml4j.
I just published a first release candidate version of citygml4j 3.0.
from citygml4j.
Merged the citygml3-devel
branch into master
today. So, closing this issue.
from citygml4j.
Today I released the fourth release candidate of citygml4j 3.0. I guess this was the last candidate before final release. Unless further wishes or discussions pop up here ;-)
from citygml4j.
Related Issues (20)
- conversion CityGML to CityJSON: empty list of CityObjects (<grp:CityObjectGroup> supported?) HOT 6
- citygml2cityjson: appearances are not converted HOT 8
- CityGML2CityJSON: SolitaryVegetationObject(s) in a CityObjectGroup are not converted HOT 2
- Failed to build JAXB context. HOT 8
- I want to read all type of citygml. HOT 4
- Cityjson Lod4 Marshaller HOT 1
- converstion CityGML --> CityJSON: how to create "geometre-templates"? HOT 1
- does citygml 4j support lidar data? HOT 1
- Implement Serializable? HOT 9
- ADE Module HOT 4
- citygml2cityjson HOT 3
- Ampersand character in attribute value HOT 2
- Add support for surfaces with gml:PolygonPatch HOT 1
- Add opening geometry to multiple wall surfaceMembers HOT 5
- CityModelWriter does not write CityModel ADE HOT 7
- v3.0.0-rc.2: AbstractGenericAttribute as Template HOT 7
- building v3.0.0-rc.3 fails HOT 4
- Root feature is expected to be a CityGML feature HOT 1
- CityJSON with "transform" ignored when converting to CityGML HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from citygml4j.