{"id":13557457,"url":"https://github.com/Oslandia/lopocs","last_synced_at":"2025-04-03T11:32:10.618Z","repository":{"id":47589188,"uuid":"64145195","full_name":"Oslandia/lopocs","owner":"Oslandia","description":"Migrated to: https://gitlab.com/Oslandia/lopocs","archived":true,"fork":false,"pushed_at":"2020-01-06T09:41:13.000Z","size":35325,"stargazers_count":82,"open_issues_count":0,"forks_count":25,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-11-04T07:36:05.426Z","etag":null,"topics":["3d","cesiumjs","gis","itowns","lidar","opensource","pointcloud","postgis","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Oslandia.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-25T15:15:05.000Z","updated_at":"2024-10-11T09:38:55.000Z","dependencies_parsed_at":"2022-08-30T21:12:55.485Z","dependency_job_id":null,"html_url":"https://github.com/Oslandia/lopocs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oslandia%2Flopocs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oslandia%2Flopocs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oslandia%2Flopocs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Oslandia%2Flopocs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Oslandia","download_url":"https://codeload.github.com/Oslandia/lopocs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246993151,"owners_count":20865948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","cesiumjs","gis","itowns","lidar","opensource","pointcloud","postgis","python"],"created_at":"2024-08-01T12:04:21.942Z","updated_at":"2025-04-03T11:32:05.603Z","avatar_url":"https://github.com/Oslandia.png","language":"Python","funding_links":[],"categories":["Python","gis"],"sub_categories":[],"readme":"Light Opensource |logo| PointCloud Server\n#########################################\n\n|unix_build| |license|\n\n\nLOPoCS is a point cloud server written in\nPython, allowing to load Point Cloud from a PostgreSQL database thanks to the ``pgpointcloud``\nextension.\n\n\n.. |logo| image:: docs/lopocs.png\n\nThe current version of LOPoCS provides a way to load Point Cloud from PostgreSQL to the following viewers:\n\n* `Cesium \u003chttps://github.com/AnalyticalGraphicsInc/cesium\u003e`_ thanks to the `3DTiles \u003chttps://github.com/AnalyticalGraphicsInc/3d-tiles\u003e`_ format\n* `Potree viewer \u003chttp://www.potree.org/\u003e`_ : viewer with LAZ compressed data.\n\nNote that LOPoCS is currently the only **3DTiles** server able to stream data from\n`pgpointcloud \u003chttps://github.com/pgpointcloud/pointcloud\u003e`_. This\nis possible thanks to the python module\n`py3dtiles \u003chttps://github.com/Oslandia/py3dtiles\u003e`_.\n\nDevelopments are still going on to improve state-of-the-art algorithms and\nperformances.\n\n`Video \u003chttps://vimeo.com/189285883\u003e`_\n\n`Online demonstration \u003chttps://oslandia.github.io/lopocs\u003e`_\n\nExample using 3Dtiles/Cesium with data from `GrandLyon \u003chttps://data.grandlyon.com/imagerie/points-lidar-2015-du-grand-lyon/\u003e`_\n\n.. image:: docs/grandlyon.png\n\n.. contents::\n\n.. section-numbering::\n\n\nMain features\n=============\n\n* Command line tool to load data into PostgreSQL\n* Swagger API\n* Stream patches stored in PostgreSQL\n* Greyhound protocol support\n* 3DTiles standard support (partial)\n* Produce ready to use examples with Potree and Cesium\n\nInstallation\n============\n\nDependencies\n------------\n\n  - python \u003e= 3.4\n  - gdal development headers (libgdal-dev)\n  - pip (python3-pip)\n  - virtualenv (python3-virtualenv)\n  - `pgpointcloud \u003chttps://github.com/pgpointcloud/pointcloud\u003e`_ with lazperf enabled\n  - `Morton Postgres extension \u003chttps://github.com/Oslandia/pgmorton\u003e`_\n  - `PDAL \u003chttps://github.com/PDAL/PDAL/\u003e`_ (used by the LOPoCS loader)\n\n.. 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.\n\nFrom sources\n------------\n\n.. code-block:: bash\n\n    $ git clone https://github.com/Oslandia/lopocs\n    $ cd lopocs\n    $ virtualenv -p /usr/bin/python3 venv\n    $ source venv/bin/activate\n    (venv)$ pip install 'numpy==1.14.3'\n    (venv)$ pip install -e .\n\nConfiguration\n=============\n\nYou will find an example of a configuration file for lopocs in ``conf/lopocs.sample.yml``\n\nYou have to copy it to ``conf/lopocs.yml`` and fill with your values, lopocs will load it\nif this file exists.\nAnother alternative is to set up the ``LOPOCS_SETTINGS`` environment variable to locate your configuration file.\n\n\nUsage\n=====\n\nPrepare database\n----------------\n\n.. code-block:: bash\n\n  $ createdb lopocs\n  $ psql -d lopocs -c 'create extension postgis'\n  $ psql -d lopocs -c 'create extension pointcloud'\n  $ psql -d lopocs -c 'create extension pointcloud_postgis'\n  $ psql -d lopocs -c 'create extension morton'\n\nLopocs CLI\n----------\n\nYou can invoke lopocs in your virtualenv to show help and list available subcommands\n\n.. code-block:: bash\n\n    $ cd lopocs\n    $ source venv/bin/activate\n    (venv)$ lopocs\n\nCheck installation\n------------------\n\n.. code-block:: bash\n\n    (venv)$ lopocs check\n    Pdal ... 1.4.0\n    Pdal plugin pgpointcloud ... ok\n    PostgreSQL ... 9.6.3\n    PostGIS extension ... 2.3.1\n    PgPointcloud extension ... 1.1.0\n    PgPointcloud-PostGIS extension ... 1.0\n\n\nDemo data\n---------\n\n.. code-block:: bash\n\n    (venv)$ mkdir demos\n    (venv)$ lopocs demo --work-dir demos/ --sample airport --cesium\n    (venv)$ lopocs serve\n\nCopy/Paste the link at the end of the log in your browser and you will be able to see this:\n\n.. image:: docs/airport.png\n\nSwagger API\n-----------\n\nEach viewer has specific expectations and communication protocol. So, the API is built to meet these specific needs.\n\nCurrently, 2 kinds of formats are supported:\n\n  - 3DTiles\n  - Greyhound format (LAZ data with a footer indicating the number of points)\n\nLOPoCS is able to stream data up to 2 viewers:\n\n  - Cesium with the 3DTiles format\n  - Potree viewer with the Greyhound format\n\nLOPoCS provides its RESTful API through a Swagger UI by default on\n`\u003chttp://localhost:5000\u003e`_\n\n.. image:: docs/api.png\n\nRun tests\n=========\n\n.. code-block:: bash\n\n  (venv)$ pip install .[dev]\n  (venv)$ py.test\n\nLicence\n=======\n\nLGPL\u003e2: `LICENSE \u003chttps://github.com/Oslandia/lopocs/blob/master/LICENSE\u003e`_.\n\n.. |unix_build| image:: https://img.shields.io/travis/Oslandia/lopocs/master.svg?style=flat-square\u0026label=unix%20build\n    :target: http://travis-ci.org/Oslandia/lopocs\n    :alt: Build status of the master branch\n\n.. |license| image:: https://img.shields.io/badge/license-LGPL-blue.svg?style=flat-square\n    :target: LICENSE\n    :alt: Package license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOslandia%2Flopocs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOslandia%2Flopocs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOslandia%2Flopocs/lists"}