Git Product home page Git Product logo

Comments (6)

thomashkolbe avatar thomashkolbe commented on May 26, 2024 1

In the context of a (very good) master thesis at the Chair of Geoinformatics, TU Munich, a tool which is able to identify changes between CityGML models of arbitrary size has been created. Based on the detected changes, WFS transaction operations are created which could then be processed by a WFS-T with CityGML support. The tool works on two CityGML files and makes use of the Open Source graph database Neo4j. In the current implementation only Building features (and 1 or 2 more feature types) are supported, but it could easily be extended to the other feature types.

The tool is available from Github here: https://github.com/tum-gis/citygml-change-detection

For the tasks you have described, you could think about generating an export of the CityGML dataset stored in the 3DCityDB and then using the tool mentioned above to compare the file with the newer version(s) of the 3D city model. As a result, all changes will be identified and WFS transaction operations will be created which can then be run against the WFS-T on 3DCityDB.

from 3dcitydb.

FxKu avatar FxKu commented on May 26, 2024

Hey there,
just some questions so that I get it right:
Shall the same objects in B and C replace or update the ones in A? (Not versioning)
Do you want to keep the old version of the updated objects of A (because you talk about copying A)? (Versioning)

For the first use case I have delevoped a plugin for the Importer/Exporter to solve this. It's part of a comercial version of the 3DCityDB (see http://www.virtualcitysystems.de/en/products/virtualcitydatabase). Talk to the VCS guys. You really don't want to reimplement this.

Regarding versioning, there are some solutions for PostgreSQL which you might use. In general, linear versioning (a.k.a. going back in time) is easy, but for hierarchical versioning (branches) I haven't found a proper solution so far, that integrates nicely with the 3DCityDB. GeoGig works, but to recreate a certain state of the database (e.g. to do exports) you need to checkout a Postgres schema and therefore copy data.

Cheers,
Felix

from 3dcitydb.

hsandvoss avatar hsandvoss commented on May 26, 2024

Say A is a basic city, B is the renovated town hall, and C is a suggested stadium. A + B gives us the city with the new town hall, (A + B) + C the updated city with town hall and stadium. But then investors decide the stadium is too expensive, so they want (A + B) + D, a cheap version of the stadium.

Now changes like that would be very dynamic and happen many times, so it would literally save us days if we didn't always have to start over, that is to say we create a new DB from scratch, import A (takes very long) and then B and D on top of that.

So the question is, if we have imported (A + B), is there a way we can get to (A + B) - B => A again without going through the very time consuming process of importing A into a new DB?

from 3dcitydb.

FxKu avatar FxKu commented on May 26, 2024

Ok, so you talk about versioning.
Actually, I gave a talk on this topic recently. Here are the slides.

In the past, I had the idea to manage different versions (or diffs) in seperate database schemas (Postgres schemas). To avoid copying, the derived 3DCityDB schema could be represented as views (slows down exports though). For the commercial 3DCityDB we've created an extra field, so that you could talk to different schemas in one database. You could put each C and D in their own extra schema. Of course, when exporting from these schemas you do not get the full set with A+B. Instead, you have extra layers in your visualization next to A+B, which I find reasonable for such planning scenarios. There was a plan to make the schema field part of the OS version, but I don't know whats the current status.

You could also switch to Oracle and use the workspace manager, but this feature also slows down your DB to some extent.

from 3dcitydb.

dragetd avatar dragetd commented on May 26, 2024

Thanks for all the brilliant resources.
As this is a question of implementing and less of an 'issue' with 3DCityDB, I will close this issue. If you feel like this needs further input, please feel free to re-open.

from 3dcitydb.

FxKu avatar FxKu commented on May 26, 2024

@dragetd Out of general interest, may I ask if you've found a solution for your issue and if yes, what do you use or plan to use?

from 3dcitydb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.