<img src="https://user-images.githubusercontent.com/72500344/210864557-4078754f-86c1-4e7c-b291-73223bdf4e4d.png" alt="logo" width="200"/>
# Optimized reconstruction of large-scale 3D building models
[](https://github.com/Yarroudh/ZRect3D/blob/main/LICENSE)
[](http://geomatics.ulg.ac.be/)
*Command-Line Interface (CLI) application for efficient and optimized reconstruction of large-scale 3D building models.*
Optim3D is a powerful tool for optimized automatic reconstruction of highly detailed and large-scale 3D building models. Our tool is based on the [GeoFlow](https://github.com/geoflow3d/geoflow-bundle) software and makes use of it to perform the 3D reconstruction of buildings. The process is inspired by the 3D BAG project and optimized for large-scale projects through indexing and tiling of the input data, which significantly reduces the processing time and resources required to generate large-scale 3D building models.
<img src="https://user-images.githubusercontent.com/72500344/212364590-b7fd444d-ec26-4a8b-bda9-fd4e1669bc6e.png" alt="Workflow of 3D Reconstruction" width="500"/>
## Documentation
If you are using Optim3D, we highly recommend that you take the time to read the [documentation](https://optim3d.readthedocs.io/en/latest/). The documentation is an essential resource that will help you understand the features and functionality of our software, as well as provide guidance on how to use it effectively.
## Installation
You can install optim3d in your Conda environment by simply running:
```bash
conda create --name optimenv python==3.6
conda activate optimenv
conda install -c conda-forge pdal python-pdal
conda install -c conda-forge entwine
pip install optim3d
```
You can also build everything from source (see [INSTALL.md](https://github.com/Yarroudh/Optim3D/blob/main/INSTALL.md)). A [Docker image](https://hub.docker.com/r/yarroudh/optim3d) is also available.
**NOTE:** It is important to note that in order to use our program for 3D reconstruction of buildings, [GeoFlow-bundle](https://github.com/geoflow3d/geoflow-bundle/releases/tag/2022.06.17) must be installed. Please read the LICENSE file.
## Usage of the CLI
### Python package
After installation, you have a small program called <code>optim3d</code>. Use <code>optim3d --help</code> to see the detailed help:
```
Usage: optim3d [OPTIONS] COMMAND [ARGS]...
CLI tool to manage full optimized reconstruction of large-scale 3D
building models.
Options:
--help Show this message and exit.
Commands:
index2d QuadTree indexing and tiling of 2D building footprints.
index3d OcTree indexing of 3D point cloud using Entwine.
tiler3d Tiling of point cloud using the calculated processing areas.
reconstruct Optimized 3D reconstruction of buildings using GeoFlow.
post Post-processing generated CityJSON files.
```
The process consists of five steps or <code>commands</code> that must be executed in a specific order to achieve the desired outcome.
#### Step 1 : 2D building footprints indexing and tiling
Quadtree-based tiling scheme is used for spatial partitioning of building footprints. This assures that the reconstruction time per tile is more or less the same and that the tiles available for download are similar in file size. This is done using the first command <code>index2d</code>. Use <code>optim3d index2d --help</code> to see the detailed help:
```
Usage: optim3d index2d [OPTIONS] [FOOTPRINTS]
QuadTree indexing and tiling of building 2D footprints.
Options:
--output PATH Output directory. [default: ./output]
--osm <FLOAT FLOAT FLOAT FLOAT>...
Download and work with building footprints
from OpenStreetMap [west, north, est,
south].
--crs INTEGER Specify the Coordinate Reference System
(EPSG).
--max INTEGER Maximum number of buildings per tile.
[default: 3500]
--help Show this message and exit.
```
#### Step 2 : OcTree indexing of the 3D point cloud
Processing large point cloud datasets is hardware-intensive. Therefore, it is necessary to index the 3D point cloud before processing. The index structure makes it possible to stream only the parts of the data that are required, without having to download the entire dataset. In this case, the spatial indexing of the airborne point cloud is performed using an octree structure. This is done using the second command <code>index3d</code>. Use <code>optim3d index3d --help</code> to see the detailed help:
```
Usage: optim3d index3d [OPTIONS] POINTCLOUD
OcTree indexing of 3D point cloud using Entwine.
Options:
--output PATH Output directory. [default: ./output]
--help Show this message and exit.
```
#### Step 3 : Tiling of the 3D point cloud
The tiling of the indexed point cloud is based on the processing areas already calculated. This is achieved using the third command <code>tiler3d</code>. Use <code>optim3d tiler3d --help</code> to see the detailed help:
```
Usage: optim3d tiler3d [OPTIONS]
Tiling of 3D point cloud using the calculated processing areas.
Options:
--areas PATH The calculated processing areas. [default:
./output/processing_areas.gpkg]
--indexed PATH Indexed 3D point cloud directory. [default:
./output/indexed_pointcloud]
--output PATH Output directory. [default: ./output]
--help Show this message and exit.
```
#### Step 4 : 3D reconstruction of building models tile by tile
In this step, we perform the 3D reconstruction of building models. The process make use of GeoFlow to generate highly detailed 3D building models tile by tile. This is achieved using the fourth command <code>reconstruct</code>. Use <code>optim3d reconstruct --help</code> to see the detailed help:
```
Usage: optim3d reconstruct [OPTIONS]
Optimized 3D reconstruction of buildings using GeoFlow.
Options:
--pointcloud PATH 3D point cloud tiles directory. [default:
./output/pointcloud_tiles]
--footprints PATH 2D building footprints tiles directory. [default:
./output/footprint_tiles]
--output PATH Output directory. [default: ./output]
--help Show this message and exit.
```
#### Step 5 : Post-processing of CityJSON files
The generated CityJSON files should be post-processed to correct the City Objects IDs. This is done using the fifth command <code>post</code>. Use <code>optim3d post --help</code> to see the detailed help:
```
Usage: optim3d post [OPTIONS]
Postprocess the generated CityJSON files.
Options:
--cityjson PATH CityJSON files directory. [default:
./output/model/cityjson]
--help Show this message and exit.
```
### Docker Image
Optim3D is also available as [Docker image](https://hub.docker.com/r/yarroudh/optim3d).
These are the steps to run Optim3D as a Docker container:
1. First pull the image using the <code>docker pull</code> command:
```bash
docker pull yarroudh/optim3d
```
2. To run the Docker container and mount your data inside it, use the <code>docker run</code> command with the <code>-v</code> option to specify the path to the host directory and the path to the container directory where you want to mount the data folder. For example:
```bash
docker run -d -v ABSOLUTE_PATH_TO_HOST_DATA:/home/user/data yarroudh/optim3d
```
This command will start a Docker container in detached mode, mount the **ABSOLUTE_PATH_TO_HOST_DATA** directory on the host machine to the **/home/user/data** directory inside the container, and run the <code>yarroudh/optim3d</code> image. Do not change the path of the directory inside the container.
3. Find the container ID and copy it. You can use the <code>docker ps</code> command to list all running containers and their IDs.
4. Launch a command inside the container using <code>docker exec</code>, use the container ID or name and the command you want to run. For example:
```bash
docker exec CONTAINER_ID optim3d index2d data/FILE_NAME
docker exec CONTAINER_ID optim3d index3d data/FILE_NAME
docker exec CONTAINER_ID optim3d tiler3d
docker exec CONTAINER_ID optim3d reconstruct
docker exec CONTAINER_ID optim3d post
```
5. To copy the output of the command from the container to a local path, use the <code>docker cp</code> command with the container ID or name, the path to the file inside the container, and the path to the destination on the host machine. For example:
- To copy the output of one command:
```bash
docker cp CONTAINER_ID:/home/user/output/footprint_tiles PATH_ON_HOST_MACHINE
```
This will copy the output of footprints tiling. Please check the results section for the output structure.
- To copy the output of all the commands:
```bash
docker cp CONTAINER_ID:/home/user/output PATH_ON_HOST_MACHINE
```
6. Finally, after executing all the commands and copying the results to your local machine, you can stop the Docker container using the <code>docker stop</code> command followed by the container ID or name:
```bash
docker stop CONTAINER_ID
```
### Building from source
If you want to build the solution from source, you should follow the steps in [INSTALL.md]().
## Results
The results of each command are saved in the <code>output</code> folder with the following structure:
```bash
├── output
│ ├── flowcharts
│ │ ├── *.json
│ ├── footprint_tiles
│ │ ├── *.cpg
│ │ ├── *.dbf
│ │ ├── *.prj
│ │ ├── *.shp
│ │ ├── *.shx
│ ├── indexed_pointcloud
│ │ ├── ept-data
│ │ │ ├── *.laz
│ │ ├── ept-hierarchy
│ │ │ ├── 0-0-0-0.json
│ │ ├── ept-sources
│ │ │ ├── *.json
│ │ ├── ept.json
│ │ ├── ept-build.json
│ ├── model
│ │ ├── cityjson
│ │ ├── *.city.json
│ │ ├── obj
│ │ ├── *.obj
│ │ ├── *.obj.mtl
│ ├── pointcloud_tiles
│ │ ├── *.las
│ ├── processing_areas.gpkg
│ └── quadtree.gpkg
```
The 3D building models can be inspected using [Ninja](https://github.com/cityjson/ninja), the official web viewer for CityJSON files.

## Related repositories
[Automatic correction of buildings ground floor elevation in 3D City Models](https://github.com/Yarroudh/ZRect3D)
GeoFlow requires that the point cloud includes some ground points around the building so that it can determine the ground floor elevation. However, for aerial point clouds, buildings surrounded by others may not meet this condition which may result in inaccurate height estimation above the ground. This can be resolved using [ZRect3D](https://github.com/Yarroudh/zrect3d), a tool for automatic correction of buildings ground-floor elevation in CityJSON files using ground points from LiDAR data.
## License
This software is under the BSD 3-Clause "New" or "Revised" license which is a permissive license that allows you almost unlimited freedom with the software so long as you include the BSD copyright and license notice in it. Please read the [LICENSE](https://github.com/Yarroudh/Optim3D/blob/main/LICENSE) and the [COPYING](https://github.com/Yarroudh/Optim3D/blob/main/COPYING) files for more details.
## Citation
The use of open-source software repositories has become increasingly prevalent in scientific research. If you use this repository for your research, please make sure to cite it appropriately in your work. The recommended citation format for this repository is provided in the accompanying [BibTeX citation](https://github.com/Yarroudh/Optim3D/blob/main/CITATION.bib). Additionally, please make sure to comply with any licensing terms and conditions associated with the use of this repository.
```bibtex
@misc{yarroudh:2023:optim3d,
author = {Yarroudh, Anass},
title = {Optim3D: Optimized reconstruction of large-scale 3D building models},
year = {2023},
howpublished = {GitHub Repository},
url = {https://github.com/Yarroudh/Optim3D}
}
```
Yarroudh, A. (2023). Optim3D: Optimized reconstruction of large-scale 3D building models [GitHub repository]. Retrieved from https://github.com/Yarroudh/Optim3D
## About Optim3D
This software was developped by [Anass Yarroudh](https://www.linkedin.com/in/anass-yarroudh/), a Research Engineer in the [Geomatics Unit of the University of Liege](http://geomatics.ulg.ac.be/fr/home.php).
For more detailed information please contact us via <ayarroudh@uliege.be>, we are pleased to send you the necessary information.
Raw data
{
"_id": null,
"home_page": "https://github.com/Yarroudh/Optim3D",
"name": "optim3d",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Anass Yarroudh",
"author_email": "ayarroudh@uliege.be",
"download_url": "https://files.pythonhosted.org/packages/fc/f4/edc2f0b0d55ff37f50f1748965041347cc5bb77a661d98a15344296fcd6c/optim3d-0.3.1.tar.gz",
"platform": null,
"description": "<img src=\"https://user-images.githubusercontent.com/72500344/210864557-4078754f-86c1-4e7c-b291-73223bdf4e4d.png\" alt=\"logo\" width=\"200\"/>\n\n# Optimized reconstruction of large-scale 3D building models\n\n[](https://github.com/Yarroudh/ZRect3D/blob/main/LICENSE)\n[](http://geomatics.ulg.ac.be/)\n\n*Command-Line Interface (CLI) application for efficient and optimized reconstruction of large-scale 3D building models.*\n\nOptim3D is a powerful tool for optimized automatic reconstruction of highly detailed and large-scale 3D building models. Our tool is based on the [GeoFlow](https://github.com/geoflow3d/geoflow-bundle) software and makes use of it to perform the 3D reconstruction of buildings. The process is inspired by the 3D BAG project and optimized for large-scale projects through indexing and tiling of the input data, which significantly reduces the processing time and resources required to generate large-scale 3D building models.\n\n<img src=\"https://user-images.githubusercontent.com/72500344/212364590-b7fd444d-ec26-4a8b-bda9-fd4e1669bc6e.png\" alt=\"Workflow of 3D Reconstruction\" width=\"500\"/>\n\n## Documentation\n\nIf you are using Optim3D, we highly recommend that you take the time to read the [documentation](https://optim3d.readthedocs.io/en/latest/). The documentation is an essential resource that will help you understand the features and functionality of our software, as well as provide guidance on how to use it effectively.\n\n## Installation\n\nYou can install optim3d in your Conda environment by simply running:\n\n```bash\nconda create --name optimenv python==3.6\nconda activate optimenv\nconda install -c conda-forge pdal python-pdal\nconda install -c conda-forge entwine\npip install optim3d\n```\n\nYou can also build everything from source (see [INSTALL.md](https://github.com/Yarroudh/Optim3D/blob/main/INSTALL.md)). A [Docker image](https://hub.docker.com/r/yarroudh/optim3d) is also available.\n\n**NOTE:** It is important to note that in order to use our program for 3D reconstruction of buildings, [GeoFlow-bundle](https://github.com/geoflow3d/geoflow-bundle/releases/tag/2022.06.17) must be installed. Please read the LICENSE file.\n\n## Usage of the CLI\n\n### Python package\n\nAfter installation, you have a small program called <code>optim3d</code>. Use <code>optim3d --help</code> to see the detailed help:\n\n```\nUsage: optim3d [OPTIONS] COMMAND [ARGS]...\n\n CLI tool to manage full optimized reconstruction of large-scale 3D\n building models.\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n index2d QuadTree indexing and tiling of 2D building footprints.\n index3d OcTree indexing of 3D point cloud using Entwine.\n tiler3d Tiling of point cloud using the calculated processing areas.\n reconstruct Optimized 3D reconstruction of buildings using GeoFlow.\n post Post-processing generated CityJSON files.\n```\n\nThe process consists of five steps or <code>commands</code> that must be executed in a specific order to achieve the desired outcome.\n\n#### Step 1 : 2D building footprints indexing and tiling\n\nQuadtree-based tiling scheme is used for spatial partitioning of building footprints. This assures that the reconstruction time per tile is more or less the same and that the tiles available for download are similar in file size. This is done using the first command <code>index2d</code>. Use <code>optim3d index2d --help</code> to see the detailed help:\n\n```\nUsage: optim3d index2d [OPTIONS] [FOOTPRINTS]\n\n QuadTree indexing and tiling of building 2D footprints.\n\nOptions:\n --output PATH Output directory. [default: ./output]\n --osm <FLOAT FLOAT FLOAT FLOAT>...\n Download and work with building footprints\n from OpenStreetMap [west, north, est,\n south].\n --crs INTEGER Specify the Coordinate Reference System\n (EPSG).\n --max INTEGER Maximum number of buildings per tile.\n [default: 3500]\n --help Show this message and exit.\n```\n\n#### Step 2 : OcTree indexing of the 3D point cloud\n\nProcessing large point cloud datasets is hardware-intensive. Therefore, it is necessary to index the 3D point cloud before processing. The index structure makes it possible to stream only the parts of the data that are required, without having to download the entire dataset. In this case, the spatial indexing of the airborne point cloud is performed using an octree structure. This is done using the second command <code>index3d</code>. Use <code>optim3d index3d --help</code> to see the detailed help:\n\n```\nUsage: optim3d index3d [OPTIONS] POINTCLOUD\n\n OcTree indexing of 3D point cloud using Entwine.\n\nOptions:\n --output PATH Output directory. [default: ./output]\n --help Show this message and exit.\n```\n\n#### Step 3 : Tiling of the 3D point cloud\n\nThe tiling of the indexed point cloud is based on the processing areas already calculated. This is achieved using the third command <code>tiler3d</code>. Use <code>optim3d tiler3d --help</code> to see the detailed help:\n\n```\nUsage: optim3d tiler3d [OPTIONS]\n\n Tiling of 3D point cloud using the calculated processing areas.\n\nOptions:\n --areas PATH The calculated processing areas. [default:\n ./output/processing_areas.gpkg]\n --indexed PATH Indexed 3D point cloud directory. [default:\n ./output/indexed_pointcloud]\n --output PATH Output directory. [default: ./output]\n --help Show this message and exit.\n```\n\n#### Step 4 : 3D reconstruction of building models tile by tile\n\nIn this step, we perform the 3D reconstruction of building models. The process make use of GeoFlow to generate highly detailed 3D building models tile by tile. This is achieved using the fourth command <code>reconstruct</code>. Use <code>optim3d reconstruct --help</code> to see the detailed help:\n\n```\nUsage: optim3d reconstruct [OPTIONS]\n\n Optimized 3D reconstruction of buildings using GeoFlow.\n\nOptions:\n --pointcloud PATH 3D point cloud tiles directory. [default:\n ./output/pointcloud_tiles]\n --footprints PATH 2D building footprints tiles directory. [default:\n ./output/footprint_tiles]\n --output PATH Output directory. [default: ./output]\n --help Show this message and exit.\n```\n\n#### Step 5 : Post-processing of CityJSON files\n\nThe generated CityJSON files should be post-processed to correct the City Objects IDs. This is done using the fifth command <code>post</code>. Use <code>optim3d post --help</code> to see the detailed help:\n\n```\nUsage: optim3d post [OPTIONS]\n\n Postprocess the generated CityJSON files.\n\nOptions:\n --cityjson PATH CityJSON files directory. [default:\n ./output/model/cityjson]\n --help Show this message and exit.\n```\n\n### Docker Image\n\nOptim3D is also available as [Docker image](https://hub.docker.com/r/yarroudh/optim3d).\n\nThese are the steps to run Optim3D as a Docker container:\n\n1. First pull the image using the <code>docker pull</code> command:\n\n```bash\ndocker pull yarroudh/optim3d\n```\n\n2. To run the Docker container and mount your data inside it, use the <code>docker run</code> command with the <code>-v</code> option to specify the path to the host directory and the path to the container directory where you want to mount the data folder. For example:\n\n```bash\ndocker run -d -v ABSOLUTE_PATH_TO_HOST_DATA:/home/user/data yarroudh/optim3d\n```\n\nThis command will start a Docker container in detached mode, mount the **ABSOLUTE_PATH_TO_HOST_DATA** directory on the host machine to the **/home/user/data** directory inside the container, and run the <code>yarroudh/optim3d</code> image. Do not change the path of the directory inside the container.\n\n3. Find the container ID and copy it. You can use the <code>docker ps</code> command to list all running containers and their IDs.\n4. Launch a command inside the container using <code>docker exec</code>, use the container ID or name and the command you want to run. For example:\n\n```bash\ndocker exec CONTAINER_ID optim3d index2d data/FILE_NAME\ndocker exec CONTAINER_ID optim3d index3d data/FILE_NAME\ndocker exec CONTAINER_ID optim3d tiler3d\ndocker exec CONTAINER_ID optim3d reconstruct\ndocker exec CONTAINER_ID optim3d post\n```\n\n5. To copy the output of the command from the container to a local path, use the <code>docker cp</code> command with the container ID or name, the path to the file inside the container, and the path to the destination on the host machine. For example:\n\n- To copy the output of one command:\n```bash\ndocker cp CONTAINER_ID:/home/user/output/footprint_tiles PATH_ON_HOST_MACHINE\n```\nThis will copy the output of footprints tiling. Please check the results section for the output structure.\n\n- To copy the output of all the commands:\n```bash\ndocker cp CONTAINER_ID:/home/user/output PATH_ON_HOST_MACHINE\n```\n\n6. Finally, after executing all the commands and copying the results to your local machine, you can stop the Docker container using the <code>docker stop</code> command followed by the container ID or name:\n\n```bash\ndocker stop CONTAINER_ID\n```\n\n### Building from source\n\nIf you want to build the solution from source, you should follow the steps in [INSTALL.md]().\n\n## Results\n\nThe results of each command are saved in the <code>output</code> folder with the following structure:\n\n```bash\n\u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac output\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac flowcharts\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.json\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac footprint_tiles\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.cpg\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.dbf\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.prj\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.shp\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.shx\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac indexed_pointcloud\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ept-data\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.laz\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ept-hierarchy\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac 0-0-0-0.json\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ept-sources\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.json\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ept.json\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac ept-build.json\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac model\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac cityjson\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.city.json\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac obj\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.obj\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.obj.mtl\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac pointcloud_tiles\n\u00e2\u201d\u201a \u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac *.las\n\u00e2\u201d\u201a \u00e2\u201d\u0153\u00e2\u201d\u20ac\u00e2\u201d\u20ac processing_areas.gpkg\n\u00e2\u201d\u201a \u00e2\u201d\u201d\u00e2\u201d\u20ac\u00e2\u201d\u20ac quadtree.gpkg\n```\n\nThe 3D building models can be inspected using [Ninja](https://github.com/cityjson/ninja), the official web viewer for CityJSON files.\n\n\n\n## Related repositories\n\n[Automatic correction of buildings ground floor elevation in 3D City Models](https://github.com/Yarroudh/ZRect3D)\n\nGeoFlow requires that the point cloud includes some ground points around the building so that it can determine the ground floor elevation. However, for aerial point clouds, buildings surrounded by others may not meet this condition which may result in inaccurate height estimation above the ground. This can be resolved using [ZRect3D](https://github.com/Yarroudh/zrect3d), a tool for automatic correction of buildings ground-floor elevation in CityJSON files using ground points from LiDAR data.\n\n## License\n\nThis software is under the BSD 3-Clause \"New\" or \"Revised\" license which is a permissive license that allows you almost unlimited freedom with the software so long as you include the BSD copyright and license notice in it. Please read the [LICENSE](https://github.com/Yarroudh/Optim3D/blob/main/LICENSE) and the [COPYING](https://github.com/Yarroudh/Optim3D/blob/main/COPYING) files for more details.\n\n## Citation\n\nThe use of open-source software repositories has become increasingly prevalent in scientific research. If you use this repository for your research, please make sure to cite it appropriately in your work. The recommended citation format for this repository is provided in the accompanying [BibTeX citation](https://github.com/Yarroudh/Optim3D/blob/main/CITATION.bib). Additionally, please make sure to comply with any licensing terms and conditions associated with the use of this repository.\n\n```bibtex\n@misc{yarroudh:2023:optim3d,\n author = {Yarroudh, Anass},\n title = {Optim3D: Optimized reconstruction of large-scale 3D building models},\n year = {2023},\n howpublished = {GitHub Repository},\n url = {https://github.com/Yarroudh/Optim3D}\n}\n```\n\nYarroudh, A. (2023). Optim3D: Optimized reconstruction of large-scale 3D building models [GitHub repository]. Retrieved from https://github.com/Yarroudh/Optim3D\n\n## About Optim3D\n\nThis software was developped by [Anass Yarroudh](https://www.linkedin.com/in/anass-yarroudh/), a Research Engineer in the [Geomatics Unit of the University of Liege](http://geomatics.ulg.ac.be/fr/home.php).\nFor more detailed information please contact us via <ayarroudh@uliege.be>, we are pleased to send you the necessary information.\n",
"bugtrack_url": null,
"license": "BSD 3-Clause BSD 3-Clause \"New\" or \"Revised\" License",
"summary": "CLI application for efficient and optimized reconstruction of large-scale 3D building models.",
"version": "0.3.1",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "7ce4ea8383a980616369d1680d343cd322d175f6f0f71fe2372d20f58c95ff85",
"md5": "3609686ed368edbb68b96c05dff245d8",
"sha256": "65cfc3a20f24c966e858b1797b1cc387a3bfdd964b4e42c6317bcfeb8aef35af"
},
"downloads": -1,
"filename": "optim3d-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "3609686ed368edbb68b96c05dff245d8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 21199,
"upload_time": "2023-04-14T14:23:02",
"upload_time_iso_8601": "2023-04-14T14:23:02.479066Z",
"url": "https://files.pythonhosted.org/packages/7c/e4/ea8383a980616369d1680d343cd322d175f6f0f71fe2372d20f58c95ff85/optim3d-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fcf4edc2f0b0d55ff37f50f1748965041347cc5bb77a661d98a15344296fcd6c",
"md5": "190b6a3ad3124e1287001f1674cb8164",
"sha256": "f5f827c4f276b89528da07832955dee12449b48511070713300a278ee92df7ac"
},
"downloads": -1,
"filename": "optim3d-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "190b6a3ad3124e1287001f1674cb8164",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 23235,
"upload_time": "2023-04-14T14:23:04",
"upload_time_iso_8601": "2023-04-14T14:23:04.684257Z",
"url": "https://files.pythonhosted.org/packages/fc/f4/edc2f0b0d55ff37f50f1748965041347cc5bb77a661d98a15344296fcd6c/optim3d-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-14 14:23:04",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "Yarroudh",
"github_project": "Optim3D",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "optim3d"
}