Coder Social home page Coder Social logo

maksimhan / cesium-point-cloud-generator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tum-gis/cesium-point-cloud-generator

0.0 0.0 0.0 186.18 MB

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

Home Page: https://www.asg.ed.tum.de/en/gis/home/

License: Apache License 2.0

Java 0.33% JavaScript 99.55% CSS 0.12% HTML 0.01%

cesium-point-cloud-generator's Introduction

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

cesium-point-cloud-generator's People

Contributors

son-hnguyen avatar thomashkolbe avatar

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.