• Stars
    star
    173
  • Rank 220,124 (Top 5 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A small Java-based tool for the generation of point cloud visualization datasets according to Cesium 3D Tiles.

Cesium Point Cloud Generator

Introduction

The Cesium Point Cloud Generator (CPCG) is a small Java-based tool for the generation of point cloud visualization datasets according to Cesium 3D Tiles. By utilizing a local portable SQLite database, it takes 3D point cloud datasets given as XYZ text files (possibly including RGB color information for each point) and generates a 3DTiles point cloud to be used for interactive 3D viewing using the Cesium WebGL Digital Globe. The tool is capable of generating multiple levels of detail to increase viewing performance. The generated point cloud datasets can be visualized in a Cesium-based web client, such as the 3DCityDB Web Map Client.

The tool was developed by our former staff Dr. Zhihang Yao and currently maintained by Son H. Nguyen at the Chair of Geoinformatics, Department of Aerospace and Geodesy, Technical University of Munich.

Project Structure

The project consists of several packages and folders, which are described as follows:

Folder Description
src Contains all source codes in Java
data Contains sample data used for testing
lib Contains Java libraries (*.jar) required for the project
viewer Contains a Cesium instance used for visualizing the generated point clouds stored in viewer/output_data

Run Instructions

  1. Download or clone this repository on your local machine:

    git clone https://github.com/tum-gis/cesium-point-cloud-generator
  2. You can either import the cloned repository in a Java IDE (e.g. Eclipse, NetBeans, etc.) and execute the Main.java class, or you can run the stand-alone CesiumPointCloudGenerator.jar file by double-clicking or using the following command:

    java -jar CesiumPointCloudGenerator.jar
  3. A window appears, where all the program configurations are shown:

    These settings can be configured as follows:

    Argument Description Default value
    Input path Input folder that contains all the source data. The sample data included in this project were converted from LAS/LAZ format, which can be found [here].(https://github.com/mattshax/cesium_pnt_generator) data/sample_xyzRGB_data/small
    Spatial Reference Identifier (SRID) Defines the SRID of the source data. 2994
    Separator character Defines the delimiter character used to separate point coordinates and RGB color values in each text line. Whitespace (" ")
    Color depth Determines the color depth (8 or 16 bit) per channel in the source data. Color information, if not provided in the source point data, can be retrieved by combining the input point data with available corresponding aerial images using a GIS software (e.g. ArcGIS, FME, etc.). The Cesium Point Cloud Generator tool will then convert the point data source enriched with color information to Cesium 3D Tiles ready to be visualized. 16
    Height offset Adjusts the height of generated point cloud (blank will be interpreted as 0); the length unit is the same as in the given SRID. -400
    Length unit scale factor (0.0 - 1.0) for heights Scales the height of generated point cloud between metric unit (meter - 1.0) and other units (such as imperial units like inch - 0.0254, foot - 0.3048 or yard - 0.9144). 0.3048
    Tile side length Defines the side length (both height and width) of each tile on the highest Level of Details (LoD). The length unit is the same as in the given SRID. 100
    Maximum number of points in each tile Determines the maximum allowed number of points in each tile on lower LoDs. If a tile contains more points than this number, its points will be selected randomly until the maximum threshold is achieved. 10000
    Output path Output folder that contains the generated point cloud tilesets. viewer/ouput_data
  4. Click Export to start the process. Logs will be shown in the debug area on the right-hand side of the GUI.

  5. After the export is successfully finish, you can find the generated point cloud tilesets in the output folder previously entered in the GUI. To visualize these in Cesium, start the web client in viewer folder:

    cd viewer
    node server

    By default, the web client should be accessible using port number 8080 in localhost, i.e. under the following URL:

    http://localhost:8080/index.html

    Now, the generated point cloud should be visualized in the browser.

Demos

The tool has been used to generate point cloud tilesets for many projects, two of which are in Duesseldorf, NRW, Germany and New York City, USA. Layers such as point cloud, 3D building models in KML/COLLADA/glTF converted from CityGML and terrain imagery can be visualized together using the 3DCityDB Web Map Client. The demo URLs and pictures are listed as follows:

  1. Demo 1: Visualization of generated point cloud in Duesseldorf, NRW, Germany using the 3DCityDB Web Map Client

  1. Demo 2: Visualization of generated point cloud and 3D building models in CityGML in New York City, USA using the 3DCityDB Web Map Client

More Repositories

1

cesium-terrain-builder-docker

Dockerfile for the geo-data/cesium-terrain-builder app with quantized mesh support.
Dockerfile
201
star
2

rtron

r:trån is a road space model transformer library for OpenDRIVE, CityGML and beyond
Kotlin
46
star
3

3dcitydb-docker-postgis

3D City Database PostGIS Docker image
Shell
37
star
4

3d-model-new-york-city

FME Workspaces created in the cours of generating a semantic digital 3D city model for the entire city of New York are available for download on this GitHub page.
35
star
5

CityGML2OBJv2

Command line converter of CityGML (.gml) to OBJ (.obj) files, while maintaining the semantics
Python
31
star
6

tum2twin

LOD3 models of the TUM campus in CityGML
30
star
7

ifc-to-citygml3

An FME workspace for converting IFC data sets to CityGML 3.0 data sets
22
star
8

3dcitydb-web-map-docker

3DCityDB Web Map Client Docker image
JavaScript
21
star
9

sddi-ckan-k8s

Helm chart for Smart District Data Infrastructure enabled CKAN
Smarty
16
star
10

a2d2_ros_preparer

Prepares the Audi Autonomous Driving Dataset (A2D2) for ROS
C++
14
star
11

InterSensorService

A simplified lightweight service to work with sensor and timeseries data from heterogeneous sources
Java
13
star
12

citygml-change-detection

A high-performance graph-based tool for automatic change detection in massive CityGML datasets
Java
12
star
13

tum-gis-iot-stack-basic

IoT stack of FROST-Server, Node-RED, Grafana and Caddy. No auth service like Keycloak is used.
JavaScript
12
star
14

citygml2-to-citygml3

A small Java program used to transform CityGML v2.0 to CityGML v3.0 files.
XSLT
12
star
15

iot-frost-ecosystem

This repository explains step-by-step process to work with various IoT platforms and allows their observations to manage and visualized in standardized ways.
12
star
16

ckan-docker

Docker images for Smart District Data Infrastructure (SDDI) enabled CKAN catalog
Dockerfile
9
star
17

tum-gis-iot-stack-k8s

Helm chart for an application stack to manage sensor data with open source software and tools unsing OGC SensorThingsAPI
JavaScript
9
star
18

road2citygml3

Guideline for modelling roads and the streetspace within semantic 3D city models using the international OGC standard City Geography Markup Language (CityGML) version 3.0.
Python
9
star
19

citygml-roof-segment-labels

Generate datasets of roof segment labels for aerial imagery derived from CityGML semantic 3D city models for semantic segmentation.
Jupyter Notebook
8
star
20

cartographer_audi_a2d2

Run Cartographer on the Audi Autonomous Driving Dataset (A2D2).
Lua
7
star
21

citymodel-compare

A tool to map and match CityGML datasets, as well as interpret their changes, all by using graphs.
Java
7
star
22

3dcitydb-docker-compose

Service orchestration for the 3DCityDB with Docker Compose
6
star
23

3dcitydb-wfs-docker

3DCityDB Web Feature Service (WFS) Docker image
Shell
6
star
24

creating-citygml-datasets

guideline collection on the creation of citygml datasets
Python
6
star
25

LCA-TGA

Life Cycle Assessment of Technical Building Services of Large Residential Building Stocks using Semantic 3D City Models
5
star
26

sumo-to-czml

These Python scripts read SUMO traffic simulation results from the FCD (floating car data) export in the CSV format and convert it to the time-dynamic visualization format CZML.
Python
5
star
27

SDDI-CKAN-Docker

Python
5
star
28

sensor-nodes

Arduino sketches, documentation, and images of sensor nodes we built.
C++
5
star
29

FROST-on-a-map

Basic examples for bringing SensorThingsAPI Locations and HistoricalLocations to web maps as markers or trajectories.
JavaScript
4
star
30

CZMLMovingObjects

Python
4
star
31

citygml3.0-transportation-examples

This repository contains sample datasets for the CityGML3.0 Transportation Model. It is explained how the data was generated and examples are shown to illustrate new concepts.
4
star
32

sos-examples

Example requests for the 52°North Sensor Observation Service (SOS) for inserting new sensors and observations.
Shell
3
star
33

ecitygml

Rust
3
star
34

citygml3-utility-network-ade

3
star
35

egml

Rust
3
star
36

sddi-security-federation-framework

SDDI Security Framework for Single-Sign-On (SSO) across Google and eduGAIN IdPs conformant to the EU General Data Protection Regulation (GDPR)
PHP
3
star
37

erosbag

Rust
2
star
38

clearance-space-detector

2
star
39

ecoord

Rust
2
star
40

3dcitydb-importer-exporter-docker

Dockerfile for the 3DCityDB Importer/Exporter
Shell
2
star
41

egraphics

Rust
2
star
42

ecitygml-converter

Rust
1
star
43

sensor-data-analyzer

Rust
1
star
44

opendrive-testfeld-a9

1
star
45

epoint

Rust
1
star
46

evoxel

Rust
1
star
47

CityGML-EnvPlan-ADE

1
star
48

citygml2-to-osi3

Prototypical module to convert from CityGML2 to OSI3.
Python
1
star
49

ckanext-relation-sddi

Python
1
star
50

ckanext-grouphierarchy-sddi

HTML
1
star
51

emesh-converter

Rust
1
star
52

eimage

Rust
1
star
53

emesh

Rust
1
star
54

opendrive-dataset-validation

1
star