Migrated to: https://gitlab.com/Oslandia/lopocs
Light Opensource |logo| PointCloud Server #########################################
|unix_build| |license|
LOPoCS is a point cloud server written in
Python, allowing to load Point Cloud from a PostgreSQL database thanks to the pgpointcloud
extension.
.. |logo| image:: docs/lopocs.png
The current version of LOPoCS provides a way to load Point Cloud from PostgreSQL to the following viewers:
Cesium <https://github.com/AnalyticalGraphicsInc/cesium>
_ thanks to the 3DTiles <https://github.com/AnalyticalGraphicsInc/3d-tiles>
_ formatPotree viewer <http://www.potree.org/>
_ : viewer with LAZ compressed data.Note that LOPoCS is currently the only 3DTiles server able to stream data from
pgpointcloud <https://github.com/pgpointcloud/pointcloud>
. This
is possible thanks to the python module
py3dtiles <https://github.com/Oslandia/py3dtiles>
.
Developments are still going on to improve state-of-the-art algorithms and performances.
Video <https://vimeo.com/189285883>
_
Online demonstration <https://oslandia.github.io/lopocs>
_
Example using 3Dtiles/Cesium with data from GrandLyon <https://data.grandlyon.com/imagerie/points-lidar-2015-du-grand-lyon/>
_
.. image:: docs/grandlyon.png
.. contents::
.. section-numbering::
pgpointcloud <https://github.com/pgpointcloud/pointcloud>
_ with lazperf enabledMorton Postgres extension <https://github.com/Oslandia/pgmorton>
_PDAL <https://github.com/PDAL/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.
.. code-block:: bash
$ 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.
.. code-block:: bash
$ 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
.. code-block:: bash
$ cd lopocs
$ source venv/bin/activate
(venv)$ lopocs
.. code-block:: bash
(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
.. code-block:: bash
(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:
.. image:: 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:
LOPoCS is able to stream data up to 2 viewers:
LOPoCS provides its RESTful API through a Swagger UI by default on
<http://localhost:5000>
_
.. image:: docs/api.png
.. code-block:: bash
(venv)$ pip install .[dev] (venv)$ py.test
LGPL>2: LICENSE <https://github.com/Oslandia/lopocs/blob/master/LICENSE>
_.
.. |unix_build| image:: https://img.shields.io/travis/Oslandia/lopocs/master.svg?style=flat-square&label=unix%20build :target: http://travis-ci.org/Oslandia/lopocs :alt: Build status of the master branch
.. |license| image:: https://img.shields.io/badge/license-LGPL-blue.svg?style=flat-square :target: LICENSE :alt: Package license