{"id":20515483,"url":"https://github.com/ignf/pdal-ign-plugin","last_synced_at":"2025-03-05T23:21:18.702Z","repository":{"id":244253519,"uuid":"730853223","full_name":"IGNF/pdal-ign-plugin","owner":"IGNF","description":"plugin for pdal","archived":false,"fork":false,"pushed_at":"2025-02-27T15:58:32.000Z","size":10735,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-02-27T22:36:16.510Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IGNF.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-12T20:20:39.000Z","updated_at":"2024-11-14T09:56:41.000Z","dependencies_parsed_at":"2024-06-27T15:44:41.013Z","dependency_job_id":"7966bb14-5342-4cae-b6c4-6c4e160b696d","html_url":"https://github.com/IGNF/pdal-ign-plugin","commit_stats":null,"previous_names":["ignf/pdal-ign-plugin"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fpdal-ign-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fpdal-ign-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fpdal-ign-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IGNF%2Fpdal-ign-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IGNF","download_url":"https://codeload.github.com/IGNF/pdal-ign-plugin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242118504,"owners_count":20074588,"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":[],"created_at":"2024-11-15T21:22:05.164Z","updated_at":"2025-03-05T23:21:18.693Z","avatar_url":"https://github.com/IGNF.png","language":"Python","readme":"# PlugIn IGN for PDAL\n\n## Compile\n\nYou need to have conda!\n\nCreate the ign_pdal_tools conda environment using the `environment.yml` file\nto be able to run the compilation in this environment.\n\n### linux/mac\n\nrun ci/build.sh\n\nSet the `PDAL_DRIVER_PATH` environment variable to point to `${THIS REPO}/install/lib`\nin order for pdal to find the plugins.\n\n### Windows\n\none day, maybe...\n\n## Architecture of the code\n\nThe code is structured as:\n\n```\n├── src\n│   ├── plugin folder\n│   │   ├── pluginFilter.cpp\n│   │   ├── pluginFilter.h\n│   │   ├── CMakeLists.txt\n├── doc\n│   ├── pluginFilter.md\n├── examples  # examples of usage of the code or the docker image\n├── ci\n├── pdal_ign_macro  # Python module with ready-to-use filters combinations\n│   ├── __init__.py\n│   ├── macro.py\n│   ├── version.py\n│   └── *.py  # Example scripts to use the plugin filters + the filters combinations contained in `macro`\n├── test\n├── CMakeLists.txt\n├── environment*.yml\n├── Dockerfile\n├── pyproject.toml  # Setup file to install the `macro` python module with pip\n├── .github\n└── .gitignore\n```\n\n## Run the tests\n\nEach plugin should have his own test. To run all tests:\n\n```\npython -m pytest -s\n```\n\n## List of Filters\n\n[grid decimation](./doc/grid_decimation.md) [Deprecated: use the gridDecimation filter from the pdal repository]\n\n[radius assign](./doc/radius_assign.md)\n\n## Adding a filter\n\nIn order to add a filter, you have to add a new folder in the src directory :\n\n```\n├── src\n│   ├── filter_my_new_PI\n│   │   ├── my_new_PI_Filter.cpp\n│   │   ├── my_new_PI_Filter.h\n│   │   ├── CMakeLists.txt\n```\n\nThe name of the folder informs of the plugIN nature (reader, writer, filter).\n\nThe code should respect the documentation proposed by pdal: [build a pdal plugin](https://pdal.io/en/2.6.0/development/plugins.html).\nBe careful to change if the plugIn is a reader, a writer or a filter.\n\nThe CMakeList should contain:\n\n```\nfile( GLOB_RECURSE GD_SRCS ${CMAKE_SOURCE_DIR} *)\n\nPDAL_CREATE_PLUGIN(\n    TYPE filter\n    NAME my_new_PI\n    VERSION 1.0\n    SOURCES ${GD_SRCS}\n)\n\ninstall(TARGETS pdal_plugin_filter_my_new_PI)\n```\n\nYou should complete the main CMakeList by adding the new plugIN:\n```\nadd_subdirectory(src/filter_my_new_PI)\n```\n\nEach plugIN has his own md file in the doc directory, structured as the [model](./doc/_doc_model_plugIN.md).\n\nDon't forget to update [the list](#list-of-filters) with a link to the documentation.\n\n## `macro` python module usage\n\nThe `macro` python module is installed in the project docker image so that it can be imported from anywhere in the\ndocker image.\n\n\n### Syntax to use it in a python script\n\n```python\nfrom pdal_ign_macro import macro\n\nmarco.my_macro(...)\n```\n\nSee the `scripts` folder for example usages of this module.\n\n### Usage from outside the docker image:\n\nIf you have a python script on your computer, you can mount its containing folder as a volume in order to\nrun it in the docker image.\n\nExample:\n\n```bash\ndocker run \\\n    -v /my/data/folder:/data \\\n    -v  /my/output/folder:/output \\\n    -v /my/script/folder:/scripts \\\n    pdal_ign_plugin \\\n    python /scripts/my_script.py --input /data/my_data_file.las -o /output/my_output.las\n```\n\nAnother example can be found in the [./example](./examples/) folder:\n\nRun the following command to run the [demo_script](./examples/demo_script.py) python script\nwhich copies an input las file into the output folder as a las1.4 file :\n\n```bash\n./examples/run_custom_script_in_docker_image.sh -i ./test/data/mnx/input/bat.laz -o ./tmp/demo -s ./examples/demo_script.py\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fpdal-ign-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fignf%2Fpdal-ign-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fignf%2Fpdal-ign-plugin/lists"}