PointCloud Server
Light OpensourceLOPoCS 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:
- Cesium thanks to the 3DTiles format
- Potree viewer : viewer with LAZ compressed data.
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.
Example using 3Dtiles/Cesium with data from GrandLyon
Contents
1 Main features
- 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
2 Installation
2.1 Dependencies
- python >= 3.4
- gdal development headers (libgdal-dev)
- pip (python3-pip)
- virtualenv (python3-virtualenv)
- pgpointcloud with lazperf enabled
- Morton Postgres extension
- PDAL (used by the LOPoCS loader)
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.
2.2 From sources
$ 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 .
3 Configuration
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.
4 Usage
4.1 Prepare database
$ 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'
4.2 Lopocs CLI
You can invoke lopocs in your virtualenv to show help and list available subcommands
$ cd lopocs
$ source venv/bin/activate
(venv)$ lopocs
4.3 Check installation
(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
4.4 Demo data
(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:
4.5 Swagger API
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
5 Run tests
(venv)$ pip install .[dev]
(venv)$ py.test
6 Licence
LGPL>2: LICENSE.