Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Oslandia/lopocs
Migrated to: https://gitlab.com/Oslandia/lopocs
https://github.com/Oslandia/lopocs
3d cesiumjs gis itowns lidar opensource pointcloud postgis python
Last synced: about 1 month ago
JSON representation
Migrated to: https://gitlab.com/Oslandia/lopocs
- Host: GitHub
- URL: https://github.com/Oslandia/lopocs
- Owner: Oslandia
- License: lgpl-2.1
- Archived: true
- Created: 2016-07-25T15:15:05.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-01-06T09:41:13.000Z (almost 5 years ago)
- Last Synced: 2024-08-02T12:46:49.896Z (4 months ago)
- Topics: 3d, cesiumjs, gis, itowns, lidar, opensource, pointcloud, postgis, python
- Language: Python
- Homepage:
- Size: 33.7 MB
- Stars: 81
- Watchers: 12
- Forks: 25
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - Oslandia/lopocs - Migrated to: https://gitlab.com/Oslandia/lopocs (python)
README
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 `_ 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.`Video `_
`Online demonstration `_
Example using 3Dtiles/Cesium with data from `GrandLyon `_
.. image:: docs/grandlyon.png
.. contents::
.. section-numbering::
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 CesiumInstallation
============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.
From sources
------------.. 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 .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.Usage
=====Prepare database
----------------.. 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'Lopocs CLI
----------You can invoke lopocs in your virtualenv to show help and list available subcommands
.. code-block:: bash
$ cd lopocs
$ source venv/bin/activate
(venv)$ lopocsCheck installation
------------------.. 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.0Demo data
---------.. code-block:: bash
(venv)$ mkdir demos
(venv)$ lopocs demo --work-dir demos/ --sample airport --cesium
(venv)$ lopocs serveCopy/Paste the link at the end of the log in your browser and you will be able to see this:
.. image:: docs/airport.png
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 formatLOPoCS provides its RESTful API through a Swagger UI by default on
``_.. image:: docs/api.png
Run tests
=========.. code-block:: bash
(venv)$ pip install .[dev]
(venv)$ py.testLicence
=======LGPL>2: `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