Skip to content
This repository has been archived by the owner on Jun 3, 2020. It is now read-only.

Oslandia/lopocs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Light Opensource logo PointCloud Server

Build status of the master branch Package license

LOPoCS is a point cloud server written in Python, allowing to load Point Cloud from a PostgreSQL database thanks to the pgpointcloud extension.

The current version of LOPoCS provides a way to load Point Cloud from PostgreSQL to the following viewers:

Note that LOPoCS is currently the only 3DTiles server able to stream data from pgpointcloud. This is possible thanks to the python module py3dtiles.

Developments are still going on to improve state-of-the-art algorithms and performances.

Video

Online demonstration

Example using 3Dtiles/Cesium with data from GrandLyon

docs/grandlyon.png

  • Command line tool to load data into PostgreSQL
  • Swagger API
  • Stream patches stored in PostgreSQL
  • Greyhound protocol support
  • 3DTiles standard support (partial)
  • Produce ready to use examples with Potree and Cesium

Note

The LOPoCS loader uses PDAL's "mortonorder" filter in "reverse" mode. The "reverse" mode was introduced in PDAL version 1.7.1, so make sure you use this version or higher.

$ git clone https://github.com/Oslandia/lopocs
$ cd lopocs
$ virtualenv -p /usr/bin/python3 venv
$ source venv/bin/activate
(venv)$ pip install 'numpy==1.14.3'
(venv)$ pip install -e .

You will find an example of a configuration file for lopocs in conf/lopocs.sample.yml

You have to copy it to conf/lopocs.yml and fill with your values, lopocs will load it if this file exists. Another alternative is to set up the LOPOCS_SETTINGS environment variable to locate your configuration file.

$ createdb lopocs
$ psql -d lopocs -c 'create extension postgis'
$ psql -d lopocs -c 'create extension pointcloud'
$ psql -d lopocs -c 'create extension pointcloud_postgis'
$ psql -d lopocs -c 'create extension morton'

You can invoke lopocs in your virtualenv to show help and list available subcommands

$ cd lopocs
$ source venv/bin/activate
(venv)$ lopocs
(venv)$ lopocs check
Pdal ... 1.4.0
Pdal plugin pgpointcloud ... ok
PostgreSQL ... 9.6.3
PostGIS extension ... 2.3.1
PgPointcloud extension ... 1.1.0
PgPointcloud-PostGIS extension ... 1.0
(venv)$ mkdir demos
(venv)$ lopocs demo --work-dir demos/ --sample airport --cesium
(venv)$ lopocs serve

Copy/Paste the link at the end of the log in your browser and you will be able to see this:

docs/airport.png

Each viewer has specific expectations and communication protocol. So, the API is built to meet these specific needs.

Currently, 2 kinds of formats are supported:

  • 3DTiles
  • Greyhound format (LAZ data with a footer indicating the number of points)

LOPoCS is able to stream data up to 2 viewers:

  • Cesium with the 3DTiles format
  • Potree viewer with the Greyhound format

LOPoCS provides its RESTful API through a Swagger UI by default on http://localhost:5000

docs/api.png

(venv)$ pip install .[dev]
(venv)$ py.test

LGPL>2: LICENSE.