jakteristics


Namejakteristics JSON
Version 0.6.2 PyPI version JSON
download
home_pagehttps://github.com/jakarto3d/jakteristics
SummaryPoint cloud geometric properties from python.
upload_time2024-07-22 15:27:07
maintainerNone
docs_urlNone
authorDavid Caron
requires_python>=3.7
licenseBSD
keywords jakteristics
VCS
bugtrack_url
requirements laspy scipy typer Cython
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Jakteristics
~~~~~~~~~~~~

* **Documentation**: https://jakteristics.readthedocs.io
* **Github**: https://github.com/jakarto3d/jakteristics

Jakteristics is a python package to compute point cloud geometric features. 

A **geometric feature** is a description of the geometric shape around a point based on its 
neighborhood. For example, a point located on a wall will have a high *planarity*.

The features used in this package are described in the paper
`Contour detection in unstructured 3D point clouds`_.
They are computed based on the eigenvalues and eigenvectors:

* Eigenvalue sum
* Omnivariance
* Eigenentropy
* Anisotropy
* Planarity
* Linearity
* PCA1
* PCA2
* Surface Variation
* Sphericity
* Verticality
* Nx, Ny, Nz (The normal vector)

It's inspired from a similar tool in `CloudCompare <https://www.danielgm.net/cc/>`_.

It's implemented in cython using the BLAS and LAPACK scipy wrappers. It can use multiple cpus, 
and the performance is quite good (at least twice as fast as CloudCompare).

.. _`Contour detection in unstructured 3D point clouds`: https://ethz.ch/content/dam/ethz/special-interest/baug/igp/photogrammetry-remote-sensing-dam/documents/pdf/timo-jan-cvpr2016.pdf


Installation
============

.. code:: bash

    python -m pip install jakteristics


Usage
=====

Refer to the `documentation <https://jakteristics.readthedocs.io/en/latest/usage.html>`_ for more details.


From python
-----------

.. code:: python

    from jakteristics import compute_features

    features = compute_features(xyz, search_radius=0.15, feature_names=['planarity', 'linearity'])


CLI
---

Once the package is installed, you can use the `jakteristics` command:

.. code:: bash

    jakteristics input/las/file.las output/file.las --search-radius 0.15 --num-threads 4


Run tests
=========

.. code:: bash

    python -m pip install -r requirements-dev.txt
    python setup.py pytest




History
-------

Unreleased
----------


0.6.2 (2024-07-22)
------------------


0.6.1 (2024-06-04)
------------------


0.6.0 (2023-04-20)
------------------

* add: number_of_neighbors feature
* add: eigenvalues and eigenvectors features


0.5.1 (2023-04-11)
------------------

* fix: computing features when kdtree is not built from the same points for which we want to compute the features
* drop python 3.6, add wheels for python 3.7-3.11 on linux and windows

0.5.0 (2022-01-26)
------------------

* fix: compatibility with latest laspy version (>= 2.1.1, (2.1.0 has a bug))


0.4.3 (2020-09-24)
------------------

* the default value when features can't be computed should be NaN


0.4.2 (2020-04-20)
------------------

* fix extension import statement


0.4.1 (2020-04-17)
------------------

* fix: create parent directories for output file
* fix: rename --num_threads to --num-threads
* fix: require laspy 1.7 for upper case names in extra dimensions


0.4.0 (2020-04-16)
------------------

* first pypi release
* add github actions


0.3.0 (2020-04-14)
------------------

* add feature-names parameter to compute specific features


0.2.0 (2020-04-10)
------------------

* fix windows compilation with openmp
* add example cloudcompare script
* add num_threads cli parameter and help documentation
* write extra dimensions in the correct order


0.1.2 (2020-04-10)
------------------

* Fix tests


0.1.1 (2020-04-10)
------------------

* Fix bug where single precision was used for intermediate variables


0.1.0 (2020-04-10)
------------------

* First release
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/jakarto3d/jakteristics",
    "name": "jakteristics",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "jakteristics",
    "author": "David Caron",
    "author_email": "david.caron@jakarto.com",
    "download_url": "https://files.pythonhosted.org/packages/76/a4/02ad4f9492e7c51f2b691d0f9b20d68c1c24e175e51f481106b3f6002dea/jakteristics-0.6.2.tar.gz",
    "platform": null,
    "description": "Jakteristics\n~~~~~~~~~~~~\n\n* **Documentation**: https://jakteristics.readthedocs.io\n* **Github**: https://github.com/jakarto3d/jakteristics\n\nJakteristics is a python package to compute point cloud geometric features. \n\nA **geometric feature** is a description of the geometric shape around a point based on its \nneighborhood. For example, a point located on a wall will have a high *planarity*.\n\nThe features used in this package are described in the paper\n`Contour detection in unstructured 3D point clouds`_.\nThey are computed based on the eigenvalues and eigenvectors:\n\n* Eigenvalue sum\n* Omnivariance\n* Eigenentropy\n* Anisotropy\n* Planarity\n* Linearity\n* PCA1\n* PCA2\n* Surface Variation\n* Sphericity\n* Verticality\n* Nx, Ny, Nz (The normal vector)\n\nIt's inspired from a similar tool in `CloudCompare <https://www.danielgm.net/cc/>`_.\n\nIt's implemented in cython using the BLAS and LAPACK scipy wrappers. It can use multiple cpus, \nand the performance is quite good (at least twice as fast as CloudCompare).\n\n.. _`Contour detection in unstructured 3D point clouds`: https://ethz.ch/content/dam/ethz/special-interest/baug/igp/photogrammetry-remote-sensing-dam/documents/pdf/timo-jan-cvpr2016.pdf\n\n\nInstallation\n============\n\n.. code:: bash\n\n    python -m pip install jakteristics\n\n\nUsage\n=====\n\nRefer to the `documentation <https://jakteristics.readthedocs.io/en/latest/usage.html>`_ for more details.\n\n\nFrom python\n-----------\n\n.. code:: python\n\n    from jakteristics import compute_features\n\n    features = compute_features(xyz, search_radius=0.15, feature_names=['planarity', 'linearity'])\n\n\nCLI\n---\n\nOnce the package is installed, you can use the `jakteristics` command:\n\n.. code:: bash\n\n    jakteristics input/las/file.las output/file.las --search-radius 0.15 --num-threads 4\n\n\nRun tests\n=========\n\n.. code:: bash\n\n    python -m pip install -r requirements-dev.txt\n    python setup.py pytest\n\n\n\n\nHistory\n-------\n\nUnreleased\n----------\n\n\n0.6.2 (2024-07-22)\n------------------\n\n\n0.6.1 (2024-06-04)\n------------------\n\n\n0.6.0 (2023-04-20)\n------------------\n\n* add: number_of_neighbors feature\n* add: eigenvalues and eigenvectors features\n\n\n0.5.1 (2023-04-11)\n------------------\n\n* fix: computing features when kdtree is not built from the same points for which we want to compute the features\n* drop python 3.6, add wheels for python 3.7-3.11 on linux and windows\n\n0.5.0 (2022-01-26)\n------------------\n\n* fix: compatibility with latest laspy version (>= 2.1.1, (2.1.0 has a bug))\n\n\n0.4.3 (2020-09-24)\n------------------\n\n* the default value when features can't be computed should be NaN\n\n\n0.4.2 (2020-04-20)\n------------------\n\n* fix extension import statement\n\n\n0.4.1 (2020-04-17)\n------------------\n\n* fix: create parent directories for output file\n* fix: rename --num_threads to --num-threads\n* fix: require laspy 1.7 for upper case names in extra dimensions\n\n\n0.4.0 (2020-04-16)\n------------------\n\n* first pypi release\n* add github actions\n\n\n0.3.0 (2020-04-14)\n------------------\n\n* add feature-names parameter to compute specific features\n\n\n0.2.0 (2020-04-10)\n------------------\n\n* fix windows compilation with openmp\n* add example cloudcompare script\n* add num_threads cli parameter and help documentation\n* write extra dimensions in the correct order\n\n\n0.1.2 (2020-04-10)\n------------------\n\n* Fix tests\n\n\n0.1.1 (2020-04-10)\n------------------\n\n* Fix bug where single precision was used for intermediate variables\n\n\n0.1.0 (2020-04-10)\n------------------\n\n* First release",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "Point cloud geometric properties from python.",
    "version": "0.6.2",
    "project_urls": {
        "Homepage": "https://github.com/jakarto3d/jakteristics"
    },
    "split_keywords": [
        "jakteristics"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a18fba2103ab4fc6b05ad176abe83fb3fa9a573325231161f53448ef809b54fb",
                "md5": "aa722694764dc9950ef058284b0d8f0b",
                "sha256": "bc0dba7299a4cdbc8762c8c8feeee3b8aa48d4020cf5fd41018f6c44fd5c1ac6"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "aa722694764dc9950ef058284b0d8f0b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 3963533,
            "upload_time": "2024-07-22T15:27:09",
            "upload_time_iso_8601": "2024-07-22T15:27:09.644589Z",
            "url": "https://files.pythonhosted.org/packages/a1/8f/ba2103ab4fc6b05ad176abe83fb3fa9a573325231161f53448ef809b54fb/jakteristics-0.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a052c11b628d853db7bb6fa05fb7662db2dae719dedbcf485943f2568e8d36de",
                "md5": "347b6db0eb0fac70a6be7ce06a3ea3a4",
                "sha256": "e884c2b9863ef12922b455c8da22cc07a22cd99e88cf1d5729d8e2bbf02c05d6"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "347b6db0eb0fac70a6be7ce06a3ea3a4",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.7",
            "size": 723334,
            "upload_time": "2024-07-22T15:27:11",
            "upload_time_iso_8601": "2024-07-22T15:27:11.691965Z",
            "url": "https://files.pythonhosted.org/packages/a0/52/c11b628d853db7bb6fa05fb7662db2dae719dedbcf485943f2568e8d36de/jakteristics-0.6.2-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "051c31005d60cf2aaeb5a8ab0f65be2040c99ef36a1c49dad8c92beb8ad5ada8",
                "md5": "57489e186057934fbd985f574d6347cb",
                "sha256": "ff8cc6645f35557876c593c6c58942deb0d28412e2ac31b637611da0a23dad89"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "57489e186057934fbd985f574d6347cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 4122845,
            "upload_time": "2024-07-22T15:27:13",
            "upload_time_iso_8601": "2024-07-22T15:27:13.642688Z",
            "url": "https://files.pythonhosted.org/packages/05/1c/31005d60cf2aaeb5a8ab0f65be2040c99ef36a1c49dad8c92beb8ad5ada8/jakteristics-0.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c60e667fa6e5532772dc3b351f96842d3558a1a41b380ddabe9bf11ae0165f32",
                "md5": "d79e08e9e4a3e9893793217f30b73dc1",
                "sha256": "60435ee74ccb9bf52baa1a23be041f93c7343bd1f5c0cae8c741c963159c6c98"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "d79e08e9e4a3e9893793217f30b73dc1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.7",
            "size": 723410,
            "upload_time": "2024-07-22T15:27:15",
            "upload_time_iso_8601": "2024-07-22T15:27:15.793802Z",
            "url": "https://files.pythonhosted.org/packages/c6/0e/667fa6e5532772dc3b351f96842d3558a1a41b380ddabe9bf11ae0165f32/jakteristics-0.6.2-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a8c6dfc56800176b4e4eb33c7360ad84de83ef3f7ead1d2f6155c9f81d8f04e0",
                "md5": "974366d3bfb0e65f6cfc0e573b28152f",
                "sha256": "b44d2b95b4201fc052909c1de458d231d13a8e4ce9221f7ba337c60da01c4744"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "974366d3bfb0e65f6cfc0e573b28152f",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 4080144,
            "upload_time": "2024-07-22T15:27:17",
            "upload_time_iso_8601": "2024-07-22T15:27:17.386646Z",
            "url": "https://files.pythonhosted.org/packages/a8/c6/dfc56800176b4e4eb33c7360ad84de83ef3f7ead1d2f6155c9f81d8f04e0/jakteristics-0.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5c7228f653ed7a611da5dd43349cb839172e9a6a43cc7d52e0c3eb974d6f7992",
                "md5": "f9f2be58d5027ba5e010ea7209d6d602",
                "sha256": "866d0fd573787cca66917634c4a25d3a9fef391b7a20351a7b36e76123c05534"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f9f2be58d5027ba5e010ea7209d6d602",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.7",
            "size": 720270,
            "upload_time": "2024-07-22T15:27:19",
            "upload_time_iso_8601": "2024-07-22T15:27:19.216315Z",
            "url": "https://files.pythonhosted.org/packages/5c/72/28f653ed7a611da5dd43349cb839172e9a6a43cc7d52e0c3eb974d6f7992/jakteristics-0.6.2-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5eca6c8f3998fa538faed9391b39a18fe9ce6481ff46916634ea03024829b2b8",
                "md5": "475b9e24e49ef7b9ab74e03c9c528a89",
                "sha256": "a1abf4122c78c48d0f6369e2c2ba803205b9750e442c08ec739cce0bf9d43a7b"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "475b9e24e49ef7b9ab74e03c9c528a89",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 4018855,
            "upload_time": "2024-07-22T15:27:20",
            "upload_time_iso_8601": "2024-07-22T15:27:20.548870Z",
            "url": "https://files.pythonhosted.org/packages/5e/ca/6c8f3998fa538faed9391b39a18fe9ce6481ff46916634ea03024829b2b8/jakteristics-0.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "afb064b0372337441a4da7d78f0b9311ab5454ff3817f4aba667e6d0ae4601ae",
                "md5": "1841e3a265623cf2aa9dd3bdac5720f1",
                "sha256": "a931f5d5ca9435746d0069e8fe500df4ef7ca3ba2e8701bfce2a487c2b2107e1"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1841e3a265623cf2aa9dd3bdac5720f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.7",
            "size": 721537,
            "upload_time": "2024-07-22T15:27:22",
            "upload_time_iso_8601": "2024-07-22T15:27:22.601113Z",
            "url": "https://files.pythonhosted.org/packages/af/b0/64b0372337441a4da7d78f0b9311ab5454ff3817f4aba667e6d0ae4601ae/jakteristics-0.6.2-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2fe43539da9202c9f095dfac68472cbdc670cc7ad1581aacab3ff7d10f09041a",
                "md5": "60535139a1f4d499905360ca2ca2e45a",
                "sha256": "a3d91ac868b1f128c6623d202e3b0f2e25e51c5a74666fb49a89354fc7e5de5c"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "60535139a1f4d499905360ca2ca2e45a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 3971617,
            "upload_time": "2024-07-22T15:27:24",
            "upload_time_iso_8601": "2024-07-22T15:27:24.781164Z",
            "url": "https://files.pythonhosted.org/packages/2f/e4/3539da9202c9f095dfac68472cbdc670cc7ad1581aacab3ff7d10f09041a/jakteristics-0.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "90b053538d4ceedf7e7c6ffae05a5e211a712205cf8e065398232c24b274dfd8",
                "md5": "31f3d0a8d56cb00aae685d70b60bf260",
                "sha256": "ad4672eab79fc47c5fd73b97100b45cdf8fbf51b10d61f20586794d6d097e8fd"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "31f3d0a8d56cb00aae685d70b60bf260",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.7",
            "size": 725070,
            "upload_time": "2024-07-22T15:27:26",
            "upload_time_iso_8601": "2024-07-22T15:27:26.752510Z",
            "url": "https://files.pythonhosted.org/packages/90/b0/53538d4ceedf7e7c6ffae05a5e211a712205cf8e065398232c24b274dfd8/jakteristics-0.6.2-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "76a402ad4f9492e7c51f2b691d0f9b20d68c1c24e175e51f481106b3f6002dea",
                "md5": "25c51216532f0ed131494ec3f397d242",
                "sha256": "767cdb08536d99130e3676ca6e1dcc7b6ff8582340fee836f6eed85bc1043d52"
            },
            "downloads": -1,
            "filename": "jakteristics-0.6.2.tar.gz",
            "has_sig": false,
            "md5_digest": "25c51216532f0ed131494ec3f397d242",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 608131,
            "upload_time": "2024-07-22T15:27:07",
            "upload_time_iso_8601": "2024-07-22T15:27:07.954283Z",
            "url": "https://files.pythonhosted.org/packages/76/a4/02ad4f9492e7c51f2b691d0f9b20d68c1c24e175e51f481106b3f6002dea/jakteristics-0.6.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-07-22 15:27:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jakarto3d",
    "github_project": "jakteristics",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "laspy",
            "specs": [
                [
                    ">=",
                    "2.1.1"
                ]
            ]
        },
        {
            "name": "scipy",
            "specs": []
        },
        {
            "name": "typer",
            "specs": []
        },
        {
            "name": "Cython",
            "specs": [
                [
                    ">=",
                    "0.25"
                ]
            ]
        }
    ],
    "lcname": "jakteristics"
}
        
Elapsed time: 0.45962s