Git Product home page Git Product logo

citygml4j's Introduction

build release maven license

citygml4j - The Open Source Java API for CityGML

citygml4j is an open source Java library and API for OGC CityGML. citygml4j makes it easy to parse, process, and write CityGML datasets and to develop CityGML-aware software.

The library consists of a citygml4j-core module that provides Java classes for processing CityGML data based on the CityGML 3.0 Conceptual Model, helper classes for working with the model classes, and an extension API for implementing support for CityGML ADEs.

Serialization modules on top of the core add support for parsing datasets with different file formats and encodings into the model classes and writing them back out again.

License

citygml4j is licensed under the Apache License, Version 2.0. See the LICENSE file for more details.

Latest release

The latest release of citygml4j is 3.2.0.

Download the latest citygml4j release binaries here. Previous releases are available from the releases section.

Contributing

  • To file bugs found in the software create a GitHub issue.
  • To contribute code for fixing filed issues create a pull request with the issue id.
  • To propose a new feature create a GitHub issue and open a discussion.

Building

citygml4j requires Java 17 or higher. The project uses Gradle as build system. To build the library from source, clone the repository to your local machine and run the following command from the root of the repository.

> gradlew installDist

The script automatically downloads all required dependencies for building the modules. So make sure you are connected to the internet.

The build process creates the output files in the folder build/install/citygml4j with the following subfolders:

  • javadoc -- the Javadoc documentation
  • lib -- the citygml4j module files and mandatory dependencies
  • license -- license information
  • samples -- a collection of citygml4j sample programs

Simply put the citygml4j module files and the mandatory dependencies from the lib folder on your modulepath to start developing with citygml4j. Have fun :-)

Maven artifacts

The citygml4j modules are also available as individual Maven artifacts from the Maven Central Repository. Each serialization module has a dependency on the citygml-core module, but you can also use the core module alone.

For example, to add citygml4j-xml to your project with Maven, add the following code to your pom.xml. You may have to adapt the citygml4j version number.

<dependency>
  <groupId>org.citygml4j</groupId>
  <artifactId>citygml4j-xml</artifactId>
  <version>3.2.0</version>
</dependency>

Here is how you use both citygml4j-xml and citygml4j-cityjson with your Gradle project. Make sure to use the same citygml4j version for both modules to avoid conflicts.

repositories {
  mavenCentral()
}

dependencies {
  implementation 'org.citygml4j:citygml4j-xml:3.2.0'
  implementation 'org.citygml4j:citygml4j-cityjson:3.2.0'
}

Sample programs

citygml4j provides a number of sample programs to demonstrate the use of the library. Download and unzip a release or build the library from source as described above. Afterwards, the sample programs are located in the samples folder.

The source code of the sample programs is provided as Gradle project and organized into Java packages under src/main/java in the samples folder. Each package addresses a different use case of citygml4j. Predefined Gradle tasks let you easily compile and run the sample programs.

To run a sample program, simply open a shell environment, change to the samples folder and invoke the Gradle wrapper using the fully qualified name of the Java class as task name. For example, issue the following command to run the SimpleReader program from the reading_citygml package:

> gradlew reading_citygml.SimpleReader

Alternatively, you can load the citygml4j source into your preferred IDE and run the sample programs from there. The source code of the sample programs is provided as separate citygml4j-samples module. The easiest way to execute the programs is again to use the predefined Gradle tasks. If you prefer to directly run the classes instead, note that the classes use relative paths to access test datasets and write output files. You might have to adapt the working directory in the run configuration of your IDE so that the relative paths are resolved correctly. For example, when using IntelliJ, simply use $MODULE_DIR$ as working directory.

More information

OGC CityGML defines a common semantic information model for the representation of virtual 3D city models. The information model can be implemented in a variety of technologies such as GML/XML, JSON or as database schema to enable the storage, management, and exchange of 3D city models and to facilitate the integration of urban geodata for a variety of applications for Smart Cities and Digital Urban Twins.

CityGML is an International Standard issued by the Open Geospatial Consortium (OGC) and can be used free of charge. The development of CityGML is open to everyone and takes place on the OGC GitHub repository.

citygml4j's People

Contributors

beneschwab avatar clausnagel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

citygml4j's Issues

I want to read all type of citygml.

I am implementing a function to extract the coordinates of all buildings in citygml.
1
Reading all the points of the polygon type succeeded. However, I want to read all citygml regardless of type (e.g Lod, bridge, tunnel, triangle, Rectangle... etc). This function is limited to polygons. Do I have to implement the type-sensitive functions separately? Or is it already implemented?

Failed to build JAXB context.

I use the citygml4j-2.6.0.jar in a java project to read a gml file,it runs very well.
But,when use it in a java web project,exception as follows:
org.citygml4j.builder.CityGMLBuilderException: Failed to build JAXB context.
at org.citygml4j.builder.jaxb.JAXBBuilderFactory.build(JAXBBuilderFactory.java:72)
at org.citygml4j.CityGMLContext.createJAXBBuilder(CityGMLContext.java:130)
at org.citygml4j.CityGMLContext.createCityGMLBuilder(CityGMLContext.java:122)
at com.smartearth.lod4citygml.service.SimpleReadRoomInfo.readBuilding(SimpleReadRoomInfo.java:67)
at com.smartearth.lod4citygml.service.SimpleReadRoomInfo.getRoomInfoList(SimpleReadRoomInfo.java:110)
at com.smartearth.lod4citygml.controller.RoomListController.doPost(RoomListController.java:45)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1368)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "net.opengis.citygml._2" 不包含 ObjectFactory.class 或 jaxb.index

  • with linked exception:
    [javax.xml.bind.JAXBException: "net.opengis.citygml._2" 不包含 ObjectFactory.class 或 jaxb.index]
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:146)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:356)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:431)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:394)
    at org.citygml4j.builder.jaxb.JAXBBuilderFactory.build(JAXBBuilderFactory.java:70)
    ... 29 more
    Caused by: javax.xml.bind.JAXBException: "net.opengis.citygml._2" 不包含 ObjectFactory.class 或 jaxb.index
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(ContextFactory.java:266)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:171)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:131)
    ... 33 more
    is there any suggestion for me?

Ampersand character in attribute value

Hello Claus,

I am trying to convert CityGML files to CityJSON with the SimpleConverter. They all include the ampersand character in an attribute value, as in the following example.
testBuilding.txt.

While converting I get the following error. I was wondering how I should change the code and if the ampersand is the cause?
error

building v3.0.0-rc.3 fails

Hi Claus,

first of all: Great library, many thanks!

I'm currently updating my project to v3.0.0-rc.3 and I noticed that building citygml4j & samples on the citygml3-devel branch doesn't work in my environment. Please have a look into this build run.
Some classes of gml-objects (e.g. VisitableGeometry, ResolvableAssociation) are not found and I assume that gml-objects:1.0.0-SNAPSHOT was released earlier than the implementation of those classes.

Best regards
Benedikt

P.S.: If you are interested, I can create a PR for the build workflow.

conversion CityGML to CityJSON: empty list of CityObjects (<grp:CityObjectGroup> supported?)

I'm trying to convert a file and the resulting json has an empty list of CityObjects, would it be caused by the setup as below? From a file I have called waldbruecke_v1.0.0.gml, I think it's open data but not sure; I can send you directly if needed.

<cityObjectMember>
        <grp:CityObjectGroup gml:id="g_12529">
            <gml:description>Gebäude und Freifläche Wohnen(1300)</gml:description>
            <gml:name> g_12529</gml:name>
            <creationDate>2009-01-11</creationDate>
            <externalReference>
                <informationSystem>WB3 Project</informationSystem>
                <externalObject>
                    <uri>http://www.wb3-project.de/wb_g_id.html?db=waldbruecke&amp;id=12529</uri>
                </externalObject>
            </externalReference>
            <grp:groupMember>
                <luse:LandUse gml:id="l_12529">
           

insert SrsName attribute in envelope tag

Hello

Building building = new Building();
BoundingShape boundedBy1 = building.calcBoundedBy(false);
boundedBy1.getEnvelope().setSrsName("urn:ogc:def:crs,crs:EPSG:6.12:31466,crs:EPSG:6.12:5783");

I wrote The above code in my program to insert the srsName attribute in envelope tag in my citygml file but i find this error in my program,

[11:18:05] setting up citygml4j context and JAXB builder
[11:18:10] creating LOD2 building as citygml4j in-memory object tree
Exception in thread "main" java.lang.NullPointerException
at createbuildingfromosm1.CreateBuildingFromOSM1.doMain(CreateBuildingFromOSM1.java:101)
at createbuildingfromosm1.CreateBuildingFromOSM1.main(CreateBuildingFromOSM1.java:78)
Java Result: 1
BUILD SUCCESSFUL (total time: 6 seconds)

,please guide me

Line numbers not available for debugging purposes

Started using citygml4j library today and found out that the ant target compile_src compiles the source code without the debug="on" flag. This makes it impossible to debug the execution of the code with a debugger.

I compiled the library on my own and added the debug="on" flag for both javac commands and got the line numbers and debugging to work. Although it would be nice to just rely on the latest version fetched with Maven and the debugging would work out of the box.

citygml4j-2.4.0.jar with debug="on" 2 982 833 bytes
citygml4j-2.4.0.jar without debug="on" 2 407 112 bytes

Is this a deliberate decision? Thanks 👍

Pb with the CityJSON transform

This code read a citygml file and write it in cityjson

	public static void test()  {

    	File f = new File("myFile.GML");

        CityGMLContext cityGMLContext = CityGMLContext.newInstance();

        CityGMLInputFactory in = cityGMLContext.createCityGMLInputFactory();

        AbstractFeature feature;
        try (CityGMLReader reader = in.createCityGMLReader(f.toPath())) {
            feature = reader.next();
        }

        CityJSONContext cityJSONContext = CityJSONContext.newInstance();

        CityJSONVersion version = CityJSONVersion.v1_1;
        CityJSONOutputFactory out = cityJSONContext.createCityJSONOutputFactory(version)
                .withVertexPrecision(3)
                .withTextureVertexPrecision(5)
                .applyTransformation(true);

    	File fo = new File("myFile.Out.JSON");

        try (CityJSONWriter writer = out.createCityJSONWriter(fo.toPath())) {
            writer.withMetadata(metadata)
                    .writeCityObject(feature);
        }

	}

The cityjsonn result has the transform :

"transform":{"scale":[0.001,0.001,0.001],"translate":[521211.074,6456397.886,90.711]}

But the coordinates (521242.73015 6456434.20157 95.09962) comes to (9246,4308959777,6289). It's seems to be good for X and Z. But not for the Y.

Zone_1.GML.zip

Seeking input on citygml4j 3.0

I am currently thinking about how to best support the forthcoming CityGML 3.0 with citygml4j. The latest draft of CityGML 3.0 proposes many changes to the conceptual model of CityGML. Mapping these changes and new concepts to the object model of citygml4j cannot be done in a backwards compatible way, and thus will lead to a new major version of citygml4j.

A new major version is also a chance to rethink some of the concepts and features of citygml4j. So, I am seeking your input and ideas :-)

Generally, I want to stick to the fundamental idea of citygml4j, which is to provide an object-based access to CityGML data. But, for example, I am thinking about replacing JAXB as XML binding tool. JAXB is a heavy dependency (think of mobile devices), and CityGML 3.0 would add a great number of additional JAXB classes to citygml4j.

Here is my initial wish list for citygml4j 3.0:

  • Object-based access to CityGML data
  • Read and write support for CityGML 3.0, 2.0 and 1.0 (knowing that there is no lossless conversion between 3.0 and lower versions)
  • Feature and geometry walkers (I really love them in my citygml4j projects)
  • ADE support (no generic support, but using the same mechanisms as so far)

CityGML4j _ window and door

Hi .I want to add window and door in java program sample "BuildingCreator.java", but I don't know how do it?
thanks for your attention

Cityjson Lod4 Marshaller

lod
Hi. I'm using citygml4j library.
I am in the process of converting the citygml file to cityjson and extracting the data.
Why is there no processing for LOD4 in cityjson marshallers? Is it going to be developed?
What is the reason?

ADE Module

I have an ADE schema utilized in my CityGML data that I would like to parse as part of my marshaling / unmarshaling process. I noticed that there seems to be two examples of defining an ADE schema within the library- either registering it as an ADEModule or parsing the cityObject's directly with a schemaHandler.

How are these two approaches different? Is an ADE Module just a hand-written code wrapper around JAXB unmarshaled XSD classes? I also could not find any code examples showcasing how to register an ADE module into the Modules collection. Any help would be much appreciated.

citygml2cityjson: appearances are not converted

that is, the jpg files are not, but the json code for them is... or it's not clear to me what is happening. If I setup the SimpleTextureFileHandler then no appearances in json is created, if I skip it then yes. But the textures are never copied anywhere. (my java skills are pretty bad, I guess I could debug, but one thing at a time, I already managed to run all things correctly and write my own code based on citygml4j today!).

That file: http://3dre.gw.rotterdam.nl/3D/3-20-Delfshaven.zip
would it be because the paths for textures have backslashes instead of slashes?
<app:imageURI>appearances\0320_0_13.jpg</app:imageURI>

citygml2cityjson

Dear Claus,

While converting the attached gml file
testBuilding_v2.txt I get the following error:
test_buildingError

It seems like it has trouble reading the measureAttribute <gen:measureAttribute name="min height surface"><gen:value uom="#m">18.47</gen:value></gen:measureAttribute>

The convertion does work when this line is either deleted or when the schema link is changed to version 1 instead of 2 .
xmlns:gen="http://www.opengis.net/citygml/generics/1.0" I was wondering why it would give this error, since the measureattribute is implemented in the schema?

Brenda

Can't build

Any Idea? Thanks

      [xjc] Checking timestamp of ..../citygml4j/resources/jaxb/schemas/GML/3.1.1/xlink/xlink.xsd
      [xjc] Checking timestamp of ..../citygml4j/resources/jaxb/schemas/GML/3.1.1/xml/xml.xsd
      [xjc] Checking timestamp of ..../citygml4j/resources/jaxb/schemas/xAL/2.0/xAL.xsd
      [xjc] the last modified time of the inputs is  1429258950000
      [xjc] the last modified time of the outputs is -9223372036854775808
      [xjc] Compiling file:..../citygml4j/resources/jaxb/schemas/CityGML/citygml4j_profile.xsd
      [xjc] removing old output files
      [xjc] [ERROR] schema_reference: Schemadokument "appearance.xsd" konnte nicht gelesen werden, weil der "file"-Zugriff wegen der von der Eigenschaft accessExternalSchema festgelegten Einschränkung nicht zulässig ist. 
      [xjc]   Zeile 22 von file:..../citygml4j/resources/jaxb/schemas/CityGML/citygml4j_profile.xsd
      [xjc] 
      [xjc] failure in the XJC task. Use the Ant -verbose switch for more details

BUILD FAILED
..../citygml4j/build.xml:60: unable to parse the schema. Error messages should have been provided
        at com.sun.tools.xjc.XJC2Task._doXJC(XJC2Task.java:520)
        at com.sun.tools.xjc.XJC2Task.doXJC(XJC2Task.java:457)
        at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:380)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
        at org.apache.tools.ant.Task.perform(Task.java:348)
        at org.apache.tools.ant.Target.execute(Target.java:435)
        at org.apache.tools.ant.Target.performTasks(Target.java:456)
        at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
        at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
        at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
        at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
        at org.apache.tools.ant.Main.runBuild(Main.java:851)
        at org.apache.tools.ant.Main.startAnt(Main.java:235)
        at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
        at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)

Total time: 1 second

in english:

      [xjc] [ERROR] schema_reference: Failed to read schema document 'appearance.xsd', because 'file' access is not allowed due to restriction set by the accessExternalSchema property. 

from KMZ to CityGML?

Hi there!

I hope your are doing greate guys! I am trying to find a solution to create CityGML buildings, surfaces files in KMZ to be imported into 3Dcitydb.
I was recomended by Zinhang this software and I just installed, but I dont know how it works. How can I for exemple comvert KML/KMZ files created with SketchUP to CityGML ? Do you have some videos, documentation, etc?

Thanks for your dedication!
Abel Gonzalez

CityGML2CityJSON: SolitaryVegetationObject(s) in a CityObjectGroup are not converted

In citygml4j/samples/cityjson/citygml2cityjson/SimpleConverter.java, SolitaryVegetationObject(s) in a CityObjectGroup are not converted. I tested the code with sample dataset "Part-1-Terrain-WaterBody-Vegetation-V2.gml". The dataset has 15 vegetation objects but upon converting it to CityJSON, only one vegetation object (GML ID: "GMLID_SO092422_3593_9527") is written to CityJSON file.

Implement Serializable?

Has there been previous consideration given to making these classes serializable? I was attempting to use this library in a distributed system and being able to serialize and deserialize the citygml classes would greatly improve the usability.

v3.0.0-rc.2: AbstractGenericAttribute as Template

Hi @clausnagel, thanks for the great library!

I'm currently upgrading rtron to RC2 of version 3. Often I keep a list of different attributes, which works very well with List<AbstractGenericAttribute> in v.2.11.2. With the template implementation in v3.0.0 RC2 the handling becomes a little bit more difficult, since T can take any type at List<AbstractGenericAttribute<T>> (not just the CityGML attribute types). What is your opinion on this?

I can certainly resolve the situation alternatively, however I wanted to provide some feedback.

CityGML Geometry of Window

Hello ,
i read a sample gml for building with window:
bldg:boundedBy
bldg:WallSurface

bldg:lod3MultiSurface
gml:MultiSurface
gml:surfaceMember
<gml:CompositeSurface gml:id="GML_1d350a50-6acc-4d3c-8c28-326ca4305fd1">
gml:surfaceMember
<gml:Polygon gml:id="PolyID10204_1916_571790_369478">
/gml:Polygon
/gml:surfaceMember
gml:surfaceMember
<gml:Polygon gml:id="PolyID10205_105_876837_53833">
gml:exterior

/gml:exterior
gml:interior

/gml:interior
gml:interior

/gml:interior
/gml:Polygon
/gml:surfaceMember
gml:surfaceMember
/gml:CompositeSurface

I want to add window to a wall of my sample building . which function of citygml4j can to set geometry of interior ring of wall(the geometry of window). and which function of citygml4j set exterior ring for wall in CompositeSurface tag?

CityModelWriter does not write CityModel ADE

It is not possible to write the ADE of CityModels with the CityModelWriter.

https://gist.github.com/betzms/598a88aaca65289c73586629899d5f29

Example file here:
TestOutput.zip

The reason it works with the CityGMLWriter but not the CityModelWriter is that to write the end tag of CityModel the CityModelWriter uses a SAXFragmentWriter with the mode TAIL, which only writes end tags. But for writing the ADEs it would need to also write start tags and content.

I think it should be possible to write ADE with the CityModelWriter as well?

Add opening geometry to multiple wall surfaceMembers

Hi Clausnagel,

I’m trying to add opening geometries (window or door) to an already existing LOD2 CityGML model. However, it commonly occurs that an opening geometry intersects with two or more exterior polygons. As interior polygons define openings in an exterior polygon, they have to be completely included in the area defined by the exterior polygon (see the figure below: Correct interior polygon (left) and incorrect interior polygon (right)).

exterioropening

In this case, a part of the intersecting opening geometry is simply placed over a wall surface and not integrated into the building.

How can I properly include opening geometries to a (complex) LOD2 model?

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.