markusmnzngr / lidar-3d-urban-forest-mapping Goto Github PK
View Code? Open in Web Editor NEW3D modeling of urban forests based on LiDAR point clouds
Home Page: https://ioer.de/en/research/spatial-information-and-modelling
License: MIT License
3D modeling of urban forests based on LiDAR point clouds
Home Page: https://ioer.de/en/research/spatial-information-and-modelling
License: MIT License
Hello i've created an issue last summer Using LiDAR Classification of Vegetation instead of NDVI and "Gridded building roof heights" ?.
I managed to run your process with my data and i wanted to implement it on a large area.
The LiDAR i'm using have already a great classification of Vegetation so there is no need to use the gridded points of the CityGML building.
You told me that the workflow is sequential, so i did the following:
On some area, the process with my data filtered on vegetation works perfectly.
I even manage to create CityGML with your FME script, and display them on a web page
But in another area, i have an error about Convex Hull
This is the line where i get the error
# calculate 3D convex hulls around segmented tree points
# retrieve volume and surface area of the hulls
crown_volumes_df <- compute_crown_volumes(lidar_surface_points, "treeID_temp")
Received error code 1 from qhull. Qhull error:
QH6013 qhull input error: input is less than 3-dimensional since it has the same x coordinate
While executing: | qhull FA Qt
Options selected for Qhull 2015.2.r 2016/01/18:
run-id 2112793898 FArea-total Qtriangulate _pre-merge _zero-centrum
_max-width 0.25 Error-roundoff 3.1e-09 _one-merge 2.2e-08
_near-inside 1.1e-07 Visible-distance 6.2e-09 U-coplanar-distance 6.2e-09
Width-outside 1.2e-08 _wide-facet 3.7e-08
When i have this error, the whole process stops.
I have tried different things without success:
crowns_mcws_grid
to find area on my point cloud where there are not enough pointsmcws_segments_poly
to get the number of points of my point cloud that are inside each MultiPolygonAt some point, i can see when display the LiDAR and the vector layer mcws_segments_poly
that there are only one or a few point inside crowns.
Even after deleting this crowns and points, there is still the same issue
I wanted to know, if you had already met this error and where the problem is coming from.
If needed, i can share with you the code and the data i used
Thanks in advance
Hi i read your article, and tried your process with my data on a little area.
I have a LiDAR with a density of 20 pts/m².
LiDAR i used display in CloudCompare. On this area, the dimension Classification have value from 1 to 6 |
I also have an 3DCityDB Database with buildings on the area.
I managed to create the csv with the "Gridded building roof heights"
CSV file with "Gridded building roof heights" displayed in QGIS. |
I don't have building models on all of the area where i want to use your process.
I have an IRC raster(RGB + NIR) that i used to generate a NDVI raster with a resolution of 50cm.
NDVI raster displayed in QGIS |
I managed to get good results. So thanks a lot for your process.
Results displayed in QGIS, i'm impressed with the delineation/delimitation of the crowns and the positioning of the trees. |
But in the next picture, you can see the reason why i create this issue.
I display here the LiDAR that is created by your process in the folder urban_forest_classification
But i noticed something that i wanted to improve.
It is a specific thing to the data i have at my disposal.
The LiDAR i have has a really good point segmentation in the dimension Classification.
So i wanted to know if it's possible to run your process without :
And only use the LiDAR with my Classification where the areas of vegetations are already "segmented".
I want to know if i can use the points that have a value of 5(Vegetation)
in the dimension Classification
.
Because after reading your paper, and running your process, what i think i understood is that the NDVI and the "Gridded building roof heights" are used to define the "areas" of vegetations where the trees and the crowns will be created.
I ask you this, because when i looked at the results i found out that trees are generated on wrong places, where the points in the LiDAR are classified as Building.
There is two issues that i found:
Trees and crown are generated where points are classified as Building(6)
The areas in yellow are where trees are false. |
Crowns covers area where all the points are classified as Building(6)
Crowns contains Building points. The little black and white points are the "Gridded building roof heights" |
I hope my explanations are clear.
If it's not and you're willing to respond let me know what you didn't understand.
I've never used R before and managed to get your process running with my data, and i wanted to know if it's not too hard to do a little tweaks.
Thanks in advance
Dear Markus,
I am a PhD Student at the University of Trier and want to use the published tool for all of the Trier city area.
Therefore I portioned and sorted the datasets into 130 tiles according to DTK5_UTM. During server based processing with the 3dcitydb docker setup from TUM the '3DCityDB_rasterize_lod2_roof_heights.pgsql' script recurrently throws the same error in line 180:
psql:/data/3dcity_impexp/3DCityDB_rasterize_lod2_roof_heights.pgsql:180: ERROR: function st_3dintersection(geometry, geometry) does not exist
As far as tested, running the pgsql in pgAdmin works.
Can you tell why?
Attached you find the associated files with terminal prompts and one of the gml files as .zip.
psql_script_error.zip
Kind regards
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.